Ë
    õFÊj¹G  ã                   ó  — d Z ddlZddlmc mZ ddlZddlZddl	Z	ddl
Z
ddlmZ ddlZddlmZ d;d„Zd<d„Zddd	d
giddgiddgiddgidœiddddgidddgidddgiddgidœiddddgiiidœZej*                  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$d'„ Z%d(„ Z&d)„ Z'd=d*„Z(ej*                  d+„ «       Z)d,„ Z*d-„ Z+d.„ Z,d/„ Z-d0„ Z.d1„ Z/ej*                  d2„ «       Z0d3„ Z1d4„ Z2d5„ Z3d6„ Z4d7„ Z5d8„ Z6d9„ Z7d:„ Z8y)>zHgames_library: the Forge Asset Library in OhMyGames builds (7 Oct 2026).é    N)ÚSimpleNamespace)Úgames_libraryc                 óB   — t        | |dddg t        |dd¬«      ||¬«	      S )NÚ )ÚviewÚsettingÚlook)	ÚtitleÚpitchÚgenreÚ	core_loopÚfirst_versionÚmoodÚworldÚlaneÚstage)ÚN)r
   r   r   r   r   s        úQ/home/claude-agent/forge-build/forge-assets/omg/factory/test_ohmygames_library.pyÚ_cardr      s8   € Ü�5 ¨R¸2ÈRÐVXÔ`aÐgkÐuwð  Aô  aBØ˜eô%ð %ó    c                 ó  — |› d|› �j                  «       |z  }t        j                  |«      j                  «       }| dz  |› d�z  j	                  |«       | dz  dz  |z  dz  }	|	j
                  j                  dd¬«       |	j                  t        j                  d	d
d	d
dœdddddd
dd
dœgidœg ddidœ«      «       |› d|› �|j                  dd«      ||j                  d«      ||||t        |«      d|z   ddddddœd|› d�dœS )Nú/Úblobsú.glbÚrepoÚcardszv1.jsonT)ÚparentsÚexist_okéÿÿÿÿé   )ÚminXÚmaxXÚminZÚmaxZÚpartsÚboxr   ç      à?)ÚtypeÚxÚyÚzÚhxÚhyÚhz)Ú	footprintÚcolliderÚroleÚprop)ÚboundsÚsocketsÚ	placementú-ú úsha256:g      ð?é
   g       @)ÚwÚlÚhzcards/z/v1.json)ÚidÚnameÚsummaryÚtagsÚstatusÚgame_useÚkitÚglbÚbytesÚreleaseÚscaleÚtrisÚsizeÚcard)ÚencodeÚhashlibÚsha256Ú	hexdigestÚwrite_bytesÚparentÚmkdirÚ
write_textÚjsonÚdumpsÚreplaceÚsplitÚlen)
ÚrootÚclsÚslugrI   rA   rB   rC   Úblobr<   rJ   s
             r   Ú_assetr\      sN  € ØˆU�!�D�6ˆ?×!Ñ!Ó# dÑ*€DÜ�‰�tÓ×&Ñ&Ó(€AØ	ˆG�^˜˜˜4�jÑ ×-Ñ-¨dÔ3Ø�&‰=˜7Ñ" TÑ)¨IÑ5€DØ‡K�K×Ñ˜d¨TÐÔ2Ø‡O�O”D—J‘JÀÈQÐXZÐdeÑ8fÐu|Ø˜Q S¨q¸ÀÈAÑNðPð uQñ +RØ^`ÐpvÐx~Ðoñ Aó Bô Cà�E˜˜4˜&�/¨4¯<©<¸¸SÓ+AÈdÐ\`×\fÑ\fÐgjÓ\kÐw}Ø ¨°QÄÀTÃÐW`ÐcdÑWdÐorÐ|~Ø C¨cÑ2¸fÀTÀFÈ(Ð<SñUð Ur   ÚgroupsÚclassesÚ
lighthouseÚwindmillÚmarketÚhouse)ÚlandmarkÚcivicÚmedievalÚdwellingÚcrateÚbarrelÚlampÚbenchÚsofaÚwell)Ú	containerÚstreetÚ	furnitureÚfarmÚseaÚrowboat)Úbuildingr2   Úvehiclec                 ó  — | dz  j                  «        | dz  dz  dz  }|j                  d¬«       dD ]@  \  }}| dz  dz  dz  |z  }|j                  d¬«       |D ]  }||z  j                  |«       Œ ŒB d	D ]  }||z  j                  d
|z   «       Œ t        | dddd¬«      }|j                  dd¬«       |t        | ddd¬«      t        | dd«      t        | dd«      t        | dd«      t        | dd«      t        | dd«      t        | dd«      t        | dd d!d"¬#«      t        | d$d%«      g
}d&t        ddd'œ|d(œ}| dz  d)z  j                  t        j                  |«      «       t        j                  j                  d d ¬*«       | S )+Nr   r   ÚomgrC   T)r   ))Úbasis)zbasis_transcoder.jszbasis_transcoder.wasm)Údraco)zdraco_decoder.jsÚpublic)ú	index.mjsú
index.d.tsú
LIBRARY.mdz// úbuilding.dwelling.housezbreton-stone-houseÚapprovedúlibrary-author©rA   rC   rx   )Úktx2Úcodeczbuilding.landmark.lighthouseúharbour-lighthouse)rA   zprop.container.cratezharbour-cratezharbour-crate-stackúprop.container.barrelzharbour-barrelúprop.street.lampzharbour-lamp-postúprop.furniture.lampzstore-floor-lampzprop.furniture.sofaz
store-sofaz	ikea-sofaFÚ	candidate)rB   rA   zvehicle.sea.rowboatzharbour-rowboatz2026-10-07T13:00:00Z)z	lamp postÚcask)ÚbuiltÚtreeÚaliasesÚassetsú
index.json©ÚmtimeÚdata)	rQ   rR   r\   ÚupdateÚTREErS   rT   ÚglÚ_INDEX)	Útmp_pathrC   r>   ÚfilesÚdÚfrb   rŒ   Úidxs	            r   rX   rX   '   sÜ  € à�Ñ×ÑÔ Ø
�VÑ
˜eÑ
# eÑ
+€CØ‡I�I�d€IÔØvò "‰ˆˆeØ�vÑ Ñ%¨Ñ0°4Ñ7ˆ¸¿¹È¸Ô9NØò 	"ˆAØ�‰U×Ñ˜qÕ!ñ	"ð"ð 7ò (ˆØ	ˆq‰×Ñ˜U Q™YÕ'ð(ä�8Ð6Ð8LÐU_ÐeuÔv€EØ	‡L�L�d '€LÔ*Ø”V˜HÐ&DÐFZÐcmÔnÜ�XÐ5°ÓGÌÐPXÐZpð  sHó  JIÜ�XÐ6Ð8HÓIÌ6ÐRZÐ\nð  qDó  LEÜ�XÐ4Ð6HÓIÌ6ÐRZÐ\qÐsó  LAÜ�XÐ4°kÈEÐZeÔfÜ�XÐ4Ð6GÓHðJ€Fð +´DÐSeð  pGñ  FHØñ€Cà�Ñ˜Ñ%×1Ñ1´$·*±*¸S³/ÔBÜ‡I�I×Ñ˜4 dÐÔ+Ø€Or   c                 óŽ  — dd l }|j                  | d   j                  dd«      d   «      }t        j                  t        j                  |«      ¬«      5 }|j                  «       D �ci c]=  }|j                  «       sŒ|j                  |j                  |«      j                  «       “Œ? c}cd d d «       S c c}w # 1 sw Y   y xY w)Nr   Úurlú,r    )Úfileobj)Úbase64Ú	b64decoderV   ÚtarfileÚopenÚioÚBytesIOÚ
getmembersÚisfiler>   ÚextractfileÚread)Úattrž   r�   ÚtfÚms        r   Ú_membersr«   A   s›   € ÛØ×Ñ˜C ™J×,Ñ,¨S°!Ó4°QÑ7Ó8€DÜ	�‰œbŸj™j¨Ó.Ô	/ð Y°2Ø:<¿-¹-»/ÖX°QÈQÏXÉXÍZ�—‘˜Ÿ™ qÓ)×.Ñ.Ó0Ñ0ÒX÷Yñ YùÚX÷Yð Yús$   ÁB;Á(B6Á>,B6Â*B;Â6B;Â;Cc                 óÀ  — t        j                  t        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  }d	d
|iz  }t        t        j                  |«      «      ‚d x}}|\  }}}t        j                  t        |d   «      d   «      d   D �	ch c]	  }	|	d   }	|	’Œ }
}	h d£}||
k  }|s™t        j                  d|fd||
f«      t        j                  |«      dt        j                  «       v st        j                  |
«      rt        j                  |
«      nddœz  }d	d
|iz  }t        t        j                  |«      «      ‚d x}}g }d}||v }|}|rd}||v }|}|rd}||v }|}|�sçt        j                  d|fd||f«      t        j                  |«      dt        j                  «       v st        j                  |«      rt        j                  |«      nddœz  }dd|iz  }|j                  |«       |�rt        j                  dfd|f«      t        j                  |«      dt        j                  «       v st        j                  |«      rt        j                  |«      nddœz  }dd |iz  }|j                  |«       |rŒt        j                  dfd!|f«      t        j                  |«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndd"œz  }d#d$|iz  }|j                  |«       t        j                  |d%«      i z  }d&d'|iz  }t        t        j                  |«      «      ‚d x}x}x}x}x}x}x}}g }|d%   d(   }d)}||k(  }|}|r|d   d(   }d*}||k(  }|}|sþt        j                  d+|fd,||f«      t        j                  |«      t        j                  |«      d-œz  }d.d/|iz  }|j                  |«       |r_t        j                  d+fd0f«      t        j                  |«      t        j                  |«      d1œz  }d2d3|iz  }|j                  |«       t        j                  |d%«      i z  }d4d5|iz  }t        t        j                  |«      «      ‚d x}x}x}x}x}x}x}}g }|d6   }t!        |
«      } || k(  }|}|r|d7   }|j"                  }!d8} |!|«      }|}|�s�t        j                  d+|fd9|| f«      t        j                  |«      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                  | «      d;œz  }d<d=|iz  }"|j                  |"«       |rgd>t        j                  |«      t        j                  !«      t        j                  |«      t        j                  |«      d?œz  }|j                  |«       t        j                  |d%«      i z  }#d@dA|#iz  }t        t        j                  |«      «      ‚d x}x}x}x}x} x}x}!x}}y c c}	w )BNzHarbour Runz+Haul crates and barrels past the lighthouseé   r   )úis not)z%(py0)s is not %(py3)sÚout©Úpy0Úpy3úassert %(py5)sÚpy5r    úlibrary/manifest.jsonrŒ   r=   >   ú"prop.container.crate/harbour-crateú$prop.container.barrel/harbour-barrelú/building.landmark.lighthouse/harbour-lighthouse©ú<=)z%(py1)s <= %(py3)sÚids©Úpy1r²   Úatt3Úatt4rƒ   ©Úin©z%(py3)s in %(py5)sÚcontract©r²   r´   ú%(py7)sÚpy7)z%(py10)s in %(py12)s©Úpy10Úpy12ú%(py14)sÚpy14)z%(py17)s in %(py19)s)Úpy17Úpy19z%(py21)sÚpy21r   zassert %(py24)sÚpy24Úfilenamezlibrary-kit.tar.gzzlibrary-models.tar.gz©ú==©z%(py3)s == %(py6)s©r²   Úpy6ú%(py8)sÚpy8)z%(py11)s == %(py14)s)Úpy11rË   z%(py16)sÚpy16zassert %(py19)srÍ   ÚcountÚlockr8   )z0%(py3)s == %(py8)s
{%(py8)s = %(py5)s(%(py6)s)
}rW   )r²   r´   rÕ   r×   z%(py10)srÈ   zK%(py19)s
{%(py19)s = %(py15)s
{%(py15)s = %(py13)s.startswith
}(%(py17)s)
})Úpy13Úpy15rÌ   rÍ   zassert %(py22)sÚpy22)r“   Úlibrary_attachmentsr   Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationrS   Úloadsr«   ÚappendÚ_format_booloprW   Ú
startswith)$rX   r¯   Ú@py_assert2Ú@py_assert1Ú@py_format4Ú@py_format6ÚattsrÃ   ÚmetaÚrr»   Ú@py_assert0Ú@py_assert4Ú@py_assert9Ú@py_assert11Ú@py_assert16Ú@py_assert18Ú@py_format8Ú@py_format13Ú@py_format15Ú@py_format20Ú@py_format22Ú@py_format23Ú@py_format25Ú@py_assert5Ú@py_assert10Ú@py_assert13Ú@py_assert12Ú@py_format7Ú@py_format9Ú@py_format17Ú@py_format18Ú@py_assert7Ú@py_assert14Ú@py_format11Ú@py_format21s$                                       r   Ú8test_harbour_words_get_the_lighthouse_crates_and_barrelsr  H   s�  € Ü
×
 Ñ
 ¤ }Ð6cÓ!dÐfgÐikÐmqÓ
