Ë
    Í«£j�@  ã                   óð  — 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mZmZ dZ	dZ
dZdZdd	d
dœZdZh d£Zd„ Zd'd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd(d„Zedk(  rŸ ej6                  e	› d�¬«      Zej;                  dedd¬«       ej;                  dd d!¬"«       ej;                  d#ed$¬%«       ej?                  «       Z e jB                  �e jB                  e _"         ee jD                  e jF                  ¬&«       yy))u�   
èµ£åŽ¿åŒº-çŽ¯ä¿�å…¬ç¤º çˆ¬è™«
http://www.ganxian.gov.cn/gxqxxgk/hbgss/xxgk_list.shtml
æ”¿åºœä¿¡æ�¯å…¬å¼€å¹³å�°ï¼Œè¡¨æ ¼+é™„ä»¶+å›¾ç‰‡å¤„ç�†
é    N)ÚBeautifulSoupÚTagu   èµ£åŽ¿åŒº-çŽ¯ä¿�å…¬ç¤ºu   ç”Ÿæ€�çŽ¯å¢ƒzhttp://www.ganxian.gov.cnz7http://www.ganxian.gov.cn/gxqxxgk/hbgss/xxgk_list.shtmlzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36z?text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8zzh-CN,zh;q=0.9,en;q=0.8)z
User-AgentÚAcceptzAccept-Languagez/root/search.db>)   ÚpÚddÚdlÚdtÚh1Úh2Úh3Úh4Úh5Úh6ÚhrÚliÚolÚtdÚthÚtrÚulÚdivÚnavÚpreÚformÚmainÚasideÚtableÚtbodyÚtfootÚtheadÚcenterÚdialogÚfigureÚfooterÚheaderÚhgroupÚaddressÚarticleÚcaptionÚdetailsÚsectionÚfieldsetÚ
blockquoteÚ
figcaptionc                 óÒ   ‡‡‡— | €yddl }ddlmŠ g Šˆˆˆfd„Š ‰| «       dj                  ‰«      }|j	                  dd|«      }|j	                  dd	|«      }|j                  «       S )
ul   å�—çº§è¾¹ç•Œå‡ºæ�¢è¡Œã€�è¡Œå†…èŠ‚ç‚¹ç›´æŽ¥æ‹¼æŽ¥ã€�<br> å‡ºæ�¢è¡Œï¼ˆâ‰ˆ æµ�è§ˆå™¨çœ‹åˆ°çš„æ�¢è¡Œç»“æž„ï¼‰ã€‚NÚ r   )ÚNavigableStringc                 óF  •— | j                   D ]‘  }t        |‰«      r‰j                  t        |«      «       Œ*t	        |dd «      dk(  r‰j                  d«       ŒLt	        |dd «      t
        v r+‰j                  d«        ‰|«       ‰j                  d«       ŒŠ ‰|«       Œ“ y )NÚnameÚbrú
)ÚchildrenÚ
isinstanceÚappendÚstrÚgetattrÚ_BLOCK_TAGS)ÚnodeÚchr1   ÚoutÚwalks     €€€úcrawl_ganxian_hbgss.pyr?   zbody_text.<locals>.walk-   s„   ø€ Ø—-‘-ò 
	ˆBÜ˜"˜oÔ.Ø—
‘
œ3˜r›7Õ#Ü˜˜V TÓ*¨dÒ2Ø—
‘
˜4Õ Ü˜˜V TÓ*¬kÑ9Ø—
‘
˜4Ô Ù�R”Ø—
‘
˜4Õ á�R•ñ
	ó    z[ \t\r\f\v]*\n[ \t\r\f\v]*r5   z\n{3,}ú

)ÚreÚbs4r1   ÚjoinÚsubÚstrip)ÚelÚ_reÚtr1   r>   r?   s      @@@r@   Ú	body_textrK   %   sb   ú€ à	€zØÛÝ#Ø
€Cöñ 	ˆ„HØ
�‰�‹€AØ�‰Ð-¨t°QÓ7€AØ�‰�	˜6 1Ó%€AØ�7‰7‹9ÐrA   c           	      ó  — t        |«      D ]3  }	 t        j                  | t        d¬«      }d|_        |j
                  c S  y # t        $ r}t        d|› d|dz   › �«       Y d }~nd }~ww xY wt        j                  d«       Œw)Né   )ÚheadersÚtimeoutzutf-8z	  Error: z, retry é   é   )
