§
    ƒ¤ÈjT{  ã                   óº  — d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlZddlZddlmZmZ dZej                             ed¦  «        Zej                             ed¦  «        Zej                             ed¦  «        Zej                             ed¦  «        Zej                             ed	¦  «        Zej                             ed
¦  «        Z ej        ed¬¦  «         d„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#dddddddœZ$dZ%dZ&d„ Z'd„ Z(d„ Z)d*d „Z*d!„ Z+d"„ Z,d#„ Z-d$„ Z.d%„ Z/ G d&„ d'e¦  «        Z0d(„ Z1e2d)k    r e1¦   «          dS dS )+uü  HLQT â€” Huáº¥n luyá»‡n QUY TRÃŒNH cho CSDL A (web app, cá»•ng 8100).
Luá»“ng: (1) náº¡p Báº¢N MÃ€U â†’ agent Ä‘á»� nghá»‹ Ä�ÃšNG 1 quy trÃ¬nh kháº£ dÄ©/sÃ¡t nháº¥t tá»« CSDL A
       (2) chá»§ nhÃ¢n nháº­p QUY TRÃŒNH THá»°C Táº¾ cá»§a báº£n mÃ u Ä‘Ã³
       (3) agent Ä‘á»‘i chiáº¿u & Ä‘á»� xuáº¥t Bá»” SUNG CSDL A (quy trÃ¬nh má»›i + luáº­t má»›i)
       (4) chá»§ nhÃ¢n nháº­p máº­t kháº©u â†’ há»‡ thá»‘ng ghi vÃ o CSDL A (backup trÆ°á»›c).
Cháº¡y: python server_hlqt.py   (máº·c Ä‘á»‹nh 127.0.0.1:8100)
é    N)ÚBaseHTTPRequestHandlerÚThreadingHTTPServerz*C:\Claw 2\Nghien cuu\Du-an-A-Quy-trinh-sonzHLQT-appzCSDLA.dbÚvieczmat_khau.txtzpass_hlqt.txtz
_nhip.jsonT©Úexist_okc                  óž   — 	 t          t          d¬¦  «                             ¦   «                              ¦   «         pdS # t          $ r Y dS w xY w)Núutf-8©ÚencodingÚhlqt)ÚopenÚMK_FILEÚreadÚstripÚ	Exception© ó    úBC:\Claw 2\Nghien cuu\Du-an-A-Quy-trinh-son\HLQT-app/server_hlqt.pyÚmat_khaur      sY   € ðÝ•G gÐ.Ñ.Ô.×3Ò3Ñ5Ô5×;Ò;Ñ=Ô=ÐGÀÐGøÝð ð ð Øˆvˆvðøøøó   ‚;> ¾
AÁAc                  óž   — 	 t          t          d¬¦  «                             ¦   «                              ¦   «         pdS # t          $ r Y dS w xY w)Nr	   r
   Ú19842026)r   Ú	PASS_FILEr   r   r   r   r   r   Úpass_ghir      sY   € ðÝ•I¨Ð0Ñ0Ô0×5Ò5Ñ7Ô7×=Ò=Ñ?Ô?ÐMÀ:ÐMøÝð ð ð Øˆzˆzðøøør   c                  óÚ   — 	 t          t          j                             t          d¦  «        d¬¦  «                             ¦   «                              ¦   «         pdS # t          $ r Y dS w xY w)Nz
bi_mat.txtr	   r
   zhlqt-bi-mat©r   ÚosÚpathÚjoinÚAPPr   r   r   r   r   r   Úbi_matr!   $   sj   € ðÝ•B”G—L’L¥ lÑ3Ô3¸gÐFÑFÔF×KÒKÑMÔM×SÒSÑUÔUÐfÐYfÐføÝð ð ð Øˆ}ˆ}ðøøøs   ‚AA Á
A*Á)A*c                  óÔ   — t          j        dt          ¦   «         z   dz   t          j        d¦  «        z                        ¦   «         ¦  «                             ¦   «         d d…         } | S )Nzhlqt|ú|z%Y-%m-%d-%Hé   )ÚhashlibÚsha256r!   ÚtimeÚstrftimeÚencodeÚ	hexdigest)Úhs    r   Úma_phienr,   +   sW   € ÝŒ˜¥&¡(¤(Ñ*¨SÑ0µ4´=ÀÑ3OÔ3OÑO×WÒWÑYÔYÑZÔZ×dÒdÑfÔfÐgjÐhjÐgjÔk€AØ€Hr   c                  ó´   — t          j        t          ¦  «        } |                      d¦  «         |                      d¦  «         |                      ¦   «          | S )Na±  CREATE TABLE IF NOT EXISTS huan_luyen_ca (
        id INTEGER PRIMARY KEY AUTOINCREMENT, tao_luc TEXT, nguoi_nhap TEXT,
        ma_mau TEXT, he_son TEXT, loai_nen TEXT, yeu_cau TEXT, ghi_chu TEXT,
        anh_vao TEXT, anh_khac TEXT, trang_thai TEXT DEFAULT 'cho_de_nghi',
        de_nghi_luc TEXT, de_nghi_file TEXT, de_nghi_giay REAL,
        de_nghi_qt_id INTEGER, de_nghi_qt_ten TEXT, de_nghi_tom_tat TEXT, de_nghi_json TEXT,
        thuc_te_text TEXT, thuc_te_luc TEXT, thuc_te_file TEXT,
        phan_tich_luc TEXT, phan_tich_file TEXT, de_xuat_json TEXT,
        da_bo_sung INTEGER DEFAULT 0, ngay_bo_sung TEXT, qt_moi_id INTEGER, so_luat_them INTEGER,
        nguon TEXT, loi TEXT)z‡CREATE TABLE IF NOT EXISTS nhat_ky_hlqt (id INTEGER PRIMARY KEY AUTOINCREMENT,
        ngay TEXT, viec TEXT, chi_tiet TEXT, nguon TEXT))Úsqlite3ÚconnectÚDBÚexecuteÚcommit)Úcons    r   Únoi_dbr4   0   s[   € Ý
Œ/�"Ñ
Ô
€CØ‡K‚Kð 	!ñ 	"ô 	"ð 	"ð ‡K‚Kð <ñ =ô =ð =à‡J‚J�L„L€LØ€Jr   c                  ó&  — 	 t          j        t          t          d¬¦  «        ¦  «        } |                      d¦  «        pd|                      d¦  «        |                      d¦  «        pd|                      d¦  «        pdfS # t
          $ r Y d	S w xY w)
Nr	   r
   Ú
