+
    bIi                       R t Rt^ RIt^ RIHtHt ^ RIHtHt ^ RIH	t	 ^ RI
HtHtHt ^ RIHt ^ RIHtHtHt ^ R	IHt ^ R
IHt ^ RIHt ^ RIHtHtHtHt RP?                  4       t  ! R R4      t! ! R R4      t" ! R R]"4      t#R t$RR lt%Rt&R t'R t( ! R R]"4      t) ! R R]"4      t* ! R R]"4      t+ ! R R ]+4      t, ! R! R"]+4      t- ! R# R$]-4      t. ! R% R&].4      t/ ! R' R(].4      t0 ! R) R*],4      t1RR+ lt2R, t3 ! R- R.4      t4 ! R/ R0]4]"4      t5 ! R1 R2]54      t6 ! R3 R4]"4      t7R5 t8 ! R6 R7]"4      t9 ! R8 R9]"4      t: ! R: R;]+4      t; ! R< R=]"4      t< ! R> R?]"4      t= ! R@ RA4      t>RB t? ! RC RD]44      t@ ! RE RF]@]"4      tARG tBRH tC ! RI RJ]@]"4      tD ! RK RL]"4      tE ! RM RN4      tF ! RO RP]@]F]"4      tG ! RQ RR]+4      tH ! RS RT]+4      tI ! RU RV]+4      tJ ! RW RX]F]+4      tK ! RY RZ],4      tL ! R[ R\]4      tM ! R] R^]L4      tN ! R_ R`]+4      tO^ RaIPHQtQ ]R! RbRcRdReRfRgRhRiRjRkRl7
      tSRRm ltT ! Rn Ro4      tURp tV ! Rq Rr]"4      tW ! Rs Rt]W4      tX^ RuIHYtY  ! Rv Rw4      tZ ! Rx Ry4      t[ ! Rz R{]@]"]F4      t\ ! R| R}]"4      t] ! R~ R]+4      t^ ! R R]^4      t_ ! R R]^4      t` ! R R]`4      ta ! R R]`4      tb ! R R]b4      tc ! R R]+4      td ! R R]+4      teR# )z3.3.0a  
A flowable is a "floating element" in a document whose exact position is determined by the
other elements that precede it, such as a paragraph, a diagram interspersed between paragraphs,
a section header, etcetera.  Examples of non-flowables include page numbering annotations,
headers, footers, fixed diagrams or logos, among others.

Flowables are defined here as objects which know how to determine their size and which
can draw themselves onto a page with respect to a relative "origin" position determined
at a higher level. The object's draw() method should assume that (0,0) corresponds to the
bottom left corner of the enclosing rectangle that will contain the object. The attributes
vAlign and hAlign may be used by 'packers' as hints as to how the object should be placed.

Some Flowables also know how to "split themselves".  For example a
long paragraph might split itself between one page and the next.

Packers should set the canv attribute during wrap, split & draw operations to allow
the flowable to work out sizes etc in the proper context.

The "text" of a document usually consists mainly of a sequence of flowables which
flow into a document from top to bottom (with column and page breaks controlled by
higher level components).
N)deepcopycopy)gray	lightgrey)fp_str)TA_LEFT	TA_CENTERTA_RIGHT)_baseFontName)strTypesrl_safe_execannotateException)ABag)pdfutils)stringWidth)_FUZZoverlapAttachedSpaceignoreContainerActionslistWrapOnFakeWidtha  AnchorFlowable BalancedColumns BulletDrawer CallerMacro CondPageBreak DDIndenter DocAssert
        DocAssign DocExec DocIf DocPara DocWhile FailOnDraw FailOnWrap Flowable FrameBG FrameSplitter
        HRFlowable Image ImageAndFlowables KeepInFrame KeepTogether LIIndenter ListFlowable ListItem
        Macro NullDraw PTOContainer PageBreak PageBreakIfNotEmpty ParagraphAndImage Preformatted
        SetPageTopFlowables SetTopFlowables SlowPageBreak Spacer TopPadder TraceInfo UseUpSpace XBox
        splitLine splitLines PlacedStoryc                   *   a  ] tR t^.t o RtR tRtV tR# )	TraceInfoz0Holder for info about where an object originatedc                L    R V n         RV n        RV n        RV n        RV n        R# )z	(unknown)N)srcFilestartLineNostartLinePos	endLineNo
endLinePosselfs   &څC:\Users\petid\OneDrive\Desktop\Maestro\MAESTRO CLAUDE\MAESTRO\maestro-backend\venv\Lib\site-packages\reportlab/platypus/flowables.py__init__TraceInfo.__init__0   s'    "    )r   r   r   r   r   N__name__
__module____qualname____firstlineno____doc__r!   __static_attributes____classdictcell____classdict__s   @r    r   r   .   s     6 r#   r   c                      a  ] tR t^=t o Rt^ t^ tR tR tRR lt	RR lt
R tR tR tR	 tR
 tR tR tR tR tRR lt]R 4       tR tR tRtV tR# )FlowablezAbstract base class for things to be drawn.  Key concepts:

1. It knows its size
2. It draws in its own coordinate system (this requires the
   base API to provide a translate() function.

c                v    ^ V n         ^ V n        ^ V n        RV n        RV n        RV n        RV n        RV n        R# )    LEFTBOTTOMN)widthheightwrappedhAlignvAlign
_traceInfo_showBoundaryencodingr   s   &r    r!   Flowable.__init__H   sA    
  !
 r#   c                6    Wn         V P                  4        V = R# )z#ensure canv is set on and then drawN)canvdrawr   r>   s   &&r    _drawOnFlowable._drawOnZ   s    			Ir#   c                   V'       d~   \        V R 4      '       dl   V P                  pVRR\        39   d   VRV,          ,          pV# VR\        39   d   W,          pV# VR\        39  d   \        R\        V4      ,           4      hV# )r7   CENTERCENTRE      ?RIGHTr2   zBad hAlign value )hasattrr7   r   r	   r   
ValueErrorstr)r   xsWas   &&& r    _hAlignAdjustFlowable._hAlignAdjust`   s    '$x((AXh	22SV
 	 wx((  6'** !4SV!;<<r#   c                n   V P                  W$4      pVP                  4        VP                  W#4       V P                  V4       \	        V R4      '       dP   V P
                  '       d>   VP                  \        4       VP                  ^ ^ V P                  V P                  4       VP                  4        R# )z6Tell it to draw itself on the canvas.  Do not overrider:   N)rN   	saveState	translaterA   rH   r:   setStrokeColorr   rectr4   r5   restoreStater   canvasrK   y_sWs   &&&&&r    drawOnFlowable.drawOnk   s    q%V4))d.@.@.@!!$'KK!DJJ4r#   c                >    Wn         V P                  W#4      w  rEV = WE3# )zOintended for use by packers allows setting the canvas on
during the actual wrap)r>   wrap)r   r>   aWaHwhs   &&&&  r    wrapOnFlowable.wrapOnw   s%     	yyItr#   c                2    V P                   V P                  3# )zThis will be called by the enclosing frame before objects
are asked their size, drawn or whatever.  It returns the
size actually used.r4   r5   r   
availWidthavailHeights   &&&r    r]   Flowable.wrap   s     

DKK((r#   c                0    \        V RV P                  4      # )z-This should return the minimum required width	_minWidth)getattrr4   r   s   &r    minWidthFlowable.minWidth   s    tK

33r#   c                8    Wn         V P                  W#4      pV = V# )zPintended for use by packers allows setting the canvas on
during the actual split)r>   split)r   r>   r^   r_   Ss   &&&& r    splitOnFlowable.splitOn   s!     	JJrIr#   c                    . # )aG  This will be called by more sophisticated frames when
wrap fails. Stupid flowables should return []. Clever flowables
should split themselves and return a list of flowables.
If they decide that nothing useful can be fitted in the
available space (e.g. if you have a table and not enough
space for the first row), also return [] )r   rg   availheights   &&&r    rp   Flowable.split   s	     	r#   c                    \        V R4      '       d   V P                  # \        V R4      '       d3   \        V P                  R4      '       d   V P                  P                  # ^ # )zOreturns boolean determining whether the next flowable should stay with this onekeepWithNextstyle)rH   ry   rz   r   s   &r    getKeepWithNextFlowable.getKeepWithNext   sL    4''0A0A)AT'""wtzz.'I'IRVR\R\RiRiKir#   c                    \        V R4      '       d   V P                  # \        V R4      '       d3   \        V P                  R4      '       d   V P                  P                  # ^ # )zXreturns how much space should follow this item if another item follows on the same page.
spaceAfterrz   )rH   r~   rz   r   s   &r    getSpaceAfterFlowable.getSpaceAfter   sJ    4%%doo'=T'""wtzz,'G'GPTPZPZPePeIer#   c                    \        V R4      '       d   V P                  # \        V R4      '       d3   \        V P                  R4      '       d   V P                  P                  # ^ # )z[returns how much space should precede this item if another item precedess on the same page.spaceBeforerz   )rH   r   rz   r   s   &r    getSpaceBeforeFlowable.getSpaceBefore   sL    4&&t/?/?(?T'""wtzz-'H'HQUQ[Q[QgQgJgr#   c                    ^ # )z?Hook for IndexingFlowables - things which have cross referencesru   r   s   &r    
isIndexingFlowable.isIndexing   s    r#   Nc                T   \        V R4      '       d   V P                  ^R7      pM*\        V R4      '       d   \        V P                  4      pMRpV'       d   V'       d   VRV pRV P                  P
                  : R\        \        V 4      4      : V P                  4       : RV: 2# )	z
This method should attempt to return a string that can be used to identify
a particular flowable uniquely. The result can then be used for debugging
and or error printouts
getPlainText)identifytextz...N< at >)	rH   r   rJ   r   	__class__r%   hexid
_frameNamer   maxLenrs   && r    identityFlowable.identity   s}     4((!!1!-AT6""DIIAA'6
A#'>>#:#:C4M4??K\^_``r#   c                2    \        \        V R R4      RR4      # )r>   N_doctemplaterl   r   s   &r    r   Flowable._doctemplate   s    wtF40EEr#   c                0    \        V P                  VR 4      # N)rl   r   r   rM   s   &&r    _doctemplateAttrFlowable._doctemplateAttr   s    t((400r#   c                    \        V R R4      pV'       g   V P                  R4      pV'       d&   VP                  '       d   RVP                  ,          # R# )_frameNframez	 frame=%s )rl   r   r   r   fs   & r    r   Flowable._frameName   s>    D$'d++G4!kADD00r#   )	r:   r9   r>   r;   r7   r5   r8   r4   r6   r1   r   )r%   r&   r'   r(   r)   _fixedWidth_fixedHeightr!   rA   rN   rZ   rb   r]   rm   rr   rp   r{   r   r   r   r   propertyr   r   r   r*   r+   r,   s   @r    r/   r/   =   s      KL$	
)4a  F F1 r#   r/   c                   :   a  ] tR t^t o RtRR ltR tR tRtV t	R# )XBoxzzExample flowable - a box with an x through it and a caption.
This has a known size, so does not need to respond to wrap().c                T    \         P                  V 4       Wn        W n        W0n        R # r   )r/   r!   r4   r5   r   )r   r4   r5   r   s   &&&&r    r!   XBox.__init__   s    $
	r#   c                \    R V P                   : RV P                  : RV P                  : R2# )zXBox(w=z, h=z, t=))r4   r5   r   r   s   &r    __repr__XBox.__repr__   s    +/::t{{DIINNr#   c                   V P                   P                  ^ ^ V P                  V P                  4       V P                   P	                  ^ ^ V P                  V P                  4       V P                   P	                  ^ V P                  V P                  ^ 4       V P                   P                  \        ^4       V P                   P                  RV P                  ,          RV P                  ,          V P                  4       R# )r1   rF   N)	r>   rT   r4   r5   linesetFontr
   drawCentredStringr   r   s   &r    r?   	XBox.draw   s    		q!TZZ5		q!TZZ5		q$++tzz15 			-+		##C

NCOTYYOr#   )r5   r   r4   N)zA Box)
r%   r&   r'   r(   r)   r!   r   r?   r*   r+   r,   s   @r    r   r      s"     EOP Pr#   r   c                     \        V 4      '       d(   V ^ ,          P                  4       R8X  d   V R,          p K8  \        V 4      '       d$   V R,          P                  4       R8X  d   V RR p K4  V # )r1   r      NNNr   )lenstrip)liness   &r    _trimEmptyLinesr      sQ    
e**q)R/b	
e**r*b0cr
Lr#   c                    V P                  R4      pV^ 8  d<   \        V4      p. pV F&  pWAR P                  4       pVP                  V4       K(  	  V# \        V4      pV# )z
tidy up text - carefully, it is probably code.  If people want to
indent code within a source script, you can supply an arg to dedent
and it will chop off that many character, otherwise it leaves
left edge intact.

N)rp   r   rstripappend)r   dedentr   	templinesr   s   &&   r    	_dedenterr      sh     JJtEax#E*	D='')DLL  L  &Lr#   z[{( ,.;:/\-c                     Vf   \         pVf   Rp. pV  F3  p\        V4      V8  d   \        WTVW#4       K"  VP                  V4       K5  	  V# )Nr   )SPLIT_CHARSr   	splitLiner   )r   maximum_lengthsplit_charactersnew_line_characterslines_splittedr   s   &&&&  r    
splitLinesr      s\    &" Nt9~%dN3 !!$'  r#   c                    R pV '       d   \        V 4      ^ 8  d   ^ p\        V 4      V8:  d   \        V 4      pM*\        V4       F  pW,          V9   g   K  V^,           pK  	  V^ 8X  d
   X^,           pV'       d*   VP                  V ^ V 4       RpV\        V4      ,          pMVP                  VV ^ V ,           4       WR p K  R# R# )TFN)r   ranger   )line_to_splitr   r   r   r   
first_linesplit_index
line_indexs   &&&&&   r    r   r     s     J C.q0  }/m,K $N3
 !,0@@",q.K	 4 >$q.K!!-+">?Jc"566N!!"5!K(#) * &l3? 1-r#   c                   L   a  ] tR tRt o RtRR ltR tR tR tR t	R	 t
R
tV tR# )Preformattedi6  au  This is like the HTML <PRE> tag.
It attempts to display text exactly as you typed it in a fixed width "typewriter" font.
By default the line breaks are exactly where you put them, and it will not be wrapped.
You can optionally define a maximum line length and the code will be wrapped; and
extra characters to be inserted at the beginning of each wrapped line (e.g. '> ').
Nc                    W n         W0n        \        W4      V n        V'       d*   V'       d    \	        V P                  VVV4      V n        R# R# R# )ztext is the text to display. If dedent is set then common leading space
will be chopped off the front (for example if the entire text is indented
6 spaces or more then each line will have 6 spaces removed from the front).
N)rz   
bulletTextr   r   r   )r   r   rz   r   r   maxLineLength
splitCharsnewLineCharss   &&&&&&&&r    r!   Preformatted.__init__=  sB    
 
$t+
M# $

 - * ,	DJ "4r#   c                    V P                   pR pVe   R\        V4      ,          pV: RRP                  V P                  4      : R2# )zPreformatted(zPreformatted(bulletText=%s,z'''\ 
r   z'''))r   reprjoinr   )r   bTHs   &  r    r   Preformatted.__repr__M  s;    __>-R8A%&		$**(=>>r#   c                    Wn         V P                  P                  \        V P                  4      ,          V n        V P                   V P
                  3# r   )r4   rz   leadingr   r   r5   rf   s   &&&r    r]   Preformatted.wrapT  s8    
jj((TZZ8

DKK((r#   c           
         V P                   pVP                  pVP                  p\        V P                   Uu. uF  p\        WCV4      NK  	  up4      # u upi r   )rz   fontSizefontNamemaxr   r   )r   rz   r   r   r   s   &    r    rm   Preformatted.minWidthY  sE    

>>>>DJJOJDKh7JOPPOs   Ac                   W P                   P                  8  d   . # \        VR ,          V P                   P                  ,          4      pRP                  V P                  ^ V 4      pRP                  V P                  VR 4      pV P                   pVP
                  ^ 8w  d   \        V4      p^ Vn        \        W@P                   4      \        WV4      .# )      ?r   N)rz   r   intr   r   firstLineIndentr   r   )r   rg   rh   linesThatFittext1text2rz   s   &&&    r    rp   Preformatted.split_  s     +++I;,tzz/A/AAB		$**Q|45		$**\]34

  A%UOE$%E!UJJ/e1KLLr#   c                   V P                   P                  pV P                  V P                   P                  ,
          pV P                  P                  R 4       V P                   P                  '       d0   V P                  P                  V P                   P                  4       V P                  P                  W4      pVP                  V P                   P                  V P                   P                  V P                   P                  4       V P                   F  pVP                  V4       K  	  V P                  P                  V4       R# )z%PreformattedParaN)rz   
leftIndentr5   r   r>   
addLiteral	textColorsetFillColor	beginTextr   r   r   r   textLinedrawText)r   cur_xcur_ytxr   s   &    r    r?   Preformatted.drawp  s    
 

%%djj111		01::II""4::#7#78YY  .


DJJ''JJ''JJ&&	( JJDKK 		2r#   )r   r5   r   rz   r4   )Nr1   NNr   )r%   r&   r'   r(   r)   r!   r   r]   rm   rp   r?   r*   r+   r,   s   @r    r   r   6  s/      ?)
QM" r#   r   c                   p   a  ] tR tRt o Rt^t^tRR ltR tR t	R t
R tR	 tR
 tR tR tRR ltRtV tR# )Imagei  a  an image (digital picture).  Formats supported by PIL/Java 1.4 (the Python/Java Imaging Library
are supported. Images as flowables may be aligned horizontally in the
frame with the hAlign parameter - accepted values are 'CENTER',
'LEFT' or 'RIGHT' with 'CENTER' being the default.
We allow for two kinds of lazyness to allow for many images in a document
which could lead to file handle starvation.
lazy=1 don't open image until required.
lazy=2 open image when required then shut it.
Nc	                j   Wpn         WPn        \        VR4      p	RV n        V	'       d   Wn        \        V4      V n        MG\        VR4      '       d(   Wn        \        V4      V n        RV n        RV n        Rp	MV;V n        V n        Wn        V	'       g   \        P                  P                  V4      ^,          R9   d   ^ RIHp
 V
! VR4      p  \        P                  ! V4      p TP#                  4        T^ ,          T n        T^,          T n        T'       d   T^,          T n        RT n        T P!                  Y#T^ 4       R# V	'       d   V P!                  W#V^ 4       R# V P!                  W#WF4       R#    T P!                  Y#YF4        TP#                  4        R# ; i  TP#                  4        i ; i)z8If size to draw at not specified, get it from the image.readN	_renderPyT)open_for_readb)z.jpgz.JPGz.jpegz.JPEG)r7   _maskrH   _drawing_filer   filename_img_dpiospathsplitextreportlab.lib.utilsr  r   readJPEGInfo_setupclose
imageWidthimageHeight)r   r	  r4   r5   kindmasklazyr7   useDPIfpr  r   infos   &&&&&&&&&    r    r!   Image.__init__  sS    
Xf%!J NDMXk**$Mx.DMDJDIB)11DJ	bgg&&x037YY :h,A#003D 	"1gDO#AwD G	DIKKT!,KKT!,KKT/KKT7		s   E6 6F
F  F   F2c                
   V P                   pV'       do   V^ ,          ^H8w  d(   V ;P                  RV^ ,          ,          ,          un        V^,          ^H8w  d*   V ;P                  RV^,          ,          ,          un        R# R# R# )r1   g      R@N)r  r  r  )r   dpis   & r    
_dpiAdjustImage._dpiAdjust  sX    ii1vrz4??dSVm;?1vrz4++tc!f}<+z r#   c                h    W@n         Wn        W n        W0n        V^ 8:  d   V P	                  4        R# R# r1   N)_lazy_width_height_kind_setup_inner)r   r4   r5   r  r  s   &&&&&r    r  Image._setup  s*    

7D%%'7r#   c                4   V P                   pV P                  pV P                  pV P                  pV'       dn   VP	                  4       w  V n        V n        V P                  '       d>   \        VR 4      '       d,   VP                  P                  P                  RR4      V n        MPV P                  '       d?   V P                  P                  V P                  P                  uV n        V n        RV n        V P                  4        V P                   ^8  d   V =VR9   d9   T;'       g    V P
                  V n        T;'       g    V P                  V n        R# VR9   dA   V P
                  V,          R,          V n        V P                  V,          R,          V n        R# VR9   ds   \'        \)        V4      V P
                  ,          \)        V4      V P                  ,          4      pV P
                  V,          V n        V P                  V,          V n        R# R# )	_imager  F{Gz?N)H   r+  )directabsolute)
percentage%)boundproportional)r#  r$  r%  r
  getSizer  r  r  rH   r)  r  getr  r4   r5   r  r"  	drawWidth
drawHeightminfloat)r   r4   r5   r  imgfactors   &     r    r&  Image._setup_inner  s|   zzii03-DOT-yyyWS22JJOO//g>	]]]040C0CDMMDXDX-DOT-DI::q=di(("55dooDN$88(8(8DO''!__U247DN"..v5d:DO--udoo5eFmDDTDT6TUF!__V3DN"..v5DO .r#   c                   V P                   V\        ,           8  g   V P                  V\        ,           8  d   V P                   V P                  3V n        \	        \        V4      V P                   ,          \        V4      V P                  ,          4      pV ;P                   V,          un         V ;P                  V,          un        V P                   V P                  3# r   )r4  r   r5  _oldDrawSizer6  r7  )r   r^   r_   r9  s   &&& r    _restrictSizeImage._restrictSize  s    >>"U("doobh&> $ ?Dr4>>1%)DOO2KLFNNf$NOOv%O~~t..r#   c                R    \        V R R4      pV'       d   Vw  V n        V n        R# R# )r<  N)rl   r4  r5  )r   dwhs   & r    _unRestrictSizeImage._unRestrictSize  s&    d>$/.1+DNDO r#   c                n   VR 8X  di   ^ RI Hp V! V P                  4      V n        \	        V P                  \
        4      '       g    RV n        V P                  ^8  d   ^V n        V P                  # VR9   d$   V P                  4        V P                  V,          # \        R\        V 4      V3,          4      h)r
  )ImageReaderNz<Image @ 0x%x>.%s)r4  r5  r  r  )r  rD  r  r
  
isinstancer   r"  r&  __dict__AttributeErrorr   )r   rM   rD  s   && r    __getattr__Image.__getattr__  s    f97#DJJ/DIdjj22!
::q=q$*99GG==##0BtHQ<?@@r#   c                2    V P                   V P                  3# r   )r4  r5  rf   s   &&&r    r]   
Image.wrap  s    ~~t..r#   c           	        \        V R ^ 4      p\        V R^ 4      pV P                  pV'       d   V P                  \        V P                  4      ,          pV P
                  \        V P                  4      ,          pVP                  p VP                  WE4       VP                  V P                  W4       Wcn        R# V P                  pV^8  d   ^V n        V P                  P                  V P                  ;'       g    V P                  VVV P                  V P
                  V P                  R7       V^8  d   R;V n        V n        Wpn        R# R#   Ycn        i ; i)_offs_x_offs_y)r  N)rl   r  r4  r7  r  r5  r  	transformscalerZ   r>   r"  	drawImager
  r	  r  r  )r   dxdydsxsyotransr  s   &       r    r?   
Image.draw   s   T)A&T)A&MM%"88B5)9)9#::B[[F%2)$::DQwQ
IIDII$>$>$&$&$(NN$(OO)-   & Qw)--	DJ!
  %s   -E Ec                    \         P                  W4      pVRR R8X  d8   \        V P                  \        4      '       d   VRR : RV P                  : R2pV# )   Nz>...z
 filename=r   )r/   r   rE  r	  rJ   r   s   && r    r   Image.identity  sH    d*RS66>js;;%&sVDMM:Ar#   )r  r  r  r$  r
  r%  r"  r  r<  r#  r5  r4  r	  r7   r  r  )NNr,  autor   rD   Fr   )r%   r&   r'   r(   r)   r   r   r!   r  r  r&  r=  rA  rH  r]   r?   r   r*   r+   r,   s   @r    r   r     sO      KL*0X=(62/2
A/"6 r#   r   c                   &   a  ] tR tRt o R tRtV tR# )NullDrawi!  c                    R # r   ru   r   s   &r    r?   NullDraw.draw"      r#   ru   N)r%   r&   r'   r(   r?   r*   r+   r,   s   @r    r_  r_  !  s      r#   r_  c                   <   a  ] tR tRt o Rt^t^tRR ltR tRt	V t
R# )Spaceri%  z]A spacer just takes up space and doesn't draw anything - it guarantees
a gap between objects.c                H    Wn         V'       d   R V n        W n        W n        R# )g-C6?N)r4   r5   spacebefore)r   r4   r5   isGlues   &&&&r    r!   Spacer.__init__*  s    
DK%r#   c                n    V P                   P                  : R V P                  : RV P                  : R2# )(, r   )r   r%   r4   r5   r   s   &r    r   Spacer.__repr__1  s!    #~~66tzz4;;OOr#   )r5   rf  r4   NF)r%   r&   r'   r(   r)   r   r   r!   r   r*   r+   r,   s   @r    rd  rd  %  s%     !KLP Pr#   rd  c                   2   a  ] tR tRt o R tR tR tRtV tR# )
UseUpSpacei4  c                    R # r   ru   r   s   &r    r!   UseUpSpace.__init__5  rb  r#   c                <    R V P                   P                  ,          # )z%s())r   r%   r   s   &r    r   UseUpSpace.__repr__8  s    ////r#   c                .    Wn         W n        WR ,
          3# ):0yE>re   rf   s   &&&r    r]   UseUpSpace.wrap;  s    
!t+,,r#   )r5   r4   N)	r%   r&   r'   r(   r!   r   r]   r*   r+   r,   s   @r    ro  ro  4  s     0- -r#   ro  c                   6   a  ] tR tRt o ^t RR ltR tRtV tR# )	PageBreaki@  Nc                    Wn         R # r   nextTemplate)r   r{  s   &&r    r!   PageBreak.__init__D  s    (r#   c                    V P                   P                  : R V P                  '       d   \        V P                  4      MR: R2# )rj  r   r   )r   r%   r{  r   r   s   &r    r   PageBreak.__repr__G  s3    >>22dN_N_N_48I8I3Jeg3ghhr#   rz  r   )	r%   r&   r'   r(   
locChangerr!   r   r*   r+   r,   s   @r    rx  rx  @  s!     JD)i ir#   rx  c                       ] tR tRtRtR# )SlowPageBreakiJ  ru   Nr%   r&   r'   r(   r*   ru   r#   r    r  r  J      r#   r  c                       ] tR tRtRtR# )PageBreakIfNotEmptyiM  ru   Nr  ru   r#   r    r  r  M  r  r#   r  c                   B   a  ] tR tRt o ^t R tR tR tRR ltRt	V t
R# )	CondPageBreakiP  c                    Wn         R # r   r5   )r   r5   s   &&r    r!   CondPageBreak.__init__S  s    r#   c                $    R V P                   : R2# )zCondPageBreak(r   r  r   s   &r    r   CondPageBreak.__repr__V  s    %)[[22r#   c                    W P                   8  d4   V P                  R 4      pV'       g   W3# ^ RIHp VP	                  V4       R# )r   
FrameBreakr1   r1   )r5   r   reportlab.platypus.doctemplater  add_generated_content)r   rg   rh   r   r  s   &&&  r    r]   CondPageBreak.wrapY  s=    {{"%%g.AZ44A##J/r#   Nc                b    \        V 4      P                  R RV P                  4       ,          4      # )r   z
,frame=%s))r   replacer   r   r   s   &&r    r   CondPageBreak.identitya  s%    Dz!!#l4??3D&DEEr#   r  r   )r%   r&   r'   r(   r  r!   r   r]   r   r*   r+   r,   s   @r    r  r  P  s(     JP3F Fr#   r  c                B   \        VRR4      p\        VRR4      pVf   \        pV'       d%   ^ RIHp	Hp
 Tp\        V4      ;qn        RVn        V= ^ p^ p^ p^pV R,          p V '       Ed}   V P                  ^ 4      p\        VR4      '       d?   ^ RIHp
 \        VV
4      '       d%   VVP                  VP                  ,           ,          pKj  VP                  W!R4      w  ppVe   VP                  VV34       V'       d	   X	! W4       V\        8:  d   V\        8:  d   K  \!        Y'       d   \#        VV4      MT4      pVV,          pV'       gK   VP%                  4       pV'       d)   \        VR
R	4      '       d   Tp\!        VV,
          ^ 4      pVV,          pMVe   VP%                  4       Vn        ^ pVP)                  4       p\        VR
R	4      '       d   TpTpW,          pEK  Ve   Wn        WV,
          3V'       d	   XVn        # #   T'       d	   XTn        i i ; i);return max width, required height for a list of flowables Fr   Nr   )_addGeneratedContentIndenterNNNframeActionr  F_SPACETRANSFER)rl   r   r  r  r  r   r   _generated_contentpoprH   rE  leftrightrb   r   r   r   r6  r   _spaceBeforer   _spaceAfter)Frg   r>   
mergeSpaceobjdims	fakeWidthdoctcframer  r  
doct_frameWr   pSatTopr   r`   ra   ss   &&&&&&&             r    _listWrapOnr  d  s   4t,DT'$'F'	Q
&z22$(!%'$aDaaAq''Ca))!&&.0J((495CAaaU!3$Q.5q%xA9c!J'!<AFA$$&q!1%88AbDAQ?q7G7G7IC$4!Aq)%00BGA?bOB$w#DJ 6#DJ s'   H ,BH AH H )BH Hc                    \        V \        \        34      '       g   V RJ;'       d    V .;'       g    . p ^ RIHp V  Uu. uF  p\        W!4      '       g   K  VNK  	  up'       d   Q R4       hV # u upi )z.if it isn't a list or tuple, wrap it in a listN)LCActionFlowablez)LCActionFlowables not allowed in sublists)rE  listtupler  r  )Vr  rK   s   &  r    _flowableSublistr    se    ae%%1D=+@+@aS+F+FBq??1a
1 >1??k@kk?H @s    A0A0c                   4   a  ] tR tRt o RR ltRR ltRtV tR# )_ContainerSpacei  Nc                    Vf   V P                   MT F'  p\        VR4      '       d   K  VP                  4       u # 	  ^ # Nr  )_contentrH   r   r   contentcs   && r    r   _ContainerSpace.getSpaceBefore  s;    #*?$--?A1]++'')) @ r#   c                    \        Vf   V P                  MT4       F'  p\        VR4      '       d   K  VP                  4       u # 	  ^ # r  )reversedr  rH   r   r  s   && r    r   _ContainerSpace.getSpaceAfter  s;    7?$--HA1]++(( I r#   ru   r   )r%   r&   r'   r(   r   r   r*   r+   r,   s   @r    r  r    s      r#   r  c                   J   a  ] tR tRt o RtR
R ltR tR tR tR
R lt	R	t
V tR# )KeepTogetheri  FNc                    \        \        R 4      '       g#   ^ RIHp ^ RIHp V\        n        V\        n        V'       g   V P                  4       .p\        V4      V n        W n        R# )NullActionFlowable)r  r  N)rH   r  r  r  r  r  r  
_maxHeight)r   	flowables	maxHeightr  r  s   &&&  r    r!   KeepTogether.__init__  sK    |$899IA.@L+&0L#0023I(3#r#   c                    V P                   p\        \        \        V4      4      pR R P	                  V4      ,           pVP                  R R4      pV P                  P                  : RV: RV P                  : R2# )r   z
  rj  z,maxHeight=r   )	r  r  mapr   r   r  r   r%   r  )r   r   Ls   &  r    r   KeepTogether.__repr__  sX    MMT!1IIdF#(,(?(?$//RRr#   c           	     b   . p \        V P                  WP                  VR 7      w  rEXT n        T;'       d    T^ ,          ^,          ;'       g    ^ T n	        Y3T n
        XR3#    \        RT P                  P
                  T P                  P                  \        T 4      3,          4        L; i))r  z%