r€CØÐˆ3�dˆ?××Õˆ3�d×××××Ñˆ3××Óˆ3××Ô�d××××××ÑØÑ€Dˆ(�DÜ—j‘j¤¨$¨q©'Ó!2Ð3JÑ!KÓLÈXÑVÖ
j�ÐabÐcgÑahÐ[\Š1Ð
j€CÐ
jò Mð  Tð  Mð  QTñ  T÷  T÷  Tõ  Tð  Mð  QT÷  T÷  Tó  Tð  M÷  T÷  T÷  T÷  T÷  Tð  Tð  QT÷  T÷  Tó  Tð  QT÷  T÷  T÷  T÷  T÷  T÷  Tó  TÙYˆ6ÐYˆ6�XÐÔY &ÐY &¨HÐ"4ÔYÐ9MÐYÐ9MÐQYÐ9Y×Y×Y×YÐYˆ6�X×Y×YÓYˆ6×Y×Y×Y×Y×YÐY�X×Y×YÓY�X×Y×Y×Y×Y×Y×Y×YÐY &¨H×Y×YÓY &×Y×Y×Y×Y×YÐY¨H×Y×YÓY¨H×Y×Y×Y×Y×Y×Y×YÐ9MÐQY×Y×YÓYÐ9M×Y×Y×Y×Y×YÐYÐQY×Y×YÓYÐQY×Y×Y×Y×Y×Y×Y×Y×Y×Y×Y×Y×Y×Y×YÐYÙiˆ4�‰7�:ÑÐiÐ"6ÐiÐÐ"6Ñ6Ôi¸4À¹7À:Ñ;NÐiÐRiÐiÐ;NÐRiÑ;i×i×i×iÐÐ"6×i×iÓiÐ×i×iÒiÐ"6×i×i×i×i×i×iÕiÐ;NÐRi×i×iÓiÐ;N×i×iÒiÐRi×i×i×i×i×i×i×i×i×i×i×i×i×iÖiÙKˆ4�‰=ÐKœC ›HÐKˆ=˜HÑ$ÔK¨¨f©ÐK¨×)@Ñ)@ÐKÀÐKÑ)@ÀÓ)KÐKÐ)K×K×KÖKˆ=˜H×K×KÓKˆ=×K×K×K×K×KÐKœC×K×KÓKœC×K×K×K×K×KÒK ×K×KÓK ×K×KÔK˜H×K×K×K×K×K×KÒK¨×K×KÒKÐ)@×K×KÒKÀ×K×KÒKÐ)K×K×K×K×K×K×K×K×K×K×K×K×K×KÒKùò	 ks   Ã7[c                 ó’  ‡— t        j                  t        dd«      dd| «      \  }}}t        |d   «      Št	        j
                  ‰d   «      }|d   }d}t        j                  }‰d   } ||«      }	|	j                  }
 |
«       }||z   }||k(  }|�st        j                  d	|fd
||f«      t        j                  |«      t        j                  |«      dt        j                  «       v st        j                  t        «      rt        j                  t        «      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}	x}
x}}ˆfd„|d   D «       }t#        |«      }|s•ddt        j                  «       v st        j                  t"        «      rt        j                  t"        «      ndt        j                  |«      t        j                  |«      dœz  }t        t        j                   |«      «      ‚d x}}|d   }t        |«      }t%        |«      }h 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                  t        «      rt        j                  t        «      ndt        j                  |«      t        j                  |«      t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                   |«      «      ‚d x}x}x}x}}y )NÚHarbourúa lighthouser   r   r    zlibrary/assets.lock.jsonrÛ   r8   rÑ   )z”%(py1)s == (%(py4)s + %(py15)s
{%(py15)s = %(py13)s
{%(py13)s = %(py11)s
{%(py11)s = %(py7)s
{%(py7)s = %(py5)s.sha256
}(%(py9)s)
}.hexdigest
}()
})rL   )r½   Úpy4r´   rÆ   Úpy9rØ   rÜ   rÝ   zassert %(py18)sÚpy18c              3   ó:   •K  — | ]  }d |d   dd › d�‰v –— Œ y­w)zlibrary/models/rD   Né   r   © )Ú.0Úar–   s     €r   ú	<genexpr>z6test_pack_holds_models_lock_and_kit.<locals>.<genexpr>X   s)   øè ø€ ÒVÀ!�  5¡¨#¨2  ¨tÐ4¸Ô=ÑVùs   ƒrŒ   z,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}Úall©r±   Úpy2r  >   rz   r|   r{   )zO%(py7)s
{%(py7)s = %(py0)s(%(py5)s
{%(py5)s = %(py1)s(%(py3)s)
})
} == %(py10)sÚsetr«   )r±   r½   r²   r´   rÆ   rÈ   zassert %(py12)srÉ   )r“   rß   r   r«   rS   rè   rL   rM   rN   rà   rá   rå   râ   rã   rä   ræ   rç   r  r  )rX   rð   Ú_rñ   rÛ   ró   Ú@py_assert3Ú@py_assert6Ú@py_assert8r  r  r	  r÷   rì   r  Ú@py_format19rí   Ú@py_format5rô   rõ   r
  rú   r–   s                         @r   Ú#test_pack_holds_models_lock_and_kitr#  S   s[  ø€ Ü×*Ñ*¬5°¸NÓ+KÈQÐPRÐTXÓY�M€Dˆ!ˆTÜ�T˜!‘WÓ€EÜ�:‰:�eÐ6Ñ7Ó8€DØ�‰<Ðd˜9Ðd¤w§~¡~Ðd°eÐ<VÑ6WÐd¡~Ð6WÓ'XÐdÐ'X×'bÑ'bÐdÑ'bÓ'dÐd˜9Ð'dÑdÐdˆ<ÐdÑd×d×dÖdˆ<Ðd×d×dÓdˆ<×d×dÒd˜9×d×d×d×d×dÐd¤w×d×dÓd¤w×d×dÔd ~×d×dÒdÐ6W×d×dÒdÐ'X×d×dÒdÐ'b×d×dÒdÐ'd×d×d×d×d×d×d×d×dÛVÀtÈHÁ~ÔVÐVŒ3ÐVÓVÐVÑV×V×V×V×VÕVŒ3×V×VÓVŒ3×V×VÔVÐV×V×VÒVÐV×V×V×V×V×VÒVØ˜Q™ÐNŒx˜Ó ÐNŒ3Ð Ó!ÐNÒ%NÐNÐ!Ð%NÑN×N×NÖNÐ!Ð%N×N×N×N×N×NÑNŒ3×N×NÓNŒ3×N×N×N×N×NÒNŒx×N×NÓNŒx×N×NÔN˜×N×NÒNÐ ×N×NÒNÐ!×N×NÒNÐ%N×N×N×N×N×N×N×NÐNr   c                 óž  — t        j                  t        dd«      dd| «      d   }t        j                  t        dd«      dd| «      d   }|d   }|d   }||k(  }|slt        j                  d|fd||f«      t        j
                  |«      t        j
                  |«      d	œz  }d
d|iz  }t        t        j                  |«      «      ‚d x}x}}y )Nr  zcrates and a lighthouser   r   r­   ÚreleasesrÑ   ©z%(py1)s == %(py4)s©r½   r  úassert %(py6)srÕ   )r“   rß   r   rà   rá   rå   ræ   rç   )rX   r  Úbró   r  rì   r"  r  s           r   Útest_same_words_same_picksr*  \   sž   € Ü
×Ñœu YÐ0IÓJÈAÈrÐSWÓXÐYZÑ[€AÜ
×Ñœu YÐ0IÓJÈAÈrÐSWÓXÐYZÑ[€AØˆZ‰=Ð)˜A˜j™MÐ)ˆ=˜MÑ)×)×)Õ)ˆ=˜M×)×)Ó)ˆ=×)×)Ò)˜M×)×)×)×)×)×)Ô)r   c                 ó  — t         j                  }d}d}t        ||«      }d}d} ||||| «      }d }||u }	|	�s·t        j                  d|	fd||f«      dt        j                  «       v st        j                  t         «      rt        j                  t         «      ndt        j                  |«      dt        j                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  |«      t        j                  |«      t        j                  |«      t        j                  |«      t        j                  |«      d	t        j                  «       v st        j                  | «      rt        j                  | «      nd	t        j                  |«      t        j                  |«      d
œz  }
dd|
iz  }t        t        j                  |«      «      ‚d x}x}x}x}x}x}x}x}	}y )Nz
Space Racez$race spaceships in an asteroid fieldr   r   ©Úis©z¡%(py16)s
{%(py16)s = %(py2)s
{%(py2)s = %(py0)s.library_attachments
}(%(py9)s
{%(py9)s = %(py3)s(%(py5)s, %(py7)s)
}, %(py11)s, %(py13)s, %(py14)s)
} is %(py19)sr“   r   rX   ©r±   r  r²   r´   rÆ   r  rØ   rÜ   rË   rÙ   rÍ   úassert %(py21)srÎ   ©r“   rß   r   rà   rá   râ   rã   rä   rå   ræ   rç   ©rX   rí   rô   r  r   r  r  Ú@py_assert15rø   Ú@py_assert17rü   rý   s               r   Ú test_no_library_words_no_libraryr5  b   s>  € Ü×!Ñ!Ðs¨ÐsÐ6\Ðs¤%¨Ð6\Ó"]ÐsÐ_`ÐsÐbdÐsÑ!Ð"]Ð_`ÐbdÐfjÓkÐsÐosÐsÐkÐosÐs×s×sÖsÐkÐos×s×s×s×s×sÑsŒ2×s×sÓsŒ2×s×sÔsÐ!×s×s×s×s×sÐs¤%×s×sÓs¤%×s×sÔs¨×s×sÒsÐ6\×s×sÒsÐ"]×s×sÒsÐ_`×s×sÒsÐbd×s×s×s×s×sÐsÐfj×s×sÓsÐfj×s×sÔsÐk×s×sÒsÐos×s×s×s×s×s×s×s×sÐsr   c                 ó  — t         j                  }d}d}t        ||«      }d}d} ||||| «      }d }||u }	|	�s·t        j                  d|	fd||f«      dt        j                  «       v st        j                  t         «      rt        j                  t         «      ndt        j                  |«      dt        j                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  |«      t        j                  |«      t        j                  |«      t        j                  |«      t        j                  |«      d	t        j                  «       v st        j                  | «      rt        j                  | «      nd	t        j                  |«      t        j                  |«      d
œz  }
dd|
iz  }t        t        j                  |«      «      ‚d x}x}x}x}x}x}x}x}	}y )NÚPuzzleza calm puzzle game as wellr   r   r,  r.  r“   r   rX   r/  r0  rÎ   r1  r2  s               r   Ú#test_everyday_words_are_not_objectsr8  f   s>  € ä×!Ñ!Ðe¨ÐeÐ2NÐe¤%¨Ð2NÓ"OÐeÐQRÐeÐTVÐeÑ!Ð"OÐQRÐTVÐX\Ó]ÐeÐaeÐeÐ]ÐaeÐe×e×eÖeÐ]Ðae×e×e×e×e×eÑeŒ2×e×eÓeŒ2×e×eÔeÐ!×e×e×e×e×eÐe¤%×e×eÓe¤%×e×eÔe¨×e×eÒeÐ2N×e×eÒeÐ"O×e×eÒeÐQR×e×eÒeÐTV×e×e×e×e×eÐeÐX\×e×eÓeÐX\×e×eÔeÐ]×e×eÒeÐae×e×e×e×e×e×e×e×eÐer   c                 óT  — t        j                  t        j                  | «      d«      \  }}}g }d}||v }|}|rd}||v}	|	}|�sXt        j                  d|fd||f«      t        j
                  |«      dt        j                  «       v st        j                  |«      rt        j
                  |«      nddœz  }
