§
   ~û7u )­^ã                   óâ  — d Z ddlZddlZg d¢ZddddddddœZd	d
ddddddœZdddœZddddœddddœdœZ ej        d¦  «         ej        d¦  «         ej        d¦  «        gZ	h d£Z
h d£Z ej        d¦  «        Z ej        d¦  «        Zh d£Z ej        d¦  «        Ze
ez  ez  h d £z  Zh d!£Zd"„ Zd#„ Zd5d$„Zd%„ Zd6d&„Zd'„ Zd7d(„Zd)„ Zd*„ Zd+„ Zd,„ Zd-„ Zd.„ Zd/„ Zd8d0„Z d8d1„Z!d2„ Z"d3„ Z#d4„ Z$dS )9uä  One ranking for every place that shows or plays search results.

Pure Python (no Kodi imports) so scripts/search_harness can run it offline.

    target = make_target('episode', ['PÅ™Ã¡telÃ©', 'Friends'], season=1, episode=2)
    ranked = rank(files, target, preferred_quality='1080p')
    first = pick(ranked)          # None when nothing is the requested title

Only files that are the requested movie/episode are returned (never another
title); manual search ('any') keeps everything. Order: language (CZ dub > CZ subs
> SK dub > SK subs > other) > quality (the preferred one, else the best) >
votes > size. The dialog rows, the chips and autoplay all read the same
`info` dict that parse() attaches, so what is shown is what is ranked.
é    N)ÚSDÚ360pÚ480pÚ720pÚ1080pÚ4Ké   é   é   é   )ÚCZ_DUBÚCZÚCZ_SUBÚSK_DUBÚSK_SUBÚENÚOTHERz	CZ dabingr   z
CZ titulkyz	SK dabingz
SK titulkyr   Ú éd   é<   ©ÚmovieÚepisodeiÜ  iô  i,  )r   r   r   z\bs(\d{1,2}) ?e(\d{1,3})\bz\b(\d{1,2})x(\d{2,3})\bz!\bserie (\d{1,2}) dil (\d{1,3})\b>   ÚczÚczeÚczenÚczskÚceskyÚczdabÚczdubÚczechÚczengÚczsubÚcztitÚcestinaÚczaudioÚczdabing>   ÚskÚskdabÚskdubÚsksubÚsktitÚslovakÚskdabingÚ	slovenskyzf\b(dab|dabing|dabingem|dabovane|dub|dubbing|audio|czaudio|czdab|czdabing|czdub|skdab|skdabing|skdub)\bz]\b(tit|titulky|titulkama|titulek|sub|subs|subti|subtitle|subtitles|cztit|czsub|sktit|sksub)\b>   ÚenÚengÚenglishz^(19[2-9]\d|20[0-4]\d)$><   Ú4kÚbdÚdlÚdvÚhdÚsdÚaacÚac3ÚavcÚaviÚdabÚdtsÚdubÚdvbÚdvdÚfhdÚhdrÚhlgÚmkvÚmp4ÚsubÚtitÚuhdÚwebr   r   Ú576pr   ÚdivxÚh264Úh265ÚhdtvÚhevcÚuhdrÚx264Úx265ÚxvidÚ1080ir   Ú2160pÚbdripÚbrripÚhdr10ÚmultiÚremuxÚtvripÚwebdlÚblurayÚdabingÚdvdripÚfullhdÚproperÚwebripÚtitulkyÚunratedÚcompleteÚextendedÚmultidubÚ	directorsÚ
remastered>   ÚaÚtvÚakaÚcutÚtheÚfilmÚimaxÚopenÚfinalÚmatter   ÚuncutÚverzeÚserialÚverziaÚeditionÚspecialÚ	predlzenaÚ	rozsirenaÚ
theatricalÚprodlouzenac                 óâ   — t          j        d| pd¦  «        } d                     d„ | D ¦   «         ¦  «                             ¦   «         } t	          j        dd| ¦  «                             ¦   «         S )u?   Lowercase ASCII words: 'PÅ™Ã¡telÃ©.S01E02' -> 'pratele s01e02'.ÚNFKDr   c              3   óB   K  — | ]}t          j        |¦  «        °|V — Œd S ©N)ÚunicodedataÚ	combining)Ú.0Úchs     ú`/Users/chudy/Library/Application Support/Kodi/addons/plugin.video.milionar/wcs/search/ranking.pyú	<genexpr>znorm.<locals>.<genexpr>7   s2   è è € ÐFÐF˜"­KÔ,AÀ"Ñ,EÔ,EÐF�2ÐFÐFÐFÐFÐFÐFó    z
[^a-z0-9]+ú )rƒ   Ú	normalizeÚjoinÚlowerÚrerG   Ústrip)Útexts    r‡   Únormr‘   4   sd   € åÔ  ¨¨°Ñ4Ô4€DØ�7Š7ÐFÐF ÐFÑFÔFÑFÔF×LÒLÑNÔN€DÝŒ6�-  dÑ+Ô+×1Ò1Ñ3Ô3Ð3r‰   c                 ó~  — |                       dd¦  «        }t          |t          z  ¦  «        pd|v }t          |t          z  ¦  «        }t          t                               | ¦  «        ¦  «        pd|v }t          t                               | ¦  «        ¦  «        }|r
|rdS |rdndS |r|r|sdndS |t          z  rd	S d
S )NrŠ   r   r&   r   r   r   r   r   r   r   )ÚreplaceÚboolÚ_CZÚ_SKÚ_DUBÚsearchÚ_SUBÚ_EN)ÚnÚtokensÚcompactÚhas_czÚhas_skr?   rG   s          r‡   Ú	_languager    ;   sÏ   € Ø�iŠi˜˜RÑ Ô €GÝ�&�3‘,ÑÔÐ7 9°Ð#7€FÝ�&�3‘,ÑÔ€FÝ
�t�{Š{˜1‰~Œ~Ñ
Ô
Ð
6 )¨wÐ"6€CÝ
�t�{Š{˜1‰~Œ~Ñ
Ô
€CØð )Øð 	Ø�8ØÐ(ˆxˆx DÐ(Øð 9ØÐ8 sÐ8ˆxˆx°Ð8Ø•�|ð ØˆtØˆ7r‰   c                 ó  — t          j        d| ¦  «        rdS t          j        d| ¦  «        rdS t          j        d| ¦  «        s|ddhz  r|dd	hz  s|d
k    rdS t          j        d| ¦  «        rdS t          j        d| ¦  «        rdS dS )Nz\b2160|\b(4k|uhd|uhdr|uhdtv)\br   z\b1080|\b(fhd|fullhd|full hd)\br   z\b720 ?pr7   rO   rT   rL   r<   r   z\b(480|576) ?pr   z\b360 ?pr   r   )rŽ   r˜   )r›   rœ   Úexts      r‡   Ú_qualityr£   L   sµ   € å	„yÐ2°AÑ6Ô6ð ØˆtÝ	„yÐ3°QÑ7Ô7ð ØˆwÝ	„y�˜aÑ Ô ð  V¨t°V¨nÑ%<ð ÀVÈvÐW]ÐN^ÑE^ð ÐcfÐjoÒcoÐcoØˆvÝ	„yÐ" AÑ&Ô&ð ØˆvÝ	„y�˜aÑ Ô ð ØˆvØˆ4r‰   c                 óF   — |dv rdnd}| h d£z  r|dz  }| h d£z  r|dz  }|S )zbTie-breaker within the same language and quality: modern container, progressive, not a TV/cam rip.)rE   rF   é   r   >   r@   rO   rU   r\   Úsatrip>   ÚtcÚtsÚcamÚhdcamÚcamripÚtelesyncr   © )rœ   r¢   Úscores      r‡   Ú_polishr¯   [   sT   € à˜Ð&Ð&ˆAˆA¨A€EØÐ;Ð;Ð;Ñ;ð Ø�‰
ˆØÐBÐBÐBÑBð Ø�‰
ˆØ€Lr‰   c                 ó”  — t          | ¦  «        }t          |                     ¦   «         ¦  «        }d| pdv r.|                      dd¦  «        d                              ¦   «         nd}dx}x}x}}t
          D ]Š}	|	                     |¦  «        }
|
rqt          |
                     d¦  «        ¦  «        t          |
                     d¦  «        ¦  «        |
 	                    ¦   «         |
 
                    ¦   «         f\  }}}} nŒ‹	 t          |pd¦  «        }n# t          t          f$ r d}Y nw xY w|||t          ||¦  «        |�t          ||d…         d¦  «        ndd„ t          j        d	|¦  «        D ¦   «         t!          |||¦  «        t#          ||¦  «        d
|v t%          ||¦  «        ||dz  |dv r|                     ¦   «         nddœS )zFEverything the ranking and the chips need to know about one file name.ú.r   r¥   éÿÿÿÿNr   r   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r­   )Úint)r…   Úys     r‡   ú
<listcomp>zparse.<locals>.<listcomp>v   s   € ÐRÐRÐR •c˜!‘f”fÐRÐRÐRr‰   z\b(19[2-9]\d|20[0-4]\d)\br[   i   )rE   rF   r<   ÚmovÚwmvr¨   Úm4v)r‘   Úseasonr   ÚheadÚtailÚyearsÚqualityÚlangr[   ÚpolishÚsizeÚsize_mbÚformat)r‘   ÚsetÚsplitÚrsplitr�   Ú_SE_PATTERNSr˜   r´   ÚgroupÚstartÚendÚ	TypeErrorÚ
ValueErrorÚ_headrŽ   Úfindallr£   r    r¯   Úupper)ÚnamerÁ   r›   rœ   r¢   rº   r   Úse_posÚse_endÚpatternÚmatchs              r‡   ÚparserÕ   e   sê  € åˆT‰
Œ
€AÝ�—’‘”‰^Œ^€FØ-0°T°Z¸RÐ-@Ð-@ˆ$�+Š+�c˜1Ñ
Ô
˜bÔ
!×
'Ò
'Ñ
)Ô
)Ð
)Àb€CØ)-Ð-€FÐ-ˆWÐ-�v Ýð ð ˆØ—’˜qÑ!Ô!ˆØð 	Ý.1°%·+²+¸a±.´.Ñ.AÔ.AÅ3ÀuÇ{Â{ÐSTÁ~Ä~ÑCVÔCVÐX]×XcÒXcÑXeÔXeÐgl×gpÒgpÑgrÔgrÐ.rÑ+ˆF�G˜V VØˆEð	ðÝ�4�9˜1‰~Œ~ˆˆøÝ•zÐ"ð ð ð Øˆˆˆðøøøà °GÅUÈ1ÈfÑEUÔEUØ/5Ð/A•E˜!˜F˜G˜Gœ* dÑ+Ô+Ð+ÀrØRÐR¥b¤jÐ1MÈqÑ&QÔ&QÐRÑRÔRÝ  6¨3Ñ/Ô/½À1ÀfÑ9MÔ9MØ Ð&µ'¸&À#Ñ2FÔ2FÐPTÐaeÐjuÑavØ%(Ð,\Ð%\Ð%\�c—i’i‘k”k�kÐbdðfð fð fs   ÄD ÄD*Ä)D*c                 óD   — t                                | d         d¦  «        S )Nr¿   r   )Ú	LANG_CHIPÚget)Úinfos    r‡   Ú	lang_chiprÚ   |   s   € Ý�=Š=˜˜fœ rÑ*Ô*Ð*r‰   c                 ó8  — g }|D ]R}t          |¦  «        }||                     d¦  «        r
|dd…         ndfD ]}|r||vr|                     |¦  «         ŒŒS	 |r$t          t	          |¦  «        dd…         ¦  «        nd}n# t
          $ r d}Y nw xY w| ||||dœS )zDkind: 'movie', 'episode' or 'any' (manual search: titles = [query]).zthe r
   Nr   )ÚkindÚtitlesÚyearrº   r   )r‘   Ú
startswithÚappendr´   ÚstrrÌ   )	rÜ   rÝ   rÞ   rº   r   ÚvariantsÚtitleÚtÚvs	            r‡   Úmake_targetræ   €   sá   € à€HØð #ð #ˆÝ�‰KŒKˆØ˜aŸlšl¨6Ñ2Ô2Ð:�Q�q�r�r”U�U¸Ð;ð 	#ð 	#ˆAØð #�Q˜hÐ&Ð&Ø—’ Ñ"Ô"Ð"øð	#ðØ%)Ð3�s•3�t‘9”9˜R˜a˜R”=Ñ!Ô!Ð!¨tˆˆøÝð ð ð Øˆˆˆðøøøà H°dÀfÐY`ÐaÐaÐas   Á(B ÂBÂBc                 óà  — |�
| d|…         n|                       ¦   «         }t          |¦  «        D ]6\  }}|r/|t          v st                               |¦  «        r|d|…         } nŒ7|rr|d                              ¦   «         rXt          |d         ¦  «        dk    r?|dd…         }|r3|d                              ¦   «         rt          |d         ¦  «        dk    °?d                     |¦  «        S )zfThe title part of a name: text before SxxEyy, else before the first year/quality/language/source word.Nr   r   r¥   rŠ   )rÅ   Ú	enumerateÚ_STOPÚ_YEARrÔ   ÚisdigitÚlenrŒ   )r›   rÑ   ÚwordsÚiÚwords        r‡   rÍ   rÍ   �   s÷   € à!Ð-ˆQˆw�ˆwŒZˆZ°1×;Ò;Ñ=Ô=€EÝ˜UÑ#Ô#ð ð ‰ˆˆ4Øð 	�$�%�-�-¥5§;¢;¨tÑ#4Ô#4�-Ø˜"˜1˜"”IˆEØˆEøØ
ð �E˜!”H×$Ò$Ñ&Ô&ð ­3¨u°Q¬x©=¬=¸AÒ+=Ð+=Ø�a�b�b”	ˆð ð �E˜!”H×$Ò$Ñ&Ô&ð ­3¨u°Q¬x©=¬=¸AÒ+=Ð+=à�8Š8�E‰?Œ?Ðr‰   c                 ó<  ‡— d| z   dz   }d}t          |t          d¬¦  «        D ]*}d|z   dz   |v r|                     d|z   dz   d¦  «        }d}Œ+|rt          j        d„ |D ¦   «         Ž nt          Š|o,t          ˆfd„|                     ¦   «         D ¦   «         ¦  «        S )zcThe text is one or more of the titles and nothing else (apart from filler and words of the titles).rŠ   FT©ÚkeyÚreversec              3   ó>   K  — | ]}|                      ¦   «         V — Œd S r‚   )rÅ   )r…   rå   s     r‡   rˆ   z_only_title.<locals>.<genexpr>£   s*   è è € Ð:Ð:¨A˜aŸgšg™iœiÐ:Ð:Ð:Ð:Ð:Ð:r‰   c              3   óJ   •K  — | ]}|‰v o|                      ¦   «          V — Œd S r‚   )rë   )r…   ÚwÚalloweds     €r‡   rˆ   z_only_title.<locals>.<genexpr>¤   s6   øè è € ÐRÐR¸a˜˜g˜Ð9¨a¯iªi©k¬k¨/ÐRÐRÐRÐRÐRÐRr‰   )Úsortedrì   r“   Ú_FILLERÚunionÚallrÅ   )r�   râ   ÚpaddedÚfoundrå   r÷   s        @r‡   Ú_only_titlerþ   ›   s½   ø€ à�4‰Z˜#Ñ€FØ€EÝ�H¥#¨tÐ4Ñ4Ô4ð ð ˆØ�‰7�S‰=˜FÐ"Ð"Ø—^’^ C¨!¡G¨c¡M°3Ñ7Ô7ˆFØˆEøØ?GÐT�gŒmÐ:Ð:°Ð:Ñ:Ô:Ð;Ð;ÍW€GØÐR•SÐRÐRÐRÐRÀ6Ç<Â<Á>Ä>ÐRÑRÔRÑRÔRÐRr‰   c                 óÈ  ‡ ‡‡— ‰ d         }|g}|                      dd¦  «        }t          |¦  «        dk    r;t                               |d         ¦  «        r|                     |d         ¦  «         t          ˆfd„|D ¦   «         ¦  «        rdS |s3‰ d         r+d‰ d         z   dz   Št          ˆfd„‰D ¦   «         ¦  «        rdS t          ˆ fd	„‰D ¦   «         ¦  «        rdS dS )
z_2 = the title part is only the title(s), 1 = title with other words or elsewhere, 0 = no title.r»   rŠ   r¥   r   r   c              3   ó8   •K  — | ]}t          |‰¦  «        V — Œd S r‚   )rþ   )r…   Úhrâ   s     €r‡   rˆ   z"_title_position.<locals>.<genexpr>®   s-   øè è € Ð
3Ð
3¨�;�q˜(Ñ#Ô#Ð
3Ð
3Ð
3Ð
3Ð
3Ð
3r‰   r¼   c              3   óN   •K  — | ]}‰                      d |z   d z   ¦  «        V — Œ dS )rŠ   N)rß   )r…   rå   r¼   s     €r‡   rˆ   z"_title_position.<locals>.<genexpr>³   s7   øè è € Ð@Ð@°!ˆt�Š˜s Q™w¨™}Ñ-Ô-Ð@Ð@Ð@Ð@Ð@Ð@r‰   c              3   ó~   •K  — | ]7}t          j        d t          j        |¦  «        z   d z   ‰d         ¦  «        V — Œ8dS )z\br‘   N)rŽ   r˜   Úescape)r…   rå   rÙ   s     €r‡   rˆ   z"_title_position.<locals>.<genexpr>µ   sE   øè è € Ð
SÐ
SÀQ�2Œ9�U�RœY q™\œ\Ñ)¨EÑ1°4¸´<Ñ@Ô@Ð
SÐ
SÐ
SÐ
SÐ
SÐ
Sr‰   )rÅ   rì   rê   rÔ   rà   Úany)rÙ   râ   r»   ÚheadsÚfirstr¼   s   ``   @r‡   Ú_title_positionr  §   s
  øøø€ à�Œ<€DØˆF€EØ�JŠJ�s˜AÑÔ€EÝ