raised by class %s(%s)@0x%8.8x wrap
i )r  r  r>   r   r   r%   r&   r   _H_H0	_wrapInfo)r   r^   r_   r  r  r   s   &&&   r    r]   KeepTogether.wrap  s    	HdmmByydCCA &&DGAJ++!({	HG4>>KbKbcgcqcqc|c|}  AE  ~F  KG  G  Hs   $A$ $AB.c                   \        V R R4      W38w  d   V P                  W4       V P                  R,          p\        V RR4      ;rEV'       d&   \        VRR4      pVP                  pVP                  pV P
                  V8  ;'       d(    V P                  '       * ;'       g    W P                  8  pV P                  V8  ;'       g    T;'       d    Tp	V'       g	   V	'       d   Rp
V P                  R4      pV'       d(   V'       d    V! 4       pVP                  pVP                  pV'       dQ   V P                  '       d	   V'       g7   T;'       d'    T;'       d    X;'       d    XX8  ;'       d    XX8  '       * p
M,X'       d%   XVP                  8  d   XV P
                  8  d   Rp
TP                  ^ V
'       d   V P                  MV P                  ! 4       4       V# )r  Nr  r   _atTopF_peekNextFrameT)rl   r]   r  r#  r$  r  r  r  r   
splitAtTopinsertr  r  )r   r^   r_   rq   cfr  cAWcAHC0C1fbpanfnfnAWnAHs   &&&            r    rp   KeepTogether.split  sa   4D)B72DIIb4DMM!T(400Bx-E))C**CWWRZGG0FFB4Fhhrk**bllUB(()9:DdViijj4???uGGBGG2GG#s(GGsCxHRYY3<HHQ243J3JJMNr#   c                    R V P                   P                  : R\        \        V 4      4      : V P	                  4       : RRP                  V P                   Uu. uF  q"P                  4       NK  	  up4      : 2pV'       d   V^ V # V# u upi )r   r   z> containing :r   )r   r%   r   r   r   r   r  r   )r   r   r   msgs   &&  r    r   KeepTogether.identity  s    /3~~/F/Fs2d8}UYUdUdUfgkgpgp  IM  IV  IV  rW  IV  DEr|r|r~  IV  rW  hX  Yq= J	 rWs   B)r  r  r  r  r  r   )r%   r&   r'   r(   r  r!   r   r]   rp   r   r*   r+   r,   s   @r    r  r    s)     J$S	2 r#   r  c                       ] tR tRtRtRtRtR# )KeepTogetherSplitAtTopi  ze
Same as KeepTogether, but it will split content immediately if it cannot
fit at the top of a frame.
Tru   N)r%   r&   r'   r(   r)   r  r*   ru   r#   r    r  r    s     Jr#   r  c                   <   a  ] tR tRt o RtR tR tR tR tRt	V t
R# )	Macroi  zThis is not actually drawn (i.e. it has zero height)
but is executed when it would fit in the frame.  Allows direct
access to the canvas through the object 'canvas'c                    Wn         R # r   command)r   r  s   &&r    r!   Macro.__init__  s    r#   c                :    R \        V P                  4      ,          # )z	Macro(%s))r   r  r   s   &r    r   Macro.__repr__  s    T$,,///r#   c                    R# r1   r  ru   rf   s   &&&r    r]   
Macro.wrap  s    r#   c                N    \        V P                  R RV P                  /R7       R # )NrW   )gl)r   r  r>   r   s   &r    r?   
Macro.draw   s    T\\Thtyy-ABr#   r  Nr%   r&   r'   r(   r)   r!   r   r]   r?   r*   r+   r,   s   @r    r  r    s%     80C Cr#   r  c                      R # r   ru   )argskwdss   *,r    _nullCallabler    s    r#   c                   @   a  ] tR tRt o RtR	R ltR tR tR tRt	V t
R# )
CallerMacroi  zV
like Macro, but with callable command(s)
drawCallable(self)
wrapCallable(self,aW,aH)
Nc                Z    T;'       g    \         V n        T;'       g    \         V n        R # r   )r  _drawCallable_wrapCallable)r   drawCallablewrapCallables   &&&r    r!   CallerMacro.__init__  s"    )::])::]r#   c                @    R V P                   : RV P                  : R2# )zCallerMacro(,r   r  r  r   s   &r    r   CallerMacro.__repr__  s    '+'9'9$:L:LMMr#   c                *    V P                  WV4       R# r  )r  r   r^   r_   s   &&&r    r]   CallerMacro.wrap  s    42&r#   c                (    V P                  V 4       R # r   )r  r   s   &r    r?   CallerMacro.draw  s    4 r#   r
  NNr  r,   s   @r    r  r    s$     
;N! !r#   r  c                   L   a  ] tR tRt o RtRR ltR tR tR tR t	R t
R	tV tR
# )ParagraphAndImagei  z combine a Paragraph and an Imagec                B    Wn         W n        W0n        W@n        WPn        R # r   )PIxpadypad_side)r   r  r  r  r  sides   &&&&&&r    r!   ParagraphAndImage.__init__  s    		
r#   c                z    \        V P                  P                  4       V P                  P                  4       4      # r   )r   r  r   r  r   s   &r    r    ParagraphAndImage.getSpaceBefore   s)    466((*466+@+@+BCCr#   c                z    \        V P                  P                  4       V P                  P                  4       4      # r   )r   r  r   r  r   s   &r    r   ParagraphAndImage.getSpaceAfter#  s)    466'')$&&*>*>*@AAr#   c                .   V P                   P                  W4      w  r4W0n        W@n        Wn        V P
                  pVP                  pV P                  pV P                  pVP                  p	VP                  p
W,
          VP                  ,
          pW,
          V,
          pWP                  ,
          p^ Vn        \        WH,           V	R,          ,          4      pVP                  V.W.,          ,           V.,           4      Vn        V P                   R8X  d%   W7,           .^V,           ,          ^ .,           V n        \%        VP                  P&                  4      V	,          Vn        \+        WEP(                  4      V n        V P                  V P(                  3# )r1   r   r  )r  r]   wIhIr4   r  rz   r  r  r   r   rightIndentr   r   
breakLinesblParar  _offsetsr   r   r5   r   )r   rg   rh   r!  r"  r  rz   r  r  r   r   later_widthsintermediate_widthsfirst_line_widthnIWs   &&&            r    r]   ParagraphAndImage.wrap&  s3   Z4
FFyyyy--%%
!.1B1BB*1B6.1F1FF27WS[)*<<!1 2S9N5N NP\~ ]^::vWIqu-qc1DMqxx~~&w."XX&

DKK((r#   c                   V P                   V P                  V P                  V P                  3w  r4rVWV,           V8  g   \	        VP
                  4      ^ 8:  d   . # VP                  W4      pV'       g   V# V^ ,          ;q0n         V^  VP                  p\	        V P                   P                  P                  4      VP                  ,          Vn        \        WSP                  4      V n        V .V,           # r   )r  r!  r"  r  r   fragsrp   rz   r%  r   r   r5   r   )	r   rg   rh   r  r!  r"  r  rq   rz   s	   &&&      r    rp   ParagraphAndImage.split>  s    &&$''477DII=r7;#agg,/"9GGJ+(qTFaDtvv}}**+EMM9"XX&vaxr#   c                   V P                   pV P                  R 8X  d   V P                  P                  V^ V P                  V P
                  ,
          V P                  ,
          4       V P                  V P                  n         V P                  P                  V^ ^ 4       V P                  =R# V P                  P                  WP                  V P                  ,
          V P                  ,
          V P                  V P
                  ,
          V P                  ,
          4       V P                  P                  V^ ^ 4       R#   T P                  =i ; i)r  N)r>   r  r  rZ   r5   r"  r  r&  r  r4   r!  r  r@   s   & r    r?   ParagraphAndImage.drawJ  s    yy::vFFMM$qTWW!4TYY!>?"mmDFFO$d1Q'FFOFFMM$zz$''1$));DKK<OPTPYPY<YZFFMM$q# FFOs   E E)
r  r  r&  r  r"  r5   r!  r4   r  r  N)   r1  r  )r%   r&   r'   r(   r)   r!   r   r   r]   rp   r?   r*   r+   r,   s   @r    r  r    s-     *DB)0
$ $r#   r  c                   &   a  ] tR tRt o R tRtV tR# )
FailOnWrapiW  c                    \        R 4      h)z3FailOnWrap flowable wrapped and failing as ordered!rI   rf   s   &&&r    r]   FailOnWrap.wrapX  s    NOOr#   ru   N)r%   r&   r'   r(   r]   r*   r+   r,   s   @r    r3  r3  W  s     P Pr#   r3  c                   ,   a  ] tR tRt o R tR tRtV tR# )
FailOnDrawi[  c                    R# r  ru   rf   s   &&&r    r]   FailOnDraw.wrap\      
r#   c                    \        R 4      h)z2FailOnDraw flowable drawn, and failing as ordered!r5  r   s   &r    r?   FailOnDraw.draw_  s    MNNr#   ru   N)r%   r&   r'   r(   r]   r?   r*   r+   r,   s   @r    r8  r8  [  s     O Or#   r8  c            	       R   a  ] tR tRt o RtR^R]^^RRR3	R ltR	 tR
 tR t	Rt
V tR# )
HRFlowableib  zLike the hr tagz80%roundrD   r3   Nc
                    \         P                  V 4       Wn        W n        W0n        WPn        W`n        W@n        Wpn        Wn	        Wn
        R # r   )r/   r!   r4   	lineWidthlineCapr   r~   colorr7   r8   dash)
r   r4   	thicknessrC  rD  r   r~   r7   r8   rE  s
   &&&&&&&&&&r    r!   HRFlowable.__init__d  s@     	$
"&$
	r#   c                @    R V P                   : RV P                  : R2# )zHRFlowable(width=z	, height=r   re   r   s   &r    r   HRFlowable.__repr__w  s    48JJLLr#   c                    V P                   p\        V\        4      '       dP   VP                  4       pVP	                  R 4      '       d   V\        VRR 4      ,          R,          pM\        V4      p\        W14      pW0n        W0P                  3# )r/  Nr*  r   )	r4   rE  r   r   endswithr7  r6  r#  rB  )r   rg   rh   r`   s   &&& r    r]   HRFlowable.wrapz  sm    JJa!!	Azz#JuQsV}$<T$AAh!..  r#   c                   V P                   pVP                  4        VP                  V P                  4       VP	                  R ^ R^R^/V P
                  P                  4       ,          4       VP                  V P                  4       V P                  '       d   VP                  V P                  4       VP                  ^ ^ V P                  V P                  4       VP                  4        R# )buttr@  squareN)r>   rQ   setLineWidthrB  
setLineCaprC  lowerrS   rD  rE  setDashr   r#  r5   rU   r@   s   & r    r?   HRFlowable.draw  s    yy$..)'!Xq9$,,:L:L:NOPDJJ'999dll499-		!QT[[1r#   )
r#  rD  rE  r7   rC  rB  r~   r   r8   r4   )r%   r&   r'   r(   r)   r   r!   r   r]   r?   r*   r+   r,   s   @r    r?  r?  b  s;     aH&M! r#   r?  c                   &   a  ] tR tRt o R tRtV tR# )_PTOInfoi  c                F    \        V4      V n        \        V4      V n        R # r   )r  trailerheader)r   rX  rY  s   &&&r    r!   _PTOInfo.__init__  s    '0&v.r#   )rY  rX  Nr%   r&   r'   r(   r!   r*   r+   r,   s   @r    rV  rV    s     / /r#   rV  c                 \    \        V R 4      '       d   V P                  4       # \        V 4      # )r   )rH   r   )r  s   &r    	cdeepcopyr]    s%    s:||~}r#   c                   4   a  ] tR tRt o RR ltRR ltRtV tR# )
_Containeri  Nc           	        ^ RI HpHp	 Tp
Tp^ pVf   V P                  pWu,          pVf   V P                  pV P                  W$V,          4      pW0P                  V,          ,          pTp\        V RR4      pV EFj  p\        '       g/   \        W4      '       d   VP                  VP                  4       K>  \        W4      '       dF   W/P                  V,          ,          pWP                  VP                  ,           V,          ,          pK  VP                  WR4      w  ppV\        8  d   \        VRR4      '       g   K  W8w  d>   VP!                  4       p\        VRR4      '       g   V\#        VV,
          ^ 4      ,          pVV,          pVP%                  4       p\        VRR4      '       d   TpTp\        VRR4      pV'       d   VR
,          P&                  '       d   VR
,          pVP                  pVP                  pVP(                  pW^P*                  V,
          V,
          ,          pWVVP,                  ,
          ,          ,           pVV,           V,           p\#        WV,
          4      p\#        ^ VV,
          4      pVP/                  WVVVV4       Wn        VP3                  WW7V,
          R	7       WR
,          Jd   \        VRR4      '       g	   W<,          pV=EKm  	  R# )z"we simulate being added to a frame)ActionFlowabler  Nr   r  	_ZEROSIZEr  F	_frameBGs)rY   r   )r  ra  r  r4   r  rN   r5   rl   r   rE  applyr   r  r  rb   r   r   r   r   activestartr#  _leftPaddingrenderr   rZ   )r   r>   rK   rX   rY   rP  r  r^   ra  r  x0y0r  ytr   r  r`   ra   r  fbgbgfbglfbgrbgmfbwfbxfbhfbys   &&&&&&&&                    r    rZ   _Container.drawOn  sP   K:DJJr
?mmGqU+	[[Xd+A))j.J.J))*!%%VVE\!vvagg~u,,88DI.DAqwwqT::Hu$$&q!1%88QrT!$AFA!Aq)%00B%D1Cs2w~~~Wwwxxhh\\$.t34U%7%7 788!ebj"rTl!CGn		$SS5HHHTAQ$H'#GA6Ft,L,LG r#   c                    . P                   pT;'       g    V P                   F  pV! \        V4      4       K  	  VP                  V n        R # r   )r   r  r]  __self__)r   r  Cr  s   &&  r    copyContent_Container.copyContent  s:    II**T]]*AilO +

