Ë
    ¡ëiõÇ  ã                   ód  — d Z dZddlmZ ddl­ ddl­ ddlmZmZ ddl	m
Z
mZmZmZmZmZ ddlmZmZmZ ddlmZ dd	lmZmZmZmZ ddl­ dd
lmZmZ ddlm Z m!Z!m"Z" ddl#m$Z$m%Z% ddl&m'Z' ddl(m)Z)  G d„ de«      Z* G d„ de+«      Z, G d„ de«      Z- G d„ d«      Z. G d„ d«      Z/ G d„ de/e"«      Z0 G d„ de/e«      Z1ddl2m3Z3  G d„ d e3«      Z4 G d!„ d"e4«      Z5g d#¢g d$¢gZ6 G d%„ d&e4«      Z7 G d'„ d(e7«      Z8 G d)„ d*e4«      Z9 G d+„ d,e9«      Z:d-„ Z; G d.„ d/e4«      Z<d0„ Z=d1„ Z>d2„ Z?d3„ Z@d4„ ZAd5„ ZBy6)7z3.3.0z9This module defines a very preliminary Line Plot example.é    ©Úcolors)Ú*)ÚflattenÚisStr)ÚDrawingÚGroupÚRectÚPolyLineÚPolygonÚ_SetKeyWordArgs)ÚTypedPropertyCollectionÚ
PropHolderÚ
tpcGetItem)ÚLabel)Ú
XValueAxisÚ
YValueAxisÚAdjYValueAxisÚNormalDateXValueAxis)ÚuSymbol2SymbolÚ
makeMarker)ÚGridÚ
DoubleGridÚShadedPolygon)ÚstringWidthÚgetFont)ÚPlotAreaé   )ÚFillPairedDatac                   ó  — e Zd Z e eed¬«       eed¬«       eed¬«       eed¬«       eddd¬	«       edd
d¬	«       eddd¬	«       eed¬«       e e	 e
ddd«      «      dd¬	«       eedd¬	«       e e
ddddd«      dd¬	«      ¬«      Zy)ÚLinePlotPropertieszWidth of a line.©ÚdesczColor of a line.zDash array of a line.z,Color of infill defaults to the strokeColor.NzWidget placed at data points.r   ©r#   ÚadvancedUsagezShader Class.zFiller Class.zName of the line.ÚlineÚ
joinedLineÚbarzWhat kind of plot this line isz2Percentage of available width to be used for a barr   é   TFzIf true flood fill to x axis)ÚstrokeWidthÚstrokeColorÚstrokeDashArrayÚ	fillColorÚsymbolÚshaderÚfillerÚnameÚ	lineStyleÚbarWidthÚinFill)Ú__name__Ú
__module__Ú__qualname__ÚAttrMapÚAttrMapValueÚisNumberÚisColorOrNoneÚisListOfNumbersOrNoneÚisStringOrNoneÚNoneOrÚOneOfÚisNumberOrNoneÚ_attrMap© ó    úc/var/www/html/chat/reports/venv/lib/python3.12/site-packages/reportlab/graphics/charts/lineplots.pyr!   r!      s¶   „ ÙÙ" 8Ð2DÔEÙ" =Ð7IÔJÙ&Ð'<ÐCZÔ[Ù  Ð5cÔdÙ˜dÐ)HÐWXÔYÙ˜d¨ÀqÔIÙ˜d¨ÀqÔIÙ˜NÐ1DÔEÙ ¡©¨f°\À%Ó(HÓ!IÐPpð  @Aô  BÙ Ð4hÐwxÔyÙ™e A a¨¨$¨uÓ5Ð<ZÐijÔkô
�HrC   r!   c                   ó   — e Zd Zdd„Zy)ÚInFillValueNc                 ó@   — t         j                  | |«      }||_        |S ©N)ÚintÚ__new__ÚyValue)ÚclsÚvrK   Úselfs       rD   rJ   zInFillValue.__new__(   s   € Ü�{‰{˜3˜qÓ!ˆØˆŒØˆrC   rH   )r5   r6   r7   rJ   rB   rC   rD   rF   rF   '   s   „ ôrC   rF   c                   óZ   — e Zd Z ee eed¬«       e eedd¬«      d¬«      ¬«      Z	d„ Z
y)	ÚShaderzIf true shade to x axisr"   r)   )ÚloÚhiz(AxisColor, LineColor))ÚBASEÚverticalr   c                 óŠ   — d d g}t        | d|«      xs |}|d   st        |dt        j                  «      |d<   |d   s||d<   y y )Nr   r   r-   r   )Úgetattrr   Úwhite)rN   ÚlpÚgÚrowNoÚrowColorÚrowÚcs          rD   ÚshadezShader.shade3   sK   € Ø�$ˆKˆÜ�D˜ !Ó$Ò)¨ˆØ�ŠtœG B {´6·<±<Ó@�Q�q‘TØ�Št˜H�Q�q’TˆtrC   N)r5   r6   r7   r8   r   r9   Ú	isBooleanÚ
SequenceOfr;   rA   r^   rB   rC   rD   rP   rP   -   s2   „ Ù˜HÙ 	Ð0IÔJÙ™j¨¸!¸qÔAÐH`Ôaô
€Hó
%rC   rP   c                   ó   — e Zd Zd„ Zy)ÚNoFillerc                  ó   — y rH   rB   ©rN   rX   rY   rZ   r[   Úpointss         rD   ÚfillzNoFiller.fill:   s   € ØrC   N)r5   r6   r7   rf   rB   rC   rD   rb   rb   9   s   „ órC   rb   c                   ób   — e Zd ZdZ e eed¬«       eed¬«       eed¬«      ¬«      Zd„ Z	d„ Z
y	)
ÚFillerz#mixin providing simple polygon fillzfiller interior colorr"   zfiller edge colorzfiller edge width©r-   r+   r*   c                 ó   — || _         y rH   )Ú__dict__)rN   Úkws     rD   Ú__init__zFiller.__init__D   s	   € Øˆ�rC   c                 ó‚   — |j                  t        |t        | d|«      t        | d|«      t        | dd«      ¬«      «       y )Nr-   r+   r*   çš™™™™™¹?ri   )Úaddr   rV   rd   s         rD   rf   zFiller.fillG   s;   € Ø	�‰Œg�fÜ˜d ;¨xÓ8Ü  ]°8Ó<Ü  ]°3Ó7ô9õ 	:rC   N)r5   r6   r7   Ú__doc__r8   r9   r;   r@   rA   rm   rf   rB   rC   rD   rh   rh   =   s:   „ Ù-ÙÙ  Ð5LÔMÙ" =Ð7JÔKÙ" >Ð8KÔLô
€Hò
ó:rC   rh   c                   ó   — e Zd Zy)ÚShadedPolyFillerN©r5   r6   r7   rB   rC   rD   rs   rs   M   ó   „ ØrC   rs   c                   ó   — e Zd Zy)Ú
PolyFillerNrt   rB   rC   rD   rw   rw   P   ru   rC   rw   )ÚAbstractLineChartc                   ó¨  — e Zd ZdZ ee eedd¬«       eedd¬«       edd¬«       edd	¬«       edd
¬«       ee	d¬«       ee	d¬«       edd¬«       edd¬«       edd¬«       edd¬«       eddd¬«       eedd¬«       eedd¬«      ¬«      Z
d„ Zed„ «       Zej                  d„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zej,                  ddfd„Zy) ÚLinePlotz‰Line plot with multiple lines.

    Both x- and y-axis are value axis (so there are no seperate
    X and Y versions of this class).
    zIf true reverse plot order.r   r$   z,Distance between a data point and its label.Nz(Handle to the list of data point labels.r"   z9Formatting string or function used for data point labels.zHexplicit array of line label values, must match size of data if present.z.Color used for background border of plot area.ú0Color used for background interior of plot area.zHandle of the lines.zHandle of the x axis.zHandle of the y axis.z2Data to be plotted, list of (lists of) x/y tuples.z<list of callables, will be called with self, xscale, yscale.z If true use separate line group.z#If true use draw grids before axes.)rS   ÚreversePlotOrderÚlineLabelNudgeÚ
lineLabelsÚlineLabelFormatÚlineLabelArrayr+   r-   ÚlinesÚ
xValueAxisÚ
yValueAxisÚdataÚannotationsÚ
behindAxesÚ	gridFirstc                 óô  — t        j                  | «       d| _        t        «       | _        t        «       | _        ddg| _        t        t        «      | _
        d| j                  _        d| _        t        j                  | j                  d   _        t        j                   | j                  d   _        t        t"        «      | _        d | _        d | _        d| _        d | _        g | _        d| _        d| _        y )Nr   ©)r   r   )r)   r)   )ç      @r   )é   r‹   )é   é   )©r   r)   ©r)   r‹   ©rŠ   r)   )r‹   rŒ   ©rŒ   é   r   é
   )r   rm   r|   r   r‚   r   rƒ   r„   r   r!   r�   r*   ÚjoinedLinesr   Úredr+   Úbluer   r~   r   r€   r}   Ú_inFillr…   r†   r‡   ©rN   s    rD   rm   zLinePlot.__init__l   sË   € Ü×Ñ˜$ÔØ !ˆÔä$›,ˆŒÜ$›,ˆŒð 2Ø1ðˆŒ	ô
 -Ô-?Ó@ˆŒ
Ø!"ˆ�
‰
ÔØˆÔÜ$*§J¡Jˆ�
‰
�1‰Ô!Ü$*§K¡Kˆ�
‰
�1‰Ô!ä1´%Ó8ˆŒØ#ˆÔØ"ˆÔð !ˆÔð
 ˆŒØˆÔØˆŒØˆ�rC   c                 ó4   — | j                   j                  dk(  S )Nr'   ©r�   r2   r˜   s    rD   r”   zLinePlot.joinedLines“   s   € à�z‰z×#Ñ# \Ñ1Ð1rC   c                 óN   — |rd| j                   _        y d| j                   _        y )Nr'   r&   rš   )rN   rM   s     rD   r”   zLinePlot.joinedLines—   s   € á/0˜|ˆ�
‰
Õ°fˆ�
‰
ÕrC   c                 ó°  — t        dd«      }ddg}t        «       }d|_        d|_        d|_        d|_        ||_        d|_        d	|_        t        j                  |_        t        j                  |j                  d
   _        t        d«      |j                  d
   _        t        j                   |j                  d   _        t        d«      |j                  d   _        d
|j"                  _        d|j"                  _        d|j"                  _        d
|j*                  _        d|j*                  _        d|j*                  _        |j-                  |«       |S )z Shows basic use of a line chart.é�  éÈ   r‰   ©rŽ   r�   r�   )g      @r�   r‘   é2   é}   é,  r   ú%2.0fr   ÚFilledCircleÚFilledDiamondr�   é   )r   rz   ÚxÚyÚheightÚwidthr„   r”   r   r   Úblackr+   r•   r�   r   r.   r–   r‚   ÚvalueMinÚvalueMaxÚ	valueSteprƒ   rp   )rN   Údrawingr„   rX   s       rD   ÚdemozLinePlot.demo›   s  € ô ˜#˜sÓ#ˆð 2Ø3ðˆô
 ‹ZˆàˆŒØˆŒØˆŒ	ØˆŒØˆŒØˆŒØ$ˆÔÜŸ™ˆŒä"(§*¡*ˆ�‰�‰ÔÜ'¨Ó7ˆ�‰�‰ÔÜ"(§+¡+ˆ�‰�‰ÔÜ'¨Ó8ˆ�‰�‰Ôà!"ˆ�‰ÔØ!"ˆ�‰ÔØ"#ˆ�‰Ôà!"ˆ�‰ÔØ!"ˆ�‰ÔØ"#ˆ�‰Ôà�‰�BŒàˆrC   c                 óœ  — t        | j                  «      | _        t        t	        t        t         | j                  «      «      «      | _        t        «       }g j                  }| j                  j                  }| j                  j                  }| j                  }t        |«      }t        |«      D ]Û  \  }}t        |t        «      rR|j                  }	d|	cxk  r|k  r*n n'|	|k(  rt!        d|z  «      ‚|j#                  ||	f«       nt!        d|›d|	›�«      ‚g j                  }
t        |«      D ]H  \  }}|d   } |
t%        |«      r |t'        t)        |«      «      «      n ||«       ||d   «      f«       ŒJ  ||
j*                  «       ŒÝ |j*                  }|D ]  \  }}	t        ||   |	«      ||<   Œ t        |«      | _        || _        y)z…Works out where they go.

        Sets an attribute _positions which is a list of
        lists of (x, y) matching the data.
        r   z)data row %r may not be paired with itselfz	data row z! is paired with invalid data row r   N)Úlenr„   Ú_seriesCountÚmaxÚlistÚmapÚ
_rowLengthÚsetÚappendr‚   Úscalerƒ   Ú	enumerateÚ
isinstancer   ÚotherÚ
ValueErrorrp   r   ÚmktimeÚmkTimeTupleÚ__self__Ú_pairInFillsÚ
_positions)rN   ÚpairsÚPÚxscaleÚyscaler„   ÚnrZ   r\   r½   r&   ÚcolNoÚdatumÚxvs                 rD   ÚcalcPositionszLinePlot.calcPositionsÂ   s”  € ô   §	¡	›NˆÔÜœd¤3¤s¨4¯9©9Ó#5Ó6Ó7ˆŒä“ˆØ�I‰IˆØ—‘×&Ñ&ˆØ—‘×&Ñ&ˆØ�y‰yˆÜ�‹IˆÜ# D›/ò 	‰JˆE�3Ü˜#œ~Ô.ØŸ	™	�Ø�e”:˜A•:Ø˜e’|Ü(Ð)TÐW\Ñ)\Ó]Ð]Ø—I‘I˜u U˜mÕ,å$ÒY^Ñ`eÐ%fÓgÐgØ—9‘9ˆDÜ )¨#£ò ‘��uØ˜1‘X�Ùä7<¸R´y‘Fœ6¤+¨b£/Ó2Ô3ÁfÈRÃjÙ˜5 ™8Ó$ðõðñ ˆd�m‰mÕð%	ð& �J‰Jˆð "ò 	6‰LˆE�5Ü% a¨¡h¨uÓ5ˆAˆeŠHð	6ä ›JˆÔØˆ�rC   c                 ó  — | j                   }| j                  |   |   d   }|€d}njt        |t        «      r|dk(  r| j                  |   |   }nB||z  }n<t        |d«      r"t        |d«      s	 ||«      }n || ||||«      }nt        d|z  «      ‚|ru| j                  ||f   }|j                  sy|dkD  r |j                  ||| j                  z   «       n|j                  ||| j                  z
  «       |j                  |«       |S d}|S )z*Draw a label for a given item in the list.r   NÚvaluesÚ__call__Ú__labelFmtEX__z6Unknown formatter type %s, expected string or functionr   )r   r„   r¼   Ústrr€   Úhasattrr¾   r~   ÚvisibleÚ	setOriginr}   ÚsetText)	rN   rZ   rÉ   r§   r¨   ÚlabelFmtÚ