dd	|
iz  }|j                  |«       |rŒt        j                  d
	fd|f«      t        j
                  |«      dt        j                  «       v st        j                  |«      rt        j
                  |«      nddœz  }dd|iz  }|j                  |«       t        j                  |d«      i z  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}x}x}}	y )Nz(a village street with a lamp and a benchr…   r†   rÀ   rÂ   r^   rÄ   rÅ   rÆ   ©únot in©z%(py10)s not in %(py12)srÇ   rÊ   rË   r   úassert %(py17)srÌ   ©r“   ÚpickÚ
load_indexrà   rá   rå   râ   rã   rä   ré   rê   ræ   rç   )rX   Úpicksr^   r  rí   rì   rô   ró   rõ   rö   rï   rù   rú   rû   Ú@py_format16r  s                   r   Ú*test_street_lamp_beats_floor_lamp_outdoorsrC  k   sð   € ÜŸ™¤§¡¨dÓ 3Ð5_Ó`Ñ€Eˆ7�AÙQÐÐQÐ Ð(ÔQÐ-BÐQÐ-BÈ'Ð-Q×Q×Q×QÐQÐ ×Q×QÓQÐ×Q×Q×Q×Q×QÐQ ×Q×QÓQ ×Q×Q×Q×Q×Q×Q×QÐ-BÈ'×Q×QÓQÐ-B×Q×Q×Q×Q×QÐQÈ'×Q×QÓQÈ'×Q×Q×Q×Q×Q×Q×Q×Q×Q×Q×Q×Q×QÕQr   c                 ó¨  — t        j                  t        j                  | «      d«      \  }}}d}||v }|s™t        j                  d|fd||f«      t        j
                  |«      dt        j                  «       v st        j                  |«      rt        j
                  |«      nddœz  }dd|iz  }t        t        j                  |«      «      ‚d x}}y )	Nza cellar full of casksr„   rÀ   ©z%(py1)s in %(py3)sr^   r¼   r³   r´   )r“   r?  r@  rà   rá   rå   râ   rã   rä   ræ   rç   )rX   rA  r^   r  ró   rì   rî   rï   s           r   Útest_alias_reaches_its_classrF  p   s   € ÜŸ™¤§¡¨dÓ 3Ð5MÓNÑ€Eˆ7�AØ"Ð-Ð" gÐ-×-×-Õ-Ð" g×-×-Ó-Ð"×-×-×-×-×-Ð- g×-×-Ó- g×-×-×-×-×-×-Ô-r   c                 ó   — t        j                  t        j                  | «      d«      \  }}}|D �cg c]  }|d   ‘Œ	 }}g }d„ |D «       }t        |«      }| }|}	|rd}
|
|v}|}	|	�sTddt	        j
                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  |«      t        j                  |«      dœz  }|j                  |«       |rŒt        j                  dfd	
|f«      t        j                  |
«      d
t	        j
                  «       v st        j                  |«      rt        j                  |«      nd
dœz  }dd|iz  }|j                  |«       t        j                  |d«      i z  }dd|iz  }t        t        j                  |«      «      ‚d x}	x}x}x}x}x}
}y c c}w )Nza rowboat by the sofar=   c              3   ó>   K  — | ]  }|j                  d «      –— Œ y­w©úvehicle.N©rë   ©r  Úis     r   r  zDtest_vehicles_and_uncleared_assets_never_attached.<locals>.<genexpr>x   ó   è ø€ Ò9°�1—<‘< 
×+Ñ9ùó   ‚zprop.furniture.sofa/ikea-sofaú)not %(py6)s
{%(py6)s = %(py2)s(%(py4)s)
}Úany©r  r  rÕ   r:  r<  r»   rÇ   rÊ   rË   r   r=  rÌ   )r“   r?  r@  rQ  râ   rã   rà   rä   rå   ré   rá   rê   ræ   rç   )rX   rA  r  Úpr»   rí   r  r   r  ró   rõ   rö   rù   rú   rû   rB  r  s                    r   Ú1test_vehicles_and_uncleared_assets_never_attachedrT  u   s$  € Ü—'‘'œ"Ÿ-™-¨Ó-Ð/FÓG�K€Eˆ1ˆaØ!Ö
"�qˆ1ˆT‹7Ð
"€CÐ
"ÙhÑ9°SÔ9ÐhŒsÐ9Ó9ÐhÐ9Ð9ÐhÐ9ÐhÑ9Ð>]ÐhÐ>]ÐehÐ>h×h×h×h×h×hÓhŒs×h×hÓhŒs×h×hÔhÐ9×h×hÒhÐ9×h×h×hÑhÑ9×h×hÒhÐ>]Ðeh×h×hÓhÐ>]×h×h×h×h×hÐhÐeh×h×hÓhÐeh×h×h×h×h×h×h×h×h×h×h×h×h×h×hùò #s   ²Gc                 ó¬  — t        j                  t        j                  | «      d«      \  }}}dg}||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}}y )	Nza windmill on the hillzbuilding.landmark.windmillrÑ   )z%(py0)s == %(py3)sÚgapsr°   r³   r´   )r“   r?  r@  rà   rá   râ   rã   rä   rå   ræ   rç   )rX   r  rV  rì   rí   rî   rï   s          r   Útest_gap_is_reported_not_filledrW  {   s�   € Ü—‘œŸ™ tÓ,Ð.FÓG�J€A€qˆ$Ø0Ð1Ð1ˆ4Ð1Ñ1×1×1Õ1ˆ4Ð1×1×1×1×1×1Ñ1ˆ4×1×1Ó1ˆ4×1×1Ô1Ð1×1×1×1×1×1×1Ò1r   c                 óP  — d}t         j                  }d}t        |d|iŽ}d}d} ||||| «      }d }||u }	|	�sät        j                  d|	fd||f«      dt        j                  «       v st        j                  t         «      rt        j                  t         «      ndt        j                  |«      d	t        j                  «       v st        j                  t        «      rt        j                  t        «      nd	d
t        j                  «       v st        j                  |«      rt        j                  |«      nd
t        j                  |«      t        j                  |«      t        j                  |«      t        j                  |«      dt        j                  «       v st        j                  | «      rt        j                  | «      ndt        j                  |«      t        j                  |«      dœz  }
dd|
iz  }t        t        j                  |«      «      ‚d x}x}x}x}x}x}x}	}t         j                  }d}t        |d|iŽ}d}d} ||||| «      }d }||u }	|	�sät        j                  d|	fd||f«      dt        j                  «       v st        j                  t         «      rt        j                  t         «      ndt        j                  |«      d	t        j                  «       v st        j                  t        «      rt        j                  t        «      nd	d
t        j                  «       v st        j                  |«      rt        j                  |«      nd
t        j                  |«      t        j                  |«      t        j                  |«      t        j                  |«      dt        j                  «       v st        j                  | «      rt        j                  | «      ndt        j                  |«      t        j                  |«      dœz  }
dd|
iz  }t        t        j                  |«      «      ‚d x}x}x}x}x}x}x}	}t         j                  }d}t        |d|iŽ}d}d} ||||| «      }d }||u }	|	�sät        j                  d|	fd||f«      dt        j                  «       v st        j                  t         «      rt        j                  t         «      ndt        j                  |«      d	t        j                  «       v st        j                  t        «      rt        j                  t        «      nd	d
t        j                  «       v st        j                  |«      rt        j                  |«      nd
t        j                  |«      t        j                  |«      t        j                  |«      t        j                  |«      dt        j                  «       v st        j                  | «      rt        j                  | «      ndt        j                  |«      t        j                  |«      dœz  }
dd|
iz  }t        t        j                  |«      «      ‚d x}x}x}x}x}x}x}	}t         j                  }d}t        |d|iŽ}d}d} ||||| «      }d }||u }	|	�sät        j                  d|	fd||f«      dt        j                  «       v st        j                  t         «      rt        j                  t         «      ndt        j                  |«      d	t        j                  «       v st        j                  t        «      rt        j                  t        «      nd	d
t        j                  «       v st        j                  |«      rt        j                  |«      nd
t        j                  |«      t        j                  |«      t        j                  |«      t        j                  |«      dt        j                  «       v st        j                  | «      rt        j                  | «      ndt        j                  |«      t        j                  |«      dœz  }
dd|
iz  }t        t        j                  |«      «      ‚d x}x}x}x}x}x}x}	}y )N)r  z crates, barrels and a lighthouseÚroomr   r   r   r,  )z¨%(py15)s
{%(py15)s = %(py2)s
{%(py2)s = %(py0)s.library_attachments
}(%(py8)s
{%(py8)s = %(py3)s(*%(py4)s, stage=%(py6)s)
}, %(py10)s, %(py12)s, %(py13)s)
} is %(py18)sr“   r   ÚwordsrX   )r±   r  r²   r  rÕ   r×   rÈ   rÉ   rÜ   rÝ   r  zassert %(py20)sÚpy20ÚboardÚsider   )z§%(py15)s
{%(py15)s = %(py2)s
{%(py2)s = %(py0)s.library_attachments
}(%(py8)s
{%(py8)s = %(py3)s(*%(py4)s, view=%(py6)s)
}, %(py10)s, %(py12)s, %(py13)s)
} is %(py18)sÚquickr   )z§%(py15)s
{%(py15)s = %(py2)s
{%(py2)s = %(py0)s.library_attachments
}(%(py8)s
{%(py8)s = %(py3)s(*%(py4)s, lane=%(py6)s)
}, %(py10)s, %(py12)s, %(py13)s)
} is %(py18)sr1  )rX   rZ  rí   r   r  rõ   rö   r	  r4  r÷   r!  r  s               r   Ú/test_room_stage_board_and_side_view_get_nothingr_  €   s÷  € Ø;€EÜ×!Ñ!ÐS°fÐS¤%¨Ð"=°fÑ"=ÐS¸qÐSÀ"ÐSÑ!Ð"=¸qÀ"ÀdÓKÐSÈtÐSÐKÈtÐS×S×SÖSÐKÈt×S×S×S×S×SÑSŒ2×S×SÓSŒ2×S×SÔSÐ!×S×S×S×S×SÐS¤%×S×SÓS¤%×S×S×S×S×SÒS¨×S×SÓS¨×S×SÔS°f×S×SÒSÐ"=×S×SÒS¸q×S×SÒSÀ"×S×S×S×S×SÐSÀd×S×SÓSÀd×S×SÔSÐK×S×SÒSÈt×S×S×S×S×S×S×SÕSÜ×!Ñ!ÐT°gÐT¤%¨Ð">°gÑ">ÐTÀÐTÀ2ÐTÑ!Ð">ÀÀ2ÀtÓLÐTÐPTÐTÐLÐPTÐT×T×TÖTÐLÐPT×T×T×T×T×TÑTŒ2×T×TÓTŒ2×T×TÔTÐ!×T×T×T×T×TÐT¤%×T×TÓT¤%×T×T×T×T×TÒT¨×T×TÓT¨×T×TÔT°g×T×TÒTÐ">×T×TÒTÀ×T×TÒTÀ2×T×T×T×T×TÐTÀt×T×TÓTÀt×T×TÔTÐL×T×TÒTÐPT×T×T×T×T×T×T×TÕTÜ×!Ñ!ÐR°VÐR¤%¨Ð"<°VÑ"<ÐR¸aÐRÀÐRÑ!Ð"<¸aÀÀTÓJÐRÈdÐRÐJÈdÐR×R×RÖRÐJÈd×R×R×R×R×RÑRŒ2×R×RÓRŒ2×R×RÔRÐ!×R×R×R×R×RÐR¤%×R×RÓR¤%×R×R×R×R×RÒR¨×R×RÓR¨×R×RÔR°V×R×RÒRÐ"<×R×RÒR¸a×R×RÒRÀ×R×R×R×R×RÐRÀT×R×RÓRÀT×R×RÔRÐJ×R×RÒRÈd×R×R×R×R×R×R×RÕRÜ×!Ñ!ÐS°WÐS¤%¨Ð"=°WÑ"=ÐS¸qÐSÀ"ÐSÑ!Ð"=¸qÀ"ÀdÓKÐSÈtÐSÐKÈtÐS×S×SÖSÐKÈt×S×S×S×S×SÑSŒ2×S×SÓSŒ2×S×SÔSÐ!×S×S×S×S×SÐS¤%×S×SÓS¤%×S×S×S×S×SÒS¨×S×SÓS¨×S×SÔS°W×S×SÒSÐ"=×S×SÒS¸q×S×SÒSÀ"×S×S×S×S×SÐSÀd×S×SÓSÀd×S×SÔSÐK×S×SÒSÈt×S×S×S×S×S×S×SÖSr   c                 óH  — t         j                  j                  d d ¬«       t         j                  }d}d}t	        ||«      }d}d} ||||| «      }d }||u }	|	�s·t        j                  d|	fd||f«      dt        j                  «       v st        j                  t         «      rt        j                  t         «      ndt        j                  |«      d	t        j                  «       v st        j                  t        «      rt        j                  t        «      nd	t        j                  |«      t        j                  |«      t        j                  |«      t        j                  |«      t        j                  |«      d
t        j                  «       v st        j                  | «      rt        j                  | «      nd
t        j                  |«      t        j                  |«      dœz  }
dd|
iz  }t        t        j                  |«      «      ‚d x}x}x}x}x}x}x}x}	}y )NrŽ   r  r  r   r   r,  r.  r“   r   r•   r/  r0  rÎ   )r“   r”   r‘   rß   r   rà   rá   râ   rã   rä   rå   ræ   rç   )r•   rí   rô   r  r   r  r  r3  rø   r4  rü   rý   s               r   Ú%test_missing_library_builds_as_beforera  ˆ   sI  € Ü‡I�I×Ñ˜4 dÐÔ+Ü×!Ñ!Ð\¨	Ð\°>Ð\¤%¨	°>Ó"BÐ\ÀAÐ\ÀrÐ\Ñ!Ð"BÀAÀrÈ8ÓTÐ\ÐX\Ð\ÐTÐX\Ð\×\×\Ö\ÐTÐX\×\×\×\×\×\Ñ\Œ2×\×\Ó\Œ2×\×\Ô\Ð!×\×\×\×\×\Ð\¤%×\×\Ó\¤%×\×\Ô\¨	×\×\Ò\°>×\×\Ò\Ð"B×\×\Ò\ÀA×\×\Ò\Àr×\×\×\×\×\Ð\È8×\×\Ó\È8×\×\Ô\ÐT×\×\Ò\ÐX\×\×\×\×\×\×\×\×\Ð\r   c                 ó¶  — t        j                  | dz  dz  j                  «       «      }t        d„ |d   D «       «      }| dz  |› d�z  j	                  d«       t
        j                  }d}d	}t        ||«      }d
}d} ||||| «      }	d }
|	|
u }|�s·t        j                  d|fd|	|
f«      dt        j                  «       v st        j                  t
        «      rt        j                  t
        «      ndt        j                  |«      dt        j                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  |«      t        j                  |«      t        j                  |«      t        j                  |«      t        j                  |«      dt        j                  «       v st        j                  | «      rt        j                  | «      ndt        j                  |	«      t        j                  |
«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}x}x}x}x}	x}}
y )Nr   r�   c              3   óP   K  — | ]  }|d    j                  d«      sŒ|d   –— Œ  y­w)r=   rƒ   rD   N)Úendswith)r  r  s     r   r  z6test_tampered_blob_means_no_library.<locals>.<genexpr>�   s&   è ø€ ÒW˜!°°$±×0@Ñ0@ÐAUÕ0VˆQˆu�XÑWùs   ‚&œ
&rŒ   r   r   s   not the file the card pinsr  r  r   r   r,  r.  r“   r   rX   r/  r0  rÎ   )rS   rè   Ú	read_textÚnextrO   r“   rß   r   rà   rá   râ   rã   rä   rå   ræ   rç   )rX   r™   r<   rí   rô   r  r   r  r  r3  rø   r4  rü   rý   s                 r   Ú#test_tampered_blob_means_no_libraryrg  �   s„  € Ü
�*‰*�d˜V‘m lÑ2×=Ñ=Ó?Ó
@€CÜÑW˜s 8™}ÔWÓW€AØ	ˆG�^˜˜˜4�jÑ ×-Ñ-Ð.KÔLÜ×!Ñ!ÐX¨	ÐX°>ÐX¤%¨	°>Ó"BÐXÀAÐXÀrÐXÑ!Ð"BÀAÀrÈ4ÓPÐXÐTXÐXÐPÐTXÐX×X×XÖXÐPÐTX×X×X×X×X×XÑXŒ2×X×XÓXŒ2×X×XÔXÐ!×X×X×X×X×XÐX¤%×X×XÓX¤%×X×XÔX¨	×X×XÒX°>×X×XÒXÐ"B×X×XÒXÀA×X×XÒXÀr×X×X×X×X×XÐXÈ4×X×XÓXÈ4×X×XÔXÐP×X×XÒXÐTX×X×X×X×X×X×X×X×XÐXr   c                 óV  — |j                  t        dd«       t        j                  t        j                  | «      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}}|j                  t        dd«       |j                  t        dd«       t        j                  t        j                  | «      d«      d   }	g }
|	|
k(  }|slt        j                  d|fd|	|
f«      t        j                  |	«      t        j                  |
«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}	x}}
y )NÚ
MAX_ASSETSr­   z6crates, barrels, a lighthouse, a lamp post and a benchrÑ   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)srW   rA  )r±   r½   r²   rÕ   úassert %(py8)sr×   é   Ú	MAX_BYTESr    zcrates and barrelsr   r&  r'  r(  rÕ   )Úsetattrr“   r?  r@  rW   rà   rá   râ   rã   rä   rå   ræ   rç   )rX   ÚmonkeypatchrA  r  rì   r   rô   r  r  ró   r  r"  s               r   Ú	test_capsro  ”   sJ  € Ø×Ñœ˜L¨!Ô,Ü—'‘'œ"Ÿ-™-¨Ó-Ð/gÓh�K€Eˆ1ˆaÜˆu‹:Ð˜Ðˆ:˜‰?××Õˆ:˜×××××ÑŒ3××ÓŒ3×××××Òˆu××Óˆu××Ôˆ:××Ò˜××××××ÓØ×Ñœ˜L¨"Ô-Ø×Ñœ˜K¨Ô+Ü�7‰7”2—=‘= Ó&Ð(<Ó=¸aÑ@ÐFÀBÐFÐ@ÀBÑF×F×FÕFÐ@ÀB×F×FÓFÐ@×F×FÒFÀB×F×F×F×F×F×FÔFr   c                 ón  — t        j                  t        dd«      dd| «      \  }}}t        |d   «      }t	        j
                  |d   «      }g }|d   }|}|r|d   }	|	}|s–d	d
t        j                  |«      iz  }
|j                  |
«       |r+ddt        j                  	«      iz  }|j                  |«       t        j                  |d«      i z  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}}	h d£}t        |«      }	||	k  }|söt        j                  d|fd||	f«      t        j                  |«      dt        j                  «       v st        j                   t        «      rt        j                  t        «      nd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}||v }|s™t        j                  d|fd||f«      t        j                  |«      dt        j                  «       v st        j                   |«      rt        j                  |«      nddœz  }
dd|
iz  }t        t        j                  |«      «      ‚d x}}y )NÚQuayza stone house by the lighthouser   r   r    rµ   r�   rx   z%(py3)sr²   z%(py6)srÕ   úassert %(py9)sr  >   úlibrary/draco/draco_decoder.jsú!library/basis/basis_transcoder.jsú#library/basis/basis_transcoder.wasmr¹   ©z0%(py1)s <= %(py6)s
{%(py6)s = %(py3)s(%(py4)s)
}r  r–   ©r½   r²   r  rÕ   rj  r×   ÚrendererrÀ   rE  rÃ   r¼   r³   r´   )r“   rß   r   r«   rS   rè   rà   rå   ré   rê   ræ   rç   r  rá   râ   rã   rä   )rX   rð   rÃ   r  r–   Úmanrí   rì   ró   r   rî   r  rù   Ú@py_format10r  rï   s                   r   Ú%test_ktx2_models_bring_their_decodersr{  �   s:  € Ü×.Ñ.¬u°VÐ=^Ó/_ÐabÐdfÐhlÓmÑ€Dˆ(�AÜ�T˜!‘WÓ€E¤T§Z¡Z°Ð6MÑ0NÓ%O˜sÙ'ˆ3ˆv‰;Ð'ˆ;Ð'‰;˜3˜w™<Ð'˜<×'×'Ó'ˆ;×'×'×'Ð'‰;×'×'Ð'˜<×'×'×'×'×'×'×'×'×'×'×'Ö'Úyð  Hô  ~Að  BGó  ~Hð  HÐyð  ~Hñ  H÷  H÷  Hõ  HÐyð  ~H÷  H÷  Hó  HÐy÷  H÷  H÷  H÷  H÷  Hð  Hô  ~A÷  H÷  Hó  Hô  ~A÷  H÷  H÷  H÷  H÷  Hò  Hð  BG÷  H÷  Hó  Hð  BG÷  H÷  Hô  Hð  ~H÷  H÷  H÷  H÷  H÷  H÷  Hó  HØÐ!ˆ:˜Ð!×!×!Õ!ˆ:˜×!×!Ó!ˆ:×!×!×!×!×!Ð!˜×!×!Ó!˜×!×!×!×!×!×!Ô!r   c                 óð  — t        j                  t        dd«      dd| «      \  }}}t        |d   «      }t	        j
                  |d   «      }g }|d   }| }|}|rd„ |D «       }	t        |	«      }
|
 }|}|sód	d
t        j                  |«      iz  }|j                  |«       |rˆddt        j                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  	«      t        j                  
«      dœz  }|j                  |«       t        j                  |d«      i z  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}x}x}	x}
}y )Nr  r  r   r   r    rµ   r�   c              3   ó>   K  — | ]  }|j                  d «      –— Œ y­w)zlibrary/basis/NrK  )r  r˜   s     r   r  z5test_plain_models_ship_no_decoders.<locals>.<genexpr>¨   s   è ø€ Ò&UÈ! q§|¡|Ð4D×'EÑ&UùrO  znot %(py3)sr²   z+not %(py10)s
{%(py10)s = %(py6)s(%(py8)s)
}rQ  )rÕ   r×   rÈ   zassert %(py14)srË   )r“   rß   r   r«   rS   rè   rQ  rà   rå   ré   râ   rã   rä   rê   ræ   rç   )rX   rð   r  r–   ry  rí   rì   rô   ró   r  rõ   rö   r"  Ú@py_format12rú   rû   s                   r   Ú"test_plain_models_ship_no_decodersr  ¥   s÷   € Ü×'Ñ'¬¨i¸Ó(HÈ!ÈRÐQUÓV�J€Dˆ!ˆQÜ�T˜!‘WÓ€E¤T§Z¡Z°Ð6MÑ0NÓ%O˜sÙUˆs�6‰{ÐUˆ{ˆ?ÐUˆ?ÐU‰?Ñ&UÈuÔ&UÐU¤3Ð&UÓ#UÐUÐ#UÐUÐUÐU×U×UÓUˆ{×U×U×UÐU‰?×U×U×U×UÕU¤3×U×UÓU¤3×U×UÔUÐ&U×U×UÒUÐ#U×U×U×U×U×U×U×U×U×U×U×U×UÖUr   c                 óT  — t        j                  t        j                  | «      d«      \  }}}g }d}||v }|}|rd}||v}	|	}|�sXt        j                  d|fd||f«      t        j
                  |«      dt        j                  «       v st        j                  |«      rt        j
                  |«      nddœz  }
dd	|
iz  }|j                  |«       |rŒt        j                  d
	fd|f«      t        j
                  |«      dt        j                  «       v st        j                  |«      rt        j
                  |«      nddœz  }dd|iz  }|j                  |«       t        j                  |d«      i z  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}x}x}}	y )Nza stone house on the quayr}   zbuilding.medieval.houserÀ   rÂ   r^   rÄ   rÅ   rÆ   r:  r<  rV  rÇ   rÊ   rË   r   r=  rÌ   r>  )rX   rA  r^   rV  rí   rì   rô   ró   rõ   rö   rï   rù   rú   rû   rB  r  s                   r   Ú+test_a_filled_class_beats_an_empty_namesaker�  «   sô   € ÜŸ7™7¤2§=¡=°Ó#6Ð8SÓTÑ€Eˆ7�DÙYÐ$ÐYÐ$¨Ð/ÔYÐ4MÐYÐ4MÐUYÐ4Y×Y×Y×YÐYÐ$¨×Y×YÓYÐ$×Y×Y×Y×Y×YÐY¨×Y×YÓY¨×Y×Y×Y×Y×Y×Y×YÐ4MÐUY×Y×YÓYÐ4M×Y×Y×Y×Y×YÐYÐUY×Y×YÓYÐUY×Y×Y×Y×Y×Y×Y×Y×Y×Y×Y×Y×Y×YÕYr   c                 ó  — t        | ||d|¬«      }| dz  |d   z  }t        j                  |j                  «       «      }|j	                  dg d¢g d¢g d¢gd	d
gdœg d¢ddgdœ¬«       |j                  t        j                  |«      «       |S )Nr~   r€   r   rJ   ÚPaint)r'   ç        r„  )r'   r   r   )r   r   r'   ÚredÚblue)ÚmaterialÚdefaultÚpaintsÚnames)ÚWheel_FLÚWheel_FRÚWheel_RLÚWheel_RRr‹  rŒ  )ÚwheelsÚsteer)ÚpaintÚnodes)r\   rS   rè   re  r‘   rR   rT   )rX   rY   rZ   rC   r  rJ   Úcs          r   Ú_vehicler”  ±   s™   € Üˆt�S˜$ z°sÔ;€AØ�&‰=˜1˜V™9Ñ$€DÜ�
‰
�4—>‘>Ó#Ó$€AØ‡H�H ²OÒP[Ò]hÐOiÐuzð  }Cð  uDñ  EÚNÐZdÐfpÐYqÑrð ô tà‡O�O”D—J‘J˜q“MÔ"Ø€Hr   c                 ó   — t        j                  | dz  dz  j                  «       «      }|d   d   d   j                  dg d¢iddd	gidd
gidœ«       |d   j                  dddœ«       |dxx   t	        | dd«      t	        | dd«      t	        | dd«      t	        | dd«      t	        | ddd¬«      t	        | ddd¬«      gz  cc<   | dz  dz  j                  t        j                  |«      «       t        j                  j                  d d ¬«       | S )Nr   r�   rŠ   rt   r]   r^   )ÚsedanÚ	hatchbackÚsportsÚbusÚtaxiÚbicycle)ÚcarÚservicez	two-wheelr‹   zvehicle.carzvehicle.two-wheel.bicycle)rœ  ÚbikerŒ   úvehicle.car.sedanzfamily-sedanzvehicle.car.hatchbackzeuro-hatchbackzvehicle.service.buszcity-busz	city-bikezkenney-sedanÚgarage)rC   zvehicle.service.taxizkenney-taxirŽ   ©	rS   rè   re  r‘   r”  rR   rT   r“   r”   )rX   r™   s     r   rn   rn   »   sR  € ä
�*‰*�d˜V‘m lÑ2×=Ñ=Ó?Ó
@€CØˆ�K�	Ñ˜8Ñ$×+Ñ+°YÒ@`Ð4aÐoxð  |Að  CIð  {Jð  oKØ;DÀyÀkÐ:Rñ-Tô Uàˆ	�N×Ñ -Ð9TÑUÔVØˆƒM”h˜tÐ%8¸.ÓIÌ8ÐTXÐZqð  tDó  LEÜ˜tÐ%:¸JÓGÌÐRVÐXsð  vAó  JBÜ˜tÐ%8¸.ÈhÔWÔYaÐbfÐh~ð  ANð  T\ô  Z]ð^ñ ^ƒMð 
ˆF�]�\Ñ!×-Ñ-¬d¯j©j¸«oÔ>Ü‡I�I×Ñ˜4 dÐÔ+Ø€Kr   c                 ó6  — t        j                  t        dd«      dd| «      \  }}}t        j                  t        |d   «      d   «      d   D �ci c]  }|d   |“Œ
 }}h d	£}t        |«      }||k  }|söt        j                  d
