HEX
Server: LiteSpeed
System: Linux srv146.niagahoster.com 4.18.0-553.30.1.lve.el8.x86_64 #1 SMP Tue Dec 3 01:21:19 UTC 2024 x86_64
User: kodi1989 (1633)
PHP: 8.1.34
Disabled: symlink,shell_exec,exec,popen,system,dl,passthru,escapeshellarg,escapeshellcmd,show_source,pcntl_exec
Upload Files
File: //opt/alt/python37/lib/python3.7/site-packages/rich/__pycache__/markdown.cpython-37.pyc
B

��f7f�	@s�ddlmZddlZddlmZmZmZmZmZm	Z	m
Z
ddlmZddl
mZejdkrhddlmZnddlmZddlmZd	d
lmZd	dlmZd	dlmZd	d
lmZmZmZmZd	dlm Z d	dl!m"Z"d	dl#m$Z$d	dl%m&Z&d	dl'm(Z(d	dl)m*Z*m+Z+d	dl,m-Z-d	dl.m/Z/m0Z0Gdd�d�Z1Gdd�de1�Z2Gdd�de1�Z3Gdd�de3�Z4Gdd�de3�Z5Gd d!�d!e3�Z6Gd"d#�d#e3�Z7Gd$d%�d%e1�Z8Gd&d'�d'e1�Z9Gd(d)�d)e1�Z:Gd*d+�d+e1�Z;Gd,d-�d-e1�Z<Gd.d/�d/e1�Z=Gd0d1�d1e1�Z>Gd2d3�d3e3�Z?Gd4d5�d5e3�Z@Gd6d7�d7e3�ZAGd8d9�d9�ZBGd:d;�d;e"�ZCeDd<k�r�ddlEZEddlZeEjFd=d>�ZGeGjHd?d@dAdB�eGjHdCdDdEdFddGdH�eGjHdIdJdKdLdMdN�eGjHdOdPdQddQdN�eGjHdRdSdTdFdUdV�eGjHdWdXeIdYddZd[�eGjHd\d]d^dFd_dV�eGjHd`dadbdFdcdV�eG�J�ZKdddlLmZeKjMdek�rBejN�O�ZPn$eQeKjMdfdgdh��ZReR�O�ZPWdQRXeCePeKjS�rvdindjeKjTeKjUeKjVdk�ZWeKjX�r�ddlYZYddlZZZeY�[�Z\ee\eKj]eKj^dl�Ze�_eW�eZ�`e\�a��neeKj]eKj^dmdn�Ze�_eW�dS)o�)�annotationsN)�ClassVar�Dict�Iterable�List�Optional�Type�Union)�
MarkdownIt)�Token)��)�get_args)�Table�)�box)�
loop_first)�Stack)�Console�ConsoleOptions�
JustifyMethod�RenderResult)�Renderables)�JupyterMixin)�Panel)�Rule)�Segment)�Style�
StyleStack)�Syntax)�Text�TextTypec@s�eZdZUdZded<edddd�dd	��Zd
dd�d
d�Zd
ddd�dd�Zd
dd�dd�Z	d
ddd�dd�Z
dddd�dd�ZdS) �MarkdownElementTzClassVar[bool]�new_linez
'Markdown'rz'MarkdownElement')�markdown�token�returncCs|�S)z�Factory to create markdown element,

        Args:
            markdown (Markdown): The parent Markdown object.
            token (Token): A node from markdown-it.

        Returns:
            MarkdownElement: A new markdown element
        �)�clsr$r%r'r'�>/opt/alt/python37/lib/python3.7/site-packages/rich/markdown.py�create!szMarkdownElement.createz'MarkdownContext'�None)�contextr&cCsdS)zuCalled when the node is entered.

        Args:
            context (MarkdownContext): The markdown context.
        Nr')�selfr,r'r'r)�on_enter.szMarkdownElement.on_enterr!)r,�textr&cCsdS)zpCalled when text is parsed.

        Args:
            context (MarkdownContext): The markdown context.
        Nr')r-r,r/r'r'r)�on_text5szMarkdownElement.on_textcCsdS)zwCalled when the parser leaves the element.

        Args:
            context (MarkdownContext): [description]
        Nr')r-r,r'r'r)�on_leave<szMarkdownElement.on_leave�bool)r,�childr&cCsdS)a|Called when a child element is closed.

        This method allows a parent element to take over rendering of its children.

        Args:
            context (MarkdownContext): The markdown context.
            child (MarkdownElement): The child markdown element.

        Returns:
            bool: Return True to render the element, or False to not render the element.
        Tr')r-r,r3r'r'r)�on_child_closeCszMarkdownElement.on_child_closez	'Console'z'ConsoleOptions'z'RenderResult')�console�optionsr&cCsdS)Nr'r')r-r5r6r'r'r)�__rich_console__Ssz MarkdownElement.__rich_console__N)�__name__�
__module__�__qualname__r#�__annotations__�classmethodr*r.r0r1r4r7r'r'r'r)r"s

r"c@seZdZdZdS)�UnknownElementz�An unknown element.

    Hopefully there will be no unknown elements, and we will have a MarkdownElement for
    everything in the document.

    N)r8r9r:�__doc__r'r'r'r)r=Ysr=c@sFeZdZdZdZddd�dd�Zdddd	�d
d�Zddd�dd
�ZdS)�TextElementz)Base class for elements that render text.�nonez'MarkdownContext'r+)r,r&cCs|�|j�|_tdd�|_dS)N�left)�justify)�enter_style�
style_name�styler r/)r-r,r'r'r)r.gszTextElement.on_enterr!)r,r/r&cCs"|j�|t|t�r|jnd�dS)N)r/�append�
isinstance�str�
current_style)r-r,r/r'r'r)r0kszTextElement.on_textcCs|��dS)N)�leave_style)r-r,r'r'r)r1nszTextElement.on_leaveN)r8r9r:r>rDr.r0r1r'r'r'r)r?bs
r?c@sVeZdZUdZdZded<edddd�d	d
��Zddd�d
d�Zdddd�dd�Z	dS)�	ParagraphzA Paragraph.zmarkdown.paragraphrrBz
'Markdown'rz'Paragraph')r$r%r&cCs||jp
dd�S)NrA)rB)rB)r(r$r%r'r'r)r*xszParagraph.creater+)rBr&cCs
||_dS)N)rB)r-rBr'r'r)�__init__|szParagraph.__init__rrr)r5r6r&ccs|j|j_|jVdS)N)rBr/)r-r5r6r'r'r)r7s
zParagraph.__rich_console__N)
r8r9r:r>rDr;r<r*rLr7r'r'r'r)rKrs
rKcs`eZdZdZedddd�dd��Zdd	d
�dd�Zd
d	d��fdd�Zdddd�dd�Z�Z	S)�Headingz
A heading.z
'Markdown'rz	'Heading')r$r%r&cCs
||j�S)N)�tag)r(r$r%r'r'r)r*�szHeading.createz'MarkdownContext'r+)r,r&cCst�|_|�|j�dS)N)r r/rCrD)r-r,r'r'r)r.�szHeading.on_enterrH)rNr&cs ||_d|��|_t���dS)Nz	markdown.)rNrD�superrL)r-rN)�	__class__r'r)rL�szHeading.__init__rrr)r5r6r&ccsH|j}d|_|jdkr*t|tjdd�Vn|jdkr>td�V|VdS)N�center�h1zmarkdown.h1.border)rrE�h2�)r/rBrNrrZHEAVYr )r-r5r6r/r'r'r)r7�s


zHeading.__rich_console__)
r8r9r:r>r<r*r.rLr7�
__classcell__r'r')rPr)rM�s
rMc@sNeZdZdZdZedddd�dd��Zd	d	d
d�dd
�Zdddd�dd�ZdS)�	CodeBlockz&A code block with syntax highlighting.zmarkdown.code_blockz
'Markdown'rz'CodeBlock')r$r%r&cCs(|jpd}|�d�d}||p d|j�S)NrT� rr/)�info�	partition�
code_theme)r(r$r%Z	node_info�
lexer_namer'r'r)r*�s
zCodeBlock.createrHr+)r[�themer&cCs||_||_dS)N)r[r\)r-r[r\r'r'r)rL�szCodeBlock.__init__rrr)r5r6r&ccs.t|j���}t||j|jddd�}|VdS)NTr)r\Z	word_wrap�padding)rHr/�rstriprr[r\)r-r5r6�code�syntaxr'r'r)r7�szCodeBlock.__rich_console__N)	r8r9r:r>rDr<r*rLr7r'r'r'r)rV�s
rVc@sFeZdZdZdZdd�dd�Zddd	d
�dd�Zd
ddd�dd�ZdS)�
BlockQuotezA block quote.zmarkdown.block_quoter+)r&cCst�|_dS)N)r�elements)r-r'r'r)rL�szBlockQuote.__init__z'MarkdownContext'z'MarkdownElement'r2)r,r3r&cCs|j�|�dS)NF)rbrF)r-r,r3r'r'r)r4�szBlockQuote.on_child_closerrr)r5r6r&c	csf|j|jdd�}|j|j||jd�}|j}td�}td|�}x"|D]}|V|EdH|VqDWdS)N�)�width)rE�
u▌ )�update�	max_width�render_linesrbrEr)	r-r5r6�render_options�linesrEr#r]�liner'r'r)r7�s


zBlockQuote.__rich_console__N)r8r9r:r>rDrLr4r7r'r'r'r)ra�s
rac@s&eZdZdZdZdddd�dd�Zd	S)
�HorizontalRulez%A horizontal rule to divide sections.Frrr)r5r6r&ccs|jddd�}t|d�VdS)Nzmarkdown.hrr@)�default)rE)�	get_styler)r-r5r6rEr'r'r)r7�szHorizontalRule.__rich_console__N)r8r9r:r>r#r7r'r'r'r)rl�srlc@sBeZdZdZdd�dd�Zdddd	�d
d�Zdd
dd�dd�ZdS)�TableElementz.MarkdownElement corresponding to `table_open`.r+)r&cCsd|_d|_dS)N)�header�body)r-r'r'r)rL�szTableElement.__init__z'MarkdownContext'z'MarkdownElement'r2)r,r3r&cCs0t|t�r||_nt|t�r$||_ntd��dS)Nz Couldn't process markdown table.F)rG�TableHeaderElementrp�TableBodyElementrq�RuntimeError)r-r,r3r'r'r)r4�s

zTableElement.on_child_closerrr)r5r6r&ccs�ttjd�}|jdk	rB|jjdk	rBx|jjjD]}|�|j�q.W|jdk	rxx*|jj	D]}dd�|jD�}|j
|�qVW|VdS)N)rcSsg|]
}|j�qSr')�content)�.0�elementr'r'r)�
<listcomp>sz1TableElement.__rich_console__.<locals>.<listcomp>)rrZSIMPLE_HEAVYrp�row�cellsZ
add_columnrurq�rowsZadd_row)r-r5r6�table�columnryZrow_contentr'r'r)r7�s
zTableElement.__rich_console__N)r8r9r:r>rLr4r7r'r'r'r)ro�sroc@s0eZdZdZdd�dd�Zdddd	�d
d�ZdS)
rrz@MarkdownElement corresponding to `thead_open` and `thead_close`.r+)r&cCs
d|_dS)N)ry)r-r'r'r)rLszTableHeaderElement.__init__z'MarkdownContext'z'MarkdownElement'r2)r,r3r&cCst|t�st�||_dS)NF)rG�TableRowElement�AssertionErrorry)r-r,r3r'r'r)r4sz!TableHeaderElement.on_child_closeN)r8r9r:r>rLr4r'r'r'r)rr
srrc@s0eZdZdZdd�dd�Zdddd	�d
d�ZdS)
rsz@MarkdownElement corresponding to `tbody_open` and `tbody_close`.r+)r&cCs
g|_dS)N)r{)r-r'r'r)rLszTableBodyElement.__init__z'MarkdownContext'z'MarkdownElement'r2)r,r3r&cCst|t�st�|j�|�dS)NF)rGr~rr{rF)r-r,r3r'r'r)r4!szTableBodyElement.on_child_closeN)r8r9r:r>rLr4r'r'r'r)rssrsc@s0eZdZdZdd�dd�Zdddd	�d
d�ZdS)
r~z:MarkdownElement corresponding to `tr_open` and `tr_close`.r+)r&cCs
g|_dS)N)rz)r-r'r'r)rL,szTableRowElement.__init__z'MarkdownContext'z'MarkdownElement'r2)r,r3r&cCst|t�st�|j�|�dS)NF)rG�TableDataElementrrzrF)r-r,r3r'r'r)r4/szTableRowElement.on_child_closeN)r8r9r:r>rLr4r'r'r'r)r~)sr~c@sHeZdZdZedddd�dd��Zdd	d
�dd�Zd
dd	d�dd�ZdS)r�z[MarkdownElement corresponding to `td_open` and `td_close`
    and `th_open` and `th_close`.z
'Markdown'rz'MarkdownElement')r$r%r&cCs\t|j�d��pd}d|kr"d}n d|kr0d}nd|kr>d}nd	}|tt�ksRt�||d
�S)NrErTztext-align:right�rightztext-align:centerrQztext-align:leftrArm)rB)rH�attrs�getrrr)r(r$r%rErBr'r'r)r*;szTableDataElement.createrr+)rBr&cCstd|d�|_||_dS)NrT)rB)r rurB)r-rBr'r'r)rLLszTableDataElement.__init__z'MarkdownContext'r!)r,r/r&cCs2t|t�rt|�n|}|�|j�|j�|�dS)N)rGrHr �stylizerIruZappend_text)r-r,r/r'r'r)r0PszTableDataElement.on_textN)r8r9r:r>r<r*rLr0r'r'r'r)r�7sr�c@s\eZdZdZedddd�dd��Zdd	d
d�dd
�Zdddd�dd�Zdddd�dd�ZdS)�ListElementzA list element.z
'Markdown'rz
'ListElement')r$r%r&cCs||jt|j�dd���S)N�startr)�type�intr�r�)r(r$r%r'r'r)r*YszListElement.createrHz
int | Noner+)�	list_type�
list_startr&cCsg|_||_||_dS)N)�itemsr�r�)r-r�r�r'r'r)rL]szListElement.__init__z'MarkdownContext'z'MarkdownElement'r2)r,r3r&cCst|t�st�|j�|�dS)NF)rG�ListItemrr�rF)r-r,r3r'r'r)r4bszListElement.on_child_closerrr)r5r6r&ccs�|jdkr.xv|jD]}|�||�EdHqWnT|jdkr<dn|j}|t|j�}x0t|j�D]"\}}|�|||||�EdHq\WdS)N�bullet_list_openr)r�r��
render_bulletr��len�	enumerate�
render_number)r-r5r6�item�number�last_number�indexr'r'r)r7is
zListElement.__rich_console__N)	r8r9r:r>r<r*rLr4r7r'r'r'r)r�Vs
r�c@s\eZdZdZdZdd�dd�Zddd	d
�dd�Zd
ddd�dd�Zd
ddddd�dd�ZdS)r�zAn item in a list.z
markdown.itemr+)r&cCst�|_dS)N)rrb)r-r'r'r)rL}szListItem.__init__z'MarkdownContext'z'MarkdownElement'r2)r,r3r&cCs|j�|�dS)NF)rbrF)r-r,r3r'r'r)r4�szListItem.on_child_closerrr)r5r6r&ccs�|j|jdd�}|j|j||jd�}|jddd�}td|�}td|�}td	�}x2t|�D]&\}	}
|	rj|n|V|
EdH|VqZWdS)
Nr)rd)rEzmarkdown.item.bulletr@)rmu • z   re)rfrgrhrbrErnrr)r-r5r6rirjZbullet_styleZbulletr]r#�firstrkr'r'r)r��s


zListItem.render_bulletr�)r5r6r�r�r&ccs�tt|��d}|j|j|d�}|j|j||jd�}|jddd�}td�}	td||�}
t|��	|d	�d|�}x2t
|�D]&\}}
|r�|n|
V|
EdH|	Vq~WdS)
N�)rd)rEzmarkdown.item.numberr@)rmrerWr)r�rHrfrgrhrbrErnr�rjustr)r-r5r6r�r�Znumber_widthrirjZnumber_styler#r]Znumeralr�rkr'r'r)r��s
zListItem.render_numberN)	r8r9r:r>rDrLr4r�r�r'r'r'r)r�xs
r�c@s2eZdZedddd�dd��Zddd�d	d
�ZdS)�Linkz
'Markdown'rz'MarkdownElement')r$r%r&cCs|j�dd�}||jt|��S)N�href�#)r�r�rurH)r(r$r%�urlr'r'r)r*�szLink.createrH)r/r�cCst|�|_||_dS)N)r r/r�)r-r/r�r'r'r)rL�s
z
Link.__init__N)r8r9r:r<r*rLr'r'r'r)r��sr�csjeZdZdZdZedddd�dd��Zd	d
dd��fd
d�Zddd��fdd�Zdddd�dd�Z	�Z
S)�	ImageItemz#Renders a placeholder for an image.Fz
'Markdown'rz'MarkdownElement')r$r%r&cCs|t|j�dd��|j�S)z�Factory to create markdown element,

        Args:
            markdown (Markdown): The parent Markdown object.
            token (Any): A token from markdown-it.

        Returns:
            MarkdownElement: A new markdown element
        �srcrT)rHr�r��
hyperlinks)r(r$r%r'r'r)r*�szImageItem.createrHr2r+)�destinationr�r&cs ||_||_d|_t���dS)N)r�r��linkrOrL)r-r�r�)rPr'r)rL�szImageItem.__init__z'MarkdownContext')r,r&cs&|jj|_tdd�|_t��|�dS)NrA)rB)rIr�r r/rOr.)r-r,)rPr'r)r.�s
zImageItem.on_enterrrr)r5r6r&ccsdt|jp|jpdd�}|jp6t|j�d��dd�d�}|jrH|�|�tj	d|ddd�}|VdS)	N)r��/r���u🌆 rWrT)�end)
rr�r�r/r �strip�rsplitr�r��assemble)r-r5r6�
link_style�titler/r'r'r)r7�s"
zImageItem.__rich_console__)r8r9r:r>r#r<r*rLr.r7rUr'r')rPr)r��s
r�c@sleZdZdZddddddd	d
�dd�Zedd
�dd��Zddd	d�dd�Zddd�dd�Zdd
�dd�Z	dS)�MarkdownContextz!Manages the console render state.N�monokairrrz
Optional[str]rHr+)r5r6rE�inline_code_lexer�inline_code_themer&cCs@||_||_t|�|_t�|_d|_|dk	r<td||d�|_dS)NrT)r\)r5r6r�style_stackr�stack�_syntaxr)r-r5r6rEr�r�r'r'r)rL�s
zMarkdownContext.__init__)r&cCs|jjS)z>Current style which is the product of all styles on the stack.)r��current)r-r'r'r)rI�szMarkdownContext.current_style)r/�	node_typer&cCsZ|dkrF|jdk	rF|j�|�}|��|jj�|tj||jj	d��n|jj�||�dS)z#Called when the parser visits text.>�code_inline�fenceN)rE)
r�Z	highlightr^r��topr0r r�r�r�)r-r/r�Zhighlight_textr'r'r)r0�szMarkdownContext.on_textzUnion[str, Style])rDr&cCs"|jj|dd�}|j�|�|jS)zEnter a style context.r@)rm)r5rnr��pushrI)r-rDrEr'r'r)rC�szMarkdownContext.enter_stylecCs|j��}|S)zLeave a style context.)r��pop)r-rEr'r'r)rJs
zMarkdownContext.leave_style)Nr�)
r8r9r:r>rL�propertyrIr0rCrJr'r'r'r)r��sr�c@s�eZdZUdZeeeeeee	e	e
eee
eeeed�Zded<ddddhZd d
d
ddddddd�dd�Zddd�dd�Zdddd�dd�Zd
S)!�Markdowna�A Markdown renderable.

    Args:
        markup (str): A string containing markdown.
        code_theme (str, optional): Pygments theme for code blocks. Defaults to "monokai".
        justify (JustifyMethod, optional): Justify value for paragraphs. Defaults to None.
        style (Union[str, Style], optional): Optional style to apply to markdown.
        hyperlinks (bool, optional): Enable hyperlinks. Defaults to ``True``.
        inline_code_lexer: (str, optional): Lexer to use if inline code highlighting is
            enabled. Defaults to None.
        inline_code_theme: (Optional[str], optional): Pygments theme for inline code
            highlighting, or None for no highlighting. Defaults to None.
    )Zparagraph_openZheading_openr��
code_blockZblockquote_open�hrr�Zordered_list_openZlist_item_open�imageZ
table_openZ
tbody_openZ
thead_openZtr_openZtd_openZth_openz*ClassVar[Dict[str, Type[MarkdownElement]]]rb�em�strongr_�sr�Nr@TrHzOptional[JustifyMethod]zUnion[str, Style]r2z
Optional[str]r+)�markuprZrBrEr�r�r�r&c	CsPt��d��d�}||_|�|�|_||_||_||_||_||_	|pH||_
dS)NZ
strikethroughr|)r
�enabler��parse�parsedrZrBrEr�r�r�)	r-r�rZrBrEr�r�r��parserr'r'r)rL+s
zMarkdown.__init__zIterable[Token])�tokensr&ccsNxH|D]@}|jdk}|jdk}|jr@|s@|s@|�|j�EdHq|VqWdS)zFlattens the token stream.r��imgN)r�rN�children�_flatten_tokens)r-r�r%Zis_fenceZis_imager'r'r)r�?s


zMarkdown._flatten_tokensrrr)r5r6r&ccs�|j|jdd�}|jdd�}t||||j|jd�}|j}|j}d}t�	�}�x2|�
|�D�]"}	|	j}
|	j}|	j
dk}|	j
dk}
|	j
d	k}|
d
kr�|�|	j|
�qX|
dkr�|�d|
�qX|
d
kr�|�d|
�qX|
dk�r.t|	j�dd��}|j�r|jddd�}|t|d�7}|�|�n|j�t�||	��qX|
dk�r�|j�rJ|��n�|j��}t|t��sdt�|jddd�}|�|�|�|jj|
�|��|�d|
�|jddd�}|�|�|�|j |
�|��|�d|
�qX||k�rR|
dk�rR|
dk�rR|�r|�d|���n>|
�r"|��n.|�d|���|	j�rH|�|	j|
�|��qX|j!�|	j��pdt"}|�||	�}|�s~|�r�|j�|�|�#|�|
�r�|j��}|j�p�|j�o�|jj$�%||�}|�rb|�r�|V|�&||j'�EdHnt|�rb|j��|	j}|dk	�r|�||�|j�p:|j�o:|jj$�%||�}|�rb|�rN|V|�&||j'�EdH|
�sl|rX|�(|�|j)}qXWdS)zRender markdown to the console.r@)rmN)�height)r�r�Frr�rr/Z	hardbreakreZ	softbreakrWZ	link_openr�rTzmarkdown.link_url)r�Z
link_closez
markdown.linkz (�)r�r�z	markdown.)*rnrErfr�r�r�r��inlinesrrkr�r�rNZnestingr0rurHr�r�r�rrCr�r�r�r*rJr�rGrr/�plainr�rbr=r.r�r4�renderr6r1r#)r-r5r6rEr,r�Zinline_style_tagsr#Z_new_line_segmentr%r�rNZenteringZexitingZself_closingr�r�rwZlink_url_styleZ
element_classZ
should_renderr/r'r'r)r7Is�























zMarkdown.__rich_console__)r�Nr@TNN)r8r9r:r>rKrMrVrarlr�r�r�rorsrrr~r�rbr;r�rLr�r7r'r'r'r)r�s4


r��__main__z(Render Markdown to the console with Rich)�description�path�PATHz%path to markdown file, or - for stdin)�metavar�helpz-cz
--force-color�force_color�
store_truezforce color for non-terminals)�dest�actionrmr�z-tz--code-themerZr�zpygments code theme)r�rmr�z-iz--inline-code-lexerr�z-yz--hyperlinksr�zenable hyperlinks)r�r�r�z-wz--widthrdz*width of output (default will auto-detect))r�r�rmr�z-jz	--justifyrBzenable full text justifyz-pz--page�pagezuse pager to scroll output)r�-�rtzutf-8)�encoding�fullrA)rBrZr�r�)�file�force_terminalrdT)r�rd�record)b�
__future__r�sys�typingrrrrrrr	Zmarkdown_itr
Zmarkdown_it.tokenr�version_inforZtyping_extensionsZ
rich.tablerrTrZ_loopr�_stackrr5rrrrZ
containersrZjupyterrZpanelrZruler�segmentrrErrr`rr/r r!r"r=r?rKrMrVrarlrorrrsr~r�r�r�r�r�r�r�r8�argparse�ArgumentParserr��add_argumentr��
parse_args�argsZrich.consoler��stdin�readZ
markdown_body�openZ
markdown_filerBrZr�r�r$r��io�pydoc�StringIOZfileior�rd�printZpager�getvaluer'r'r'r)�<module>s�$
;	##",(0;