labelValueÚ	labelTextÚlabels	            rD   Ú_innerDrawLabelzLinePlot._innerDrawLabelí   s  € ð ×'Ñ'ˆØ—Y‘Y˜uÑ% eÑ,¨QÑ/ˆ
àÐØ‰IÜ˜¤Ô%Ø˜8Ò#Ø ×/Ñ/°Ñ6°uÑ=‘	à$ zÑ1‘	Ü�X˜jÔ)Ü˜8Ð$4Ô5Ù$ ZÓ0‘	á$ T¨%°°a¸Ó:‘	äÐUÐW_Ñ_Ó`Ð`áØ—O‘O U¨E NÑ3ˆEØ—=’= &à�1ŠuØ—‘  1 t×':Ñ':Ñ#:Õ;à—‘  1 t×':Ñ':Ñ#:Ô;Ø�M‰M˜)Ô$ð ˆð ˆEØˆrC   c                 óJ   — |j                  | j                  ||||«      «       y)zLDraw a label for a given item in the list.
        G must have an add methodN)rp   rÚ   )rN   ÚGrZ   rÉ   r§   r¨   s         rD   Ú	drawLabelzLinePlot.drawLabel  s!   € ð 	
�‰ˆd×"Ñ" 5¨¨q°Ó3Õ4rC   c                 ó4  — t        «       }| j                  }| j                  }t        | dd «      }|r,t	        |j
                  |j
                  «      }|j                  }| j                  }| j                  }t        | dd «      }	| j                  }
t        |
«      }|	sA| j                  s5t        t        |«      «      D �cg c]  }t        |
||z     dd«      r|‘Œ c}rUt        |	dd «      }|€|j                  }n|j                  |«      }|j                  }||j                   z   }t        | d|«      }d }t        | d|«      }t        t        |«      «      }| j"                  rt%        |«      }|D �]¡  }||   }||z  }|
|   }t        |dd «      }t        |d	d «      }t        |d
|«      }t        |d|	«      }t        |dd «      }t        |dd «      }t'        |d	«      r|j(                  }nt'        |
d	«      r|
j(                  }nd }|dk(  �r\|€øt+        t-        t        |«      «      dz
  }|dkD  r| j.                  |z  dz
  n| j.                  }t        |dt1        d«      «      }| j                  }|j                  d«      } t+        |j                  | «      }!t	        |j                  |j                   z   | «      }"| j                  j                  }#|#| j                  j                   z   }$t3        |t0        «      r	||dz  z  }n|dz  }|D ]\  \  }}%|}&|% k  r"n!}'||&dz  z  }|#k  r|&|#|z
  z  }&|#}n||&z   $kD  r|&|$|z
  z  }&|j5                  t7        ||'|&|%|'z
  |||¬«      «       Œ^ nï|dk(  rêt9        |«      }(|st3        |t:        «      r�t        |dd «      })t3        |t:        «      r%|(t9        t%        ||j<                     «      «      z   }*ng|(z   |gz   }*|)r|)j?                  | |||*«       n)j5                  tA        |*|||k(  r|nd |xs d¬«      «       |r
|dk(  s||k7  r2tC        |(|dd¬«      }+|r||+_        |r||+_"        |j5                  |+«       t'        |d«      r|jF                  },nt'        |
d«      r|
jF                  },nd },|,r¢|r| jH                  |   }-tK        |«      D ]‚  \  }.}/||.f|
v rt        |
||.f   d|,«      }0n|,}0|0|,u r|,}1|}2n|0}1t        |1d
|«      }2tM        tO        |1|.«      |/d   |/d   |2«      }1|1sŒZ|r-|.   d   z  dz  z  |1_(        |j5                  |1«       Œ„ n‘|r| jH                  |   }-tK        |«      D ]r  \  }.}/t        |
||.f   dd «      }0|0sŒt        |0d
t        |0d|«      «      }2tM        |0|/d   |/d   |2«      }1|1sŒJ|r-|.   d   z  dz  z  |1_(        |j5                  |1«       Œt tK        |«      D ]  \  }3}4|4\  }5}6| jS                  |||3|5|6«       Œ! t        |dd «      }7|7s�Œ�|7jU                  | ||||«       �Œ¤ |S c c}w )NÚ_bubblePlotr—   r4   FrK   Ú_inFillGÚ_lineGr+   r*   r-   r,   r2   r(   r   r   r3   r    g{®Gázt?ç      à?r)   )r*   r+   r-   r'   r0   ro   ri   )r+   ÚstrokeLineCapÚstrokeLineJoinr.   r/   )+r	   rƒ   r‚   rV   ÚminÚ_bubbleRadiusÚ
_bubbleMaxr   rÃ   r�   r²   rÂ   ÚrangeÚ_yrº   Ú_xÚ_lengthr|   ÚreversedrÒ   r*   r´   r¶   rª   Ú
Percentager¼   rp   r
   r   r   r½   rf   r   r   r,   r.   r„   r»   r   r   ÚsizerÝ   r^   )8rN   rY   ÚyAÚxAÚ