r#   r  )r1   r   NNr   )r%   r&   r'   r(   rZ   ry  r*   r+   r,   s   @r    r_  r_    s     1f# #r#   r_  c                   :   a  ] tR tRt o RtRR ltR tR tRtV t	R# )	PTOContaineri  a=  PTOContainer(contentList,trailerList,headerList)

A container for flowables decorated with trailer & header lists.
If the split operation would be called then the trailer and header
lists are injected before and after the split. This allows specialist
"please turn over" and "continued from previous" like behaviours.Nc                   \        W#4      p. ;V n        p\        V4       Fa  p\        V\        4      '       d   VP                  VP                  4       K6  VP                  V4       \        VR 4      '       d   K[  WFn        Kc  	  R# )_ptoinfoN)	rV  r  r  rE  r}  extendr   rH   r  )r   r  rX  rY  r  rx  _s   &&&&   r    r!   PTOContainer.__init__  s`    W$!'*A!L))$q,,1j +r#   c                    \        V P                  WP                  4      w  V n        V n        V P                  V P                  3# r   )r  r  r>   r4   r5   rf   s   &&&r    r]   PTOContainer.wrap  s2    "-dmmJyy"Q
DKzz$++%%r#   c                   ^ RI Hp V^ 8  d   . # V P                  pV P                  p^ ;p;p;p;r\	        V4      p/ p^ ;r\        V4       EF  pWV,          pVP                  pVVP                  4       9  dg   VP                  pVP                  p\        VWP                  4      w  pp\	        V4      '       d   V^ ,          P                  4       pM^ pVVVV3VV&   MVV,          w  ppppVP                  WAR4      w  pp\        W4      '       dP   VP                  VP                  ,           pWP                  ,          pWP                  ,          pVV,          p^ p	^ p
MBV'       d+   \!        VP                  4       V	,
          ^ 4      p
VV
,          pVP#                  4       p	VVV	,           ,          pV\!        VV	4      ,           pVV,           V\$        ,
          8  d    MV^,          pEK  	  VXV	,           ,          pW(,
          X,
          V
,
          R,          pVRV,          8  d   XP'                  WAV4      pM. p\)        V4      \)        V4      ,           R8  d   V! V) V) 4      .pV! W4      .pM. ;ppV'       gy   TpV^8  d<   WW^,
          ,          P+                  4       '       d   V^,          p^ WW,          n        KB  V^8X  d.   V^ ,          P+                  4       '       d   Tp^ V^ ,          n        \/        4       .p\	        V4      ^8  dQ   VRV VR,          ,           V,           X,           V,           p XV,           VR,          ,           WW^,           R ,           p!M6V'       g   . # VRV V,           X,           V,           p XV,           WWR ,           p!T \1        T!XP                   Uu. uF  p\3        V4      NK  	  upVP                   Uu. uF  p\3        V4      NK  	  up4      .,           pV# u upi u upi )	r1   r  r  gwJ?皙?ru  NNr   Nr   )r  r  r>   r  r   r   r  keysrX  rY  r  r   rb   rE  r  r  r   r   r   rr   absr{   ry   ro  r}  r   )"r   rg   rh   r  r>   rx  rK   ir   r  hxnI2WdLeftdRightr  r  THdrtWtHtSBr  ra   dwtHSr_   SSR1IR2Ijr  R1R2s"   &&&                               r    rp   PTOContainer.split  sk   ;q=)yyMMABFqAA

A
"IIhh$Q
II>Bq66A$--/CC2bA!!f"R88DI6DAq!%%VVAGG^''!b 
Q--/215BGA__&2IASR[.Cuk%''FA= B 	
ad mC"G+tK42.BBu:c&k!$&UFF7+,CE)*CNC#AA#!aC&0022Q$%!!t!,,..$%!!\Nr7192Ar"vc!!#A%BSBA#$'BI2As1QBS2B<QYY#?YDGY#?RSRZRZ@[RZQaRZ@[\]] $@@[s   0O8O=)r  r5   r4   r  )
r%   r&   r'   r(   r)   r!   r]   rp   r*   r+   r,   s   @r    r}  r}    s!     I=&O Or#   r}  c                 2   R V ^,          ,          pR V ,          pR V^,          ,          pR V,          pWG,          WV,          ,
          pWx,          p	V) V,          p
V) V,          pWH,          pW,          W,          ,           pW,          W,          ,           pW3# )r   ru   )s0s1h0h1a11a12a21a22detb11b12b21b22rM   r  s   &&&&           r    _hmodelr  :  s     RU(C
R%C
RU(C
R%C
'#'/C
'C$s(C$s(C
'CsvAsvA3Jr#   c                >   Vw  r#\        V4      \        8:  d	   W0,          # RV,          V,          p^ RIHp V ) V,          pWD,          V,
          pV^ 8  d   R# V! V4      pV^ 8  d   V) V,
          pM
V) V,           pWh,          p	\	        RV,          RV	,          4      # )z=solve the model v = a/s**2 + b/s for an s which gives us v==hrF   )sqrtNr   )r  r   mathr  r   )
ra   abrM   r  tr  r   r   r  s2s
   &&        r    _qsolver  J  s    
CA
1vu}s
AaA	
1A	AAs4QA!tR!VR!V	
Br"uber#   c                   X   a  ] tR tRt o . ^RRRRR3R ltR tRR	 ltR
 tRR ltRt	V t
R# )KeepInFramei\  shrinkr   r2   r3   Nc
                (   W`n         Wn        W n        WPn        VR9   g   Q V P	                  4       : RV: 24       hV^ 8  g   Q V P	                  4       : RV: 24       hVf   \
        pW@n        T;'       g    . V n        Wn        Wpn	        Wn
        R# )a  mode describes the action to take when overflowing
error       raise an error in the normal way
continue    ignore ie just draw it and report maxWidth, maxHeight
shrink      shrinkToFit
truncate    fit as much as possible
set fakeWidth to False to make _listWrapOn do the 'right' thing
z invalid mode value z invalid maxHeight value N)erroroverflowr  truncate)namemaxWidthr  moder   r   
mergespacer  r8   r7   r  )
r   r  r  r  r  r  r  r7   r8   r  s
   &&&&&&&&&&r    r!   KeepInFrame.__init__]  s     	 "	??t_c_l_l_nosAtt?!|[QZ[[|,@z$2"r#   c                ^    V P                   V P                  ,
          V P                  ,
          # r   )r  _leftExtraIndent_rightExtraIndentr   s   &r    _getAvailableWidthKeepInFrame._getAvailableWidthr  s"    }}t444t7M7MMMr#   c                   R V P                   P                  : R\        \        V 4      4      : V P	                  4       : \        V RR4      ;'       d    R\        V RR4      ,          ;'       g    R: R\        V RR4      ;'       d&    R\        \        V R^ 4      4      ,          ;'       g    R: R\        V R	R4      ;'       d%    R
\        \        V R	4      4      ,          ;'       g    R: 2
# )r   r   r  r   
 name="%s"z> size=r  z maxWidth=%srK   r  z maxHeight=%s)r   r%   r   r   r   rl   r   r  s   &&r    r   KeepInFrame.identityu  s    .2nn.E.Es2d8}VZVeVeVgVB'SS\74r;R-RYYWYYZ+ccwtT^_`Ga@b1biigii[,ee6'RVWbJcCd1djjhjjl 	lr#   c           
       a aa ^ RI Hp S P                  p\        \	        S P
                  ;'       g    TV4      4      o\        \	        S P                  ;'       g    TV4      4      pS P                  o\        S P                  SS P                  SR7      w  rgVR8X  dI   VS\        ,           8  g   Wu\        ,           8  d&   RV: RV: RS P                  ^4      : 2pV! V4      hVS\        ,           8:  d8   Wu\        ,           8:  d'   V\        ,
          S n        V\        ,
          S n        EMVR	9   d:   \	        SV4      \        ,
          S n        \	        WW4      \        ,
          S n        EMpVVV 3R lp	Tp
Tp^pVS\        ,           8  dY   VS,          pV	! V4      w  rgWu\        ,           8:  d/   V\        ,
          S n        V\        ,
          S n        VS n        Wg3# TpTpTp
Wu,          pV	! V4      w  rgV\        ,
          S n        V\        ,
          S n        VS n        V\	        RV,          V^
,
          4      8  g   Wu\        ,           8  d   TpR
 F  p\!        V^V,
          ,          \#        WW4      4      pV	! V4      w  rgWu\        ,           8:  g   KD  VS\        ,           8:  g   KX  V\        ,
          S n        V\        ,
          S n        VS n         M	  S P                  S P                  3# )r1   )LayoutErrorr  r  zcontent rK   z too large for c                    < \        V 4      p \        SP                  V S,          SP                  SR 7      w  rW,          pW ,          pW3# )r  )r7  r  r  r>   )rK   r  r   r  r  r   s   &  r    funcKeepInFrame.wrap.<locals>.func  s@    !H"4==8DIIQZ[tr#   gffffff?)r  r  )r1   r*  r  皙?g333333?)r  r  r  r7  r6  r  r  r  r  r  r>   r   r   r4   r5   _scaler  r  )r   rg   rh   r  r  r  r  r   identr  W0H0r  r  H1r   r  r  r  s   f&&              @@r    r]   KeepInFrame.wrap{  sB   >yyT]]88jDE#dnn;;KHI	NN	4==$))yQ'Mq%/1u_3D89!DMM"<MNEe$$1o#55DJE'DK,,Xa.DJi*50DK BBB%xZBxo%!"5DJ"#E'DK"$DK3JB8DA5DJE'DKDKT)^IbL11Q%5G 2A	1Q3b0DEA7DAE/)a%.?%&uW
&'g&' 3 zz4;;&&r#   c           	        \        V R R4      pV P                  R8H  pVR8g  ;'       g    TpV'       d   VP                  4        V'       dL   VP                  4       pVP	                  W#V P
                  V P                  4       VP                  V^ R7       M4VP                  W#4       ^ ;r#VP                  RV,          RV,          4       \        P                  WW#WER7       V'       d   VP                  4        R# R# )r  r   r  )stroke)rY   rP  N)rl   r  rQ   	beginPathrT   r4   r5   clipPathrR   rP  r_  rZ   rU   )	r   r>   rK   rX   rY   rP  r  ssps	   &&&&&    r    rZ   KeepInFrame.drawOn  s    Xc*99j(CZ##8NNNN$qTZZ4aq)q#

3u9c%i0$aAt  "2r#   )r  r  r  r7   r5   r  r  r  r  r  r8   r4   r   r   )r%   r&   r'   r(   r!   r  r   r]   rZ   r*   r+   r,   s   @r    r  r  \  s=     4618Z\djrz  GK #*Nl:'x# #r#   r  c            
       Z   a  ] tR tRt o ^tRtRt. ^RRRRRRRR	3
R
 ltR tRR lt	Rt
V tR# )PlacedStoryi  Tswr  r   Nr2   r3   pagec                    \        W4WVWxWR R7	      V n        Wn        W n        Wn        R V n        R V n        Wn        Wn        R # )N)r  r  r  r  r7   r8   r  )	r  kifrK   rX   anchorr`   ra   sborigin)r   rK   rX   r  r  r  r  r  r  r  r  r7   r8   showBoundaryr  s   &&&&&&&&&&&&&&&r    r!   PlacedStory.__init__  sD     xG"VUY[r#   c                   V P                   fy   \        V R4      V P                  n        V P                  P	                  V P                  P
                  V P                  P                  4      w  V n         V n        V P                  =R# )Nr>   r  )r`   rl   r  r>   r]   r  r  ra   )r   _aW_aHs   &&&r    r]   PlacedStory.wrap  s[    66>#D0DHHM!XX]]488+<+<TXX=O=OPNDFDF
r#   c                   V P                   f   V P                  ^ ^ 4       V P                  pVR8X  d   ^ ;rgMbVR8X  d   TpTpMVVR8X  d@   \        V RR 4      pV'       g   V P	                  R4      pVP
                  pVP                  pM\        RV: R24      hV P                  p	WP                  9  d   \        RV	: RV P                   24      hV	R	9   d   WpP                  ,          pM V	R
9   d   WpP                  ^,          ,          pV	R9   d   W`P                   ^,          ,          pMV	R9   d   W`P                   ,          pV P                  V,           p
V P                  V,           pV P                  P                  WV4       V P                  '       d5   VP!                  V P                  WV P                   V P                  4       R # R # )Nr  localr   r   zPlacedStory invalid origin=z" not in "page", "frame" or "local"zPlacedStory invalid anchor=z not in )nwr  ne)r`   r  e)r  r  r  )r  r  se)r`   r]   r  rl   r   x1y1rI   r  _anchorsra   rK   rX   r  rZ   r  drawBoundary)r   r>   lxlyrY   r  rR  rS  r  r  rK   rX   s   &&&&&       r    rZ   PlacedStory.drawOn  sk   66>499Qq>6>KBW_BBW_Xd+A$//8aBB;F9<^_``&;F9HT]]OTUU_$&&LB}$&&1*B]"&&(NB&&&LBFFRKFFRKq!777D%%dgga$&&@7r#   )r  ra   r  r  r  r`   rK   rX   )	r  r  r  r`   r  r  r  r  r  r   )r%   r&   r'   r(   rb  r  r  r!   r]   rZ   r*   r+   r,   s   @r    r  r    sC     IN8H:<QYVS[%)& A  Ar#   r  c                   4   a  ] tR tRt o RR ltRR ltRtV tR# )_FindSplitterMixini  Nc                \   ^ p^ p	^ ;r^p\        V \        4      '       d0   \        V R4      '       d   V P                  4       MV P                  pMV P                  V4      p\        V4       EF  w  r\        VR4      '       d>   ^ RIHp \        VV4      '       d$   W/P                  VP                  ,           ,          pKU  VP                  WR4      w  ppV\        8:  g   V\        8:  d   K  \        VV4      pV'       g6   VP                  4       pV'       d   \        VV
,
          ^ 4      pV	V,          p	MVe   VP                  4       Vn        ^ pW8  g   VV8  d   WVRV WR 3u # V	V,          p	W8  d   W9V,
          ,
          pV'       d   ^ RIHp \        VV\"        34      '       df   VP$                  P&                  pV\)        V\+        V4      ,          4      ,          \        ,           pVV8  d
   VV,          pVVV,
          ,          pTp \-        V4      P/                  WV4      pT'       g   YTRT YR 3u # YTRT TR,          ,           TR,          Y^,           R ,           3u # VP1                  4       p
W,          p	EK"  	  Ve   Wn        WV
,
          V. 3#    Rp L|; i)	r  