ˆ5�z„z�Q‚€�5Ÿ;š; u¨Q¤xÑ0Ô0€Ø�Š�U˜1”XÑÔÐÝ
Ð
3Ð
3Ð
3Ð
3¨UÐ
3Ñ
3Ô
3Ñ3Ô3ð ØˆqØð �D˜”Lð à�T˜&”\Ñ! CÑ'ˆÝÐ@Ð@Ð@Ð@°xÐ@Ñ@Ô@Ñ@Ô@ð 	Ø�1Ý
Ð
SÐ
SÐ
SÐ
SÈ(Ð
SÑ
SÔ
SÑSÔSð ØˆqØˆ1r‰   c                 óB  ‡— t          | ‰d         ¦  «        }‰d         }|dk    r.| d         | d         f‰d         ‰d         fk    rdS |dk    rdndS |dk    rA| d         €|sdS ‰d
         r+| d         r#t          ˆfd„| d         D ¦   «         ¦  «        sdS |S |rdndS )zS2 = the requested title, 1 = probably (title not at the start), 0 = something else.rÝ   rÜ   r   rº   r   r   r¥   r   NrÞ   r½   c              3   óP   •K  — | ] }t          |‰d          z
  ¦  «        dk    V — Œ!dS )rÞ   r¥   N)Úabs)r…   rµ   Útargets     €r‡   rˆ   zmatch_level.<locals>.<genexpr>Å   s;   øè è € Ð7lÐ7lÐYZ½¸AÀÀvÄÑ<NÑ8OÔ8OÐSTÒ8TÐ7lÐ7lÐ7lÐ7lÐ7lÐ7lr‰   )r  r  )rÙ   r  rã   rÜ   s    `  r‡   Úmatch_levelr  º   sá   ø€ å˜D &¨Ô"2Ñ3Ô3€EØ�&Œ>€DØˆyÒÐØ�ŒN˜D œOÐ,°¸Ô1AÀ6È)ÔCTÐ0UÒUÐUØ�1Ø˜Q’J�Jˆqˆq AÐ%Øˆw‚€Ø�Œ>Ð%¨UÐ%Ø�1Ø�&Œ>ð 	˜d 7œmð 	µCÐ7lÐ7lÐ7lÐ7lÐ^bÐcjÔ^kÐ7lÑ7lÔ7lÑ4lÔ4lð 	Ø�1ØˆØÐˆ1ˆ1˜1Ðr‰   c                 óž   — t           |dk    rdnd                              | d         ¦  «        }|r| d         r| d         |k     rdS | d         S )Nr   r   r¾   rÂ   r   )ÚBELIEVABLE_MBrØ   )rÙ   rÜ   Úfloors      r‡   Ú_effective_qualityr  Ë   s]   € Ý t¨yÒ'8Ð'8˜)˜)¸gÔF×JÒJÈ4ÐPYÌ?Ñ[Ô[€EØð ��i”ð  T¨)¤_°uÒ%<Ð%<ØˆtØ�	Œ?Ðr‰   c                 ó°   — t                                | ¦  «        }|r	|t           vr|S t                                |¦  «        }||k    rdS ||k     rd|z   n| S )zKPreferred quality first, then lower ones (closest first), then higher ones.é   é
   )Ú	QUALITIESÚindex)r¾   Ú	preferredÚqÚps       r‡   Ú_quality_keyr  Ò   sa   € å�Š˜Ñ Ô €AØð ˜	­Ð2Ð2ØˆÝ�Š˜	Ñ"Ô"€AØˆA‚v€vØˆrØ˜’U�Uˆ2�‰6ˆ6  Ð"r‰   c                 óÆ   — 	 t          |                      d¦  «        pd¦  «        t          |                      d¦  «        pd¦  «        z
  S # t          t          f$ r Y dS w xY w)NÚpositive_votesr   Únegative_votes)r´   rØ   rË   rÌ   )Úitems    r‡   Ú_votesr  Ý   sn   € ðÝ�4—8’8Ð,Ñ-Ô-Ð2°Ñ3Ô3µc¸$¿(º(ÐCSÑ:TÔ:TÐ:YÐXYÑ6ZÔ6ZÑZÐZøÝ•zÐ"ð ð ð Øˆqˆqðøøøs   ‚AA ÁA ÁA c                 ó  — | d         }|d         }| d         t           |d                  t          t          ||¦  «        |¦  «        |d         |d         t          t	          t          | ¦  «        d¦  «        d¦  «        |d	         fS )
NrÙ   rÜ   rÔ   r¿   rÀ   r[   éýÿÿÿr   rÁ   )Ú	LANG_RANKr  r  ÚminÚmaxr  )r  r  Úpreferred_qualityrÙ   rÜ   s        r‡   Úsort_keyr&  ä   sz   € Ø�Œ<€DØ�&Œ>€DØ�ŒM�9 T¨&¤\Ô2ÝÕ+¨D°$Ñ7Ô7Ð9JÑKÔKØ�ŒN˜D œM­3­sµ6¸$±<´<ÀÑ/DÔ/DÀaÑ+HÔ+HÈ$ÈvÌ,ðXð Xr‰   c                 óÄ  ‡‡— ‰d         dv }t           ‰d         dk    rdnd         }g }t          ¦   «         }| D �]	}|                     d¦  «        p|                     d¦  «        }||v rŒ2|                     |¦  «         t	          |¦  «        }t          |                     dd¦  «        |                     d¦  «        ¦  «        |d	<   |d	         d
         r|d	         d
         |k     rŒ±|                     d¦  «        dk    rdnt          |d	         ‰¦  «        |d<   |r|d         dk     rŒô|                     |¦  «         �Œ|                     ˆˆfd„d¬¦  «         |S )z°New list: files with 'info' and 'match' added, best first. Samples and files of any other
    movie/series/episode are dropped (manual search keeps all). Input is not modified.rÜ   r   r   r   ÚidentrÐ   r   rÁ   rÙ   rÂ   ÚproviderÚkraskar   rÔ   c                 óT   •— t          | ‰‰¦  «        |                      d¦  «        pdfS )Nr(  r   )r&  rØ   )Úitr%  r  s    €€r‡   ú<lambda>zrank.<locals>.<lambda>  s*   ø€ ¥¨¨VÐ5FÑ GÔ GÈÏÊÐPWÉÌÐI^Ð\^Ð_€ r‰   Trñ   )	ÚMIN_SIZE_MBrÄ   rØ   ÚaddÚdictrÕ   r  rà   Úsort)	Úfilesr  r%  ÚstrictÚmin_mbÚrankedÚseenr  rò   s	    ``      r‡   Úrankr7  ì   st  øø€ ð �FŒ^Ð3Ð3€FÝ f¨V¤n¸	Ò&AÐ&A˜˜ÀwÔO€FØ€FÝ‰5Œ5€DØð ñ ˆØ�hŠh�wÑÔÐ3 4§8¢8¨FÑ#3Ô#3ˆØ�$ˆ;ˆ;ØØ�Š�‰ŒˆÝ�D‰zŒzˆÝ˜TŸXšX f¨bÑ1Ô1°4·8²8¸FÑ3CÔ3CÑDÔDˆˆV‰Ø�Œ<˜	Ô"ð 	 t¨F¤|°IÔ'>ÀÒ'GÐ'GØà!ŸXšX jÑ1Ô1°XÒ=Ð=˜˜Å;ÈtÐTZÌ|Ð]cÑCdÔCdˆˆW‰Øð 	�d˜7”m aÒ'Ð'ØØ�Š�dÑÔÐÑØ
‡K‚KÐ_Ð_Ð_Ð_Ð_Ðim€KÑnÔnÐnØ€Mr‰   c                 ó   — | r| d         ndS )z?What autoplay should play: the first row the dialog would show.r   Nr­   )r5  s    r‡   Úpickr9    s   € àÐ(ˆ6�!Œ9ˆ9 DÐ(r‰   c                 óæ   ‡‡— ˆˆfd„| D ¦   «         }| r8| d         r0|                      d                     | d         ‰‰¦  «        ¦  «         t          t                               |¦  «        ¦  «        S )Nc                 óB   •— g | ]}|¯d                       |‰‰¦  «        ‘ŒS )z{} S{:02d}E{:02d})rÃ   )r…   rä   r   rº   s     €€r‡   r¶   z#episode_queries.<locals>.<listcomp>  s2   ø€ ÐSÐSÐSÀ!ÐQRÐSÐ"×)Ò)¨!¨V°WÑ=Ô=ÐSÐSÐSr‰   r   z{} {}x{:02d})rà   rÃ   Úlistr0  Úfromkeys)rÝ   rº   r   Úqueriess    `` r‡   Úepisode_queriesr?  
  sw   øø€ ØSÐSÐSÐSÐSÀvÐSÑSÔS€GØð J�&˜”)ð JØ�Š�~×,Ò,¨V°A¬Y¸ÀÑHÔHÑIÔIÐIÝ•—’˜gÑ&Ô&Ñ'Ô'Ð'r‰   c                 ón   ‡— ˆfd„| D ¦   «         }t          t                               |¦  «        ¦  «        S )Nc                 ód   •— g | ],}|¯d                       |‰¦  «                             ¦   «         ‘Œ-S )z{} {})rÃ   r�   )r…   rä   rÞ   s     €r‡   r¶   z!movie_queries.<locals>.<listcomp>  s8   ø€ ÐDÐDÐD°1À!ÐDˆw�~Š~˜a Ñ&Ô&×,Ò,Ñ.Ô.ÐDÐDÐDr‰   )r<  r0  r=  )rÝ   rÞ   r>  s    ` r‡   Úmovie_queriesrB    s6   ø€ ØDÐDÐDÐD¸ÐDÑDÔD€GÝ•—’˜gÑ&Ô&Ñ'Ô'Ð'r‰   )r   )r   )r   NNr‚   )%Ú__doc__rŽ   rƒ   r  r"  r×   r.  r  ÚcompilerÇ   r•   r–   r—   r™   rš   rê   ré   rù   r‘   r    r£   r¯   rÕ   rÚ   ræ   rÍ   rþ   r  r  r  r  r  r&  r7  r9  r?  rB  r­   r‰   r‡   ú<module>rE     sÃ  ððð ð 
€	€	€	Ø Ð Ð Ð à9Ð9Ð9€	Ø ¨Q¸!ÀqÐPQÐ\]Ð^Ð^€	Ø"¨$¸,ÐR]Ø#¨4¸"ð>ð >€	ð ¨Ð+Ð+€à!%°¸SÐAÐAØ#&°¸bÐAÐAðCð C€ð �”
Ð8Ñ9Ô9Ø�”
Ð5Ñ6Ô6Ø�”
Ð?Ñ@Ô@ðB€ð'ð 'ð '€àSÐSÐS€Ø€r„zð -ñ .ô .€à€r„zÐrÑsÔs€ØÐÐ€ØˆŒ
Ð-Ñ.Ô.€Øˆc‰	�C‰ð Xð Xð Xñ 	X€ðqð qð q€ð4ð 4ð 4ðð ð ð"ð ð ð ðð ð ðfð fð fð fð.+ð +ð +ðbð bð bð bð	ð 	ð 	ð	Sð 	Sð 	Sðð ð ð&ð ð ð"ð ð ð#ð #ð #ðð ð ðXð Xð Xð Xðð ð ð ð2)ð )ð )ð
(ð (ð (ð(ð (ð (ð (ð (r‰   