bubblePlotÚbubbleRÚ	bubbleMaxrÖ   rÅ   r—   r�   Ú
styleCountrZ   ÚinFillYÚinFillX0ÚinFillX1ÚinFillGÚbwÚlGÚRr\   Ú
styleRowNoÚrowStyler+   r*   r-   r4   Údashr2   rª   r§   r3   Úy0ÚbyposÚbynegÚxminÚxmaxr¨   ÚwÚ_y0re   r0   Úfpointsr&   ÚuSymbolÚdrowÚjÚxyÚjuSymbolr.   ÚsymColorrÉ   rÊ   Úx1Úy1r/   s8                                                           rD   Ú	makeLineszLinePlot.makeLines  sZ  € Ü‹GˆØ�_‰_ˆØ�_‰_ˆÜ˜T -°Ó5ˆ
ÙÜ˜"×*Ñ*¨2×+;Ñ+;Ó<ˆGØŸ™ˆIà×'Ñ'ˆà�O‰OˆÜ˜$˜y¨Ó.ˆØ—
‘
ˆÜ˜“Zˆ
Ù�t×(Ò(Ü$)¬#¨a«&£Mö L˜5Ü" 5¨¨zÑ)9Ñ#:¸8ÀEÔJò ó Lô ˜g h¨tÓ4ˆGØˆØŸ%™%‘àŸ(™( 7Ó+�Ø—u‘uˆHØ "§*¡*Ñ,ˆHÜ˜d :¨aÓ0ˆGØˆÜ�T˜( 1Ó%ˆä”#�a“&‹MˆØ× Ò ¤h¨q£k !Øó l	BˆEØ�E‘(ˆCØ Ñ+ˆJØ˜ZÑ(ˆHÜ! (¨=¸Ó>ˆKÜ! (¨=¸Ó>ˆKÜ ¨+°{ÓCˆIÜ˜X h¨wÓ7ˆFÜ˜8Ð%6¸Ó=ˆDÜ ¨°TÓ:ˆIä�x Ô/Ø ×,Ñ,‘Ü˜ Ô.Ø×)Ñ)‘à�ð ˜%ÓØ�:ÜœC¤ A›J›¨!Ñ+�AØ/0°ªs˜$Ÿ*™* Q™,¨Ò*¸¿
¹
�BÜ& x°
¼:Àb»>ÓJ�HØŸ™�AØŸ™ ›�BÜ §¡ R›L�EÜ §¡ Q§Y¡Y¡¨rÓ2�EØŸ?™?×-Ñ-�DØ $§/¡/×"9Ñ"9Ñ9�DÜ! (¬:Ô6Ø˜h u™nÑ,™à% c™\˜Øò 
s‘D�A�qØ�Aà#$ R¢4™%¨U�CØ˜˜1™‘H�AØ˜’vØ˜T A™X™˜Ø ™Ø˜1™˜tšØ˜T A™X™˜Ø—E‘Eœ$˜q  Q q¨¡u¸ÐQ\ÐgpÔqÕrñ
sð ˜LÒ(Ü  ›�ÙœZ¨¬NÔ;Ü$ X¨x¸Ó>�FÜ! #¤nÔ5Ø"(¬7´8¸A¸c¿i¹i¹LÓ3IÓ+JÑ"J™à#+¨GÐ"4°vÑ"=ÀÈ'Ð@RÑ"R˜ÙØŸ™ D¨°°yÀÕIàŸ™¤G¨G¸iÐcnÐpyÒcyÑT_ð  @Dð  QVò  Q]ð  Z]ô  %^ô  _Ù ¨¢¨k¸9Ò.DÜ# F°{ÐQRÐbcÔd�DÙØ+0˜Ô(ÙØ/3˜Ô,Ø—F‘F˜4”Lä�x Ô*Ø"Ÿ/™/‘Ü˜ Ô)ØŸ,™,‘à�áÙ d§i¡i°Ñ&6˜tÜ% c›Nò &‘D�A�bØ" 1�~¨Ñ.Ü#*¨5°¸A°Ñ+>¸xÈÓ#P™à#*˜Ø 7Ñ*Ø!(˜Ø#.™à!)˜Ü#*¨6°+¸kÓ#J˜Ü+¬J°v¸aÓ,@ÀÀAÁÀrÈ!ÁuÈXÓV�FÚÙ%Ø*1°4¸±7¸1±:¸iÑ3GÈ#Ñ2MÑ*M˜FœKØŸ™˜f�ñ&ñ"  d§i¡i°Ñ&6˜tÜ% c›Nò &‘D�A�bÜ& u¨Z¸¨\Ñ':¸8ÀDÓI�HÙ# XÜ& x°¼GÀHÈ]Ð[fÓ<gÓh�HÜ+¨H°R¸±U¸2¸a¹5ÀÓJ�FÚÙ%Ø*1°4¸±7¸1±:¸iÑ3GÈ#Ñ2MÑ*M˜FœKØŸ™˜f�ð&ô  )¨›~ò 8‘��eØ‘��BØ—‘˜q %¨°°BÕ7ð8ô ˜X x°Ó6ˆFÛ�v—|‘| D¨¨5°¸SÖAðYl	Bð\ ˆùò}Ls   Â>Xc                 óè	  — | j                   }| j                  }t        | dd «      rdx|_        |_        |j	                  | j
                  | j                  | j                  «       |r||_        |r||_        |j                  | j                  «       |j                  d«      }|| j                  | j                  z   kD  s|| j                  k  r| j                  }n|}|j	                  | j
                  || j                  «       |j                  | j                  «       | j                  «        t        «       }|j                  | j!                  «       «       | j"                  s| j$                  r||j'                  «        | j"                  r*t        «       | _        |j                  | j(                  «       | j$                  r*t        «       | _        |j                  | j*                  «       |j'                  «        |j'                  «        |j,                  xr |j.                  gxs g }|j,                  xr |j0                  gxs g }t        |dd«      }|d k7  rK|dv r(|j3                  |j0                  |j4                  z   «       |dv r|j3                  |j0                  «       t        |dd«      }|d k7  rK|dv r(|j3                  |j.                  |j4                  z   «       |dv r|j3                  |j.                  «       | j6                  r>|j9                  || |j:                  |¬«       |j9                  || |j:                  |¬«       |j                  |j=                  «       «       |j                  |j=                  «       «       | j6                  s\t        |d	d
«      }	t        |d	d
«      }
|	s|j9                  || |j:                  |¬«       |
s|j9                  || |j:                  |¬«       t        | dg «      }|D ]=  }t        |dd «      sŒ|j                   || |j                  |j                  «      «       Œ? |j                  | j?                  «       «       | j6                  sB	r|j9                  || |j:                  |¬«       
r|j9                  || |j:                  |¬«       |D ]=  }t        |dd «      rŒ|j                   || |j                  |j                  «      «       Œ? |S )Nrß   r   r   ÚskipGridÚnone)ÚbothÚtop)r  Úbottom)ÚparentÚdimÚexcludeÚdrawGridLastFr…   ÚbeforeLines) rƒ   r‚   rV   rß   ÚsetPositionr§   r¨   r©   ÚjoinAxisÚ	configurer„   rº   rª   rÌ   r	   rp   ÚmakeBackgroundr—   r†   Ú_joinToAxisrà   rá   ÚvisibleAxisré   rê   r¹   rë   r‡   ÚmakeGridÚgetGridDimsÚdrawr  )rN   rï   rð   ÚxAxisCrossesAtr¨   rY   ÚxAexÚyAexr  ÚxAdglÚyAdglr…   Úas                rD   r#  zLinePlot.draw¤  s»  € Ø�_‰_ˆØ�_‰_ˆÜ�4˜ dÔ+Ø./Ð/ˆBŒN˜Rœ^Ø
�‰�t—v‘v˜tŸv™v t§{¡{Ô3Ù˜RˆrŒ{Ù˜RˆrŒ{Ø
�‰�T—Y‘YÔð Ÿ™ !›ˆØ˜dŸf™f t§{¡{Ñ2Ò2¸ÈÏÉÒ8OØ—‘‰AàˆAà
�‰�t—v‘v˜q $§*¡*Ô-Ø
�‰�T—Y‘YÔØ×ÑÔÜ‹GˆØ	�‰ˆd×!Ñ!Ó#Ô$Ø�<Š<˜4Ÿ?š?Ø�N‰NÔØ�|Š|Ü %£�”Ø—‘�d—m‘mÔ$Ø�ŠÜ#›g�”Ø—‘�d—k‘kÔ"Ø
�‰ÔØ
�‰ÔØ�~‰~Ò) 2§5¡5 'Ò/¨RˆØ�~‰~Ò) 2§5¡5 'Ò/¨RˆÜ˜2˜j¨Ó0ˆØ�TŠ>Ø˜>Ñ)Ø—‘˜BŸE™E "§*¡*Ñ,Ô-ØÐ,Ñ,Ø—‘˜BŸE™EÔ"Ü˜2˜j¨Ó0ˆØ�TŠ>Ø˜>Ñ)Ø—‘˜BŸE™E "§*¡*Ñ,Ô-ØÐ,Ñ,Ø—‘˜BŸE™EÔ"Ø�>Š>Ø�K‰K˜ ¨"¯.©.ÀˆKÔFØ�K‰K˜ ¨"¯.©.ÀˆKÔFØ	�‰ˆb�g‰g‹iÔØ	�‰ˆb�g‰g‹iÔØ�~Š~Ü˜B˜~¨eÓ4ˆEÜ˜B˜~¨eÓ4ˆEÙ˜"Ÿ+™+ a¨t¸¿¹Èt˜+ÔTÙ˜"Ÿ+™+ a¨t¸¿¹Èt˜+ÔTÜ˜d =°Ó4ˆØò 	1ˆAÜ�q˜ tÕ,Ø—‘‘a˜˜RŸX™X b§h¡hÓ/Õ0ð	1ð 	
�‰ˆd�n‰nÓÔØ�~Š~Ù�b—k‘k !¨4°B·N±NÈ4�kÔPÙ�b—k‘k !¨4°B·N±NÈ4�kÔPØò 	1ˆAÜ˜1˜]¨4Õ0Ø—‘‘a˜˜RŸX™X b§h¡hÓ/Õ0ð	1ð ˆrC   Tc                 óÒ   ‡‡‡‡‡
‡— ddl mŠ
mŠ t        | dg «      D �cg c]  }t        |dd «      |k7  sŒ|‘Œ }}ˆ
ˆˆˆˆˆfd„}	||	_        |j                  |	«       || _        y c c}w )Nr   )r	   ÚLiner…   r1   c           
      ó^  •—  |‰«      } |‰«      } ‰«       }|j                   }|j                   ‰	|j                  ||j                  |j                  z   |‰