ÚrangeÚrequestsÚgetÚHEADERSÚencodingÚtextÚ	ExceptionÚprintÚtimeÚsleep)ÚurlÚmax_retriesÚattemptÚrÚes        r@   Úfetchra   @   s{   € Ü˜Ó%ò ˆð	6Ü—‘˜S¬'¸2Ô>ˆAØ ˆAŒJØ—6‘6ŠMð	ð øô ò 	6Ü�I˜a˜S ¨°©¨Ð4×5Ñ5ûð	6úä�
‰
�1�s   �.AÁ	A*ÁA%Á%A*c                 óþ  — g }t        | d«      }|j                  dd¬«      xs |j                  dd¬«      }|st        d|› �«       |S |j                  dd¬	«      D �]  }|j                  d«      rŒ|j                  d
«      }|j                  dd¬«      }|sŒ=|j	                  dd«      }|sŒR|j                  d«      s$t        j                  j                  t        |«      }|j	                  dd«      j                  «       }	|	s|j                  d¬«      }	|r|j                  d¬«      nd}
t        j                  d|
«      }|r!|j                  d«      j                  dd«      }
|j!                  ||	|
f«       �Œ  |S )z=Parse list page and return list of (url, title, date) tuples.úhtml.parserr   ÚpageList©Úclass_ÚnewsListz&  [WARN] No ul.pageList found on page r   F)Ú	recursiveÚaÚspanrZ   Úhrefr0   ÚhttpÚtitleT©rG   z(\d{4}[-/]\d{1,2}[-/]\d{1,2})rP   ú/ú-)r   ÚfindrY   Úfind_allrT   Ú
startswithrS   ÚcompatÚurljoinÚBASE_URLrG   Úget_textrC   ÚsearchÚgroupÚreplacer8   )ÚhtmlÚpage_numÚitemsÚsoupr   r   ri   Ú	time_spanrk   rm   ÚdateÚms               r@   Úparse_list_pager‚   L   sg  € à€EÜ˜˜}Ó-€DØ	�‰�4 
ˆÓ	+Ò	Q¨t¯y©y¸Àj¨yÓ/Q€BÙÜÐ6°x°jÐAÔBØˆà�k‰k˜$¨%ˆkÓ0ó *ˆà�7‰7�4Œ=ØØ�G‰G�C‹LˆØ—G‘G˜F¨6�GÓ2ˆ	ÙØà�u‰u�V˜RÓ ˆÙØð �‰˜vÔ&Ü—?‘?×*Ñ*¬8°TÓ:ˆDð —‘�g˜rÓ"×(Ñ(Ó*ˆÙØ—J‘J T�JÓ*ˆEñ 2;ˆy×!Ñ!¨Ð!Ô-Àˆä�I‰IÐ6¸Ó=ˆÙØ—7‘7˜1“:×%Ñ% c¨3Ó/ˆDà�‰�d˜E 4Ð(Ö)ð;*ð> €LrA   c                 óØ  — t        | d«      }|j                  dd¬«      }|r|j                  d¬«      nd}|j                  dd	¬«      }d}|rW|j                  dd
¬«      }|D ]?  }|j                  d¬«      }	t	        j
                  d|	«      }
