
    6DhJa                        S r SSKrSSKrSSKrSSKJrJr  SSKJr  / SQr	/ SQr
0 SSS	/_S
SS/_SSS/_SSS/_SSS/_SSS/_SSS/_SSS/_SSS/_SSS/_SS S!/_S"S#S$/_S%SS	/_S&SS'/_S(S)S	/_S*SS+/_S,S-S./_rS/rS0rS1rSCS2 jr\\l        SDS3 jrSES4 jr      SFS5 jr\R(                  " S6S7\5        SGS8 jrS9 rS: rS;rS<r/ S=QrS>S?/r " S@ SA\5      rSB rg)HzB
tools
=====

Functions that USERS will possibly want access to.

    N)
exceptionsoptional_imports)
PLOTLY_DIR)
zrgb(31, 119, 180)zrgb(255, 127, 14)zrgb(44, 160, 44)zrgb(214, 39, 40)zrgb(148, 103, 189)zrgb(140, 86, 75)zrgb(227, 119, 194)zrgb(127, 127, 127)zrgb(188, 189, 34)zrgb(23, 190, 207))TaskStartFinishGreysz
rgb(0,0,0)zrgb(255,255,255)YlGnBuzrgb(8,29,88)zrgb(255,255,217)Greenszrgb(0,68,27)zrgb(247,252,245)YlOrRdzrgb(128,0,38)zrgb(255,255,204)Blueredzrgb(0,0,255)zrgb(255,0,0)RdBuzrgb(5,10,172)zrgb(178,10,28)Redszrgb(220,220,220)BluesPicnicRainbowzrgb(150,0,90)Portlandzrgb(12,51,131)zrgb(217,30,30)Jetzrgb(0,0,131)zrgb(128,0,0)Hot	Blackbodyzrgb(160,200,255)Earthzrgb(0,0,130)Electriczrgb(255,250,220)Viridiszrgb(68,1,84)zrgb(253,231,37)z#1f77b4zprobability densityprobabilityc                 :    U< SU< SUR                   < SU < S3$ )N:z: z:

z

)__name__)messagecategoryfilenamelinenofilelines         >/var/www/html/env/lib/python3.13/site-packages/plotly/tools.pywarning_on_one_liner%   ;   s    %-vx7H7H'RR    c                 v   [         R                  " S5      nU(       a  UR                  5       nUR                  U5      R	                  U 5        U(       a  UR                  5         U(       a  UR                  5         U(       a  [        UR                  5        UR                  $ [        R                  " S5        g)a5  Convert a matplotlib figure to plotly dictionary and send.

All available information about matplotlib visualizations are stored
within a matplotlib.figure.Figure object. You can create a plot in python
using matplotlib, store the figure object, and then pass this object to
the fig_to_plotly function. In the background, mplexporter is used to
crawl through the mpl figure object for appropriate information. This
information is then systematically sent to the PlotlyRenderer which
creates the JSON structure used to make plotly visualizations. Finally,
these dictionaries are sent to plotly and your browser should open up a
new tab for viewing! Optionally, if you're working in IPython, you can
set notebook=True and the PlotlyRenderer will call plotly.iplot instead
of plotly.plot to have the graph appear directly in the IPython notebook.

Note, this function gives the user access to a simple, one-line way to
render an mpl figure in plotly. If you need to trouble shoot, you can do
this step manually by NOT running this fuction and entereing the following:

===========================================================================
from plotly.matplotlylib import mplexporter, PlotlyRenderer

# create an mpl figure and store it under a varialble 'fig'

renderer = PlotlyRenderer()
exporter = mplexporter.Exporter(renderer)
exporter.run(fig)
===========================================================================

You can then inspect the JSON structures by accessing these:

renderer.layout -- a plotly layout dictionary
renderer.data -- a list of plotly data dictionaries
zplotly.matplotlylibzTo use Plotly's matplotlylib functionality, you'll need to have matplotlib successfully installed with all of its dependencies. You're getting this error because matplotlib or one of its dependencies doesn't seem to be installed correctly.N)r   
get_modulePlotlyRendererExporterrunresizestrip_styleprintmsg
plotly_figwarningswarn)figr,   r-   verbosematplotlylibrenderers         r$   mpl_to_plotlyr7   C   s    D $../DEL..0h'++C0OO  "(,,"""C	
r&   c                    SSK Jn  [        R                  " S5        [	        U [
        5      (       a  U S::  a  [        S5      e[	        U[
        5      (       a  US::  a  [        S5      eSS/nUR                  5        H"  nXe;  d  M
  [        SR                  U5      5      e    [        US   5      n [        US   5      n[        UR                  5       S9n	SXqS-
  -  -
  U-  n
SXS-
  -  -
  U -  nSn[        U 5       H  n[        U5       H  nSR                  US-   5      nSR                  US-   5      nX-   U-  nUU
-   nSR                  US-   5      nSR                  US-   5      nX-   U-  nUU-   n[        UU/US9nUU	S   U'   [        UU/US9nUU	S   U'   US-  nM     M     U(       aa  [        S5        SnSn[        U 5       H8  nSn[        U5       H  nUSR                  U5      -  nUS-  nM     US-   U-   nM:     [        U5        UR                  U	5      $ ! [         a	    S	U-  n GNf = f! [         a	    S
U -  n GNf = f)a	  Return a dictionary instance with the subplots set in 'layout'.

Example 1:
# stack two subplots vertically
fig = tools.get_subplots(rows=2)
fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2], xaxis='x1', yaxis='y1')]
fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2], xaxis='x2', yaxis='y2')]

Example 2:
# print out string showing the subplot grid you've put in the layout
fig = tools.get_subplots(rows=3, columns=2, print_grid=True)

Keywords arguments with constant defaults:

rows (kwarg, int greater than 0, default=1):
    Number of rows, evenly spaced vertically on the figure.

columns (kwarg, int greater than 0, default=1):
    Number of columns, evenly spaced horizontally on the figure.

horizontal_spacing (kwarg, float in [0,1], default=0.1):
    Space between subplot columns. Applied to all columns.

vertical_spacing (kwarg, float in [0,1], default=0.05):
    Space between subplot rows. Applied to all rows.

print_grid (kwarg, True | False, default=False):
    If True, prints a tab-delimited string representation
    of your plot grid.

Keyword arguments with variable defaults:

horizontal_spacing (kwarg, float in [0,1], default=0.2 / columns):
    Space between subplot columns.

vertical_spacing (kwarg, float in [0,1], default=0.3 / rows):
    Space between subplot rows.

r   
graph_objszJtools.get_subplots is depreciated. Please use tools.make_subplots instead.z5Keyword argument 'rows' must be an int greater than 0z8Keyword argument 'columns' must be an int greater than 0horizontal_spacingvertical_spacingzInvalid keyword argument: '{0}'g?g333333?)layout   zxaxis{0}zy{0}zyaxis{0}zx{0})domainanchorr=   z%This is the format of your plot grid! z[{0}]	
)plotly.graph_objsr:   r1   r2   
isinstanceint	ExceptionkeysformatfloatKeyErrordictLayoutranger.   Figure)rowscolumns
print_gridkwargsr:   VALID_KWARGSkeyr;   r<   r3   
plot_widthplot_heightplot_numrrrccc
xaxis_namex_anchorx_startx_end
yaxis_namey_anchory_starty_endxaxisyaxisgrid_stringplot	grid_lines                               r$   get_subplotsrg   |   s   R -MMW
 dC  DAIRSSgs##w!|UVV )*<=L{{}"=DDSIJJ 
+"6*>#?@& (:!;< j'')
*C(aK88GCJ'!844<KHT{>C#**8a<8J}}X\2H!6#=Gj(E#**8a<8J}}X\2H"5<Gk)E% 0BE(-CM*%% 0BE(-CM*%MH " $ 56;CIW~Y--d33		 & $d*[8K  	kS!!S  + 7]+  &:&s$   $H& 3H< &H98H9<IIc           
          SSK n[        R                  " S[        SS9  UR                  R
                  " SU UUUUUS.UD6$ )ap  Return an instance of plotly.graph_objs.Figure
with the subplots domain set in 'layout'.

Example 1:
# stack two subplots vertically
fig = tools.make_subplots(rows=2)

This is the format of your plot grid:
[ (1,1) x1,y1 ]
[ (2,1) x2,y2 ]

fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2])]
fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2], xaxis='x2', yaxis='y2')]

# or see Figure.add_trace

Example 2:
# subplots with shared x axes
fig = tools.make_subplots(rows=2, shared_xaxes=True)

This is the format of your plot grid:
[ (1,1) x1,y1 ]
[ (2,1) x1,y2 ]


fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2])]
fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2], yaxis='y2')]