‰¬«      «       |j                   }|j                   ‰	||j                  ||j                  |j                  z   ‰
‰¬«      «       |S )N)r+   r*   )rÁ   rp   rê   rë   ré   )rN   ÚxScaleÚyScaler§   r¨   rY   rð   rï   r	   r+  r+   r*   rË   Úyvs           €€€€€€rD   Ú
annotationz)LinePlot.addCrossHair.<locals>.annotationì  s�   ø€ Ù�r“
ˆAÙ�r“
ˆAÙ“ˆAØ—‘ˆBØ�E‰E‘$�r—u‘u˜Q˜rŸu™u R§Z¡ZÑ/°¸kÐVaÔbÔcØ—‘ˆBØ�E‰E‘$�q˜Ÿ™˜q §¡ r§z¡zÑ!1¸kÐVaÔbÔcØˆHrC   )Úreportlab.graphics.shapesr	   r+  rV   r  r¹   r…   )rN   r1   rË   r/  r+   r*   r  r)  r…   r0  r	   r+  s     ````    @@rD   ÚaddCrossHairzLinePlot.addCrossHairé  sd   ý€ ß9Ü")¨$¨}¸RÓ"@Öa˜QÄGÈAÈfÐUYÓDZÐ\`ÓD`’qÐaˆÐa÷	ñ 	ð "-ˆ
ÔØ×Ñ˜:Ô&Ø&ˆÕùò bs
   žA$´A$)r5   r6   r7   rq   r8   r   r9   r_   r:   r;   rA   rm   Úpropertyr”   Úsetterr°   rÌ   rÚ   rÝ   r  r#  r   r«   r2  rB   rC   rD   rz   rz   T   s*  „ ññ
 ˜HÙ'¨	Ð8UÐdeÔfÙ% hÐ5cÐrsÔtÙ! $Ð-WÔXÙ& tÐ2mÔnÙ% dÐ1{Ô|á" =Ð7gÔhÙ  Ð5gÔhÙ˜TÐ(>Ô?Ù! $Ð-DÔEÙ! $Ð-DÔEÙ˜DÐ'[Ô\Ù" 4Ð.lÐ{|Ô}Ù! )Ð2TÐcdÔeÙ  Ð1VÐefÔgô
€Hò$%ðN ñ2ó ð2ð ×Ññ=ó ð=ò$òN)òV òD5ò
Nò`CðJ 28·±È!ÐX\ô 'rC   rz   c            
       óŽ   — e Zd Z ee eed¬«       eed¬«       eed¬«       eed¬«      ¬«      ZdZdZ	dZ
d	Zd
„ Zd„ Zd„ Zd„ Zy)Ú
LinePlot3Dzdx/dzr"   zdy/dzzdepth of an individual serieszz gap around series)rS   Útheta_xÚtheta_yÚzDepthÚzSpacerâ   r“   r‹   c                 ó&  — t         j                  | «       | j                  }| j                  }| j                  }| j
                  j                  dk(  r||z  |dz   |z  z   }n|d|z  z   }| j                  |z  | _        | j                  |z  | _
        y )NÚparallel_3dr   r)   )rz   rÌ   r³   r:  r9  r‚   Ústyler7  Ú_3d_dxr8  Ú_3d_dy)rN   ÚnSeriesr:  r9  Ú	_3d_depths        rD   rÌ   zLinePlot3D.calcPositions  s„   € Ü×Ñ˜tÔ$Ø×#Ñ#ˆØ—‘ˆØ—‘ˆØ�?‰?× Ñ  -Ò/Ø ™¨°©	°6Ñ'9Ñ9‰Ià  6¡Ñ)ˆIØ—l‘l 9Ñ,ˆŒØ—l‘l 9Ñ,ˆ�rC   c                 ó‚   — | j                   }| j                  j                  dk(  r|| j                  |z   z  |z   }|S |}|S )Nr<  )r:  r‚   r=  r9  )rN   rZ   r:  Úz0s       rD   Ú_calc_z0zLinePlot3D._calc_z0  sH   € Ø—‘ˆØ�?‰?× Ñ  -Ò/Ø˜Ÿ™ FÑ*Ñ+¨FÑ2ˆBð ˆ	ð ˆBØˆ	rC   c                 óJ   — ||| j                   z  z   ||| j                  z  z   fS rH   )r7  r8  )rN   r§   r¨   Úzs       rD   Ú_zadjustzLinePlot3D._zadjust  s'   € Ø��4—<‘<‘Ñ  1 T§\¡\¡>Ñ!1Ð1Ð1rC   c                 ó0  — t        | dd «      }|rJ d«       ‚| j                  }| j                  }t        t	        t        |«      «      «      }| j                  r|j                  «        t        | dd «      }|rJ d«       ‚| j                  }| j                  }| j                  }| j                  }	ddlm}
  |
«       }ddlm}m} | j"                  j$                  dk7  r|t        | d	d
«      }t        | dd «      r_ddlm} t        t)        ||«      «      } |||¬«      }d }|D ]0  \  }}}}||k7  r|}d}nd
z  }||   j+                  ||z   ||f«       Œ2 d }n|}nd }|}t        | j,                  «      }|D �]Ü  }||   }t        |«      }| j,                  ||z     }|j.                  }t        |dd «      }| j1                  |«      }||z   } t3        |d«      r|j4                  }!n/t3        | j,                  d«      r| j,                  j4                  }!nd }!| j6                  rM|rK||   }"|"d   \  }#}$t	        d
t        |"«      «      D ]&  }%|"|%   \  }&}' |||#|&|$|'|| ||	|d |d d d d¬«       |&|'}$}#Œ( t3        |d«      r|j8                  }(n/t3        | j,                  d«      r| j,                  j8                  }(nd }(|(rJ|D ]E  })|%   \  }&}' ||&|'|«      \  }&}'t;        |(|)d   |)d
   |«      }*|*sŒ/|j=                  d
|||&|'|*f«       ŒG t	        |«      D ]E  }%||%   \  }&}' ||&|'|«      \  }&}'| j?                  ||%|&|'«      }+|+sŒ/|j=                  d|||&|'|+f«       ŒG �Œß |jA                  «        tC        «       },|jE                  «       D ]  }-|,j=                  |-d   «       Œ |,S )Nrß   z$_bubblePlot not supported for 3d yetr—   zinFill not supported for 3d yetr   )Ú
_FakeGroup)Ú_make_3d_line_infoÚfind_intersectionsr<  Ú_3d_tilewidthr   Ú_find_intersections)Úcopy)Úsmallr,   r*   ro   )ÚfillColorShadedÚ	tileWidthr+   r*   r,   Úshadingr.   r)   éÿÿÿÿ)#rV   r   rÃ   rµ   rè   r²   r|   Úreverser9  rG  r7  r8  Ú$reportlab.graphics.charts.linechartsrI  Ú!reportlab.graphics.charts.utils3drJ  rK  r‚   r=  rN  r¶   Úinsertr�   r+   rD  rÒ   r*   r”   r.   r   rp   rÚ   Úsortr	   Úvalue).rN   rñ   rÖ   Ú	positionsrÅ   r4   r9  rG  r7  r8  rI  ÚFrJ  rK  rQ  rN  Ú
fpositionsÚIÚicÚir	  r§   r¨   Újcrô   rZ   r\   rÈ   rý   r[   rþ   rC  Úz1rª   ÚfrowÚx0rÿ   rÉ   r  r  r  r
  r.   ÚLrY   rM   s.                                                 rD   r  zLinePlot3D.makeLines  sÄ  € Ü˜T -°Ó5ˆ
ÙÐEÐEÓEˆ~ð ×'Ñ'ˆØ—O‘Oˆ	ä””s˜9“~Ó&Ó'ˆØ× Ò  !§)¡)¤+Ü˜˜i¨Ó-ˆÙÐ<Ð<Ó<ˆzð —‘ˆØ—=‘=ˆØ—,‘,ˆØ—,‘,ˆÝCÙ‹Lˆç\Ø�?‰?× Ñ  -Ò/Ü  _°QÓ7ˆIÜ�tÐ1°$Ô7Ý%Ü!¤# d¨9Ó"5Ó6�
Ù& z¸	ÔB�Ø�Ø ò 5‘G�A�a˜˜!Ø˜1’uØ˜Ø™à˜A™˜Ø˜q‘M×(Ñ(¨¨2©¨q°¨eÕ4ð5ð !‘	à&‘
àˆIØ"ˆJô ˜Ÿ™“_ˆ
Øó 1	/ˆEØ˜EÑ"ˆCÜ�C“ˆAØ—z‘z %¨*Ñ"4Ñ5ˆHØ×+Ñ+ˆHÜ˜8Ð%6¸Ó=ˆDØ—‘˜uÓ%ˆBØ�f‘ˆBä�x Ô/Ø ×,Ñ,‘Ü˜Ÿ™ ]Ô3ØŸ
™
×.Ñ.‘à�ð ×ÒÙØ% eÑ,�DØ! !™W‘F�B˜Ü!& q¬¨T«Ó!3ò (˜Ø!% e¡™˜˜BÙ*¨A¨r°2°r¸2¸rÀ2Ø '¨Ø (¸$È)Ø,0¸dÐTXØ(+õ	-ð
 "$ R˜B™ð(ô �x Ô*Ø"Ÿ/™/‘Ü˜Ÿ™ XÔ.ØŸ*™*×+Ñ+‘à�áØò =�BØ  ™Z‘F�B˜Ù% b¨¨BÓ/‘F�B˜Ü+¨G°B°q±E¸"¸Q¹%ÀÓI�FÚ˜qŸu™u a¨¨2¨b°°FÐ%;Õ<ð	=ô ˜q›ò /�Ø˜U™‘��BÙ! " R¨Ó+‘��BØ×(Ñ(¨°°r¸2Ó>�Ú�a—e‘e˜Q˜r " R¨¨1Ð-Õ.ò	/ð[1	/ðf 	
�‰ŒÜ‹GˆØ—‘“Ò(ˆA˜AŸE™E ! B¡%�LÐ(ØˆrC   N)r5   r6   r7   r8   rz   r9   r:   rA   r7  r8  r9  r:  rÌ   rD  rG  r  rB   rC   rD   r6  r6  ù  sc   „ Ù˜HÙ˜x¨gÔ6Ù˜x¨gÔ6Ù˜hÐ-LÔMÙ˜hÐ-BÔCô	
€Hð €GØ€GØ€FØ€Fò
-òò2ójrC   r6  ) ©i‚¼0ç      Y@)éŸ¼0gq"Uoè
Y@)écß0gôt	âdY@)éÄß0gÀ˜ˆŒY@)é+à0gŸ=öŽhY@)éŽà0gÞkRæ°Y@)éóà0g#ïÁÞºY@)éVá0g™Þ´Ï™ÐY@)é»á0gþrwçÐY@)éâ0g_iÏ]^Z@)é‚â0g¯#ÙÀT[@)éçâ0g/+^vÿ[@)éJã0çÿbÈº[@)é¯ã0rs  )és1g¶ŠYŠ?ÿ[@)éÔ1g”åÚ¤r[@)é;1gaž:{�[@)éž1g'šQ=c›[@)é1gÿì¢C»U[@)éf1gãL¸ü[@)éË1gÑ–Îâ �[@)é/	1gæ`‘ºø½[@)é’	1gñ ‡R\@)é÷	1g%^OÏ.\@)éZ
1g¦cÎ3v\@)é¿
1g’+«Ÿm\@)éƒ-1gÄè^Ì;»[@)éå-1gªÕP´¡[@)éK.1gœ&}kñS\@)é®.1gó©ÜßÂ[@)é/1gøU¹Pùì[@)év/1g|\ÀpSe\@) re  )rg  rf  )rh  g333333Y@)ri  g     €Y@)rj  gš™™™™yY@)rk  ç     ÀY@)rl  r‡  )rm  çfffffÆY@)rn  rˆ  )ro  g33333³Y@)rp  gffffffZ@)rq  g33333[@)rr  gfffff[@)rt  gš™™™™ù[@)ru  gfffffF\@)rv  gÍÌÌÌÌŒ[@)rw  g33333ó[@)rx  g33333\@)ry  gfffff†[@)rz  g33333S[@)r{  gÍÌÌÌÌÌ[@)r|  gÍÌÌÌÌì[@)r}  çfffff&\@)r~  gÍÌÌÌÌL\@)r  çš™™™™y\@)r€  gš™™™™Ù\@)r�  gÍÌÌÌÌ,\@)r‚  rŠ  )rƒ  g33333ó\@)r„  gÍÌÌÌÌ\@)r…  r‰  )r†  gfffff¦\@c                   ó   — e Zd ZdZd„ Zy)ÚSimpleTimeSeriesPlotzsA customized version of LinePlot.
    It uses NormalDateXValueAxis() and AdjYValueAxis() for the X and Y axes.
    c                 ó€   — t         j                  | «       t        «       | _        t	        «       | _        t        | _        y rH   )rz   rm   r   r‚   r   rƒ   Ú_monthlyIndexDatar„   r˜   s    rD   rm   zSimpleTimeSeriesPlot.__init__Í  s*   € Ü×Ñ˜$ÔÜ.Ó0ˆŒÜ$›,ˆŒÜ%ˆ�	rC   N)r5   r6   r7   rq   rm   rB   rC   rD   rŒ  rŒ  É  s   „ ñó&rC   rŒ  c                   óZ   — e Zd ZdZ ee edd¬«       eed¬«      ¬«      Zd„ Z	d
d„Z
d	„ Zy)ÚGridLinePlotaÃ  A customized version of SimpleTimeSeriesSPlot.
    It uses NormalDateXValueAxis() and AdjYValueAxis() for the X and Y axes.
    The chart has a default grid background with thin horizontal lines
    aligned with the tickmarks (and labels). You can change the back-
    ground to be any Grid or ShadedRect, or scale the whole chart.
    If you do provide a background, you can specify the colours of the
    stripes with 'background.stripeColors'.
    Nz3Background for chart area (now Grid or ShadedRect).r"   z&Scalefactor to apply to whole drawing.)rS   Ú