|fd||f«      t        j                  |«      dt        j                  «       v st        j                  t        «      rt        j                  t        «      nd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   }g }|d   d   }d}||k(  }|}|r2|d   d   }t        |«      }d}||k(  }|}|r|d   d   d   }d}||k(  }|}|�s½t        j                  d|fd||f«      t        j                  |«      t        j                  |«      dœz  }	dd|	iz  }
|j!                  |
«       |�rt        j                  dfdf«      dt        j                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  «      t        j                  |«      t        j                  |«      d œz  }d!d"|iz  }|j!                  |«       |r_t        j                  dfd#f«      t        j                  |«      t        j                  |«      d$œz  }d%d&|iz  }|j!                  |«       t        j"                  |d«      i z  }d'd(|iz  }t        t        j                  |«      «      ‚d x}x}x}x}x}x}x}x}x}x}x}}y c c}w ))Nz	Rush Hourz6deliver pizzas across the city before the traffic jamsr   r   r    rµ   rŒ   r=   >   úvehicle.service.bus/city-busúvehicle.car.sedan/family-sedanú#vehicle.two-wheel.bicycle/city-biker¹   rv  r  Úrowsrw  rj  r×   r¤  r‘  r‡  rƒ  r‰  r­   r’  r�  r‹  rÑ   rÓ   rÔ   rÖ   )z5%(py14)s
{%(py14)s = %(py10)s(%(py12)s)
} == %(py17)srW   )rÈ   rÉ   rË   rÌ   z%(py19)srÍ   )z%(py22)s == %(py25)s)rÞ   Úpy25z%(py27)sÚpy27zassert %(py30)sÚpy30)r“   rß   r   rS   rè   r«   r  rà   rá   rå   râ   rã   rä   ræ   rç   rW   ré   rê   )rn   rð   rÃ   rñ   rò   r¦  ró   r   rì   r  r  r–  rí   rô   rö   r  r÷   r3  Ú@py_assert21Ú@py_assert24Ú@py_assert23r  rü   Ú@py_format26Ú@py_format28Ú@py_format29Ú@py_format31s                              r   Ú7test_a_city_gets_cars_buses_and_bikes_with_their_paintsr±  É   sï  € Ü×1Ñ1´%¸ÐE}Ó2~ð  ABð  DFð  HNó  OÑ€Dˆ(�DÜ $§
¡
¬8°D¸±GÓ+<Ð=TÑ+UÓ VÐW_Ñ `Öa˜1ˆAˆd‰G�Q‰JÐa€DÐaÚtð  BÔx{ð  }Aó  yBð  BÐtð  yBñ  B÷  B÷  Bõ  BÐtð  yB÷  B÷  Bó  BÐt÷  B÷  B÷  B÷  B÷  Bð  BÔx{÷  B÷  Bó  BÔx{÷  B÷  B÷  B÷  B÷  Bò  Bð  }A÷  B÷  Bó  Bð  }A÷  B÷  Bô  Bð  yB÷  B÷  B÷  B÷  B÷  B÷  Bó  BØÐ1Ñ2€Eñ Fˆ5�‰>˜*Ñ%ð  F¨ð  FÐ%¨Ñ0ô  F¸¸w¹ÈÑ9Qð  F´SÐ9QÓ5Rð  FÐVWð  FÐ5RÐVWÑ5Wô  FÐ\aÐbiÑ\jÐksÑ\tÐuvÑ\wð  Fð  |Fð  FÐ\wð  |Fñ  ]F÷  F÷  F÷  Fð  FÐ%¨÷  F÷  Fó  FÐ%÷  F÷  Fò  F¨÷  F÷  F÷  F÷  F÷  F÷  Fö  FÐ5RÐVW÷  F÷  F÷  F÷  F÷  Fñ  F´S÷  F÷  Fó  F´S÷  F÷  Fô  FÐ9Q÷  F÷  Fò  FÐ5R÷  F÷  Fò  FÐVW÷  F÷  F÷  F÷  F÷  F÷  Fõ  FÐ\wð  |F÷  F÷  Fó  FÐ\w÷  F÷  Fò  Fð  |F÷  F÷  F÷  F÷  F÷  F÷  F÷  F÷  F÷  F÷  F÷  F÷  F÷  F÷  F÷  Fùò bs   ÁNc                 óê  — t        j                  t        j                  | «      d«      \  }}}|D �cg c]  }|d   ‘Œ	 }}d}||v }|s™t        j                  d|fd||f«      t        j
                  |«      dt        j                  «       v st        j                  |«      rt        j
                  |«      nddœz  }dd	|iz  }t        t        j                  |«      «      ‚d x}}g }	d
„ |D «       }
t        |
«      }| }|}|rd}||v}|}|�sTddt        j                  «       v st        j                  t        «      rt        j
                  t        «      ndt        j
                  |
«      t        j
                  |«      dœz  }|	j                  |«       |rŒt        j                  dfd|f«      t        j
                  |«      dt        j                  «       v st        j                  |«      rt        j
                  |«      nddœz  }dd|iz  }|	j                  |«       t        j                  |	d«      i z  }dd|iz  }t        t        j                  |«      «      ‚d x}x}	x}
x}x}x}}y c c}w )Nz1a taxi and a sedan car by the rowboat in the cityr=   r¤  rÀ   rE  r»   r¼   r³   r´   c              3   ó$   K  — | ]  }d |v –— Œ
 y­w)ÚkenneyNr  rL  s     r   r  zQtest_garage_kit_vehicles_and_boats_never_come_from_the_library.<locals>.<genexpr>Õ   s   è ø€ Ò. Q�8˜q”=Ñ.ùs   ‚z#vehicle.sea.rowboat/harbour-rowboatrP  rQ  rR  r:  r<  rÇ   rÊ   rË   r   r=  rÌ   )r“   r?  r@  rà   rá   rå   râ   rã   rä   ræ   rç   rQ  ré   rê   )rn   rA  r  rS  r»   ró   rì   rî   rï   rí   r  r   r  rõ   rö   rù   rú   rû   rB  r  s                       r   Ú>test_garage_kit_vehicles_and_boats_never_come_from_the_libraryrµ  Ñ   s€  € Ü—'‘'œ"Ÿ-™-¨Ó/Ð1dÓe�K€Eˆ1ˆaØ!Ö
"�qˆ1ˆT‹7Ð
"€CÐ
"Ø+Ð2Ð+¨sÐ2×2×2Õ2Ð+¨s×2×2Ó2Ð+×2×2×2×2×2Ð2¨s×2×2Ó2¨s×2×2×2×2×2×2Ó2ÙcÑ.¨#Ô.ÐcŒsÐ.Ó.ÐcÐ.Ð.ÐcÐ.ÐcÑ.Ð3XÐcÐ3XÐ`cÐ3c×c×c×c×c×cÓcŒs×c×cÓcŒs×c×cÔcÐ.×c×cÒcÐ.×c×c×cÑcÑ.×c×cÒcÐ3XÐ`c×c×cÓcÐ3X×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ùò #s   ²I0c                 óÆ  — t        j                  t        j                  | «      d«      \  }}}d„ |D «       }t        |«      }| }|s•ddt	        j
                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  |«      t        j                  |«      dœz  }t        t        j                  |«      «      ‚d x}x}}y )Nz,a medieval city with a car of hay and a bikec              3   óD   K  — | ]  }|d    j                  d«      –— Œ y­w)r=   rJ  NrK  ©r  rS  s     r   r  z;test_older_worlds_get_no_modern_vehicles.<locals>.<genexpr>Ú   s   è ø€ ÒA°a�1�T‘7×%Ñ% j×1ÑAùó   ‚ ú0assert not %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}rQ  r  ©r“   r?  r@  rQ  râ   rã   rà   rä   rå   ræ   rç   )rn   rA  r  rí   r  r   rï   s          r   Ú(test_older_worlds_get_no_modern_vehiclesr¼  Ø   sŠ   € Ü—'‘'œ"Ÿ-™-¨Ó/Ð1_Ó`�K€Eˆ1ˆaÙA¸5ÔAÐAŒsÐAÓAÐAÐAÐAÐAÑA×A×A×A×AÕAŒs×A×AÓAŒs×A×AÔAÐA×A×AÒAÐA×A×A×A×A×AÕAr   c                 ó€  — t        j                  t        j                  | «      d«      \  }}}d}|D �cg c]  }|d   ‘Œ	 }}||v }|slt        j                  d|fd||f«      t        j
                  |«      t        j
                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}y c c}w )	Nzride a bike past the lighthouser¥  r=   rÀ   )z%(py1)s in %(py4)sr'  r(  rÕ   )r“   r?  r@  rà   rá   rå   ræ   rç   )	rn   rA  r  ró   rS  r  rì   r"  r  s	            r   Ú&test_a_named_bike_comes_without_a_cityr¾  Ý   s‡   € Ü—'‘'œ"Ÿ-™-¨Ó/Ð1RÓS�K€Eˆ1ˆaØ0ÐLÀeÖ4LÀ°Q°t³WÐ4LÐLÐ4LÐ0Ð4LÐL×L×LÕLÐ0Ð4L×L×LÓLÐ0×L×LÒLÐ4L×L×L×L×L×L×LÔLùÒ4Ls   ´B;c                 óÌ  — t        j                  t        j                  | «      d«      \  }}}d„ ||z   D «       }t        |«      }| }|s•ddt	        j
                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  |«      t        j                  |«      dœz  }t        t        j                  |«      «      ‚d x}x}}y )Nz'a classic sports game with a lighthousec              3   ó>   K  — | ]  }|j                  d «      –— Œ y­wrI  rK  )r  r“  s     r   r  z@test_sports_and_classic_are_not_vehicle_words.<locals>.<genexpr>ä   s   è ø€ ÒD°�1—<‘< 