Example 3:
# irregular subplot layout (more examples below under 'specs')
fig = tools.make_subplots(rows=2, cols=2,
                          specs=[[{}, {}],
                                 [{'colspan': 2}, None]])

This is the format of your plot grid!
[ (1,1) x1,y1 ]  [ (1,2) x2,y2 ]
[ (2,1) x3,y3           -      ]

fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2])]
fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2], xaxis='x2', yaxis='y2')]
fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2], xaxis='x3', yaxis='y3')]

Example 4:
# insets
fig = tools.make_subplots(insets=[{'cell': (1,1), 'l': 0.7, 'b': 0.3}])

This is the format of your plot grid!
[ (1,1) x1,y1 ]

With insets:
[ x2,y2 ] over [ (1,1) x1,y1 ]

fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2])]
fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2], xaxis='x2', yaxis='y2')]

Example 5:
# include subplot titles
fig = tools.make_subplots(rows=2, subplot_titles=('Plot 1','Plot 2'))

This is the format of your plot grid:
[ (1,1) x1,y1 ]
[ (2,1) x2,y2 ]

fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2])]
fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2], xaxis='x2', yaxis='y2')]

Example 6:
# Include subplot title on one plot (but not all)
fig = tools.make_subplots(insets=[{'cell': (1,1), 'l': 0.7, 'b': 0.3}],
                          subplot_titles=('','Inset'))

This is the format of your plot grid!
[ (1,1) x1,y1 ]

With insets:
[ x2,y2 ] over [ (1,1) x1,y1 ]

fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2])]
fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2], xaxis='x2', yaxis='y2')]

Keywords arguments with constant defaults:

rows (kwarg, int greater than 0, default=1):
    Number of rows in the subplot grid.

cols (kwarg, int greater than 0, default=1):
    Number of columns in the subplot grid.

shared_xaxes (kwarg, boolean or list, default=False)
    Assign shared x axes.
    If True, subplots in the same grid column have one common
    shared x-axis at the bottom of the gird.

    To assign shared x axes per subplot grid cell (see 'specs'),
    send list (or list of lists, one list per shared x axis)
    of cell index tuples.

shared_yaxes (kwarg, boolean or list, default=False)
    Assign shared y axes.
    If True, subplots in the same grid row have one common
    shared y-axis on the left-hand side of the gird.

    To assign shared y axes per subplot grid cell (see 'specs'),
    send list (or list of lists, one list per shared y axis)
    of cell index tuples.

start_cell (kwarg, 'bottom-left' or 'top-left', default='top-left')
    Choose the starting cell in the subplot grid used to set the
    domains of the subplots.

print_grid (kwarg, boolean, default=True):
    If True, prints a tab-delimited string representation of
    your plot grid.

Keyword arguments with variable defaults:

horizontal_spacing (kwarg, float in [0,1], default=0.2 / cols):
    Space between subplot columns.
    Applies to all columns (use 'specs' subplot-dependents spacing)

vertical_spacing (kwarg, float in [0,1], default=0.3 / rows):
    Space between subplot rows.
    Applies to all rows (use 'specs' subplot-dependents spacing)

subplot_titles (kwarg, list of strings, default=empty list):
    Title of each subplot.
    "" can be included in the list if no subplot title is desired in
    that space so that the titles are properly indexed.