backgroundÚscaleFactorc                 ó$  — ddl m} t        j                  | «       d | _        t        «       | _        d| j                  _        d| j                  _        d| j                  _	        d| j                  _
        |j                  | j                  _        y )Nr   r   Ú
horizontalr   râ   )Úreportlab.libr   rŒ  rm   r’  r   r‘  ÚorientationÚuseRectsÚuseLinesr*   r«   r+   )rN   r   s     rD   rm   zGridLinePlot.__init__â  sd   € Ý(Ü×%Ñ% dÔ+ØˆÔÜ›&ˆŒØ&2ˆ�‰Ô#Ø#$ˆ�‰Ô Ø#$ˆ�‰Ô Ø&)ˆ�‰Ô#Ø&,§l¡lˆ�‰Õ#rC   c                 ó¦  — ddl m} |st        dd«      }t        «       }d|_        d|_        d|_        d|_        t        |_	        d|_
        |j                  |_         |j                  d	d
dddd	¬«      }||j                  d   _        d|j                  d   _        d |j                  d   _         |j                  dddddd	¬«      }||j                  d   _        d|j                  d   _        ddg|j                  d   _        d|j"                  j$                  _        d|j"                  j$                  _        d|j"                  j$                  _        d|j"                  j$                  _        d|j"                  j$                  _        d|j"                  j$                  _        d|j"                  _        d|j4                  _        d|j4                  _        d|j4                  j$                  _        t;        «       |_        |j>                  |j@                  g|j<                  _!        d|j<                  _"        |jG                  |d«       |S )Nr   r   r�   rž   r    r¡   r¢   r   éd   éA   é   zPANTONE 288 CV)ÚspotNameÚdensityr)   éO   é[   zPANTONE Wm Red CVr‹   r“   Ústartr  iÓÿÿÿiøÿÿÿz	{mm}/{yy}z%5d%% r�   rT   Úplot)$r•  r   r   r�  r§   r¨   r©   rª   rŽ  r„   r”   r«   r+   Ú
PCMYKColorr�   r*   r,   r‚   ÚlabelsÚfontSizeÚ
textAnchorÚ	boxAnchorÚangleÚdxÚdyÚxLabelFormatrƒ   ÚlabelTextFormatÚtickLeftr   r‘  ÚpinkÚ	lightblueÚstripeColorsr–  rp   )rN   r¯   r   rX   Úc0Úc1s         rD   r°   zGridLinePlot.demoí  sÔ  € Ý(ÙÜ˜c 3Ó'ˆGÜ‹^ˆØˆŒØˆŒØˆŒ	ØˆŒÜ#ˆŒØˆŒØŸ™ˆŒØˆV×Ñ˜s 2 a¨Ð5EÈsÔSˆØ"$ˆ�‰�‰ÔØ"#ˆ�‰�‰ÔØ&*ˆ�‰�‰Ô#ØˆV×Ñ˜q  B qÐ3FÐPSÔTˆØ"$ˆ�‰�‰ÔØ"#ˆ�‰�‰ÔØ'(¨ eˆ�‰�‰Ô#Ø(*ˆ�‰×ÑÔ%Ø*1ˆ�‰×ÑÔ'Ø),ˆ�‰×ÑÔ&Ø%(ˆ�‰×ÑÔ"Ø"#ˆ�‰×ÑÔØ"$ˆ�‰×ÑÔØ%0ˆ�‰Ô"Ø(0ˆ�‰Ô%Ø!"ˆ�‰ÔØ(*ˆ�‰×ÑÔ%Ü›ˆŒØ&,§k¡k°6×3CÑ3CÐ%Dˆ�‰Ô"Ø$.ˆ�‰Ô!Ø�‰�B�vÔØˆrC   c                 óF  — | j                   | j                  }}|r||_        |r||_        |j                  | j                  | j
                  | j                  «       |j                  | j                  «       |j                  d«      }|| j
                  | j                  z   kD  s|| j
                  k  r| j
                  }n|}|j                  | j                  || j                  «       |j                  | j                  «       | j                  }t        |t        «      �r.|j                  dk(  r‡|j                  r{t!        t#        |j                  |j$                  g|j                  z   «      «      }g }t'        t)        |«      dz
  «      D ]  }|j+                  ||dz      ||   z
  «       Œ! ||_        �n#|j                  dk(  �r|j                  �rt!        t#        |j                  |j$                  g|j                  z   «      «      }	g }t'        t)        |	«      dz
  «      D ]  }|j+                  |	|dz      |	|   z
  «       Œ! ||_        �n‹t        |t.        «      �rz| j                  |j0                  _        | j
                  |j0                  _        | j                  |j0                  _
        | j                  |j0                  _        | j                  |j2                  _        | j
                  |j2                  _        | j                  |j2                  _
        | j                  |j2                  _        |j0                  j                  dk(  r�|j                  r„t!        t#        |j                  |j$                  g|j                  z   «      «      }g }t'        t)        |«      dz
  «      D ]  }|j+                  ||dz      ||   z
  «       Œ! ||j0                  _        n¨|j0                  j                  dk(  r�|j                  rƒt!        t#        |j                  |j$                  g|j                  z   «      «      }	g }t'        t)        |	«      dz
  «      D ]  }|j+                  |	|dz      |	|   z
  «       Œ! ||j0                  _        |j2                  j                  dk(  r�|j                  r„t!        t#        |j                  |j$                  g|j                  z   «      «      }g }t'        t)        |«      dz
  «      D ]  }|j+                  ||dz      ||   z
  «       Œ! ||j2                  _        n¨|j2                  j                  dk(  r�|j                  rƒt!        t#        |j                  |j$                  g|j                  z   «      «      }	g }t'        t)        |	«      dz
  «      D ]  }|j+                  |	|dz      |	|   z
  «       Œ! ||j2                  _        | j5                  «        | j                  | j                  | j6                  }}}
|r|dk7  r|dd|ddf_        n
t;        «       }|j=                  | j?                  «       «       |j=                  | j                   «       |j=                  | j                  «       |j=                  | jA                  «       «       |S )Nr   rT   r   r”  )!r‚   rƒ   r  r  r§   r¨   r©   r  r„   rº   rª   r‘  r¼   r   r–  Ú_tickValuesrµ   r¶   Ú	_valueMinrè   r²   r¹   Ú
deltaStepsr   Úgrid0Úgrid1rÌ   r’  Ú	transformr	   rp   r  r  )rN   ÚxvaÚyvar$  r¨   ÚbackÚxposÚstepsr_  Úyposrª   r©   r’  rY   s                 rD   r#  zGridLinePlot.draw  sû  € Ø—?‘? D§O¡OˆSˆÙ˜s�”Ù˜s�”à�‰˜Ÿ™ §¡¨¯©Ô4Ø�‰�d—i‘iÔ ð Ÿ™ 1›ˆØ˜dŸf™f t§{¡{Ñ2Ò2¸ÈÏÉÒ8OØ—‘‰AàˆAà�‰˜Ÿ™  4§:¡:Ô.Ø�‰�d—i‘iÔ à�‰ˆÜ�dœDÕ!Ø×Ñ :Ò-°#·/²/ÜœC §	¡	¨C¯M©M¨?¸S¿_¹_Ñ+LÓMÓN�Ø�Üœs 4›y¨™{Ó+ò 6�AØ—L‘L  a¨¡c¡¨T°!©WÑ!4Õ5ð6à"'�–Ø×!Ñ! \Ó1°c·o³oÜœC §	¡	¨C¯M©M¨?¸S¿_¹_Ñ+LÓMÓN�Ø�Üœs 4›y¨™{Ó+ò 6�AØ—L‘L  a¨¡c¡¨T°!©WÑ!4Õ5ð6à"'�–Ü˜œjÕ)àŸ6™6ˆD�J‰JŒLØŸ6™6ˆD�J‰JŒLØ#Ÿz™zˆD�J‰JÔØ $§¡ˆD�J‰JÔØŸ6™6ˆD�J‰JŒLØŸ6™6ˆD�J‰JŒLØ#Ÿz™zˆD�J‰JÔØ $§¡ˆD�J‰JÔð �z‰z×%Ñ%¨Ò3¸¿ºÜœC §	¡	¨C¯M©M¨?¸S¿_¹_Ñ+LÓMÓN�Ø�Üœs 4›y¨™{Ó+ò 6�AØ—L‘L  a¨¡c¡¨T°!©WÑ!4Õ5ð6à(-�—
‘
Õ%Ø—‘×'Ñ'¨<Ò7¸C¿OºOÜœC §	¡	¨C¯M©M¨?¸S¿_¹_Ñ+LÓMÓN�Ø�Üœs 4›y¨™{Ó+ò 6�AØ—L‘L  a¨¡c¡¨T°!©WÑ!4Õ5ð6à(-�—
‘
Ô%Ø�z‰z×%Ñ%¨Ò3¸¿ºÜœC §	¡	¨C¯M©M¨?¸S¿_¹_Ñ+LÓMÓN�Ø�Üœs 4›y¨™{Ó+ò 6�AØ—L‘L  a¨¡c¡¨T°!©WÑ!4Õ5ð6à(-�—
‘
Õ%Ø—‘×'Ñ'¨<Ò7¸C¿OºOÜœC §	¡	¨C¯M©M¨?¸S¿_¹_Ñ+LÓMÓN�Ø�Üœs 4›y¨™{Ó+ò 6�AØ—L‘L  a¨¡c¡¨T°!©WÑ!4Õ5ð6à(-�—
‘
Ô%à×ÑÔà%)§Z¡Z°·±¸d×>NÑ>N�{ˆvˆÙ˜;¨š>à&¨¨1¨k¸!¸AÐ>ˆA�Kä“ˆAà	�‰ˆd×!Ñ!Ó#Ô$Ø	�‰ˆd�o‰oÔØ	�‰ˆd�o‰oÔØ	�‰ˆd�n‰nÓÔàˆrC   rH   )r5   r6   r7   rq   r8   rz   r9   r@   rA   rm   r°   r#  rB   rC   rD   r�  r�  Ó  s<   „ ññ ˜HÙ! $Ð-bÔcÙ" >Ð8`Ôaô
€Hò
	3ó"óHTrC   r�  c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚAreaLinePlotz@we're given data in the form [(X1,Y11,..Y1M)....(Xn,Yn1,...YnM)]c                 ó\   — t         j                  | «       d| _        d| _        g d¢| _        y )Nr   ))r   é   rš  rœ  )r)   é   r    é   )r‹   rÅ  éF   é(   )rz   rm   r—   r|   r„   r˜   s    rD   rm   zAreaLinePlot.__init__i  s&   € Ü×Ñ˜$ÔØˆŒØ !ˆÔÚ=ˆ�	rC   c                 óŽ  — 	 | j                   }t        |«      }t        |d   «      }|dgz  }g | _         t        d|«      D ]\  }g }t        |«      D ]/  }||   ||   |   z   ||<   |j                  ||   d   ||   f«       Œ1 | j                   j                  |«       Œ^ t        j                  | «      || _         S # | _         w xY w)Nr   r   )r„   r²   rè   r¹   rz   r#  )rN   ÚodatarÈ   ÚmÚSr_  ÚDr	  s           rD   r#  zAreaLinePlot.drawo  sÍ   € ð	Ø—I‘IˆEÜ�E“
ˆAÜ�E˜!‘H“ˆAØ�1�#‘ˆAØˆDŒIÜ˜1˜Q“Zò $�Ø�Ü˜q›ò 1�AØ˜Q™4 %¨¡(¨1¡+Ñ-�A�a‘DØ—H‘H˜e A™h q™k¨!¨A©$Ð/Õ0ð1ð —	‘	× Ñ  Õ#ð$ô —=‘= Ó&àˆD�Iø˜ˆD�Iús   ‚B1B; Â;	CN)r5   r6   r7   rq   rm   r#  rB   rC   rD   rÁ  rÁ  g  s   „ ÙJò>órC   rÁ  c                   ó   — e Zd Zd„ Zy)ÚSplitLinePlotc                 óî  — t         j                  | «       t        «       | _        t	        «       | _        g d¢| _        d | j
                  _        d| j
                  _        d| j
                  _	        d| j
                  _
        t        j                  d«      | j                  d   _        t        j                  d«      | j                  d   _        t        j                  d«      | j                  d   _        y )N)È)i‰¤1çffffffî?çš™™™™™©?ç        )ií¤1rÐ  rÑ  rÒ  )iQ¥1rÐ  rÑ  rÒ  )iµ¥1rÐ  rÑ  rÒ  )i¦1rÐ  rÑ  rÒ  )i}¦1rÐ  rÑ  rÒ  )iá¦1rÐ  rÑ  rÒ  )i¥É1rÐ  rÑ  rÒ  )i	Ê1rÐ  rÑ  rÒ  )imÊ1rÐ  rÑ  rÒ  )iÑÊ1rÐ  rÑ  rÒ  )i5Ë1rÐ  rÑ  rÒ  )i™Ë1rÐ  rÑ  rÒ  )iýË1rÐ  rÑ  rÒ  )iaÌ1rÐ  rÑ  rÒ  )iÅÌ1rÐ  rÑ  rÒ  )i)Í1rÐ  rÑ  rÒ  )i�Í1rÐ  rÑ  rÒ  )iñÍ1rÐ  rÑ  rÒ  )iµð1rÐ  rÑ  rÒ  )iñ1rÐ  rÑ  rÒ  )i}ñ1rÐ  rÑ  rÒ  )iáñ1rÐ  rÑ  rÒ  )iEò1rÐ  rÑ  rÒ  )i©ò1rÐ  rÑ  rÒ  )ió1rÐ  rÑ  rÒ  )iqó1rÐ  rÑ  rÒ  )iÕó1rÐ  rÑ  rÒ  )i9ô1rÐ  rÑ  rÒ  )i�ô1rÐ  rÑ  rÒ  )iõ1rÐ  rÑ  rÒ  )iÅ2rÐ  rÑ  rÒ  )i)2rÐ  rÑ  rÒ  )i�2rÐ  rÑ  rÒ  )iñ2rÐ  rÑ  rÒ  )iU2rÐ  rÑ  rÒ  )i¹2rÐ  rÑ  rÒ  )i2rÐ  rÑ  rÒ  )i�2rÐ  rÑ  rÒ  )iå2rÐ  rÑ  rÒ  )iI2rÐ  rÑ  rÒ  )i­2rÐ  rÑ  rÒ  )i2rÐ  rÑ  rÒ  )iÕ>2rÐ  rÑ  rÒ  )i9?2rÐ  rÑ  rÒ  )i�?2rÐ  rÑ  rÒ  )i@2rÐ  rÑ  rÒ  )ie@2rÐ  rÑ  rÒ  )iÉ@2rÐ  rÑ  rÒ  )i-A2rÐ  rÑ  rÒ  )i‘A2rÐ  rÑ  rÒ  )iõA2rÐ  rÑ  rÒ  )iYB2rÐ  rÑ  rÒ  )i½B2rÐ  rÑ  rÒ  )i!C2rÐ  rÑ  rÒ  )iåe2rÐ  rÑ  rÒ  )iIf2rÐ  rÑ  rÒ  )i­f2rÐ  rÑ  rÒ  )ig2rÐ  rÑ  rÒ  )iug2rÐ  rÑ  rÒ  )iÙg2rÐ  rÑ  rÒ  )i=h2rÐ  rÑ  rÒ  )i¡h2rÐ  rÑ  rÒ  )ii2rÐ  rÑ  rÒ  )iii2rÐ  rÑ  rÒ  )iÍi2rÐ  rÑ  rÒ  )i1j2rÐ  rÑ  rÒ  )iõŒ2rÐ  rÑ  rÒ  )iY�2ç…ëQ¸í?ç