_flowablesr  r  r  N	Paragraphr  r   )rE  ListFlowablerH   _getContent_list_content	enumerater  r  r  r  rb   r   r   r   r  reportlab.platypus.paragraphr  r   rz   r   r   r7  r]  rr   r   r  )r   r>   rg   rh   r  r  r  paraFixr  r   r  sBr  r  r  r   r  r`   ra   r  r_   r  r   nHrq   s   &&&&&&&&                 r    
_findSplit_FindSplitterMixin._findSplit  sL   d<((&-d<&@&@  "dFXFXA  )AQ<CAq''Ca))&&.0J((495CAa%x1e8XAaA$$&3qtA;qQ?q7G7G7IC$4~:q!uQrU22FA} A#&F!!Y|$<=="#''//$SE'N):%;;EAb5"-"#r"u,!!,,TR@A 1Ra52662AquQrU1qST7]BB"BGAM  P ?bOB$2~As   J%%J+c                    . pVe   TMV P                   pV FK  p\        V\        4      '       d"   VP                  VP	                  4       4       K:  VP                  V4       KM  	  V# r   )r  rE  r  r  r  r   )r   r  r  rx  r   s   &&   r    r  _FindSplitterMixin._getContent9  sR    *GA!L)))	 
 r#   ru   )r   NNTr   )r%   r&   r'   r(   r  r  r*   r+   r,   s   @r    r  r    s     3j r#   r  c                   \   a  ] tR tRt o RtRR ltR tR tR tR t	R	 t
R
 tRR ltRtV tR# )ImageAndFlowablesiC  (combine a list of flowables and an ImageNc	                z    \        V4      V n        Wn        W@n        W0n        W`n        WPn        Wpn        Wn        R # r   )	r  r  _I_irpad_ilpad_ibpad_itpadr  	imageHref)	r   r  r  imageLeftPaddingimageRightPaddingimageTopPaddingimageBottomPadding	imageSider  s	   &&&&&&&&&r    r!   ImageAndFlowables.__init__E  s1    (+'&(%
"r#   c                \    \        V 4      pV P                  4        VP                  4        V# r   )r   _resetry  )r   r  s   & r    r   ImageAndFlowables.deepcopyP  s"    J	r#   c                    \        V R 4      '       d   V P                  pM+\        V R4      '       d   V P                  pMV P                  p\        P                  W4      # )_C1_C0)rH   r  r  r  r_  r   )r   rx  s   & r    r   ImageAndFlowables.getSpaceAfterV  sH    4AT%  AA''//r#   c                p    \        V P                  P                  4       \        P                  V 4      4      # r   )r   r  r   r_  r   s   &r    r    ImageAndFlowables.getSpaceBefore_  s'    477))+J,E,Ed,KLLr#   c                @    R F  p \        W4       K  	  R#     K  ; i)	_wrapArgsN)r$  r  r  )delattrr   s   & r    r  ImageAndFlowables._resetb  s"    *A +s   c                   V P                   pV P                  p\        V R 4      '       dZ   V P                  W38X  d(   \	        VRR4      f   V P
                  V P                  3# V P                  4        VP                  4        W3V n        VP                  W4       VP                  W4      w  rVWPn        W`n        V P                  pV P                  pV P                  p	V P                   p
W,
          V,
          V,
          ;V n        pW,           V	,           pV\$        8  d"   V P'                  W;V4      w  rV n        V n        MTp^ pW\$        ,           8  d   . V n        V P,                  V n        \/        W4      ;qn        Wn        V P*                  '       g   Wn        M'\3        V P*                  W4      w  ppVV,           V n        V P
                  V P                  3# )r$  r<  N)r>   r  rH   r$  rl   r4   r5   r  rA  r]   r=  _wI_hIr  r  r  r  _iWr   r  r  r  r  r   r  r  )r   rg   rh   r>   r  r!  r"  ilpadirpadibpaditpadiWr_   r  r  W1r  s   &&&              r    r]   ImageAndFlowables.wrapi  sz   yyGG4$$~~
77GAnUY<Z<bzz$++--KKM#0	z&8"*R/%772Z%e8%)__TR%@"A$(ABX:DH}}DHB
"X
xxxK9EBrR%DKzz4;;&&r#   c                   \        V R 4      '       dN   V P                  pV P                  W38w  g   \        VRR4      e!   V P	                  4        VP                  4        V P                  W4      w  rEV P                  V8  d   . # V P                  pV'       dW   V^ ,          P                  WV P                  ,
          4      pV'       g   . pM$V^ ,          .pVR,          VR,          ,           pM. p\        V P                  V P                  V,           V P                  V P                  V P                  V P                  V P                   V P"                  R7      .V,           # )r$  r<  Nr   )r  r  r  r  r  r  )rH   r  r$  rl   r  rA  r]   r  r  rp   r  r  r  r  r  r  r  r  )	r   rg   rh   r  r  r   r  rq   r  s	   &&&      r    rp   ImageAndFlowables.split  s   4$$A~~
7771^TX;Y;e!!#IIj-88KXX1J488';<AtfrU2b6\C!GGHHSL%)[[&*kk$(KK'+{{"jjDNND   	r#   c           	        V P                   R 8X  d7   W P                  ,           pWPP                  ,           V P                  ,           pM6W P                  ,           V P                  ,
          V P                  ,
          pTpV P
                  P                  WW0P                  ,           V P                  ,
          V P                  ,
          4       V P                  '       du   VP                  V P                  WSV P                  ,           V P                  ,
          V P                  ,
          WPP                  ,           W0P                  ,           3^R7       V P                  '       d.   \        P                  WWcV P                  V P                  R7       V P                  '       dE   V P                   w  rx\        P                  WW#V P"                  ,
          V P                  VR7       R# R# )r  )relative)r  r^   N)r  r  r  r(  r4   r  rZ   r5   r  r)  r  linkURLr  r_  r*  r  r$  r  )	r   r>   rK   rX   rY   IxFxr^   r_   s	   &&&&&    r    rZ   ImageAndFlowables.drawOn  s2   ::v[[B[[488+BZZ(4BBtq}T[[8AB>>>LL"mDKK.G.PRTW_W_R_abcncnan)oz{L|888d"dhhO888^^FBd!txxZRP r#   )r  r  r  r  r  r)  r*  r  r  r  r  r  r(  r$  r5   r  r4   )r1   r1  r1   r1  r  Nr   )r%   r&   r'   r(   r)   r!   r   r   r   r  r]   rp   rZ   r*   r+   r,   s   @r    r  r  C  s9     2	#0M"'H8Q Qr#   r  c                   B   a  ] tR tRt o ^tRtRR ltR tR	R ltRt	V t
R# )
_AbsRecti  TNc	                f    Wn         W n        W0n        W@n        W`n        Wpn        WPn        Wn        R # r   )_x_yr#  r$  _strokeColor
_fillColor_strokeWidth_strokeDashArray)	r   rK   rX   r4   r5   strokeWidthstrokeColor	fillColorstrokeDashArrays	   &&&&&&&&&r    r!   _AbsRect.__init__  s-    '#' /r#   c                    R# r  ru   rf   s   &&&r    r]   _AbsRect.wrap  r;  r#   c           	        V P                   \        8  EdX   V P                  \        8  Ed@   V P                  ;'       d&    V P                  R J;'       d    V P                  ^ 8  pV'       g   V P
                  '       d   VP                  4        V'       d7   VP                  V P                  4       VP                  V P                  4       V P
                  '       d   VP                  V P
                  4       TP                  V P                  V P                  V P                   V P                  V'       d   ^M^ V P
                  '       d   ^M^ R7       VP                  4        R # R # R # R # N)r  fill)r#  r   r$  r?  rA  r@  rQ   rS   rP  r   rT   r=  r>  rU   )r   r>   rK   rX   rY   sts   &&&&& r    rZ   _AbsRect.drawOn  s    ;;ue!3""]]t'8'8'D]]IZIZ\]I]BT___ ''(9(9:%%d&7&78???%%doo6		$''$''$++dllr!WXdhdsdsds_`yz	{!!# % "4r#   )r@  r$  r?  rB  rA  r#  r=  r>  )r1   NNNr   r%   r&   r'   r(   rb  r  r!   r]   rZ   r*   r+   r,   s   @r    r;  r;    s#     IN0$ $r#   r;  c                   :   a  ] tR tRt o ^tRtR tR tR tRt	V t
R# )	_ExtendBGi  Tc                *    Wn         W n        W0n        R # r   )r>  r$  _bg)r   rX   r5   rm  r   s   &&&&&r    r!   _ExtendBG.__init__  s    r#   c                    R# r  ru   rf   s   &&&r    r]   _ExtendBG.wrap  r;  r#   c                2   V P                   pV P                  pV P                  pVP                  pVP                  V,
          VP
                  ,
          pVP                  V,
          pV P                  pVP                  4       p	VP                  WWsWd4       R # r   )
rS  r>  r$  r  r#  r  _x1r>   getPageNumberrh  )
r   r   rm  rt  rs  rn  rq  rr  r>   pns
   &&        r    r  _ExtendBG.frameAction  sr    XXggllwwllT!BHH,ii$yy!
		$SS-r#   )rS  r$  r>  N)r%   r&   r'   r(   rb  r  r!   r]   r  r*   r+   r,   s   @r    rQ  rQ    s#     IN
	. 	.r#   rQ  c                   B   a  ] tR tRt o ^tRtRR ltR tR	R ltRt	V t
R# )
_AbsLinei  TNc                Z    Wn         W n        W0n        W@n        W`n        WPn        Wpn        R # r   )r=  r>  rX  _y1r?  rA  rB  )r   rK   rX   r  r  rC  rD  rF  s   &&&&&&&&r    r!   _AbsLine.__init__  s(    '' /r#   c                    R# r  ru   rf   s   &&&r    r]   _AbsLine.wrap  r;  r#   c                   V P                   '       d   V P                  e   V P                  ^ 8  d   VP                  4        VP                  V P                   4       VP	                  V P                  4       VP                  V P                  V P                  V P                  V P                  4       VP                  4        R # R # R # R # r   )r?  rA  rQ   rS   rP  r   r=  r>  rX  r_  rU   r   r>   rK   rX   rY   s   &&&&&r    rZ   _AbsLine.drawOn  s    !2!2!>4CTCTVWCWNN 1 12d//0IIdggdggdhhtxx8 DX!>r#   )r?  rB  rA  r=  rX  r>  r_  )r1   NNr   rO  r,   s   @r    r]  r]    s#     IN0   r#   r]  c                   P   a  ] tR tRt o RtRR ltRR ltR tR tR t	R	 t
R
tV tR# )BalancedColumnsi  r  Nc                   T;'       g    R \        V 4      ,          V n        V^8  d"   \        RV: RV P                  4       : 24      h\	        V4      V n        W n        WPn        Wpn        Wn	        Wn
        Wn        Wn        W@n        V\        ,
          V n        W`n        Wn        Wn        Wn        VV n        VV n        VV n        VV n        R# )zBalancedColumns-%dznCols should be at least 2 not z in N)r   r  rI   
identitityr  r  _nColsr~   rg  _innerPadding_rightPadding_topPadding_bottomPaddingr   r   _neededr  endSlack_boxStrokeColor_boxStrokeWidth_boxFillColor
_boxMargin_vLinesStrokeColor_vLinesStrokeWidth)r   r  nColsneededr   r~   r  leftPaddinginnerPaddingrightPadding
topPaddingbottomPaddingr  rp  boxStrokeColorboxStrokeWidthboxFillColor	boxMarginvLinesStrokeColorvLinesStrokeWidths   &&&&&&&&&&&&&&&&&&&&r    r!   BalancedColumns.__init__  s     ;;02d8;	!8%PTP_P_Pabcc(+$'))%+&~( --)#"3"3r#   c                
   R V P                   P                  : RV P                  : R\        \	        V 4      4      : V P                  4       : \        V RR4      ;'       d    R\        V RR4      ,          ;'       g    R: R2	# )r   z nCols=r   r  r   r  r   )r   r%   rj  r   r   r   rl   r  s   &&r    r   BalancedColumns.identity'  sh    ,0NN,C,CT[[RUVXY]V^R_aeapaparVB'SS\74r;R-RYYWYY 	r#   c                    V P                   # r   )r~   r   s   &r    r   BalancedColumns.getSpaceAfter,  s    r#   c                    V P                   # r   )r   r   s   &r    r   BalancedColumns.getSpaceBefore/  s    r#   c                d  a aCaDaEaFaGaHaI . pS P                   oG^ RIHpHpHp ^ RIHp ^ RIHp S P                  f   SGP                  MS P                  p	S P                  f   SGP                  MS P                  p
S P                  f   SGP                  MS P                  pS P                  f   SGP                  MS P                  pSGP                  pSGP                  pS P                  f   \        W4      MS P                  pVR,          pS P                   oES P"                  oHWSH^,
          ,          ,
          V	,
          V
,
          \%        SH4      ,          oFTpW+V,           ,          pS P'                  SESFSHV,          RR7      w  ppppV'       gf   \)        S P+                  4       : RV: R	V: R
SF: RSHV,          : RS P,                   Uu. uF  pVP.                  P0                  NK  	  up: 24      h/ oDR1VDVEVFVHV 3R lloI^ pV'       d   TpEM%^ RIpVDVI3R lp^VP5                  ^4      ^,           ^,          3VD3R llp\7        \9        V\%        SH4      ,          S P:                  R,          ,           4      V4      pSI! V4       SDV,          ^,          '       g.   V! VVV4      pV'       d   Vw  ppppTpRpMkTpS P<                  pM\V\%        SH4      ,          pSI! V4       SDV,          ^,          '       g-   V! VVV4      pV'       d   Vw  ppppTpRpMTpS P<                  pV'       d   Q R4       hSI! VV4      w  ppppSDP?                  4        V^ ,          . 8X  d+   V^,          . 8X  d   V'       d   VV^,          .V^ ,          ppSGP@                  p SGPB                  p!SGPD                  p"V!V,           V,           V,           p#VV,           V,           p$V#V$,
          p%V\%        SH4      ,          p&V'       g	   V'       d   V! V) V) 4      p'V! W4      p(MR;p'p(S PF                  e   S PF                  MSGPF                  p)V V,           SGP                  ,           p*\I        SH4       U+u. uFf  p+T! V*V+V&,          ,           T%T&T$V+'       g   T	MTTV+SH^,
          8X  d   T
MTVRS PJ                  V+3,          V)SGPL                  SGPN                  R7      NKh  	  p,p+S PQ                  R4      oCSCf   V! RS P+                  4       ,          4      h\S        SGRR4      p-V-'       d
   V-R2,          MR;p.p/ ! VCVG3R lRV4      p0V/'       d    \U        V%V$V/SG4      p.VPW                  V.4       SCPX                  p1VPW                  V0! . V,V,^ ,          4      4       V''       d   VPW                  V'4       S PZ                  ;'       d,    S P\                  ;'       d    S P\                  ^ 8  ;'       g    S P^                  p2S P`                  ;'       d$    S Pb                  ;'       d    S Pb                  ^ 8  p3V2'       g
   V3'       Ed"   S Pd                  p4V4'       g   R3p4\g        V44      ^8X  d   V4^ ,          ;p5;p6;p7p8M\g        V44      ^8X  d   V4^ ,          ;p5p8V4^,          ;p6p7M~\g        V44      ^8X  d   V4^ ,          p5V4^,          ;p6p7V4^,          p8MP\g        V44      ^8X  d&   V4^ ,          p5V4^,          p7V4^,          p8V4^,          p6M\)        R\i        V44      ,          4      hV*V6,
          p9V,R2,          P@                  V,R2,          PD                  ,           V7,           p:V%V8,
          p;V$V5,           V8,           p<V;V<,           p=V2'       d8   \k        V9V;V:V9,
          V<S P^                  S PZ                  S P\                  R7      p>V3'       d   . p?\I        ^SH4       F  p+RV,V+,          P@                  V,V+^,
          ,          P@                  ,           V,V+^,
          ,          PD                  ,           ,          p@V?PW                  \m        V@V;V@V=S Pb                  S P`                  R7      4       K  	  MT#p=T%p;V2'       d   VPW                  X>4       V3'       d   VPo                  X?4       S Pq                  4       pA\I        SH4       Fo  p+VV+,          pBVB'       d;   \s        VVXBRR7      pB\        XAVBPq                  4       4      pAVPW                  VB4       V+SH^,
          8w  g   K^  VPW                  V4       Kq  	  VPW                  V0! V-V1SG4      4       V.'       dE   V'       d   ^ pA\7        V%V;4      XA,
          V.n:        \        V#V=4      V.Pt                  ,
          V.n;        V('       d   VPW                  V(4       V'       Ed   VPW                  \y        V3/ RSHbRS Pz                  bR S P|                  bR!S P:                  bR"S PF                  bR#S P                  bR$S P                  bR%S P                  bR&S P                  bR'S P                  bR(S PJ                  R),           bR*S P<                  bR+S PZ                  bR,S P\                  bR-S P^                  bR.S Pd                  bR/S P`                  bR0S Pb                  b 4       V$V3# u upi u up+i )4r1   )r  ra  r  Framer  NrF   F)r  z cannot make initial split aW=z aH=z ie cw=z ah=z	