trang_thaiúkhong-roÚcaÚbuocÚ Úluc)r7   Nr:   r:   )ÚjsonÚloadr   ÚNHIPÚgetr   )Úds    r   Únhip_workerrA   B   s—   € ð(ÝŒI•d�4¨'Ð2Ñ2Ô2Ñ3Ô3ˆØ�uŠu�\Ñ"Ô"Ð0 j°!·%²%¸±+´+¸q¿uºuÀV¹}¼}Ð?RÐPRÐTU×TYÒTYÐZ_ÑT`ÔT`ÐTfÐdfÐfÐføÝð (ð (ð (Ø'Ð'Ð'ð(øøøs   ‚A?B Â
BÂBu   chá»� Ä‘á»� nghá»‹u   Ä‘Ã£ cÃ³ Ä‘á»� nghá»‹u   chá»� phÃ¢n tÃ­chu   CHá»œ XÃ�C NHáº¬Nu   Ä‘Ã£ bá»• sung CSDL Au   Lá»–I)Úcho_de_nghiÚ
da_de_nghiÚcho_phan_tichÚcho_xac_nhanÚ
da_bo_sungÚlois×   <script>document.addEventListener("DOMContentLoaded",function(){var B=(location.pathname.indexOf("/hlqt")===0)?"/hlqt/":"/";var b=document.querySelector("base");if(b&&b.getAttribute("href")!==B)b.href=B;});</script>a,  
:root{--nhan:#0b5c46;--vien:#dfe3e8}
*{box-sizing:border-box}body{margin:0;font:15px/1.55 'Segoe UI',Arial,sans-serif;background:#f4f6f8;color:#1b2733}
header{background:#0b3d2c;color:#fff;padding:13px 20px}header b{font-size:17px}header span{opacity:.85;font-size:13px;margin-left:8px}
main{max-width:1020px;margin:18px auto;padding:0 14px}
.the{background:#fff;border:1px solid var(--vien);border-radius:10px;padding:15px 17px;margin-bottom:15px}
label{display:block;font-weight:600;margin:9px 0 4px}
input[type=text],input[type=password],select,textarea{width:100%;padding:8px 10px;border:1px solid var(--vien);border-radius:7px;font:inherit;background:#fff}
textarea{min-height:84px;font-family:Consolas,monospace;font-size:13.5px}
button{background:var(--nhan);color:#fff;border:0;border-radius:8px;padding:11px 19px;font:inherit;font-weight:600;cursor:pointer;margin-top:12px}
button.phu{background:#eef1f4;color:#243}
small{color:#5d6b7a}
table.b{border-collapse:collapse;width:100%;margin:9px 0;font-size:14px}table.b td,table.b th{border:1px solid var(--vien);padding:6px 8px;text-align:left;vertical-align:top}
table.b th{background:#eef1f4}
.tt{display:inline-block;padding:2px 9px;border-radius:20px;font-size:12px;font-weight:700}
.cho_de_nghi{background:#fff3cd;color:#7a5b00}.da_de_nghi{background:#cfe4ff;color:#0a3d75}.cho_phan_tich{background:#e2d6ff;color:#3d1f7a}
.cho_xac_nhan{background:#ffe4cc;color:#8a4a00}.da_bo_sung{background:#d6f4e0;color:#0b5c2e}.loi{background:#ffd9d9;color:#8a1414}
img{max-width:100%;border-radius:8px}
pre{background:#f7f9fb;border:1px solid var(--vien);border-radius:8px;padding:10px;white-space:pre-wrap;font-size:13.5px}
a{color:#0b6b3a}
h1{font-size:20px}h2{font-size:17px}h3{font-size:15.5px}
blockquote{margin:8px 0;padding:6px 12px;border-left:3px solid #b9c6cf;color:#3d4b57}
c                 óF   — d| ›dt                                | | ¦  «        ›d�S )Nz<span class="tt ú">z</span>)ÚTTr?   )Útts    r   ÚTT_htmlrL   j   s#   € € Ø.0¨b¨bµ"·&²&¸¸R±.´.°.°.ÐAÐAr   c                 ó¤	  ‡	— g d}}|                       d¦  «        }|t          |¦  «        k     �rŽ||                              ¦   «         }|                     d¦  «        �rò|dz   t          |¦  «        k     �rÛt	          j        d||dz                                 ¦   «         ¦  «        �rªg }|t          |¦  «        k     �r||                              ¦   «                              d¦  «        rât	          j        d||                              ¦   «                              d¦  «        ¦  «        s]|                     d„ ||                              ¦   «                              d¦  «                              d¦  «        D ¦   «         ¦  «         |dz  }|t          |¦  «        k     r-||                              ¦   «                              d¦  «        °â|                     d¦  «         t          |¦  «        D ]I\  }}|dk    rd	nd
Š	|                     dd 	                    ˆ	fd„|D ¦   «         ¦  «        z   dz   ¦  «         ŒJ|                     d¦  «         �Œ6|                     d¦  «        rÇ|dz  }g }|t          |¦  «        k     ri||                              d¦  «        sN|                     ||         ¦  «         |dz  }|t          |¦  «        k     r||                              d¦  «        ¯N|dz  }|                     dt          j        d 	                    |¦  «        ¦  «        z  ¦  «         �Œ|                     d¦  «        r/|                     dt          |dd…         ¦  «        z  ¦  «         �n3|                     d¦  «        r.|                     dt          |dd…         ¦  «        z  ¦  «         nð|                     d¦  «        r.|                     dt          |dd…         ¦  «        z  ¦  «         n­|                     d¦  «        r.|                     dt          |dd…         ¦  «        z  ¦  «         njt	          j        d|¦  «        r.|                     dt          |dd…         ¦  «        z  ¦  «         n'|r%|                     d t          |¦  «        z  ¦  «         |dz  }|t          |¦  «        k     �°Žd 	                    |¦  «        S )!uY   Markdown â†’ HTML gá»�n (tiÃªu Ä‘á»�, Ä‘áº­m/nghiÃªng, bullet, báº£ng, blockquote, code).r   ú
r#   é   z^\|[\s:|-]+\|$z
^[\s:|-]+$c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r   )r   )Ú.0Úcs     r   ú
<listcomp>z md_sang_html.<locals>.<listcomp>x   s    € Ð ZÐ ZÐ Z¨q §¢¡¤Ð ZÐ ZÐ Zr   z<table class="b">ÚthÚtdz<tr>r:   c              3   óJ   •K  — | ]}d ‰›dt          |¦  «        ›d‰›d�V — ŒdS )ú<ú>z</N)Údam)rQ   rR   Úos     €r   ú	<genexpr>zmd_sang_html.<locals>.<genexpr>}   s>   øè è € Ð+VÐ+VÈqÈq¸Q¸Q¸QÅÀAÁÄÀÀÈÈÈÐ,JÐ+VÐ+VÐ+VÐ+VÐ+VÐ+Vr   z</tr>z</table>ú```z<pre>%s</pre>z### z<h3>%s</h3>é   Nz## z<h2>%s</h2>é   z# z<h1>%s</h1>é   z> z<blockquote>%s</blockquote>z^[-*] u
   â€¢ %s<br>z	<p>%s</p>)ÚsplitÚlenÚrstripÚ
startswithÚreÚmatchr   ÚappendÚ	enumerater   ÚhtmlÚescaperY   )
ÚmdÚoutÚiÚdongÚsÚhangÚkÚrÚbufrZ   s
            @r   Úmd_sang_htmlrs   n   sN  ø€ à�ˆ€CØ�8Š8�D‰>Œ>€DØ
�c�$‰iŒiŠ-‰-Ø�ŒG�NŠNÑÔˆØ�<Š<˜ÑÔñ 	  Q¡­¨T©¬Ò!2Ñ!2µr´xÐ@QÐSWÐXYÐ\]ÑX]ÔS^×SdÒSdÑSfÔSfÑ7gÔ7gÑ!2ØˆDØ•c˜$‘i”i’-‘- D¨¤G§M¢M¡O¤O×$>Ò$>¸sÑ$CÔ$C�-Ý”x ¨t°A¬w¯}ª}©¬×/DÒ/DÀSÑ/IÔ/IÑJÔJð \Ø—K’KÐ ZÐ Z°D¸´G·M²M±O´O×4IÒ4IÈ#Ñ4NÔ4N×4TÒ4TÐUXÑ4YÔ4YÐ ZÑ ZÔ ZÑ[Ô[Ð[Ø�Q‘�ð •c˜$‘i”i’-�- D¨¤G§M¢M¡O¤O×$>Ò$>¸sÑ$CÔ$C�-ð �JŠJÐ*Ñ+Ô+Ð+Ý! $™œð bð b‘��1Ø šF˜F�D�D¨�Ø—
’
˜6 B§G¢GÐ+VÐ+VÐ+VÐ+VÐTUÐ+VÑ+VÔ+VÑ$VÔ$VÑVÐY`Ñ`ÑaÔaÐaÐaØ�JŠJ�zÑ"Ô"Ð"ÙØ�<Š<˜ÑÔð 	Ø�‰FˆAØˆCØ•c˜$‘i”i’-�-¨¨Q¬×(:Ò(:¸5Ñ(AÔ(A�-Ø—
’
˜4 œ7Ñ#Ô#Ð# Q¨!¡V Qð •c˜$‘i”i’-�-¨¨Q¬×(:Ò(:¸5Ñ(AÔ(A�-à�‰FˆAØ�JŠJ�­¬°T·Y²Y¸s±^´^Ñ)DÔ)DÑDÑEÔEÐEÙØ�<Š<˜ÑÔð 	-Ø�JŠJ�}¥s¨1¨Q¨R¨R¬5¡z¤zÑ1Ñ2Ô2Ð2Ñ2Ø�\Š\˜%Ñ Ô ð 		-Ø�JŠJ�}¥s¨1¨Q¨R¨R¬5¡z¤zÑ1Ñ2Ô2Ð2Ð2Ø�\Š\˜$ÑÔð 	-Ø�JŠJ�}¥s¨1¨Q¨R¨R¬5¡z¤zÑ1Ñ2Ô2Ð2Ð2Ø�\Š\˜$ÑÔð 	-Ø�JŠJÐ4µs¸1¸Q¸R¸R¼5±z´zÑAÑBÔBÐBÐBÝŒX�i Ñ#Ô#ð 	-Ø�JŠJ�|¥c¨!¨A¨B¨B¬%¡j¤jÑ0Ñ1Ô1Ð1Ð1Øð 	-Ø�JŠJ�{¥S¨¡V¤VÑ+Ñ,Ô,Ð,Ø	ˆQ‰ˆðE �c�$‰iŒiŠ-‰-ðF �9Š9�S‰>Œ>Ðr   c                 ó†   — t          j        | ¦  «        } t          j        dd| ¦  «        } t          j        dd| ¦  «        } | S )Nz\*\*(.+?)\*\*z	<b>\1</b>z#(?<!\*)\*(?!\*)(.+?)(?<!\*)\*(?!\*)z	<i>\1</i>)rh   ri   rd   Úsub)Úts    r   rY   rY   ˜   s<   € ÝŒ�A‰Œ€AÝ
ŒÐ ¨qÑ1Ô1€AÝ
ŒÐ5°|ÀQÑGÔG€AØ€Hr   r:   c                 óP   — dt           ›d| rdt          j        | ¦  «        z  nd›d�S )Nuq   <!doctype html><html lang="vi"><meta charset="utf-8"><title>HLQT Â· Ä�Äƒng nháº­p</title>
<base href="./"><style>u¸   </style>
<header><b>HLQT</b><span>Huáº¥n luyá»‡n quy trÃ¬nh sÆ¡n â€” CSDL A</span></header>
<main><div class="the" style="max-width:430px">
<h3 style="margin-top:0">Ä�Äƒng nháº­p</h3>
z&<p style="color:#8a1414"><b>%s</b></p>r:   u>  
<form method="post" action="dang-nhap"><label>Máº­t kháº©u dÃ¹ng chung</label>
<input type="password" name="mat_khau" autofocus required><button type="submit">VÃ o há»‡ thá»‘ng</button></form>
<p><small>QuÃªn máº­t kháº©u: xem file <code>mat_khau.txt</code> trong thÆ° má»¥c HLQT-app.</small></p>
</div></main></html>)ÚCSSrh   ri   )rG   s    r   Útrang_dang_nhapry       s>   € € õ ˜3˜3Ð_bÐ jÐ HÍ4Ì;ÐWZÑK[ÔK[Ñ [Ð [ÐhjÐ jÐ jð	lð 	lr   c                  óÖ   — 	 t          t          j                             t          d¦  «        d¬¦  «                             ¦   «                              ¦   «         S # t          $ r Y dS w xY w)Nzemail_bao.txtr	   r
   r:   r   r   r   r   Úemail_mac_dinhr{   ­   sd   € ðÝ•B”G—L’L¥ oÑ6Ô6ÀÐIÑIÔI×NÒNÑPÔP×VÒVÑXÔXÐXøÝð ð ð Øˆrˆrðøøøs   ‚AA Á
A(Á'A(c                  ó  — t          ¦   «         } |                      ¦   «         }|                     d¦  «                             ¦   «         }|                     d¦  «                             ¦   «         d         }|                     d¦  «                             ¦   «         d         }|                      ¦   «          d                     d„ |D ¦   «         ¦  «        }dt          ||t          j	        t          ¦   «         ¦  «        |pdfz  S )	NztSELECT id,tao_luc,nguoi_nhap,ma_mau,trang_thai,de_nghi_qt_ten,da_bo_sung FROM huan_luyen_ca ORDER BY id DESC LIMIT 8zSELECT COUNT(*) FROM huan_luyenr   zSELECT COUNT(*) FROM quy_trinhr:   c              3   ó`  K  — | ]©}d |d         ›d|d         ›d|d         ›dt          j        |d         pd¦  «        ›dt          |d	         ¦  «        ›d|d
         r'dt          j        |d         pddd…         ¦  «        z   n#t          j        |d         pddd…         ¦  «        ›d�V — ŒªdS )ú	<tr><td>#r   ú	</td><td>rO   ú</td><td><a href="ca?id=rI   r^   u   (chÆ°a ghi mÃ£ mÃ u)ú</a></td><td>r]   é   u   âœ“ é   r:   Né<   ú
