+
    ŒvjÐc  ã                   ó’  € R t Rt^ RIHt ^ RIHt ^ RIHt ^ RI5 ^ RI	5 ^ RI
Ht  ! R R4      t ! R	 R
]]P                  4      t ! R R]4      t/ t ! R R4      t ! R R]4      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 tR  t]R!8X  d
   ]! 4        R"# R"# )#z3.3.0z-Base class for user-defined graphical widgets)Úshapes)Ú	rl_config)Úcolors)Ú*)Úrefc                   ót   a € ] tR t^t o RtRtR t]P                  '       d    R t	R	R lt
R tR
R ltRtV tR# )Ú
PropHolderzBase for property holdersNc                óä  € V P                   eâ   V P                  P                  4        F4  pV^ ,          R8w  g   K  RV: RV : 2pWP                   9   d   K/  Q V4       h	  V P                   P                  4        Fo  w  r4RV: RV : 2p\	        W4      '       g   Q V4       h\        W4      pWSV P                  P                  3pVP                  V4      '       d   Kc  Q RV,          4       h	  R# R# )a   If the _attrMap attribute is not None, this
checks all expected attributes are present; no
unwanted attributes are present; and (if a
checking function is found) checks each
attribute has a valid value.  Either succeeds
or raises an informative exception.
NÚ_zUnexpected attribute z
 found in zMissing attribute z from z-Invalid value %s for attribute %s in class %s)	Ú_attrMapÚ__dict__ÚkeysÚitemsÚhasattrÚgetattrÚ	__class__Ú__name__Úvalidate)ÚselfÚkeyÚmsgÚattrÚ	metavalueÚvalueÚargss   &      Úa/var/www/html/daimler-pipeline/venv/lib/python3.14/site-packages/reportlab/graphics/widgetbase.pyÚverifyÚPropHolder.verify   sÒ   € ð �=‰=Ò$Ø—}‘}×)Ñ)Ö+�Ø�q•6˜S—=ÛCFÊÐM�CØ§-¡-Ö/Ð4°Ó4Ð/ñ ,ð $(§=¡=×#6Ñ#6Ö#8‘��iÛ8<ºdÐC�Ü˜t×*Ò*Ð/¨CÓ/Ð*Ü Ó+�Ø T§^¡^×%<Ñ%<Ð=�Ø ×)Ñ)¨%×0Ô0ÐhÐ2aÐdhÕ2hÓhÐ0ó $9ñ %ó    c                ó   € \        WV4       R# )zGBy default we verify.  This could be off
in some parallel base classes.N©ÚvalidateSetattr©r   Únamer   s   &&&r   Ú__setattr__ÚPropHolder.__setattr__.   s   € ô ˜D eÖ,r   c                óf  € ^ RI Hp / pV P                  P                  4        FŠ  pVR,          R8w  g   K  \	        W4      pV'       da   V! V4      '       dS   VP                  VR7      pVP                  4        F*  w  rxV^ ,          R8X  d   WƒV: V: 2&   K  WƒV: RV: 2&   K,  	  K†  WSV&   KŒ  	  V# )a"  Returns a list of all properties which can be edited and
which are not marked as private. This may include 'child
widgets' or 'primitive shapes'.  You are free to override
this and provide alternative implementations; the default
one simply returns everything without a leading underscore.
)ÚisValidChild:é    é   Nr
   ©ÚrecurÚ[Ú.)Úreportlab.lib.validatorsr'   r   r   r   ÚgetPropertiesr   )	r   r+   r'   Úpropsr#   Ú	componentÚ
childPropsÚchildKeyÚ
childValues	   &&       r   r/   ÚPropHolder.getProperties4   sª   € õ 	:ð
 ˆØ—M‘M×&Ñ&Ö(ˆDØ�C�y˜CÖÜ# DÓ/�	ç™\¨)×4Ò4à!*×!8Ñ!8¸uÐ!8Ó!E�JØ0:×0@Ñ0@Ö0BÑ,˜ð $ A�;¨#Ô-Ø?IªD²(Ð";Ó<à@J«T²8Ð"<Ó=ó 1Cð #,˜$“Kñ! )ð$ ˆr   c                óT  € / pVP                  4        FE  w  r4VP                  R^4      p\        V4      ^8X  d   \        WV4       K5  Vw  rg WBV,          V&   KG  	  VP                  4        F!  w  rh\        W4      p	V	P                  V4       K#  	  R#   \         d
    Yt/Y&&    K“  i ; i)aM  Permits bulk setting of properties.  These may include
child objects e.g. "chart.legend.width = 200".

All assignments will be validated by the object as if they
were set individually in python code.

All properties of a top-level object are guaranteed to be
set before any of the children, which may be helpful to
widget designers.
r-   N)r   ÚsplitÚlenÚsetattrÚKeyErrorr   ÚsetProperties)
r   ÚpropDictÚchildPropDictsr#   r   ÚpartsÚ	childNameÚremainsÚchildPropDictÚchilds
   &&        r   r;   ÚPropHolder.setPropertiesW   sª   € ð ˆØ#Ÿ>™>Ö+‰KˆDØ—J‘J˜s AÓ&ˆEÜ�5‹z˜QŒä˜ EÖ*à',Ñ$�ðAØ9> 9Õ-¨gÓ6ñ ,ð )7×(<Ñ(<Ö(>Ñ$ˆIÜ˜DÓ,ˆEØ×Ñ Ö.ó )?øô	  ô AØ18Ð0@�NÔ-ðAús   ÁBÂB'Â&B'c                óÖ   € \        V P                  4       P                  4       4      pVP                  4        V'       d
   VR,           pV F  w  r4\	        V: V: RV: 24       K  	  R# )z�Convenience. Lists them on standard output.  You