content=c           	        < V S9  d   . p^ p^ pRpV'       d
   S^,
          MRp\        S4       F  pSP                  SSWRR7      w  rr\        W84      p\        WI4      pVP                  V
4       Wv8X  dT   SP                  SS^V ,          VRR7      w  rrV^V,           V ,          8:  d   VP                  V4       V R,
          p. p MTpK  	  V R\	        V. 8g  4      ,          ,           V. 8H  W4W%33SV &   SV ,          ^,          # )r1   NF)r  r  gư>i r   )r   r  r   r   r   )ahrp  r  r`   ra   cnicheckr  wihic0c1wchccc0cc1_fresr>   cwrw  r   s   &&              r    	splitFunc5BalancedColumns._generated_content.<locals>.splitFuncM  s   $,q"uA%)__T"RSX_%YNBBA	AA	AHHRLy+/??41R4PR[`?+a((
B.HHRL "4A!#B!B & vc"b&k11"b&!aCb	9Q<r#   c                 4   < S! V 4       SV ,          ^ ,          # r   ru   )r  r  r  s   &r    r  0BalancedColumns._generated_content.<locals>.funck  s    "Ry|#r#   c                   < W"V,
          V,          ,
          pWV,
          V,          ,           p\        W,
          4      V8  dG   V ! V4      V ! V4      8  d   TpMTpW"V,
          V,          ,
          pWV,
          V,          ,           pK\  SP                  4        UUU	u. uF  w  rxq'       g   K  WxV	3NK  	  p
ppp	V
'       d!   V
P                  4        V
^ ,          ^,          # R# u up	ppi r!  )r  valuessort)r   rM   r  tolgrr  rT  rK   tfvr  r  s   &&&&&      r    gss/BalancedColumns._generated_content.<locals>.gsso  s    Q"$Q"$!%j3&tad{ UbL(AUbL(A,1LLNAN&!qbXa1XNAFFHQ47N	 Bs   C%/C%g?zunexpected non-empty C2z%s-%d)ry  r}  r{  r|  r   r  r   _debugpageTemplatez&%s used in non-doctemplate environmentrc  c                   J   <a  ] tR tRt o Rt. . R3R lt Z3V3R lltRtV tR# )3BalancedColumns._generated_content.<locals>.TActioni  z?a special Action flowable that sets stuff on the doc template TNc                T    \         P                  V 4       Wn        W n        W0n        R # r   )r/   r!   bgsr  r   )r   r  r  r   s   &&&&r    r!   <BalancedColumns._generated_content.<locals>.TAction.__init__  s    !!$'r#   c                   < V P                   Vn        V P                  Sn        VP	                  V P
                  P                  4       V P                  Sn        R # r   )r  framesr  rc  handle_currentFramer   r   )r   docr  r   s   &&&r    rd  9BalancedColumns._generated_content.<locals>.TAction.apply  s:    66"&((''		2"&((r#   )r  r  r   )	r%   r&   r'   r(   r)   r!   rd  r*   r+   )r-   r  r   s   @r    TActionr    s#     Q#%T  "# + +r#   r  zInvalid value %s for boxMargin)rE  rD  rC  )rC  rD  r  )r  rw  rx  r   r~   r  ry  rz  r{  r|  r}  r  z-1rp  r~  r  r  r  r  r  r   r   )r1   r1   r1   r1   )?r   r  r  ra  r  reportlab.platypus.framesr  r  rg  rl  rm  rn  r  r  rk  r   r>   rj  r7  r  rI   r   r  r   r%   r  r  r6  r   r~   rp  clearrX  r_  r#  r  r   r  _oASpacer  r   rl   rQ  r   r  rq  rr  rs  ru  rv  rt  r   r   r;  r]  r  r   r  r>  r$  rg  ro  r   )Jr   r^   r_   Gr  ra  r  r  r  lpadrpadtpadbpadleftExtraIndentrightExtraIndentgaphgapaH0r  r  r  C2r   rp  r   r  r  r  r  r0  rx  r  r  r  fwftopfhy2rR  	indenter0	indenter1r  obxr  r  BGsxbgrm  r  	oldFramesdoBoxdoVLinesobmobmtobmlobmrobmbobx1obx2oby2obhoby1boxvLinesvlxsaCir  r  r>   r  r   rw  r  sJ   f&&                                                                @@@@@@@r    r  "BalancedColumns._generated_content2  s,	   XX3=%)%6%6%>u!!DDUDU&*&8&8&@u""dFXFX$($4$4$<u  $BRBR'+':':'Bu##H[H[00 22 $ 2 2 :c$n@R@R3wyya= 4'$.e<
Tkood2eBhuoE"S2br7;}}E}!--}E 
 	  	 . A $ "#		!q(8A'= & C5<(;;<R@AaL8A;;QrN%&NAr3A$HA#}}He_"Ry||D2A)*2sB#(#'==4446!!X.B2Q48!bR!IqtrAYYYY\\$wt|B$YBY%,. /!13C2CDI BI$((I	*.*;*;*GT&&UM_M_ !3!33 /4El< /; 3qt8Br"()Dt4%&aZTTdTYYqM))%*^^||% /; 	
 < 


/9FXYYeK-!3r7t+b	+ 	+n 	+  Br"U+CHHSMHH		Aad#$ahhy)%%ZZ$*>*>ZZ4CWCWYZCZqq_c_q_q**eet/F/Fee4KbKbdeKeHH//Ci3x{,/F22t2dTS1!!f$t!!f$tS11v!!f$t1vS11v1v1v1v !ADI!MNN:DR599QrU\\)D0Dd7DT'$,C8DtD$t)S"&"4"4$($8$8$($8$8
 qAqtxx!AaC&**4QqsV]]BCCMM(3tCI`I`mq  nE  nE  #F  G ( DD!((3-QXXf%!uA1B Brx8B,,./%'z$  	
Yu-.2D\B&CFd4.3661CKahhy)2HH % <<595E5ERVRaRa!%!2!2 !% 1 1 "&!3!3	
 "&!3!3  $// #'"5"5 4 37-- $(#7#7 $(#7#7 "&!3!3 #oo '+&=&= '+&=&=$ 1us FJ<s   j(( j-	Aj-c                \   \        V R R4      pW P                  V P                  ,           \        ,
          8  d   \	        4       V .p^ pM@V'       g   ^ RIHp V! ^ ^ VR^ ^ ^ ^ R7      V n        V P                  W4      w  rTV'       g   V =V'       d   VP                  ! V!   ^ \        WR4      3# )r   Nr  i)ry  r{  r|  r}  )rl   r   ro  r   rx  r  r  r   r  r  r6  )r   r^   r_   
self_framer  r  r  s   &&&    r    r]   BalancedColumns.wrap%  s    T(40
t||+E11d#AB;#Aa:!RS/0qB++B2EBKz77;R|r#   )rn  rs  rt  rq  rr  r  r   rk  rg  rj  ro  rl  rm  ru  rv  rp  r  r  r~   r   )   r+  r1   r1   NNNNNNr   r  Nr1   NNNNr   )r%   r&   r'   r(   r)   r!   r   r   r   r  r]   r*   r+   r,   s   @r    rg  rg    s.     24@
 qf r#   rg  c                   D   a  ] tR tRt o Rt^tRtR tR tR t	R t
RtV tR	# )
AnchorFlowablei9  zcreate a bookmark in the pdfTc                @    \         P                  V ^ ^ 4       Wn        R# r!  )rd  r!   _name)r   r  s   &&r    r!   AnchorFlowable.__init__=  s    Qq!
r#   c                R    V P                   P                  : R V P                  : R2# )rj  r   )r   r%   r  r   s   &r    r   AnchorFlowable.__repr__A  s    >>224::>>r#   c                    R# r  ru   r  s   &&&r    r]   AnchorFlowable.wrapD  r;  r#   c                T    V P                   P                  V P                  ^ ^ 4       R# r!  )r>   bookmarkHorizontalr  r   s   &r    r?   AnchorFlowable.drawG  s    		$$TZZ!4r#   )r  N)r%   r&   r'   r(   r)   rb  r  r!   r   r]   r?   r*   r+   r,   s   @r    r  r  9  s+     &IN?5 5r#   r  c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )_FBGBagiJ  c                .   \        V4      p\        V P                  \        4      ;'       d    W0P                  9   ;'       g    W0P                  8H  ;'       d>    \        V4      V P                  8H  ;'       d    V P
                  VP                  4       8H  # r   )r   rE  fidr  cidrZ  rY  )r   r   r>   r  s   &&& r    matches_FBGBag.matchesK  sx    iDHHT*>>shhOO#xx- M M4$((*M M/3ww8J8J8L/L	Nr#   c                    VP                   V P                  ,          P                  4       V n        \	        \
        V P                  R ,          4      # )r      N)_codecodePosrp   _instr  r7  r@   s   &&r    getDims_FBGBag.getDimsP  s4    ZZ-335
5C))r#   c                    \        W#WE4      .V P                  R &   RP                  V P                  4      VP                  V P                  &   R# )r   N)r   r  r   r  r  )r   r>   rK   rX   r`   ra   s   &&&&&&r    setDims_FBGBag.setDimsT  s7    !!a?+

3#&88DJJ#7

4<< r#   c           	        \        V4      \        8  Ed   \        V4      \        8  Ed   VP                  4       pV P                  \	        V4      8X  db   V P
                  \	        V4      8X  dH   V P                  V8X  d7   V P                  V4      w  rrV P                  WWJW,           V,
          4       R # VP                  4        V P                  pV'       d   VP                  V4       V P                  pVe   V^ 8  d   R MV P                  pV'       dH   VP                  V4       VP                  V4       V P                   pV'       d   VP#                  V4       \	        V4      V n        \	        V4      V n        Wpn        \%        VP&                  4      V n        TP+                  Y4YVV'       d   ^M^ V'       d   ^M^ R7       VP-                  4        R # R # R # rK  )r  r   rY  r  r   r  rZ  r  r  rQ   rE  r   rC  rD  rS   rP  rF  rS  r   r  r  rT   rU   )r   r>   r   rr  rt  rq  rs  rZ  oxoyowohfbgcr  scdas   &&&&&&&         r    rh  _FBGBag.renderX  sO   s8E>c#hun##%BxxE"txxD'9dggrk"ll40bTSBE#I6 ~~%%d+%%Z2a4TT5E5E''+%%b)--BR(e9d8"4::		##ba$QTU	V!!#/ ->r#   )r  r  r  r  rZ  N)
r%   r&   r'   r(   r  r  r  rh  r*   r+   r,   s   @r    r  r  J  s     N
*8$ $r#   r  c                   >   a  ] tR tRt o Rt^tRR ltR tR tRt	V t
R# )	FrameBGir  a  Start or stop coloring the frame background
left & right are distances from the edge of the frame to start stop colouring.
if start in ('frame','frame-permanent') then the background is filled from here to the bottom of the frame and immediately discarded
for the frame case.
Nc                    \         P                  V ^ ^ 4       W@n        V'       d;   ^ RIHp V! V4      V n        V! V4      V n        Wn        WPn        W`n	        Wpn
        R# R# )r1   )_evalMeasurementN)rd  r!   rf  r  r  r  r  rD  rC  rD  rF  )	r   rD  r  r  rf  rC  rD  rF  r  s	   &&&&&&&& r    r!   FrameBG.__init__y  sQ    Qq!
G(.DI)%0DJJ**#2  r#   c                    V P                   P                  : R RP                  RP                  4        Uu. uF  q: R\	        WR4      : 2NK  	  up4      : R2# u upi )rj  rk  zstart color left right=Nr   )r   r%   r   rp   rl   )r   r  s   & r    r   FrameBG.__repr__  sw    >>22499  kC  kI  kI  kK  >L  kKef7SWZ^K_>`  kK  >L  4M  N  	N  >Ls   Ac                   \        V R R4      pVf   R# V P                  '       d   V P                  pV P                  pVf   RMTpVP                  P                  \        V P                  V P                  V P                  V P                  R9   d   V P                  MRV P                  V P                  V P                  ^ ^ RRRR7      4       R# VP                  '       d   VP                  P                  4        R# R# )r   NT)r  r  rE  rf  rD  rC  rF  r  r  rZ  r  re  r   )r   zframe-permanent)rl   rf  rD  rC  rc  r   r  r  r  rD  rF  r  )r   r   r	  r  s   &   r    r?   FrameBG.draw  s    Xd+=&:::!!B!!BzrBOO""TYY&*jj*.**48JJB]4]djjcg,0,<,<,0,<,<040D0D&'&'%'*.'+"# ___OO! r#   )rD  r  r  rf  rD  rF  rC  )Nr1   r1   TNNN)r%   r&   r'   r(   r)   rb  r!   r   r?   r*   r+   r,   s   @r    r  r  r  s&     
 I
3N" "r#   r  c                   @   a  ] tR tRt o Rt^t. ^
^HR3R ltR tRtV t	R# )FrameSplitteri  a0  When encountered this flowable should either switch directly to nextTemplate
if remaining space in the current frame is less than gap+required or it should
temporarily modify the current template to have the frames from nextTemplate
that are listed in nextFrames and switch to the first of those frames.
Tc                X    Wn         T;'       g    . V n        W0n        W@n        WPn        R # r   )r{  
nextFramesr  requiredadjustHeight)r   r{  r  r  r  r  s   &&&&&&r    r!   FrameSplitter.__init__  s'    ($** (r#   c                   V P                   p^ RIHpHpHp V! V P
                  4      .pW P                  V P                  ,           \        ,
          8  d   VP                  \        4       4       EM(V P                  R4      pVf   V! RV P                  4       ,          4      hV U	u. uF!  qP                  V P
                  8X  g   K  V	NK#  	  p
p	V
'       g)   V! V P                  4       : RV P
                  : R24      hV
^ ,          p
V
P                   Uu. uF!  qP                  V P                  9   g   K  VNK#  	  ppV Uu. uF  qP                  NK  	  ppV P                   Uu. uF  qV9  g   K  VNK  	  ppV'       dW   T! V P                  4       : RV: RV
P                  : RV
: R	V
P                   Uu. uF  qP                  NK  	  up: 2	4      hV P                  R
4      p
WP                   V
P                  3R lpWn        W P                  ,
          p\#        V4       F=  w  pp\%        V4      pV P&                  '       d   Wn        VP+                  4        WV&   K?  	  Wn        VP                  V! V^ ,          P                  4      4       VP,                  ! V!   R# u up	i u upi u upi u upi u upi )r1   )NextPageTemplateCurrentFrameFlowabler  pageTemplatesz(%s called in non-doctemplate environmentz.nextTemplate=z
 not foundz frames=z not found in pageTemplate(z)
z has frames r  c                 .    WBn         W2n        V! W4       R # r   )r  onPage)r>   r  r  r"  r  s   &&&&&r    unwrap"FrameSplitter.wrap.<locals>.unwrap  s    "t r#   r  )r   r  r  r  r  r{  r  r  r   r   rx  r   r   r   r  r  r"  r  r   r  r5   r  r  )r   r^   r_   r   r  r  r  r  	templatesr  r  r   r  Nr#  ra   r  s   &&&              r    r]   FrameSplitter.wrap  sW   ddD--.
/hht}}$U**HHY[! --o>I !"LT]]_"\]]#?)QttT->->'>qq)A?!DMMOTXTeTe"fggdA((>(Qdddoo&=qq(A>QttQA//8/QaZqq/A8!dhdqdqdstuvwvzvz{|  MN  MU  MU  ~V  MU  HI  C  C  MU  ~V  #W  X  X##N3A"#88ahh ! HkA |!q'$$$qh
!	 $
 HHH)!A$''23##Q'