</td></tr>©rh   ri   rL   ©rQ   rq   s     r   r[   ztrang_chinh.<locals>.<genexpr>¼   sê   è è € ð  ð  ð �qð ˜”d�d�d˜A˜aœD˜D˜D ! A¤$ $ $­¬°A°a´DÐ4RÐ<RÑ(SÔ(SÐ(SÐ(SÕU\Ð]^Ð_`Ô]aÑUbÔUbÐUbÐUbØCDÀQÄ4Ðk�v¥¤¨Q¨q¬T¨Z°R¸¸"¸Ô,=Ñ >Ô >Ñ>Ð>ÍTÌ[ÐZ[Ð\]ÔZ^ÐZdÐbdÐfiÐgiÐfiÔYjÑMkÔMkÐkÐkðmð  ð  ð  ð  ð  ð  r   u£	  <!doctype html><html lang="vi"><meta charset="utf-8"><title>HLQT â€” huáº¥n luyá»‡n quy trÃ¬nh CSDL A</title>
<base href="./"><style>%s</style>
<header><b>HLQT</b><span>Náº¡p báº£n mÃ u â†’ Ä‘á»� nghá»‹ 1 quy trÃ¬nh â†’ nháº­p quy trÃ¬nh thá»±c táº¿ â†’ bá»• sung CSDL A</span></header>
<main>
<div class="the"><p><small>CSDL A hiá»‡n cÃ³: <b>%d quy trÃ¬nh</b> Â· <b>%d luáº­t huáº¥n luyá»‡n</b> Â·
<a href="danh-sach">Danh sÃ¡ch ca</a> Â· <a href="luat">Luáº­t Ä‘Ã£ há»�c</a> Â· <a href="thoat">ThoÃ¡t</a></small></p></div>
<form class="the" method="post" action="tao-ca" enctype="multipart/form-data">
<h3 style="margin-top:0">1. Náº¡p báº£n mÃ u má»›i</h3>
<div class="bo" style="display:flex;gap:12px;flex-wrap:wrap">
<div><label>áº¢nh báº£n mÃ u (báº¯t buá»™c)</label><input type="file" name="anh" accept="image/*" required></div>
<div><label>MÃ£ mÃ u</label><input type="text" name="ma_mau" placeholder="VD: AQ 455 / MP 764 H"></div></div>
<div class="bo" style="display:flex;gap:12px;flex-wrap:wrap">
<div><label>Há»‡ sÆ¡n (náº¿u biáº¿t)</label><input type="text" name="he_son" placeholder="VD: NC / PU / nÆ°á»›c / UV"></div>
<div><label>Loáº¡i ná»�n / loáº¡i gá»—</label><input type="text" name="loai_nen" placeholder="VD: MDF / sá»“i / trÃ m / veneer"></div>
<div><label>NgÆ°á»�i nháº­p</label><input type="text" name="nguoi_nhap" placeholder="VD: Lab â€“ HÃ¹ng"></div></div>
<label>Email nháº­n thÃ´ng bÃ¡o (há»‡ thá»‘ng tá»± bÃ¡o khi agent xá»­ lÃ½ xong)</label><input type="text" name="email" value="%s" placeholder="VD: ngoducminh84@gmail.com">
<label>YÃªu cáº§u cháº¥t lÆ°á»£ng / Ä‘á»™ bÃ³ng</label><input type="text" name="yeu_cau" placeholder="VD: bÃ³ng 20%% Â± 5%%, giá»¯ vÃ¢n, khÃ¡ng hoÃ¡ cháº¥t">
<label>Ghi chÃº thÃªm (tuá»³ chá»�n)</label><input type="text" name="ghi_chu" placeholder="VD: áº£nh chá»¥p vuÃ´ng gÃ³c ngoÃ i xÆ°á»Ÿng, cÃ³ Ã´ giáº¥y tráº¯ng">
<label>áº¢nh phá»¥ (tuá»³ chá»�n, chá»�n nhiá»�u Ä‘Æ°á»£c)</label><input type="file" name="anh_phu" accept="image/*" multiple>
<button type="submit">Gá»­i â€” nhá»� agent Ä‘á»� nghá»‹ 1 quy trÃ¬nh</button>
<p><small>Sau khi gá»­i, má»Ÿ trang ca Ä‘á»ƒ xem quy trÃ¬nh Ä‘Æ°á»£c Ä‘á»� nghá»‹ (agent cháº¡y ~1â€“3 phÃºt). Trang tá»± cáº­p nháº­t.</small></p>
</form>
<div class="the"><h3 style="margin-top:0">CÃ¡c ca gáº§n Ä‘Ã¢y</h3>
<table class="b"><tr><th>Ca</th><th>LÃºc</th><th>MÃ£ mÃ u</th><th>Tráº¡ng thÃ¡i</th><th>Quy trÃ¬nh Ä‘Æ°á»£c Ä‘á»� nghá»‹</th></tr>%s</table></div>
</main></html>u1   <tr><td colspan="5">(chÆ°a cÃ³ ca nÃ o)</td></tr>)r4   Úcursorr1   ÚfetchallÚfetchoneÚcloser   rx   rh   ri   r{   )r3   rR   r8   Ún_luatÚn_qtro   s         r   Útrang_chinhrŽ   ´   s  € Ý
‰(Œ(€CØ�
Š
‰Œ€AØ	
�Šð .ñ 
/ô 
/ß/7ªx©z¬zð à�YŠYÐ8Ñ9Ô9×BÒBÑDÔDÀQÔG€FØ�9Š9Ð5Ñ6Ô6×?Ò?ÑAÔAÀ!ÔD€DØ‡I‚I�K„K€KØ�7Š7ð  ð  ð ð ñ  ô  ñ  ô  €Dðõ0 ˜$ ­¬µNÑ4DÔ4DÑ(EÔ(EÀtð  HCð  PCð  Dñ1Dð Dr   c                 ón  — | d         dv }t          ¦   «         \  }}}}|dk    rd|›d|›d|›�nd}| d         pd	}d	}	|rAt          j                             |¦  «        r"d
t          j                             |¦  «        z  }	d	}
| d         r…t          j                             | d         ¦  «        r`t          t          | d         d¬¦  «         	                    ¦   «         ¦  «        }
|
 
                    dd	¦  «         
                    dd	¦  «        }
d	}| d         r[t          j                             | d         ¦  «        r6t          t          | d         d¬¦  «         	                    ¦   «         ¦  «        }	 t          j        | d         pd¦  «        }n# t          $ r i }Y nw xY wd	}| d         �r#| d         �s|                     d¦  «        pi }|                     d¦  «        pg }|                     d¦  «        pg }d	                     d„ |                     d¦  «        pg D ¦   «         ¦  «        }d	                     d„ |D ¦   «         ¦  «        }dt!          j        t%          |                     dd	¦  «        ¦  «        d d…         ¦  «        t!          j        t%          |                     dd	¦  «        ¦  «        d d…         ¦  «        t!          j        t%          |                     dd	¦  «        ¦  «        d d …         ¦  «        t!          j        t%          |                     d!d	¦  «        ¦  «        d d …         ¦  «        t'          |¦  «        |rd"|z  nd	|rd#|z  nd$|                     d%¦  «        rRd&t!          j        d'                     t)          t$          |                     d%¦  «        pg ¦  «        ¦  «        ¦  «        z  nd	| d(         f	z  }d	}| d         rd)| d*         ›d+| d,         ›d-| d.         ›d/�}n>| d         r6d0| d(         ›d1t!          j        | d2         pd	¦  «        ›d3| d         rd4nd5›d6�}d7| d8         fd9| d:         fd;| d<         fg}d	                     d=„ |D ¦   «         ¦  «        }d	}|                     d>¦  «        r|d?z  }|                     d@¦  «        r|dAz  }dBt!          j        |                      dC¦  «        pd	pt+          ¦   «         pdD¦  «        ›dE|›dF| d(         ›dG|›dH�	}d	                     g dI‘| d(         ›‘dJ‘|rdKnd	›‘dL‘t,          ›‘dM‘| d(         ›‘dN‘t/          | d         ¦  «        ›‘dO‘t!          j        | d         pdP¦  «        ›‘dQ‘t!          j        | d         pdP¦  «        ›‘dR‘t!          j        | d!         pdP¦  «        ›‘dS‘t!          j        | dT         pdP¦  «        ›‘dU‘| dV         ›‘dW‘|›‘dX‘t!          j        | dY         pdP¦  «        ›‘dZ‘t!          j        | d[         pdP¦  «        ›‘d\‘|›‘|	›‘d]‘|
pd^›‘d_‘|pd`›‘|›‘d_‘|›‘da‘¦  «        S )bNr6   )rB   rD   Ú	dang_chayu!   <b>Agent Ä‘ang xá»­ lÃ½:</b> ca #u    Â· bÆ°á»›c u	    Â· tá»« u   <b>Agent Ä‘ang ráº£nh</b>Úanh_vaor:   z4<p><img src="tep?p=%s" style="max-height:420px"></p>Úde_nghi_filer	   r
   z```jsonr\   Úphan_tich_fileÚde_xuat_jsonz{}rF   Úquy_trinh_moiÚluat_moir9   c              3   ó  K  — | �] }d t          j        t          |                     dd¦  «        ¦  «        dd…         ¦  «        ›dt          j        t          |                     dd¦  «        ¦  «        dd…         ¦  «        ›dt          j        t          |                     dd¦  «        ¦  «        dd…         ¦  «        ›dt          j        t          |                     d	d¦  «        ¦  «        dd