×£p=
·?rÒ  )i½�2rÓ  rÔ  rÒ  )i!Ž2rÓ  rÔ  rÒ  )i…Ž2rÓ  rÔ  rÒ  )iéŽ2rÓ  rÔ  rÒ  )iM�2rÓ  rÔ  rÒ  )i±�2rÓ  rÔ  rÒ  )i�2rÓ  rÔ  rÒ  )iy�2rÓ  rÔ  rÒ  )iÝ�2rÓ  rÔ  rÒ  )iA‘2rÓ  rÔ  rÒ  )i´2rÓ  rÔ  rÒ  )ii´2çìQ¸…ëé?çR¸…ëQÈ?rÒ  )iÍ´2rÕ  rÖ  rÒ  )i1µ2rÕ  rÖ  rÒ  )i•µ2rÕ  rÖ  rÒ  )iùµ2rÕ  rÖ  rÒ  )i]¶2rÕ  rÖ  rÒ  )iÁ¶2rÕ  rÖ  rÒ  )i%·2rÕ  rÖ  rÒ  )i‰·2rÕ  rÖ  rÒ  )ií·2rÕ  rÖ  rÒ  )iQ¸2rÕ  rÖ  rÒ  )iÛ2rÕ  rÖ  rÒ  )iyÛ2ç
×£p=
ç?çìQ¸…ëÑ?rÒ  )iÝÛ2r×  rØ  rÒ  )iAÜ2r×  rØ  rÒ  )i¥Ü2r×  rØ  rÒ  )i	Ý2r×  rØ  rÒ  )imÝ2r×  rØ  rÒ  )iÑÝ2r×  rØ  rÒ  )i5Þ2r×  rØ  rÒ  )i™Þ2r×  rØ  rÒ  )iýÞ2r×  rØ  rÒ  )iaß2r×  rØ  rÒ  )i%3r×  rØ  rÒ  )i‰3çö(\�Âõà?ç®GázÞ?rÒ  )ií3rÙ  rÚ  rÒ  )iQ3rÙ  rÚ  rÒ  )iµ3rÙ  rÚ  rÒ  )i3rÙ  rÚ  rÒ  )i}3rÙ  rÚ  rÒ  )iá3rÙ  rÚ  rÒ  )iE3rÙ  rÚ  rÒ  )i©3rÙ  rÚ  rÒ  )i3rÙ  rÚ  rÒ  )iq3rÙ  rÚ  rÒ  )i5)3rÙ  rÚ  rÒ  )i™)3ç)\�Âõ(Ü?çìQ¸…ëá?rÒ  )iý)3rÛ  rÜ  rÒ  )ia*3rÛ  rÜ  rÒ  )iÅ*3rÛ  rÜ  rÒ  )i)+3rÛ  rÜ  rÒ  )i�+3rÛ  rÜ  rÒ  )iñ+3rÛ  rÜ  rÒ  )iU,3rÛ  rÜ  rÒ  )i¹,3rÛ  rÜ  rÒ  )i-3rÛ  rÜ  rÒ  )i�-3rÛ  rÜ  rÒ  )iEP3rÛ  rÜ  rÒ  )i©P3ç
×£p=
×?râ   çìQ¸…ëÁ?)iQ3rÝ  râ   rÞ  )iqQ3rÝ  râ   rÞ  )iÕQ3rÝ  râ   rÞ  )i9R3rÝ  râ   rÞ  )i�R3rÝ  râ   rÞ  )iS3rÝ  râ   rÞ  )ieS3rÝ  râ   rÞ  )iÉS3rÝ  râ   rÞ  )i-T3rÝ  râ   rÞ  )i‘T3rÝ  râ   rÞ  )iUw3rÝ  râ   rÞ  )i¹w3ç333333Ó?ç=
×£p=Ú?ç�Âõ(\�Ò?)ix3rß  rà  rá  )i�x3rß  rà  rá  )iåx3rß  rà  rá  )iIy3rß  rà  rá  )i­y3rß  rà  rá  )iz3rß  rà  rá  )iuz3rß  rà  rá  )iÙz3rß  rà  rá  )i={3rß  rà  rá  )i¡{3rß  rà  rá  )iež3rß  rà  rá  )iÉž3ç¤p=
×£Ð?rÝ  çR¸…ëQØ?)i-Ÿ3râ  rÝ  rã  )i‘Ÿ3râ  rÝ  rã  )iõŸ3râ  rÝ  rã  )iY 3râ  rÝ  rã  )i½ 3râ  rÝ  rã  )i!¡3râ  rÝ  rã  )i…¡3râ  rÝ  rã  )ié¡3râ  rÝ  rã  )iM¢3râ  rÝ  rã  )i±¢3râ  rÝ  rã  )iuÅ3râ  rÝ  rã  )iÙÅ3çš™™™™™É?rß  râ   )i=Æ3rä  rß  râ   )i¡Æ3rä  rß  râ   )iÇ3rä  rß  râ   )iiÇ3rä  rß  râ   )iÍÇ3rä  rß  râ   )i1È3rä  rß  râ   )i•È3rä  rß  râ   )iùÈ3rä  rß  râ   )i]É3rä  rß  râ   )iÁÉ3rä  rß  râ   )i…ì3rä  rß  râ   )iéì3ç¤p=
×£À?ç®Gáz®×?râ   )iMí3rå  ræ  râ   )i±í3rå  ræ  râ   )iî3rå  ræ  râ   )iyî3rå  ræ  râ   )iÝî3rå  ræ  râ   )iAï3rå  ræ  râ   )i¥ï3rå  ræ  râ   )i	ð3rå  ræ  râ   )imð3rå  ræ  râ   )iÑð3rå  ræ  râ   )i•4rå  ræ  râ   )iù4ro   çš™™™™™Ù?râ   )i]4ro   rç  râ   )iÁ4ro   rç  râ   )i%4ro   rç  râ   )i‰4ro   rç  râ   )ií4ro   rç  râ   )iQ4ro   rç  râ   )iµ4ro   rç  râ   )i4ro   rç  râ   )i}4ro   rç  râ   )iá4ro   rç  râ   )i¥:4ro   rç  râ   r   iÌ3  iÿÃ™ r   i3 Ì r)   )rÁ  rm   r   r‚   r   rƒ   r„   ÚrequiredRangeÚleftAxisPercentÚleftAxisOrigShiftMinÚleftAxisOrigShiftIPCr   ÚtoColorr�   r+   r˜   s    rD   rm   zSplitLinePlot.__init__�  s©   € Ü×Ñ˜dÔ#Ü.Ó0ˆŒÜ'›/ˆŒò xMˆŒ	Ø(,ˆ�‰Ô%Ø*+ˆ�‰Ô'Ø/0ˆ�‰Ô,Ø/0ˆ�‰Ô,Ü$*§N¡N°8Ó$<ˆ�
‰
�1‰Ô!Ü$*§N¡N°8Ó$<ˆ�
‰
�1‰Ô!Ü$*§N¡N°8Ó$<ˆ�
‰
�1‰Õ!rC   N)r5   r6   r7   rm   rB   rC   rD   rÎ  rÎ  €  s   „ ó=rC   rÎ  c           	      óÀ   — t        | t        t        f«      s| f} | D �cg c]  }|sŒ|‘Œ	 } }| xr' t        t        t	        t
        ||fd„| «      «      «      xs dS c c}w )z0return max stringWidth for the list of strings Tc                 ó   —  || ||«      S rH   rB   )ÚtÚsWÚfNÚfSs       rD   ú<lambda>z_maxWidth.<locals>.<lambda>’  s   € ÑPRÐSTÐUWÐXZÓP[€ rC   r   )r¼   Útuplerµ   r´   r¶   r   )ÚTÚfontNamer¥  Ú_fs       rD   Ú	_maxWidthrø  Ž  sZ   € ä�aœœt˜Ô%¨A¨4 qØÖ�š2ŠÐ€AÐØÒ`””Tœ#¬+¸ÀhÒ[Ð\]Ó^Ó_Ó`ÒeÐdeÐeùò 	s
   žA¦Ac            
       óž  — e Zd ZdZ ed+i de“d eed¬«      “d eed¬«      “d eed	¬«      “d
 ee	d¬«      “d eedd¬«      “d eed¬«      “d eed¬«      “d ee
