ó
    &Òj##  ã                   ó¼   • S r SSKr/ SQrSSSSSS	S
S.r/ SQrS rSS jrSS jrSS jrSS jr	SS jr
SS jrS S jrS!S jrS"S jrS#S jrS$S jrS%S jrS&S jrg)'u¼  Compact builders for Level-4 lessons (age 11). Every id is prefixed Â«l4-Â» so it never collides with Level 1.

Conventions in the data:
  fill items   "Il (avoir â€“ prÃ©sent) ___ faim. = a"          one '=' then the answer(s), several blanks separated by ' | '
  rewrite      ("Il est content.", "Il sera content.")
  identify     ("Nous avons des tickets.", "avons", "prÃ©sent")
  match        ("Mes grands-parents", "Ã©taient en Ã‰gypte.")
é    N)u   prÃ©sentzfutur simpleÚ	imparfaitu   passÃ© composÃ©zplus-que-parfaitu   conditionnel prÃ©sentõ   impÃ©ratif prÃ©sentu   Ø§Ù„Ù…Ø¶Ø§Ø±Ø¹u   Ø§Ù„Ù…Ø³ØªÙ‚Ø¨Ù„ Ø§Ù„Ø¨Ø³ÙŠØ·u   Ø§Ù„Ù…Ø§Ø¶ÙŠ Ø§Ù„Ù†Ø§Ù‚Øµu   Ø§Ù„Ù…Ø§Ø¶ÙŠ Ø§Ù„Ù…Ø±ÙƒÙ‘Ø¨u   Ø§Ù„Ù…Ø§Ø¶ÙŠ Ø§Ù„Ø£Ø³Ø¨Ù‚u   Ø§Ù„Ø´Ø±Ø·ÙŠ Ø§Ù„Ø­Ø§Ø¶Ø±u
   Ø§Ù„Ø£Ù…Ø±)ÚjeÚtuzil / elle / onÚnousÚvouszils / ellesc	                 ó&   • [        U  SU 3X#XEXgUS9$ )NÚ-)ÚidÚtypeÚtitleÚtitle_arÚinstrÚinstr_arÚpointsÚdata©Údict)	ÚlidÚnÚtypr   r   r   r   r   r   s	            Ú-F:\Yaseen\AI\French2\curriculum\level4\kit.pyÚactr      s+   € Ü�c�U˜!˜A˜3�< cÀÐaið  @Dñ  Eð  Eó    c                 óô  • / nU HÎ  u  pgnSU;   a  UR                  S5      OUR                  5        V	s/ s H  o™R                  5       PM     n
n	US:X  a  / SQO[        n[        U
5      [        U5      :X  d	   XgU
45       eUR	                  [        Xg[        R                  US5      [        Xº5       VVs/ s H  u  pÍ[        XÍS9PM     snnS95        MÐ     [        XSX4SS	S
[        US95	      $ s  sn	f s  snnf )ub   verbs: [(verb, tense, "f1 f2 f3 f4 f5 f6")] â€” forms separated by ' / ' when they contain spaces.z / r   )z2e pers. sing.z1re pers. plur.z2e pers. plur.Ú )ÚpÚanswer)ÚverbÚtenseÚtense_arÚrowsÚ	conjugateu-   Je conjugue le verbe Ã  toutes les personnes.ud   ØµØ±Ù‘Ù� Ø§Ù„Ù�Ø¹Ù„ Ù…Ø¹ ÙƒÙ„ Ø§Ù„Ø¶Ù…Ø§Ø¦Ø±. Ø§Ø³ØªØ¹Ù…Ù„ Ø£Ø²Ø±Ø§Ø± Ø§Ù„Ø­Ø±ÙˆÙ� Ø§Ù„Ù…Ù†Ø¨ÙˆØ±Ø©.é   ©Úitems)
ÚsplitÚstripÚPERSONSÚlenÚappendr   ÚTENSE_ARÚgetÚzipr   )r   r   Úverbsr   r   r&   r   r    ÚformsÚxÚfsÚpronr   Úfs                 r   Útabler5      s&  € à€EÛ#Ñˆ�UØ8=À» %§+¡+¨eÔ"4ÈEÏKÉKËMÐ"YÓ[Ò"Y˜A�g‰gŽiÑ"YˆÐ[ØJOÐShÓJhÓFÔnuˆÜ�2‹wœ#˜d›)Ó#Ð6 d°2Ð%6Ó6Ð#Ø�‰”T˜t¼8¿<¹<ÈÈrÓ;RÔz}ð  Cô  {Hô  ZIò  {HÑrvÐrsÔZ^ÐabÔZmñ  {Hò  ZIñ  Jö  	Kñ	 $ô
 ˆs�{ EÐ5dð  gMð  OQô  SWð  ^cñ  Sdó  eð  eùò	 \ùó ZIs   ´C/Â4C4c                 ó–  • / nU H¡  n	U	R                  SS5      u  p«UR                  S5       Vs/ s H  oÌR                  5       PM     nnU
R                  S5      [	        U5      :X  d   U	5       eUR                  [        X­ Vs/ s H  oÌR                  S5      PM     snS95        M£     [        XSX4XVU[        US95	      $ s  snf s  snf )	Nz = é   z | Ú___ú ; )ÚtextÚblanksÚtype_answerr%   )Úrsplitr'   r(   Úcountr*   r+   r   r   )r   r   Úlinesr   r   r   r   r   r&   Úlnr:   ÚansÚbr;   s                 r   ÚfillrC   !   s´   € Ø€EÛˆØ—I‘I˜e QÓ'‰	ˆØ%(§Y¡Y¨uÔ%5Ó6Ò%5 —'‘'–)Ñ%5ˆÐ6Ø�z‰z˜%Ó ¤C¨£KÓ/Ð3°Ó3Ð/Ø�‰”T˜tÀVÓ,LÂVÀ¯W©W°U®^ÁVÑ,LÑMÖNñ	 ô
 ˆs�} e°uÈÔPTÐ[`ÑPaÓbÐbùò 7ùâ,Ls   ¯CÂCc                 ó¤   • [        XSXVX#U[        X#U VV	s/ s H%  u  p‰[        S0 SU0DSU	R                  S5      0D6PM'     sn	nS95	      $ s  sn	nf )NÚrewriteÚfromÚanswersr9   )ÚtaskÚtask_arr&   © )r   r   r'   )
r   r   rH   rI   Úpairsr   r   r   ÚarB   s
             r   rE   rE   +   s\   € Üˆs�y %°4À&Ü˜ÑotÔ6uÒotÑgkÐgh´tÑ7b¸vÀq¸kÑ7bÐST×SZÑSZÐ[`ÓSaÕ7bÑotÒ6uÑvóxð xùÛ6us   –,A"c                 ó`  • [         R                  " U  SU 35      n/ nU Ho  u  p‰n
UR                  [         Vs/ s H  o»U
:w  d  M
  UPM     snS5      nU
/U-   nUR	                  U5        UR                  [        U SU	 S3XÚSU	 S3S95        Mq     [        XSX4S	S
U[        US95	      $ s  snf )z2Multiple choice: the tense of the underlined verb.r
   é   u
     â†’  Â« u    Â»u   Ù…Ø§ Ø²Ù…Ù† Ø§Ù„Ù�Ø¹Ù„ Â« u    Â»ØŸ©ÚqÚchoicesr   ÚarÚmcqzJe trouve le temps du verbe.u1   Ø­Ø¯Ù‘Ø¯ Ø²Ù…Ù† Ø§Ù„Ù�Ø¹Ù„ Ø¨ÙŠÙ† Ø§Ù„Ù‚ÙˆØ³ÙŠÙ†.©Ú	questions)ÚrandomÚRandomÚsampleÚTENSESÚshuffler+   r   r   )r   r   Útriplesr   r   r   ÚrngÚqsÚsentr   r    ÚtÚothersÚchs                 r   Úidentifyrb   0   sÙ   € ä
�-Š-˜3˜%˜q  ˜Ó
%€CØ	€BÛ$Ñˆ�EØ—‘­Ó=ª 1°u±*ŸQ©Ñ=¸qÓAˆØˆW�vÑˆØ�‰�BŒØ
�	‰	”$˜D˜6 ¨D¨6°Ð5¸rÐVpÐquÐpvÐv{ÐT|Ñ}Ö~ñ	 %ô
 ˆs�u˜eÐ/Mð  PCð  EKô  MQð  \^ñ  M_ó  `ð  `ùò	 >s   ¹	B+
ÁB+
c
                 óâ  • [         R                  " U  SU 35      n
U=(       d    [        nU=(       d    U[        L a  SOSn/ nU H_  u  pÍnU/U
R                  U Vs/ s H  oÿU:w  d  M
  UPM     snS5      -   nUR	                  [        [        U5      S::  a  UOUUXèS95        Ma     U[        L a  U	=(       d    SOSn	[        XS	X4/U	QS
P[        U[        U[        U5      5      US9P76 $ s  snf )z¦Timed round on verb forms -> tense (uses the same triples as identify).
With `pool` the answers are something else (e.g. infinitives): distractors come from the pool.r
   õ   Ù…Ø§ Ø§Ù„Ø²Ù…Ù†ØŸu   Ù…Ø§ Ø§Ù„Ù…ØµØ¯Ø±ØŸrN   é    rO   )z1Le plus vite possible : le temps de chaque verbe.uU   Ø¨Ø£Ø³Ø±Ø¹ Ù…Ø§ ÙŠÙ…ÙƒÙ†: Ø­Ø¯Ù‘Ø¯ Ø²Ù…Ù† ÙƒÙ„ Ù�Ø¹Ù„ Ù‚Ø¨Ù„ Ø§Ù†ØªÙ‡Ø§Ø¡ Ø§Ù„ÙˆÙ‚Øª.)z4Le plus vite possible : l'infinitif de chaque verbe.uW   Ø¨Ø£Ø³Ø±Ø¹ Ù…Ø§ ÙŠÙ…ÙƒÙ†: Ø­Ø¯Ù‘Ø¯ Ù…ØµØ¯Ø± ÙƒÙ„ Ù�Ø¹Ù„ Ù‚Ø¨Ù„ Ø§Ù†ØªÙ‡Ø§Ø¡ Ø§Ù„ÙˆÙ‚Øª.Úspeed_roundé   )ÚsecondsÚtargetr&   )	rV   rW   rY   rX   r+   r   r*   r   Úmin)r   r   r[   r   r   rh   ri   ÚpoolÚaskr   r\   r&   r^   r   rA   r_   ra   s                    r   Úspeedrm   <   s  € ô �-Š-˜3˜%˜q  ˜Ó
%€CØ�>”6€DØ
×
S¨´ªÑ%Ð=R€CØ€EÛ"‰ˆ�CØˆU�S—Z‘Z©DÓ =ªD q¸±H§©DÑ =¸qÓAÑAˆØ�‰”T¤C¨£I°£O™D¸ÀrÐRUÑ^Ö_ñ #ð hlô  pvò  hvˆE÷  dð  døð  H[€EÜˆs�} eð  G¸ð  G¸rð  GÄ4ÐPWÔ`cÐdjÔloÐpuÓlvÓ`wð  @Eñ  DFò  Gð  Gùò !>s   Á	C,Á)C,c                 óz   • [        XSX4SSU[        U VVs/ s H  u  pg[        XgSS S9PM     snnS95	      $ s  snnf )NÚmatchu+   Je relie chaque dÃ©but de phrase Ã  sa fin.u@   ØµÙ�Ù„ Ø¨Ø¯Ø§ÙŠØ© ÙƒÙ„ Ø¬Ù…Ù„Ø© Ø¨Ù†Ù‡Ø§ÙŠØªÙ‡Ø§ Ø§Ù„ØµØ­ÙŠØ­Ø©.r   )r:   ÚrtextÚemojiÚimg)rK   ©r   r   )r   r   rK   r   r   r   rL   rB   s           r   ro   ro   J   sP   € Üˆs�w Ð1^ð  acð  ekÜÑQVÔWÒQVÉÈœ4 Q°r¸tÔDÑQVÒWÑXóZð ZùÛWs   –7c                 ól   • SS jn[        XSX4SSU[        U Vs/ s H  ov" U6 PM	     snS95	      $ s  snf )u   questions: [(question, [choices], answer, ar?, why_ar?)] â€” ar is shown with the question, why_ar only after the right answer.c                 óR   • [        SXUS.U(       a  SU0O0 DU(       a  SU0D6$ 0 D6$ )N)rP   rQ   r   rR   Úwhy_arrJ   r   )rP   ÚcrL   rR   Úwhys        r   ÚoneÚchoose.<locals>.oneQ   s6   € ÜÐo�a¨1Ño¾r°$¸±ÀrÐoÖbeÐPXÐZ]ÈÑoÐoÐkmÑoÐor   rS   u   Je choisis la bonne rÃ©ponse.u'   Ø§Ø®ØªØ± Ø§Ù„Ø¥Ø¬Ø§Ø¨Ø© Ø§Ù„ØµØ­ÙŠØ­Ø©.rT   )NNrs   )r   r   rU   r   r   r   ry   r1   s           r   Úchooser{   O   sF   € ôpäˆs�u˜eÐ/NÐPyð  |BÜ±	Ó:²	¨1˜s A›w±	Ñ:Ñ;ó=ð =ùÚ:s   š1c	                 ó®  • / n	U H£  u  p«nU
R                  5       n[        S [        U5       5       5      nXÞ   R                  S5      u  nnnUR                  S5      u    nnXÞ   R	                  SS5      XÞ'   U	R                  [        SXÞXû-   U-   U/US.U(       a  SS0O0 D65        M¥     [        XSX4U=(       d    SU=(       d    S	U[        S
U	S95	      $ )zDitems: [(sentence with the wrong word between *stars*, fix, why_ar)]c              3   ó:   #   • U  H  u  pS U;   d  M  Uv •  M     g7f)Ú*NrJ   )Ú.0ÚiÚws      r   Ú	<genexpr>Úhunt.<locals>.<genexpr>\   s   é € Ð<Ò/‘t�q°3¸!±8—‘Ò/ùs   ‚’	r~   r   )ÚwordsÚwrongÚfixÚaltrv   ÚcaseTÚ
error_huntz'Je trouve le mot faux et je le corrige.u7   Ø§Ù„Ù…Ø³ Ø§Ù„ÙƒÙ„Ù…Ø© Ø§Ù„Ø®Ø§Ø·Ø¦Ø© Ø«Ù… ØµØ­Ù‘Ø­Ù‡Ø§.u?   Ø§Ù„Ù…Ø³ Ø§Ù„ÙƒÙ„Ù…Ø© Ø§Ù„Ø®Ø§Ø·Ø¦Ø© Ø«Ù… Ø§ÙƒØªØ¨ Ø§Ù„ØµÙˆØ§Ø¨)Úhint_arr&   rJ   )r'   ÚnextÚ	enumerateÚ	partitionÚreplacer+   r   r   )r   r   r&   r   r   r   rˆ   r   r   Úoutr^   r†   rx   r„   ÚkÚpreÚ_ÚrestÚposts                      r   Úhuntr•   W   sð   € à
€CÛ‰ˆ�3Ø—
‘
“ˆÜÑ<œy¨Ô/Ó<Ó<ˆØ‘x×)Ñ)¨#Ó.‰ˆˆQ�Ø—^‘^ CÓ(‰
ˆˆ1ˆdØ‘8×#Ñ# C¨Ó,ˆ‰Ø�
‰
”4Ð~˜e°#±)¸dÑ2BÈÈÐVYÑ~ÖptÐ_eÐgkÑ^lÐz|Ñ~Öñ  ô ˆs�| U°e×6hÐ?hÐjr÷  kpð  wpð  rxÜÐ]ÐehÑiókð kr   c                 óÌ   • [        XSXESSU[        U VVV	V
s/ s H  u  pxpš[        XxXšS9PM     sn
n	nnU VVs/ s H  u  p·[        X·S9PM     snnS95	      $ s  sn
n	nnf s  snnf )z7bins: [(id, label, ar, emoji)], items: [(text, bin_id)]Úsortu(   Je mets chaque mot dans la bonne boÃ®te.u6   Ø¶Ø¹ ÙƒÙ„ ÙƒÙ„Ù…Ø© Ù�ÙŠ Ø§Ù„ØµÙ†Ø¯ÙˆÙ‚ Ø§Ù„Ù…Ù†Ø§Ø³Ø¨.)r   ÚlabelrR   rq   )r:   Úbin)Úbinsr&   rs   )r   r   rš   r&   r   r   r   rB   ÚlrL   Úer_   s               r   r—   r—   e   sŠ   € äˆs�v˜uÐ0Zð  ]Uð  W]ÜÉtÖTÊtÁÀÀqœ$ !°Ô<ÉtÔTñ  ~Cô  ]Dò  ~CÑuyÐuvÔ]aÐghÔ]pñ  ~Cò  ]Dñ  EóFð FùÝTùó  ]Ds
   ˜A"¹A  c                 ó†   • [        XSX4SSS[        U VVVs/ s H  u  pVn[        SXVUSUS9PM     snnnS95	      $ s  snnnf )	z;cards: [(French rule / example, Arabic explanation, emoji)]Ú
flashcardsu.   Je lis la rÃ¨gle et l'exemple, puis j'Ã©coute.uA   Ø§Ù‚Ø±Ø£ Ø§Ù„Ù‚Ø§Ø¹Ø¯Ø© ÙˆØ§Ù„Ù…Ø«Ø§Ù„ ÙˆØ§Ø³ØªÙ…Ø¹ Ø¥Ù„ÙŠÙ‡Ù…Ø§.é
   ÚwordN)Úkindr:   rR   rq   rr   Útts)Úcardsrs   )r   r   r£   r   r   r4   rL   rœ   s           r   Úrulesr¤   k   sZ   € äˆs�| UÐ6fð  ilð  npÜÑdiÕjÒdiÑY`ÐYZÐ_`œ4 V°!ÀÈÐRSÔTÑdiÓjÑkómð mùÜjs   —< c                 ó   • [        XX#XFUSUS9	$ )Nr   )	r   Úcoder   r   Úiconr¡   ÚextraÚchapterÚ
activitiesr   )r   r¦   r   r   r§   Úactsr¡   r¨   s           r   Úlessonr¬   q   s$   € Ü�3¨ÈÐ_dÐnoð  }Añ  Bð  Br   c                 óP  • [         R                  " U  SU 35      n/ nU Hl  nUR                  S5      n	U	SS n
[        U	5      S:”  a,  X©:X  a'  UR	                  U
5        [        U	5      S:”  a  X©:X  a  M'  UR                  [        X¨S95        Mn     [        XSX4SSU[        US	95	      $ )
zWWord-order puzzle: each sentence is split on spaces and shuffled (never left in order).r
   Ú Nr7   )r„   r   Ú
word_orderz;Je touche les mots dans le bon ordre pour former la phrase.uP   Ø§Ù„Ù…Ø³ Ø§Ù„ÙƒÙ„Ù…Ø§Øª Ø¨Ø§Ù„ØªØ±ØªÙŠØ¨ Ø§Ù„ØµØ­ÙŠØ­ Ù„ØªÙƒÙˆÙ‘Ù† Ø§Ù„Ø¬Ù…Ù„Ø©.r%   )rV   rW   r'   r*   rZ   r+   r   r   )r   r   Ú	sentencesr   r   r   r\   r�   ÚsÚwsÚshs              r   Úorderr´   u   s¤   € ä
�-Š-˜3˜%˜q  ˜Ó
%€CØ
€CÛˆØ�W‰W�S‹\ˆØ‘ˆUˆÜ�"‹g˜‹k˜b›hØ�K‰K˜ŒOô �"‹g˜‹k˜b�hà�
‰
”4˜bÑ+Ö,ñ ô ˆs�| UÐ6sØaÐciÔkoÐvyÑkzó|ð |r   c                 óz   • [        XU VVVs/ s H  u  pgo†SS/U(       a  SOSSU4PM     snnnX4U5      $ s  snnnf )z?items: [(statement, True/False, why_ar shown after the answer)]ÚVraiÚFauxN)r{   )	r   r   r&   r   r   r   r±   Úokrx   s	            r   Úvfr¹   ƒ   sN   € ä�#ÑhmÕnÒhmÑZdÐZ[Ðad ¨Ð/¾2±À6È4ÐQTÓUÑhmÓnÐpuð  BHó  Ið  IùÔns   �6)zJe conjugueu   Ø£ØµØ±Ù‘Ù� Ø§Ù„Ø£Ù�Ø¹Ø§Ù„)u-   Je complÃ¨te avec le verbe au temps demandÃ©.u5   Ø§ÙƒØªØ¨ Ø§Ù„Ù�Ø¹Ù„ Ù…ØµØ±Ù‘Ù�Ø§Ù‹ Ù�ÙŠ Ø§Ù„Ù�Ø±Ø§Øº.r$   )zJe transformeu   Ø£Ø­ÙˆÙ‘Ù„ Ø§Ù„Ø¬Ù…Ù„r$   )zQuel temps ?rd   é   )u   DÃ©fi chrono : quel temps ?u*   ØªØ­Ø¯Ù‘ÙŠ Ø§Ù„Ø³Ø±Ø¹Ø©: Ù…Ø§ Ø§Ù„Ø²Ù…Ù†ØŸé<   rŸ   NNN)zJe relieu   Ø£ØµÙ„rº   )u   Je choisis la bonne rÃ©ponseu(   Ø£Ø®ØªØ§Ø± Ø§Ù„Ø¥Ø¬Ø§Ø¨Ø© Ø§Ù„ØµØ­ÙŠØ­Ø©rº   )zChasse aux erreursu   Ø§ÙƒØªØ´Ù� Ø§Ù„Ø®Ø·Ø£r$   FNN)zJe rangeu
   Ø£ØµÙ†Ù‘Ù�r$   )z
Je retiensu   Ø£ØªØ°ÙƒÙ‘Ø± Ø§Ù„Ù‚Ø§Ø¹Ø¯Ø©)r©   F)zJe remets les mots en ordreu   Ø£Ø±ØªÙ‘Ø¨ Ø§Ù„ÙƒÙ„Ù…Ø§Øªrº   )zVrai ou faux ?u   ØµÙˆØ§Ø¨ Ø£Ù… Ø®Ø·Ø£ØŸrº   )Ú__doc__rV   rY   r,   r)   r   r5   rC   rE   rb   rm   ro   r{   r•   r—   r¤   r¬   r´   r¹   rJ   r   r   Ú<module>r½      s˜   ðñó ò 
J€Ø(Ð:Yð  iDð  YvØ ;ÐVqð  KWñX€â
G€òEôeôcôxô
	`ôGôZô
=ôkôFômôBô|õIr   