…         ¦  «        ›d�	V — �ŒdS )ú<tr><td>Ú	cong_doanr:   NéP   r   Úde_nghié    Úthuc_teÚloair„   r…   ©rh   ri   Ústrr?   )rQ   Úbs     r   r[   z!trang_chi_tiet.<locals>.<genexpr>ô   s  è è € ð ;ñ ;ð ˜õ œ¥C¨¯ª¨k¸2Ñ(>Ô(>Ñ$?Ô$?ÀÀÀÔ$DÑEÔEÐEÐEÅtÄ{ÕSVÐWX×W\ÒW\Ð]fÐhjÑWkÔWkÑSlÔSlÐmqÐnqÐmqÔSrÑGsÔGsÐGsÐGsÝœ¥C¨¯ª¨i¸Ñ(<Ô(<Ñ$=Ô$=¸d¸s¸dÔ$CÑDÔDÐDÐDÅdÄkÕRUÐVW×V[ÒV[Ð\bÐdfÑVgÔVgÑRhÔRhÐilÐjlÐilÔRmÑFnÔFnÐFnÐFnðpð ;ð ;ð ;ñ ;ð ;ð ;r   Ú	khac_bietc              3   ó�  K  — | ]Á}d t          j        t          |                     dd¦  «        ¦  «        dd…         ¦  «        ›dt          j        t          |                     dd¦  «        ¦  «        dd…         ¦  «        ›dt          j        t          |                     d	d¦  «        ¦  «        dd
…         ¦  «        ›d�V — ŒÂdS )z<li><b>Únhomr:   Nr„   u	   </b> â€” Úquy_taci,  z	 <small>(Úpham_virš   z)</small></li>rŸ   )rQ   Úls     r   r[   z!trang_chi_tiet.<locals>.<genexpr>ø   sì   è è € ð ð ØtuÐtuõ IMÌÕTWÐXY×X]ÒX]Ð^dÐfhÑXiÔXiÑTjÔTjÐknÐlnÐknÔToÑHpÔHpÐHpÐHpÝ”[¥ Q§U¢U¨9°bÑ%9Ô%9Ñ!:Ô!:¸4¸C¸4Ô!@ÑAÔAÐAÐAÅ4Ä;ÍsÐST×SXÒSXÐYbÐdfÑSgÔSgÑOhÔOhÐilÐjlÐilÔOmÑCnÔCnÐCnÐCnðpð ð ð ð ð ð r   uU  <h3 style="margin-top:18px;color:#8a4a00">Ä�á»€ XUáº¤T GHI VÃ€O CSDL A â€” chÆ°a ghi</h3><p><b>Quy trÃ¬nh má»›i:</b> %s <small>(%s Â· %s Â· %s Â· %d bÆ°á»›c)</small></p>%s%s%s<form method="post" action="ghi?id=%s" style="margin-top:10px"><label>Nháº­p máº­t kháº©u xÃ¡c nháº­n Ä‘á»ƒ GHI vÃ o CSDL A</label><input type="password" name="mat_khau" required style="max-width:240px"><button type="submit">XÃ¡c nháº­n &amp; ghi vÃ o CSDL A</button></form><p><small>ChÆ°a nháº­p máº­t kháº©u thÃ¬ CSDL A giá»¯ nguyÃªn â€” agent chá»‰ Ä‘á»� xuáº¥t. Há»‡ thá»‘ng backup CSDL A trÆ°á»›c khi ghi.</small></p>ÚtenéÈ   Úhe_soné(   Úma_maur„   Úloai_nenux   <table class="b"><tr><th>CÃ´ng Ä‘oáº¡n</th><th>Ä�á»� nghá»‹</th><th>Thá»±c táº¿</th><th>KhÃ¡c biá»‡t</th></tr>%s</table>u.   <p><b>Luáº­t má»›i rÃºt ra:</b></p><ul>%s</ul>u.   <p><small>KhÃ´ng cÃ³ luáº­t má»›i.</small></p>Úxung_dotu?   <p style="color:#8a1414"><b>Cáº£nh bÃ¡o xung Ä‘á»™t:</b> %s</p>ú; ÚiduR   <p style="color:#0b5c2e"><b>âœ“ Ä�Ã£ bá»• sung CSDL A:</b> quy trÃ¬nh má»›i <b>id Ú	qt_moi_idu   </b> Â· Úso_luat_themu    luáº­t má»›i Â· lÃºc Úngay_bo_sungz</p>u¦  <h3 style="margin-top:18px">2. Nháº­p QUY TRÃŒNH THá»°C Táº¾ cá»§a báº£n mÃ u nÃ y</h3><p><small>DÃ¡n nguyÃªn vÄƒn quy trÃ¬nh mÃ  báº£n mÃ u Ä‘Ã£ thá»±c sá»± Ä‘Æ°á»£c lÃ m (cÃ¡c bÆ°á»›c, loáº¡i sÆ¡n/bÃ³ng, tá»‰ lá»‡, dung mÃ´i, thá»�i gian khÃ´, cÃ¡ch thi cÃ´ng, sá»‘ láº§n lÃ³t/bÃ³ngâ€¦).CÃ ng chi tiáº¿t, agent cÃ ng rÃºt ra Ä‘Æ°á»£c nhiá»�u Ä‘á»ƒ bá»• sung CSDL A.</small></p><form method="post" action="nop-thuc-te?id=uá   "><textarea name="thuc_te" style="min-height:220px" placeholder="VD:
1/ LÃ m áº©m + chÃ  nhÃ¡m #180
2/ Nhuá»™m ná»�n stain AQ 455 100:5 dung mÃ´i BT 07H, lau Ä‘á»�u, khÃ´ 30 phÃºt
3/ LÃ³t NC KH pha (1-1) + 10% Ä‘en TCL3 ...">Úthuc_te_textz!</textarea><button type="submit">u!   Gá»­i láº¡i cho agent phÃ¢n tÃ­chu,   Gá»­i cho agent phÃ¢n tÃ­ch & Ä‘á»‘i chiáº¿uz</button></form>u   Ä�á»� nghá»‹ quy trÃ¬nhÚbao_pu   PhÃ¢n tÃ­ch & Ä‘á»‘i chiáº¿uÚbao_cu   Ghi vÃ o CSDL AÚbao_ghic              3   óÀ   K  — | ]Y\  }}d |›d|pd                      d¦  «        rdt          j        |¦  «        z  n|rdt          j        |pd¦  «        z  nd›d�V — ŒZdS )	z<li>z: r:   u
   Ä‘Ã£ gá»­iu#   <b style="color:#0b5c2e">âœ” %s</b>z<b style="color:#8a1414">%s</b>u   <i>chÆ°a cÃ³</i>z</li>N)rc   rh   ri   )rQ   rv   r¡   s      r   r[   z!trang_chi_tiet.<locals>.<genexpr>  sÂ   è è € ð (ð (á˜1˜a˜að -.¨A¨AÐlmÐlsÐqs×kÒkð  AMñ  lNô  lNð 0IÐ0UÕX\ÔXcÐdeÑXfÔXfÑ0fÐ0fØopð  2IÐ2SÕVZÔVaÐbcÐbiÐgiÑVjÔVjÑ2jÐ2jð  wIð0Ið 0Ið Jð (ð (ð (ð (ð (ð (r   Úsai_passu´   <p style="background:#ffe4cc;border-radius:8px;padding:8px 12px"><b>Sai máº­t kháº©u xÃ¡c nháº­n â€” CSDL A CHÆ¯A thay Ä‘á»•i.</b> Thá»­ láº¡i á»Ÿ Ã´ máº­t kháº©u bÃªn dÆ°á»›i.</p>Úda_baous   <p style="background:#d6f4e0;border-radius:8px;padding:8px 12px"><b>Ä�Ã£ gá»­i láº¡i thÃ´ng bÃ¡o qua email.</b></p>u�   <div style="margin-top:10px;border-top:1px solid #dfe3e8;padding-top:8px"><b>ThÃ´ng bÃ¡o cho ngÆ°á»�i dÃ¹ng qua email:</b> <code>Úemailu   (chÆ°a Ä‘áº·t)z</code><ul>z,</ul><form method="post" action="bao-lai?id=un   "><button type="submit" class="phu" style="padding:7px 14px">Gá»­i láº¡i thÃ´ng bÃ¡o qua email</button></form>z</div>uH   <!doctype html><html lang="vi"><meta charset="utf-8"><title>HLQT Â· Ca #z</title>
<base href="./">z(<meta http-equiv="refresh" content="10">z<style>u    </style>
<header><b>HLQT Â· CA #z
</b><span>u=   </span></header>
<main>
<div class="the"><p><b>MÃ£ mÃ u:</b> õ   â€”u    Â· <b>Há»‡ sÆ¡n:</b> u    Â· <b>Ná»�n:</b> u    Â· <b>NgÆ°á»�i nháº­p:</b> Ú
nguoi_nhapu    Â· <b>LÃºc:</b> Útao_lucz</p>
<p><small>u*   </small></p>
<p><small><b>YÃªu cáº§u:</b> Úyeu_cauu(   </small></p>
<p><small><b>Ghi chÃº:</b> Úghi_chuz</small></p>uù   
<p><small><a href="./">â†� Náº¡p báº£n mÃ u má»›i</a> Â· <a href="danh-sach">Danh sÃ¡ch ca</a></small></p></div>
<div class="the"><h3 style="margin-top:0">1. Quy trÃ¬nh Ä�Æ¯á»¢C Ä�á»€ NGHá»Š (agent chá»�n 1 quy trÃ¬nh sÃ¡t nháº¥t tá»« CSDL A)</h3>
uu   <p><small>Agent Ä‘ang Ä‘á»�c báº£n mÃ u vÃ  chá»�n quy trÃ¬nhâ€¦ (trang tá»± cáº­p nháº­t má»—i 10 giÃ¢y)</small></p>z</div>
<div class="the">ug   <p><small>ChÆ°a cÃ³ phÃ¢n tÃ­ch â€” nháº­p quy trÃ¬nh thá»±c táº¿ á»Ÿ má»¥c 2 bÃªn dÆ°á»›i.</small></p>z</div>
</main></html>)rA   r   r   ÚexistsÚurllibÚparseÚquoters   r   r   Úreplacer<   Úloadsr   r?   r   rh   ri   r    ra   Úmapr{   rx   rL   )ÚvÚqÚ	chua_xongÚnhip_ttÚnhip_caÚ	nhip_buocÚnhip_lucÚ	dong_nhipÚanhÚanh_htmlr›   Ú	phan_tichÚdxÚkhoi_ghiÚqtÚluatr9   ÚkbÚklÚo_nhapÚbaoÚdong_baoÚcanh_bao_uiÚkhoi_baos                           r   Útrang_chi_tietrÞ   Û   s	  € Ø�,”Ð#CÐC€IÝ,7©M¬MÑ)€GˆW�i à�kÒ!Ð!Ð!ð T[ÐSZÐSZÐ\eÐ\eÐ\eÐgoÐgoÐpÐpØ'Bð à
ˆIŒ,Ð
˜"€CØ€HØ
ð d�rŒw�~Š~˜cÑ"Ô"ð dØIÍFÌL×L^ÒL^Ð_bÑLcÔLcÑcˆØ€GØˆÔð D�RœWŸ^š^¨A¨nÔ,=Ñ>Ô>ð DÝ�t A nÔ$5ÀÐHÑHÔH×MÒMÑOÔOÑPÔPˆØ—/’/ )¨RÑ0Ô0×8Ò8¸ÀÑCÔCˆØ€IØÐ	Ôð U�rœwŸ~š~¨aÐ0@Ô.AÑBÔBð UÝ ¥ aÐ(8Ô&9ÀGÐ!LÑ!LÔ!L×!QÒ!QÑ!SÔ!SÑTÔTˆ	ðÝŒZ˜˜.Ô)Ð1¨TÑ2Ô2ˆˆøÝð ð ð Øˆˆˆðøøøà€HØÐ	Ôñ ! 1 \¤?ñ !Ø�VŠV�OÑ$Ô$Ð*¨ˆØ�vŠv�jÑ!Ô!Ð' RˆØ�vŠv�f‰~Œ~Ð# ˆØ�WŠWð ;ð ;ð  "Ÿvšv kÑ2Ô2Ð8°bð;ñ ;ô ;ñ ;ô ;ˆð �WŠWð ð Øy}ðñ ô ñ ô ˆðkõ ”{¥3 r§v¢v¨e°RÑ'8Ô'8Ñ#9Ô#9¸$¸3¸$Ô#?Ñ@Ô@Å$Ä+ÍcÐRT×RXÒRXÐYaÐceÑRfÔRfÑNgÔNgÐhkÐikÐhkÔNlÑBmÔBmÝ”{¥3 r§v¢v¨h¸Ñ';Ô';Ñ#<Ô#<¸S¸b¸SÔ#AÑBÔBÅDÄKÕPSÐTV×TZÒTZÐ[eÐgiÑTjÔTjÑPkÔPkÐloÐmoÐloÔPpÑDqÔDqÕsvÐw{Ñs|Ôs|ð ]_ð  gð  Sð  VXñ  Xð  Xð  egØRTð  KÐHÈ2ÑMÐMð  [Kð \^÷  \bò  \bð  cmñ  \nô  \nð  vÐYÕ\`Ô\gÐhl×hqÒhqÕruÕvyÐ{}÷  |Bò  |Bð  CMñ  |Nô  |Nð  |Tð  RTñ  sUô  sUñ  iVô  iVñ  ]Wô  ]Wñ  Wð  Wð  tvØ˜”wð ñ ˆð €FØˆ„ð Fð Fà�{”^�^�^ Q ~Ô%6Ð%6Ð%6¸¸.Ô8IÐ8IÐ8IðKˆˆà	
ˆ>Ô	ð Fð Fð �t”W�W�W�dœk¨!¨NÔ*;Ð*A¸rÑBÔBÐBÐBØ<=Ð>NÔ<Oð  DÐ8Ð8ð  VDð  Dð  DðEˆð & q¨¤zÐ2Ð5SÐUVÐW^ÔU_Ð4`ÐctÐvwð  yBô  wCð  cDð  E€CØ�wŠwð (ð (à#&ð(ñ (ô (ñ (ô (€Hð €KØ‡u‚uˆZÑÔð OØð Nñ 	Oˆà‡u‚uˆX�„ð MØð  Mñ  	Mˆøõ ”; §¢ g¡¤Ð 4°"Ð]½Ñ9IÔ9IÐ]ÐM]Ñ^Ô^Ð^Ð^Ð`hÐ`hÐ`hÐjkÐlpÔjqÐjqÐjqÐs~Ðs~Ðs~ð@€Hð'÷ 'ò 'ð 'ð 'ð 'ð �t”W�Wð'ð 'ð 'ð MVÐ]ÐHÐHÐ[]Ð]ð'ð 'ð 'õ `cÐ_bð'ð 'ð 'ð efÐfjÔdkÐdkð'ð 'ð 'õ nuÐuvð  xDô  vEñ  nFô  nFð  nFð'ð 'ð 'õ ”[  8¤Ð!5°Ñ6Ô6Ð6ð'ð 'ð 'õ 9=¼ÀAÀhÄKÐDXÐSXÑ8YÔ8YÐ8Yð'ð 'ð 'õ \`Ô[fÐghÐisÔgtÐg}Ðx}Ñ[~Ô[~Ð[~ð'ð 'ð 'õ ”[  <¤Ð!9°EÑ:Ô:Ð:ð'ð 'ð 'ð =>¸i¼L¸Lð'ð 'ð 'ð KTÈ)ð'ð 'ð 'õ VZÔU`ÐabÐclÔamÐavÐqvÑUwÔUwÐUwð'ð 'ð 'õ  ”[  9¤Ð!6°Ñ7Ô7Ð7ð!'ð 'ð 'ð  :B¸ð!'ð  DLÀ8ð!'ð 'ð 'ð" ð  Xð  !Xð  Xð#'ð 'ð 'ð$ ð  Lð  #Lð  Lð%'ð& �Xð''ð 'ð 'ð&  &˜vð''ð 'ð 'ñ 'ô 'ð 's   Å5F ÆF!Æ F!c                  ó  — t          ¦   «         } |                      ¦   «         }|                     d¦  «                             ¦   «         }|                      ¦   «          d                     d„ |D ¦   «         ¦  «        }dt          ›d|pd›d�S )NzxSELECT id,tao_luc,ma_mau,trang_thai,de_nghi_qt_ten,da_bo_sung,qt_moi_id,so_luat_them FROM huan_luyen_ca ORDER BY id DESCr:   c              3   óB  K  — | ]š}d |d         ›d|d         ›d|d         ›dt          j        |d         pd¦  «        ›dt          |d	         ¦  «        ›dt          j        |d
         pddd…         ¦  «        ›d|d         rd|d         ›d|d         ›d�nd›d�V — Œ›dS )r~   r   r   rO   r€   rI   r_   r¼   r�   r^   r]   r:   NéF   rƒ   u
   âœ“ QT id r‚   u    Â· é   u    luáº­tr…   r†   r‡   s     r   r[   z"trang_danh_sach.<locals>.<genexpr>?  så   è è € ð dð dð \]Ð[\ð ˜”d�d�d˜A˜aœD˜D˜D ! A¤$ $ $­¬°A°a´D°M¸EÑ(BÔ(BÐ(BÐ(BÅGÈAÈaÌDÁMÄMÀMÀMÝ”k 1 Q¤4 :¨2¨s°¨sÔ"3Ñ4Ô4Ð4Ð4ØFGÈÄdÐUÐU°a¸´d°d°d¸A¸a¼D¸D¸DÐAÐAÐPUÐUÐUðWð dð dð dð dð dð dr   uq   <!doctype html><html lang="vi"><meta charset="utf-8"><title>HLQT Â· Danh sÃ¡ch ca</title>
<base href="./"><style>u7  </style>
<header><b>HLQT Â· DANH SÃ�CH CA HUáº¤N LUYá»†N</b><span><a style="color:#cfe8d8" href="./">náº¡p báº£n mÃ u má»›i</a></span></header>
<main><div class="the"><table class="b"><tr><th>Ca</th><th>LÃºc</th><th>MÃ£ mÃ u</th><th>Tráº¡ng thÃ¡i</th><th>Quy trÃ¬nh Ä‘á»� nghá»‹</th><th>Ä�Ã£ bá»• sung</th></tr>u,   <tr><td colspan="6">(chÆ°a cÃ³ ca)</td></tr>z</table></div></main></html>)r4   rˆ   r1   r‰   r‹   r   rx   ©r3   rR   Úrsro   s       r   Útrang_danh_sachrå   9  s¨   € Ý
‰(Œ(€CØ�
Š
‰Œ€AØ	
�Šð &ñ 
'ô 
'ß'/¢x¡z¤zð à‡I‚I�K„K€KØ�7Š7ð dð dð acðdñ dô dñ dô d€D€Dõ ˆ3ˆ3�ÐFÐFÐFÐFð	Hð Hr   c                  ó.  — t          ¦   «         } |                      ¦   «         }|                     d¦  «                             ¦   «         }|                      ¦   «          d                     d„ |D ¦   «         ¦  «        }dt          t          |¦  «        |fz  S )NzUSELECT id,ngay,nhom,quy_tac,pham_vi,trang_thai,nguon FROM huan_luyen ORDER BY id DESCr:   c              3   ó’  K  — | ]Â}d |d         ›d|d         ›dt          j        |d         pd¦  «        ›dt          j        |d         pddd…         ¦  «        ›dt          j        |d	         pddd
…         ¦  «        ›dt          j        |d         pd¦  «        ›dt          j        |d         pddd
…         ¦  «        ›d�V — ŒÃdS )r˜   r   r   rO   r_   r:   r^   Ni¤  r]   éZ   rƒ   r‚   r…   )rh   ri   r‡   s     r   r[   ztrang_luat.<locals>.<genexpr>O  s  è è € ð \ð \àSTÐSTð ˜”d�d�d˜A˜aœD˜D˜D¥$¤+¨a°¬d¨j°bÑ"9Ô"9Ð"9Ð"9½4¼;ÈÈ!ÌÈ
ÐPRÐTXÐUXÐTXÔGYÑ;ZÔ;ZÐ;ZÐ;ZÕ\`Ô\gÐijÐklÔimÐisÐqsÐuxÐvxÐuxÔhyÑ\zÔ\zÐ\zÐ\zÝ”k ! A¤$ *¨"Ñ-Ô-Ð-Ð-­t¬{¸A¸a¼D¸JÀBÈÈÈÔ;LÑ/MÔ/MÐ/MÐ/MðOð \ð \ð \ð \ð \ð \r   uÕ  <!doctype html><html lang="vi"><meta charset="utf-8"><title>HLQT Â· Luáº­t Ä‘Ã£ há»�c</title>
<base href="./"><style>%s</style>
<header><b>HLQT Â· LUáº¬T HUáº¤N LUYá»†N TRONG CSDL A</b><span>%d luáº­t</span></header>
<main><div class="the"><table class="b"><tr><th>#</th><th>NgÃ y</th><th>NhÃ³m</th><th>Quy táº¯c</th><th>Pháº¡m vi</th><th>Tráº¡ng thÃ¡i</th><th>Nguá»“n</th></tr>%s</table></div>
<p><small><a href="./">â†� vá»� trang chÃ­nh</a></small></p></main></html>)r4   rˆ   r1   r‰   r‹   r   rx   ra   rã   s       r   Ú
trang_luatré   J  s¤   € Ý
‰(Œ(€CØ�
Š
‰Œ€AØ	
�ŠÐjÑ	kÔ	k×	tÒ	tÑ	vÔ	v€BØ‡I‚I�K„K€KØ�7Š7ð \ð \àXZð\ñ \ô \ñ \ô \€DðNõ RUÕVYÐZ\ÑV]ÔV]Ð_cÐPdñ	eð er   c                   óJ   — e Zd ZdZd„ Zdd„Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ ZdS )ÚHzHLQT/1.0c                 ó   — d S ©Nr   )ÚselfÚas     r   Úlog_messagezH.log_message]  s   € Øˆr   útext/html; charset=utf-8c                 ó¾  — d|v r#d|v r|                      ddt          z   d¦  «        }|                      |¦  «         |                      d|¦  «         |                      dt	          t          |¦  «        ¦  «        ¦  «         |                      dd¦  «         |                      dd	¦  «         |                      ¦   «          | j                             |¦  «         d S )
Nz	text/htmls   <base href="./">rO   úContent-TypeúContent-LengthzCache-Controlzno-store, must-revalidateÚPragmazno-cache)	rÅ   ÚBASE_JSÚsend_responseÚsend_headerr    ra   Úend_headersÚwfileÚwrite)rî   ÚmaÚndrž   s       r   Ú_guizH._gui`  sÝ   € à˜$ÐÐÐ#6¸"Ð#<Ð#<Ø—’Ð/Ð1DÅwÑ1NÐPQÑRÔRˆBØ×Ò˜2ÑÔÐØ×Ò˜¨Ñ.Ô.Ð.Ø×ÒÐ)­3­s°2©w¬w©<¬<Ñ8Ô8Ð8Ø×Ò˜Ð*EÑFÔFÐFØ×Ò˜ :Ñ.Ô.Ð.Ø×ÒÑÔÐØŒ
×Ò˜ÑÔÐÐÐr   c                 ó‚   — |                       dt          j        |d¬¦  «                             d¦  «        d¦  «         d S )Nr©   F©Úensure_asciir	   zapplication/json; charset=utf-8)rþ   r<   Údumpsr)   )rî   rZ   s     r   Ú_jsonzH._jsonl  s<   € Ø�	Š	�#•t”z !°%Ð8Ñ8Ô8×?Ò?ÀÑHÔHÐJkÑlÔlÐlÐlÐlr   c                 ón  — i }| j                              d¦  «        pd                     d¦  «        D ]H}d|v rB|                     dd¦  «        \  }}|                     ¦   «         ||                     ¦   «         <   ŒI|                     d¦  «        o&t	          j        |d         t          ¦   «         ¦  «        S )NÚCookier:   ú;ú=rO   Úahlqt)Úheadersr?   r`   r   ÚhmacÚcompare_digestr,   )rî   rR   Úprp   rÈ   s        r   Ú	_cho_phepzH._cho_phepo  s›   € ØˆØ”,×"Ò" 8Ñ,Ô,Ð2°×9Ò9¸#Ñ>Ô>ð 	)ð 	)ˆAØ�aˆxˆxØ—w’w˜s A‘”‘��1Ø Ÿwšw™yœy��!—'’'‘)”)‘øØ�uŠu�W‰~Œ~ÐM¥$Ô"5°a¸´jÅ(Á*Ä*Ñ"MÔ"MÐMr   c                 óÊ	  — t           j                             t           j                             | j        ¦  «        j        ¦  «        }t           j                             | j        ¦  «        j        }|dv r~|                      ¦   «         s5|                      dt          ¦   «          	                    d¦  «        ¦  «        S |                      dt          ¦   «          	                    d¦  «        ¦  «        S |dk    rœt          ¦   «         }|                     d|                     ddg¦  «        d         f¦  «                             ¦   «         }|                     ¦   «          |                      |r|d         nd	|r|d
         pdd d…         nddœ¦  «        S |dk    �r|                     ddg¦  «        d         }t"          j                             |¦  «        }|                     t"          j                             t(          ¦  «        ¦  «        r>t"          j                             |¦  «        rt"          j                             |¦  «        r|                      dd¦  «        S |                      dt/          |d¦  «                             ¦   «         t3          j        |¦  «        d         pd¦  «        S |                      ¦   «         s5|                      dt          ¦   «          	                    d¦  «        ¦  «        S |dk    rW|                      d¦  «         |                      dd¦  «         |                      dd¦  «         |                      ¦   «          d S |dk    r5|                      dt=          ¦   «          	                    d¦  «        ¦  «        S |dk    r5|                      dt?          ¦   «          	                    d¦  «        ¦  «        S |dk    rút          ¦   «         }|                      ¦   «         }tB          j"        |_#        |                     d|                     ddg¦  «        d         f¦  «                             ¦   «         }|                     ¦   «          |s)|                      dd 	                    d¦  «        ¦  «        S |                      dtI          tK          |¦  «        |¦  «         	                    d¦  «        ¦  «        S |                      dd¦  «        S ) N)ú
