403Webshell
Server IP : 217.160.0.135  /  Your IP : 216.73.217.85
Web Server : Apache
System : Linux www 6.18.52-i1-ampere #1203 SMP Mon Sep 14 18:29:59 CEST 2026 aarch64
User : sws1074145052 ( 1074145052)
PHP Version : 8.3.32
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/reportlab/platypus/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/reportlab/platypus/__pycache__/tableofcontents.cpython-311.pyc
�

~G�bS���dZdZddlmZddlmZmZmZmZm	Z	m
Z
mZddlm
Z
mZddlmZddlmZddlmZdd	lmZmZdd
lmZddlmZddlmZdd
lZddl m!Z!d�Z"	e#n#Gd�de$��Z#YnxYwd#d�Z%dezZ&dezZ'e
deddde'���gZ(egd���Z)Gd�de��Z*d�Z+Gd�de��Z,e,Z-d �Z.Gd!�d"e��Z/d
S)$z3.5.32aExperimental class to generate Tables of Contents easily

This module defines a single TableOfContents() class that can be used to
create automatically a table of tontents for Platypus documents like
this:

    story = []
    toc = TableOfContents()
    story.append(toc)
    # some heading paragraphs here...
    doc = MyTemplate(path)
    doc.multiBuild(story)

The data needed to create the table is a list of (level, text, pageNum)
triplets, plus some paragraph styles for each level of the table itself.
The triplets will usually be created in a document template's method
like afterFlowable(), making notification calls using the notify()
method with appropriate data like this:

    (level, text, pageNum) = ...
    self.notify('TOCEntry', (level, text, pageNum))

Optionally the list can contain four items in which case the last item
is a destination key which the entry should point to. A bookmark
with this key needs to be created first like this:

    key = 'ch%s' % self.seq.nextf('chapter')
    self.canv.bookmarkPage(key)
    self.notify('TOCEntry', (level, text, pageNum, key))

As the table of contents need at least two passes over the Platypus
story which is why the multiBuild() method must be called.

The level<NUMBER>ParaStyle variables are the paragraph styles used
to format the entries in the table of contents. Their indentation
is calculated like this: each entry starts at a multiple of some
constant named delta. If one entry spans more than one line, all
lines after the first are indented by the same constant named
epsilon.
�)�cm)�
commasplit�
escapeOnce�encode_label�decode_label�strTypes�	asUnicode�asNative)�ParagraphStyle�
_baseFontName)�	sequencer)�	Paragraph)�IndexingFlowable)�
TableStyle�Table)�Spacer)�stringWidth��canvasN)�literal_evalc�,�ddlm}||ddd���S)Nr)�unescape�'�")z&apos;z&quot;)�xml.sax.saxutilsr)�txtrs  �D/usr/lib/python3/dist-packages/reportlab/platypus/tableofcontents.py�unquoter<s.��)�)�)�)�)�)��8�C�C�3�7�7�8�8�8�c��eZdZd�ZdS)�setc�H�||vrt�||��dSdS�N)�list�append)�self�xs  r�addzset.addDs,����}�}����D��#�#�#�#�#��}rN)�__name__�
__module__�__qualname__r(�rrr!r!Cs#������	$�	$�	$�	$�	$rr!� . c
���d�d�|D����}|jd|jd}	}|j}
t||j|
��}||z
}||kr-|
dkr'd|
z}
t||j|
��}||kr|
dk�'t|t��rO|r/t||j|
��}
t||z
|z
|
z��}ndx}}
||z�|��}|||
zz
|z
}||z
}n|�
d	|z}|}|}ntd
���|j	||	��}|�
|j|
��|�|j��|�
|��|j|��td|j|
��}|D]V\}}|s�tt|��|j|
��}|jd|||	||z|	|jzfd�
��|||zz
}�WdS)z�
    Draws pagestr on the canvas using the given style.
    If dot is None, pagestr is drawn at the current position in the canvas.
    If dot is a string, pagestr is drawn right-aligned. If the string is not empty,
    the gap is filled with it.
    �, c�2�g|]\}}t|����Sr,)�str)�.0�p�_s   r�
<listcomp>z#drawPageNumbers.<locals>.<listcomp>Os"��2�2�2�D�A�q��Q���2�2�2r�cur_x�cur_yg�?g�������?rNz,  z@Argument dot should either be None or an instance of basestring.��)�relative)�join�
_curr_tx_info�fontSizer�fontName�
isinstancer�int�	TypeError�	beginText�setFont�setFillColor�	textColor�textLine�drawTextr1�linkRect�leading)r�style�pages�
availWidth�availHeight�dot�	formatter�pagestrr'�yr=�pagestrw�	freeWidth�dotw�dotsn�text�newx�pagex�tx�commawr3�key�ws                       r�drawPageNumbersr]HsL���i�i�2�2�E�2�2�2�3�3�G����(�&�*>�w�*G�q�A��~�H��7�E�N�H�=�=�H��1��I�
�Y�
�
�8�s�?�?���>���w����A�A���Y�
�
�8�s�?�?�
�#�x� � �\��	��s�E�N�H�=�=�D���A��h�.��4�5�5�E�E���E�D�����g�g�.���E�$�J�&��1���X�%���	���w���������Z�[�[�[�	��	�$��	"�	"�B��J�J�u�~�x�(�(�(��O�O�E�O�$�$�$��K�K������F�O�B����
��u�~�x�
8�
8�F������3��	����A������9�9������C�%��E�!�G�Q�u�}�_�!E�PQ�R�R�R�R�
��V������rr9g�?zLevel 0�
�)�namer>r=rI�firstLineIndent�
leftIndent))�VALIGN�rr����rf�TOP)�RIGHTPADDINGrdrer)�LEFTPADDINGrdrerc�^�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
dd
�Zd�Zd�Z
d
�Zdd�Zd	S)�TableOfContentsa�This creates a formatted table of contents.

    It presumes a correct block of data is passed in.
    The data block contains a list of (level, text, pageNumber)
    triplets.  You can supply a paragraph style for each level
    (starting at zero).
    Set dotsMinLevel to determine from which level on a line of
    dots should be drawn between the text and the page number.
    If dotsMinLevel is set to a negative value, no dotted lines are drawn.
    c���|�dd��|_|�dt��|_|�dt��|_|�dd��|_|�dd��|_|r7tdd	�	|�
����z���d|_g|_g|_
dS)
N�rightColumnWidth�H�levelStyles�
tableStyle�dotsMinLevelr9rOzunexpected keyword arguments %sr/)�poprm�defaultLevelStylesro�defaultTableStylerprqrO�
ValueErrorr;�keys�_table�_entries�_lastEntries)r&�kwdss  r�__init__zTableOfContents.__init__�s��� $���);�B� ?� ?����8�8�M�2D�E�E����(�(�<�0A�B�B��� �H�H�^�A�6�6������+�d�3�3����]�z�"C�d�i�i�PT�PY�PY�P[�P[�F\�F\�"\�]�]�]������
�����rc�V�|jdd�|_|���dSr#)rxry�clearEntries�r&s r�beforeBuildzTableOfContents.beforeBuild�s-�� �M�!�!�!�,����������rc��dS�Nr9r,r~s r�
isIndexingzTableOfContents.isIndexing�����qrc�"�|j|jkSr#�rxryr~s r�isSatisfiedzTableOfContents.isSatisfied�����
��!2�2�3rc�*�|dkr|j|�dSdS)z�The notification hook called to register all kinds of events.

        Here we are interested in 'TOCEntry' events only.
        �TOCEntryN��addEntry)r&�kind�stuffs   r�notifyzTableOfContents.notify�s,��
�:����D�M�5�!�!�!�!��rc��g|_dSr#�rxr~s rr}zTableOfContents.clearEntries��
����
�
�
rc
�&�	|j|S#t$rw|�|dz
��}|j�t	d|j|fz||jtz|jtz�����|j|cYSwxYw)�VReturns the style for level n, generating and caching styles on demand if not present.r9�%s-%d-indented�r`�parentrarb)	ro�
IndexError�
getLevelStyler%rr`ra�deltarb�r&�n�	prevstyles   rr�zTableOfContents.getLevelStyle�s���		'��#�A�&�&���	'�	'�	'��*�*�1�Q�3�/�/�I���#�#�N�)�Y�^�Q�,?�?�$�&/�&?��&E�!*�!5�e�!;�	%=�%=�%=�
>�
>�
>�
�#�A�&�&�&�&�	'���s��A>B�BNc��t|��td��ks
Jd���|j�||||f��dS)z�Adds one entry to the table of contents.

        This allows incremental buildup by a doctemplate.
        Requires that enough styles are defined.r9zLevel must be an integerN)�typerxr%)r&�levelrV�pageNumr[s     rr�zTableOfContents.addEntry�sO���E�{�{�d�1�g�g�%�%�%�'A�%�%�%��
���e�T�7�C�8�9�9�9�9�9rc�$�|D]}|j|��
dS)z�Bulk creation of entries in the table of contents.

        If you knew the titles but not the page numbers, you could
        supply them to get sensible output on the first run.Nr�)r&�
listOfEntries�	entryargss   r�
addEntrieszTableOfContents.addEntries�s/��'�	&�	&�I��D�M�9�%�%�%�	&�	&rc�����t�j��dkrdg}n�j}���fd�}|�j_g}|D]�\}}}}	��|��}
|	rAd|	�d|�d�}t|	���dd���d	d��}nd
}td||||fz|
��}|
jr)|�	td|
j��g��|�	|g����t|�f�j�
���_
�j
��j����\�_�_�j�jfS)�,All table properties should be known by now.r)rz!Placeholder for table of contentsrNc�v��|�d��}t|d��t|d��t|d��}}}�
�|��}�
jdkr|�
jkrd}nd}�
jr�
�|��}t
||||fg�	�|��dS)�8Callback to draw dots and page numbers after each entry.�,rr9�r-r8N)�splitr@rr�rqrOr])rr��label�pager�r[rJrNrMrLr&s        ���r�drawTOCEntryEndz-TableOfContents.wrap.<locals>.drawTOCEntryEnd�s�����K�K��$�$�E�"�5��8�}�}�c�%��(�m�m�\�%�PQ�(�=S�=S��%�D��&�&�u�-�-�E�� �A�%�%�%�4�3D�*D�*D�������~�:�d�n�n�T�&:�&:�t��F�E�T�3�K�=�*�k�SV�W�W�W�W�Wrz
<a href="#z">z</a>r�z\x2crNz3%s<onDraw name="drawTOCEntryEnd" label="%d,%d,%s"/>r9��	colWidthsrJ)�lenry�canvr�r��repr�replacer�spaceBeforer%rrrprw�wrapOn�width�height)
r&rLrM�_tempEntriesr��	tableDatar�rVr�r[rJ�keyVal�paras
```          r�wrapzTableOfContents.wrap�s�������t� �!�!�Q�&�&�J�K�L�L��,�L�
	X�
	X�
	X�
	X�
	X�
	X�
	X�%4��	�!��	�+7�
	&�
	&�'�U�D�'�3��&�&�u�-�-�E��
�
�14���d�d�d�;���c���*�*�3�w�7�7�?�?��G�L�L������R�VZ�\c�ej�lr�Us�s�uz�{�{�D�� �
B�� � �&��E�,=�">�">�!@�A�A�A����d�W�%�%�%�%��I�*��d�o�V�V�V���"&�+�"4�"4�T�Y�z�;�"W�"W���
�D�K��
�D�K�(�(rc�D�|j�|j||��S�z�At this stage we do not care about splitting the entries,
        we will just return a list of platypus tables.  Presumably the
        calling app has a pointer to the original TableOfContents object;
        Platypus just sees tables.
        )rw�splitOnr��r&rLrMs   rr�zTableOfContents.splits ���{�"�"�4�9�Z��E�E�Errc�@�|j�||||��dS�z�Don't do this at home!  The standard calls for implementing
        draw(); we are hooking this in order to delegate ALL the drawing
        work to the embedded table object.
        N)rw�drawOn�r&rr'rQ�_sWs     rr�zTableOfContents.drawOns&��
	
����6�1�a��-�-�-�-�-rr#�r)r)r*r+�__doc__r{rr�r�r�r}r�r�r�r�r�r�r,rrrkrk�s�������	�	�	�	�	����
���4�4�4�"�"�"����'�'�'�:�:�:�:�&�&�&�))�))�))�XF�F�F�.�.�.�.�.�.rrkc�^�t|ttf��rt|��S|fSr#)r?r$�tuple)r's r�	makeTupler� s*���!�T�%�L�!�!���Q�x�x��
�4�Krc��eZdZdZd�Zd�Zdd�Zd	�Zej	fd
�Z
d�Zd�Zd
�Z
d�Zd�Zdd�Zd�Zdged��fgfd�Zd�Zd�Zdd�Zd�Zd�ZdS)�SimpleIndexzlCreates multi level indexes.
    The styling can be cutomized and alphabetic headers turned on and off.
    c�J�i|_i|_d|_|jdi|��dS)ze
        Constructor of SimpleIndex.
        Accepts the same arguments as the setup method.
        Nr,)rxry�	_flowable�setup)r&�kwargss  rr{zSimpleIndex.__init__*s8����
���������
���V�����rc�t�	ttd|z��S#t$rtd|z���wxYw)Nz
_format_%szUnknown sequencer format %r)�getattr�rl_sequencer�ImportErrorru)r&�
formatNames  r�
getFormatFunczSimpleIndex.getFormatFunc5sP��	I��<��z�(A�B�B�B���	I�	I�	I��:�Z�G�H�H�H�	I���s��7NT�123rc���|�tdtd���}||_|pt|_||_||_|�ddlm}||_	|�
|��|_||_dS)a�
        This method makes it possible to change styling and other parameters on an existing object.

        style is the paragraph style to use for index entries.
        dot can either be None or a string. If it's None, entries are immediatly followed by their
            corresponding page numbers. If it's a string, page numbers are aligned on the right side
            of the document and the gap filled with a repeating sequence of the string.
        tableStyle is the style used by the table which the index uses to draw itself. Use this to
            change properties like spacing between elements.
        headers is a boolean. If it is True, alphabetic headers are displayed in the Index when the first
        letter changes. If False, we just output some extra space before the next item
        name makes it possible to use several indexes in one document. If you want this use this
            parameter to give each index a unique name. You can then index a term by refering to the
            name of the index which it should appear in:

                <index item="term" name="myindex" />

        format can be 'I', 'i', '123',  'ABC', 'abc'
        N�indexr_)r`r>r=r)�DEFAULT_INDEX_NAME)