may provide a prefix - mostly helps to generate code
samples for documentation.
r-   z = N)Úlistr/   r   ÚsortÚprint)r   ÚprefixÚpropListr#   r   s   &&   r   ÚdumpPropertiesÚPropHolder.dumpPropertiesv   sP   € ô ˜×*Ñ*Ó,×2Ñ2Ó4Ó5ˆØ�‰ŒßØ˜c•\ˆFÛ%‰MˆTÜ¢«ªuÐ5Ö6ó &r   © ©r)   )Ú )r   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   ÚshapeCheckingr$   r/   r;   rJ   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r      s@   ø‡ € Ù#à€Hòið* ××Ðð	ò
	-ô òF/÷>7ò 7r   r   c                   óB   a € ] tR t^„t o RtR tR tR tR tR t	Rt
V tR# )	ÚWidgetz¢Base for all user-defined widgets.  Keep as simple as possible. Does
not inherit from Shape so that we can rewrite shapes without breaking
widgets and vice versa.c                ót   € VP                  4        F#  w  r#W P                  9  g   K  \        WV4       K%  	  R # ©N)r   r   r9   )r   ÚkwÚkÚvs   &,  r   Ú_setKeywordsÚWidget._setKeywords‰   s(   € Ø—8‘8–:‰CˆAØŸ™Ö%Ü˜˜qÖ!ó r   c                ó   € R p\        V4      h)z+draw() must be implemented for each Widget!©ÚNotImplementedError©r   r   s   & r   ÚdrawÚWidget.drawŽ   ó   € Ø;ˆÜ! #Ó&Ð&r   c                ó   € R p\        V4      h)z+demo() must be implemented for each Widget!rb   rd   s   & r   ÚdemoÚWidget.demo’   rg   r   c                ó"   € V P                  4       # r[   )re   ©r   s   &r   ÚprovideNodeÚWidget.provideNode–   s   € Ø�y‰y‹{Ðr   c                ó>   € V P                  4       P                  4       # )zGReturn outer boundary as x1,y1,x2,y2.  Can be overridden for efficiency)re   Ú	getBoundsrl   s   &r   rp   ÚWidget.getBounds™   s   € à�y‰y‹{×$Ñ$Ó&Ð&r   rL   N)r   rO   rP   rQ   rR   r_   re   ri   rm   rp   rT   rU   rV   s   @r   rY   rY   „   s(   ø‡ € ñò"ò
'ò'ò÷'ð 'r   rY   c            
       óŒ   a € ] tR t^�t o Rt]! ]! ]RR7      ]! ]RR7      ]! ]RR7      ]! RRR7      R7      tRR	 lt	R
 t
RtV tR# )ÚScaleWidgetz Contents with a scale and offsetzx offset©Údesczy offsetÚscaleNúContained drawable elements)ÚxÚyrv   Úcontentsc                óž   € Wn         W n        V'       g   . pM\        V\        \        34      '       g   V3p\	        V4      V n        W0n        R # r[   )rx   ry   Ú
isinstanceÚtuplerE   rz   rv   )r   rx   ry   rv   rz   s   &&&&&r   Ú__init__ÚScaleWidget.__init__¥   s;   € ØŒØŒß "™Ü˜H¤e¬D \×2Ò2Ø �{ˆHÜ˜X›ˆŒØŽ
r   c           
     óž   € \         P                  ! V P                  R V P                  ^ ^ V P                  V P                  V P
                  3/ # )Ú	transform)r   ÚGrouprz   rv   rx   ry   rl   s   &r   re   ÚScaleWidget.draw®   s:   € Ü�|Š|ÐQU×Q^ÑQ^Ð_ t§z¡z°!°A°d·j±jÀÇÁÈÏÉÐ&OÑ_Ð_r   )rz   rv   rx   ry   )r(   r(   g      ð?N)r   rO   rP   rQ   rR   ÚAttrMapÚAttrMapValueÚisNumberr   r~   re   rT   rU   rV   s   @r   rs   rs   �   sL   ø‡ € Ù*ÙÙ˜ zÔ2Ù˜ zÔ2Ù˜X¨7Ô3Ù Ð*GÔHô	
€Hô÷`ð `r   rs   c                   ó&   a € ] tR t^³t o R tRtV tR# )Ú
CloneMixinc                óê   € V P                  4       pVP                  P                  4        VP                  P                  V P                  4       V'       d   VP                  P                  V4       V# r[   )r   r   ÚclearÚupdate)r   ÚkwdsÚns   &, r   ÚcloneÚCloneMixin.clone´   sM   € Ø�N‰NÓˆØ	�
‰
×ÑÔØ	�
‰
×Ñ˜$Ÿ-™-Ô(ß�—‘×"Ñ" 4Ô(Øˆr   rL   N)r   rO   rP   rQ   rŽ   rT   rU   rV   s   @r   rˆ   rˆ   ³   s   ø‡ € ÷ð r   rˆ   c                   ón   a € ] tR t^»t o RtR tR tR tR tR t	R t
RR ltR	 tR
 tR tRR ltRtV tR# )ÚTypedPropertyCollectiona@  A container with properties for objects of the same kind.

This makes it easy to create lists of objects. You initialize
it with a class of what it is to contain, and that is all you
can add to it.  You can assign properties to the collection
as a whole, or to a numeric index within it; if so it creates
a new child object to hold that data.

So:
    wedges = TypedPropertyCollection(WedgeProperties)
    wedges.strokeWidth = 2                # applies to all
    wedges.strokeColor = colors.red       # applies to all
    wedges[3].strokeColor = colors.blue   # only to one

The last line should be taken as a prescription of how to
create wedge no. 3 if one is needed; no error is raised if
there are only two data points.

We try and make sensible use of tuple indices.
    line[(3,x)] is backed by line[(3,)] == line[3] & line