/dang-nhapú/r©   r	   z/trang-thaiz3SELECT trang_thai,loi FROM huan_luyen_ca WHERE id=?r°   Ú0r   z
khong-thayrO   r:   i�  )r6   rG   z/tepr  é”  ó   xÚrbzapplication/octet-streamz/thoaté.  ú
Set-Cookiezahlqt=; Path=/; Max-Age=0ÚLocationú./z
/danh-sachz/luatz/caz&SELECT * FROM huan_luyen_ca WHERE id=?u   <h3>KhÃ´ng tháº¥y ca</h3>ó   <h3>Khong thay</h3>)&rÂ   rÃ   Úparse_qsÚurlparser   Úqueryr  rþ   ry   r)   rŽ   r4   r1   r?   rŠ   r‹   r  r   Únormpathrc   ÚGOCrÁ   Úisdirr   r   Ú	mimetypesÚ
guess_typer÷   rø   rù   rå   ré   rˆ   r.   ÚRowÚrow_factoryrÞ   Údict)rî   rÉ   Úduongr3   rq   r  rR   rÈ   s           r   Údo_GETzH.do_GETw  s$  € ÝŒL×!Ò!¥&¤,×"7Ò"7¸¼	Ñ"BÔ"BÔ"HÑIÔIˆÝ”×%Ò% d¤iÑ0Ô0Ô5ˆØÐ'Ð'Ð'Ø—>’>Ñ#Ô#ð IØ—y’y ¥oÑ&7Ô&7×&>Ò&>¸wÑ&GÔ&GÑHÔHÐHØ—9’9˜S¥+¡-¤-×"6Ò"6°wÑ"?Ô"?Ñ@Ô@Ð@Ø�MÒ!Ð!Ý‘(”(ˆCØ—’ÐQÐTU×TYÒTYÐZ^ÐadÐ`eÑTfÔTfÐghÔTiÐSkÑlÔl×uÒuÑwÔwˆAØ�IŠI‰KŒKˆKØ—:’:°QÐ-H¨Q¨q¬T¨T¸LÐghÐQpÐRSÐTUÔRVÐR\ÐZ\Ð^bÐ_bÐ^bÔQcÐQcÐnpÐqÐqÑrÔrÐrØ�FŠ?‰?Ø—’�c˜B˜4Ñ Ô  Ô#ˆAÝ”× Ò  Ñ#Ô#ˆAØ—<’<¥¤× 0Ò 0µÑ 5Ô 5Ñ6Ô6ð ,½b¼g¿nºnÈQÑ>OÔ>Oð ,ÕSUÔSZ×S`ÒS`ÐabÑScÔScð ,Ø—y’y  dÑ+Ô+Ð+Ø—9’9˜S¥$ q¨$¡-¤-×"4Ò"4Ñ"6Ô"6½	Ô8LÈQÑ8OÔ8OÐPQÔ8RÐ8pÐVpÑqÔqÐqØ�~Š~ÑÔð 	EØ—9’9˜S¥/Ñ"3Ô"3×":Ò":¸7Ñ"CÔ"CÑDÔDÐDØ�HÒÐØ×Ò˜sÑ#Ô#Ð#Ø×Ò˜\Ð+FÑGÔGÐGØ×Ò˜Z¨Ñ.Ô.Ð.Ø×ÒÑÔÐØˆFØ�LÒ Ð Ø—9’9˜S¥/Ñ"3Ô"3×":Ò":¸7Ñ"CÔ"CÑDÔDÐDØ�GÒÐØ—9’9˜S¥*¡,¤,×"5Ò"5°gÑ">Ô">Ñ?Ô?Ð?Ø�EŠ>ˆ>Ý‘(”(ˆCØ—
’
‘”ˆAÝ#œKˆAŒMØ—	’	ÐBÀQÇUÂUÈ4ÐRUÐQVÑEWÔEWÐXYÔEZÐD\Ñ]Ô]×fÒfÑhÔhˆAØ�IŠI‰KŒKˆKØð SØ—y’y Ð&A×&HÒ&HÈÑ&QÔ&QÑRÔRÐRØ—9’9˜S¥.µ°a±´¸!Ñ"<Ô"<×"CÒ"CÀGÑ"LÔ"LÑMÔMÐMØ�yŠy˜Ð4Ñ5Ô5Ð5r   c           	      ó<  — t          | j                             d¦  «        pd¦  «        }| j                             dd¦  «        }| j                             |¦  «        }t          j        t          j        |¦  «        | j        d|t          |¦  «        dœ¬¦  «        S )un   Ä�á»�c form (ká»ƒ cáº£ multipart) â€” KHÃ”NG dÃ¹ng truthiness trÃªn FieldStorage (Python 3.11 nÃ©m TypeError).rô   r   ró   r:   ÚPOST)ÚREQUEST_METHODÚCONTENT_TYPEÚCONTENT_LENGTH)Úfpr	  Úenviron)
Úintr	  r?   Úrfiler   ÚcgiÚFieldStorageÚioÚBytesIOr    )rî   ÚdaiÚctÚthans       r   Ú_fszH._fs   s•   € å�$”,×"Ò"Ð#3Ñ4Ô4Ð9¸Ñ:Ô:ˆØŒ\×Ò˜n¨bÑ1Ô1ˆØŒz�Š˜sÑ#Ô#ˆÝÔ¥2¤:¨dÑ#3Ô#3¸T¼\Ø;AÐSUÕilÐmpÑiqÔiqÐ(rÐ(rðtñ tô tð 	tr   c                 óT   — t           j                             | j        ¦  «        j        S rí   )rÂ   rÃ   r  r   ©rî   s    r   r%  zH.duong¨  s   € ÝŒ|×$Ò$ T¤YÑ/Ô/Ô4Ð4r   c                 óŽ   — t           j                             t           j                             | j        ¦  «        j        ¦  «        S rí   )rÂ   rÃ   r  r  r   r  r9  s    r   rÉ   zH.q«  s-   € ÝŒ|×$Ò$¥V¤\×%:Ò%:¸4¼9Ñ%EÔ%EÔ%KÑLÔLÐLr   c                 óˆ  ‡— t           j                             | j        ¦  «        j        }t           j                             t           j                             | j        ¦  «        j        ¦  «        }|dk    rÖ|                      ¦   «         }|                     dd¦  «        t          ¦   «         k    rf|  	                    d¦  «         |  
                    ddt          ¦   «         z  ¦  «         |  
                    dd¦  «         |                      ¦   «          d S |                      d	t          d