rr�	textStylertrprN�headers�reportlab.platypus.paraparserr�r`r��
formatFunc�offset)r&rJrNrpr�r`�formatr�s        rr�zSimpleIndex.setup;s���*�=�"��1>�13�5�5�5�E����$�9�(9����������<�P�P�P�P�P�P���	��,�,�V�4�4�������rc���t|d��}	t|��\}}}n
#|}dx}}YnxYw|�|j}n|�|��}|�|j}t|��}|���}|||z
��}	d|j�d|�d|	��}
|j}|�	|
|d|d|dz��|�
|||	f|
��dS)N�latin1�ix_r4�_p_r6r7rI)r
rr�r�r�r�
getPageNumberr`r<�bookmarkHorizontalr�)r&r�r�r��termsr�r�r��cPN�pnsr[�infos            r�__call__zSimpleIndex.__call__^s����x�(�(��	#�$0��$7�$7�!�E�6�6�6��	#��E�"�"�F�V�V�V�����>���J�J��+�+�F�3�3�J��>��[�F��5�!�!��� � �"�"���j��V��$�$���!%����E�E�E�3�3�7���!������T�'�]�D��M�D��O�4S�T�T�T��
�
�e�c�#�Y��,�,�,�,�,s�&�0c������fd�}|S)Nc�P��ddlm}�|i|��}t|�j���|S)Nrr)�reportlab.pdfgenr�setattrr`)�argsr�r�c�canvasmakerr&s    ��r�newcanvasmakerz2SimpleIndex.getCanvasMaker.<locals>.newcanvasmakerwsB���/�/�/�/�/�/���T�,�V�,�,�A��A�d�i��%�%�%��Hrr,)r&r�r�s`` r�getCanvasMakerzSimpleIndex.getCanvasMakerus*����	�	�	�	�	�	��rc��dSr�r,r~s rr�zSimpleIndex.isIndexingr�rc�"�|j|jkSr#r�r~s rr�zSimpleIndex.isSatisfied�r�rc�j�|j���|_|���dSr#)rx�copyryr}r~s rrzSimpleIndex.beforeBuild�s0�� �M�.�.�0�0����������rc��i|_dSr#r�r~s rr}zSimpleIndex.clearEntries�r�rc�~�|dkr6|\}}|�||j���|f��dSdS)z�The notification hook called to register all kinds of events.

        Here we are interested in 'IndexEntry' events only.
        �
IndexEntryN)r��_canvr�)r&r�r�rVr�s     rr�zSimpleIndex.notify�sM��
�<���!�M�D�'��M�M�$���!9�!9�!;�!;�G� D�E�E�E�E�E� �rc��|j�t|��tg�����||f��dS)zAllows incremental buildupN)rx�
setdefaultr�r!r()r&rVr�r[s    rr�zSimpleIndex.addEntry�s>���
� � ��4����R���9�9�=�=�w��n�M�M�M�M�Mrc�D�|j�|j||��Sr�)r�r�r�r�s   rr�zSimpleIndex.split�s ���~�%�%�d�i�
�K�H�H�HrzPlaceholder for index)NNNc��|jp|j}|s|Stt|�������S)zAReturn the last run's entries!  If there are none, returns dummy.)ryrxr$�sorted�items)r&�dummy�lEs   r�_getlastEntrieszSimpleIndex._getlastEntries�s<��
�
�
/�$�-���	��L��F�2�8�8�:�:�&�&�'�'�'rc	������d�����D��}d�}|�|����jrdpd�����fd�}|�j_d}g}g}��d��}	|D�]�\}
}t
|
��}
d�d�tj	d	|
dd�
����D����}||kr�|}�jr|}
nd
}
|�td|	j
��g��|�t|
|	��g��|�td|	j��g��t!||
��\}}|r|
}|
|d�}
t#t
|����}|
d�d|�d
�|
d<|
D]�}t%|��}��|�z��}t||��}|j
r)|�td|j
��g��|�|g��|dz
}�����t'|�g�j����_dS)Nc�J�g|] \}}td�|D����|f��!S)c3�4K�|]}t|��V��dSr#)r	)r2�ts  r�	<genexpr>z0SimpleIndex._build.<locals>.<listcomp>.<genexpr>�s(����;�;��y��|�|�;�;�;�;�;�;r)r�)r2�texts�pageNumberss   rr5z&SimpleIndex._build.<locals>.<listcomp>�sN��N�N�N� 2��{��;�;�U�;�;�;�;�;�K�H�N�N�Nrc�&�d�|dD��S)Nc
��g|]F}d�d�tjd|�����D������GS)r8c3�JK�|]}tj|��dk�|V��dS��MnN��unicodedata�category�r2r�s  rrz@SimpleIndex._build.<locals>.getkey.<locals>.<listcomp>.<genexpr>�s:����s�s�1�S^�Sg�hi�Sj�Sj�nr�Sr�Sr�Q�Sr�Sr�Sr�Sr�s�sr�NFD)r;r�	normalize�upper)r2r's  rr5z6SimpleIndex._build.<locals>.getkey.<locals>.<listcomp>�s[��F�F�F�yz�B�G�G�s�s��(=�e�Q�W�W�Y�Y�(O�(O�s�s�s�t�t�F�F�Frrr,)�seqs r�getkeyz"SimpleIndex._build.<locals>.getkey�s;��F�F�B�CD�E�F�F�F�
Fr)r[r9rc��������}d�tt|����D��}t|||���j��dS)r�c�(�g|]\}}|d|f��S)r9r,)r2r3�ks   rr5zASimpleIndex._build.<locals>.drawIndexEntryEnd.<locals>.<listcomp>�s$��E�E�E�#�!�A�a��d�1�X�E�E�ErN)r�rrr]rN)	rr�r�rJrKrMrL�leveloffsetr&s	     ����r�drawIndexEntryEndz-SimpleIndex._build.<locals>.drawIndexEntryEnd�sY����&�&�{�3�3�E�E�E���U�0C�0C�)D�)D�E�E�E�E��F�E�5�*�k�4�8�T�T�T�T�Trr8c3�JK�|]}tj|��dk�|V��dSrrrs  rrz%SimpleIndex._build.<locals>.<genexpr>�s:����~�~�A�^i�^r�st�^u�^u�y}�^}�^}�a�^}�^}�^}�^}�~�~rr� rfz(<onDraw name="drawIndexEntryEnd" label="z"/>r�)r�sortr�r�r r�r$r;rrrr%rr�r�
spaceAfter�listdiffrrrrpr�)r&rLrMr�rr �alphar��	lastTexts�
alphaStylerr
�nalpha�header�i�diffr�rVrJr�rs```                 @r�_buildzSimpleIndex._build�s�������N�N�6:�6J�6J�6L�6L�N�N�N��	F�	F�	F����f��%�%�%��l�(�q�-�A��	U�	U�	U�	U�	U�	U�	U�	U�
'8��	�#����	��	��'�'��*�*�
�".�"	�"	��E�;���K�K�E��W�W�~�~��)>�u�e�A�h�q�k�FW�FW�FY�FY�)Z�)Z�~�~�~���F��������<�!�"�F�F� �F�� � �&��J�,B�"C�"C�!E�F�F�F�� � �)�F�J�"?�"?�!A�B�B�B�� � �&��J�,A�"B�"B�!D�E�E�E��y�%�0�0�G�A�t��
"�!�	��a�b�b�	�� ��k�!2�!2�3�3�E�MR�SU�Y�Y�Y�X]�X]�X]�^�E�"�I��
�
��"�$�'�'���*�*�1�[�=�9�9�� ��u�-�-���$�F��$�$�f�Q��0A�&B�&B�%D�E�E�E�� � �$��)�)�)��Q����
��y�Z�L���X�X�X����rc��|�||��|j�|j||��\|_|_|j|jfS)r�)r-r�r�r�r�r�r�s   rr�zSimpleIndex.wrap�sI�����J�{�+�+�+�"&�.�"7�"7��	�*�k�"Z�"Z���
�D�K��z�4�;�&�&rc�@�|j�||||��dSr�)r�r�r�s     rr�zSimpleIndex.drawOn�s&��
	
����f�a��C�0�0�0�0�0rc��|j}t|dd��}|s|j|_	|���|s|`dSdS#|s|`wxYw)Nr�)r�r�r��draw)r&r
�ocanvs   rr1zSimpleIndex.draw�sm���N����&��&�&���	��Y�A�F�	�
�F�F�H�H�H��
��F�F�F�
�
��5�
��F�
�
�
�
s�A�A
c��t|jd��s
|jg|_	|j|S#t$r�t|j��|_|�|dz
��}|j�t
d|j|fz||jdtzz|j
dtzz�����|j|cYSwxYw)r��__iter__r9r�g�������?r�)�hasattrr�r�r$r�r%rr`rarrbr�s   rr�zSimpleIndex.getLevelStyle�s����t�~�z�2�2�	.�"�n�-�D�N�
	%��>�!�$�$���	%�	%�	%�!�$�.�1�1�D�N��*�*�1�Q�3�/�/�I��N�!�!�.�)�Y�^�Q�,?�?�$�&/�&?��2��&E�!*�!5�b��e�!;�	#=�#=�#=�
>�
>�
>�
�>�!�$�$�$�$�	%���s�1�BC�C)NNNTNr�rr#r�)r)r*r+r�r{r�r�r�r�Canvasr�r�r�rr}r�r�r��	enumeraterr-r�r�r1r�r,rrr�r�%sx��������	�	�	�I�I�I�!�!�!�!�F-�-�-�.*0���������4�4�4����
���F�F�F�N�N�N�N�I�I�I�(?�&?�	�	�)�@T�@T�%U�$V�(�(�(�(�7Y�7Y�7Y�r'�'�'�1�1�1�1�	�	�	�%�%�%�%�%rr�c���tt|��t|����}t|��D]"}||||kr|||d�fcS�#|||d�fSr#)�minr��range)�l1�l2�mr+s    rr%r%sr���C��G�G�S��W�W���A�
�1�X�X����
�a�5�B�q�E�>�>��b����f�9������b����f�9�rc�2�eZdZdZd�Zd�Zd�Zd�Zd	d�ZdS)
�
ReferenceTextzVFakery to illustrate how a reference would work if we could
    put it in a paragraph.c�t�||_||_td��|_d|_d|_d|_dS)N�tmpi���)�textPattern�targetr�	paraStyle�_lastPageNum�_pageNum�_para)r&rB�	targetKeys   rr{zReferenceText.__init__s:��&������'��.�.��� �����
���
�
�
rc��|j|_dSr#)rFrEr~s rrzReferenceText.beforeBuilds�� �M����rc�H�|dkr|\}}||jkr||_dSdSdS)N�Target)rCrF)r&r�r�r[r�s     rr�zReferenceText.notify!s<���8���"�N�S�'��d�k�!�!� '��
�
�
���!�!rc��|j|jz}t||j��|_|j�||��Sr#)rBrErrDrGr�)r&rLrMrVs    rr�zReferenceText.wrap's;����$�"3�3���t�T�^�4�4��
��z���z�;�7�7�7rrc�@�|j�||||��dSr#)rGr�r�s     rr�zReferenceText.drawOn,s$���
���&�!�Q��,�,�,�,�,rNr�)	r)r*r+r�r{rr�r�r�r,rrr?r?sn�����������*�*�*�(�(�(�8�8�8�
-�-�-�-�-�-rr?)r-N)0�__version__r��reportlab.lib.unitsr�reportlab.lib.utilsrrrrrr	r
�reportlab.lib.stylesrr�
reportlab.libr
r��reportlab.platypus.paragraphr�reportlab.platypus.doctemplater�reportlab.platypus.tablesrr�reportlab.platypus.flowablesr�reportlab.pdfbase.pdfmetricsrr�rr�astrrr!r$r]r��epsilonrsrtrkr�r��AlphabeticIndexr%r?r,rr�<module>r[s���

��'	��R#�"�"�"�"�"�q�q�q�q�q�q�q�q�q�q�q�q�q�q�q�q�q�q�>�>�>�>�>�>�>�>�3�3�3�3�3�3�2�2�2�2�2�2�;�;�;�;�;�;�7�7�7�7�7�7�7�7�/�/�/�/�/�/�4�4�4�4�4�4�#�#�#�#�#�#�����������9�9�9�$��C�C��$�$�$�$�$�$�d�$�$�$�$�$����
4�4�4�4�v	
�"���

�b�&���N�
������
������J�������H.�H.�H.�H.�H.�&�H.�H.�H.�T���
c%�c%�c%�c%�c%�"�c%�c%�c%�J�����-�-�-�-�-�$�-�-�-�-�-s�A"�"A4

Youez - 2016 - github.com/yon3zu
LinuXploit