
    h78ja              ?       r   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dl	m	Z	m
Z
 ddlmZ ddlmZ ddlZddlZddlmZ dd	lmZ dd
lmZ  ej                    dz  dz  dz  Z ej        e          Zi ddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+Zd,ej        d-ej        d.ee          dz  d/e fd0Z!d1e d2e"e#e e f                  d3e d4e dz  d/df
d5Z$d6e ez  d2e"e#e e f                  d/dfd7Z%d8e ez  d2e"e#e e f                  d/dfd9Z&d:d;d2e"e#e e f                  d<e'd/dfd=Z(d1e d/e fd>Z)d?e d@e d4e dAe dz  dBe'd/dfdCZ*	 	 	 ddDdEd1e dFe"e#e e f                  d3e dAe dz  dGe+dz  dHe dz  dBe'd/dfdIZ, ej-        dDJ          ddK            Z.ddLZ/e.0                                d/e fdM            Z1e.0                                 ej2        dNdOdPQ           ej2        dRdSdTQ           ej2        dUdVdWdXY           ej2        dZd[d\ ej3        g d]          ^           ej2        d_d` ej3        g da          dbc           ej2        ddded e+dfg           ej2        dhdide+djg           ej2        dkdldmg ej3        g dn          dDe!o           ej2        dpdqdrQ           ej2        dsdtdDd:duv           ej2        dwdxdyQ           ej2        dzd{d d|Y           ej2        d}d~dQ           ej2        dddDdY           ej2        dddDd:dv          d1e de dz  de de de dz  de+dz  de+de de dz  de dz  dGe+dAe dz  de'dBe'd<e'd/df d                                                                                                                                                                                                Z4e.0                                 ej2        dNdOdQ           ej2        dRdSdQ           ej2        dUdVdWdXY           ej2        dZd[d\ ej3        g d]          ^           ej2        d_d` ej3        g da                     ej2        ddded e+dfg           ej2        dhdide+djg           ej2        dkdldmg ej3        g d          dDe!o           ej2        dd ej3        g d                     ej2        dd ej3        g d                     ej2        dd ej3        g d                     ej2        dd ej3        g d                     ej2        dd ej3        g d                     ej2        dpdqdrQ           ej2        dsdtdDd:duv           ej2        dwdxdyQ           ej2        dzd{d d|Y           ej2        d}d~dQ           ej2        dddDdY           ej2        dddDd:dv          d1e de dz  de de de dz  de+dz  de+de de dz  de dz  de dz  de dz  de dz  de dz  dGe+de dz  dAe dz  de'dBe'd<e'd/df*d                                                                                                                                                                                                                                                            Z5e.0                                 ej2        dNdOdQ           ej2        dRdSdQ           ej2        dUdVdWdXY           ej2        dZd[d\ ej3        g d]          ^           ej2        d_d` ej3        g d          dc           ej2        ddded e+dfg           ej2        dhdide+djg           ej2        dkdldmg ej3        g d          dDe!o           ej2        dd ej3        ddg                     ej2        dsd ej3        g d                     ej2        dd ej3        ddg                     ej2        dpdqdrQ           ej2        d}d~dQ           ej2        dddDdY           ej2        dddDd:dv          d1e de dz  de de de dz  de+dz  de+de de dz  de dz  de dz  de dz  dAe dz  dBe'd<e'd/df d                                                                                                                                                                                                Z6e.0                                 ej2        dNdOdQ           ej2        dRdSdQ           ej2        dUdVdWdXY           ej2        dZd[d\ ej3        g d]          ^           ej2        d_d` ej3        g da          dbc           ej2        ddded e+dfg           ej2        dhdide+djg           ej2        dkdldmg ej3        g d          dDe!o           ej2        dpdqdrQ           ej2        d}d~dQ           ej2        dddDdY           ej2        dddDd:dv          d1e de dz  de de de dz  de+dz  de+de de dz  dAe dz  dBe'd<e'd/dfd                                                                                                                                                            Z7e.0                                 ej2        dNdOdQ           ej2        dRdSdQ           ej2        ddded e+dfg           ej2        dhdide+djg           ej2        dkdldmg ej3        g d¢          dDe!o           ej2        dpdqdrQ           ej2        d}d~dQ           ej2        dddDdY           ej2        dddDd:dv          d1e de dz  de+dz  de+de de dz  dAe dz  dBe'd<e'd/dfdÄ                                                                                                                        Z8e.0                                 ej2        dddDdƬǦ           ej2        dddd ej3        g d̢          dͬg           ej2        dpdqdάQ           ej2        d}d~dQ           ej2        dddDdY          d?e de de dz  dAe dz  dBe'd/dfdτ                                                                        Z9e.0                                 ej2        d}d~dQ          dAe dz  d/dfdЄ                        Z:e.0                                 ej2        dsddDdҬӦ           ej2        dZddDdլӦ           ej2        dddجY           ej2        dde+d۬g           ej2        ddDdݬӦ           ej2        d}d~dQ          de'de'de de+de'dAe dz  d/dfd                                                                                    Z;edk    r e/             dS dS )zCLI tool for DDGS.    N)ThreadPoolExecutoras_completed)datetimetimezone)Path)unquote   )__version__)DDGS)_expand_proxy_tb_aliasz.cacheddgszapi.pidblackred   green   yellow   blue   magenta   cyan   bright_black   
bright_red	   bright_green
   bright_yellow   bright_blue   bright_magenta   bright_cyan   white   bright_white_ctx_paramvaluereturnc                 ^    |*t          |t                    rd                    |          S dS )N, )