1 @ ?8 ~Vs0   'J+J+J08J0J5(J:5J:=J?)r  r  r  r{  r  N)
r%   r&   r'   r(   r)   rb  r!   r]   r*   r+   r,   s   @r    r  r    s*     
 I02RVZ )$ $r#   r  )_type2formatteru   •u   ●u   ■u   ○u   ◆u   ❖u   ➤u   ❇u   ❏u   ★)

bulletcharcirclerO  discdiamond	diamondwx
rarrowheadsparkle	squarelrs	blackstarc                 "   VR 8X  d   \         P                  W 4      pM\        V,          ! \        V 4      4      pV'       dN   \	        V\
        4      '       d   W#,          pV# \        V4      '       d   V! V4      pV# \        RV,          4      hV# )bulletz!unexpected BulletDrawer format %r)_bulletNamesr3  r(  r   rE  r   callablerI   )valuetypeformatr  s   &&& r    _bulletFormatr9    s    X~U)D!#e*-fX&&
A
 H	 fq	A H @6IJJHr#   c                   4   a  ] tR tRt o RR ltRR ltRtV tR# )BulletDraweri  Nc                ~    Wn         W n        W0n        W@n        WPn        W`n        Wpn        Wn        Wn        Wn	        R # r   )
r6  _bulletAlign_bulletType_bulletColor_bulletFontName_bulletFontSize_bulletOffsetY_bulletDedent
_bulletDirr9  )r   r6  bulletAlign
bulletTypebulletColorbulletFontNamebulletFontSizebulletOffsetYbulletDedent	bulletDirbulletFormats   &&&&&&&&&&&r    r!   BulletDrawer.__init__  s>     
'%'--+)#)r#   c                   V P                   pV'       g   R # VP                  4        VP                  W44       VP                  V P                  ,
          V P
                  ,           pV P                  R8X  d0   VP                  VP                  ,
          V P                  ,           pMVP                  V P                  ,
          pVP                  V P                  V P                  4       VP                  V P                  4       V P                  p\!        W`P"                  V P                   4      pVR8X  d   VP%                  W4V4       MVR8X  d   VP'                  W4V4       MVR	9   d   VP)                  W4V4       MtVP+                  R4      '       g   VP+                  R4      '       d5   VR,          P-                  4       ;'       g    RpVP/                  W4Wh4       M\1        RV,          4      hVP3                  4        R # )
Nrtlr  r  numericdecimal:   NN.zInvalid bulletAlign: %r)centercentre)r6  rQ   rR   r5   rA  rB  rD  r4   _rightIndentrC  _leftIndentr   r@  r   r?  r=  r9  r>  
drawStringdrawRightStringr   
startswithr   drawAlignedStringrI   rU   )	r   indenterr>   rK   rX   rY   r6  rE  pcs	   &&&&&&   r    rZ   BulletDrawer.drawOn	  s   

fqOOD0001D1DD??E!!6!669K9KKA$$t'9'99AT))$*>*>?$++,''e$4$4T5G5GHOOA&'!  U+//""1u-##I..+2H2H2S2SR&&(//CB""1u06DEEr#   )
r=  r?  rC  rD  r@  rA  r9  rB  r>  r6  )
0r  1black	Helvetica   r1   r1   ltrNr   )r%   r&   r'   r(   r!   rZ   r*   r+   r,   s   @r    r;  r;    s     *. r#   r;  c                     \        WP                  V P                   4      p\        WP                  V P                  4      # r   )r9  r>  r   r@  rA  )r  r6  s   &&r    _computeBulletWidthrg  &  s/    %aoo>Eu..q/@/@AAr#   c                   |   a  ] tR tRt o RP	                  4       tRR ltR tRR ltR tR t	R t
R	 tRR ltRtV tR
# )
DDIndenteri*  z/_flowable _leftIndent _rightIndent width heightc                F    Wn         W n        W0n        R V n        R V n        R # r   )	_flowablerX  rW  r4   r5   )r   flowabler   r#  s   &&&&r    r!   DDIndenter.__init__,  s!    !%'
r#   c           	         V P                   P                  WP                  ,
          V P                  ,
          V4      pV Uu. uF%  p\	        VV P                  V P                  R 7      NK'  	  up# u upi ))r   r#  )rk  rp   rX  rW  ri  )r   r^   r_   rq   r  s   &&&  r    rp   DDIndenter.split3  sp    NN  $4$4!4T5F5F!FK
 $%	 $%a 1#'#3#3$($5$5 $%	 	 s   +A0c           
         V P                   P                  WV P                  ,           V\        ^ W@P                  ,
          V P                  ,
          4      4       R# r!  )rk  rZ   rX  r   rW  rd  s   &&&&&r    rZ   DDIndenter.drawOn<  s?    dT%5%5#5aAcBRBR>RSWSdSd>d8efr#   c                    V P                   P                  WP                  ,
          V P                  ,
          V4      w  r4W0P                  ,           V P                  ,           V n        W@n        V P                  V3# r   )rk  r]   rX  rW  r4   r5   r   r^   r_   r`   ra   s   &&&  r    r]   DDIndenter.wrap?  s\    nn!!"%5%5"5d6G6G"GL'''(9(99
zz!|r#   c                    WP                   9   d    V P                  V,          # \	        V P
                  V4      #   \         d)    TR9  d   \        T : RT RT P                   24      h LHi ; i)r   z has no attribute z dict=r   r~   )_IndenterAttrsrF  KeyErrorrG  rl   rk  r   s   &&r    rH  DDIndenter.__getattr__E  sx    ###`}}Q'' t~~a((  `88(D83EaSt}}o)^__ 9`s   ; 0A.-A.c                r    WP                   9   d   W P                  V&   R # \        V P                  W4       R # r   )rw  rF  setattrrk  r   rM   r  s   &&&r    __setattr__DDIndenter.__setattr__N  s(    ### MM!DNN1'r#   c                p    WP                   9   d   V P                  V R # \        V P                  V4       R # r   )rw  rF  r%  rk  r   s   &&r    __delattr__DDIndenter.__delattr__T  s(    ###a DNN1%r#   Nc                n    V P                   P                  : R V P                  P                  V4      : 2# )z containing )r   r%   rk  r   r  s   &&r    r   DDIndenter.identityZ  s'    %)^^%<%<T^^=T=TU[=\]]r#   )rk  rX  rW  r5   r4   r  r   r   )r%   r&   r'   r(   rp   rw  r!   rZ   r]   rH  r}  r  r   r*   r+   r,   s   @r    ri  ri  *  sC     FLLNNg)(&^ ^r#   ri  c                   Z   a  ] tR tRt o RP	                  4       tRR ltR tR	R ltRtV t	R# )

LIIndenteri]  zN_flowable _bullet _leftIndent _rightIndent width height spaceBefore spaceAfterNc                ~    Wn         W@n        W n        W0n        R V n        R V n        Ve   WPn        Ve	   W`n        R # R # r   )rk  _bulletrX  rW  r4   r5   r   r~   )r   rl  r   r#  r3  r   r~   s   &&&&&&&r    r!   LIIndenter.__init___  sB    !%'
"*!(O "r#   c                   V P                   pVP                  WP                  ,
          V P                  ,
          V4      p\	        V4      ^8  d   \        VR4      '       d   \	        VP                  P                  4      p\	        V^ ,          P                  P                  4      p\        \        VRR4      RR4      ^8X  d   We^,
          8  g   We^,
          8X  d   . pV'       dZ   V Uu. uFL  p\        TV P                  V P                  Wt^ ,          J ;'       d    V P                  ;'       g    RR7      NKN  	  up# . # u upi )r   r%  rz   N	alignment)r   r#  r3  )rk  rp   rX  rW  r   rH   r%  r   rl   r  r  )r   r^   r_   r   rq   cnlnnlr  s   &&&     r    rp   LIIndenter.splitk  s   NNGGB'''(9(992>q6!8(++ahhnn%Cadkk''(C740TBAE#TUPU,U|  $%
 $%a	 1#'#3#3$($5$5"#t)"<"<"D"D $% 	 	 s   ,1EE2Ec           
        V P                   '       d   V P                   P                  WW#^ 4       V P                  P                  WV P                  ,           V\	        ^ W@P                  ,
          V P
                  ,
          4      4       R# r!  )r  rZ   rk  rX  r   rW  rd  s   &&&&&r    rZ   LIIndenter.drawOn}  s^    <<<LL!a0dT%5%5#5aAcBRBR>RSWSdSd>d8efr#   )r  rk  rX  rW  r5   r~   r   r4   )r1   r1   NNNr   )
r%   r&   r'   r(   rp   rw  r!   rZ   r*   r+   r,   s   @r    r  r  ]  s)     ekkmN
)$g gr#   r  )	ListStylec                   *   a  ] tR tRt o RR ltRtV tR# )ListItemi  Nc           	        \        V\        \        34      '       g   V3pWn        / ;q@n        V'       dD   \        V\
        4      '       g(   \        V P                  P                  : R V: R24      hW n	        \
        P                   F5  pWS9   d   VP                  V4      pMV'       d   \        W%4      pMK1  WdV&   K7  	  R F)  pVP                  V\        W%R4      4      pVf   K%  WdV&   K+  	  R# )z style argument (z) not a ListStyleN)r6  r   r~   )rE  r  r  r  _paramsr  rI   r   r%   _styledefaultsr3  rl   )r   r  rz   r  paramskr  s   &&&,   r    r!   ListItem.__init__  s    " )T%L11"I# ""eI.. T^^MdMdej!kllK##AyHHQKE$1I $ 7A75401A}q	 7r#   )r  r  r  r   r[  r,   s   @r    r  r    s     ' 'r#   r  c                   &   a  ] tR tRt o R tRtV tR# )	_LIParamsi  c                6    Wn         W n        W0n        W@n        R # r   )rl  r  r6  first)r   rl  r  r6  r  s   &&&&&r    r!   _LIParams.__init__  s     

r#   )r  rl  r  r6  Nr[  r,   s   @r    r  r    s      r#   r  c                   j   a  ] tR tRt o RtRR lt]R 4       tR tR t	R t
RR	 ltRR
 ltR tRtV tR# )r  i  1aAiINc                   Wn         V'       dC   \        V\        4      '       g'   \        R V P                  P
                  ,          4      hW0n        \        P                  P                  4        F3  w  rV\        V RV,           VP                  V\        W5V4      4      4       K5  	  R F1  pVP                  V\        W5R4      4      pVf   K%  \        WV4       K3  	  RpVf6   \        V RR4      pVf%   V P                  R8X  d   RpRpMV P                  pRpV P                  R8w  d   V'       d8   V F0  pW`P                  9  g   K  \        RV: R	V P                  : 24      h	  M?V P                   F/  pW`P                  9  g   K  \        R
V P                  ,          4      h	  W n        T;'       g    \        V\        \         34      V n        RV n        RV n        VP)                  RR4      V n        R# )z!%s style argument not a ListStyler  NF_startr3  r)  Tzinvalid start=z or bullettype=zinvalid bullettype=%rcaptionrv  )r  rE  r  rI   r   r%   rz   r  itemsr{  r3  rl   r>  _numberStylesr  r  r  _autor   _dimsr  _caption)r   r  rf  rz   r  r  r  r]  s   &&&&,   r    r!   ListFlowable.__init__  s   $ $eI.. !Dt~~G^G^!^__J%%++-CADQtxx'%!*<=> . .A75401A}q! .
 =D$/E}##X-(ED ,,EDX%A 2 22(PUVZVfVf)ghh  ))A 2 22()@4CSCS)STT * ;;ZtEl;
!
40r#   c                d    V P                   f   V P                  4       V n         V =V P                   # r   )r   r  r  r   s   &r    r  ListFlowable._content  s0    %!%!1!1!3D!!!r#   c                    V P                   V8w  d4   \        V P                  WP                  4      w  V n        V n        Wn         V P                  V P
                  3# r   )r  r  r  r>   r4   r5   r  s   &&&r    r]   ListFlowable.wrap  sB    ::r>&1$--99&M#DJJzz$++%%r#   c                    V P                   # r   r{  r  s   &&&r    rp   ListFlowable.split  s    }}r#   c           
   #    "   V P                    EF  p\        V\        \        34      '       dG   V'       d=   \	        V4       F+  w  r#V^ 8H  ;'       d    \        V\
        4      '       * V3x  K-  	  Kd  Kf  \        V\        4      '       Ed-   VP                  pV'       gK   \	        VP                   4       F/  w  r#\        V\
        4      '       d   \        R4      hV^ 8H  V3x  K1  	  K  VP                  4       pVP                  RR4      pVP                  RR4      pVP                  RR4      p\        VP                   4      ^,
          p\	        VP                   4       FP  w  r#VP                  4       p	V'       g	   Ve   WiR&   W(8X  d	   Ve   WyR&   V'       d   Rp^ \        W9WR^ 8H  4      3x  KR  	  EK  \        V\
        4      '       * V3x  EK  	  R# 5i)r1   z"LIIndenter not allowed in ListItemr6  Nr   r~   )r  rE  r  r  r  r  r  r  rI   r   r  r   r  )
r   r   r  zr  r6  r   r~   r  r  s
   &         r    _flowablesIterListFlowable._flowablesIter	  sx    A!T%L)) )!dCC:a
+C'CQFF !-  Ah'' )!,, 7%a
33",-Q"RRdAg !8
 $[[]F"JJwt4E"(**]4"@K!'L!>JALL)A-A )!,, 7"KKM [%</:m,4J$:.8lODe1uT!::: !8 %Qz22A559 !s   4GGAG C;G<Gc           	     (   V'       dk   VP                  R V P                  4      pVP                  RV P                  4      pVP                  RR4      pVP                  RR4      p\        WWRWgR7      # \        WP                  V P                  V4      # )r   r#  r   Nr~   rv  )r3  rX  rW  r  )r   rl  r3  r  r   r#  r   r~   s   &&&&    r    _makeLIIndenterListFlowable._makeLIIndenter 	  s|    L1A1ABJ **]43D3DEK **]48KL6Jh+Q\ssh'7'78I8I&QQr#   c                   a aa Sf   V 3R lpM\        SRR 4      oVV V3R lp\        VV! R4      V! R4      V! R4      V! R4      V! R4      V! R	4      V! R
4      V! R4      V! R4      R7
      # )Nc                 *   < \        SR V ,           4      # r  r   )rM   r   s   &r    getp&ListFlowable._makeBullet.<locals>.getp,	  s    tCE**r#   rz   c                    < V S9   d
   SV ,          # S'       d   V SP                   9   d   \        SV 4      # \        SR V ,           4      # r  )rF  rl   )rM   r  r   rz   s   &r    r  r  0	  s=    ;vay 0Q%..0a2HtCE**r#   rE  rF  rG  rH  rI  rJ  calcBulletDedentrL  rM  )
r6  rE  rF  rG  rH  rI  rJ  rK  rL  rM  )rl   r;  )r   r6  r  r  rz   s   f&f @r    _makeBulletListFlowable._makeBullet*	  s    >+ F740E+
  $] 3#L1 $] 3#'(8#9#'(8#9"&"7!%&8!9";/!%n!5 	r#   c           	        V P                   pV P                  p\        V\        \        34      '       d   TpV^ ,          pMV.pV^ ,          p\        VR9   4      pV'       d    \        V4      pV P                  pVR8X  Ed   V P                  pV P                  pVR8X  d   VR8X  d   V P                  pEMnVR8X  d   V P                  pEMYTp	^ p
V P                  4        F  w  rV'       d*   \        V
\        W	4      4      p
V'       d   W,          p	K4  K6  \        V\        4      '       g   KN  VP                  pV'       dG   VP                   V8X  d5   \        V
\        WP"                  4      4      p
\        VP"                  4      p	M\        V
\        W	4      4      p
V'       g   K  W,          p	K  	  VR8X  d7   VR8X  d   V P                  V
,
          pMPV P                  V
R,          ,
          pM5VR8X  d   V P                  V
,
          pMV P                  V
R,          ,
          pW`n        . pVP&                  p^ pV P                  4        EF  w  r\        V\(        4      '       d   VP                  p\        V\        \        34      '       d
   V^ ,          pVV9   db   VP*                  '       dN   VP-                  V4      ^,           pW4R VRV ,           Vn        VP                  ^ ,          pV'       d   WLn         MTp/ pV'       g    V^,          p\/        V RR4      pVe   VVR&   V'       d?   V! V P1                  WP3                  V4      VR	7      4       V'       d   W%,          pEK!  EK$  \        V\        4      '       d   VP                  pV'       dE   VP                   V8w  d   \5        R
VP                   : RV: 24      h\        VP"                  4      pM#V P3                  V\/        VRR4      R7      Vn        V'       d4   \        VP6                  P9                  R^ 4      X4      VP6                  R&   V! V4       V'       d   W%,          pEK  EK  \        V\:        4      '       d   VP=                  VP>                  4       V P1                  VP@                  RVR	7      pVPB                  '       d^   VP"                  e    VP"                  pV'       d   \        V4      pV P3                  W,P>                  4      Vn        V'       d	   W%,          pV! V4       EK  V! V P1                  VRVR	7      4       EK  	  \/        V RR4      pVe=   VR,          p\        VP6                  P9                  R^ 4      V4      VP6                  R&   V PD                  '       d   VPG                  ^ V PD                  4       V#    ^p ELV; i)r1   r  r]  re  r  r  rF   Nr   )r3  r  zIncluded LIIndenter bulletType=z != OrderedList bulletType=r  )r  r~   r   )$r>  r  rE  r  r  r   rC  r=  rD  rX  rW  r  r   rg  r  r  rF  r6  _calcBulletDedentr   r  r  indexrl   r  r  rI   rF  r3  r  updater  rl  r  r  r  )r   btr6  r  autovincbdaligndirtvaluemaxWrT  r   r  rq   aSr  fstartfparamsr   r  r~   s   &                     r    r  ListFlowable._getContentB	  s   eT%L))F1IEWFq	"- E
 v:%%E//CEzeVm%%&& ..0CA"4(;D(HI3#Aj11II ||R/'*40CAgg0N'O),QWW#&t,?,L#MD3 1 :g~!--4!--S8F]**T1B**T#X5B!#XX
&&(CA!L))fd5\22#AYFV#www &U 3A 5#)&>&%.#@ ! &GQ%d=>*-8GM*4''1A1A%1HPW'XY3Aj))II||R'(mnmymyz|)}~~LE $ 0 0gaQU>V 0 WAI03AJJNN=QR4ST_0`AJJ}-13Ai((qxx(((4w(O777ww* !E
 $ 0 0xx @AIELE14''W'EF] )` T,t4