c                óN   € V! R/ VB V P                   R &   / V P                   R&   R# )Ú_valueÚ	_childrenNrL   )r   )r   ÚexampleClassrŒ   s   &&,r   r~   Ú TypedPropertyCollection.__init__Ò   s&   € á".Ñ"6°Ñ"6ˆ�‰�hÑØ%'ˆ�‰�kÓ"r   c                ó&   €  ! R  RV\         4      pV# )c                   ó6   a € ] tR t^Øt o R t]R 4       tRtV tR# )Ú5TypedPropertyCollection.wKlassFactory.<locals>.WKlassc                ó  €  V P                   P                  ^ ,          P                  W4      #    T P                  pTP                  pT P
                  pT'       d"   YC9   d   \        Y4,          T4      u # TRR pK)  \        Y!4      u # ; i)r(   Néÿÿÿÿ)r   Ú	__bases__Ú__getattr__Úparentr”   Ú__propholder_index__r   )r   r#   rž   Úcrx   s   &&   r   r�   ÚATypedPropertyCollection.wKlassFactory.<locals>.WKlass.__getattr__Ù   sz   € ð
0ØŸ>™>×3Ñ3°AÕ6×BÑBÀ4ÓMÐMøð0Ø!Ÿ[™[�FØ×(Ñ(�AØ×1Ñ1�AßØœ6Ü#*¨1­4°Ó#5Ò5Ø˜c˜r˜FšÜ" 6Ó/Ò/ús   ‚+. ®-B
ÁB
Á6B
c                ó"   € V P                  4       # r[   )Ú__propholder_parent__rl   s   &r   rž   Ú<TypedPropertyCollection.wKlassFactory.<locals>.WKlass.parentå   s   € à×1Ñ1Ó3Ð3r   rL   N)	r   rO   rP   rQ   r�   Úpropertyrž   rT   rU   rV   s   @r   ÚWKlassr™   Ø   s   ø‡ € ò0ð ñ4ó ö4r   r¦   )rˆ   )r   ÚKlassr¦   s   && r   ÚwKlassFactoryÚ%TypedPropertyCollection.wKlassFactory×   s   € ô	4�Uœ:ô 	4ð  ˆr   c           	     ó�  € \        V\        \        34      '       d   \        V4      MV3p V P                  V,          #   \         dü    T P
                  P                  pT\        9   d   \        T,          pMT P                  T4      ;\        T&   pT! 4       p\        \        TP                  P                  4       4      3R  l\        TP                  P                  4       4      4       F  pTP                  T K  	  TP                  P                  \        \        T 4      TRR R7      4       Y@P                  T&   Tu # i ; i)c                 ó
   € W9   # r[   rL   )rx   ÚKs   &&r   Ú<lambda>Ú5TypedPropertyCollection.__getitem__.<locals>.<lambda>÷   s   € ÀAÂFr   N)r£   rŸ   r›   )r|   r}   rE   r”   r:   r“   r   Ú_ItemWrapperr¨   Úfilterr   r   r   r‹   ÚdictÚweakref_ref)r   rx   r§   r¦   rB   Úis   &&    r   Ú__getitem__Ú#TypedPropertyCollection.__getitem__ê   s
  € Ü" 1¤e¬D \×2Ò2ŒE�!ŒH¸¸ˆð	Ø—>‘> !Õ$Ð$øÜô 	Ø—K‘K×)Ñ)ˆEØœÔ$Ü% eÕ,‘à/3×/AÑ/AÀ%Ó/HÐH”˜UÑ# fá“HˆEä¤t¨E¯N©N×,?Ñ,?Ó,AÓ'BÓJÌ4ÐPU×P^ÑP^×PcÑPcÓPeÓKfÖg�Ø—N‘N 1Ò%ñ hà�N‰N×!Ñ!¤$Ü<GÈÓ<MØ;<¸S¸b¸6ô#Cô &ð
 !&�N‰N˜1ÑØŠLð#	ús   ¬? ¿DEÅEc                óŠ   € \        V\        \        34      '       d   \        V4      V P                  9   # V3V P                  9   # r[   )r|   r}   rE   r”   )r   r   s   &&r   Ú__contains__Ú$TypedPropertyCollection.__contains__  s5   € Ü(¨¬e´D¨\×:Ò:”�c“
È4Ï>É>ÑYÐYÀÀÈ4Ï>É>ÑYÐYr   c                ó¨   € \        W P                  P                  4      '       g-   Q R V P                  P                  P                  ,          4       hR# )z0This collection can only hold objects of type %sN)r|   r“   r   r   )r   r   r   s   &&&r   Ú__setitem__Ú#TypedPropertyCollection.__setitem__  s>   € Ü˜%§¡×!6Ñ!6×7Ò7ð 	aØ>ÀÇÁ×AVÑAV×A_ÑA_Õ_ó	aÒ7r   c                óZ   € \        \        V P                  P                  4       4      4      # r[   )r8   rE   r”   r   rl   s   &r   Ú__len__ÚTypedPropertyCollection.__len__  s   € Ü”4˜Ÿ™×+Ñ+Ó-Ó.Ó/Ð/r   c                óÔ  € / pV P                   P                  VR 7      P                  4        F  w  r4WBRV,          &   K  	  V P                  P	                  4        F‰  pV P                  V,          P                  VR 7      pVP                  4        FO  w  r4\        W4      '       d   \        W4      V8w  g   K(  R\        V4      ^8”  d   TMV^ ,          : RV: 2pWBV&   KQ  	  K‹  	  V# )r*   z%sr,   z].)r“   r/   r   r”   r   r   r   r8   )r   r+   r0   r   r   Úidxr2   ÚnewKeys   &&      r   r/   Ú%TypedPropertyCollection.getProperties  sÊ   € ð ˆàŸ+™+×3Ñ3¸%Ð3Ó@×FÑFÖH‰JˆCØ %�$˜•*Óñ Ið —>‘>×&Ñ&Ö(ˆCØŸ™¨Õ,×:Ñ:ÀÐ:ÓGˆJØ(×.Ñ.Ö0‘
�Ü˜t×(Ò(¬G°DÓ,>ÀÖ,EøÜ14°S³¸!´©#ÀÀQÅÒ*GÊÐM�FØ$)˜&“Mó 1ñ )ð ˆr   c                ó„   € VP                  4        F+  w  r#\        V4       F  w  rE\        W,          W%4       K  	  K-  	  R # r[   )r   Ú	enumerater9   )r   r\   r#   r   r³   r^   s   &,    r   Ú	setVectorÚ!TypedPropertyCollection.setVector  s1   € ØŸ8™8ž:‰KˆDÜ! %Ö(‘�Ü˜� Ö'ó )ó &r   c                ó.   € \        V P                  V4      # r[   )r   r“   )r   r#   s   &&r   r�   Ú#TypedPropertyCollection.__getattr__   s   € Ü�t—{‘{ 4Ó(Ð(r   c                ó.   € \        V P                  W4      # r[   )r9   r“   r"   s   &&&r   r$   Ú#TypedPropertyCollection.__setattr__#  s   € Ü�t—{‘{ 4Ó.Ð.r   Nc                ó6   € W9   d   \        W,          W#4      # T# r[   )r   )r   r   ÚaÚdefaults   &&&&r   Ú	checkAttrÚ!TypedPropertyCollection.checkAttr&  s   € Ø14´Œw�t•y !Ó-ÐIÀ'ÐIr   rL   rM   r[   )r   rO   rP   rQ   rR   r~   r¨   r´   r·   rº   r½   r/   rÅ   r�   r$   rÎ   rT   rU   rV   s   @r   r‘   r‘   »   sJ   ø‡ € ñò,(ò
ò&ò.Zòaò0ôò (ò
)ò/÷Jò Jr   r‘   c                óB   € \        V \        4      '       d	   W,          # T # )z<return obj if it's not a TypedPropertyCollection else obj[x])r|   r‘   )Úobjrx   s   &&r   Ú
tpcGetItemrÒ   )  s   € ä Ô$;×<Ò<ˆ3�6ÐEÀ#ÐEr   c                 óœ   € \        V R 4      '       g   R# V P                  p\        V\        4      '       g   R# \        V! 4       \        4      # )r£   N)r   r£   r|   r²   r‘   )rÑ   Úphs   & r   ÚisWKlassrÕ   -  s<   € Ü�3Ð.×/Ò/±Ø	×	"Ñ	"€BÜ�bœ×%Ò%¡vÜ‘b“dÔ2Ó3Ð3r   c                   óæ   a € ] tR tRt o Rt]! ]! ]RR7      ]! ]R^R7      ]! ]R^R7      ]! RR	^R7      ]! ]R
R7      ]! ]R^R7      ]! ]	RR7      ]! ]	RR7      ]! ]
4      R7	      tR tR tRtV tR# )ÚStylePropertiesi4  a¦  A container class for attributes used in charts and legends.