d¬«      “d ee
d¬«      “d eed¬«      “d ee	d¬«      “d ee	d¬«      “d eed¬«      “d  eed!¬«      “d" eed#¬«      “d$ eed%¬«      “ŽZd&„ Zd'„ Zd,d)„Zd*„ Zy()-ÚScatterPlotzA scatter plot widgetrS   rª   z!Width of the area inside the axesr"   r©   z"Height of the area inside the axesÚouterBorderOnz/Is there an outer border (continuation of axes)ÚouterBorderColorzColor of outer border (if any)ÚlabelOffsetz.Space between label and Axis (or other labels)r   r$   ÚaxisTickLengthszLenth of the ticks on both axesÚaxisStrokeWidthzStroke width for both axesÚxLabelzLabel for the whole X-AxisÚyLabelzLabel for the whole Y-Axisr„   z#Data points - a list of x/y tuples.r+   z#Color used for border of plot area.r-   r{   ÚleftPaddingzPadding on left of drawingÚrightPaddingzPadding on right of drawingÚ
topPaddingzPadding at top of drawingÚbottomPaddingzPadding at bottom of drawingc                 óN  — t         j                  | «       d| _        d| _        d| _        t
        j                  | _        d | _        d}d}d}d | j                  _
        d | j                  _        d | j                  _        d| j                  _        d| _        d	| j                  j                   _        d
| _        d	| j                  j                   _        g d¢| _        d| _        d| _        d| _        d| _        d| _        | j*                  |z   |dz  z   | _        | j2                  t5        t7        | j                  j                  «      | j                  j                   j8                  | j                  j                   j"                  «      z   | _        | j0                  |z   |z   | j                  j                   j"                  z   | _        | | j                  j                   _        || j                  _        || j                  _         d| j                  _!        | | j                  j                   _"        || j                  _#        || j                  _         d| j                  _!        d| _$        d| jJ                  _        d| jJ                  _&        d| jJ                  _"        d| _'        tQ        dd¬«      | jR                  _*        tQ        dd¬«      | jR                  d   _*        tQ        dd¬«      | jR                  d   _*        t
        jV                  | jR                  d   _,        y )NéŽ   éM   r   r‹   r)   râ   z%szX Labler’   zY Lable)))g¸…ëQ¸ž?g=