isinstancetuplejoin)r,   r-   r.   s      P/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/ddgs/cli.py_convert_tuple_to_csvr7   -   s,    Zu55xx2    querydatafunction_namefilenamec                 6   |r+|                     d          r|                    dd          nd |f\  }}|p'| d|  dt          j        t          j                  d}|dk    rt          | d| |           d S |dk    rt          | d| |           d S d S )	N)z.csvz.json.r	   _tz%Y%m%d_%H%M%Scsvjson)endswithrsplitr   nowr   utc	_save_csv
_save_json)r9   r:   r;   r<   exts        r6   
_save_datarL   3   s    /7vH<M<MN_<`<`vHOOC+++gkmufvMHccmccecchlhl6S6S6ScccH
e||X%%%%t,,,,,	h&&&&----- 
r8   jsonfilec                     t          |                               dd          5 }|                    t          j        |dd                     d d d            d S # 1 swxY w Y   d S )Nwutf-8)encodingFr   )ensure_asciiindent)r   openwriterD   dumps)rM   r:   files      r6   rJ   rJ   <   s    	h		S7		3	3 Ct

4:dqAAABBBC C C C C C C C C C C C C C C C C Cs   +AA!$A!csvfilec                 N   t          |                               ddd          5 }|rd|d                                         }t          j        ||t          j                  }|                                 |                    |           d d d            d S # 1 swxY w Y   d S )NrO   r2   rP   )newlinerQ   r   )
fieldnamesquoting)r   rT   keysrC   
DictWriterQUOTE_MINIMALwriteheader	writerows)rX   r:   rW   headerswriters        r6   rI   rI   A   s    	g		Cg		>	> #$ 	#1gllnnG^DWcFWXXXF   T"""# # # # # # # # # # # # # # # # # #s   A'BB!BFno_colorre   c          	          t           j                                        }|sd}| rt          | d          D ]\  }}|r| dd n| d}t	          j        |dd	           t          |                                d          D ]g\  }\  }}|r-|d
v rdnd}	|dk    rdn|}
t	          j        | |	ddd          }n|}
|}t	          j        |
d| d|st          |         ndd           h|rt                       d S d S )NTr	   startz.	    zN==============================================================================r>   r   r)   )bgfg)contenthrefimagesource	thumbnailurli,  N   detected_languagelanguager2   z            )widthinitial_indentsubsequent_indentpreserve_paragraphsz<12)ri   rj   overline)
sysstdoutisatty	enumerateclicksechoitems	wrap_textCOLORSinput)r:   re   is_ttyiesepjkvrt   titletexts               r6   _print_datar   J   sx   Z  F  d!,,, 	 	DAq-3@Q))x)))ACKG4444&qwwyy::: x x	6Aq #$(b#b#bCChjE*+/B*B*BJJE ?#')*2,0  DD EDu00$00WRZAg`grvwwwww ) 	 	r8   c                 F   |                      dd                               dd                               dd                               dd                               dd                               d	d                               d
d                               dd          S )Nfiletyper2   :"'site r?   /\)replace)r9   s    r6   _sanitize_queryr   e   s    j"%%	b			c						c			c			s			b			r8   rp   dir_pathproxyverifyc                   	 t          j        |ddd|                              |           }|j        dk    rdt	          |          |d d         z  }|                    d          5 }|                    |j                   d d d            d S # 1 swxY w Y   d S d S # t          $ r'}t          
                    d| |           Y d }~d S d }~ww xY w)Nrandomr    )r   impersonateimpersonate_ostimeoutr      wbzError download_file url=%s: %r)primpClientgetstatus_coder   rT   rU   rk   	Exceptionloggerdebug)	rp   r   r<   r   r   respfrW   exs	            r6   _download_filer   r   s:   	@|%Xh`bkqrrrvv
 
 s""X$3$/A )

4<((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) #"  @ @ @5sB?????????@s<   A&B (BB BB BB 
C)CCTr   resultsthreadspathnamec          
      H   |p'| d|  dt          j        t          j                  d}t	          |                              dd           |dn|}t          |          5 }g }	t          |d	          D ]\  }
}|d
k    r|d         n|d         }t          |	                    d          d         	                    d          d                   }|
                    t          |||
 d| ||          }|	                    |           t          j        t          |	          dddd          5 }t!          |	          D ]+}|                                 |                    d           ,	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr?   r@   rB   Tparentsexist_okr    )max_workersr	   rg   imagesrm   rl   r   ?r   r   Downloading2   )lengthlabelshow_percentshow_posrt   )r   rG   r   rH   r   mkdirr   r|   r   splitsubmitr   appendr}   progressbarlenr   resultupdate)r9   r   r;   r   r   r   r   pathexecutorfuturesr   resrp   r<   r   barfutures                    r6   _download_resultsr      s@    _-__%__(,(,2O2O2O___DJJTD111ObbG		0	0	0 Hq111 	 	FAs"/8";";#g,,VCsyy~~b177<<Q?@@HTa;L;L(;L;Le\bccANN1w<<
 
 
 		 &w//  

1		 		 		 		 		 		 		 		 		 		 		 		 		 		 		                 s7   %CF6<E?3F?F	FF	FFF)chainc                      dS )zDDGS CLI tool.N r   r8   r6   clir      s      r8   c                      t          j        t           j                   	 t                       dS # t          $ r6} t          j        t          |           j         d|            Y d} ~ dS d} ~ ww xY w)z=Run the CLI tool in try-except block to catch all exceptions.)levelz: N)	loggingbasicConfigWARNINGr   r   r}   echotype__name__)r   s    r6   safe_entry_pointr      s    go....3 3 3 3
d2hh'112112222222223s   1 
A1+A,,A1c                  8    t          t                     t          S )zPrint and return version.)printr
   r   r8   r6   versionr      s     
+r8   z-qz--queryztext search query)helpz-kz
--keywordsz(Deprecated) text search queryz-rz--regionzus-enzus-en, ru-ru, etc.)defaultr   z-sz--safesearchmoderate)onr   off)r   r   z-tz--timelimit)drO   myzday, week, month, year)r   r   -mz--max_resultszmaximum number of results)r   r   r   z-pz--pagezpage number of resultsz-bz	--backendauto)r   allbingbrave
duckduckgogoogle
grokipediamojeek	startpageyandexyahoo	wikipedia)r   r   multiplecallbackz-oz--outputzGcsv, json or filename.csv|json (save the results to a csv or json file)z-dz
--downloadz-download results. -dd to set custom directory)is_flagr   r   z-ddz--download-directoryz!Specify custom download directoryz-thz	--threadszdownload threads, default=10z-prz--proxyz=the proxy to send requests, example: socks5h://127.0.0.1:9150z-vz--verifyz"verify SSL when making the requestz-ncz
--no-colorzdisable color outputkeywordsregion
safesearch	timelimitmax_resultspagebackendoutputdownload_directorydownloadc          
      &   t          t          |          |                              | |||||||          }t          |p|           } |rt	          | |d|           |rt          | |d||
||	           |s|st          ||           dS dS dS )z/CLI function to perform a DDGS text metasearch.r   r   r9   r   r   r   r   r   r   r   r   r<   r;   r   r   r   r   rd   N)r   r   r   r   rL   r   r   )r9   r   r   r   r   r   r   r   r   r   r   r   r   r   re   r:   s                   r6   r   r      s    r ,U33FCCCHH I 	 	D H-..E 95$8888 	
 '	
 	
 	
 	
  -( -D8,,,,,,- - - -r8   zimages search queryz (Deprecated) images search query)r   )r   r   r   r   z-sizez--size)SmallMediumLarge	Wallpaperz-cz--color)color
MonochromeRedOrangeYellowGreenBluePurplePinkBrownBlackGrayTealWhitez-typez--type_image)photoclipartgiftransparentlinez-lz--layout)SquareTallWidez-licz--license_image)anyPublicShareShareCommerciallyModifyModifyCommerciallysizer	  
type_imagelayoutlicense_imagec                0   t          t          |          |                              | |||||||||	|
||          }t          |p|           } |rt	          | |d|           |rt          | |d||||           |s|st          ||           dS dS dS )z1CLI function to perform a DDGS images metasearch.r  )r9   r   r   r   r   r   r   r   r%  r	  r&  r'  r(  r   r;   r<   r  rd   N)r   r   r   r   rL   r   r   )r9   r   r   r   r   r   r   r   r%  r	  r&  r'  r(  r   r   r   r   r   r   re   r:   s                        r6   r   r   
  s   Z ,U33FCCCJJ# K  D H-..E I5$hHHHH 	
"'	
 	
 	
 	
  -( -D8,,,,,,- - - -r8   zvideos search queryz (Deprecated) videos search query)r   rO   r   zday, week, month)r   r   r   z-resz--resolutionhighstandartz
--duration)shortmediumlongz--license_videoscreativeCommonyoutube
resolutiondurationlicense_videosc                    t          t          |          |                              | |||||||||	|
          }t          |p|           } |rt	          | |d|           dS t          ||           dS )z1CLI function to perform a DDGS videos metasearch.r  )r9   r   r   r   r   r   r   r   r2  r3  r4  videosr*  rd   N)r   r   r6  r   rL   r   )r9   r   r   r   r   r   r   r   r2  r3  r4  r   r   r   re   r:   s                   r6   r6  r6  w  s    T ,U33FCCCJJ% K  D H-..E -5$hHHHHHHD8,,,,,,r8   znews search queryz(Deprecated) news search query)r   r   r   r   r   c
          
          t          t          |	          |
                              | |||||||          }t          |p|           } |rt	          | |d|           dS t          ||           dS )z/CLI function to perform a DDGS news metasearch.r  r  newsr*  rd   N)r   r   r8  r   rL   r   )r9   r   r   r   r   r   r   r   r   r   r   re   r:   s                r6   r8  r8    s    H ,U33FCCCHH I 	 	D H-..E -5$fvFFFFFFD8,,,,,,r8   zbooks search queryz(Deprecated) books search query)r   r   annasarchivec                    t          t          |          |                              | ||||          }	|rt          | |	d|           dS t	          |	|           dS )z0CLI function to perform a DDGS books metasearch.r  )r9   r   r   r   r   booksr*  rd   N)r   r   r;  rL   r   )
r9   r   r   r   r   r   r   r   re   r:   s
             r6   r;  r;    s    < ,U33FCCCII J  D  -5$gGGGGGGD8,,,,,,r8   z-uz--urlzURL to extract content from)requiredr   z-fz--formatfmttext_markdown)r>  
text_plain	text_richr   rk   zOutput formatz2json or filename.json (save the results to a file)c                   t          t          |          |                              | |          }|rAd |                                D             }t	          t          |           |gd|           d	S t          j        d|  d           |d         }t          j        t          |t                    r|
                                n|           d	S )
z+CLI function to extract content from a URL.r  )rp   r=  c                 l    i | ]1\  }}|t          |t                    r|                                n|2S r   )r3   bytesdecode).0r   r   s      r6   
<dictcomp>zextract.<locals>.<dictcomp>-  s<    #j#j#jUYUVXYAZ55I5I'Pqxxzzzq#j#j#jr8   extractr  zURL: 
rk   N)r   r   rG  r   rL   r   r}   r   r3   rC  rD  )rp   r=  r   r   r   r:   str_datark   s           r6   rG  rG    s    , ,U33FCCCKKPSY\K]]D P#j#j]a]g]g]i]i#j#j#j?3''(YPPPPPP
?3???###y/
z'5'A'AN7>>###wOOOOOr8   c                     	 ddl m} n'# t          $ r t          j        dd           Y dS w xY w| rt          |           p| t          j        d<   ddl}|	                    |
                                           dS )a  Start DDGS MCP server over stdio for local MCP clients.

    Examples:
        ddgs mcp                            # Start MCP server using stdio transport
        ddgs mcp -pr socks5h://127.0.0.1:9150  # With proxy

    MCP client configuration:
        {
          "mcpServers": {
            "ddgs": {
              "command": "ddgs",
              "args": ["mcp"]
            }
          }
        }

    r   )mcpzCError: MCP dependencies not installed. Run: pip install 'ddgs[mcp]'TerrN
DDGS_PROXY)ddgs.api_server.mcprK  ImportErrorr}   r   r   osenvironasynciorunrun_stdio_async)r   
mcp_serverrS  s      r6   rK  rK  5  s    (9999999   
X^bcccc  J#9%#@#@#IE
< NNNKK
**,,-----s   	  --z--detachz,Run the server in detached mode (background))r   r   z--stopzStop the detached server--hostz0.0.0.0zHost to bind the server to--porti  zPort to bind the server toz--reloadz"Enable auto-reload on code changesdetachstophostportreloadc           
         t           j                            dd           |r)t                                           st	          j        dd           dS t          t                                                                                     }	 t          j
        |d           t	          j        d| d           nS# t          $ r t	          j        d	| d
           Y n/t          $ r#}t	          j        d| d           Y d}~nd}~ww xY wt                               d           n # t                               d           w xY wdS 	 ddl}ddl}	n'# t           $ r t	          j        dd           Y dS w xY w	 ddlm}
  |
             t	          j        d           n$# t           $ r t	          j        d           Y nw xY wt          j                                        }|rt+          |          p||d<   | rddl}t.          j        dddd|dt3          |          g}|                    ||j        |j        |          }|                    d           |                                 t	          j        d|j         d           dS t                               t3          |j                              t	          j        d| d| d|j          d           |rt	          j        d|d                     dS dS t	          j        d | d|            |rt	          j        d|d                     t	          j        d!           |r|d         t          j        d<   |	!                    d||d"|#           dS )$a  Start/stop the DDGS API server.

    Starts a FastAPI server with REST endpoints for search tools.
    Supports text, image, news, video, and book search.

    Examples:
        ddgs api              # Start server in foreground
        ddgs api -d           # Start server in detached mode
        ddgs api -s           # Stop the detached server
        ddgs api --host 127.0.0.1 --port 9000  # Bind to specific host/port
        ddgs api -pr socks5h://127.0.0.1:9150  # Use proxy

    Tr   z2No detached server is running (PID file not found)rL  Nr*   zDDGS API server stopped (PID: )zServer process (PID: z') was not running, cleaning up PID filezFailed to stop server: )
missing_okr   zCError: API dependencies not installed. Run: pip install 'ddgs[api]'r	   )get_dht_servicez6API server starting with distributed DHT cache enabledzKAPI server starting (DHT cache not available - install ddgs[dht] to enable)rN  r   uvicornzddgs.api_server:fastapi_apprW  rX  )rz   stderrenvg      ?z1Failed to start server: process exited with code z3DDGS API server started in detached mode on http://r   z (PID: zUsing proxy: z#Starting DDGS API server on http://zPress Ctrl+C to stopinfo)r[  r\  	log_levelr]  )"	_PID_FILEparentr   existsr}   r   int	read_textstriprQ  killProcessLookupErrorOSErrorunlink
subprocessrb  rP  
api_serverra  rR  copyr   timery   
executablestrPopenDEVNULLsleeppoll
returncode
write_textpidrT  )rY  rZ  r[  r\  r]  r   r}  r   rq  rb  ra  	proxy_envrt  cmdprocesss                  r6   apir  W  sN   , 4$777 !! 	JKQUVVVVF)%%''--//00	.GCJ>>>>????! 	] 	] 	]J[s[[[\\\\\ 	@ 	@ 	@J444$?????????	@ ----I----   
X^bccccb//////
KLLLL b b b
`aaaaab 
!!I I"8"?"?"H5	, ,
 N)II	
 ""%%	 # 
 
 	