specs (kwarg, list of lists of dictionaries):
    Subplot specifications.

    ex1: specs=[[{}, {}], [{'colspan': 2}, None]]

    ex2: specs=[[{'rowspan': 2}, {}], [None, {}]]

    - Indices of the outer list correspond to subplot grid rows
      starting from the bottom. The number of rows in 'specs'
      must be equal to 'rows'.

    - Indices of the inner lists correspond to subplot grid columns
      starting from the left. The number of columns in 'specs'
      must be equal to 'cols'.

    - Each item in the 'specs' list corresponds to one subplot
      in a subplot grid. (N.B. The subplot grid has exactly 'rows'
      times 'cols' cells.)

    - Use None for blank a subplot cell (or to move pass a col/row span).

    - Note that specs[0][0] has the specs of the 'start_cell' subplot.

    - Each item in 'specs' is a dictionary.
        The available keys are:

        * is_3d (boolean, default=False): flag for 3d scenes
        * colspan (int, default=1): number of subplot columns
            for this subplot to span.
        * rowspan (int, default=1): number of subplot rows
            for this subplot to span.
        * l (float, default=0.0): padding left of cell
        * r (float, default=0.0): padding right of cell
        * t (float, default=0.0): padding right of cell
        * b (float, default=0.0): padding bottom of cell

    - Use 'horizontal_spacing' and 'vertical_spacing' to adjust
      the spacing in between the subplots.

insets (kwarg, list of dictionaries):
    Inset specifications.

    - Each item in 'insets' is a dictionary.
        The available keys are:

        * cell (tuple, default=(1,1)): (row, col) index of the
            subplot cell to overlay inset axes onto.
        * is_3d (boolean, default=False): flag for 3d scenes
        * l (float, default=0.0): padding left of inset
              in fraction of cell width
        * w (float or 'to_end', default='to_end') inset width
              in fraction of cell width ('to_end': to cell right edge)
        * b (float, default=0.0): padding bottom of inset
              in fraction of cell height
        * h (float or 'to_end', default='to_end') inset height
              in fraction of cell height ('to_end': to cell top edge)

column_width (kwarg, list of numbers)
    Column_width specifications

    - Functions similarly to `column_width` of `plotly.graph_objs.Table`.
      Specify a list that contains numbers where the amount of numbers in
      the list is equal to `cols`.

    - The numbers in the list indicate the proportions that each column
      domains take across the full horizontal domain excluding padding.

    - For example, if columns_width=[3, 1], horizontal_spacing=0, and
      cols=2, the domains for each column would be [0. 0.75] and [0.75, 1]

row_width (kwargs, list of numbers)
    Row_width specifications

    - Functions similarly to `column_width`. Specify a list that contains
      numbers where the amount of numbers in the list is equal to `rows`.

    - The numbers in the list indicate the proportions that each row
      domains take along the full vertical domain excluding padding.

    - For example, if row_width=[3, 1], vertical_spacing=0, and
      cols=2, the domains for each row from top to botton would be
      [0. 0.75] and [0.75, 1]