|
sŒ.|
j                  d«      } n |j                  dd¬«      xs |j                  dd¬«      }|s|d|g fS dj                  |j                  d«      dd «      dz   }g }g }|j                  D �]I  }t        |t        «      sŒ|j                  j                  «       }|dk(  rˆ|j                  d«      }|r|j                  t        |«      «       Œb|j                  d«      }|r'|j                  d¬«      s|D ]  }t!        |||«       Œ Œœt#        |«      }|sŒª|j                  |«       Œ¼|dk(  r|j                  t        |«      «       ŒÜ|dv �r@|j                  D ]á  }t        |t        «      sŒ|j                  dk(  rZ|j                  d«      }|r'|j                  d¬«      s|D ]  }t!        |||«       Œ Œ]t#        |«      }|sŒk|j                  |«       Œ}|j                  dk(  r|j                  t        |«      «       Œ§|j                  dk(  rt!        |||«       ŒÄ|j                  dk(  sŒÔt%        ||||«       Œã t#        |«      }|s�Œà|j                  D �cg c]  }t        |t        «      sŒ|‘Œ }}|r�Œ|j                  |«       �Œ!|dk(  rt!        |||«       �Œ5|dk(  s�Œ<t%        ||||«       �ŒL |j                  dd¬«      D ]·  }|d   }t'        |«      sŒ|j)                  d«      r|nt*        j,                  j/                  ||«      }|j                  d¬«      xs |j                  d«      d   }d|› d|› d�}||vsŒ}||D �cg c]  }|d   ‘Œ	 c}vsŒ“|j                  |||f«       |j                  |«       Œ¹ dj                  |«      }t	        j0                  dd |«      }|j3                  «       }||||fS c c}w c c}w )!zKParse detail page and return (title, content_text, date, attachments_list).rc   r
   zarticle-titlere   Trn   r0   r   z	meta-mainzdisplay-blockz(\d{4}-\d{2}-\d{2})$rP   Úzoomcon©Úidúarticle-contentro   Néÿÿÿÿr   r   Úimg)r   r+   Úucapcontentri   )rk   rk   rl   ú[ú](ú)rB   z[ \t]+ú )r   rq   rw   rr   rC   Úmatchry   rE   Úsplitr6   r7   r   r3   Úlowerr8   Úrender_tableÚprocess_imagerK   Úprocess_attachmentÚis_attachment_urlrs   rS   rt   ru   rF   rG   )r{   r\   r~   Útitle_elrm   Úmeta_divr€   ÚblocksÚbÚtxtr�   Úcontent_divÚ	base_pathÚcontent_partsÚattachmentsÚchildÚtagÚtable_innerÚimgsr‰   rW   ÚinnerÚdiv_textÚcÚchild_partsri   rk   Úfull_urlÚ	link_textÚlink_mdÚcontents                                  r@   Úparse_detailr«   w   sJ  € ä˜˜}Ó-€Dð �y‰y˜ oˆyÓ6€HÙ-5ˆH×Ñ DÐÔ)¸2€Eð �y‰y˜ {ˆyÓ3€HØ€DÙØ×"Ñ" 5°Ð"ÓAˆØò 	ˆAØ—*‘* 4�*Ó(ˆCÜ—‘Ð0°#Ó6ˆAÚØ—w‘w˜q“z�Ùð	ð —)‘)˜E i�)Ó0Ò^°D·I±I¸eÐL]°IÓ4^€KÙØ�b˜$ Ð"Ð"ð —‘˜Ÿ™ 3›¨¨Ð,Ó-°Ñ3€Ið €MØ€Kà×%Ñ%ó 8QˆÜ�eœSÕ!Ø—*‘*×"Ñ"Ó$ˆCØ�cŠzà#Ÿj™j¨Ó1�Ùà!×(Ñ(¬°kÓ)BÕCð !Ÿ>™>¨%Ó0�DÙ E§N¡N¸ NÔ$>Ø#'ò I˜CÜ)¨#¨y¸-ÕHñIô  )¨Ó/˜ÚØ)×0Ñ0°Õ6à˜’Ø×$Ñ$¤\°%Ó%8Õ9àÐ9Ò9à"Ÿ^™^ò ]�EÜ! %¬Õ-Ø Ÿ:™:¨Ò,à#(§>¡>°%Ó#8˜DÙ#¨E¯N©NÀ¨NÔ,FØ+/ò !Q CÜ$1°#°yÀ-Õ$Pñ!Qô (1°Ó'7 Ú#'Ø$1×$8Ñ$8¸Õ$>Ø"ŸZ™Z¨7Ò2Ø)×0Ñ0´¸eÓ1DÕEØ"ŸZ™Z¨5Ò0Ü)¨%°¸MÕJØ"ŸZ™Z¨3Ó.Ü.¨u°iÀÐP[Õ\ð#]ô& % UÓ+�Ûà.3¯n©nÖ"S¨Ä