3<<>>%J_7K]__eijjjjFS--...
kkkPTkk]d]hkkklll 	BJ@y'>@@AAAAA	B 	B 	
FFFFFGGG 	BJ@y'>@@AAA
)*** 	?'0'>BJ|$) 	 	
 	
 	
 	
 	
s`   -B= <D, ="DD, !	D*DD, DD, ,E	E  E<;E< $F% %GG__main__)NNN)r/   N)<__doc__rC   rD   r   rQ  ry   concurrent.futuresr   r   r   r   pathlibr   urllib.parser   r}   r   r2   r
   r   r   utilsr   homerg  	getLoggerr   r   r   Context	Parameterr4   rv  r7   listdictrL   rJ   rI   boolr   r   r   rj  r   groupr   r   commandr   optionChoicer   r   r6  r8  r;  rG  rK  r  r   r8   r6   <module>r     s     



   				 



 ? ? ? ? ? ? ? ? ' ' ' ' ' ' ' '                                 ) ) ) ) ) ) DIKK("V+i7			8	$	$
w
u
 w
 x	

 v
 y
 v
 ~
 |
 ~
 
 
 
 
 
  !
( u uUXz\`O` eh    .c .d38n!5 .c .UX[_U_ .dh . . . .Ct C4S#X+? CD C C C C
#sTz #d38n)= #$ # # # # AF   d4S>*  $    6
3 
3 
 
 
 

@ 
@s 
@c 
@#* 
@Y] 
@bf 
@ 
@ 
@ 
@"    $sCx.!  :	
 4Z Dj  
   D 4   3 3 3 3      dI$7888dL'GHHHdJ6JKKKdNJ\U\JcJcJc=d=deeedM5I5I5I(J(JQijjjdORc@[\\\dHac8PQQQH		
 	
 	

 
  "+  . dJ%nooodL$Dsttte+2UVVVe["3QRRReY%deeedJ3WXXXe\4E[\\\+-+-Dj+- +- 	+-
 Tz+- t+- +- +- $J+- d
+- +- :+- +- +-  !+-" 
#+- +- +- ]\ YX fe SR WV ut po/  RQ ]\ kj fe LK IH 98 L+-\ dI$9:::dL'IJJJdJ6JKKKdNJ\U\JcJcJc=d=deeedM5I5I5I(J(JKKKdORc@[\\\dHac8PQQQH	;;;	<	<"   gxlel3\3\3\&]&]^^^		
 	
 	

 
  , g~LEL9k9k9k,l,lmmmdJ\U\2L2L2L%M%MNNN
	eee	f	f  
 dJ%nooodL$Dsttte+2UVVVe["3QRRReY%deeedJ3WXXXe\4E[\\\5-5-Dj5- 5- 	5-
 Tz5- t5- 5- 5- *5- :5- d
5- $J5- :5- d
5- 5-  $J!5-" :#5-& '5-( )5-* +5-, 
-5- 5- 5- ]\ YX fe SR WV ut po  ON nm-  _^  RQ ]\ LK fe LK KJ ;: j5-p dI$9:::dL'IJJJdJ6JKKKdNJ\U\JcJcJc=d=deeedM___(E(EL^___dORc@[\\\dHac8PQQQH	333	4	4"   fn<5<8L+M+MNNNdL|u|4O4O4O'P'PQQQf(|u|=My<Y/Z/Z[[[dJ%noooeY%deeedJ3WXXXe\4E[\\\$-$-Dj$- $- 	$-
 Tz$- t$- $- $- d