Attributes contained can be those for any graphical element
(shape?) in the ReportLab graphics package. The idea for this
container class is to be useful in combination with legends
and/or the individual appearance of data series in charts.

A legend could be as simple as a wrapper around a list of style
properties, where the 'desc' attribute contains a descriptive
string and the rest could be used by the legend e.g. to draw
something like a color swatch. The graphical presentation of
the legend would be its own business, though.

A chart could be inspecting a legend or, more directly, a list
of style properties to pick individual attributes that it knows
about in order to render a particular row of the data. A bar
chart e.g. could simply use 'strokeColor' and 'fillColor' for
drawing the bars while a line chart could also use additional
ones like strokeWidth.
zwidth of the stroke linert   z#Line cap 0=butt, 1=round & 2=square©ru   ÚadvancedUsagez$Line join 0=miter, 1=round & 2=bevelNz$miter limit control miter line joinszdashing patterns e.g. (1,3)z9level of transparency (alpha) accepts values between 0..1zthe color of the strokezthe filling color)	ÚstrokeWidthÚstrokeLineCapÚstrokeLineJoinÚstrokeMiterLimitÚstrokeDashArrayÚstrokeOpacityÚstrokeColorÚ	fillColorru   c                óP   € VP                  4        F  w  r#\        WV4       K  	  R# )z"Initialize with attributes if any.N)r   r9   )r   Úkwargsr]   r^   s   &,  r   r~   ÚStyleProperties.__init__V  s    € ð —L‘L–N‰DˆAÜ�D˜QÖó #r   c                ó   € \        WV4       R# )z3Verify attribute name and value, before setting it.Nr    r"   s   &&&r   r$   ÚStyleProperties.__setattr__]  s   € ä˜ %Ö(r   rL   )r   rO   rP   rQ   rR   r„   r…   r†   ÚisListOfNumbersOrNoneÚisColorOrNoneÚisStringr   r~   r$   rT   rU   rV   s   @r   r×   r×   4  s’   ø‡ € ññ* Ù" 8Ð1KÔLÙ$ XÐ3XÐghÔiÙ% hÐ4ZÐijÔkÙ'¨Ð2XÐghÔiÙ&Ð'<ÐB_Ô`Ù$ XÐ3nÐ}~ÔÙ" =Ð6OÔPÙ  Ð4GÔHÙ˜HÓ%ô

€Hò ÷)ð )r   r×   c                   ó,   a € ] tR tRt o R tR tRtV tR# )Ú
TwoCirclesib  c                óº   € \         P                  ! ^d^d^\        P                  R7      V n        \         P                  ! R^d^\        P                  R7      V n        R# )éd   ©rá   i,  N)r   ÚCircler   ÚredÚ
leftCircleÚrightCirclerl   s   &r   r~   ÚTwoCircles.__init__c  s7   € Ü Ÿ-š-¨¨C°¼f¿j¹jÔIˆŒÜ!Ÿ=š=¨¨S°¼v¿z¹zÔJˆÖr   c                óX   € \         P                  ! V P                  V P                  4      # r[   )r   r‚   rñ   rò   rl   s   &r   re   ÚTwoCircles.drawg  s   € Ü�|Š|˜DŸO™O¨T×-=Ñ-=Ó>Ð>r   )rñ   rò   N)r   rO   rP   rQ   r~   re   rT   rU   rV   s   @r   rë   rë   b  s   ø‡ € òK÷?ð ?r   rë   c                   óª   a € ] tR tRt o Rt]! ]! ]4      ]! ]4      ]! ]4      ]! ]4      ]! ]4      ]! ]	! RRR4      4      R7      t
R tR tR	 tR
tV tR# )ÚFaceik  zuThis draws a face with two eyes.