!eA'*1::>>,q+I*'UAJJ|$===!((1T]]3Es   $V> >W)
r  r  r  r  r  r   r  r5   rz   r4   r  r   )r%   r&   r'   r(   r  r!   r   r  r]   rp   r  r  r  r  r*   r+   r,   s   @r    r  r    sJ     M91v " "&6>R0o or#   r  c                   R   a  ] tR tRt o RtR tR tR tRR ltR t	R t
R	 tR
tV tR# )	TopPadderi	  zwrap a single flowable so that its first bit will be
padded to fill out the space so that it appears at the
bottom of its framec                "    WP                   R &   R# )_TopPadder__fN)rF  r   s   &&r    r!   TopPadder.__init__	  s    )*o&r#   c                l    V P                   P                  W4      w  r4W$,
          V P                  R &   W43# )_TopPadder__dh)r  r]   rF  rs  s   &&&  r    r]   TopPadder.wrap	  s.    hhmmB"*,$&'s
r#   c                    V P                   P                  W4      p\        V4      ^8  d   \        V^ ,          4      V^ &   V# )r   )r  rp   r   r  )r   r^   r_   rq   s   &&& r    rp   TopPadder.split	  s5    HHNN2!q6!8QqT?AaDr#   c           
         V P                   P                  WV\        ^ V P                  R,
          4      ,
          V4       R# )r1   ru  N)r  rZ   r   r  rV   s   &&&&&r    rZ   TopPadder.drawOn	  s*    3q4#8!8=r#   c                2    \        V P                  W4       R # r   )r{  r  r|  s   &&&r    r}  TopPadder.__setattr__	  s    r#   c                .    \        V P                  V4      # r   )rl   r  r   s   &&r    rH  TopPadder.__getattr__	  s    txx""r#   c                2    \        V P                  V4       R # r   )r%  r  r   s   &&r    r  TopPadder.__delattr__	  s    r#   ru   Nr   )r%   r&   r'   r(   r)   r!   r]   rp   rZ   r}  rH  r  r*   r+   r,   s   @r    r  r  	  s2     +
># r#   r  c                   D   a  ] tR tRt o Rt^tR	R ltR tR tR t	Rt
V tR# )
	DocAssigni	  zJAt wrap time this flowable evaluates var=expr in the doctemplate namespacec                B    \         P                  V 4       WV3V n        R # r   r/   r!   r  )r   varexprlifes   &&&&r    r!   DocAssign.__init__	  s    $TM	r#   c                    V P                  R 4      pVP                  \        WR7      4        V P                  4       R F  p W4 K  	  #     K  ; i  R F  p Y4 K      K  ; i	  i ; i)
_nameSpaceavailableWidthavailableHeight)r   r  dictr  )r   r^   r_   NSr  s   &&&  r    funcWrapDocAssign.funcWrap	  sp      .
		$b<=	99;7 8	 8	 8s/   A A

AA(AA(A"		A(c                    V P                  R V P                  P                  R,          ,           4      ! V P                  !  # )rT  r   )r   r   r%   r  r   s   &r    r  DocAssign.func	  s0    $$S)@)@)D%DEtyyQQr#   c                (    V P                  W4       R# r  )r  r  s   &&&r    r]   DocAssign.wrap	  s    b
r#   r  Nforever)r%   r&   r'   r(   r)   rb  r!   r  r  r]   r*   r+   r,   s   @r    r  r  	  s'     TI"
R r#   r  c                   .   a  ] tR tRt o RtRR ltRtV tR# )DocExeci	  z(at wrap time exec stmt in doc._nameSpacec                @    \         P                  V 4       W3V n        R # r   r  )r   stmtlifetimes   &&&r    r!   DocExec.__init__	  s    $-	r#   r  Nr  r$   r,   s   @r    r  r  	  s     2   r#   r  c                   F   a  ] tR tRt o RtR
R ltR tR tR tR t	R	t
V tR# )DocParai	  a4  at wrap time create a paragraph with the value of expr as text
if format is specified it should use %(__expr__)s for string interpolation
of the expression expr (if any). It may also use %(name)s interpolations
for other variables in the namespace.
suitable defaults will be used if style and klass are None
Nc                l    \         P                  V 4       Wn        W n        W0n        W@n        WPn        R # r   )r/   r!   r  r8  rz   klassescape)r   r  r8  rz   r  r  s   &&&&&&r    r!   DocPara.__init__	  s)    $	

r#   c                    V P                   pV'       d9   \        V\        4      '       g   \        V4      pV P                  R 4      ! V4      # R# )docEvalN)r  rE  rJ   r   )r   r  s   & r    r  DocPara.func 
  s>    yyd3''D	((3D99 r#   c                D    V P                  R 4      P                  ! V!   R# )r   N)r   r  )r   r  s   &*r    add_contentDocPara.add_content
  s    g&<<dCr#   c                   V P                  W4      pV P                  '       dT   V P                  R 4      P                  4       pVP	                  \        WR7      4       W4R&   V P                  V,          pV# \        V4      pV# )r  r  __expr__)r  r8  r   r   r  r  rJ   )r   r^   r_   r6  r  s   &&&  r    	get_valueDocPara.get_value	
  so    b$;;;$$\2779BIId"@A"zNKK"$E  JEr#   c                   V P                  W4      pV P                  pV'       g   ^ RIHp V P                  pV'       g   ^ RIHp V! 4       R,          pV P                  '       d   ^ RIHp V! V4      pV P                  V! W5R7      4       R# )r1   r  )getSampleStyleSheetCode)r  )rz   r  )
r  r  r  r  rz   reportlab.lib.stylesr  r  xml.sax.saxutilsr
  )r   r^   r_   r6  r  rz   r  r  s   &&&     r    r]   DocPara.wrap
  sh    r%JJC

@%'/E;;;/-E5-.
r#   )r  r  r8  r  rz   )NNNT)r%   r&   r'   r(   r)   r!   r  r
  r  r]   r*   r+   r,   s   @r    r  r  	  s)     :D	 r#   r  c                   6   a  ] tR tRt o RR ltR tR tRtV tR# )	DocAsserti#
  Nc                H    \         P                  V 4       Wn        W n        R # r   )r/   r!   r  r8  )r   condr8  s   &&&r    r!   DocAssert.__init__$
  s    $	r#   c                P    \         P                  WV4      V n        V P                  # r   )r  r  _condr  s   &&&r    r  DocAssert.funcWrap)
  s     %%db1
zzr#   c                t    V P                  W4      p\        V P                  4      '       g   \        V4      hR# r  )r  boolr  AssertionError)r   r^   r_   r6  s   &&& r    r]   DocAssert.wrap-
  s/    r%DJJ ''
r#   )r  r  r8  r   )	r%   r&   r'   r(   r!   r  r]   r*   r+   r,   s   @r    r  r  #
  s     
 r#   r  c                   8   a  ] tR tRt o . 3R ltR tR tRtV tR# )DocIfi3
  c                b    \         P                  V 4       Wn        T;'       g    . V3V n        R # r   )r/   r!   r  blocks)r   r  	thenBlock	elseBlocks   &&&&r    r!   DocIf.__init__4
  s'    $	oo2i/r#   c                D    \        V\        \        34      '       g   V3pV# r   )rE  r  r  )r   blocks   &&r    
checkBlockDocIf.checkBlock9
  s    %e--HEr#   c                    V P                   ! V P                  V P                  \        \	        V P                  W4      4      4      ,          4      !   R# r  )r
  r+  r%  r   r  r  r  s   &&&r    r]   
DocIf.wrap>
  s:    $//$++c$t}}R?S:T6U*VWX
r#   )r%  r  N)	r%   r&   r'   r(   r!   r+  r]   r*   r+   r,   s   @r    r#  r#  3
  s     /1 0

 r#   r#  c                   ,   a  ] tR tRt o R tR tRtV tR# )DocWhileiB
  c                h    \         P                  V 4       Wn        V P                  V4      V n        R # r   )r/   r!   r  r+  r*  )r   r  
whileBlocks   &&&r    r!   DocWhile.__init__C
  s%    $	__Z0
r#   c                    \        V P                  W4      4      '       d,   V P                  ! \        V P                  4      V .,           !   R# r  )r  r  r
  r  r*  r  s   &&&r    r]   DocWhile.wrapH
  s9    b$%%tDJJ/68
r#   )r*  r  N)r%   r&   r'   r(   r!   r]   r*   r+   r,   s   @r    r0  r0  B
  s     1
 r#   r0  c                   4   a  ] tR tRt o ^tRR ltR tRtV tR# )SetTopFlowablesiM
  c                    Wn         W n        R # r   _F_showr   r  shows   &&&r    r!   SetTopFlowables.__init__O
      
r#   c                    \        \        V R R4      RR4      pV'       dQ   V P                  Vn        V P                  '       d.   V P                  '       d   V P                  VP                  n        R# r>   Nr   r  )rl   r:  _topFlowablesr;  r   r  r   r^   r_   r  s   &&& r    r]   SetTopFlowables.wrapS
  sN    gd6$/tD $Czzzdggg/3ww		,
r#   r9  Nrm  	r%   r&   r'   r(   
_ZEROZSIZEr!   r]   r*   r+   r,   s   @r    r7  r7  M
       J r#   r7  c                   4   a  ] tR tRt o ^tRR ltR tRtV tR# )SetPageTopFlowablesi[
  c                    Wn         W n        R # r   r9  r<  s   &&&r    r!   SetPageTopFlowables.__init__]
  r?  r#   c                    \        \        V R R4      RR4      pV'       dQ   V P                  Vn        V P                  '       d.   V P                  '       d   V P                  VP                  n        R# rA  )rl   r:  _pageTopFlowablesr;  r   r  rC  s   &&& r    r]   SetPageTopFlowables.wrapa
  sN    gd6$/tD$(GGC!zzzdggg/3ww		,
r#   r9  Nrm  rE  r,   s   @r    rI  rI  [
  rG  r#   rI  r   )r   NNN)ra  N)f__version__r)   r  r   r   reportlab.lib.colorsr   r   reportlab.lib.rl_accelr   reportlab.lib.enumsr   r   r	   r  r
   r  r   r   r   reportlab.lib.abagr   reportlab.pdfbaser   reportlab.pdfbase.pdfmetricsr   reportlab.rl_configr   r   r   r   rp   __all__r   r/   r   r   r   r   r   r   r   r   r_  rd  ro  rx  r  r  r  r  r  r  r  r  r  r  r  r  r3  r8  r?  rV  r]  r_  r}  r  r  r  r  r  r  r;  rQ  r]  rg  r  r  r  r  reportlab.lib.sequencerr(  r  r4  r9  r;  rg  ri  r  r  r  r  r  r  r  r  r  r  r#  r0  r7  rI  ru   r#   r    <module>rY     so   	, 
  0 ) < < . I I # & 4 h h,
 -2EG  N N`P8 P*& &4PL8 L\[H [zx PX P
- 
-i
 i	I 		) 	FF F(3$j @?8 @D\ CH C	!( !">$ >$@P PO O* *X/ /
8# 8#td:h dN $j#*X j#X9A( 9Av> >@vQ
#5h vQp$x $:. ., x  .r( rh	5V 5"&$d &$P,"n ,"\2H 2h 4$  !#$!##3 3jB1^ 1^f#g #gJ +( (T }:h'9 }~ < 4 i  0i 0d  G 	u 	h ( r#   