×£p]O@)g‹lçû©ñ²?gX9´Èv.K@)gÛù~j¼tó?gX9´Èö1@))gÃõ(\�Âõ?gË¡E¶ó='@)gþÔxé&1ö?gÅ °rhI@)g+‡Ùö?g¢E¶óý<Q@))g´Èv¾Ÿ÷?gF¶óýÔ¸U@)gªñÒMbü?g
×£p=ÊA@)g¨ÆK7‰Aü?gfffffB@r   r�   r“   r  z%.2fÚeéþÿÿÿr¤   )rî   r¥   ÚFilledSquare)-rz   rm   rª   r©   rû  r   r«   rü  r‘  rƒ   r¬   r­   r®   r¬  r   r‚   r¤  r¥  r  r„   r”   r  r  r  r  r§   rø  rÑ   rö  r¨   rª  ÚtickDownr*   Ú
rangeRoundr©  r­  r   r~   r§  r}   r   r�   r.   Úgreenr+   )rN   Ú_labelOffsetÚ_axisTickLengthsÚ_axisStrokeWidths       rD   rm   zScatterPlot.__init__ª  sq  € Ü×Ñ˜$ÔØˆŒ
ØˆŒØˆÔÜ &§¡ˆÔØˆŒàˆØÐØÐà#'ˆ�‰Ô Ø#'ˆ�‰Ô Ø$(ˆ�‰Ô!Ø+/ˆ�‰Ô'àˆŒØ*+ˆ�‰×ÑÔ'àˆŒØ*+ˆ�‰×ÑÔ'ò
&ˆŒ	ð ˆÔàˆÔØˆÔØˆŒØˆÔà×!Ñ!Ð"2Ñ2°LÀ±NÑCˆŒØ�v‰v”i¤ D§O¡O×$<Ñ$<Ó =¸t¿¹×?UÑ?U×?^Ñ?^Ð`d×`oÑ`o×`vÑ`v×`Ñ`ó  Añ  AˆŒØ×#Ñ#Ð$4Ñ4°\ÑAÀ$Ç/Á/×BXÑBX×BaÑBaÑaˆŒà%1 Mˆ�‰×ÑÔ!Ø#3ˆ�‰Ô Ø&6ˆ�‰Ô#Ø#)ˆ�‰Ô"Ø%1 Mˆ�‰×ÑÔ!Ø#3ˆ�‰Ô Ø&6ˆ�‰Ô#Ø#)ˆ�‰Ô"à#ˆÔØ#$ˆ�‰Ô Ø$'ˆ�‰Ô!Ø)+ˆ�‰ÔØˆÔÜ$ ^¸Ô;ˆ�
‰
ÔÜ'¨¸QÔ?ˆ�
‰
�1‰ÔÜ'¨¸AÔ>ˆ�
‰
�1‰ÔÜ$*§L¡Lˆ�
‰
�1‰Õ!rC   c                 ó  — | j                   | j                  j                  z   | j                  j                  j                  dz  z   | j
                  j                  j                  z   }|dt        t        | j                  j                  «      | j                  j                  j                  | j                  j                  j                  «      z  z   }|| j                  z   | j                  z   }d| j
                  j                  z  }|t        || j                  j                  j                  | j                  j                  j                  «      z   }| j                  | j
                  j                  z   | j
                  j                  j                  dz  z   | j
                  j                  j                  dz  z   }|| j                  j                  j                  z   | j                   z   | j"                  z   }||fS )Nr)   r�   z%.2f%%)r  rƒ   r­  r¤  r©  r‚   r¥  rø  rÑ   r­   rö  rª   r  r  r  rª  r©   r  )rN   Útxrï  Útys       rD   Ú_getDrawingDimensionsz!ScatterPlot._getDrawingDimensionsì  s€  € Ø×Ñ˜dŸo™o×6Ñ6Ñ6¸¿¹×8NÑ8N×8QÑ8QÐRSÑ8SÑTÐUY×UdÑUd×UkÑUk×UtÑUtÑtˆØˆq”œ3˜tŸ™×7Ñ7Ó8¸$¿/¹/×:PÑ:P×:YÑ:YÐ[_×[jÑ[j×[qÑ[q×[zÑ[zÓ{Ñ{Ñ|ˆØˆd�j‰j‰=˜×*Ñ*Ñ*ˆØ�D—O‘O×,Ñ,Ñ,ˆØŒy˜˜DŸO™O×2Ñ2×;Ñ;¸T¿_¹_×=SÑ=S×=\Ñ=\Ó]Ñ^ˆØ×Ñ §¡× 8Ñ 8Ñ8¸$¿/¹/×:PÑ:P×:SÑ:SÐTUÑ:UÑVÐX\×XgÑXg×XnÑXn×XwÑXwÐxyÑXyÑzˆØˆd�o‰o×$Ñ$×-Ñ-Ñ-¨d¯k©kÑ9¸$¿/¹/ÑIˆà�2ˆwˆrC   Nc                 ó†   — |s| j                  «       \  }}t        ||«      }|j                  | j                  «       «       |S rH   )r  r   rp   r#  )rN   r¯   r  r  s       rD   r°   zScatterPlot.demo÷  s9   € ÙØ×,Ñ,Ó.‰EˆBˆrÜ˜b “nˆGØ�‰�D—I‘I“KÔ ØˆrC   c                 óî  — t        | j                  j                  j                  «      j                  j
                  }|dk(  rd}|| j                  j                  j                  z  }t        j                  | «      }| j                  }|ržt        «       }| j                  | j                  z   dz  |_        d|_        | j                  j                  j                  |_        | j                  j                  j                  |_        |j                  |«       |j                  |«       | j                   }|r¥t        «       }d|_        d|_        | j                  | j$                  dz  z   |_        | j&                  j                  j                  |_        | j&                  j                  j                  |_        |j                  |«       |j                  |«       | j(                  rg|j                  t+        | j                  | j                  | j                  | j$                  | j,                  | j&                  j.                  d ¬«      «       |j1                  | j2                  | j4                  «       |S )Nr   g`åÐ"Ûùæ?g       @éZ   )r+   r*   r-   )r   r‚   r¤  rö  ÚfaceÚascentr¥  rz   r#  r   r   r§   rª   r¨   rÕ   rp   r  r¨  r©   rƒ   rû  r
   rü  r*   Úshiftr  r  )rN   r  rX   r   Úxlr  Úyls          rD   r#  zScatterPlot.drawþ  sÄ  € Ü�t—‘×-Ñ-×6Ñ6Ó7×<Ñ<×CÑCˆØ�1Š9ØˆFØ�d—o‘o×,Ñ,×5Ñ5Ñ5ˆô �]‰]˜4Ó ˆà—‘ˆÙÜ‹wˆBØ—F‘F˜4Ÿ:™:Ñ% sÑ*ˆBŒDØˆBŒDØŸ/™/×0Ñ0×9Ñ9ˆBŒKØŸ/™/×0Ñ0×9Ñ9ˆBŒKØ�J‰J�vÔØ�F‰F�2ŒJà—‘ˆÙÜ‹wˆBØˆBŒHØˆBŒDØ—F‘F˜4Ÿ;™; s™?Ñ*ˆBŒDØŸ/™/×0Ñ0×9Ñ9ˆBŒKØŸ/™/×0Ñ0×9Ñ9ˆBŒKØ�J‰J�vÔØ�F‰F�2ŒJð ×ÒØ�F‰F”4˜Ÿ™ §¡¨¯
©
°D·K±KØ%)×%:Ñ%:Ø%)§_¡_×%@Ñ%@Ø#'ô)ô *ð
 	�‰�×!Ñ! 4×#5Ñ#5Ô6àˆ	rC   rB   rH   )r5   r6   r7   rq   r8   rz   r9   r:   r_   r;   ÚisStringÚ
isAnythingrA   rm   r  r°   r#  rB   rC   rD   rú  rú  ”  sK  „ Ùáò ™Hð Ù(¨Ð8[Õ\ðá)¨(Ð9]Õ^ðñ %1°ÐArÕ$sðñ (4°MÐHhÕ'ið	ñ
 #/¨xÐ>nÐ}~Õ"ðñ '3°8ÐBcÕ&dðñ '3°8ÐB^Õ&_ðñ *¨(Ð9UÕVðñ *¨(Ð9UÕVðñ (¨
Ð9^Õ_ðñ #/¨}ÐChÕ"iðñ !-¨]ÐAsÕ tðñ #/¨xÐ>ZÕ"[ðñ $0°Ð?\Õ#]ðñ ".¨hÐ=XÕ!Yðñ  %1°Ð@^Õ$_ð!€Hò&@1òD	óó'rC   rú  c                  ó*  — t        dd«      } ddg}t        «       }d|_        d|_        d|_        d|_        ||_        d|_        t        j                  |_
        t        d	«      |j                  _        d
|j                  d   _        d|j                  d   _        d|j                  _        d|j                  _        d|j                  _        d|j&                  _        d|j&                  _        d|j&                  _        | j)                  |«       | S )ú2A line plot with non-equidistant points in x-axis.r�   rž   r‰   rŸ   r    r¡   r¢   r   ÚUK_Flagr)   r   rŒ   r�   r¦   )r   rz   r§   r¨   r©   rª   r„   r”   r   r«   r+   r   r�   r.   r*   r‚   r¬   r­   r®   rƒ   rp   ©r¯   r„   rX   s      rD   Úsample1ar$  '  så   € ô �c˜3Ó€Gð 2Ø3ð
€Dô
 
‹€Bà€B„DØ€B„DØ€B„IØ€B„HØ€B„GØ€B„NÜ—\‘\€B„Nä  Ó+€B‡H�H„Oà€B‡H�HˆQ�KÔØ€B‡H�HˆQ�KÔà€B‡M�MÔØ€B‡M�MÔØ€B‡M�MÔà€B‡M�MÔØ€B‡M�MÔØ€B‡M�MÔà‡K�K�„Oà€NrC   c                  ó  — t        dd«      } ddg}t        «       }d|_        d|_        d|_        d|_        ||_        d|_        t        d	«      |j                  _
        d
|_        t        j                  |_        d|j                  _        d|j                  _        g d¢|j                  _        d|j                  _        d|j(                  _        d|j(                  _        d|j(                  _        | j-                  |«       | S )r!  r�   rž   r‰   rŸ   r    r¡   r¢   r   ÚCircler£   r   r�   ©r   r)   rŠ   r‹   rŒ   r�   ú%2.1fr¦   )r   rz   r§   r¨   r©   rª   r„   r”   r   r�   r.   r   r   r«   r+   r‚   r¬   r­   Ú
valueStepsr¬  rƒ   r®   rp   r#  s      rD   Úsample1br*  M  sÙ   € ô �c˜3Ó€Gð 2Ø3ð
€Dô
 
‹€Bà€B„DØ€B„DØ€B„IØ€B„HØ€B„GØ€B„NÜ  Ó*€B‡H�H„OØ €BÔÜ—\‘\€B„Nà€B‡M�MÔØ€B‡M�MÔÚ3€B‡M�MÔØ$+€B‡M�MÔ!à€B‡M�MÔØ€B‡M�MÔØ€B‡M�MÔà‡K�K�„Oà€NrC   c                  óR  — t        dd«      } ddg}t        «       }d|_        d|_        d|_        d|_        ||_        d|_        t        d	«      |j                  d
   _
        t        d«      |j                  d   _
        d|_        t        j                  |_        d
|j                  _        d|j                  _        g d¢|j                  _        d|j                  _        d
|j(                  _        d|j(                  _        g d¢|j(                  _        | j+                  |«       | S )r!  r�   rž   r‰   rŸ   r    r¡   r¢   r   r¤   r   r&  r£   r�   r'  r(  r¦   )r   r)   r‹   r�   r’   )r   rz   r§   r¨   r©   rª   r„   r”   r   r�   r.   r   r   r«   r+   r‚   r¬   r­   r)  r¬  rƒ   rp   r#  s      rD   Úsample1cr,  q  só   € ô �c˜3Ó€Gð 2Ø3ð
€Dô
 
‹€Bà€B„DØ€B„DØ€B„IØ€B„HØ€B„GØ€B„NÜ# NÓ3€B‡H�HˆQ�KÔÜ# HÓ-€B‡H�HˆQ�KÔØ €BÔÜ—\‘\€B„Nà€B‡M�MÔØ€B‡M�MÔÚ3€B‡M�MÔØ$+€B‡M�MÔ!à€B‡M�MÔØ€B‡M�MÔÚ.€B‡M�MÔà‡K�K�„Oà€NrC   c                 óT   — | D �cg c]  }t        |d   «      |d   dz  f‘Œ c}S c c}w )z=Convert date strings into seconds and multiply values by 100.r   r   rš  )Ústr2seconds)Úseriesr§   s     rD   ÚpreprocessDatar0  –  s.   € ð 4:Ö:¨aŒ[˜˜1™Ó  !¡ S¡Ò)Ò:Ð:ùÒ:s   …%c                  óä  — t        dd«      } dg}t        |d   «      |d<   t        «       }d|_        d|_        d|_        d|_        ||_        d|_        t        d	«      |j                  _        t        j                  |_        t        t!        d
«      «      }t        t!        d«      «      }t        t!        d«      «      }t        t!        d«      «      }t        t!        d«      «      }t        t!        d«      «      }t        t!        d«      «      }	||j"                  _        |	|j"                  _        |||||||	g|j"                  _        t*        |j"                  _        d|j"                  j.                  d   _        d|j"                  j.                  d   _        d|j2                  _        d|j2                  _        d|j2                  _        d|j2                  _        | j7                  |«       | S )r!  r�   rž   ))ú
25/11/1991r   )ú
30/11/1991gea««Òð?)ú
31/12/1991gaÃÓ+eð?)z
31/01/1992gvqà-ð?)z
29/02/1992gÆm4€·@ð?)ú
31/03/1992gÔÀ²yìTð?)z
30/04/1992g­ )É
kð?)z
31/05/1992gcÈŽæø{ð?)ú
30/06/1992gïyë,�ð?)z
31/07/1992gQ è×¦žð?)z
31/08/1992g[B>èÙ¬ð?)ú
30/09/1992gYÎ)�ºð?)z
31/10/1992gñÎ~ý@Ìð?)z
30/11/1992gùÆ30àð?)ú
31/12/1992g`åÐ"Ûùð?r   r    r¡   r¢   r   r¥   r2  r3  r4  r5  r6  r7  r8  iìÿÿÿiÝÿÿÿr)   z%4.2frš  én   )r   r0  rz   r§   r¨   r©   rª   r„   r”   r   r�   r.   r   r«   r+   r¿   rÀ   r‚   r¬   r­   r)  Úseconds2strr¬  r¤  rª  rƒ   r®   rp   )
r¯   r„   rX   r¡  Út0Út1Út2Út3Út4Úends
             rD   Úsample2rA  œ  s’  € ô �c˜3Ó€Gð	ð
€Dô& ˜T !™WÓ%€Dˆ�Gä	‹€Bà€B„DØ€B„DØ€B„IØ€B„HØ€B„GØ€B„NÜ  Ó1€B‡H�H„OÜ—\‘\€B„Nä”;˜|Ó,Ó-€EÜ	”˜LÓ)Ó	*€BÜ	”˜LÓ)Ó	*€BÜ	”˜LÓ)Ó	*€BÜ	”˜LÓ)Ó	*€BÜ	”˜LÓ)Ó	*€BÜ
”˜\Ó*Ó
+€CØ"€B‡M�MÔØ €B‡M�MÔØ % r¨2¨r°2°r¸3Ð?€B‡M�MÔÜ$/€B‡M�MÔ!Ø!$€B‡M�M×Ñ˜ÑÔØ!$€B‡M�M×Ñ˜ÑÔà$+€B‡M�MÔ!Ø €B‡M�MÔØ €B‡M�MÔØ€B‡M�MÔà‡K�K�„Oà€NrC   c                  ód  — t        dd«      } t        «       }| j                  |«       t        |j                  d   d«      |j                  d   g|_        t        t        j                  d«      dd ¬«      |j                  d   _	        d |j                  d   _
        d |j                  d   _
        | S )Nr�   rž   r   r   z#9f9f9f)r-   r*   r+   )r   rŒ  rp   r   r„   rh   r   rì  r�   r0   r+   )ÚdÚcharts     rD   ÚsampleFillPairedDatarE  Ø  s�   € Ü��CÓ€AÜ Ó"€EØ‡E�Eˆ%„LÜ  §¡¨A¡¨qÓ1°%·*±*¸Q±-Ð@€E„JÜ!¬F¯N©N¸9Ó,EÐRSÐ`dÔe€E‡K�K��NÔØ!%€E‡K�K��NÔØ!%€E‡K�K��NÔØ€HrC   N)CÚ__version__rq   r•  r   Úreportlab.lib.validatorsÚreportlab.lib.attrmapÚreportlab.lib.utilsr   r   r1  r   r	   r
   r   r   r   Úreportlab.graphics.widgetbaser   r   r   Ú$reportlab.graphics.charts.textlabelsr   Úreportlab.graphics.charts.axesr   r   r   r   Úreportlab.graphics.charts.utilsÚ"reportlab.graphics.widgets.markersr   r   Ú reportlab.graphics.widgets.gridsr   r   r   Úreportlab.pdfbase.pdfmetricsr   r   Úreportlab.graphics.charts.areasr   Úutilsr   r!   rI   rF   rP   rb   rh   rs   rw   rU  rx   rz   r6  rŽ  rŒ  r�  rÁ  rÎ  rø  rú  r$  r*  r,  r0  rA  rE  rB   rC   rD   ú<module>rS     s@  ðð
 €ØG€å  Ü &Ü #ß .ß ^× ^ß YÑ YÝ 6ß fÓ fÜ -ß Iß LÑ Lß =Ý 4Ý !ô
˜ô 
ô�#ô ô
%ˆ_ô 
%÷ñ ÷:ñ :ô 	�v˜mô 	ô	�˜ô 	õ Côc'Ð ô c'ôJM�ô Mò^ò@ðA?Ð ôB&˜8ô &ôRÐ'ô Rôh�8ô ô2=�Lô =òfôQ�(ô Qòf#òL!òH"òJ;ò:óxrC   