$- Dj$- $J$- $J$- :$- $-  !$-" 
#$- $- $- ]\ YX fe po \[ RQ ON  RQ ]\ `_ fe LK KJ ;: .$-N dI$7888dL'GHHHdJ6JKKKdNJ\U\JcJcJc=d=deeedM5I5I5I(J(JQijjjdORc@[\\\dHac8PQQQH	DDD	E	E"   dJ%noooeY%deeedJ3WXXXe\4E[\\\--Dj- - 	-
 Tz- t- - - $J- :- - - 
- - - ]\ YX fe po  RQ ]\ kj fe LK IH 98 (-B dI$8999dL'HIIIdORc@[\\\dHac8PQQQH	555	6	6"   dJ%noooeY%deeedJ3WXXXe\4E[\\\--Dj- t- 	-
 - $J- :- - - 
- - - ]\ YX fe po  RQ ]\ JI :9 "-4 dGd1NOOO		UUU	V	V	   dJ%YZZZeY%deeedJ3WXXXP	P	P $JP :	P P 
P P P YX fe [Z  PO P& eY%deee.sTz .d . . . fe .@ dJ3abbbdHd1KLLLh	0LMMMh35QRRRj$-QRRReY%deeec
 c
D c
 c
3 c
 c
SSWZ c
\` c
 c
 c
 fe SR SR NM ML cb c
L z r8   