
    f                     z   d dl Z d dlZd dlZd dlZd dlmZ d dlmZ ddlm	Z	 ddlm
Z
 i Zi ddd	d
dddddddddddddd
dd
dddddddd
ddddddi ddd dd!dd"dd#dd$dd%dd&dd'dd(dd)dd*dd+dd,dd-dd.d/d0d1i d2d3d4d3d5d1d6dd7dd8d1d9d1d:dd;d
d<d3d=dd>d?d@ddAddBd3dCddDd3i dEddFddGd1dHd1dId/dJd3dKddLddMd
dNddOd
dPddQddRddSddTd3dUdi dVd3dWd3dXd
dYddZd3d[dd\dd]dd^dd_d?d`d3dad3dbd3dcd3ddd
deddfd
d3dddddd
dd
ddg
Z ej        dh          Z ej        di          Z ej        dj          ZddlZdm ZddnZdo Zdp Zdq Zdr Zds Zdt Zdu Zdv Zdw Zdx Zdy Zdz Zd{ Z d| Z!d} Z"d~ Z#d Z$d Z%d Z&d Z'd Z(dS )    Nunpack)warn   )UndefinedImageSize)UnsupportedImageFormat    !   "   #   $%   &
   '()*+,   -./0123456789:;<=>?@   A	   B   CDEFGHIJKLM   NOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrst)
uvwxyz{|}~z^\sz\s$z(\$?)([A-Z]{1,3})(\$?)(\d+)Fc                     | dk     rt          d| z             dS |dk     rt          d|z             dS | dz  } |rdnd}t          ||          }||z   t          |           z   S )aU  
    Convert a zero indexed row and column cell reference to a A1 style string.

    Args:
       row:     The cell row.    Int.
       col:     The cell column. Int.
       row_abs: Optional flag to make the row absolute.    Bool.
       col_abs: Optional flag to make the column absolute. Bool.

    Returns:
        A1 style string.

    r   zRow number %d must be >= 0NCol number %d must be >= 0r   r    )r   xl_col_to_namestr)rowcolrow_abscol_abscol_strs        T/var/www/ffwdstore.be/apps/py-env/lib/python3.11/site-packages/xlsxwriter/utility.pyxl_rowcol_to_cellr~   {   s     Qww)C/000t
Qww)C/000t1HC$cc"GS'**GWs3xx''    c                     |t           v rt           |         }nt          |          }|t           |<   |t          | dz             z   S )z
    Optimized version of the xl_rowcol_to_cell function. Only used internally.

    Args:
       row: The cell row.    Int.
       col: The cell column. Int.

    Returns:
        A1 style string.

    r   )	COL_NAMESrv   rw   )rx   ry   r|   s      r}   xl_rowcol_to_cell_fastr      sE     iC. %% 	#Sq\\!!r   c                     | }|dk     rt          d|z             dS |dz  }d}|rdnd}|rK|dz  }|dk    rd}t          t          d          |z   dz
            }||z   }t          |dz
  dz            }|K||z   S )	z
    Convert a zero indexed column cell reference to a string.

    Args:
       col:     The cell column. Int.
       col_abs: Optional flag to make the column absolute. Bool.

    Returns:
        Column style string.

    r   rt   Nr   ru   r      r2   )r   chrordint)ry   r{   col_numr|   	remainder
col_letters         r}   rv   rv      s     G{{)G3444tqLGG$cc"G
 *bL	>>I SI-122
 w& w{b())  *  Wr   c                 T   | sdS t                               |           }|                    d          }|                    d          }d}d}t          |          D ]2}|t	          |          t	          d          z
  dz   d|z  z  z  }|dz  }3t          |          dz
  }|dz  }||fS )z
    Convert a cell reference in A1 notation to a zero indexed row and column.

    Args:
       cell_str:  A1 style string.

    Returns:
        row, col: Zero indexed cell row and column indices.

    )r   r      r   r   r2   r   r   re_range_partsmatchgroupreversedr   r   )cell_strr   r|   row_strexpnry   charrx   s           r}   xl_cell_to_rowcolr      s      t  **Ekk!nnGkk!nnG D
C!!  D		CHH$q(RX66	 g,,
C1HC8Or   c                    | sdS t                               |           }|                    d          }|                    d          }|                    d          }|                    d          }|rd}nd}|rd}nd}d}d}t          |          D ]2}|t	          |          t	          d	          z
  dz   d
|z  z  z  }|dz  }3t          |          dz
  }	|dz  }|	|||fS )a!  
    Convert an absolute cell reference in A1 notation to a zero indexed
    row and column, with True/False values for absolute rows or columns.

    Args:
       cell_str: A1 style string.

    Returns:
        row, col, row_abs, col_abs:  Zero indexed cell row and column indices.

    )r   r   FFr   r   r
   r   TFr   r2   r   r   )
r   r   r{   r|   rz   r   r   ry   r   rx   s
             r}   xl_cell_to_rowcol_absr      s
     "!!  **Ekk!nnGkk!nnGkk!nnGkk!nnG   D
C!!  D		CHH$q(RX66	 g,,
C1HCWg%%r   c                     t          | |          }t          ||          }||t          d           dS ||k    r|S |dz   |z   S )aG  
    Convert zero indexed row and col cell references to a A1:B1 range string.

    Args:
       first_row: The first cell row.    Int.
       first_col: The first cell column. Int.
       last_row:  The last cell row.     Int.
       last_col:  The last cell column.  Int.

    Returns:
        A1:B1 style range string.

    N#Row and column numbers must be >= 0r*   r~   r   	first_row	first_collast_rowlast_colrange1range2s         r}   xl_ranger   $  s^     y)44Fx22F~2333t|f$$r   c                     t          | |dd          }t          ||dd          }||t          d           dS ||k    r|S |dz   |z   S )a\  
    Convert zero indexed row and col cell references to a $A$1:$B$1 absolute
    range string.

    Args:
       first_row: The first cell row.    Int.
       first_col: The first cell column. Int.
       last_row:  The last cell row.     Int.
       last_col:  The last cell column.  Int.

    Returns:
        $A$1:$B$1 style range string.

    TNr   r*   r   r   s         r}   xl_range_absr   ?  sf     y)T4@@Fx4>>F~2333t|f$$r   c                 T    t          ||||          }t          |           } | dz   |z   S )a  
    Convert worksheet name and zero indexed row and col cell references to
    a Sheet1!A1:B1 range formula string.

    Args:
       sheetname: The worksheet name.    String.
       first_row: The first cell row.    Int.
       first_col: The first cell column. Int.
       last_row:  The last cell row.     Int.
       last_col:  The last cell column.  Int.

    Returns:
        A1:B1 style range string.

    r   )r   quote_sheetname)	sheetnamer   r   r   r   
cell_ranges         r}   xl_range_formular   [  s3      iHhGGJ	**Is?Z''r   c                     |                                  s0|                     d          s|                     dd          } d| z  } | S )z
    Convert a worksheet name to a quoted  name if it contains spaces or
    special characters.

    Args:
       sheetname: The worksheet name. String.

    Returns:
        A quoted worksheet string.

    r   z''z'%s')isalnum
startswithreplace)r   s    r}   r   r   q  sT      'y';';C'@'@ '%%c400	 Y&	r   c                 P    d}| D ] }|t                               |d          z  }!|S )a}  
    Get the pixel width of a string based on individual character widths taken
    from Excel. UTF8 characters, and other unhandled characters, are given a
    default width of 8.

    Args:
       string: The string to calculate the width for. String.

    Returns:
        The string width in pixels. Note, Excel adds an additional 7 pixels of
        padding in the cell.

    r   r5   )CHAR_WIDTHSget)stringlengthr   s      r}   xl_pixel_widthr     s7     F + ++//$***Mr   c                     i ddddddddd	d
dddddddddddddddddddddd}| |v r||          } t          j        d |           st          d!| z             d"|                     d#                                          z   S )$Nblackz#000000bluez#0000FFbrownz#800000cyanz#00FFFFgrayz#808080greenz#008000limez#00FF00magentaz#FF00FFnavyz#000080orangez#FF6600pinkpurplez#800080redz#FF0000silverz#C0C0C0whitez#FFFFFFyellowz#FFFF00z#[0-9a-fA-F]{6}z$Color '%s' isn't a valid Excel colorFFr   )rer   r   lstripupper)colornamed_colorss     r}   xl_colorr     s*   	 	 			
 		 	 		 	9 		 	) 		 	) 	y 	) 	  	)!L& U#8%u-- =3e;<<< %,,s##))++++r   c                 P    t          |           }t          j        dd|          }|S )Nz^FFru   )r   r   sub)r   	rgb_colors     r}   get_rgb_colorr     s(    I vr9--Ir   c           
      2   g dddddidddddddddddiddiddddddidddddddddddiddiddddddidddddddddddiddidddddd	idddddddddddiddidd	dddd
id	ddd	ddd	dddd	idd	idd
ddddid
ddd
ddd
dddd
idd
iddddddidddddddddddiddiddddddidddddddddddddddddddddiddddddddddddddddddddd	id	ddd	ddd	ddd	ddd	dddd	dddd
id
ddd
ddd
ddd
ddd
dddd
ddddidddddddddddddddddddddiddddddddddddddddddiddiddddddddddddddddddiddiddddddddddddddddddidd	idddddddddddddddddd	idd
id	ddd	ddd	ddd	ddd	ddddd
iddid
ddd
ddd
ddd
ddd
dddddiddiddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd	dddddd	ddd	ddd	ddd	ddd	dddd
dddddd
ddd
ddd
ddd
ddd
dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddiddiddiddiddiddiddidddiddiddiddiddiddiddidddiddiddiddiddiddiddidddiddiddiddiddiddiddidddiddiddiddiddiddiddidddiddiddidd iddiddiddiddd!idd"idd#idd$idd%idd&idd'iddd(idd)iddidd*idd*idd(idd)iddd+iddidd
iddiddiddidd	idddiddidd
iddiddiddidd	id}||          S ),Nr$   z-0.499984740745262)themetintr   r%   z0.39997558519241921)seriesnegativemarkersfirstlasthighlowr&   r'   r(   r)   z-0.249977111117893r    z0.79998168889431442r!   z0.499984740745262z0.249977111117893z0.34998626667073579rgbFF323232FFD00000FF000000FF0070C0FF376092FF5F5F5FFFFFB620FFD70077FF5687C2FF359CEBFF56BE79FFFF5055FF777777FFC6EFCEFFFFC7CEFF8CADD6FFFFDC47FFFFEB9CFF60D276FFFF5367FF00B050FFFF0000FFFFC000r#    )style_idstyless     r}   get_sparkline_styler     s-   N #-ABB #!$.BCC",ABB!+@AAcNS>	
 	
N !$-ABB #!$.BCC",ABB!+@AAcNS>	
 	
N( !$-ABB #!$.BCC",ABB!+@AAcNS>	
 	
'N: !$-ABB #!$.BCC",ABB!+@AAcNS>	
 	
9NL !$-ABB #!$.BCC",ABB!+@AAcNS>	
 	
KN^ !$-ABB #!$.BCC",ABB!+@AAcNS>	
 	
]Np !$-ABB #!$.BCC",ABB!+@AAcNS>	
 	
oNB !$-ABB #!$.BCC",@AA!+?@@!+?@@ *>??	
 	
ANT !$-ABB #!$.BCC",@AA!+?@@!+?@@ *>??	
 	
SNf !$-ABB #!$.BCC",@AA!+?@@!+?@@ *>??	
 	
eNx !$-ABB #!$.BCC",@AA!+?@@!+?@@ *>??	
 	
wNJ !$-ABB #!$.BCC",@AA!+?@@!+?@@ *>??	
 	
IN\ !$-ABB #!$.BCC",@AA!+?@@!+?@@ *>??	
 	
[Nn n #!$.BCC",@AA!+?@@!+?@@ *>??	
 	
mN@ n #!$.BCC",@AA!+?@@!+?@@ *>??	
 	
NR n #!$.BCC",@AA!+?@@!+?@@ *>??	
 	
QNd n #!$.BCC",@AA!+?@@!+?@@ *>??	
 	
cNv n #!$.BCC",@AA!+?@@!+?@@ *>??	
 	
uNH n #!$.BCC",@AA!+?@@!+?@@ *>??	
 	
GNZ !$-BCC"%/CDD!$.CDD",@AA!+?@@!+?@@ *>??	
 	
YNl !$-BCC"%/CDD!$.CDD",@AA!+?@@!+?@@ *>??	
 	
kN~ !$-BCC"%/CDD!$.CDD",@AA!+?@@!+?@@ *>??	
 	
}NP !$-BCC"%/CDD!$.CDD",@AA!+?@@!+?@@ *>??	
 	
ONb !$-BCC"%/CDD!$.CDD",@AA!+?@@!+?@@ *>??	
 	
aNt !$-BCC"%/CDD!$.CDD",@AA!+?@@!+?@@ *>??	
 	
sNF !$-@AA"%/BCC!$.ABB",?@@!+>??!+>?? *=>>	
 	
ENX !$-BCC"%/CDD!$.BCC",@AA!+?@@!+?@@ *>??	
 	
WNj j)
+z*Z(J'J':&	
 	
iN| j)
+z*Z(J'J':&	
 	
{NN j)
+z*Z(J'J':&	
 	
MN` j)
+z*Z(J'J':&	
 	
_Nr j)
+z*Z(J'J':&	
 	
qND	 j)
+z*Z(J'J':&	
 	
C	NV	 j)
+z*Z(J'J':&	
 	
U	Nh	 j)
+z*Z(J'J':&	
 	
g	Nz	 n #~s^cNcNS>	
 	
y	NL
 n #~s^cNcNS>	
 	
K
NF`
 (r   c                 z    t          | t          j        t          j        t          j        t          j        f          S )N)
isinstancedatetimedatetime	timedelta)dts    r}   supported_datetimer     s,    
Xx}h>PQ  r   c                 d    |r|                      d           } n| j        rt          d          | S )N)tzinfozExcel doesn't support timezones in datetimes. Set the tzinfo in the datetime/time object to None or use the 'remove_timezone' Workbook() option)r   r   	TypeError)dt_objremove_timezones     r}   remove_datetime_timezoner  #  sI      t,,= 	>   Mr   c                 d   | }d}|rt          j         ddd          }nt          j         ddd          }t          | t           j                   rt          | |          } | |z
  }nt          | t           j                  r7t           j                             |                                           } | |z
  }n~t          | t           j                  r6t           j                             ||           } t          | |          } | |z
  }n.t          | t           j                  rd}| }nt          d          |j
        t          |j                  t          |j                  d	z  z   d
z  z   }t          |t           j                   r|                                 dk    r|dz  }|s|s|dk    r|dz  }|S )NFip  r   ik  rA      Tz$Unknown or unsupported datetime typeg    .AiQ )il  r   r   ;   )r   r   r  r   fromordinal	toordinalr   combiner   r  daysfloatsecondsmicrosecondsisocalendar)r  	date_1904r  	date_typeis_timedeltaepochdelta
excel_times           r}   datetime_to_excel_datetimer  4  s    IL 0!$1-- !$B// &(+,, @)&/BB	FHM	*	* @"..v/?/?/A/ABB	FHM	*	* @"**5&99)&/BB	FH.	/	/ @>??? emuU%7883>>	 J )X.// F4F4F4H4H M 5 5
 	a
  \ j2ooa
r   c                 r    t                               |           st                              |           rdS dS )NTF)
re_leadingsearchre_trailing)r   s    r}   preserve_whitespacer  j  s9        K$6$6v$>$> tur   c                    d}d}d}d}|s%t          | d          }|                                }n|                                }t          j        |                                          }t          j                            |           }	t          d|dd                   d         }
t          d|d d                   d         }t          d	|d d                   d         }t          d
|d d                   d         }t          d|dd                   d         }t          d|d d                   d         }d}d}d}d}|
|k    rt          |          \  }}}}}n|dk    rt          |          \  }}}}}n||k    rt          |          \  }}}nl|dk    rt          |          \  }}}}}nP|dk    r||k    rt          |          \  }}}}}n.||k    rt          |          \  }}}}}nt!          d| z            |r|st#          d| z            |s|                                 |dk    rd}|dk    rd}||||	|||fS )Nr   `   rb3sr   r   >Hr   2s<L4s(   ,   s   PNGs   BMs    EMFs   GIF8i  l   M5 z-%s: Unknown or unsupported image file format.z%%s: no size data found in image file.)openreadgetvaluehashlibsha256	hexdigestospathbasenamer   _process_png_process_jpg_process_bmp_process_wmf_process_emf_process_gifr   r   close)filename
image_dataheightwidthx_dpiy_dpifhdatadigest
image_namemarker1marker2marker3marker4marker5marker6
png_marker
bmp_marker
emf_marker
gif_marker
image_types                        r}   get_image_propertiesrK  s  s   FEEE %(D!!wwyy ""$$^D!!++--F !!(++J T4!9%%a(GT48$$Q'GT48$$Q'GT48$$Q'GdDBK((!,GT48$$Q'GJJJJ*4@4F4F1UFE55	F		4@4F4F1UFE55	J		&24&8&8#UFF	J		4@4F4F1UFE55	A'Z//4@4F4F1UFE55	J		4@4F4F1UFE55 %;hF
 
 	

  U U !H8!STTT 



 zzzzufj%FFr   c                    d}t          |           }d}d}d}d}d}|s:||k     r3t          d| |dz   |dz                      d         }t          d| |dz   |dz                      d         }	|	dk    rHt          d| |dz   |d	z                      d         }t          d| |d	z   |d
