+
    h¥–jß4  ã                   óÌ  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	H
t
Ht ^ RIHt ]P                  P                  ]P                  P!                  ]4      4      t]P&                  R,           U u. uF  q R8w  g   K  V NK  	  up tR]P&                  9  t]'       d-   ]^ ,          P-                  4       '       d   ]! ]^ ,          4      MRt]P2                  P5                  R4      ;'       g3    ]! ]4      ^8”  d
   ]^,          M]P                  P9                  ]R4      t]P                  P9                  ]R	4      t^tR
 t R t!R t"R t#R t$]P                  P9                  ]R4      t%]P                  P9                  ]RRR4      t&]P                  P9                  ]R4      t'RRRRR. /t(R t)R t*R t+R t, ! R R]
4      t-R t.]/R8X  d
   ].! 4        R# R# u up i )u'  
AI æ¼«å‰§ Â· æ— é™�ç”»å¸ƒ â€”â€” SQLite æœ¬åœ°æ•°æ�®æœ�åŠ¡å™¨
============================================
ç”¨æ³•:
    python3 aicomic-server.py            # é»˜è®¤ç«¯å�£ 8765ï¼Œæ•°æ�®åº“ aicomic.db
    python3 aicomic-server.py 9000       # æŒ‡å®šç«¯å�£
    AICOMIC_DB=/path/x.db python3 aicomic-server.py   # æŒ‡å®šæ•°æ�®åº“è·¯å¾„

ä¸Ž manju pipeline å�ˆå¹¶å�Žçš„æ–°æŽ¥å�£ï¼ˆç”»å¸ƒ â†’ ä¸€é”®æˆ�ç‰‡ï¼‰:
    POST /api/export-shots   æŠŠç”»å¸ƒå�¡ç‰‡è½¬ä¸º manju/script/shots.json
    POST /api/build          å�Žå�°å�¯åŠ¨ manju/build.py ç”Ÿæˆ�æˆ�ç‰‡
    GET  /api/build-status   æŸ¥è¯¢ç”Ÿæˆ�è¿›åº¦ä¸Žæ—¥å¿—
    GET  /api/output         æ’­æ”¾/ä¸‹è½½æˆ�ç‰‡ MP4