¦  «                             d¦  «        ¦  «        S |                      ¦   «         s|                      dd¦  «        S |dk    �rä|                      ¦   «         }t#          ¦   «         }|                     dt'          j        d¦  «        |                     dd¦  «        |                     dd¦  «        |                     dd¦  «        |                     dd¦  «        |                     dd¦  «        |                     dd¦  «        d|                     dd¦  «        pd                     ¦   «         pt-          ¦   «         f	¦  «        }|j        }|                     ¦   «          |                     ¦   «          t4          j                             t8          d|t'          j        d¦  «        fz  ¦  «        Št5          j        t4          j                             ‰d¦  «        d¬¦  «         g }ˆfd„}d|v r)t=          |d         d d¦  «        r ||d         d¦  «        nd }	d!|v rt=          |d!         d d¦  «        r|d!         nd }
|
�@t?          |
t@          ¦  «        r|
n|
gD ]%} ||d!¦  «        }|r| !                    |¦  «         Œ&t#          ¦   «         }|                     d"|	tE          j#        |d#¬$¦  «        |f¦  «         |                     ¦   «          |                     ¦   «          |  	                    d¦  «         |  
                    dd%|z  ¦  «         |                      ¦   «          d S |d&k    �rÇ|                      ¦   «         }tI          | %                    d'd(g¦  «        d)         ¦  «        }|                     d*d¦  «        pd}t4          j                             t8          d|t'          j        d¦  «        fz  ¦  «        Št5          j        ‰d¬¦  «         t4          j                             ‰d+¦  «        }tM          |d,d¬-¦  «         '                    |¦  «         t#          ¦   «         }|                     d.|t'          j        d¦  «        ||f¦  «         |                     ¦   «          |                     ¦   «          tQ          d/t'          j        d0¦  «        |tS          |¦  «        fz  ¦  «         |  	                    d¦  «         |  
                    dd%|z  ¦  «         |                      ¦   «          d S |d1k    �r_|                      ¦   «         }tI          | %                    d'd(g¦  «        d)         ¦  «        }d)d l*}|j+         ,                    d2t4          j                             tZ          d3¦  «        ¦  «        }|j+         .                    |¦  «        }|j/         0                    |¦  «         	 | 1                    |¦  «        \  }}n# td          $ r}d#d4|z  }}Y d }~nd }~ww xY wtQ          d5t'          j        d0¦  «        ||fz  d¬6¦  «         |  	                    d¦  «         |  
                    dd7||rd8nd)fz  ¦  «         |                      ¦   «          d S |d9k    �r|                      ¦   «         }tI          | %                    d'd(g¦  «        d)         ¦  «        }|                     dd¦  «                             ¦   «         tg          ¦   «         k    rjtQ          d:t'          j        d0¦  «        |fz  ¦  «         |  	                    d¦  «         |  
                    dd;|z  ¦  «         |                      ¦   «          d S d)d l*}|j+         ,                    d2t4          j                             tZ          d3¦  «        ¦  «        }|j+         .                    |¦  «        }|j/         0                    |¦  «         | 4                    |¦  «        \  }}}}tQ          d<t'          j        d0¦  «        |||||r+d=d>                     tk          tl          |¦  «        ¦  «        z   ndfz  ¦  «         |  	                    d¦  «         |  
                    dd?||pd)||fz  ¦  «         |                      ¦   «          d S |                      d@dA¦  «        S )BNr  r   r:   r  r  z7ahlqt=%s; Path=/; Max-Age=43200; HttpOnly; SameSite=Laxr  r  r©   u!   Sai máº­t kháº©u â€” thá»­ láº¡i.r	   i“  s   Chua dang nhapz/tao-caz¶INSERT INTO huan_luyen_ca (tao_luc,nguoi_nhap,ma_mau,he_son,loai_nen,yeu_cau,ghi_chu,trang_thai,nguon,email)
                                 VALUES (?,?,?,?,?,?,?,'cho_de_nghi',?,?)z%Y-%m-%d %H:%M:%Sr½   r¬   rª   r­   r¿   rÀ   u   app HLQT (náº¡p báº£n mÃ u)r»   zC%04d_%sz%d%mr‘   Tr   c                 óº  •— | �t          | dd¦  «        sd S t          j                             ‰|t          j                             | j        ¦  «                             dd¦  «        ¦  «        }t          j        t          j                             |¦  «        d¬¦  «         t          |d¦  «         
                    | j                             ¦   «         ¦  «         |S )NÚfilenamer:   ú Ú_Tr   Úwb)Úgetattrr   r   r   Úbasenamer=  rÅ   ÚmakedirsÚdirnamer   rû   Úfiler   )Úfs_fieldr¨   r  r@   s      €r   Úluu_anhzH.do_POST.<locals>.luu_anhÍ  s­   ø€ ØÐ#­7°8¸ZÈÑ+LÔ+LÐ#Ø˜4Ý”G—L’L  C­¬×)9Ò)9¸(Ô:KÑ)LÔ)L×)TÒ)TÐUXÐZ]Ñ)^Ô)^Ñ_Ô_�Ý”�BœGŸOšO¨AÑ.Ô.¸Ð>Ñ>Ô>Ð>Ý�Q˜‘”×#Ò# H¤M×$6Ò$6Ñ$8Ô$8Ñ9Ô9Ð9Ø�r   rÐ   r=  Úanh_phuz9UPDATE huan_luyen_ca SET anh_vao=?, anh_khac=? WHERE id=?Fr   z