z                      d         }|	dk    r|t          d| |dz   |d	z                      d         }
t          d| |d	z   |d
z                      d         }t          d| |d
z   |dz                      d         }|dk    r
|
dz  }|dz  }|	dk    rd},||z   d	z   }|s||k     3d||||fS )Nr5   Fr   r  z>Ir   r#  s   IHDRrA      s   pHYsrV      r   g
F%u?s   IENDTpnglenr   )r=  offsetdata_length
end_markerr9  r8  r:  r;  r   marker	x_density	y_densityunitss                r}   r/  r/    s   Fd))KJEFEE  &Vk11d6A:
#:;<<Q?d6A:
#:;<<Q? W4fqj6B;&>!?@@CED$v{Vb['@"ABB1EF WtT&1*v{*B%CDDQGItT&2+*C%DEEaHI3Vb[6B;%> ?@@CEzz!F*!F*WJ&2%/  &Vk112 %--r   c                    d}t          |           }d}d}d}d}d}|si||k     rbt          d| |dz   |dz                      d         }t          d| |dz   |dz                      d         }	|dz  dk    rZ|d	k    rT|d
k    rN|dk    rHt          d| |dz   |dz                      d         }t          d| |dz   |dz                      d         }|dk    rt          d| |dz   |dz                      d         }
t          d| |dz   |dz                      d         }t          d| |dz   |dz                      d         }|
dk    r|}|}|
dk    r
|dz  }|dz  }|dk    rd}|dk    rd}|dk    rd}[||	z   dz   }|s||k     bd||||fS )Nr   Fr   r  r   r   i  i  i  i  i  r   r   r3   i  rV   r   rA      rM  r   gRQ@i  TjpegrP  )r=  rR  rS  rT  r9  r8  r:  r;  rU  r   rX  rV  rW  s                r}   r0  r0    s    Fd))KJEFEE  '%Vk11d6A:
#:;<<Q?d6A:
#:;<<Q?
 f_''&  &  &  D$vzFQJ'>"?@@CF4fqj6A:&=!>??BE V3Vb[6B;%> ?@@CEtT&2+*C%DEEaHItT&2+*C%DEEaHIzz!!zz!D(!D( zzzzVJ&1$O  '%Vk11R 5&%..r   c                     d}d}t          d| dd                   d         }t          d| dd                   d         }d||||fS )Nr  <hr   r5   r   r   gifr   )r=  r:  r;  r9  r8  s        r}   r4  r4    sU    EE4ac##A&ED$qt*%%a(F%--r   c                     t          d| dd                   d         }t          d| dd                   d         }d||fS )Nr"        r   r   bmpr   )r=  r9  r8  s      r}   r1  r1  %  sG    4be%%a(ED$r"u+&&q)F%r   c                    d}d}t          d| dd                   d         }t          d| dd                   d         }t          d| dd                   d         }t          d| dd                   d         }t          d	| dd
                   d         }t          ||z
  |z            |z  }t          ||z
  |z            |z  }	d||	||fS )Nr  r]  r   r5   r   r   rA   rZ  z<HrM  wmf)r   r  )