å�¯åŠ¨å�Žæµ�è§ˆå™¨æ‰“å¼€: http://127.0.0.1:8765/
æ•°æ�®å…¨éƒ¨å­˜åœ¨ SQLite æ•°æ�®åº“æ–‡ä»¶ï¼ˆé»˜è®¤: aicomic.dbï¼‰ä¸­ï¼Œå�¯éš�æ—¶æ‹·è´�å¤‡ä»½ã€‚
N)ÚBaseHTTPRequestHandlerÚThreadingHTTPServer)Úurlparse:é   NNz--no-browseri="  Ú
AICOMIC_DBz
aicomic.dbzaicomic-canvas.htmlc                  ó¨   € \         P                  ! \        4      p \         P                  V n        V P                  R 4       V P                  R4       V # )zÛ
        CREATE TABLE IF NOT EXISTS canvas_state (
            id INTEGER PRIMARY KEY CHECK (id = 1),
            cards TEXT NOT NULL,
            view  TEXT NOT NULL,
            updated_at REAL NOT NULL
        )
    z×
        CREATE TABLE IF NOT EXISTS snapshots (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            cards TEXT NOT NULL,
            view  TEXT NOT NULL,
            created_at REAL NOT NULL
        )
    )Úsqlite3ÚconnectÚDB_PATHÚRowÚrow_factoryÚexecute)Úconns    Úaicomic-server.pyÚdbr   (   sG   € Ü�?Š?œ7Ó#€DÜ—{‘{€DÔØ‡L�Lð ô 	ð 	‡L�Lð ô 	ð €Kó    c                  ó  € \        4       p V P                  R 4      P                  4       pV P                  4        V'       g   R# R\        P
                  ! VR,          4      R\        P
                  ! VR,          4      RVR,          /# )z;SELECT cards, view, updated_at FROM canvas_state WHERE id=1NÚcardsÚviewÚ
updated_at©r   r   ÚfetchoneÚcloseÚjsonÚloads)r   Úrows     r   Ú
load_stater   >   se   € Ü‹4€DØ
�,‰,ÐTÓ
U×
^Ñ
^Ó
`€CØ‡J�J„LßÙØ”T—Z’Z  G¥Ó-¨v´t·z²zÀ#ÀfÅ+Ó7NÐP\Ð^aÐbnÕ^oÐpÐpr   c           	      ó¶  € \        4       p\        P                  ! 4       pVP                  R \        P                  ! V RR7      \        P                  ! VRR7      V34       VP                  R\        P                  ! V RR7      \        P                  ! VRR7      V34       VP                  R\
        34       VP                  4        VP                  4        R# )zÇ
        INSERT INTO canvas_state (id, cards, view, updated_at) VALUES (1, ?, ?, ?)
        ON CONFLICT(id) DO UPDATE SET cards=excluded.cards, view=excluded.view, updated_at=excluded.updated_at
    F©Úensure_asciiz@INSERT INTO snapshots (cards, view, created_at) VALUES (?, ?, ?)zYDELETE FROM snapshots WHERE id NOT IN (SELECT id FROM snapshots ORDER BY id DESC LIMIT ?)N)r   Útimer   r   ÚdumpsÚMAX_SNAPSHOTSÚcommitr   )r   r   r   Únows   &&  r   Ú
save_stater%   G   s¤   € Ü‹4€DÜ
�)Š)‹+€CØ‡L�Lð ô �*Š*�U¨Ô
/´·²¸DÈuÔ1UÐWZÐ	[ô]ð 	‡L�LÐSÜ—*’*˜U°Ô7¼¿ºÀDÐW\Ô9]Ð_bÐcôeà‡L�LÐlÜÐ!ô#à‡K�K„MØ‡J�J†Lr   c                  óÒ   € \        4       p V P                  R \        34      P                  4       pV P	                  4        V Uu. uF  pRVR,          RVR,          /NK  	  up# u upi )z=SELECT id, created_at FROM snapshots ORDER BY id DESC LIMIT ?ÚidÚ
created_at)r   r   r"   Úfetchallr   )r   ÚrowsÚrs      r   Úlist_snapshotsr,   V   s\   € Ü‹4€DØ�<‰<ÐWÜ&Ð(ó*ß*2©(«*ð 	à‡J�J„LÙDHÓIÁD¸qˆT�1�T•7˜L¨!¨L­/Ó:ÁDÑIÐIùÒIs   ÁA$c                 ó  € \        4       pVP                  R V 34      P                  4       pVP                  4        V'       g   R# R\        P
                  ! VR,          4      R\        P
                  ! VR,          4      /# )z,SELECT cards, view FROM snapshots WHERE id=?Nr   r   r   )Úsidr   r   s   &  r   Úrestore_snapshotr/   ^   s]   € Ü‹4€DØ
�,‰,ÐEÈÀvÓ
N×
WÑ
WÓ
Y€CØ‡J�J„LßÙØ”T—Z’Z  G¥Ó-¨v´t·z²zÀ#ÀfÅ+Ó7NÐOÐOr   Úmanjuz.venvÚbinÚpythonzaicomic-build.logÚprocÚ
started_atÚargsc                  óò   €  \         P                  ! \        \        P                  P                  \        R 4      RR7      4      p R\        V P                  R^4      4      ,          #   \         d     R# i ; i)zconfig.jsonúutf-8©Úencodingzmanju_ep%02d.mp4Úepisodezmanju_ep01.mp4)
r   ÚloadÚopenÚosÚpathÚjoinÚ	MANJU_DIRÚintÚgetÚ	Exception)Úcfgs    r   Ú_output_namerE   o   sX   € ð Ü�iŠiœœRŸW™WŸ\™\¬)°]ÓCÈgÔVÓWˆØ!¤C¨¯©°	¸1Ó(=Ó$>Õ>Ð>øÜô  Úð ús   ‚A$A' Á'A6Á5A6c                  óX   € \         R ,          p V RJ;'       d    V P                  4       RJ # )r3   N)Ú_BUILDÚpoll)Úps    r   Ú_build_runningrJ   w   s(   € Üˆv�€AØ�Dˆ=×-Ð-˜QŸV™V›X¨Ð-Ð-r   c                ód  € \        4       '       d   R# T ;'       g    / p \        R.pV P                  R4      '       d   VP                  R4       V P                  R4      '       d   VP                  R4       V P                  R4      '       d   VP                  R4       V P                  R	4      '       d   VP                  R
4       V P                  R4      '       d   VP                  R4        \	        \
        RRR7      p \        P                  ! T\        T\        P                  R7      p\        P                  T\        P                  ! 4       TR7       R#   \         d   pRRT,          3u Rp?# Rp?ii ; i  \         d&   pTP                  4        RRT,          3u Rp?# Rp?ii ; i)u?   å�Žå�°å�¯åŠ¨ manju/build.pyï¼›å�Œä¸€æ—¶é—´å�ªå…�è®¸ä¸€ä¸ªä»»åŠ¡Fzbuild.pyÚskip_imagesz--skip-imagesÚskip_ttsz
--skip-ttsÚ
skip_clipsz--skip-clipsÚuse_ai_clipsz--use-ai-clipsÚforcez--forceÚwr7   r8   u   æ— æ³•å†™å…¥æ—¥å¿—: %sN)ÚcwdÚstdoutÚstderru   å�¯åŠ¨ pipeline å¤±è´¥: %s)r3   r4   r5   )Fu'   å·²æœ‰ç”Ÿæˆ�ä»»åŠ¡è¿›è¡Œä¸­ï¼Œè¯·ç¨�å€™)Tu	   å·²å�¯åŠ¨)rJ   ÚVENV_PYrB   Úappendr<   Ú	BUILD_LOGÚOSErrorÚ
subprocessÚPopenr@   ÚSTDOUTrC   r   rG   Úupdater    )Úflagsr5   ÚlogfÚer3   s   &    r   Ústart_buildr`   |   sP  € ä×ÒØ?Ð?Ø�KˆK�R€EÜ�ZÐ €DØ‡y�y�×ÒØ�‰�OÔ$Ø‡y�y�×ÒØ�‰�LÔ!Ø‡y�y�×ÒØ�‰�NÔ#Ø‡y�y�× Ò Ø�‰Ð$Ô%Ø‡y�y�×ÒØ�‰�IÔð3Ü”I˜s¨WÔ5ˆð7Ü×Ò ¬)¸DÌ×IZÑIZÔ[ˆô ‡M�M�t¬¯	ª	«¸$€MÔ?ØÐøô ô 3ØÐ.°Õ2Ð2Õ2ûð3ûô ô 7Ø�
‰
ŒØÐ2°QÕ6Ð6Õ6ûð7ús<   Ã0E Ä,E? ÅE<Å'
E7Å1E<Å7E<Å?F/Æ
F*Æ$F/Æ*F/c                  ód  € \         R ,          p \        4       pV RJ;'       d    V'       * pV'       d   V P                  4       MRpRp \        \        RRRR7      ;_uu_ 4       pVP                  4       pRRR4       RP                  XRR 4      pRp\        P                  P                  \        R\        4       4      p\        P                  P                  V4      '       d   RpR	VR
VRVR\         R,          RVRVR\         R,          /#   + '       g   i     L ; i  \         d    Rp Lži ; i)r3   NÚ r+   r7   Úreplace)r9   ÚerrorsÚoutputú/api/outputÚrunningÚdoneÚcoder4   Úlogr5   iØÿÿÿ)rG   rJ   rH   r<   rW   Ú	readlinesr?   rX   r=   r>   r@   rE   Úexists)	rI   rg   rh   ri   ÚtailÚfÚlinesre   Úout_paths	            r   Úbuild_statusrq   ™   s  € Üˆv�€AÜÓ€GØ�TˆM×*Ð* 7œ{€Dßˆ1�6‰6Œ8 €DØ€DðÜ”)˜S¨7¸9×EÕEÈØ—K‘K“MˆE÷ Fà�w‰w�u˜S˜T�{Ó#ˆð €FÜ�w‰w�|‰|œI x´³Ó@€HÜ	‡w�w‡~�~�h×ÒØˆà�7Ø�Ø�Ø”f˜\Õ*ØˆtØ�&Ø”�v•ðð ÷ F×Eûô ô ØŠðús*   ÁD Á#DÁ4D ÄD	ÄD ÄD/Ä.D/c                   óN   a € ] tR t^´t o RtR tR tR tR tR t	R t
R tR	tV tR
# )ÚHandlerzHTTP/1.1c                ór   € V P                  R R4       V P                  RR4       V P                  RR4       R# )zAccess-Control-Allow-OriginÚ*zAccess-Control-Allow-MethodszGET, POST, OPTIONSzAccess-Control-Allow-HeadersúContent-TypeN)Úsend_header©Úselfs   &r   Ú_corsÚHandler._cors·   s6   € Ø×ÑÐ6¸Ô<Ø×ÑÐ7Ð9MÔNØ×ÑÐ7¸ÖHr   c                óX  € \         P                  ! VR R7      P                  R4      pV P                  V4       V P	                  RR4       V P	                  R\        \        V4      4      4       V P                  4        V P                  4        V P                  P                  V4       R# )Fr   r7   rv   zapplication/json; charset=utf-8úContent-LengthN)r   r!   ÚencodeÚsend_responserw   ÚstrÚlenrz   Úend_headersÚwfileÚwrite)ry   ri   ÚobjÚbodys   &&& r   Ú_jsonÚHandler._json¼   s|   € Ü�zŠz˜#¨EÔ2×9Ñ9¸'ÓBˆØ×Ñ˜4Ô Ø×Ñ˜Ð)JÔKØ×ÑÐ)¬3¬s°4«y«>Ô:Ø�
‰
ŒØ×ÑÔØ�
‰
×Ñ˜Ör   c                ó  € \        V P                  P                  R ^ 4      ;'       g    ^ 4      pV^ 8:  d   R#  \        P                  ! V P
                  P                  V4      P                  R4      4      #   \         d     R# i ; i)r}   Nr7   )	rA   ÚheadersrB   r   r   ÚrfileÚreadÚdecoderC   )ry   Úlengths   & r   Ú
