
    `if                     T   S SK r S SKJr  S SKJr  S SKJr  S SKJr  S SK	J
r
  S SKJr  S SKJr  S S	KJr  S
rSrSr\" 5       R)                  \5      r\S-   rSrSrSrSrSrSrSrSrSrSr Sr!Sr"Sr#Sr$Sr%Sr&Sr'Sr(S  r)S! r*S" r+S# r,S$ r-S% r.S& r/S' r0S( r1S/S) jr2S* r3S+ r4S, r5S- r6S. r7g)0    N)
cHosterGui)cGui)cInputParameterHandler)cOutputParameterHandler)cRequestHandler)cParser)siteManager)cUtil
darkiworld
DarkiWorldu   Séries en illimitézapi/v1/download/)z'movies?order=popularity:desc?type=movie
showMovies)ztrending-movies?type=movier   )z2movies?order=popularity:desc&filters=%s?type=movieshowMovieGenres)TshowMenuTvShows)z(series?order=popularity:desc?type=seriesr   )z3series?order=popularity:desc&filters=%s?type=seriesshowTvGenres)TshowMenuAnimes)z(animes?order=popularity:desc?type=animesr   )z3animes?order=popularity:desc&filters=%s?type=animesshowAnimGenres)TshowMenuDivers)zqdocs?filters=W3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOls2XSwib3BlcmF0b3IiOiJoYXNBbGwifV0&order=popularity:desc?type=movier   )zqdocs?filters=W3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOls2XSwib3BlcmF0b3IiOiJoYXNBbGwifV0&order=popularity:desc?type=serier   )z~docs?filters=W3sia2V5IjoiY2F0ZWdvcnkiLCJ2YWx1ZSI6NzYsIm9wZXJhdG9yIjoiPSIsInZhbHVlS2V5Ijo3Nn1d&order=popularity:desc?type=movier   )z~docs?filters=W3sia2V5IjoiY2F0ZWdvcnkiLCJ2YWx1ZSI6NzgsIm9wZXJhdG9yIjoiPSIsInZhbHVlS2V5Ijo3OH1d&order=popularity:desc?type=serier   )zsearch/
showSearch)zsearch/%s?type=seriesr   )zsearch/%s?type=animesr   )zsearch/%s?type=docr   c                      [        5       n [        5       nU R                  [        SSSU5        U R                  [        SSSU5        U R                  [        SSS	U5        U R	                  5         g )
Nr   u   Sériesz	films.pngr   	Japanimesz
animes.pngr   Autresdoc.png)r   r   addDirSITE_IDENTIFIERsetEndOfDirectoryoGuioOutputParameterHandlers     J/home/kodi/.kodi/addons/plugin.video.vstream/resources/sites/darkiworld.pyloadr    3   s`    6D57KK!2I{LcdKK!1;NefKK!18YH_`    c                     [        5       n [        5       nUR                  S[        S   5        U R	                  [
        [        S   SSU5        UR                  S[        S   5        U R	                  [
        [        S   SSU5        UR                  S[        S   5        U R	                  [
        [        S   SS	U5        U R                  5         g )
NsiteUrlr         Nouveautésnews.png
Populaireszpopular.png
Par genres
genres.png)	r   r   addParameter
MOVIE_NEWSr   r   MOVIE_VIEWSMOVIE_GENRESr   r   s     r   showMenuMoviesr.   =   s    6D57 ((JqMBKKAzKbc((KNCKKQ}Nef((LODKKa,Nefr!   c                     [        5       n [        5       nUR                  S[        S   5        U R	                  [
        [        S   SSU5        UR                  S[        S   5        U R	                  [
        [        S   SSU5        UR                  S[        S   5        U R	                  [
        [        S   SS	U5        U R                  5         g )
Nr#   r   r$   
Rechercherzsearch-series.pngr%   r&   r(   r)   )
r   r   r*   URL_SEARCH_SERIESr   r   
URL_SEARCH
SERIE_NEWSSERIE_GENRESr   r   s     r   r   r   P   s    6D57((4Ea4HIKKA>QSjk((JqMBKKAzKbc((LODKKa,Nefr!   c                     [        5       n [        5       nUR                  S[        S   5        U R	                  [
        [        S   SSU5        UR                  S[        S   5        U R	                  [
        [        S   SSU5        UR                  S[        S   5        U R	                  [
        [        S   SS	U5        U R                  5         g )
Nr#   r   r$   r0   zsearch-animes.pngr%   r&   r(   r)   )
r   r   r*   URL_SEARCH_ANIMSr   r   r2   	ANIM_NEWSANIM_GENRESr   r   s     r   r   r   `   s    6D57((4DQ4GHKKA>QSjk((IaLAKK1}jJab((KNCKKQ|Mder!   c                     [        5       n [        5       nUR                  S[        S   5        U R	                  [
        [        S   SSU5        UR                  S[        S   5        U R	                  [
        [        S   SSU5        UR                  S[        S   5        U R	                  [
        [        S   SS	U5        U R                  5         g )
Nr#   r   r$   r0   zsearch-divers.pngzDocumentaires Seriesr      Télé-Réalitézgenres/Tele-Realite.png)
r   r   r*   URL_SEARCH_MISCr   r   r2   	DOC_SERIEDOC_REALITYr   r   s     r   r   r   p   s    6D57((OA4FGKKA>QSjk
 ((IaLAKK1/EyRij
 ((KNCKKQ1CE^`wxr!   c                      [        5       n U R                  5       nU(       aK  [        5       nUR                  S5      nX1R	                  SS5      -  n[        U5        U R                  5         g g )Nr#    z%20)r   showKeyBoardr   getValuereplacer   r   )r   sSearchTextoInputParameterHandlerr#   sUrls        r   r   r      sd    6D##%K!7!9(11)<,,S%884  r!   c                  d   [        5       n [        5       nUR                  S5      nSS/SS/SS/SS	/S
S/SS/SS/SS/SS/SS/SS/SS/SS/SS/SS/S S!/S"S#/S$S%/S&S'//n[        5       nU H0  u  pVUR	                  SX&-  5        U R                  [        S(XT5        M2     U R                  5         g ))Nr#   ActionCW3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOlsxXSwib3BlcmF0b3IiOiJoYXNBbGwifV0	AnimationCW3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOlszXSwib3BlcmF0b3IiOiJoYXNBbGwifV0AventureCW3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOlsyXSwib3BlcmF0b3IiOiJoYXNBbGwifV0   ComédieCW3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOls0XSwib3BlcmF0b3IiOiJoYXNBbGwifV0DocumentaireCW3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOls2XSwib3BlcmF0b3IiOiJoYXNBbGwifV0DrameCW3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOls3XSwib3BlcmF0b3IiOiJoYXNBbGwifV0FamilleCW3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOls4XSwib3BlcmF0b3IiOiJoYXNBbGwifV0FantastiqueCW3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOls5XSwib3BlcmF0b3IiOiJoYXNBbGwifV0GuerreDW3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOlsxOF0sIm9wZXJhdG9yIjoiaGFzQWxsIn1d
HistoriqueDW3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOlsxMF0sIm9wZXJhdG9yIjoiaGFzQWxsIn1dHorreurDW3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOlsxMV0sIm9wZXJhdG9yIjoiaGFzQWxsIn1dMusiqueDW3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOlsxMl0sIm9wZXJhdG9yIjoiaGFzQWxsIn1d   MystèreDW3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOlsxM10sIm9wZXJhdG9yIjoiaGFzQWxsIn1dRomanceDW3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOlsxNF0sIm9wZXJhdG9yIjoiaGFzQWxsIn1dPolicierCW3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOls1XSwib3BlcmF0b3IiOiJoYXNBbGwifV0zScience-FictionDW3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOlsxNV0sIm9wZXJhdG9yIjoiaGFzQWxsIn1du
   TéléfilmDW3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOlsxNl0sIm9wZXJhdG9yIjoiaGFzQWxsIn1dThrillerDW3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOlsxN10sIm9wZXJhdG9yIjoiaGFzQWxsIn1dWesternDW3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOlsxOV0sIm9wZXJhdG9yIjoiaGFzQWxsIn1dr   r   r   rA   r   r*   addGenrer   r   r   rD   r#   
listeGenrer   sTitlerE   s          r   r   r      s   6D35$--i8Gbc efdede!#hiabcd "ghcd!ghdedeefdede$&lm!ghefde'gJ* 67",,YGo|VU # 	r!   c                  F   [        5       n [        5       nUR                  S5      nSS/SS/SS/SS	/S
S/SS/SS/SS/SS/SS/SS/SS/SS/SS//n[        5       nU H0  u  pVUR	                  SX&-  5        U R                  [        SXT5        M2     U R                  5         g )Nr#   Action & AventureHW3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOlsxOTQ2NF0sIm9wZXJhdG9yIjoiaGFzQWxsIn1drI   rJ   rM   rN   rO   rP   rQ   rR   EnfantsFW3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOlsyMjBdLCJvcGVyYXRvciI6Imhhc0FsbCJ9XQrS   rT   
FeuilletonFW3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOls0NDhdLCJvcGVyYXRvciI6Imhhc0FsbCJ9XQzGuerre & PolitiqueFW3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOls0ODFdLCJvcGVyYXRvciI6Imhhc0FsbCJ9XQr_   r`   r:   FW3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOlsyOTJdLCJvcGVyYXRvciI6Imhhc0FsbCJ9XQrc   rd   Science-Fiction & FantastiqueFW3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOlsxODVdLCJvcGVyYXRvciI6Imhhc0FsbCJ9XQri   rj   r   rk   rm   s          r   r   r      s    6D35$--i8G&(rs efde!#hiabfgcd!ij')qref%'opde24|}degJ 67",,YGo|VU # 	r!   c                  .   [        5       n [        5       nUR                  S5      nSS/SS/SS/SS	/S
S/SS/SS/SS/SS/SS//
n[        5       nU H0  u  pVUR	                  SX&-  5        U R                  [        SXT5        M2     U R                  5         g )Nr#   rq   _W3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOlsyMTFdLCJpc0luYWN0aXZlIjpmYWxzZSwib3BlcmF0b3IiOiJoYXNBbGwifV0rM   \W3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOls0XSwiaXNJbmFjdGl2ZSI6ZmFsc2UsIm9wZXJhdG9yIjoiaGFzQWxsIn1dCrime\W3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOls1XSwiaXNJbmFjdGl2ZSI6ZmFsc2UsIm9wZXJhdG9yIjoiaGFzQWxsIn1drO   \W3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOls2XSwiaXNJbmFjdGl2ZSI6ZmFsc2UsIm9wZXJhdG9yIjoiaGFzQWxsIn1drQ   \W3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOls3XSwiaXNJbmFjdGl2ZSI6ZmFsc2UsIm9wZXJhdG9yIjoiaGFzQWxsIn1drs   _W3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOlsyMjBdLCJpc0luYWN0aXZlIjpmYWxzZSwib3BlcmF0b3IiOiJoYXNBbGwifV0rS   \W3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOls4XSwiaXNJbmFjdGl2ZSI6ZmFsc2UsIm9wZXJhdG9yIjoiaGFzQWxsIn1drW   _W3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOls0ODFdLCJpc0luYWN0aXZlIjpmYWxzZSwib3BlcmF0b3IiOiJoYXNBbGwifV0r_   ^W3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOlsxM10sImlzSW5hY3RpdmUiOmZhbHNlLCJvcGVyYXRvciI6Imhhc0FsbCJ9XQry   _W3sia2V5IjoiZ2VucmVzIiwidmFsdWUiOlsxODVdLCJpc0luYWN0aXZlIjpmYWxzZSwib3BlcmF0b3IiOiJoYXNBbGwifV0r   rk   rm   s          r   r   r      s    6D35$--i8G&  )J  K}~z{!  $B  Cz{  A|}~  A2  5V  W	XJ 67",,YGo|VU # 	r!   c           
         [        5       n[        5       n/ nU (       a  [        5       nU R                  S5      u  pVUR	                  [
        S   S5      nUR                  U5      n[        [        U-   5      nUR                  5       n	UR                  R                  S:w  a  g Sn
SnUR                  XU5      n[        R                  " U5      nU(       a  SUS   ;   a  US   S   nO[        5       nUR!                  S	5      nUR                  S5      u  pUR!                  S
5      nU(       d  SnOUSU-   -  n[        [        U-   5      nUR                  5       n	UR                  R                  S:w  a'  UR#                  [$        S5        UR'                  5         g Sn
SnUR                  XU5      n[        R                  " SU-   5      nUS   n[)        5       nU GH  nSU;  a  M  US   nSU;   a  US   OUS   (       a  US   S   OS nU(       d  M9  SnUU:X  a  SnOUS:X  a  US:X  a	  U(       d  SnUS:X  a  US:X  a
  U(       d  SnOUS:X  a	  U(       a  SnU(       a  US:X  a	  U(       d  SnU(       d  M  US   nU (       a  WR+                  WU5      (       d  M  US   nSU;   a  US   OSnSU;   a  US   OUS    S S! nUS"   nUS#   nUnUR-                  S	U5        UR-                  S$U5        UR-                  S%U5        UR-                  S&U5        US':X  a  UR/                  [$        S(USUUU5        GM_  US:X  a  UR1                  [$        S)USUUU5        GM  UR3                  [$        S(USUUU5        GM     U (       dy  S*U;  ab  [5        W5      S+-   n[7        U5      n[)        5       nUR-                  S	U5        UR-                  S
U5        UR9                  [$        S,S-U-   U5        UR'                  5         g g ).Nz?type=r       z{"searchPage":z,"rendered_ssr"results
searchPager#   sPage1z&page=%[COLOR red]## NO CONNEXION ##[/COLOR]z"data":z},"loader":{data	is_seriestype	categoriemodelFTmovieanimesdocserienameidtmdb_idyearrelease_date   posterdescriptionsMovieTitlesTmdbIdsYearseriesshowSaisonsshowMovieLinksztrending-moviesr$   r   zPage )r   r   r
   splitrB   r2   	CleanNamer   URL_MAINrequest	oResponsestatus_codeabParsejsonloadsr   rA   addTextr   r   r   CheckOccurencer*   addTVaddMovieaddAnimeintstraddNext)sSearchr   oParserr   oUtilr#   sTyperC   oRequestHandlersHtmlContent	startJsonendJsonaResultrD   rE   r   r   itemr   itemTypetypeOKro   videoIDtmdbIDr   sThumbsDescsDisplayTitleiPages                                r   r   r      s   6DiGG x0oojmB7ook2)(W*<=&..0$$00C7$	#//,7C**W%yGL$99l+I6G "8!9(11)<mmH-&//8EHu$$D)(T/:&..0$$00C7LL*QR""$	//,7C**S[)&/57d"%	#)T>4<UYZeUftK7H7QlpHFg(h"6yFu	'!iex'yFf''V<<t*$-$5i2 &$VD4H!4Lh]#,,Y@,,]FC,,Y?,,We<HJJ}b&RWYpqgMM/+;]BPVX]_vwMM/=-VUZ\sta d  !G+JNEJE&=&?##00GD#00%@LL,%I`a  r!   c            	         [        5       n [        5       n[        5       nUR                  S5      nUR                  S5      nUR                  S5      nUR                  S5      nUR                  S5      n[        S-   U-   n[        U5      n	U	R                  5       n
U	R                  R                  S:w  a'  U R                  [        S5        U R                  5         g UR                  U
S	S	5      n
S
nUR                  X5      nUS   (       a  [        5       n[        US   5       H  nUS   R!                  5       nUS   nU< SU< S3nUR#                  S[%        U5      5        UR#                  SU5        UR#                  SU5        UR#                  SU5        UR#                  SU5        UR#                  SU5        U R'                  [        SUXVU5        M     U R                  5         g )Nr#   r   r   r   r   zdownload-page/r   r   zclass="fi-ta-tablezFtype="checkbox".+?span class="truncate">(.+?)<.+?key=".+?record\.(\d+)r   r$   z ()referershowMovieHoster)r   r   r   rA   r   r   r   r   r   r   r   r   r   parser   sortedstripr*   r   addLink)r   r   rD   r   ro   r   r   r   rE   oRequestr   sPatternr   r   aEntrysQualvideoIdr   s                     r   r   r   S  s   6DiG35$--i8G#,,];F#,,X6F"++G4E"++G4E&&0Dt$H##%L%%,_&MN  ??<1EG[\LWHmmL3Gqz"9";WQZ(F1IOO%EQiG)/7M#00CLI#00G#00%@#006B#00%@#00DALL*;]F[rs ) 	r!   c            
         [        5       n [        5       n[        5       nUR                  S5      nUR                  S5      nUR                  S5      n[        < SU< S3n[        U5      nUR                  5       nUR                  R                  S:w  a'  U R                  [        S5        U R                  5         g Sn	S	n
UR                  XU
5      n[        R                  " S
U-   5      nUS   nUS   nUS   n[        5       n[!        U5      U:X  ab  US S S2    HU  nUS   nSUU4-  nSUU4-  nUR#                  SU5        UR#                  SU5        U R%                  [        SUSUSU5        MW     OkUS   S   n['        SUS-   5       HP  nSUU4-  nSUU4-  nUR#                  SU5        UR#                  SU5        U R%                  [        SUSUSU5        MR     U R                  5         g )Nr#   r   r   titles/z/seriesr   r   z"seasons":{"current_page":1,z},"rendered_ssr":r   seasonsr   totalnumberz%s/series/season/%dz%s Saison %dshowEpisodesr   r   r$   )r   r   r   rA   r   r   r   r   r   r   r   r   r   r   r   r   lenr*   	addSeasonrange)r   r   rD   r   r   r   rE   r   r   r   r   r   saisons	nbSaisonsr   saison	numSaisonsUrl2r   s                      r   r   r   |  s   6DiG35$--i8G(11-@K#,,X6F#+W5D%d+O"**,L  ,,3_&MN .I!Goolw?Gjjw'Gi GfoG I57GiddmFx(I)Wi,@@E+Y/GGM#00EB#00LNN?NM2fUWYpq $ AJx(	q)A+.I)Wi,@@E+Y/GGM#00EB#00LNN?NM2fUWYpq / 	r!   c            
         [        5       n [        5       n[        5       nUR                  S5      =p4UR                  S5      nUR                  S5      nU(       a  USU-   -  n[	        [
        S-   U-   5      nUR                  5       nSn	Sn
UR                  XU
5      nU[        U	5      S  S-   n[        R                  " U5      nUS	   n[        5       nU H  nS
U;  a  M  US
   S   nUS   nUS   nSUUU4-  nUS   nUS   nU(       d  US   nUR                  SU5        UR                  SU5        UR                  SU5        UR                  SU5        U R                  [        SUSUUU5        M     US   nU(       a[  [        5       nUR                  SU5        UR                  SU5        UR                  SU5        U R                  [        SSU-  U5        U R!                  5         g )Nr#   r   r   z)?staleTime=300000&perPage=30&query=&page=r   z!"loader":"seasonPage","episodes":z
},"set_seo}r   primary_videolienseason_numberepisode_numberz	%s S%dE%dr   r   r   r   r   showSerieHosterr   	next_pager   zPage %d)r   r   r   rA   r   r   r   r   r   r   r   r   r*   
addEpisoder   r   r   )r   r   rD   rE   r#   r   r   r   r   r   r   r   episodesr   episoder   iSeasoniEpr   r   r   r   s                         r   r   r     s   6DiG35+44Y??D(11-@K"++G4E;eCC%h&:T&ABO"**,L3IGoolw?Gc)no&,Gjj!GvH57')(0/*&'#{GS&AA"&FOE,,Y>,,Xv>,,]MJ,,We<):M2vW\^uv " $I"9";,,]KH,,Y@,,Wi@_ni)6KMder!   c                     [        5       n [        5       nUR                  S5      nUR                  S5      =p4UR                  S5      n[        [        U-   5      nUR                  S[        S-   U-   5        UR                  SS5        UR                  SS	5        UR                  S
S5        UR                  SS9nSU;  a  U R                  5         g US   nS n	SU;   a  US   S   n	US   n
[        5       R                  U
5      nU(       d  U R                  5         g SnSU;   a8  / nSnUS    H  nUR                  US   5        M     USR                  U5      -  nSU;   a  U< SU	< S3nUSUS   S   -   -  nSU;   a  US   S:  a  US   S-  S-  S-  nUSU-  -  nUR                  U5        UR                  U5        U(       a  UR                  U5        [        5       R!                  XX5        U R                  5         g )Nr#   r   r   Refererz
/download/Acceptzapplication/jsonz
User-AgentzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36zAccept-Encodingzgzip, deflateT)
jsonDecodevideoqualr   r   languesz
Langues : langz, z []u   
Qualité : tailler   i   z
Taille : %0.2f Go)r   r   rA   r   URL_APIaddHeaderEntryr   r   r   r   checkHosterappendjoinsetDisplayNamesetFileNamesetMediaInfo
showHoster)r   rD   r   r   r   r   r   reponser   r   rE   oHoster	mediaInfor   languer   s                   r   r   r     s   6D35$--i8G"8"A"A-"PPM#,,X6Fw01HIx,'>'HIH&89L  +\  ]-?$/Gg GEDV}V$=Dl&&t,G  IE 	I&FNN6&>* 'dii((	 %0$7&vv)>>>	5U8_a/x%d*4/,v55	=)$Y'LD48r!   c                  j   [        5       n [        5       nUR                  S5      nUR                  S5      nUR                  S5      n[        5       R	                  U5      nU(       a<  UR                  U5        UR                  U5        [        5       R                  XX$5        U R                  5         g )Nr#   r   r   )	r   r   rA   r   r   r  r  r  r   )r   rD   rE   ro   r   r  s         r   r   r   !  s    6D35!**95D#,,];F#,,X6Fl&&t,Gv&F#t<r!   )r   )8r   resources.lib.gui.hosterr   resources.lib.gui.guir   +resources.lib.handler.inputParameterHandlerr   ,resources.lib.handler.outputParameterHandlerr   $resources.lib.handler.requestHandlerr   resources.lib.parserr   resources.lib.comaddonr	   resources.lib.utilr
   r   	SITE_NAME	SITE_DESC
getUrlMainr   r   r+   r,   r-   SERIE_SERIESr3   r4   
ANIM_ANIMSr7   r8   DOC_DOCSDOC_DOCr<   DOC_SPECTACLEr=   r2   r1   r6   r;   r    r.   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r   <module>r     s    / & N P @ ( . $	"	 =##O4
'
' G
:X(G
V%
F	W# N P	 a _ '
; : 6&  ,	B62i!X&R.b/d?Dr!   