r=  r:  r;  x1y1x2y2inchr9  r8  s
             r}   r2  r2  ,  s    EE 
d1Q3i	 	 	#B	d1R4j	!	!!	$B	d2b5k	"	"1	%B	d2b5k	"	"1	%B $RU$$Q'D 27e#$$t+EBGu$%%,F%--r   c                 X   t          d| dd                   d         }t          d| dd                   d         }t          d| dd                   d         }t          d| dd                   d         }||z
  }||z
  }t          d| dd                   d         }t          d| dd	                   d         }t          d| d	d
                   d         }	t          d| d
d                   d         }
d|	|z
  z  }d|
|z
  z  }|dz  |z  }|dz  |z  }|dz  }|dz  }d||||fS )Nz<lr5   rA   r   rM               $   r$  g{Gz?gffffff9@r   emfr   )r=  bound_x1bound_y1bound_x2bound_y2r9  r8  frame_x1frame_y1frame_x2frame_y2width_mm	height_mmr:  r;  s                  r}   r3  r3  A  s_    dD2J''*HdDBK((+HdDBK((+HdDBK((+H xE F dDBK((+HdDBK((+HdDBK((+HdDBK((+H x(*+H8+,I DL8#ETMI%E 
QJE
aKF%--r   )FF)F))r   r)  r,  r   structr   warningsr   
exceptionsr   r   r   r   compiler  r  r   r~   r   rv   r   r   r   r   r   r   r   r   r   r   r   r  r  r  rK  r/  r0  r4  r1  r2  r3  r   r   r}   <module>r     sb     				 				             * * * * * * . . . . . .	``` ` 	`
 ` ` ` ` ` ` ` ` ` ` `  !`" #` `$ %`& '`( )`* +`, -`. /`0 1`2 3`4 5`6 7`8 9`: ;`< =`> ?`@ A`B C`D E` ` `F G`H I`J K`L M`N O`P Q`R S`T U`V W`X Y`Z [`\ ]`^ _`` a`b c`d e`f g` ` `h i`j k`l m`n o`p q`r s`t u`v w`x y`z 	!{`| }`~ `@ A`B C`D E`F G`H I` ` `J K`L M`N O`P Q`R S`T U`V W`X Y`Z [`\ ]`^ _`` a`b c`d e`f g`h i`j k` `l 
	
		
	
	
	
	
	
	
` ` `F RZ
bj  :;;( ( ( (<" " "*% % % %P  @+& +& +&\% % %6% % %8( ( (,  .  *, , ,B  Q Q Qh
    "3 3 3l  EG EG EGP%. %. %.P4/ 4/ 4/n. . .     . . .* .  .  .  .  .r   