×+ÑDùrO  rº  rQ  r  r»  )rn   r  r^   rV  rí   r  r   rï   s           r   Ú-test_sports_and_classic_are_not_vehicle_wordsrÁ  â   s�   € Ü—w‘wœrŸ}™}¨VÓ4Ð6_Ó`Ñ€A€w�ÙD°W¸t±^ÔDÐDŒsÐDÓDÐDÐDÐDÐDÑD×D×D×D×DÕDŒs×D×DÓDŒs×D×DÔDÐD×D×DÒDÐD×D×D×D×D×DÕDr   c           	      ó†  — t        d«      D ]w  }t        j                  | dz  dz  j                  «       «      }|d   j	                  t        | dd|› �«      «       | dz  dz  j                  t        j                  |«      «       Œy t        j                  j                  d d ¬«       t        j                  t        j                  | «      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t        j&                  |«      t        j&                  |«      t        j&                  |«      dœz  }	dd|	iz  }
t)        t        j*                  |
«      «      ‚d x}x}x}}y )Né   r   r�   rŒ   rŸ  zextra-sedan-rŽ   za sedan in the car parkc              3   óD   K  — | ]  }|d    j                  d«      –— Œ y­w)r=   zvehicle.car.sedan/NrK  r¸  s     r   r  z?test_vehicle_classes_ship_at_most_two_models.<locals>.<genexpr>î   s    è ø€ ÒG¸Aˆq�‰w×!Ñ!Ð"6×7ÑGùr¹  r­   rÑ   ©z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)sÚsum©r±   r  r  rÆ   rr  r  ©ÚrangerS   rè   re  ré   r”  rR   rT   r“   r”   r‘   r?  r@  rÆ  rà   rá   râ   rã   rä   rå   ræ   rç   )rn   rM  r™   rA  r  rí   r  r  r   rù   rz  s              r   Ú,test_vehicle_classes_ship_at_most_two_modelsrÊ  ç   s<  € Ü�1‹Xò EˆÜ�j‰j˜& 6™/¨LÑ8×CÑCÓEÓFˆØˆH‰×ÑœX fÐ.AÀ\ÐRSÐQTÐCUÓVÔWØ	�&‰˜<Ñ	'×3Ñ3´D·J±J¸s³OÕDðEô ‡I�I×Ñ˜4 dÐÔ+Ü—'‘'œ"Ÿ-™-¨Ó/Ð1JÓK�K€Eˆ1ˆaÙGÀÔGÐLŒ3ÐGÓGÐLÈ1ÐLÐGÈ1ÑL×L×LÕLÐGÈ1×L×L×L×L×LÑLŒ3×L×LÓLŒ3×L×LÔLÐG×L×LÒLÐG×L×LÒLÈ1×L×L×L×L×L×LÖLr   c                 óÔ  — t        j                  | dz  dz  j                  «       «      }|d   d   d   j                  dg d¢iddd	gidd
dgidœ«       |dxx   t	        | dd«      t	        | dd«      t	        | dd«      t	        | dd«      t	        | dd«      gz  cc<   | dz  dz  j                  t        j                  |«      «       t        j                  j                  d d ¬«       | S )Nr   r�   rŠ   rt   r]   r^   )ÚtankÚjeepÚtruckÚ
helicopterzattack-helicopterÚfighterÚbomber)úmilitary-landÚrotorzmilitary-airrŒ   úvehicle.military-land.tankzabrams-tankúvehicle.military-land.jeepzhumvee-troopzvehicle.rotor.attack-helicopterzapache-helicopterúvehicle.military-air.fighterzf16-fighterzvehicle.military-air.bomberz
b52-bomberrŽ   r¡  )rn   r™   s     r   Úarmyr×  ò   s)  € ä
�*‰*�f˜v‘o¨Ñ4×?Ñ?ÓAÓ
B€CØˆ�K�	Ñ˜8Ñ$×+Ñ+¸yÒJcÐ>dÐpyð  }Ið  K^ð  |_ð  p`Ø>GÈ)ÐU]ÐI^Ð=_ñ-aô bàˆƒM”h˜vÐ'CÀ]ÓSÔU]Ð^dð  gCð  ESó  VTÜ˜vÐ'HÐJ]Ó^Ô`hÐioð  rPð  R_ó  a`Ü˜vÐ'DÀlÓSðUñ UƒMð ˆf�_�|Ñ#×/Ñ/´·
±
¸3³Ô@Ü‡I�I×Ñ˜4 dÐÔ+Ø€Mr   c                 óô  — t        j                  t        j                  | «      d«      d   D �cg c]  }|d   ‘Œ	 }}h d£}t        |«      }||k  }|söt	        j
                  d|fd||f«      t	        j                  |«      dt        j                  «       v st	        j                  t        «      rt	        j                  t        «      nd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}||v}|s™t	        j
                  d|fd||f«      t	        j                  |«      dt        j                  «       v st	        j                  |«      rt	        j                  |«      nddœz  }dd|iz  }	t        t	        j                  |	«      «      ‚d x}}y c c}w )Nú(hold the front line against the invasionr   r=   >   ú'vehicle.military-land.jeep/humvee-troopú(vehicle.military-air.fighter/f16-fighterú1vehicle.rotor.attack-helicopter/apache-helicopterú&vehicle.military-land.tank/abrams-tankr¹   rv  r  r»   rw  rj  r×   z&vehicle.military-air.bomber/b52-bomberr:  )z%(py1)s not in %(py3)sr¼   r³   r´   ©r“   r?  r@  r  rà   rá   rå   râ   rã   rä   ræ   rç   )
r×  rS  r»   ró   r   rì   r  r  rî   rï   s
             r   Ú:test_a_war_setting_brings_tanks_jeeps_helicopters_and_jetsrß  ÿ   s™  € ÜŸG™G¤B§M¡M°$Ó$7Ð9cÓdÐefÑgÖ
h�qˆ1ˆT‹7Ð
h€CÐ
hò8ð DÜ;>¸s»8ðDð 8Ø;CñD÷ Dß2CÑ2CóDð 8Ø;C÷Dñ Dß:C¹)ð8÷ Dñ Dß=C¹V÷Dò Dß+CÑ+C¼3÷Dñ Dß:C¹)¼3÷Dó Dß=C¹V÷Dò Dß+CÑ+C¸s÷Dñ Dß:C¹)¸s÷Dò Dß:C¹)¸8÷D÷ D÷ Dñ Dß0CÑ0C÷D÷ Dà3Ð>Ð3¸3Ð>×>×>Õ>Ð3¸3×>×>Ó>Ð3×>×>×>×>×>Ð>¸3×>×>Ó>¸3×>×>×>×>×>×>Ô>ùò is   ¯G5c                 ó,  — dD �]	  }t        j                  t        j                  | «      |«      d   D �cg c]  }|d   ‘Œ	 }}d„ |D «       }t        |«      }| }|s«t	        j
                  |«      dz   dt        j                  «       v st	        j                  t        «      rt	        j                  t        «      ndt	        j                  |«      t	        j                  |«      dœz  }t        t	        j                  |«      «      ‚d x}x}}�Œ y c c}w )N)zfeed the fish in the fish tankza street fighter brawlerza jeep in the cityr   r=   c              3   ó>   K  — | ]  }|j                  d «      –— Œ y­w))zvehicle.militaryúvehicle.rotorNrK  rL  s     r   r  zGtest_a_fish_tank_and_street_fighter_are_not_military.<locals>.<genexpr>	  s   è ø€ ÒXÈq�q—|‘|Ð$I×JÑXùrO  z2