_read_jsonÚHandler._read_jsonÅ   sn   € Ü�T—\‘\×%Ñ%Ð&6¸Ó:×?Ð?¸aÓ@ˆØ�QŒ;Ùð	Ü—:’:˜dŸj™jŸo™o¨fÓ5×<Ñ<¸WÓEÓFÐFøÜô 	Úð	ús   º=A8 Á8BÂBc                óh   € V P                  ^Ì4       V P                  4        V P                  4        R# )éÌ   N)r   rz   r‚   rx   s   &r   Ú
do_OPTIONSÚHandler.do_OPTIONSÎ   s%   € Ø×Ñ˜3ÔØ�
‰
ŒØ×ÑÖr   c           	     óž  € \        V P                  4      P                  pVR9   d·    \        \        R4      ;_uu_ 4       pVP	                  4       pRRR4       V P                  ^È4       V P                  RR4       V P                  R\        \        X4      4      4       V P                  4        V P                  4        V P                  P                  V4       R# VR	8X  d=   \        4       pVf   V P                  ^ÈR
RRRRR/4       R# V P                  ^ÈV4       R# VR8X  d   V P                  ^È\!        4       4       R# VR8X  d   V P                  ^È\#        4       4       R# VR8X  EdC   \$        P                  P'                  \(        R\+        4       4      p\$        P                  P-                  V4      '       g   V P                  RRR/4       R#  \        VR4      ;_uu_ 4       pVP	                  4       pRRR4       V P                  ^È4       V P                  RR4       V P                  R\        \        X4      4      4       V P                  RR\+        4       ,           R,           4       V P                  4        V P                  4        V P                  P                  V4       R# V P                  RRRV,           /4       R#   + '       g   i     EL…; i  \         d    T P                  RRR/4        R# i ; i  + '       g   i     EL; i  \.         d'   pT P                  RRRT,          /4        Rp?R# Rp?ii ; i)Ú/ÚrbNrv   ztext/html; charset=utf-8r}   é”  Úerrorz<aicomic-canvas.html not found, run server from its directoryú
/api/stater   r   r   z/api/snapshotsz/api/build-statusrf   re   u6   æˆ�ç‰‡ä¸�å­˜åœ¨ï¼Œè¯·å…ˆåœ¨ç”»å¸ƒä¸Šã€Œä¸€é”®æˆ�ç‰‡ã€�z	video/mp4zContent-Dispositionzinline; filename="Ú"éô  u   è¯»å�–æˆ�ç‰‡å¤±è´¥: %súnot found: )r–   z/index.htmlz/aicomic-canvas.html)r   r>   r<   Ú	HTML_PATHrŒ   r   rw   r€   r�   rz   r‚   rƒ   r„   ÚFileNotFoundErrorr‡   r   r,   rq   r=   r?   r@   rE   rl   rC   )ry   r>   rn   r†   Ústrp   r_   s   &      r   Údo_GETÚHandler.do_GETÓ   s¤  € Ü˜Ÿ	™	Ó"×'Ñ'ˆØÐ?Ô?ðÜœ) T×*Ô*¨aØŸ6™6›8�D÷ +à×"Ñ" 3Ô'Ø× Ñ  Ð1KÔLØ× Ñ Ð!1´3´s¸4³y³>ÔBØ—
‘
”Ø× Ñ Ô"Ø—
‘
× Ñ  Ô&Ùð �<ÔÜ“ˆBØŠzØ—
‘
˜3 ¨$°¸¸lÈDÐ QÔRñ ð —
‘
˜3 Ô#ÙØÐ#Ô#Ø�J‰J�sœNÓ,Ô-ÙØÐ&Ô&Ø�J‰J�sœL›NÔ+ÙØ�=Õ Ü—w‘w—|‘|¤I¨x¼»ÓHˆHÜ—7‘7—>‘> (×+Ò+Ø—
‘
˜3 Ð*bÐ cÔdÙðIÜ˜( D×)Ô)¨QØŸ6™6›8�D÷ *à×"Ñ" 3Ô'Ø× Ñ  °Ô=Ø× Ñ Ð!1´3´s¸4³y³>ÔBØ× Ñ Ð!6Ø!5¼»Õ!FÈÕ!LôNà—
‘
”Ø× Ñ Ô"Ø—
‘
× Ñ  Ô&ñ Ø�
‰
�3˜ -°$Õ"6Ð7Ö8÷Y +×*Ð*ûô %ô Ø—
‘
˜3 Ð*hÐ iÔjÚðú÷, *×)Ð)ûô ô IØ—
‘
˜3 Ð*BÀQÕ*FÐ G×HÐHÙûðIús[   ¨K! Á KÁB
K! ÇL Ç+LÇ<B2L ËK	Ë	K! Ë!LÌLÌL	Ì	L ÌMÌ&MÍMc                óp	  € \        V P                  4      P                  pVR 8X  dž   V P                  4       pVe&   \        VP	                  R4      \
        4      '       g   V P                  RRR/4       R# \        VR,          VP	                  R/ 4      4       V P                  ^ÈRRR	\        P                  ! 4       /4       R# VR
8X  d²   V P                  4       pVe   VP	                  R4      '       g   V P                  RRR/4       R#  ^ RI	pTP                  VR,          \        VP	                  RR4      ;'       g    R4      \        VP	                  RR4      4      R7      pV P                  ^ÈV4       R# VR8X  dÉ   V P                  4       ;'       g    / p ^ RI	pTP                  VP	                  RR4      VP	                  RR4      VP	                  R4      ;'       g    . VP	                  RR4      VP	                  RR4      VP	                  RR4      VP	                  RR4      R7      pV P                  ^ÈRRRV/4       R# VP!                  R 4      '       du   VP#                  R!4      '       d^   VP%                  R"4      ^,          p \        V4      p\)        T4      pTf   T P                  R$RR%/4       R# T P                  ^ÈT4       R# VR&8X  dž   V P                  4       pVe&   \        VP	                  R4      \
        4      '       g   V P                  RRR'/4       R#  ^ RIp	V	P-                  VR,          4      w  r«V P                  ^ÈRRR(\/        V
4      R)VR*V	P0                  /4       R# VR,8X  dJ   V P                  4       ;'       g    / p\3        V4      w  rÍT P                  V'       d   ^ÈMR-RVR.V/4       R# V P                  R$RR/V,           /4       R#   \         d0   pT P                  RRR\        T4      ,          /4        Rp?R# Rp?ii ; i  \         d-   pT P                  ^ÈRRR\        T4      RR/4        Rp?R# Rp?ii ; i  \&         d    T P                  RRR#/4        R# i ; i  \         d'   pT P                  RRR+T,          /4        Rp?R# Rp?ii ; i)0rš   Nr   i�  r™   z,body must be {"cards": [...], "view": {...}}r   ÚokTÚsaved_atz/api/import-novelÚtextzCbody must be {"text": "...", "target_chars": 1500, "use_llm": true}Útarget_charsiÜ  Úuse_llm)r§   r¨   rœ   u   å¯¼å…¥å¤±è´¥: %sz/api/image-promptÚscenerb   ÚpromptÚcharsÚmoveÚstyleÚ
style_packÚcelÚqualityÚhigh)r©   Údetailr«   r¬   r­   r®   r°   Fz/api/snapshots/z/restorer–   zbad snapshot idr˜   zsnapshot not foundz/api/export-shotszbody must be {"cards": [...]}ÚcountÚremovedÚfileu   å¯¼å‡ºåˆ†é•œå¤±è´¥: %sz
/api/buildi™  Úmessager�   )r   r>   r�   Ú
isinstancerB   Úlistr‡   r%   r    Úaicomic_importÚ
run_importrA   ÚboolrC   r€   Úoptimize_image_promptÚ
startswithÚendswithÚsplitÚ
ValueErrorr/   Úaicomic_bridgeÚexport_shotsr�   Ú
SHOTS_PATHr`   )ry   r>   Údatar¹   Úresr_   rª   r.   r    rÁ   Úshotsr´   r¤   Úmsgs   &             r   Údo_POSTÚHandler.do_POST  s9  € Ü˜Ÿ	™	Ó"×'Ñ'ˆØ�<ÔØ—?‘?Ó$ˆDØŠ|¤:¨d¯h©h°wÓ.?Ä×#FÒ#FØ—
‘
˜3 Ð*XÐ YÔZÙÜ�t˜G•} d§h¡h¨v°rÓ&:Ô;Ø�J‰J�s˜T 4¨´T·Y²Y³[ÐAÔBÙØÐ&Ô&Ø—?‘?Ó$ˆDØŠ| 4§8¡8¨F×#3Ò#3Ø—
‘
˜3 Ð*oÐ pÔqÙðHÛ%Ø$×/Ñ/Ø˜•LÜ!$ T§X¡X¨n¸dÓ%C×%KÐ%KÀtÓ!LÜ  §¡¨)°TÓ!:Ó;ð 0ó =�ð —
‘
˜3 Ô$ñ ØÐ&Ô&Ø—?‘?Ó$×*Ð*¨ˆDðNÛ%Ø'×=Ñ=ØŸ(™( 7¨BÓ/ØŸ8™8 H¨bÓ1ØŸ(™( 7Ó+×1Ð1¨rØŸ™ &¨"Ó-ØŸ(™( 7¨BÓ/Ø#Ÿx™x¨°eÓ<Ø ŸH™H Y°Ó7ð >ó 9�ð —
‘
˜3  t¨X°vÐ >Ô?ñ Ø�?‰?Ð,×-Ò-°$·-±-À
×2KÒ2KØ—*‘*˜S“/ !Õ$ˆCðÜ˜#“h�ô " #Ó&ˆBØŠzØ—
‘
˜3 Ð*>Ð ?Ô@ñ ð —
‘
˜3 Ô#ÙØÐ&Ô&Ø—?‘?Ó$ˆDØŠ|¤:¨d¯h©h°wÓ.?Ä×#FÒ#FØ—
‘
˜3 Ð*IÐ JÔKÙðIÛ%Ø!/×!<Ñ!<¸TÀ'½]Ó!K‘�Ø—
‘
˜3  t¨W´c¸%³jØ!*¨GØ!'¨×)BÑ)Bð!Dô Eñ
 Ø�<ÔØ—?‘?Ó$×*Ð*¨ˆDÜ! $Ó'‰GˆBØ�J‰JŸb‘s c¨D°"°iÀÐ+EÔFÙØ�
‰
�3˜ -°$Õ"6Ð7Ö8øôg ô HØ—
‘
˜3 Ð*<¼sÀ1»vÕ*EÐ F×GÐGÙûðHûô  ô NØ—
‘
˜3  u¨g´s¸1³v¸xÈÐ L×MÐMÙûðNûô ô Ø—
‘
˜3 Ð*;Ð <Ô=Úðûô( ô IØ—
‘
˜3 Ð*BÀQÕ*FÐ G×HÐHÙûðIúsi   Ä4O' Å8O' ÆAP$ Ç'A"P$ ÊQ Ì-AR Ï'P!Ï2$PÐP!Ð$QÐ/!QÑQÑRÒ RÒR5ÒR0Ò0R5c                óŠ   € \         P                  P                  R \        P                  ! R4      : RW,          : R24       R# )Ú[z%H:%M:%Sz] Ú
N)ÚsysrT   r„   r    Ústrftime)ry   Úfmtr5   s   &&*r   Úlog_messageÚHandler.log_messageP  s&   € Ü�
‰
×Ò¬¯ª°jÖ(AÀ3Ç:À:ÐNÖOr   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Úprotocol_versionrz   r‡   r�   r“   r¡   rÈ   rÐ   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r   rs   rs   ´   s9   ø‡ € Ø!ÐòIò
òòò
09òdI9÷VPð Pr   rs   c                  óZ  € \        R4       \        R4       \        R\        ,          4       \        R\        ,          4       \        R4       \        R4       \        R4       \        P                  P                  \        4      '       g   \        R\        ,          4       \        R\        3\        4      p \        '       d(    \        P                  ! RR	 4      P                  4         V P                  4        R#   \         d     L i ; i  \         d    \        R
4        R# i ; i)Ú=uJ     AI æ¼«å‰§ Â· æ— é™�ç”»å¸ƒ SQLite æœ�åŠ¡å™¨ï¼ˆå·²å�ˆå¹¶ manju pipelineï¼‰z  URL : http://127.0.0.1:%d/z
  DB  : %su<     ç”»å¸ƒã€Œä¸€é”®æˆ�ç‰‡ã€�â†’ manju pipeline â†’ /api/outputu     å�œæ­¢: Ctrl+CuQ   è­¦å‘Š: æœªæ‰¾åˆ° %s ï¼Œè¯·æŠŠæœ¬è„šæœ¬å’Œ aicomic-canvas.html æ”¾åœ¨å�Œä¸€ç›®å½•z	127.0.0.1g      ð?c                  óD   € \         P                  ! R \        ,          4      # )zhttp://127.0.0.1:%d/)Ú
webbrowserr<   ÚPORTrÒ   r   r   Ú<lambda>Úmain.<locals>.<lambda>a  s   € ¬¯ªÐ9OÔRVÕ9VÔ)Wr   u
   
å·²å�œæ­¢Nz8========================================================)Úprintrß   r
   r=   r>   rl   rž   r   rs   Ú	AUTO_OPENÚ	threadingÚTimerÚstartrC   Úserve_foreverÚKeyboardInterrupt)Úservers    r   Úmainrê   T  sØ   € Ü	ˆ(„OÜ	Ð
VÔWÜ	Ð
(¬4Õ
/Ô0Ü	ˆ,œÕ
 Ô!Ü	Ð
HÔIÜ	Ð
ÔÜ	ˆ(„OÜ�7‰7�>‰>œ)×$Ò$ÜÐaÔdmÕmÔnÜ  +¬tÐ!4´gÓ>€Fßƒyð	Ü�OŠO˜CÑ!WÓX×^Ñ^Ô`ðØ×ÑÖøô ô 	Ùð	ûô ô Üˆm×ðús$   Ã&C? Ã-D Ã?DÄDÄD*Ä)D*Ú__main__)0Ú__doc__r   r=   r   rY   rÍ   rä   r    rÞ   Úhttp.serverr   r   Úurllib.parser   r>   ÚdirnameÚabspathÚ__file__ÚBASE_DIRÚargvÚ_ARGSrã   ÚisdigitrA   rß   ÚenvironrB   r�   r?   r
   rž   r"   r   r   r%   r,   r/   r@   rU   rW   rG   rE   rJ   r`   rq   rs   rê   rÓ   )Úas   0r   Ú<module>rø      s¨  ðñó" Û 	Û Û Û 
Û Û Û ß CÝ !à�7‰7�?‰?˜2Ÿ7™7Ÿ?™?¨8Ó4Ó5€Ø—H‘H˜R–LÓ8‘Lˆq¨Ñ$7�ˆ‘LÑ8€Ø #§(¡(Ñ*€	ß %¨¥(×"2Ñ"2×"4Ò"4�sˆ5��8„}¸$€Ø
�*‰*�.‰.˜Ó
&×
pÐ
p±s¸5³zÀA´~¨5°®8È2Ï7É7Ï<É<ÐX`ÐbnÓKo€Ø�G‰G�L‰L˜Ð#8Ó9€	Ø€òò,qòòJòPð �G‰G�L‰L˜ 7Ó+€	Ø
�'‰'�,‰,�x ¨%°Ó
:€Ø�G‰G�L‰L˜Ð#6Ó7€	à
�$˜ d¨F°BÐ	7€ò ò.ò
ò:ô6]PÐ$ô ]Pò@ð, ˆzÔÙ†Fñ ùòU
 	9s   Á:G!ÂG!