È1ÌcÕ@R¢1Ð"S�KÐ"SÛ&Ø%×,Ñ,¨XÖ6à˜’Ü˜e Y°Ö>à˜”Ü" 5¨)°]ÀKÖPðq8Qðv ×!Ñ! #¨DÐ!Ó1ò .ˆØ�‰yˆÜ˜TÕ"Ø#Ÿ™¨vÔ6‘t¼H¿O¹O×<SÑ<SÐT]Ð_cÓ<dˆHØŸ
™
¨˜
Ó.ÒI°(·.±.ÀÓ2EÀbÑ2IˆIØ˜)˜ B x j°Ð2ˆGØ˜mÒ+°ÈkÖ?ZÈÀÀ!ÃÒ?ZÒ0ZØ×"Ñ" I¨w¸Ð#AÔBØ×$Ñ$ WÕ-ð.ð �k‰k˜-Ó(€Gô �f‰f�Y  WÓ-€GØ�m‰m‹o€Gà�'˜4 Ð,Ð,ùò9 #Tùò" @[s   Ë8Q"ÌQ"Ï,Q'c                 óL   ‡— | j                  «       Št        ˆfd„dD «       «      S )Nc              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­w©N)Úendswith)Ú.0ÚextÚlows     €r@   ú	<genexpr>z$is_attachment_url.<locals>.<genexpr>è   s   øè ø€ Òw Sˆs�|‰|˜C× Ñwùs   ƒ)	z.pdfz.docz.docxz.xlsz.xlsxz.zipz.rarz.wpsz.ofd)r‘   Úany)rk   r²   s    @r@   r•   r•   æ   s    ø€ Ø
�*‰*‹,€CÜÓwÐ,vÔwÓwÐwrA   c                 ó  — | j                  dd«      }|sy |j                  d«      r|nt        j                  j	                  ||«      }| j                  dd«      }|r|j                  d|› d|› d�«       y |j                  d|› d�«       y )	NÚsrcr0   rl   Úaltz![rŒ   r�   ú![]()rT   rs   rS   rt   ru   r8   )Úimg_tagrœ   r�   r¶   Úfull_srcr·   s         r@   r“   r“   ë   sƒ   € Ø
�+‰+�e˜RÓ
 €CÙØØ—n‘n VÔ,‰s´(·/±/×2IÑ2IÈ)ÐUXÓ2Y€HØ
�+‰+�e˜RÓ
 €CÙ
Ø×Ñ˜r #  b¨¨
°!Ð4Õ5à×Ñ˜t H :¨QÐ/Õ0rA   c                 óX  — | j                  dd«      }|sy t        |«      sy |j                  d«      r|nt        j                  j                  ||«      }| j                  d¬«      xs |j                  d«      d   }d|› d	|› d
�}|j                  |||f«       |j                  |«       y )Nrk   r0   rl   Trn   ro   rˆ   r‹   rŒ   r�   )	rT   r•   rs   rS   rt   ru   rw   r�   r8   )Úa_tagrœ   r�   rž   rk   r§   r¨   r©   s           r@   r”   r”   ÷   s¡   € Ø�9‰9�V˜RÓ €DÙØÜ˜TÔ"ØØ—‘ vÔ.‰t´H·O±O×4KÑ4KÈIÐW[Ó4\€HØ—‘ T�Ó*ÒE¨h¯n©n¸SÓ.AÀ"Ñ.E€IØ�)�˜B˜x˜j¨Ð*€GØ×Ñ˜	 7¨HÐ5Ô6Ø×Ñ˜Õ!rA   c           	      óx  — g }| j                  d«      D ]S  }g }|j                  ddg«      D ]%  }|j                  d¬«      }|j                  |«       Œ' |sŒC|j                  |«       ŒU |syt        d„ |D «       «      }|D �cg c]  }|dg|t	        |«      z
  z  z   ‘Œ }}g }|j                  dd	j                  |d
   «      z   dz   «       |j                  dd	j                  dg|z  «      z   dz   «       |dd D ](  }	|j                  dd	j                  |	«      z   dz   «       Œ* dj                  |«      S c c}w )z*Convert HTML table to Markdown pipe table.r   r   r   Trn   r0   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr®   )Úlen)r°   r_   s     r@   r³   zrender_table.<locals>.<genexpr>  s   è ø€ Ò(˜a”3�q—6Ñ(ùs   ‚z| ú | r   z |z---rP   Nr5   )rr   rw   r8   Úmaxr¿   rE   )