>assert not %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}rQ  r  )r“   r?  r@  rQ  rà   Ú_format_assertmsgrâ   rã   rä   rå   ræ   rç   )r×  rZ  rS  r»   rí   r  r   rï   s           r   Ú4test_a_fish_tank_and_street_fighter_are_not_militaryrä    s»   € Øeó `ˆÜ "§¡¬¯©°dÓ(;¸UÓ CÀAÑ FÖG˜1ˆq�‹wÐGˆÐGÙXÐTWÔXÐ_”3ÐXÓXÐ_ÐXÐXÐ_ÑX×_Ö_ÐZ_×_×_×_×_×_Ó_”3×_×_Ó_”3×_×_Ô_ÐX×_×_Ò_ÐX×_×_×_×_×_Ö_ñ`ùÚGs   µDc                 ó‚  — t        j                  t        j                  | «      d«      \  }}}ddh}t        |«      }||k  }|söt	        j
                  d|fd||f«      t	        j                  |«      dt        j                  «       v st	        j                  t        «      rt	        j                  t        «      nd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}}y )Nz2a dogfight between fighter jets over a battle tankrÖ  rÔ  r¹   rv  r  r^   rw  rj  r×   rÞ  )r×  r  r^   ró   r   rì   r  r  s           r   Ú)test_named_phrases_reach_military_classesræ    sº   € Ü—G‘GœBŸM™M¨$Ó/Ð1eÓf�M€A€w�Ø*Ð,HÐIÐYÌSÐQXË\ÐYÐIÈ\ÑY×Y×YÕYÐIÈ\×Y×YÓYÐI×Y×Y×Y×Y×YÐYÌS×Y×YÓYÌS×Y×Y×Y×Y×YÒYÐQX×Y×YÓYÐQX×Y×YÔYÈ\×Y×Y×Y×Y×Y×YÔYr   c                 óî  — t        j                  t        j                  | «      d«      d   D �cg c]  }|d   ‘Œ	 }}d„ |D «       }t        |«      }| }|s•ddt	        j
                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  |«      t        j                  |«      dœz  }t        t        j                  |«      «      ‚d x}x}}y c c}w )Nz2a medieval war between knights and an army of orcsr   r=   c              3   ó>   K  — | ]  }|j                  d «      –— Œ y­wrI  rK  rL  s     r   r  z>test_a_medieval_war_gets_no_modern_military.<locals>.<genexpr>  rN  rO  rº  rQ  r  r»  ©r×  rS  r»   rí   r  r   rï   s          r   Ú+test_a_medieval_war_gets_no_modern_militaryrê    s¢   € ÜŸG™G¤B§M¡M°$Ó$7Ð9mÓnÐopÑqÖ