It exposes a couple of properties
to configure itself and hides all other details.
ÚhappyÚsadÚok)rx   ry   ÚsizeÚ	skinColorÚeyeColorÚmoodc                óv   € ^
V n         ^
V n        ^PV n        RV n        \        P
                  V n        RV n        R# )é
   Nrø   )rx   ry   rû   rü   r   Úbluerý   rþ   rl   s   &r   r~   ÚFace.__init__{  s0   € ØˆŒØˆŒØˆŒ	ØˆŒÜŸ™ˆŒØˆŽ	r   c                ó   € R # r[   rL   rl   s   &r   ri   Ú	Face.demoƒ  s   € Ùr   c                ó   € V P                   p\        P                  ! 4       p^^ ^ ^V P                  V P                  .Vn        VP                  \        P                  ! VR,          VR,          VR,          V P                  R7      4       VP                  \        P                  ! VR,          VR,          VR,          \        P                  R7      4       VP                  \        P                  ! VR,          VR,          VR,          V P                  R7      4       VP                  \        P                  ! VR,          VR,          VR,          \        P                  R7      4       VP                  \        P                  ! VR,          VR,          VR,          V P                  R7      4       VP                  \        P                  ! VR,          VR,          VR,          VR	,          VR,          VR	,          .R
R7      4       V P                  R8X  d   RpMV P                  R8X  d   RpM^ pVP                  \        P                  ! VR	,          VR,          VR,          VR,          VR,          VRV,           ,          VR,          VRV,           ,          .\        P                  \        P                  VR,          R7      4       V# )r)   ç      à?rî   gffffffÖ?gÍÌÌÌÌÌä?gš™™™™™¹?gš™™™™™©?g333333ã?gš™™™™™Ù?g333333Ó?N)Úpointsrá   rø   rù   gš™™™™™É?gffffffæ?g¸…ëQ¸ž?)r  rá   rà   rÚ   gš™™™™™©¿)rû   r   r‚   rx   ry   r�   Úaddrï   rü   r   Úwhiterý   ÚPolygonrþ   Úpinkrð   )r   ÚsÚgÚoffsets   &   r   re   Ú	Face.draw†  sô  € Ø�I‰IˆÜ�LŠL‹NˆØ˜˜1˜Q˜tŸv™v t§v¡vÐ.ˆŒð 	
�‰Œf�mŠm˜A �G Q¨¥W¨a°#­gÀÇÁÔPÔQð 	
�‰Œf�mŠm˜A �H a¨$¥h°°CµÄ6Ç<Á<ÔPÔQØ	�‰Œf�mŠm˜A �H a¨$¥h°°DµÀDÇMÁMÔRÔSð 	
�‰Œf�mŠm˜A �H a¨$¥h°°CµÄ6Ç<Á<ÔPÔQØ	�‰Œf�mŠm˜A �H a¨$¥h°°DµÀDÇMÁMÔRÔSð 	
�‰Œf�nŠnØ˜•G˜Q �W a¨#¥g¨q°3­w¸¸C½ÀÀSÅÐIØôô 	ð
 �9‰9˜ÔØ‰FØ�Y‰Y˜%ÔØ‰FàˆFà	�‰Œf�nŠnà�C•˜˜S�Ø�C•˜˜S�Ø�C•˜˜c F�lÕ+Ø�C•˜˜c F�lÕ+ð	ô Ÿ™Ü Ÿ*™*Ø˜d�(ô
ô 
	ð ˆr   )rý   rþ   rû   rü   rx   ry   N)r   rO   rP   rQ   rR   r„   r…   r†   rè   ÚOneOfr   r~   ri   re   rT   rU   rV   s   @r   r÷   r÷   k  sc   ø‡ € ññ Ù˜Ó"Ù˜Ó"Ù˜HÓ%Ù  Ó/Ù Ó.Ù™E '¨%°Ó5Ó6ô
€Hòò÷)ð )r   r÷   c                   ó2   a € ] tR tRt o R tR tR tRtV tR# )ÚTwoFacesi²  c                ó¨   € \        4       V n        R V P                  n        \        4       V n        ^dV P                  n        RV P                  n        R# )rø   rù   N)r÷   ÚfaceOnerþ   ÚfaceTworx   rl   s   &r   r~   ÚTwoFaces.__init__³  s7   € Ü“vˆŒØ#ˆ�‰ÔÜ“vˆŒØˆ�‰ŒØ!ˆ�‰Ör   c                óX   € \         P                  ! V P                  V P                  4      # )zJust return a group)r   r‚   r  r  rl   s   &r   re   ÚTwoFaces.drawº  s   € ä�|Š|˜DŸL™L¨$¯,©,Ó7Ð7r   c                ó   € R# )zIThe default case already looks good enough,
no implementation needed hereNrL   rl   s   &r   ri   ÚTwoFaces.demo¾  s   € ñ 	r   )r  r  N)	r   rO   rP   rQ   r~   re   ri   rT   rU   rV   s   @r   r  r  ²  s   ø‡ € ò"ò8÷ð r   r  c                   ó~   a € ] tR tRt o Rt]! ]P                  ]! ]	RR7      R7      t
R tR tRR	 ltR
 tR tRtV tR# )ÚSizeriÃ  z.Container to show size of all enclosed objectsrw   rt   )ÚBASErz   c                óœ   € . V n         \        P                  V n        \        P                  V n        V F  pV P                  V4       K  	  R # r[   )rz   r   Úcyanrá   Úmagentarà   r  )r   ÚelementsÚelems   &* r   r~   ÚSizer.__init__É  s5   € ØˆŒÜŸ™ˆŒÜ!Ÿ>™>ˆÔãˆDØ�H‰H�TŽNó r   c                óº   € V'       dS   V\        V P                  P                  4       4      9  d   \        \        4      V P                  V&   \        WV4       R# R# )zLif name is not None add an attribute pointing to node and add to the attrMapN)rE   r   r   r…   r'   r9   )r   r#   Únodes   &&&r   Ú_addNamedNodeÚSizer._addNamedNodeÑ  sA   € çØœ4 §¡× 2Ñ 2Ó 4Ó5Ô5Ü&2´<Ó&@�—‘˜dÑ#Ü�D Ö%ñ r   Nc                óš   € VeG   \        V4      '       g   Q R4       hV P                  P                  V4       V P                  W!4       R# R# )zƒAppends non-None child node to the 'contents' attribute. In addition,