r   Úrowsr   ÚcellsÚcellrW   Úmax_colsr_   ÚlinesÚrows
             r@   r’   r’     sF  € à€DØ�n‰n˜TÓ"ò ˆØˆØ—K‘K  t Ó-ò 	ˆDØ—=‘= t�=Ó,ˆDØ�L‰L˜Õð	ò Ø�K‰K˜Õðñ Øô Ñ( 4Ô(Ó(€Hà48Ö9¨qˆA��˜¤3 q£6Ñ)Ñ*Ó*Ð9€DÐ9à€Eà	‡L�L�˜Ÿ
™
 4¨¡7Ó+Ñ+¨dÑ2Ô3à	‡L�L�˜Ÿ
™
 E 7¨XÑ#5Ó6Ñ6¸Ñ=Ô>à�A�Bˆxò 4ˆØ�‰�T˜EŸJ™J s›OÑ+¨dÑ2Õ3ð4ð �9‰9�UÓÐùò :s   ÂD7c                 óü   — t        j                  d| «      }|rdt        |j                  d«      «      }t        |j                  d«      «      }||z   dz
  |z  }||||j                  d«      |j                  d«      fS y)z-Parse total pages from the pagination script.zBcreatePageHTML\('page_div',\s*(\d+),\s*\d+,'(\w+)','(\w+)',(\d+)\)rP   é   rQ   é   )rP   é   r   Ú	xxgk_listÚshtml)rC   rx   Úintry   )r{   r�   Úper_pageÚtotal_itemsÚtotal_pagess        r@   Úget_total_pagesrÒ   #  sq   € ä
�	‰	ÐWÐY]Ó^€AÙÜ�q—w‘w˜q“z“?ˆÜ˜!Ÿ'™' !›*“oˆØ" XÑ-°Ñ1°hÑ>ˆØ˜H k°1·7±7¸1³:¸q¿w¹wÀq»zÐIÐIØ(rA   é   c                 óL
  — t        dt        › d�«       t        dt        › �«       t        d| › �«       t        «        g }t        «       }t        dt        › �«       t	        t        «      }|st        d«       |S t        |«      \  }}}}}	t        d|› d|› d	|› d
�«       t        |d«      }
t        dt        |
«      › d�«       |
D ]/  }|d   |vsŒ|j                  |d   «       |j                  |«       Œ1 t        | |«      }t        d|dz   «      D ]Â  }|dk(  r"|dk(  rt        › d|› d�}n!t        › d|› d|› d�}nt        › d|› d|› d|	› �}t        d|› d|› d|› �«       t	        |«      }|st        d|› �«       Œkt        ||«      }
t        dt        |
«      › d�«       |
D ]/  }|d   |vsŒ|j                  |d   «       |j                  |«       Œ1 ŒÄ t        dt        |«      › d�«       |r/t        d«       |D ]  \  }}}t        d|› d|dd  › d!|› �«       Œ |S t        d"«       ddl}t        |«      D �]µ  \  }\  }}}t        d#|dz   › dt        |«      › d|j                  d«      d$   dd% › d&|dd' › d(�	«       t	        |«      }|st        d)«       Œ`t!        ||«      \  }}}}|xs |}|xs |}g }|D ]  \  }}}|j                  |«       Œ |}|r<|j#                  «       r|d*d+j%                  |«      z   z  }nd,d+j%                  |«      z   }|j#                  «       s|rd+j%                  |«      }|j#                  «       sýt'        |d-«      j)                  d.d/¬0«      xs t'        |d-«      j)                  d.d1¬2«      }|r¿|j)                  d3«      r®dj%                  |j                  d«      dd$ «      dz   } g }!|j+                  d3«      D ]_  }"|"j-                  d4d5«      }#|#sŒ|#j/                  d6«      r|#nt0        j2                  j5                  | |#«      }$|!j                  d7|$› d8�«       Œa |!rd+j%                  |!«      }|j#                  «       st        d9«       �Œ(	 |j7                  t8        «      }%|%j;                  «       }&|&j=                  d:|||||t        t>        f«       |&j@                  }'|%jC                  «        |%jE                  «        t        d;|'rd<nd=› d>|dd? › d!|› �«       �Œ¸ t        dA«       |S # tF        $ r}(t        d@|(› �«       Y d}(~(�Œãd}(~(ww xY w)BzMain crawl function.z=== u    çˆ¬è™« ===u   ç›®æ ‡: u   æœ€å¤§é¡µæ•°: z[Page 1/??] z"  [FAIL] Failed to fetch list pageu	     æ¯�é¡µ u
    æ�¡, å…± u    æ�¡, u    é¡µrP   u     è§£æž�åˆ° u    æ�¡r   rQ   rÌ   z/gxqxxgk/hbgss/z_2.shtmlÚ_z.shtmlú.z[Page ro   z] z  [WARN] Failed to fetch page u	   