r   NzZplotly.tools.make_subplots is deprecated, please use plotly.subplots.make_subplots insteadr>   )
stacklevel)rO   colsshared_xaxesshared_yaxes
start_cellrQ    )plotly.subplotsr1   r2   DeprecationWarningsubplotsmake_subplots)rO   rj   rk   rl   rm   rQ   rR   plotlys           r$   rr   rr      sY    z MM	;	 ??(( !!  r&   defaultz*plotly\.tools\.make_subplots is deprecatedc                     SSK Jn   [        X!5      nU" U 5      $ ! [        [        4 a&    [
        R                  " SR                  U5      5      ef = f)zReturns a new graph object.

OLD FUNCTION: this will *silently* strip out invalid pieces of the object.
NEW FUNCTION: no striping of invalid pieces anymore - only raises error
    on unrecognized graph_objs
r   r9   z#'{}' is not a recognized graph_obj.)rC   r:   getattrAttributeErrorrJ   r   PlotlyErrorrH   )objobj_typer:   clss       r$   get_graph_objr|     sX     -
j+
 s8O	 H% 
$$188B
 	

s	    6Ac                    [        U [        5      (       a;  [        5       n[        U R                  5       5       H  u  p#[	        U5      X'   M     U$ [        U [        5      (       a/  [        5       n[        U 5       H  u  pVU[	        U5      /-  nM     U$ [        U [        5      (       a/  U R                  SS5      nXp:w  a  [        R                  " S5        U$ U $ )z9Replaces '
' with '<br>' for all strings in a collection.rB   z<br>a  Looks like you used a newline character: '\n'.

Plotly uses a subset of HTML escape characters
to do things like newline (<br>), bold (<b></b>),
italics (<i></i>), etc. Your newline characters 
have been converted to '<br>' so they will show 
up right on your Plotly figure!)
rD   rK   listitems_replace_newline	enumeratestrreplacer1   r2   )ry   drT   vallindexentryss           r$   r   r     s    #tFSYY[)HC%c*AF *	C		F%cNLE"5)**A +	C		KKf%8MM2 
r&   c                    SSK Jn  SSKJn  Sn[	        U [
        5      (       a  U nOS[	        U [        5      (       a  SU 0nO9[	        X5      (       a  U R                  5       nSnO[        R                  " S5      eU(       a>  U(       d7   U" S
0 UD6R                  5       nUS   (       d  [        R                  " S	5      eU$ ! [        R                   a*  n[        R                  " SR                  U5      5      eS nAff = f)Nr   )rN   )
BaseFigureFdataTzuThe `figure_or_data` positional argument must be `dict`-like, `list`-like, or an instance of plotly.graph_objs.Figurea  Invalid 'figure_or_data' argument. Plotly will not be able to properly parse the resulting JSON. If you want to send this 'figure_or_data' to Plotly anyway (not recommended), you can set 'validate=False' as a plot option.
Here's why you're seeing this error:

{0}zEmpty data list found. Make sure that you populated the list of data objects you're sending and try again.
Questions? Visit support.plot.lyrn   )rC   rN   plotly.basedatatypesr   rD   rK   r~   to_dictr   rx   rH   PlotlyEmptyDataError)figure_or_datavalidate_figurerN   r   	validatedfigureerrs          r$   !return_figure_from_figure_or_datar     s    (/I.$''	ND	)	).)	N	/	/'')	$$S
 	
 y	%f%--/F f~113  M' %% 	(( 6#;
 
	s   	C C?%C::C?z#3D9970z#FF4136)scatter	histogramboxcatseqc                      \ rS rSr\SS j5       r\S 5       r\S 5       r\S 5       r\S 5       r	\S 5       r
\S	 5       r\S
 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       rSrg)FigureFactoryiA  Nc                 X    Uc  U n[         R                  " SR                  X5      5        g )NzIplotly.tools.FigureFactory.{} is deprecated. Use plotly.figure_factory.{})r1   r2   rH   )
old_method
new_methods     r$   _deprecatedFigureFactory._deprecatedB  s(    #J++16*+I	
r&   c                  J    [         R                  SS5        SSKJn  U" U 0 UD6$ )Ncreate_2D_densitycreate_2d_densityr   )r   )r   r   plotly.figure_factoryr   )argsrR   r   s      r$   r   FigureFactory.create_2D_densityL  s'    !!"57JK; $1&11r&   c                  H    [         R                  S5        SSKJn  U" U 0 UD6$ )Ncreate_annotated_heatmapr   )r   )r   r   r   r   )r   rR   r   s      r$   r   &FigureFactory.create_annotated_heatmapS  $    !!"<=B'888r&   c                  H    [         R                  S5        SSKJn  U" U 0 UD6$ )Ncreate_candlestickr   )r   )r   r   r   r   )r   rR   r   s      r$   r    FigureFactory.create_candlestickZ  s$    !!"67<!42622r&   c                  H    [         R                  S5        SSKJn  U" U 0 UD6$ )Ncreate_dendrogramr   )r   )r   r   r   r   )r   rR   r   s      r$   r   FigureFactory.create_dendrograma  $    !!"56; $1&11r&   c                  H    [         R                  S5        SSKJn  U" U 0 UD6$ )Ncreate_distplotr   )r   )r   r   r   r   )r   rR   r   s      r$   r   FigureFactory.create_distploth  s$    !!"349///r&   c                  H    [         R                  S5        SSKJn  U" U 0 UD6$ )Ncreate_facet_gridr   )r   )r   r   r   r   )r   rR   r   s      r$   r   FigureFactory.create_facet_grido  r   r&   c                  H    [         R                  S5        SSKJn  U" U 0 UD6$ )Ncreate_ganttr   )r   )r   r   r   r   )r   rR   r   s      r$   r   FigureFactory.create_ganttv  #    !!.16T,V,,r&   c                  H    [         R                  S5        SSKJn  U" U 0 UD6$ )Ncreate_ohlcr   )r   )r   r   r   r   )r   rR   r   s      r$   r   FigureFactory.create_ohlc}  s#    !!-05D+F++r&   c                  H    [         R                  S5        SSKJn  U" U 0 UD6$ )Ncreate_quiverr   )r   )r   r   r   r   )r   rR   r   s      r$   r   FigureFactory.create_quiver  #    !!/27d-f--r&   c                  H    [         R                  S5        SSKJn  U" U 0 UD6$ )Ncreate_scatterplotmatrixr   )r   )r   r   r   r   )r   rR   r   s      r$   r   &FigureFactory.create_scatterplotmatrix  r   r&   c                  H    [         R                  S5        SSKJn  U" U 0 UD6$ )Ncreate_streamliner   )r   )r   r   r   r   )r   rR   r   s      r$   r   FigureFactory.create_streamline  r   r&   c                  H    [         R                  S5        SSKJn  U" U 0 UD6$ )Ncreate_tabler   )r   )r   r   r   r   )r   rR   r   s      r$   r   FigureFactory.create_table  r   r&   c                  H    [         R                  S5        SSKJn  U" U 0 UD6$ )Ncreate_trisurfr   )r   )r   r   r   r   )r   rR   r   s      r$   r   FigureFactory.create_trisurf  s$    !!"238t.v..r&   c                  H    [         R                  S5        SSKJn  U" U 0 UD6$ )Ncreate_violinr   )r   )r   r   r   r   )r   rR   r   s      r$   r   FigureFactory.create_violin  r   r&   rn   N)r   
__module____qualname____firstlineno__staticmethodr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes__rn   r&   r$   r   r   A  s,   
 
 2 2 9 9 3 3 2 2 0 0 2 2 - - , , . . 9 9 2 2 - - / / . .r&   r   c                  x   [         R                  R                  [        S5      n Sn[         R                  R	                  U 5      (       d  U$ [        U S5       n [        R                  " U5      n[        U[        5      (       d  0 nSSS5        WR                  SU5      $ !   0 n N = f! , (       d  f       N)= f)a$  
Function to get the .config file's 'plotly_domain' without importing
the chart_studio package.  This property is needed to compute the default
value of the plotly.js config plotlyServerURL, so it is independent of
the chart_studio integration and still needs to live in

Returns
-------
str
z.configzhttps://plot.lyrtNplotly_domain)ospathjoinr   existsopenjsonloadrD   rK   get)config_filedefault_server_urlfconfig_dicts       r$   get_config_plotly_server_urlr     s     '',,z95K*77>>+&&!!	k4	 A	))A,Kk400 	 
! ???,>??		K 
!	 s   B+-B""B(&B++
B9)NN)FFF)r>   r>   F)r>   r>   FFztop-leftNr   ) __doc__r   r1   r   rs   r   r   plotly.filesr   DEFAULT_PLOTLY_COLORSREQUIRED_GANTT_KEYSPLOTLY_SCALESDEFAULT_FILLCOLORDEFAULT_HISTNORMALTERNATIVE_HISTNORMr%   formatwarningr7   rg   rr   filterwarningsrp   r|   r   r   _DEFAULT_INCREASING_COLOR_DEFAULT_DECREASING_COLORDIAG_CHOICESVALID_COLORMAP_TYPESobjectr   r   rn   r&   r$   <module>r      s     	 / #  2 l./~12 ~12  23	
 / _./ !12 o12 ~~. 0 !#34 
NN+ 
L,- , 23 n01  12!"  12#*  ( $ S - 3
rg"V 
	
nb 	  <>P
&8*\ & % .u~ k.F k.\@r&   