r�qˆ1ˆT‹7Ð
r€CÐ
rÙ9°SÔ9Ð9ŒsÐ9Ó9Ð9Ð9Ð9Ð9Ñ9×9×9×9×9Õ9Œs×9×9Ó9Œs×9×9Ô9Ð9×9×9Ò9Ð9×9×9×9×9×9Õ9ùò só   ¯C2c           	      ó  — t        d«      D ]w  }t        j                  | dz  dz  j                  «       «      }|d   j	                  t        | dd|› �«      «       | dz  dz  j                  t        j                  |«      «       Œy t        j                  j                  d d ¬«       t        j                  t        j                  | «      d«      d	   D �cg c]  }|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t        j&                  |«      t        j&                  |«      t        j&                  |«      dœz  }	dd|	iz  }
t)        t        j*                  |
«      «      ‚d x}x}x}}t        j                  t        j                  | «      d«      d	   D �cg c]  }|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t        j&                  |«      t        j&                  |«      t        j&                  |«      dœz  }	dd|	iz  }
t)        t        j*                  |
«      «      ‚d x}x}x}}y c c}w c c}w )Né   r   r�   rŒ   rÔ  zextra-tank-rŽ   rÙ  r   r=   c              3   ó>   K  — | ]  }|j                  d «      –— Œ y­w©zvehicle.military-land.tank/NrK  rL  s     r   r  zDtest_a_setting_brings_one_model_per_vehicle_class.<locals>.<genexpr>  ó   è ø€ ÒH¸qˆq�|‰|Ð9×:ÑHùrO  r    rÑ   rÅ  rÆ  rÇ  rr  r  z$a battle tank duel at the front linec              3   ó>   K  — | ]  }|j                  d «      –— Œ y­wrï  rK  rL  s     r   r  zDtest_a_setting_brings_one_model_per_vehicle_class.<locals>.<genexpr>  s   è ø€ ÒJ¸qˆq�|‰|Ð9×:ÑJùrO  r­   rÈ  )r×  rM  r™   rS  r»   rí   r  r  r   rù   rz  Únameds               r   Ú1test_a_setting_brings_one_model_per_vehicle_classró    s  € Ü�1‹Xò CˆÜ�j‰j˜$ ™-¨,Ñ6×AÑAÓCÓDˆØˆH‰×ÑœX dÐ,HÈKÐXYÐWZÐJ[Ó\Ô]Ø	�‰˜Ñ	%×1Ñ1´$·*±*¸S³/ÕBðCô ‡I�I×Ñ˜4 dÐÔ+ÜŸG™G¤B§M¡M°$Ó$7Ð9cÓdÐefÑgÖ
h�qˆ1ˆT‹7Ð
h€CÐ
hÙHÀCÔHÐMŒ3ÐHÓHÐMÈAÐMÐHÈAÑM×M×MÕMÐHÈA×M×M×M×M×MÑMŒ3×M×MÓMŒ3×M×MÔMÐH×M×MÒMÐH×M×MÒMÈA×M×M×M×M×M×MÕMÜ Ÿg™g¤b§m¡m°DÓ&9Ð;aÓbÐcdÑeÖf˜ˆQˆt‹WÐf€EÐfÙJÀEÔJÐOŒ3ÐJÓJÐOÈaÐOÐJÈaÑO×O×OÕOÐJÈa×O×O×O×O×OÑOŒ3×O×OÓOŒ3×O×OÔOÐJ×O×OÒOÐJ×O×OÒOÈa×O×O×O×O×O×OÖOùò iùâfs   ÃK<Ç?Lc                 óž	  — t        j                  | dz  dz  j                  «       «      }t        | dd«      }ddg|d<   d|d	<   |d
   j	                  |«       | dz  dz  j                  t        j                  |«      «       t        j                  j                  d d ¬«       t        j                  t        j                  | «      d«      d   D �cg c]  }|d   ‘Œ	 }}g }d}||v }|}|rd}	|	|v}