æ€»è®¡: u    æ�¡å¾…å¤„ç�†u   
=== DRY RUN - ä»…åˆ—å‡º ===z  rÀ   Né<   z... | u   
=== èŽ·å�–è¯¦æƒ… ===z  [rˆ   é   z... é(   z...z!    [SKIP] Failed to fetch detailu   

**é™„ä»¶:**
r5   u   **é™„ä»¶:**
rc   r   r„   r…   r‡   re   r‰   r¶   r0   rl   r¸   r�   z    [SKIP] Empty contentzƒINSERT OR IGNORE INTO gov_raw (page_url, title, publish_date, content, summary, site_name, group_name) VALUES (?, ?, ?, ?, ?, ?, ?)z    z[NEW]z[skip]rŽ   é2   z    [DB ERROR] u   
=== å®Œæˆ� ===)$rY   Ú	SITE_NAMEÚLIST_URLÚsetra   rÒ   r‚   r¿   Úaddr8   ÚminrR   rv   Úsqlite3Ú	enumerater�   r«   rG   rE   r   rq   rr   rT   rs   rS   rt   ru   ÚconnectÚDB_PATHÚcursorÚexecuteÚGROUPÚrowcountÚcommitÚcloserX   ))Ú	max_pagesÚdry_runÚ	all_itemsÚ	seen_urlsr{   rÑ   rÏ   rÐ   Úprefixr±   r}   ÚitemÚpages_to_fetchÚpageÚpage_urlr\   rm   r€   rà   ÚiÚ
list_titleÚ	list_daterª   rž   Úfinal_titleÚ
final_dateÚattachment_linksr3   Úmd_linkr§   Úfull_contentr›   rœ   Ú	img_partsr‰   r¶   rº   Úconnr¥   Únewr`   s)                                            r@   Úcrawlrþ   .  s­  € ä	ˆD”�˜;Ð
'Ô(Ü	ˆH”X�JÐ
Ô Ü	ˆN˜9˜+Ð
&Ô'Ü	„Gà€IÜ“€Iô 
ˆLœ˜
Ð
#Ô$Ü”‹?€DÙÜÐ2Ô3ØÐä6EÀdÓ6KÑ3€K�˜;¨°Ü	ˆI�h�Z˜z¨+¨°f¸[¸MÈÐ
NÔOô ˜D !Ó$€EÜ	ˆLœ˜U›˜ DÐ
)Ô*Øò #ˆØ�‰7˜)Ò#Ø�M‰M˜$˜q™'Ô"Ø×Ñ˜TÕ"ð#ô ˜ KÓ0€NÜ�a˜¨!Ñ+Ó,ò 'ˆØ�[Ò Ø�qŠyÜ&˜Z °v°h¸hÐG‘ä&˜Z °v°h¸aÀ¸vÀVÐL‘ä"˜ ?°6°(¸!¸D¸6ÀÀ3À%ÐHˆHä��t�f˜A˜nÐ-¨R°¨zÐ:Ô;Ü�X‹ˆÙÜÐ2°4°&Ð9Ô:Øä  dÓ+ˆÜ�œS ›Z˜L¨Ð-Ô.Øò 	'ˆDØ�A‰w˜iÒ'Ø—‘˜d 1™gÔ&Ø× Ñ  Õ&ñ	'ð#'ô, 
ˆJ”s˜9“~Ð& mÐ
4Ô5áÜÐ-Ô.Ø )ò 	9ÑˆC�˜Ü�B�t�f˜C  c r 
˜|¨6°#°Ð7Õ8ð	9àÐô 
Ð
"Ô#Ûä+4°YÓ+?ó ?)Ñ'ˆÑ'ˆC�˜YÜ��A�a‘C�5˜œ#˜i›.Ð)¨¨C¯I©I°c«N¸2Ñ,>¸sÀÐ,CÐ+DÀDÈÐTWÐUWÈÐHYÐY\Ð]Ô^Ü�S‹zˆÙÜÐ5Ô7Øä,8¸¸sÓ,CÑ)ˆˆw˜˜kð Ò)˜zˆØÒ&˜Yˆ
ð ÐØ'2ò 	-Ñ#ˆD�'˜8Ø×#Ñ# GÕ,ð	-ð ˆÙØ×!Ñ!Ô#ØÐ 3°d·i±iÐ@PÓ6QÑ QÑQ‘à.°·±Ð;KÓ1LÑL�ð ×!Ñ!Ô#Ñ(8ØŸ9™9Ð%5Ó6ˆLð ×!Ñ!Ô#ä'¨¨mÓ<×AÑAÀ%ÈIÐAÓVò  cÔZgÐhlÐn{ÓZ|÷  [Bñ  [Bð  CHð  Qbð  [Bó  [cˆKÙ˜{×/Ñ/°Ô6àŸH™H S§Y¡Y¨s£^°C°RÐ%8Ó9¸CÑ?�	Ø�	Ø&×/Ñ/°Ó6ò =�CØŸ'™' %¨Ó,�CÚØ*-¯.©.¸Ô*@¡3ÄhÇoÁo×F]ÑF]Ð^gÐilÓFm˜Ø!×(Ñ(¨4°¨z¸Ð);Õ<ð	=ñ
 Ø#'§9¡9¨YÓ#7�Là×!Ñ!Ô#ÜÐ,Ô.Ùð	)Ø—?‘?¤7Ó+ˆDØ—‘“ˆAØ�I‰Ið VØ�k :¨|¸[Ì)ÔUZÐ[ôð —*‘*ˆCØ�K‰KŒMØ�J‰JŒLÜ�D¡C™¨XÐ6°a¸ÀCÀRÐ8HÐ7IÈÐPZÈ|Ð\Ö]ð{?)ôB 
ÐÔØÐøô	 ò 	)Ü�O A 3Ð'×(Ò(ûð	)ús   Ñ$BTÔ	T#Ô
TÔT#Ú__main__u    çˆ¬è™«)Údescriptionz--max-pagesu   æœ€å¤§çˆ¬å�–é¡µæ•° (default: 5))ÚtypeÚdefaultÚhelpz	--dry-runÚ
store_trueu   ä»…åˆ—å‡ºä¸�å…¥åº“)Úactionr  z--pagesu   åˆ«å�� (--max-pages çš„ç®€å†™))r  r  )rê   rë   )rÊ   )rÓ   F)$Ú__doc__rC   ÚjsonrZ   ÚargparserS   rD   r   r   rÛ   ræ   rv   rÜ   rU   rã   r;   rK   ra   r‚   r«   r•   r“   r”   r’   rÒ   rþ   Ú__name__ÚArgumentParserÚparserÚadd_argumentrÎ   Ú
parse_argsÚargsÚpagesrê   rë   © rA   r@   ú<module>r     s,  ðñó
 
Û Û Û Û ß "à$€	Ø€Ø&€ØD€ð DØOØ0ñ€ð
 €ò*€òó6	ò(òVl-ò^xò
	1ò
"òò>)óBðJ ˆzÒØ$ˆX×$Ñ$°I°;¸gÐ1FÔG€FØ
×Ñ˜¨C¸ÐAbÐÔcØ
×Ñ˜¨LÐ?SÐÔTØ
×Ñ˜	¨Ð2RÐÔSØ×ÑÓ€Dà‡z�zÐØŸ™ˆŒá	�D—N‘N¨D¯L©LÖ9ð rA   