if a name is provided, it is subsequently accessible by name
Nz1Can only add Shape or UserNode objects to a Group)r'   rz   Úappendr&  )r   r%  r#   s   &&&r   r  Ú	Sizer.addØ  sF   € ð
 ÒÜ ×%Ò%ÐZÐ'ZÓZÐ%Ø�M‰M× Ñ  Ô&Ø×Ñ˜tÖ)ñ r   c                ó¾   € V P                   '       dK   . pV P                    F"  pVP                  VP                  4       4       K$  	  \        P                  ! V4      # R# )r(   )r(   r(   r(   r(   )rz   r)  rp   r   ÚgetRectsBounds)r   Úbr"  s   &  r   rp   ÚSizer.getBoundsâ  sH   € à�=�=ˆ=ØˆAØŸœ�Ø—‘˜Ÿ™Ó)Ö*ñ &ä×(Ò(¨Ó+Ð+àÐr   c           	     ó8  € \         P                  ! 4       pV P                  4       w  r#rE\         P                  ! VVWB,
          WS,
          V P                  V P
                  R 7      pVP                  V4       V P                   F  pVP                  V4       K  	  V# ))rx   ry   ÚwidthÚheightrá   rà   )r   r‚   rp   ÚRectrá   rà   r  rz   )r   r  Úx1Úy1Úx2Úy2Úrr"  s   &       r   re   Ú
Sizer.drawì  sw   € Ü�LŠL‹NˆØŸ>™>Ó+Ñˆ�Ü�KŠKØØØ•EØ•UØŸ™Ø×*Ñ*ôˆð 	
�‰ˆaŒØ—M”MˆDØ�E‰E�$ŽKñ "àˆr   )rz   rá   rà   r[   )r   rO   rP   rQ   rR   r„   r   Ú
SolidShaper…   ÚisListOfShapesr   r~   r&  r  rp   re   rT   rU   rV   s   @r   r  r  Ã  sC   ø‡ € Ù4á˜F×-Ñ-Ù Ð4QÔRô
€Hòò&ô*ò÷ð r   r  c                   ó8  a € ] tR tRt o ]! R0/ R]! ]RR7      bR]! ]RR7      bR]! ]RR7      bR	]! ]	R
^R7      bR]! ]	R^R7      bR]! ]	R^R7      bR]! ]	R^R7      bR]! ]RR7      bR]! ]
! ]4      RR7      bR]! ]
! ]4      RR7      bR]! ]
! ]4      RR7      bR]! ]	R^R7      bR]! ]	R^R7      bR]! ]	R^R7      bR ]! ]R!^R7      bR"]! ]	R#^R7      bR$]! R%R&^R7      bR']! ]! R(R)4      R*^R7      bR+]! ]! ]^ ^^R,7      R*^R7      b tR- tR. tR/tV tR%# )1ÚCandleStickPropertiesiü  rÚ   zWidth of a line.rt   rà   zColor of a line or border.rÞ   zDash array of a line.Ú
crossWidthzcross line widthrØ   ÚcrossLozcross line low valueÚcrossHizcross line high valueÚboxWidthzwidth of the box partÚboxFillColorzfill color of boxÚboxStrokeColorzstroke color of boxÚboxStrokeDashArrayzDash array of the box.ÚboxStrokeWidthzWidth of the box lines.ÚboxLozlow value of the boxÚboxMidzmiddle box line valueÚboxHizhigh value of the boxÚboxSideszwhether to show box sidesÚpositionzposition of the candleÚchartNz	our chartÚ
candleKindÚverticalÚ
horizontalzcandle directionÚaxes)ÚemptyOKÚloÚhic                ó  € VP                  R ^4      V n        VP                  R\        P                  4      V n        VP                  RR4      V n        VP                  R^4      V n        VP                  RR4      V n        VP                  RR4      V n        VP                  RR4      V n	        VP                  RR4      V n
        VP                  R	\        P                  4      V n        VP                  R