./ca?id=%dz/nop-thuc-ter°   r  r   r�   zQUY_TRINH_THUC_TE.txtÚwr
   zwUPDATE huan_luyen_ca SET thuc_te_text=?, thuc_te_luc=?, thuc_te_file=?, trang_thai='cho_phan_tich', loi=NULL WHERE id=?uY   [%s] ca #%d: Ä‘Ã£ nháº­n quy trÃ¬nh thá»±c táº¿ (%d kÃ½ tá»±) â€” chá»� agent phÃ¢n tÃ­chz%H:%M:%Sz/bao-laiÚwhlqtzworker_hlqt.pyu	   lá»—i: %su+   [%s] ca #%d: Gá»¬I Láº I THÃ”NG BÃ�O â†’ %s©Úflushz./ca?id=%d&da_bao=%drO   z/ghiu4   [%s] ca #%d: SAI máº­t kháº©u xÃ¡c nháº­n ghi CSDL Az./ca?id=%d&sai_pass=1uN   [%s] ca #%d: Ä�Ãƒ GHI CSDL A â€” quy trÃ¬nh id %s Â· %d bÆ°á»›c Â· %d luáº­t%sz | r¯   z$./ca?id=%d&da_ghi=%d&buoc=%d&luat=%dr  r  )7rÂ   rÃ   r  r   r  r  r7  Úgetvaluer   r÷   rø   r,   rù   rþ   ry   r)   r  r4   r1   r'   r(   r   r{   Ú	lastrowidr2   r‹   r   r   ÚVIECrC  rA  Ú