|
}|�sXt        j                  d|fd||f«      t        j                  |«      dt        j                   «       v st        j"                  |«      rt        j                  |«      nddœz  }dd|iz  }|j	                  |«       |rŒt        j                  d
fd	|f«      t        j                  |	«      dt        j                   «       v st        j"                  |«      rt        j                  |«      nddœz  }dd|iz  }|j	                  |«       t        j$                  |d«      i z  }dd|iz  }t'        t        j(                  |«      «      ‚d x}x}x}x}x}	}
d„ |D «       }t+        |«      }| }|s•dd t        j                   «       v st        j"                  t*        «      rt        j                  t*        «      nd t        j                  |«      t        j                  |«      d!œz  }t'        t        j(                  |«      «      ‚d x}x}}t        j                  t        j                  | «      d"«      d   D �cg c]  }|d   ‘Œ	 }}g }d}||v }|}|rd}	|	|v}
|
}|�sXt        j                  d|fd||f«      t        j                  |«      d#t        j                   «       v st        j"                  |«      rt        j                  |«      nd#dœz  }dd|iz  }|j	                  |«       |rŒt        j                  d|
fd|	|f«      t        j                  |	«      d#t        j                   «       v st        j"                  |«      rt        j                  |«      nd#dœz  }dd|iz  }|j	                  |«       t        j$                  |d«      i z  }dd|iz  }t'        t        j(                  |«      «      ‚d x}x}x}x}x}	}
y c c}w c c}w )$Nr   r�   rÔ  zsherman-tankzera-ww2Úww2r@   é@B rE   rŒ   rŽ   z2a WW2 tank battle in Normandy, hold the front liner   r=   z'vehicle.military-land.tank/sherman-tankrÝ  rÀ   rÂ   r»   rÄ   rÅ   rÆ   r:  r<  rÇ   rÊ   rË   r=  rÌ   c              3   ó>   K  — | ]  }|j                  d «      –— Œ y­w))zvehicle.military-airrâ  NrK  rL  s     r   r  z>test_ww2_settings_get_only_ww2_era_military.<locals>.<genexpr>(  s   è ø€ ÒXÈq�1—<‘<Ð I×JÑXùrO  rº  rQ  r  rÙ  Úmodern)rS   rè   re  r”  ré   rR   rT   r“   r”   r‘   r?  r@  rà   rá   rå   râ   rã   rä   rê   ræ   rç   rQ  )r×  r™   ÚsherrS  r»   rí   rì   rô   ró   rõ   rö   rï   rù   rú   rû   rB  r  r  r   rø  s                       r   Ú+test_ww2_settings_get_only_ww2_era_militaryrú  "  s  € Ü
�*‰*�d˜V‘m lÑ2×=Ñ=Ó?Ó
@€CÜ�DÐ6¸ÓG€DÐYbÐdiÐXjÈÈfÉð  }DÐlpÐqxÑlyØˆ�M×Ñ˜Ô ¨¡°Ñ!=× IÑ IÌ$Ï*É*ÐUXË/Ô ZÔ\^×\eÑ\e×\lÑ\lÐswð  CÐ\lô  ]DÜŸG™G¤B§M¡M°$Ó$7Ð9mÓnÐopÑqÖ
r�qˆ1ˆT‹7Ð
r€CÐ
rÙsÐ4ÐsÐ4¸Ð;ÔsÐ@hÐsÐ@hÐpsÐ@s×s×s×sÐsÐ4¸×s×sÓsÐ4×s×s×s×s×sÐs¸×s×sÓs¸×s×s×s×s×s×s×sÐ@hÐps×s×sÓsÐ@h×s×s×s×s×sÐsÐps×s×sÓsÐps×s×s×s×s×s×s×s×s×s×s×s×s×sÔsÙXÐTWÔXÐXŒsÐXÓXÐXÐXÐXÐXÑX×X×X×X×XÕXŒs×X×XÓXŒs×X×XÔXÐX×X×XÒXÐX×X×X×X×X×XÔXÜ!Ÿw™w¤r§}¡}°TÓ':Ð<fÓgÐhiÑjÖk˜!ˆa�‹gÐk€FÐkÙyÐ3ÐyÐ3°vÐ=ÔyÐBkÐyÐBkÐsyÐBy×y×y×yÐyÐ3°v×y×yÓyÐ3×y×y×y×y×yÐy°v×y×yÓy°v×y×y×y×y×y×y×yÐBkÐsy×y×yÓyÐBk×y×y×y×y×yÐyÐsy×y×yÓyÐsy×y×y×y×y×y×y×y×y×y×y×y×y×yÕyùò	 sùò ls   ÃSÌ;S
c                 óÄ  — t        j                  | dz  dz  j                  «       «      }|d   d   d   d   dxx   dgz  cc<   d	D ]$  \  }}|d
   j                  t	        | ||«      «       Œ& |d
   D ]  }|d   j                  d«      sŒd|d<   Œ | dz  dz  j                  t        j                  |«      «       t        j                  j                  d d ¬«       d}t        j                  t        j                  | «      |«      d   D �cg c]  }|d   ‘Œ	 }}d„ |D «       }	t        |	«      }
|
s«t        j                  |«      dz   dt!        j"                  «       v st        j$                  t        «      rt        j&                  t        «      ndt        j&                  |	«      t        j&                  |
«      dœz  }t)        t        j*                  |«      «      ‚d x}	}
g }	d„ |D «       }
t        |
«      }|}|rd„ |D «       }t        |«      }|}|�sPddt!        j"                  «       v st        j$                  t        «      rt        j&                  t        «      ndt        j&                  |
«      t        j&                  |«      dœz  }|	j                  |«       |rˆddt!        j"                  «       v st        j$                  t        «      rt        j&                  t        «      ndt        j&                  «      t        j&                  «      dœz  }|	j                  |«       t        j,                  |	d«      i z  }dd|iz  }t)        t        j*                  |«      «      ‚d x}x}	x}
x}x}}d„ |D «       }	t/        |	«      }
d}|
|k  }|sÉt        j0                  d |fd!|
|f«      d"t!        j"                  «       v st        j$                  t.        «      rt        j&                  t.        «      nd"t        j&                  |	«      t        j&                  |
«      t        j&                  |«      d#œz  }d$d%|iz  }t)        t        j*                  |«      «      ‚d x}	x}
x}}y c c}w )&Nr   r�   rŠ   rt   r]   rÒ  r^   rÎ  ))rÖ  zrafale-fighter)úvehicle.military-land.truckztactical-truck)rü  z
ural-truck)rÕ  zhumvee-armored)úvehicle.rotor.helicopterzchinook-helicopter)rý  zblackhawk-helicopterrŒ   r=   rJ  rö  rE   rŽ   z‚Hold the front line: command your tanks, Humvees and troop trucks, call in helicopters and fighter jets against enemy tank columnsr   c              3   ó>   K  — | ]  }|j                  d «      –— Œ y­wrï  rK  rL  s     r   r  zItest_a_battlefield_gets_its_tanks_before_second_models.<locals>.<genexpr>:  rð  rO  z.
>assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}rQ  r  c              3   ó>   K  — | ]  }|j                  d «      –— Œ y­w)zvehicle.military-air.fighter/NrK  rL  s     r   r  zItest_a_battlefield_gets_its_tanks_before_second_models.<locals>.<genexpr>;  s   è ø€ ÒJÀˆq�|‰|Ð;×<ÑJùrO  c              3   ó>   K  — | ]  }|j                  d «      –— Œ y­w)zvehicle.rotor.NrK  rL  s     r   r  zItest_a_battlefield_gets_its_tanks_before_second_models.<locals>.<genexpr>;  s   è ø€ ÒRÐvwÐST×S_ÑS_Ð`p×SqÑRùrO  z%%(py6)s
{%(py6)s = %(py2)s(%(py4)s)
}rR  z(%(py12)s
{%(py12)s = %(py8)s(%(py10)s)
})r×   rÈ   rÉ   zassert %(py15)srÝ   c              3   ó>   K  — | ]  }|j                  d «      –— Œ y­wrI  rK  rL  s     r   r  zItest_a_battlefield_gets_its_tanks_before_second_models.<locals>.<genexpr><  s   è ø€ Ò5¨Aˆq�|‰|˜J×'Ñ5ùrO  é   r¹   )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} <= %(py7)srÆ  rÇ  rr  r  )rS   rè   re  ré   r”  rë   rR   rT   r“   r”   r‘   r?  r@  rQ  rà   rã  râ   rã   rä   rå   ræ   rç   rê   rÆ  rá   )r×  rn  r™   rY   rZ   r  rZ  rS  r»   rí   r  r"  r   ró   rõ   rö   r  rú   Ú@py_format14rB  r  rù   rz  s                          r   Ú6test_a_battlefield_gets_its_tanks_before_second_modelsr  -  sï  € ä
�*‰*�d˜V‘m lÑ2×=Ñ=Ó?Ó
@€CØˆ�K�	Ñ˜8Ñ$ _Ñ5°iÓ@ÀWÀIÑMÓ@ð@ò 8‰	ˆˆTð 	ˆH‰×ÑœX d¨C°Ó6Õ7ð8ð �‰]ò BˆØˆT‰7×Ñ˜jÕ)¸	¨1¨Wª:ðBà	ˆF�]�\Ñ!×-Ñ-¬d¯j©j¸«oÔ>ÄÇ	Á	×@PÑ@PÐW[ÐbfÐ@PÔ@gð Q€EÜŸG™G¤B§M¡M°$Ó$7¸Ó?ÀÑBÖ
C�qˆ1ˆT‹7Ð
C€CÐ
CÙHÀCÔHÐMŒ3ÐHÓHÐMÑH×MÖMÈ#×M×M×M×M×MÓMŒ3×M×MÓMŒ3×M×MÔMÐH×M×MÒMÐH×M×M×M×M×MÒMÙÑJÀcÔJÐŒ3ÐJÓJÐÐJÐÑJÑRÐ{~ÔRÐÌsÐRÓOÐÐO×××××ÑŒ3××ÓŒ3××ÔÐJ××ÒÐJ×××ÑÑJ××××ÕÌs××ÓÌs××ÔÐR××ÒÐO××××××××××××ÓÙ5°Ô5Ð:Œ3Ð5Ó5Ð:¸Ð:Ð5¸Ñ:×:×:Õ:Ð5¸×:×:×:×:×:Ñ:Œ3×:×:Ó:Œ3×:×:Ô:Ð5×:×:Ò:Ð5×:×:Ò:¸×:×:×:×:×:×:Ö:ùò Ds   ÄQc                 óî  — t        j                  t        j                  | «      d«      d   D �cg c]  }|d   ‘Œ	 }}d„ |D «       }t        |«      }| }|s•ddt	        j
                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  |«      t        j                  |«      dœz  }t        t        j                  |«      «      ‚d x}x}}y c c}w )Nz%clean the fish tank and feed the fishr   r=   c              3   ó>   K  — | ]  }|j                  d «      –— Œ y­wrI  rK  rL  s     r   r  zItest_tank_outside_a_battlefield_is_still_not_a_vehicle.<locals>.<genexpr>A  rN  rO  rº  rQ  r  r»  ré  s          r   Ú6test_tank_outside_a_battlefield_is_still_not_a_vehicler  ?  s¢   € ÜŸG™G¤B§M¡M°$Ó$7Ð9`ÓaÐbcÑdÖ
e�qˆ1ˆT‹7Ð
e€CÐ
eÙ9°SÔ9Ð9ŒsÐ9Ó9Ð9Ð9Ð9Ð9Ñ9×9×9×9×9Õ9Œs×9×9Ó9Œs×9×9Ô9Ð9×9×9Ò9Ð9×9×9×9×9×9Õ9ùò frë  )ÚnoneÚthirdÚcustom)éd   ÚlegacyTzvillage-kit)r   )9Ú__doc__Úbuiltinsrâ   Ú_pytest.assertion.rewriteÚ	assertionÚrewriterà   rL   r¢   rS   r    Útypesr   r   ÚpytestÚforge_corp.api.routesr   r“   r   r\   r’   ÚfixturerX   r«   r  r#  r*  r5  r8  rC  rF  rT  rW  r_  ra  rg  ro  r{  r  r�  r”  rn   r±  rµ  r¼  r¾  rÁ  rÊ  r×  rß  rä  ræ  rê  ró  rú  r  r  r  r   r   ú<module>r     sÈ  ðÙ Nç  „ ƒÛ 	Û Û Ý &ã å 5ó%ó

Uð ¨Y¸ÀzÐ8RÐ,SÐ_hÐksÐjtÐ^uØ#,¨w¨iÐ"8ÀyÐSZÐR[ÐF\ñ ^ð _à¨)°g¸xÐ5HÐ)IÐV_ÐbhÐjqÐarÐUsØ*3°f¸fÐ5EÐ)FÐQZÐ]cÐ\dÐPeñgð hà˜u y°9°+Ð&>Ð?Ð@ñ	B€ð ‡�ñó ðò2YòLòOò*òtòfò
Rò
.ò
iò2ò
Tò]ò
YòGò"òVòZóð ‡�ñ
ó ð
òFòdòBò
Mò
Eò
Mð ‡�ñ	ó ð	ò?ò`òZò
:ò
	Pòzò;ó$:r   