\        P                  4      V n        VP                  R\        P                  4      V n        VP                  RR4      V n        VP                  RR4      V n        VP                  RR4      V n        VP                  RR4      V n        VP                  RR4      V n        VP                  RR4      V n        VP                  RRR.4      V n        VP                  RR4      pV'       d   \/        V4      V n        R# R V n        R# )rÚ   rà   rÞ   Nr=  r>  r?  r@  rA  rB  rD  rC  rE  rF  rG  rH  TrI  rK  rL  rN  ÚcategoryAxisÚ	valueAxisrJ  c                  ó   € R # r[   rL   rL   r   r   r­   Ú0CandleStickProperties.__init__.<locals>.<lambda>'  s   € ¹dr   )ÚpoprÚ   r   Úblackrà   rÞ   r=  r>  r?  r@  rA  ÚNotSetOrÚ_not_setrB  rD  rC  rE  rF  rG  rH  rI  rK  rN  r²   rJ  )r   rŒ   rJ  s   &, r   r~   ÚCandleStickProperties.__init__  s�  € ØŸ8™8 M°!Ó4ˆÔØŸ8™8 M´&·,±,Ó?ˆÔØ#Ÿx™xÐ(9¸$Ó?ˆÔØŸ(™( <°Ó2ˆŒØ—x‘x 	¨$Ó/ˆŒØ—x‘x 	¨$Ó/ˆŒØŸ™ ¨DÓ1ˆŒØ ŸH™H ^°DÓ9ˆÔØ!ŸX™XÐ&6´x×7HÑ7HÓIˆÔØ!ŸX™XÐ&6´x×7HÑ7HÓIˆÔØ!%§¡Ð*>¼x×?PÑ?PÓ!QˆÔØ—X‘X˜g dÓ+ˆŒ
Ø—h‘h˜x¨Ó-ˆŒØ—X‘X˜g dÓ+ˆŒ
ØŸ™ ¨DÓ1ˆŒØŸ™ ¨DÓ1ˆŒØŸ(™( <°
Ó;ˆŒØ—H‘H˜V ^°KÐ$@ÓAˆŒ	Ø—‘˜ Ó&ˆß+0”[ Ó'ˆŽ
±{ˆŽ
r   c                óN  aaaa a!a"a#€ V P                  4       p\        WPP                  ^ ,          4      p\        VRR4      oS'       g   \        VR4      oV3R lp\        WPP                  ^,          4      p\        VRR4      oS'       g   \        VR4      oV3R lp	\        P                  ! 4       P
                  oV P                  o#V P                  o!V P                  o"V P                  p
V	! V P                  4      pV	! V P                  4      pV P                  pV P                  p\        P                  V P                   S!4      p\        P                  V P"                  S#4      p\        P                  V P$                  S"4      pV	! V P&                  4      pV	! V P(                  4      pV	! V P*                  4      pV! V P,                  4      pV P.                  o RVVV39  pRW¼39  pVV V!V"V#3R lpV'       d   \1        VV4      \3        VV4      ppV'       Ed   \1        W¼4      \3        W¼4      rËV'       d   VV8¼  g   VV8:  d_   V! VVVV4       V
eO   V! VV
R,          ,
          VVV
R,          ,           V4       V! VV
R,          ,
          VVV
R,          ,           V4       MzV'       ds   VV8  d3   V! VVVV4       V! VV
R,          ,
          VVV
R,          ,           V4       VV8”  d3   V! VVVV4       V! VV
R,          ,
          VVV
R,          ,           V4       V'       dó   VVR,          ,
          pTpVV,
          pTpS R8w  d   VVVV3w  ppppS! \        P4                  ! TTTTV P6                  '       d   TMRVVVR	7      4       V P6                  '       gO   V! VRV,          ,
          VVRV,          ,           V4       V! VRV,          ,
          VVRV,          ,           V4       Ve(   V! VRV,          ,
          VVRV,          ,           V4       SP8                  # )
zthe symbol interfaceÚmidScaleNrv   c                 ó    <€ V e	   S! V 4      # R # r[   rL   )rx   Ú_xScales   &€r   r­   Ú0CandleStickProperties.__call__.<locals>.<lambda>/  ó   ø€ ¨ª™7 1›:Ð@¸DÐ@r   c                 ó    <€ V e	   S! V 4      # R # r[   rL   )rx   Ú_yScales   &€r   r­   r`  3  ra  r   c                 ó`   <€ SR 8w  d   YrY2r2S! \         P                  ! WW#SSSR7      4       R# )rL  )rÚ   rà   rÞ   N)r   ÚLine)	Úx0Úy0r3  r4  ÚGrK  rà   rÞ   rÚ   s	   &&&&€€€€€r   ÚaLineÚ-CandleStickProperties.__call__.<locals>.aLineG  s/   ø€ Ø˜:Ô%Ø�2Ø�2ÙŒf�kŠk˜" °+È+ÐfuÔvÖwr   r  rL  )rà   rÚ   rÞ   rá   )rJ  r   rN  r   r‚   r  rÚ   rà   rÞ   r=  r>  r?  r@  rA  rY  ÚconditionalValuerB  rD  rC  rE  rF  rG  rI  rK  ÚminÚmaxr2  rH  Ú__self__)$r   Ú_xÚ_yÚ_sizeÚ_colorrJ  ÚxAÚxScaleÚyAÚyScaler=  r>  r?  r@  rA  rB  rD  rC  rE  rF  rG  rI  ÚhaveBoxÚhaveLineri  rx   ry   ÚhÚwrh  r_  rc  rK  rà   rÞ   rÚ   s$   &&&&&                        @@@@@@@r   Ú__call__ÚCandleStickProperties.__call__)  s�  þ€ à—
‘
“ˆÜ�UŸ9™9 Q�<Ó(ˆÜ˜"˜Z¨Ó-ˆß¤'¨"¨WÓ"5˜Ü@ˆÜ�UŸ9™9 Q�<Ó(ˆÜ˜"˜Z¨Ó-ˆß¤'¨"¨WÓ"5˜Ü@ˆÜ�LŠL‹N×ÑˆØ×&Ñ&ˆØ×&Ñ&ˆØ×.Ñ.ˆØ—_‘_ˆ
Ù˜Ÿ™Ó&ˆÙ˜Ÿ™Ó&ˆØ—=‘=ˆØ×(Ñ(ˆÜ!×2Ñ2°4×3FÑ3FÀ{ÓSˆÜ!×2Ñ2°4×3FÑ3FÀ{ÓSˆÜ%×6Ñ6°t×7NÑ7NÈÓ_ÐÙ�t—z‘zÓ"ˆÙ˜Ÿ™Ó$ˆÙ�t—z‘zÓ"ˆÙ˜$Ÿ-™-Ó(ˆØ—_‘_ˆ
Ø˜x¨¨eÐ4Ñ4ˆØ Ð0Ñ0ˆ÷	xñ 	x÷
 Ü˜u UÓ+¬S°°uÓ-=�5ˆEßˆ8Ü" 7Ó3´S¸Ó5I�Wß˜g uœn°¸´Ù�h˜w x°Ô8ØÒ)Ù˜( :¨c¥>Õ1°'¸(À:ÈcÅ>Õ:QÐRYÔZÙ˜( :¨c¥>Õ1°'¸(À:ÈcÅ>Õ:QÐRYÔZøßØ˜5”=Ù˜( 7¨8°EÔ:Ù˜( :¨c¥>Õ1°'¸(À:ÈcÅ>Õ:QÐRYÔZØ˜5”=Ù˜( 5¨°'Ô:Ù˜( :¨c¥>Õ1°'¸(À:ÈcÅ>Õ:QÐRYÔZßØ˜8 C�<Õ'ˆAØˆAØ˜•ˆAØˆAØ˜:Ô%Ø  1 a˜Z‘
��1�a˜ÙŒf�kŠk˜!˜A˜a ÀÇÇÀ©nÐSWÐdrð  DVð  amô  nô  oØ—=—=�=Ù�h˜s 8�|Õ+¨E°(¸3¸x½<Õ2GÈÔNÙ�h˜s 8�|Õ+¨E°(¸3¸x½<Õ2GÈÔNàÒ!Ù�h˜s 8�|Õ+¨F°8¸CÀ½LÕ3HÈÔPØ�z‰zÐr   )rN  rA  rG  rE  rF  rH  rB  rC  rD  r@  rK  rJ  r?  r>  r=  rI  rà   rÞ   rÚ   rL   )r   rO   rP   rQ   r„   r…   r†   rè   rç   ÚisNumberOrNonerY  Ú	isBooleanr  Ú
SequenceOfré   r   r~   r{  rT   rU   rV   s   @r   r<  r<  ü  s¸  ø‡ € Ùò 
Ù" 8Ð2DÕEð
á" =Ð7SÕTð
ñ 'Ð'<ÐCZÕ[ð
ñ " .Ð6HÐWXÕYð	
ñ
 ˜~Ð3IÐXYÕZð
ñ ˜~Ð3JÐYZÕ[ð
ñ   Ð4KÐZ[Õ\ð
ñ $ MÐ8KÕLð
ñ &¡h¨}Ó&=ÐDYÕZð
ñ *©(Ð3HÓ*IÐPhÕið
ñ &¡h¨xÓ&8Ð?XÕYð
ñ ˜^Ð1GÐVWÕXð
ñ ˜nÐ2IÐXYÕZð
ñ ˜^Ð1HÐWXÕYð
ñ   	Ð/JÐYZÕ[ð
ñ    Ð4LÐ[\Õ]ð!
ñ" ˜T {ÀÕCð#
ñ$ "¡%¨
°<Ó"@ÐFXÐghÕið%
ñ& ™J x¸¸QÀ!ÔDÐJ\ÐklÕmð'
€Hò,D÷,Að Ar   r<  c                  ó"   € \        \        3/ V B # r[   )r‘   r<  )rŒ   s   ,r   ÚCandleSticksr�  l  s   € Ü"Ô#8Ñ@¸4Ñ@Ð@r   c                  óP  € ^ RI Hp  \        V 4      p\        P                  Vn        VP                  \        P                  \        P                  \        P                  3R7       \        \        \        4      4       \        P                  ! R^È4      p\        4       pVP!                  V4       ^ RIHp VP'                  VRR4       \        R4       \        P                  ! R^È4      p\)        4       p\        P*                  Vn        RVn        VP!                  VR	R
7       \        R4       VP1                  4        VP'                  VRR4       \        R4       VP3                  4       pVP'                  VRR4       \        R4       \        R4       VP1                  4        R# )r(   )ÚWedgePropertiesrî   i�  )Ú	renderPDFzsample_widget.pdfzA Sample Widgetzsaved sample_widget.pdfrù   ÚtheFace)r#   zdrawing 1 properties:zface.pdfzsaved face.pdfzface_copy.pdfzAn expanded drawingzsaved face_copy.pdfzdrawing 2 properties:N)Ú#reportlab.graphics.charts.piechartsrƒ  r‘   r   rð   rá   rÅ   r  Úgreenr	  rG   r8   r¯   r   ÚDrawingrë   r  Úreportlab.graphicsr„  Ú
drawToFiler÷   Úyellowrü   rþ   rJ   ÚexpandUserNodes)rƒ  ÚwedgesÚdÚtcr„  ÚfÚd2s          r   Útestr’  o  s7  € ÝCÜ$ _Ó5€FÜ—z‘z€FÔØ
×Ñ¤§¡¬F¯L©L¼¿¹ÐFÐÔGÜ	Œ#ŒlÓ
Ôä�Š�s˜CÓ €AÜ	‹€BØ‡E�Eˆ"„IÝ,Ø×Ñ˜Ð/Ð1BÔCÜ	Ð
#Ô$ä�Š�s˜CÓ €AÜ‹€AÜ—-‘-€A„KØ€A„FØ‡E�Eˆ!�)€EÔÜ	Ð
!Ô"Ø×ÑÔØ×Ñ˜˜JÐ(9Ô:Ü	Ð
Ôà	
×	Ñ	Ó	€BØ×Ñ˜˜_Ð.CÔDÜ	Ð
Ô Ü	Ð
!Ô"Ø×ÑÖr   Ú__main__N)Ú__version__rR   r‰  r   Ú	reportlabr   Úreportlab.libr   r.   Úreportlab.lib.attrmapÚweakrefr   r²   r   ÚUserNoderY   rs   r¯   rˆ   r‘   rÒ   rÕ   r×   rë   r÷   r  r  r<  r�  r’  r   rL   r   r   Ú<module>rš     sì   ðð €Ø;€å %Ý Ý  Ü &Ü #Ý &÷s7ñ s7ôl'ˆZ˜Ÿ™ô 'ô2`�&ô `ð( €÷ñ ôlJ˜jô lJò\Fò4ô+)�jô +)ô\?�ô ?ôDˆ6ô DôNˆvô ô"7ˆFô 7ôrn˜Jô nò`Aòð> ˆZÔÙ†Fñ r   