isinstanceÚlistrf   r<   r  r.  r?   r   rû   Úprintra   Úimportlib.utilÚutilÚspec_from_file_locationr    Úmodule_from_specÚloaderÚexec_moduleÚgui_lai_baor   r   Úghi_vao_csdlarÇ   r    )rî   r%  rÉ   Úfsr3   ÚcurÚca_idÚluurG  ÚchinhÚphuÚfr  ÚtxtÚ	importlibÚspecÚmÚokrK   ÚeÚn_buocrŒ   Úqt_idÚcanh_baor@   s                           @r   Údo_POSTz	H.do_POST®  s\	  ø€ Ý”×%Ò% d¤iÑ0Ô0Ô5ˆÝŒL×!Ò!¥&¤,×"7Ò"7¸¼	Ñ"BÔ"BÔ"HÑIÔIˆØ�LÒ Ð Ø—’‘”ˆBØ�{Š{˜: rÑ*Ô*­h©j¬jÒ8Ð8Ø×"Ò" 3Ñ'Ô'Ð'Ø× Ò  Ð/hÕksÑkuÔkuÑ/uÑvÔvÐvØ× Ò  ¨TÑ2Ô2Ð2Ø× Ò Ñ"Ô"Ð"Ø�Ø—9’9˜S¥/Ð2UÑ"VÔ"V×"]Ò"]Ð^eÑ"fÔ"fÑgÔgÐgØ�~Š~ÑÔð 	5Ø—9’9˜SÐ"3Ñ4Ô4Ð4à�IÒÑØ—’‘”ˆBÝ‘(”(ˆCØ—+’+ð Må#œ}Ð-@ÑAÔAÀ2Ç;Â;È|Ð]_ÑC`ÔC`Ðbd×bmÒbmÐnvÐxzÑb{Ôb{Ø!Ÿ{š{¨8°RÑ8Ô8¸"¿+º+ÀjÐRTÑ:UÔ:UÐWY×WbÒWbÐclÐnpÑWqÔWqØ!Ÿ{š{¨9°bÑ9Ô9Ð;XØ "§¢¨G°RÑ 8Ô 8Ð >¸B×EÒEÑGÔGÐ[Í>ÑK[ÔK[ð]ñ^ô ^ˆCð ”MˆEØ�JŠJ‰LŒLˆLØ�IŠI‰KŒKˆKÝ”—’�T :°½¼ÀfÑ8MÔ8MÐ0NÑ#NÑOÔOˆAÝŒK�œŸš Q¨	Ñ2Ô2¸TÐBÑBÔBÐBØˆCðð ð ð ð ð 7<¸r°k°kÅgÈbÐQVÌiÐYcÐegÑFhÔFh°k�G�G˜B˜uœI yÑ1Ô1Ð1ÐosˆEØ$-° O O½ÀÀ9ÄÈzÐ[]Ñ8^Ô8^ O�"�Y”-�-ÐeiˆCØˆÝ!+¨CµÑ!6Ô!6ÐA˜#˜#¸S¸Eð &ð &�AØ˜  9Ñ-Ô-�AØð &ØŸ
š
 1™œ˜øÝ‘(”(ˆCØ�KŠKÐSØ¥¤
¨3¸UÐ CÑ CÔ CÀUÐKñMô Mð Mà�JŠJ‰LŒLˆLØ�IŠI‰KŒKˆKØ×Ò˜sÑ#Ô#Ð#Ø×Ò˜Z¨¸Ñ)=Ñ>Ô>Ð>Ø×ÒÑÔÐØˆFà�NÒ"Ñ"Ø—’‘”ˆBÝ˜Ÿš˜d S EÑ*Ô*¨1Ô-Ñ.Ô.ˆEØ—+’+˜i¨Ñ,Ô,Ð2°ˆCÝ”—’�T :°½¼ÀfÑ8MÔ8MÐ0NÑ#NÑOÔOˆAÝŒK˜ DÐ)Ñ)Ô)Ð)Ý”—’˜QÐ 7Ñ8Ô8ˆAÝ��C 'Ð*Ñ*Ô*×0Ò0°Ñ5Ô5Ð5Ý‘(”(ˆCØ�KŠKð  RØ�dœmÐ,?Ñ@Ô@À!ÀUÐKñMô Mð Mà�JŠJ‰LŒLˆLØ�IŠI‰KŒKˆKÝÐmÕquÔq~ð  @Jñ  rKô  rKð  MRõ  TWð  X[ñ  T\ô  T\ð  q]ñ  ]ñ  ^ô  ^ð  ^Ø×Ò˜sÑ#Ô#Ð#Ø×Ò˜Z¨¸Ñ)=Ñ>Ô>Ð>Ø×ÒÑÔÐØˆFà�JÒÑØ—’‘”ˆBÝ˜Ÿš˜d S EÑ*Ô*¨1Ô-Ñ.Ô.ˆEØ!Ð!Ð!Ð!Ø”>×9Ò9¸'Å2Ä7Ç<Â<ÕPSÐUeÑCfÔCfÑgÔgˆDØ”×/Ò/°Ñ5Ô5ˆAØŒK×#Ò# AÑ&Ô&Ð&ð0ØŸš uÑ-Ô-‘��B�BøÝð 0ð 0ð 0Ø ¨a¡�B������øøøøð0øøøåÐ?Å4Ä=ÐQ[ÑC\ÔC\Ð^cÐegÐBhÑhÐptÐuÑuÔuÐuØ×Ò˜sÑ#Ô#Ð#Ø×Ò˜ZÐ)?À5ÈrÈ.È!È!ÐWXÐBYÑ)YÑZÔZÐZØ×ÒÑÔÐØˆFà�FŠ?‰?Ø—’‘”ˆBÝ˜Ÿš˜d S EÑ*Ô*¨1Ô-Ñ.Ô.ˆEØ�{Š{˜: rÑ*Ô*×0Ò0Ñ2Ô2µh±j´jÒ@Ð@ÝÐLÕPTÔP]Ð^hÑPiÔPiÐkpÐOqÑqÑrÔrÐrØ×"Ò" 3Ñ'Ô'Ð'Ø× Ò  Ð-DÀuÑ-LÑMÔMÐMØ× Ò Ñ"Ô"Ð"Ø�Ø!Ð!Ð!Ð!Ø”>×9Ò9¸'Å2Ä7Ç<Â<ÕPSÐUeÑCfÔCfÑgÔgˆDØ”×/Ò/°Ñ5Ô5ˆAØŒK×#Ò# AÑ&Ô&Ð&Ø./¯oªo¸eÑ.DÔ.DÑ+ˆF�F˜E 8ÝÐbÝ”] :Ñ.Ô.°°u¸fÀfØ@HÐP�e˜dŸiši­­C°Ñ(:Ô(:Ñ;Ô;Ñ;Ð;ÈbðRñRñ Sô Sð Sð ×Ò˜sÑ#Ô#Ð#Ø×Ò˜ZÐ)OÐSXÐZ_ÐZdÐcdÐflÐntÐRuÑ)uÑvÔvÐvØ×ÒÑÔÐØˆFØ�yŠy˜Ð4Ñ5Ô5Ð5s   Û,\ Ü
\ Ü\Ü\ N)rñ   )Ú__name__Ú
__module__Ú__qualname__Úserver_versionrð   rþ   r  r  r&  r7  r%  rÉ   rk  r   r   r   rë   rë   Z  s·   € € € € € Ø€Nðð ð ð
ð 
ð 
ð 
ðmð mð mðNð Nð Nð'6ð '6ð '6ðRtð tð tð5ð 5ð 5ðMð Mð Mðq6ð q6ð q6ð q6ð q6r   rë   c                  ó
  — t          t          j        ¦  «        dk    rt          t          j        d         ¦  «        nd} t	          d| t
          fz  d¬¦  «         t          d| ft          ¦  «                             ¦   «          d S )NrO   i¤  z.HLQT server: http://127.0.0.1:%d  (CSDL A: %s)TrK  z	127.0.0.1)	ra   ÚsysÚargvr.  rR  r0   r   rë   Úserve_forever)Úcongs    r   Úmainru  "  sp   € Ý"¥3¤8™}œ}¨qÒ0Ð0�3�sŒx˜Œ{ÑÔÐ°d€DÝ	Ð
:¸dÅB¸ZÑ
GÈtÐTÑTÔTÐTÝ˜ dÐ+­QÑ/Ô/×=Ò=Ñ?Ô?Ð?Ð?Ð?r   Ú__main__)r:   )3Ú__doc__r0  r%   r
  rh   r2  r<   r   r   rd   ÚsecretsÚshutilr.   rq  r'   Úurllib.parserÂ   Úhttp.serverr   r   r  r   r   r    r0   rO  r   r   r>   rC  r   r   r!   r,   r4   rA   rJ   rö   rx   rL   rs   rY   ry   r{   rŽ   rÞ   rå   ré   rë   ru  rl  r   r   r   ú<module>r|     s  ððð ð pÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oÐ oØ CÐ CÐ CÐ CÐ CÐ CÐ CÐ Cà3€Ø„g‡l‚l�3˜
Ñ#Ô#€Ø„W‡\‚\�#�zÑ"Ô"€Ø	„w‡|‚|�C˜Ñ Ô €Ø
Œ'�,Š,�s˜NÑ
+Ô
+€ØŒG�LŠL˜˜oÑ.Ô.€	Ø	„w‡|‚|�C˜Ñ&Ô&€Ø €„ˆD˜4Ð  Ñ  Ô  Ð  ðð ð ðð ð ðð ð ðð ð ð
ð ð ð$(ð (ð (ð *Ð9PÐcvØ)Ð9PÐY`ðbð b€ðE€ð€ð2Bð Bð Bð'ð 'ð 'ðTð ð ð
lð 
lð 
lð 
lðð ð ð$Dð $Dð $DðN['ð ['ð ['ð|Hð Hð Hð"eð eð eð E6ð E6ð E6ð E6ð E6Ðñ E6ô E6ð E6ðP@ð @ð @ð ˆzÒÐØ€D�F„F€F€F€Fð Ðr   