
    xZi                       S SK Jr  S SKJr  S SKJrJr  SSK7  SSKJrJ	r	  SSK
JrJrJrJrJr  SSK7  S rS rSr " S	 S
\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      rS r\\\\\\\ \!\"\0r#\$S\%S\S\!S\&S\'S\(S0r) " S S\5      r*\*" \$\+" S5      5      r, " S  S!\5      r-Sr. " S" S#\5      r/g$)%    )print_function)array)calcsizeunpack   )*)Formatnearest_colour_index)FMLA_TYPE_CELLFMLA_TYPE_SHAREDdecompile_formuladump_formularangename2d))show_formulasr   )show_grid_linesr   )show_sheet_headersr   )panes_are_frozenr   )show_zero_valuesr   )automatic_grid_line_colourr   )columns_from_right_to_leftr   )show_outline_symbolsr   )'remove_splits_if_pane_freeze_is_removedr   )sheet_selectedr   )sheet_visibler   )show_in_page_break_previewr   c                   x   \ rS rSrSrSrSrSrSr0 r	0 r
/ r/ r/ r0 rSrSrSrSrSrSrSrSrSr/ r0 r0 rSrSrSrSrSrSr / r!/ r"S r#S r$S	 r%S
 r&S r'S r(S r)S r*S(S jr+S(S jr,S(S jr-S(S jr.S(S jr/S(S jr0\.r1S r2S r3S r4S r5S r6S r7S)S jr8S*S jr9S*S jr:S r;S r<S  r=S! r>S" r?S# r@S$ rAS% rBS& rCS'rDg)+Sheet2   a:  
Contains the data for one worksheet.

In the cell access functions, ``rowx`` is a row index, counting from
zero, and ``colx`` is a column index, counting from zero.
Negative values for row/column indexes and slice positions are supported in
the expected fashion.

For information about cell types and cell values, refer to the documentation
of the :class:`Cell` class.

.. warning::

  You don't instantiate this class yourself. You access :class:`Sheet`
  objects via the :class:`~xlrd.book.Book` object that
  was returned when you called :func:`xlrd.open_workbook`.
 Nr   (   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   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   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   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   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   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   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   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   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   c                    Xl         UR                  U l        X l        UR                  U l        [	        S[
        /5      U l        [	        SS/5      U l        X0l        X@l	        UR                  U l
        UR                  U l        UR                  U l        U R                  (       a  U R                  U l        OU R                  U l        UR                   U l        SU l        SU l        SU l        SU l        SU l        SU l        / U l        / U l        / U l        S U l        S U l        S U l        SU l        SU l        SU l        SU l         0 U l!        0 U l"        / U l#        / U l$        / U l%        0 U l&        / U l'        / U l(        / SQU l)        URT                  U   U l+        [X         H  u  pV[[        XU5        M     SU l.        SU l/        SU l0        S U l1        / U l2        0 U l3        0 U l4        SU l5        SU l6        SU l7        SU l8        S U l9        S U l:        0 U l;        U R                  S	:  a  S
U l<        OSU l<        SU l=        SU l>        g )NBhr   )r   r   r   r   @   <   d   P   i    @     )?bookbiff_version	_positionlogfiler   XL_CELL_EMPTYbtbfnamenumber	verbosityformatting_inforagged_rowsput_cell_raggedput_cellput_cell_unragged_xf_index_to_xl_type_mapnrowsncols_maxdatarowx_maxdatacolx	_dimnrows	_dimncols_cell_values_cell_types_cell_xf_indexesdefcolwidthstandardwidthdefault_row_heightdefault_row_height_mismatchdefault_row_hiddendefault_additional_space_abovedefault_additional_space_belowcolinfo_maprowinfo_mapcol_label_rangesrow_label_rangesmerged_cellsrich_text_runlist_maphorizontal_page_breaksvertical_page_breaks_xf_index_stats_sheet_visibility
visibility_WINDOW2_optionssetattrfirst_visible_rowxfirst_visible_colxgridline_colour_indexgridline_colour_rgbhyperlink_listhyperlink_mapcell_note_map$cooked_page_break_preview_mag_factorcooked_normal_view_mag_factor$cached_page_break_preview_mag_factorcached_normal_view_mag_factorscl_mag_factor_ixfe_cell_attr_to_xfxutter_max_rowsutter_max_cols_first_full_rowx)selfr*   positionr1   r2   attrdefvals          d/var/www/eduai.edurigo.com/question_generate/ques_gen_env/lib/python3.13/site-packages/xlrd/sheet.py__init__Sheet.__init__?  s4   	 --!||m_-bT"	#33++ 00DM 22DM(,(E(E%

 "!"&+,("#./+./+ " "%'"&(#$&!+008,LDD' -"#"#%)"#'   571-0* 561-.*"
!#""'D"'D! "    c                     U R                   (       a  U R                  X5      nOSn[        U R                  U   U   U R                  U   U   U5      $ )z3
:class:`Cell` object in the given row and column.
N)r4   cell_xf_indexCellrA   r@   rh   rowxcolxxfxs       rl   cell
Sheet.cell  sX     $$T0CCT"4(d#D)
 	
ro   c                 &    U R                   U   U   $ )z.Value of the cell in the given row and column.r@   rh   rt   ru   s      rl   
cell_valueSheet.cell_value  s      &t,,ro   c                 &    U R                   U   U   $ )zg
Type of the cell in the given row and column.

Refer to the documentation of the :class:`Cell` class.
rA   r{   s      rl   	cell_typeSheet.cell_type  s     %d++ro   c                    U R                  5         U R                  U   U   nUS:  a  U R                  S==   S-  ss'   U$  U R                  U   R                  nUS:  a  U R                  S==   S-  ss'   U$   U R                  U   R                  nUS:X  a  SnU R                  S==   S-  ss'   U$ ! [
         a     NGf = f! [
         a    U R                  S==   S-  ss'    gf = f)z
XF index of the cell in the given row and column.
This is an index into :attr:`~xlrd.book.Book.xf_list`.

.. versionadded:: 0.6.1
r#   r   r            )req_fmt_inforB   rR   rK   xf_indexKeyErrorrJ   rs   s       rl   rq   Sheet.cell_xf_index  s    	##D)$/8  #q(#J	""4(11CRx$$Q'1,'
 	""4(11Cby#  #q(#J  		  	  #q(#	s$   7B7 =9C 7
CC!C+*C+c                 2    [        U R                  U   5      $ )z
Returns the effective number of cells in the given row. For use with
``open_workbook(ragged_rows=True)`` which is likely to produce rows
with fewer than :attr:`~Sheet.ncols` cells.

.. versionadded:: 0.7.2
)lenr@   )rh   rt   s     rl   row_lenSheet.row_len  s     4$$T*++ro   c                     [        [        U R                  U   5      5       Vs/ s H  nU R                  X5      PM     sn$ s  snf )zC
Returns a sequence of the :class:`Cell` objects in the given row.
)xranger   r@   rw   r{   s      rl   row	Sheet.row  sG     s4#4#4T#:;<
< IId!<
 	
 
s   Ac                 B   ^  U 4S j[        T R                  5       5       $ )z3Returns a generator for iterating through each row.c              3   F   >#    U  H  nTR                  U5      v   M     g 7fN)r   ).0indexrh   s     rl   	<genexpr>!Sheet.get_rows.<locals>.<genexpr>  s     ?->E->s   !)ranger:   rh   s   `rl   get_rowsSheet.get_rows  s    ?U4::->??ro   c                 N    Uc  U R                   U   US $ U R                   U   X# $ )z=
Returns a slice of the types of the cells in the given row.
Nr   rh   rt   
start_colxend_colxs       rl   	row_typesSheet.row_types  s8     ##D)*+66%j::ro   c                 N    Uc  U R                   U   US $ U R                   U   X# $ )z>
Returns a slice of the values of the cells in the given row.
Nrz   r   s       rl   
row_valuesSheet.row_values  s8     $$T*:;77  &z;;ro   c                     [        U R                  U   5      nUS:  a  X$-  nUS:  a  SnUb  X4:  a  UnO
US:  a  X4-  n[        X#5       Vs/ s H  nU R                  X5      PM     sn$ s  snf )z@
Returns a slice of the :class:`Cell` objects in the given row.
r   )r   r@   r   rw   )rh   rt   r   r   ncru   s         rl   	row_sliceSheet.row_slice  s     ""4()>JA~
x}H\NH z4
4 IId!4
 	
 
s   A+c                     U R                   nUS:  a  X$-  nUS:  a  SnUb  X4:  a  UnO
US:  a  X4-  n[        X#5       Vs/ s H  nU R                  XQ5      PM     sn$ s  snf )zC
Returns a slice of the :class:`Cell` objects in the given column.
r   )r:   r   rw   rh   ru   
start_rowxend_rowxnrrt   s         rl   	col_sliceSheet.col_slice  sz     ZZ>JA~
x}H\NH z4
4 IId!4
 	
 
s   Ac                     U R                   nUS:  a  X$-  nUS:  a  SnUb  X4:  a  UnO
US:  a  X4-  n[        X#5       Vs/ s H  nU R                  U   U   PM     sn$ s  snf )zA
Returns a slice of the values of the cells in the given column.
r   )r:   r   r@   r   s         rl   
col_valuesSheet.col_values  s     ZZ>JA~
x}H\NH z4
4 d#D)4
 	
 
   A c                     U R                   nUS:  a  X$-  nUS:  a  SnUb  X4:  a  UnO
US:  a  X4-  n[        X#5       Vs/ s H  nU R                  U   U   PM     sn$ s  snf )z@
Returns a slice of the types of the cells in the given column.
r   )r:   r   rA   r   s         rl   	col_typesSheet.col_types)  s     ZZ>JA~
x}H\NH z4
4 T"4(4
 	
 
r   c           
         U R                   S:  a,  [        U R                  SU R                  U R                  5        U R
                  (       a  S=pU R                  nU R                  nU R
                   Hr  nUu  pgpSUs=::  a  Us=:  a  U::  a  O  OSUs=::  a  U	s=:  a  U::  d/  O  [        U R                  SU R                  U R                  U5        Xq:  a  UnX:  d  Mp  U	nMt     X R                  :  a  X l        SU l
        XR                  :  a%  U R                  US-
  S[        [        S5      S5        U R                   S:  a  U R                  U R                  :w  d  U R                  U R                  :w  aX  [        U R                  S	U R                  U R                  U R                  U R                  U R                  U R                  5        U R                   (       d  U R                  n
U R"                  nU R$                  nU R&                  nU R(                  nU R                  S:X  a  U R                  nOU R                  n[+        U5       He  nUU   n[-        U5      nU
U-
  nUS:  d  M   [        S5      /U-  UU   US & U R.                  U-  UUS & U(       d  MP  U R0                  U-  UU   US & Mg     g g )
Nr   z$tidy_dimensions: nrows=%d ncols=%d 
r   r   z6*** WARNING: sheet #%d (%r), MERGEDCELLS bad range %r
r   r#   z?NOTE *** sheet %d (%r): DIMENSIONS R,C = %d,%d should be %d,%d
)r3   fprintfr-   r:   r;   rN   re   rf   r2   r1   rg   r7   r.   UNICODE_LITERALr>   r?   r5   rA   r@   rB   r4   r   r   r/   r0   )rh   r   r   umaxrowsumaxcolscrangerlorhiclochir;   s_cell_typess_cell_valuess_cell_xf_indexes
s_fmt_infouboundrt   trowrlennextras                       rl   tidy_dimensionsSheet.tidy_dimensions@  sX   >>Q7

DJJ
 ""KB**H**H++%+"#S232(2A<Vs<Vh<VDLLQTYY8 8#R8#R , JJ
(*%JJ bdA}ob6I2NNNat~~-t~~1MR		



	 JJE++L --M $ 5 5--J$$*..v#D)4yA:2A"2E1F1OM$'."&''F"2DK!z9=69I)$/6 '  ro   c                 R   Uc  U R                   U   nSUs=::  a  U R                  :  d   e   eSUs=::  a  U R                  :  d   e   eU R                  n US-   nU R                  U:  a  U R
                  R                  nU R                  R                  n	U R                  R                  n
U R                  nU R                  n[        U R                  U5       H*  nU" US-  5        U	" / 5        U(       d  M  U
" US-  5        M,     Xpl        U R
                  U   nU R                  U   nU(       a  U R                  U   n[        U5      nX R                  :  a
  US-   U l        UU-
  nU(       d;  UR                  U5        UR                  U5        U(       a  WR                  U5        g US:  aB  US-  nU R                  U-  UUS & [        S5      /U-  UUS & U(       a  U R                  U-  WUS & X>U'   XOU'   U(       a  UWU'   g g !   [        SXU R                   S9  e = f)Nr   r   r   r7   file)r9   rf   re   r4   r:   rA   appendr@   rB   r/   r0   r   r   r;   r   printr-   )rh   rt   ru   ctypevaluer   fmt_infor   sctascvascxar/   r0   _unused	types_row
values_rowfmt_rowltr	num_emptys                      rl   r6   Sheet.put_cell_ragged}  s   =11(;ED.4.......D.4.......''1	BzzB''..((//,,33WWWW%djj"5GaLHxR!V	  6
  
((.I**40J//5i.Czz!!AX
s
I   '!!%(NN8,1}Q	 #'''I"5	#$$3B$7#89#D
34 $(GGi$7GCDM#dO$t ( 	*dt||<s   B H <B3H 0AH H&c           	         Uc  U R                   U   n X0R                  U   U'   X@R                  U   U'   U R                  (       a  XPR                  U   U'   g g ! [
         Ga{    US-   nUS-   nSUs=::  a  U R                  ::  d   e   eSUs=::  a  U R                  ::  d   e   eXpR                  :  a<  Xpl        X`R                  :  a  SU l
        OXR                  s=:  a  S:  a	  O  OXl
        X`R                  ::  a  U R                  U   nU R                  [        U5      -
  n	U	S:  a  UR                  U R                  U	-  5        U R                  (       a+  U R                  U   R                  U R                  U	-  5        U R                  U   R                  [        S5      /U	-  5        OU R                  R                   n
U R                  R                   nU R                  R                   nU R                  nU R                  nU R                  nU R                  n[#        U R                  U5       H5  nU
" X-  5        U" [        S5      /U-  5        U(       d  M+  U" X-  5        M7     X`l	         X0R                  U   U'   X@R                  U   U'   U R                  (       a  XPR                  U   U'    g  g !   [%        SXU R&                  S9  e = f  [%        SXU R&                  S9  e = f)Nr   r   r   r   r7   r   )r9   rA   r@   r4   rB   
IndexErrorrf   re   r;   r:   rg   r   extendr/   r0   r   r   r   r   r-   )rh   rt   ru   r   r   r   r   r   r   r   r   r   r   r   r/   r0   r   s                    rl   r8   Sheet.put_cell_unragged  s   =11(;E@	+0T"4(,1d#D)##4<%%d+D1 $ 8	 BB1d11111111d1111111JJ

 

? -/D)116B6,0)ZZ ''-c$i/A:KK& 01++--d3::477V;KL%%d+22OB4G3H63QR''..((//,,33//ZZWWWW%djj"5GM/"-.34xRW  6  
/4  &t,05!!$'-''8@))$/5 (j$4<<@	*dt||<s&   AA H	K6'K6<AKKK6c                 8   SnU=(       d    U R                   S:  nU=(       d    U R                   S:  nSnSnUR                  nU R                  Ul        [        [        [        [
        [        [        4nU R                  n	[        n
UR                  nU R                  nU R                  nU=(       a    UR                  n0 n0 nSn U" 5       u  nnnU[        :X  a  U
" SUS S 5      u  nnnnU	" UUS UU5        GOU[        :X  ag  U
" SU5      u  nnnnU	" UU[         UR"                  U   U5        U(       a3  UR                  R%                  U5      nU(       a  UU R&                  UU4'   GOU[(        :X  ae  U
" SUSS	 5      u  nnnU[*        :  a.  [-        US	UR.                  =(       d    UR1                  5       SS
9nO[3        US	SS
9nU	" UU[         UU5        GOU[4        :X  Ga?  U
" SUSS	 5      u  nnnU[*        :  a  [7        US	UR.                  =(       d    UR1                  5       SS
9u  nn[9        UU   5      nUS-  n/ n[;        U5       H)  nUR=                  [        SUUUS-    5      5        US-  nM+     U[?        U5      :X  d   eOs[A        US	SS
9u  nn[        SUUUS-    5      S   nUS-  n/ n[;        U5       H)  nUR=                  [        SUUUS-    5      5        US-  nM+     U[?        U5      :X  d   eU	" UU[         UU5        UU R&                  UU4'   GOU[B        :X  a,  U
" SUS S	 5      u  nnn[E        US	S 5      nU	" UUS UU5        GOU[F        :X  am  U
" SUSS 5      u  nn U
" SUSS  5      u  n!Sn[;        U U!S-   5       H9  nU
" SUUUS-    5      u  n[E        UUS-   US	-    5      nUS	-  nU	" UUS UU5        M;     GO"U[H        :X  Gam  U(       d  GM!  U
" SUSS 5      u  nn"n#SUs=::  a  U RJ                  :  d(  O  [M        SUU RJ                  4-  U RN                  S9  GMp  U"U#4n$UR%                  U$5      n%U%c  [Q        5       =UU$'   n%U"S-  U%l)        U"S-	  S-  U%l*        U#S-  U%l+        U#S-	  S-  U%l,        U#S-	  S-  U%l-        U#S	-	  S-  U%l.        U#S-	  S-  U%l/        U#S-	  S-  U%l0        U#S-	  S-  U%l1        U#S-	  S-  U%l2        U%R^                  (       d  SU%l0        U%U Rf                  U'    U(       a@  [M        SUU"U#U RN                  S9  U%Rm                  U RN                  SU Rj                  U4-  S9  GOU[n        ;   Ga  US:  a  U
" S USS 5      u  nnnn&n'O>US!:  a  U
" S USS 5      u  nnnn&n'O%U
" S"USS 5      u  nnn(n&n'U Rq                  U(UU5      nU(       a>  [i        U RN                  S#UU5        U
" SUS$S% 5      S   n)[s        UUS%S  U)[t        UUSUS&9  U&S	S' S(:X  Ga  [9        U&S   5      n*U*S:X  Ga>  Sn+ UR                  5       u  n,n-n.U,[v        :X  d
  U,[x        :X  a  Sn+OU,[        :X  a6  U
" S)U.S S 5      u  n/n0n1n2n3n4U(       a  [i        U RN                  S*U/U0U1U2U35        OkU,[        :X  aM  U
" S+U.S S 5      u  n/n0n1n2n5n4U(       a2  [i        U RN                  S,U/U0U1U2U55        [s        UU.SS  U4[z        SUUUS-9  OU,U;  a  [}        S.U,-  5      eU+(       d2  UR                  5       u  n,n6n.U,[v        [x        4;  a  [}        S/U,-  5      eU R                  U.5      nU R                  UU[         UU5        GOU*S:X  a   [9        U&S   5      n7U	" UU[        U7U5        GOU*S:X  a   [9        U&S   5      n7U	" UU[        U7U5        GOZU*S0:X  a  U	" UU[         S1U5        GOB[}        S2U*-  5      eU
" S3U&5      S   nU	" UUS UU5        GOU[        :X  a/  U
" S4US S' 5      u  nnnn7n8[        [        4U8   n9U	" UUU9U7U5        GOU[        :X  a  U(       d  GMa  [        5       n:U
" S5US S 5      u  n;n<U:lE        U:l0        n'SU;s=::  a  U<s=::  a  S6::  d  O  [M        S7U;U<4-  U RN                  S9  A:GM  [        U:U'S85        [;        U;U<S-   5       H  nUS9:  a    OU:U R                  U'   M     U(       aT  [i        U RN                  S:U Rj                  U;U<U:R                  U:R`                  U'5        U:Rm                  U RN                  S;S9  GOU[        :X  a  U
" SUS S 5      u  U lI        GOU[        :X  a:  US:w  a  [M        S<U[        U5      U RN                  S9  U
" SUS S 5      u  U lL        GOzU[        :X  at  U(       d  GM  US=:X  d   eUSS S>:X  d   e[        S?USS= 5      n=/ n>U= H.  n?[;        S@5       H  n@U>R=                  U?S-  5        U?S-  n?M     M0     [        U>5      U lO        GOU[        :X  a,  U(       d  G	MF  U
" SUS S	 5      u  nnnU	" UU[        S1U5        GOU[        :X  ah  U(       d  G	M|  US-	  nBU
" SAUB-  U5      nCUCS S u  nnDUCS   nEUBUES-   UD-
  :X  d   eSn[;        WDWES-   5       H  nU	" UU[        S1WCU   5        US-  nM     GOTU[        :X  d
  U[        :X  a  US:X  a  G	M  USB:  a  U
" SCUSS' 5      nFOU
" SDUSSE 5      nFSFu  U lY        U lZ        WFu  U l[        U l\        USG;   aP  U R                  R                  (       a5  U R                  R                  (       d  U R                  R                  5         U(       aB  [i        U RN                  SHU Rj                  U R                  U R                  U R                  5        GOYU[        :X  a  U R                  U5        GO<U[        :X  a  U R                  U5        GOU[        :X  a!  SnU(       a  [M        SIU RN                  S9  SnGOU[        :X  a*  U R                  U5      nGUG(       a  WGR                  nHGOS nHGOU[        :X  a  U R                  UUU5        GOU[        :X  a(  U R                  U5      nIUI(       a  WH(       a  WIUWH'   S nHGOoU[        :X  a  U R                  UU5        GOQU[        :X  a  U R                  U5        GO4U[        ;   a  U
" SUSS 5      u  nJnKUKS@:w  a+  [M        SJUUR                  U-
  S-
  WJWK4-  U RN                  S9   UR                  5       u  nLnnUL[        :X  a  OM!  U(       a  [M        SKU RN                  S9  GOU[        :X  a  UR                  U5        GOU[        :X  a:  Sn[        U R                  UUUS'SL9n[        U R                  UUUS'SL9nUU:X  d   eGOJU[        :X  a5  U
" S)US S 5      u  n/n0n1n2n3n4U(       a  [M        SMU/U0U1U2U3U RN                  S9  GOU[        :X  aL  U
" S+US S 5      u  n/n0n1n2n5n4U(       a0  [M        SNU/U0U1U2U5U RN                  S9  [s        UUSS  U4[z        SWWUS-9  GOU[        :X  a  U(       d  GM  USB:  d   e[        SOUSSE 5      u  nMnNnOnPnQnRU R                   S:  aA  [i        U RN                  SPU Rj                  U R                  WMWN[        WOWPS-   WQWRS-   5      5        / nS[        USUSEUS'SL9nU R                   S:  a7  [i        U RN                  SQ[?        WS5      SRR                  SS US 5       5      5        GOU[        :X  Ga  U(       d  GMi  [        STUSS 5      u  nTnUnVnWn'U'SU-	  S-  nXU'S-	  S-  nYU'S-	  S-  nZU R                   S:  a  [i        U RN                  SVWTWUWVWWU'WXWYWZ5
        SEnWX(       ar  [        SWUUUSX-    5      u	  n[n\n]n^n_n`nanbncUaS:  S-  ndU\S:  S-  neUaS:  S-  nfU\S:  S-  ngU R                   S:  a!  [i        U RN                  SYW[W]W^W_W`WbWcWdWeWfWg5        USX-  nWY(       a  US'-  nWZ(       a  US-  nUUUWV-    nhUUV-  nU(       a+  WV(       a$  [i        U RN                  SZ5        [        UWhWVUSSS[9  UUUWW-    niUUW-  nUU:X  d   eU(       a+  WW(       a$  [i        U RN                  S\5        [        UWiWWUSSS[9  GOOU[        :X  a  US:X  a  [        SUS S 5      u  n?U l~        OKUS:X  a,  [        SU5      u  U l~        Sn?[i        U RN                  S]5        OSn?[i        U RN                  S^U5        U?S-  U l        U?S-	  S-  U l        U?S-	  S-  U l        U?S0-	  S-  U l        G
OUG[        :X  aZ  U(       d  GM  [        U GR                  USUS'SL9nU(       a  [i        U RN                  S_US-
  S'-  5        UU:X  d   S`UU4-  5       eG
ODUG[
        :X  a  USB:  a6  US:  a0  [        SaUS S 5      u  njU l        U l        U l        U l        U l        OjUS!:  d   e[        SUS S	 5      u  njU l        U l        [        SbUS	Sc 5      U l        G[        U R                  GR                  U GR                  SSd9U l        G[         H  u  nknlG[        U UkWjS-  5        UjS-  njM     G	OjUG[         :X  au  [        SU5      u  nmnnSnCUn(       a  WmSe-  Wn-  nCSWCs=::  a  Sf::  d?  O  U(       d  U R                   S:  a$  [M        SgU Rj                  WmWn4-  U RN                  S9  SenCWCU l        GOUG[$        :X  a7  [        ShUS Sc 5      u  U l        U l        U l        U l        U l        SU l        GOUG[2        :X  a  U(       d  GM  U
" SUS S 5      u  noUoSSUSB:  -  -   -  S-   U:X  d   eSnUSB:  aD  UU:  a<  U GR4                  R=                  U
" SUUUS-    5      S   SS945        US-  nUU:  a  M<  GO"UU:  a6  U GR4                  R=                  U
" SUUUS	-    5      5        US	-  nUU:  a  M6  GOUG[6        :X  a  U(       d  GM_  U
" SUS S 5      u  noUoSSUSB:  -  -   -  S-   U:X  d   eSnUSB:  aD  UU:  a<  U GR8                  R=                  U
" SUUUS-    5      S   SSi45        US-  nUU:  a  M<  GO^UU:  a6  U GR8                  R=                  U
" SUUUS	-    5      5        US	-  nUU:  a  M6  GO USj::  Ga  UG[:        :X  d  UG[<        :X  a  UGR?                  UU5        GOUG[@        :X  d  UG[B        :X  a  UGRE                  U5        GOUG[F        :X  aI  U R                  R                  (       d  U R                  R                  5         UGRI                  U5        GOpUG[J        :X  a  UGRM                  U5        GOQUG[N        :X  a  UGRQ                  U5        GO2UG[R        :X  d  UG[T        :X  d  UG[V        :X  a  UGRY                  U5        GOUG[Z        :X  a  UGR]                  U5        GOUG[^        :X  a  UGRa                  U5        GOUG[b        :X  a  UGRe                  U5        GOUG[f        :X  a  UGRi                  U5        GOUG[j        :X  a  U
" SU5      S   U l        GOcUG[n        :X  a-  U
" SkU5      u  nnn(nU	" UUS UU Rq                  U(UU5      5        GO+UG[p        :X  a7  U
" SlU5      u  nnn(nU	" UUS G[s        U5      U Rq                  U(UU5      5        GOUG[t        :X  a`  U
" SmUSS 5      u  nnn([-        USUR.                  =(       d    UR1                  5       SS
9nU	" UU[         UU Rq                  U(UU5      5        GO~UG[v        :X  a=  U
" SnU5      u  nnn(n7n8[        [        4U8   n9U	" UUU9U7U Rq                  U(UU5      5        GO6UG[x        :X  a=  U(       d  GM  U
" SmUS S 5      u  nnn(U	" UU[        S1U Rq                  U(UU5      5        GOUG[z        :X  a  UGR}                  U5        GOUG[~        :X  GaL  U(       d  GMu  U
" SoUSSp 5      u  nn"n#SUs=::  a  U RJ                  :  d(  O  [M        SqUU RJ                  4-  U RN                  S9  GM  U#S-  (       d  SnO>USr:X  a"  U
" SUSSr 5      S   npU Rq                  S USUpSs9nOUStS n(U Rq                  U(USSu9nU"U#U4n$UR%                  U$5      n%U%c7  [Q        5       =UU$'   n%U"S-  U%l)        U"S-	  S-  U%l*        U#S-  U%l/        UU%l0        U%U Rf                  U'    U(       a?  [M        SvUU"U RN                  S9  U%Rm                  U RN                  SU Rj                  U4-  S9  GOwUG[        :X  a  U(       d  GM  U
" SwUS S 5      u  n;n<nqU;U<::  d  [M        SxU;U<4-  U RN                  S9  GM  [;        U;U<S-   5       HC  nUU R                  ;   a  U R                  U   n:O[        5       n:U:U R                  U'   WqU:lE        ME     U(       a$  [i        U RN                  SyU Rj                  U;U<Wq5        GOUG[        :X  a  U(       d  GM  U
" SUS S 5      u  n;n<U(       a#  [i        U RN                  SzU Rj                  U;U<5        SU;s=::  a  U<s=:  a  S6::  d(  O  [M        S{U;U<4-  U RN                  S9  G[        U<S65      n<[;        U;U<5       Hg  nSS0UU;-
  -  -   nrUUrUrS0-    n(U Rq                  U(SUS|9nUU R                  ;   a  U R                  U   n:O[        5       n:U:U R                  U'   UU:l0        Mi     OUG[        :X  a  S}nsG[        UsUSS 5       H!  u  nkntG[        U UkG[        UtS~:g  5      5        M#     [        SUSS 5      u  U l        U l        U l        [        SbUSSt 5      U l        G[        U R                  GR                  U GR                  SSd9U l        O GM0  U(       d$  [}        SU Rj                  U R                  4-  5      eU GR                  5         U GR                  5         Xql        g)Nr   r      r   z<HHHd   z<HHHi<HHH   lenlenz<BBz<H<HH
   r   z<H4xH4xi   zT*** NOTE: ROW record has row index %d; should have 0 <= rowx < %d -- record ignored!r   i  r                 r#   ROWz--- sh #%d, rowx=%d ---headerr   z<HHH8sH   z<HH3s8sBzFORMULA: rowx=%d colx=%d
      )browxbcolxblahr1c1   s   z<HHBBBxxxxxHzARRAY: %d %d %d %d %d
z<HHBBxBHzSHRFMLA (sub): %d %d %d %d %d
)r   r   r   r   z@Expected SHRFMLA, ARRAY, TABLEOP* or STRING record; found 0x%04xz$Expected STRING record; found 0x%04xr   r   z+unexpected special case (0x%02x) in FORMULA<dz<HHHBBz<HHHHHr)   zr*** NOTE: COLINFO record has first col index %d, last %d; should have 0 <= first <= last <= 255 -- record ignored!))r   r   hidden)r   r   	bit1_flag)r   i   outline_level)   i   	collapsed   z>COLINFO sheet #%d cols %d-%d: wid=%d xf_index=%d flags=0x%04x
z===z*** ERROR *** STANDARDWIDTH"   s     z<8i    z<%dHr'   z<HxxHz<ixxHr  r   r   )   r   (   z+sheet %d(%r) DIMENSIONS: ncols=%d nrows=%d
zSHEET.READ: EOFzM*** Unexpected embedded BOF (0x%04x) at offset %d: version=0x%04x type=0x%04xz---> found EOF)	addr_sizezARRAY:zSHRFMLA (main):z<6Hz
*** WARNING: Ignoring CONDFMT (conditional formatting) record
*** in Sheet %d (%r).
*** %d CF record(s); needs_recalc_or_redraw = %d
*** Bounding box is %s
z#*** %d individual range(s):
*** %s
z, c              3   2   #    U  H  n[        U6 v   M     g 7fr   )r   )r   coordss     rl   r   Sheet.read.<locals>.<genexpr>  s     !KU6+v"6Us   z<BBHHi   z
*** WARNING: Ignoring CF (conditional formatting) sub-record.
*** cf_type=%d, cmp_op=%d, sz1=%d, sz2=%d, flags=0x%08x
*** optional data blocks: font=%d, border=%d, pattern=%d
z <64x i i H H B 3x i 4x i i i 18xv   z*** Font info: height=%d, weight=%d, escapement=%d,
*** underline=%d, colour_index=%d, esc=%d, underl=%d,
*** style=%d, posture=%d, canc=%d, cancellation=%d
z*** formula 1:
)reldeltar   z*** formula 2:
zR*** WARNING: DEFAULTROWHEIGHT record len is 2, should be 4; assuming BIFF2 format
zR*** WARNING: DEFAULTROWHEIGHT record len is %d, should be 4; ignoring this record
zMERGEDCELLS: %d ranges
zMERGEDCELLS: pos=%d data_len=%dz	<HHHHxxHH<BBB	   )debugr&     zHWARNING *** SCL rcd sheet %d: should have 0.1 <= num/den <= 4; got %d/%dz<HHHHB  -   z<HH3sdz<HH3sHz<HH3sz<HH3sBBz<H4xH2xB   zW*** NOTE: ROW_B2 record has row index %d; should have 0 <= rowx < %d -- record ignored!   )	cell_attrrt   ru   true_xfx   )ru   ROW_B2z<BBHzg*** NOTE: COLWIDTH record has first col index %d, last %d; should have first <= last -- record ignored!z&COLWIDTH sheet #%d cols %d-%d: wid=%d
z.COLUMNDEFAULT sheet #%d cols in range(%d, %d)
zd*** NOTE: COLUMNDEFAULT record has first col index %d, last %d; should have 0 <= first < last <= 256)rt   ru   )r   r   r   r   r       z<HHBz Sheet %d (%r) missing EOF record)r3   r,   
XL_SHRFMLAXL_ARRAY
XL_TABLEOPXL_TABLEOP2	XL_ARRAY2XL_TABLEOP_B2r7   r   get_record_partsr+   r4   _rich_text_runlist_map	XL_NUMBERXL_LABELSSTXL_CELL_TEXT_sharedstringsgetrO   XL_LABELBIFF_FIRST_UNICODEunpack_stringencodingderive_encodingunpack_unicode
XL_RSTRINGunpack_string_update_pos	BYTES_ORDr   r   r   unpack_unicode_update_posXL_RK	unpack_RKXL_MULRKXL_ROWre   r   r-   Rowinfoheighthas_default_heightr   outline_group_starts_endsr   height_mismatchhas_default_xf_indexr   additional_space_aboveadditional_space_belowrK   r   r2   dumpXL_FORMULA_OPCODESfixed_BIFF2_xfindexr   r   	XL_STRINGXL_STRING_B2r   	XLRDErrorstring_record_contentsXL_CELL_BOOLEANXL_CELL_ERROR
XL_BOOLERR
XL_COLINFOColinfowidthupkbitsrJ   XL_DEFCOLWIDTHrC   XL_STANDARDWIDTHreprrD   XL_GCWtuplegcwjoinmaprstripreplaceXL_BLANKXL_CELL_BLANKXL_MULBLANKXL_DIMENSIONXL_DIMENSION2r:   r;   r>   r?   r*   xf_list_xf_epilogue_donexf_epiloguer1   XL_HLINKhandle_hlinkXL_QUICKTIPhandle_quicktipXL_EOFXL_OBJ
handle_objidXL_MSO_DRAWINGhandle_msodrawingetcXL_TXO
handle_txoXL_NOTEhandle_note	XL_FEAT11handle_feat11bofcodes
XL_COUNTRYhandle_countryXL_LABELRANGES)unpack_cell_range_address_list_update_posrM   rL   
XL_CONDFMTr   XL_CFr   XL_DEFAULTROWHEIGHTrE   rF   rG   rH   rI   XL_MERGEDCELLSrN   
XL_WINDOW2rW   rX   rY   r`   ra   rZ   r
   
colour_maprU   rV   XL_SCLrb   XL_PANEvert_split_poshorz_split_poshorz_split_first_visiblevert_split_first_visiblesplit_active_panehas_pane_recordXL_HORIZONTALPAGEBREAKSrP   XL_VERTICALPAGEBREAKSrQ   	XL_FORMAT
XL_FORMAT2handle_formatXL_FONTXL_FONT_B3B4handle_fontXL_STYLEhandle_style
XL_PALETTEhandle_paletteXL_BUILTINFMTCOUNThandle_builtinfmtcountXL_XF4XL_XF3XL_XF2	handle_xfXL_DATEMODEhandle_datemodeXL_CODEPAGEhandle_codepageXL_FILEPASShandle_filepassXL_WRITEACCESShandle_writeaccessXL_IXFErc   XL_NUMBER_B2
XL_INTEGERfloatXL_LABEL_B2XL_BOOLERR_B2XL_BLANK_B2XL_EFONThandle_efont	XL_ROW_B2XL_COLWIDTHXL_COLUMNDEFAULTminXL_WINDOW2_B2zipintr   r   update_cooked_mag_factors)urh   bkDEBUGr   	blah_rowsblah_formulasr   oldposXL_SHRFMLA_ETC_ETCself_put_celllocal_unpackbk_get_record_partsbvr   do_sst_rich_textrowinfo_sharing_dicttxos	eof_foundrcdata_lendatart   ru   r   dsstindexrunliststrgposnrtr   	mulrk_rowmulrk_first
mulrk_lastbits1bits2keyr
result_strflagsr  fmlalen
first_byte	gotstringrc2	data2_lendata2row1xrownxcol1xcolnxarray_flagstokslennfmlas_unused_lenr   is_errcelltyc
first_colx	last_colxiguffrS  bitsjshowgcwnitemsresult	mul_firstmul_last	dim_tuple	saved_objsaved_obj_idtxoversionboftypecodenum_CFsneeds_recalcbrowx1browx2bcolx1bcolx2olistcf_typecmp_opsz1sz2
font_block
bord_block
patt_blockfont_heightfont_optionsweight
escapement	underlinefont_colour_indextwo_bitsfont_escfont_underl
font_styleposture	font_canccancellationfmla1fmla2optionsrj   _unused_defvalnumden
num_breaksrv   rL  offset
attr_namescharsu                                                                                                                        rl   read
Sheet.read  s   +!+0T^^q0	~~*k}
  11''#A(A(A!	!4!6B$ Y +7wSb	*J'dHa dD$8<{"1=gt1L.dHhdD,8I8I(8SU]^# 77;;HEGCJ22D$<@x'3FD1I'F$dH**(q"++2UASASAU^_`D)$!<DdD,hGz!'3FD1I'F$dH** 8q"++BeQSQcQcQeno pID##DI.C1HC G#)#;veT#c!e_'EFq $/ #d)+++ 9$! LID# tCA7:C1HC G#)#;veT#c!e_'EFq $/ #d)+++dD,hG;B**D$<8u'3FD!H'E$dHd1Rj)dD$8<x)5eT!AY)G&	;*4bc;
";
1=D ,T4CE? CIH!$s1uSU"34A1HC!)T4HE	 >
 v  %1*d1Rj%I"eUD64#6#66 H!4!456<@LLJ en(,,S194;I=(-$  %v~AH,1RK1+<A(&+aiAO38A:2BA/ %
a/AH).!q(8A%.3qjA-=A*"'2+!6AJ05q/@A,05q/@A,11%'
)*  & %ue$,,GFF4<<8DKK;NN  P)) 8>J9VZ[\]_V`>a;D$*e2X>J9VZ[\]_V`>a;D$*e@LZY]^_`bYc@d=D$	J $ 8 8D$ OH DLL*FdS*4b=a@G%b$rs)Wn"$QTCa?k1!*:a=!9J!Q$%	464G4G4I1CE"i/3,3F,-	!$$0s$L !QueUK#0$+DLL:S(-ueUK%Q "%
!2$0U3BZ$H !LueUFG#0$+DLL:[(-ueUF%L$5b%*gO_-.d$T%S!$,>!>&/$fil$l'n !n  )686I6I6K3Ce"9l*CC&/0VY\0\&] ]#::5AdD,hO#q )*Q- 8%dD/5(S#q )*Q- 8%dD-Q#q%dD,HM'(UXb(bcc %T:6q9A!$dAx@z!6B8TRTSTX6V3dHeV *=9&AdD&%Bz!I"8T#2Y7 B
Iqw
E J:):s:  S%y128<F 5 #  #:y{;Dcz5-.D$$T* < YZAGGQZZQV
 FF4<<F6~%$0tBQx$@! ''q=74:TXT`T`a&24bq&B#"v2~%~AayK///ud1Rj1!D#BZ

4!8,
 ( " !: x'3FD!H'E$dHdD-XF{"!Q%fvot<"(!*i!":A	!9999"9hl;D!$mRM1HC < |#r]':q= 7 ,Wd1Qi @I ,Wd1Rj AI)-&
DJ1:.%$))*;*;DIID_D_II))+FTYY
 x!!$'{"$$T*v% 1E	v OOD1	Y\\l%)l~%))"h=vood+<),D&#'Lw  t,y""4(x#/tAay#A d?ir||h6:GWMNTXT`T`b+-+>+>+@(D(Dv~  % 0t||Dz!!!$'~%?))4bA @))4bA h&x cr; AueUK (E5%RVR^R^_z! T#2Y7 <ueUFG +UE5%VZVbVbc%b$rs)W>Nd$TCz!Rxx5$q*- Fvvvv>>Q&3 TYY#FF1HffQhG ?4R16 >>Q&#E
		!KU!KK u39(D2J3O0c5#rkQ.
#rkQ.
#rkQ.
>>Q&U  c5"J
 KQRtvz{~  @C  DG  @G  wH  LII[,
I&(K"*Q,!!3J+a/14G!)A 2I$01$4#9L~~* LLS (Y-x&L 3JC1HC1HCSS)s
CDLL*<= UCaaHSS)s
h&CDLL*<= UCaaH**q=4:5$r(4K1D$1]/5dD/A,D+DDLL?@ DDLL> " 48!80+/19/'7;qyAo37;qyAo3~%?%%tQaADLL2S1WNDh H5hGHz!8B {D"I6/1H2A: 8O8 vtBQx0/1H/5fd1Qi/HD,1E		,,d.F.Fa2QD.  -=,<(D.D$!4MG -= v!%.S!CiC/FV*s*! 3f#{{C56!%
 !F&,#w 8T"1X.''11*'($..*4bq:
!QbBh%781<HHH7.33::LtTWX[\]X]<_`a<bdegj;klq . .33::<PTUXY\]^Y^P_;`aq . ,,*4bq:
!QbBh%781<HHH7.1188,tTRUVYZ[V[_:]^_:`bcej9klq . .1188fdSVWZ[\W\o9^_q . r?bJ&6$$T2.7]bL&8NN4(8^9966		--/OOD):%%%d+----d36\R6\R6\LL&;&&&t,;&&&t,;&&&t,>)))$/7]!-dD!9!!<DJ<'/;Hd/K,D$	1!$dAt7O7OPY[_ae7fg:%/;Hd/K,D$	1!$dE!Hd>V>VW`bfhl>mn;&,8$q),L)D$	(q"++2UASASAU^_`D!$lD$BZBZ[dfjlpBqr=(;G	SW;X8D$	5&-}=fEF!$feT=U=UV_aegk=lm;&#X,8$r(,K)D$	!$mRAYAYZceikoApq8^OOD)9_#X)5j$q*)M&D%:t':':: L#T%8%89:@DN !!AI#%!R*4b=a@#'#;#;dQU\^il#;#m$(BK	#'#;#;ItRT#;#U %2C,005Ay8?	A,S1A#(6>05q/@,16.%-
 ./D$$T* !he$,,Gt||#<T?R#R  T;&#X&vtBQx8 1J	5%2 K)956<@LLJ ! &z9Q; ?4#3#33 $ 0 0 6A '	A56D,,T2"' !@  LLE KKY
 ++#X,8Ra,I)J	 LLM KKY
 
=Y=#= C)956<@LLJ %(	3$7	 &z9 =!"Q$*;%<!<$(q$9	#'#;#;IBUY#;#Z4#3#33 $ 0 0 6A '	A56D,,T2%-
 !> =("@J&)*d1Qi&@
ddC,>? 'A
 vtAbz2/1H7/5fd2bk/JD,1E		,,d.F.Fa2QD. e f >;;		*+ , ,&&(ro   c                    U R                   nU R                  nUS:  S-   n[        SSUS-
     -   US U 5      S   nUnUS:  a#  UR                  =(       d    UR	                  5       nSn[        S5      n	 US:  a  [        X   5      S-  n
SU
   nUS-  n[        XS  W5      nX-  n	U[        U5      -  nX:X  a  U	$ X:  a  S	XX4-  n[        U5      eUR                  5       u  pnU[        :w  a  [        S
U-  5      eSnM  )Nr   r   <BHr   r'   r   )latin_1	utf_16_lez,STRING/CONTINUE: expected %d chars, found %dz2Expected CONTINUE record; found record-type 0x%04X)r+   r*   r   r-  r.  r   r2  unicoder   rE  r#  XL_CONTINUE)rh   r  r  r  r   nchars_expectedr  encnchars_foundr  flagchunkmsgr  r  s                  rl   rF  Sheet.string_record_contents  s4   YY(a tFQJ'7!7gvGJ7++5!3!3!5C $Rx .2.t4!DM3/EOFCJ&L.-E&56n$$&$7$7$9!BT[ H2MO OF% ro   c                    [         =(       d    U R                  S:  nU R                  (       a  U R                  c  SU l        OU R                  U l        U R
                  nSUs=::  a  S::  dB  O  U(       a-  [        SU R                  U R
                  4-  U R                  S9  U R                  nX l	        g U R                  c  SU l	        OU R                  U l	        U R                  nU(       d  SnORSUs=::  a  S::  dE  O  U(       a0  [        SU R                  < S	U R                  < 3U R                  S9  U R                  nX l        g )
Nr   r&   r   r  zGWARNING *** WINDOW2 rcd sheet %d: Bad cached_normal_view_mag_factor: %dr   r%   zWARNING *** WINDOW2 rcd sheet z,: Bad cached_page_break_preview_mag_factor: )r  r3   r   rb   r^   ra   r   r2   r-   r_   r`   )rh   r   zooms      rl   r  Sheet.update_cooked_mag_factors  s    ****""*<?9<@<O<O955D$$$a;;(J(JKL!\\
 @@15. ""*582595H5H2<<DD'C';;(Q(QS!\\
 998<5ro   c                    SnU=(       d    U R                   S:  nU R                  S:X  av  U R                  R                  (       aC  Ub  UnO[	        US   5      S-  nUS:X  a$  U R
                  c  [        S5      eU R
                  nU$ S=U l        U R                  l        [	        US   5      S-  nUS:X  d   eU R                  R                  U5      nUb  U$ U(       a  [        U R                  SXU5        U R                  R                  (       d%  [        S5       H  nU R                  S	US
:  S9  M     U R                  US9nU$ )Nr   r   r  ?   z?BIFF2 cell record has XF index 63 but no preceding IXFE record.r   zNew cell_attr %r at (%r, %r)
r   s   @  r   )r  style)r  )r3   r+   r*   r]  r2  rc   rE  rd   r)  r   r-   r   insert_new_BIFF20_xf)	rh   r  rt   ru   r  r  r   rv   xfx_slots	            rl   rB  Sheet.fixed_BIFF2_xfindex  s5   +!+"yy  '"C#IaL1D8C$;zz)'(ijj**C
 
9;;D		 6Yq\*T11}}$$((3?JDLL"BIUYZyy  bz))O3QS8)T "'')'<
ro   c           
         SnU=(       d    U R                   S:  nU R                  n[        UR                  5      nU R	                  X5      nXgl        UR                  R                  U5        U(       a  UR                  U R                  SU-  SS9  UR                  UR                  ;  a  UR                  (       a9  Sn[        U R                  UUR
                  UR                  UR                  5        [        UR                  [        [        S5      5      n	XR                  UR                  '   UR                  R                  U	5        [         ["        [        ["        [$        ["        [&        [(        [*        ["        0n
UR                  UR                     n	XR,                     nXR.                  UR
                  '   X`R0                  U'   U$ )Nr   r   z=== Faked XF %d ===z======r   footerz1ERROR *** XF[%d] unknown format key (%d, 0x%04x)
General)r3   r*   r   r]  fake_XF_from_BIFF20_cell_attrr   r   r@  r-   
format_key
format_mapr   r	   FUNr   format_listFNUXL_CELL_NUMBERFGEFDTXL_CELL_DATEFTXtyper9   rd   )rh   r  r*  r  r   r*   rv   xfr#  fmtcellty_from_fmttyr  s               rl   r+  Sheet.insert_new_BIFF20_xfA  sX   +!+yy$,,//	ABGGDLL)>)DXGV==/}}JcR]]BMMC_Y-GHC-0OOBMM*##C(
 oobmm,"88,5;%%bkk2,/y)
ro   c                    SSK JnJnJnJnJn  U" 5       nU" 5       Ul        SUR                  l        SUR                  l        SUR                  l	        U" 5       Ul
        SUR                  l        SUR                  l        SUR                  l        SUR                  l        U" 5       Ul        U" 5       Ul        [#        SU5      u  pnU
S-  Ul        U
S-  S-	  Ul        [)        UR                   U	S5        US	-  UR                  l        S
 HK  u  pX-  (       a  Su  pOSu  p[-        UR                  US-   U5        [-        UR                  US-   U5        MM     UR                  nUS-  (       a  SUl        OSUl        SUl        SUl        SU   Ul        SUR                  l        SUR                  l        / SQnU H  nSU-   S-   n[-        UUS5        M     U$ )Nr   )XFXFAlignmentXFBorderXFBackgroundXFProtectionr   r  r)     r   ))r   r$   cell_locked)r      formula_hiddenr   ))r   left)r   right)r  top)r$   bottom)r   r   r  _colour_index_line_stylerJ     r  r   )r   r   r   )formatfont	alignmentborder
background
protection__flag)
formattingrC  rD  rE  rF  rG  rU  indent_levelshrink_to_fittext_directionrV  diag_up	diag_downdiag_colour_indexdiag_line_stylerW  rX  r   r3  
font_indexrM  	hor_alignrV   fill_patternbackground_colour_indexpattern_colour_indexparent_style_index
vert_alignrotation)rh   r  r*  rC  rD  rE  rF  rG  r>  	prot_bitsfont_and_format
halign_etcmasksidecolour_index
line_stylebg
attr_stems	attr_stemrj   s                       rl   r2  #Sheet.fake_XF_from_BIFF20_cell_attr`  s   UUT"}$%!%&"&'#J					&'		#$%		!$$39&)3L0Z'$.(4/A5y +
 	 ",d!2\JD +/(j+/(BIIto5|DBIItm3Z@ ] ]] BOBO%&""# +E 2"# !

 $I?W,DBa  $ 	ro   c                 <    U R                   (       d  [        S5      eg )Nz9Feature requires open_workbook(..., formatting_info=True))r4   rE  r   s    rl   r   Sheet.req_fmt_info  s    ##WXX $ro   c                 P   U R                  5         U R                  S:  aE  U R                  R                  US5      nUb  UR                  $ U R
                  b  U R
                  $ OU R                  S:  aZ  U R                  U   (       a  U R
                  b  U R
                  $ OgU R                  R                  US5      nUb  UR                  $ O;U R                  S:X  a+  U R                  R                  US5      nUb  UR                  $ U R                  b  U R                  S-  $ g)a  
Determine column display width.

:param colx:
  Index of the queried column, range 0 to 255.
  Note that it is possible to find out the width that will be used to
  display columns with no cell information e.g. column IV (colx=255).

:return:
  The column width that will be used for displaying
  the given column by Excel, in units of 1/256th of the width of a
  standard character (the digit zero in the first font).

.. versionadded:: 0.6.1
r'   Nr  r   r)   i   )r   r+   rJ   r)  rL  rD   rS  rC   )rh   ru   colinfos      rl   computed_column_widthSheet.computed_column_width  s     	"&&**46G"}}$!!-))) ."$xx~%%1--- 2 **..tT:&"==( '"$&&**46G"}}$'##c))ro   c                 x	   [         (       a  [        SU R                  S9  [        U5      n[	        5       n[        SUS S 5      u  Ul        Ul        Ul        Ul	        pEnUS:X  d   eUS:X  d   e[         (       a  [        SU-  U R                  S9  SnS nUS	-  (       a  U" X5      u  Ul
        nUS
-  (       a  U" X5      u  Ul        nUS-  (       Gat  US-  (       Gdi  [        SXUS-    5      u  n	[         (       a  [        U R                  SU	5        US-  nU	S:X  Ga!  [        S5      Ul        [        SXUS-    5      S   n
US-  n[        XXz-    S5      Ul        [         (       a5  [        U R                  SUR                   [        UR                   5      5        UR                   R#                  S5      n[         (       a  [        SU-  U R                  S9  UR                   S U Ul        SUS-   -  nX|-  nX-
  nXX}-    nX}-  n[         (       a#  [        U R                  SUR                   XX5        US;   d   eGO[U	S:X  a  [        S5      Ul        [        SXUS-    5      u  pUS-  nS U-  XXz-   S-
   -   n[         (       a  [        U R                  S!UU5        Xz-  nUS"-  n[        S#XUS-    5      S   n[         (       a  [        S$U-  U R                  S9  US-  nU(       a<  [        S#XUS-    5      S   nUS-  nUS-  n[        XUU-    S5      nUU-  nUUl        OtUUl        Ol[        U R                  S%U	5        OTUS&-  S':X  a!  [        S(5      Ul        U" X5      u  Ul        nO*US)-  S*:X  a  [        S+5      Ul        O[        S,5      Ul        US*-  (       a  U" X5      u  Ul        n[         (       a  UR'                  S-S.9  [        S/Xr4-  5        X'-
  nUS:  aA  [        U R                  S0UR                  S-   UR                  S-   U[)        X* S  5      5        OUS:  a  [+        S15      eU R,                  R/                  U5        [1        UR                  UR                  S-   5       H=  n[1        UR                  UR                  S-   5       H  nX0R2                  UU4'   M     M?     g )2Nz
=== hyperlink ===r   z<HHHH16s4sir  s   y  Ks      zoptions: %08Xc                 n    [        SXUS-    5      S   S-  nUS-  n[        XX-    S5      S S nX-  nX14$ )N<Lr   r   r   UTF-16ler#   )r   r  )bufofsnbucs       rl   get_nul_terminated_unicode6Sheet.handle_hlink.<locals>.get_nul_terminated_unicode  sP    cc!en-a014B1HC*5cr:BIC7Nro   r   rJ  r   r)   z<16sr   z	clsid=%r
s   y  Kurlr~  r   r   r  zinitial url=%r len=%d
 z	endpos=%dr   z9url=%r
extra=%r
nbytes=%d true_nbytes=%d extra_nbytes=%d
)   r   s               Fz
local filez<Hir   s   ..\zuplevels=%d shortpath=%r
r  <izsz=%dz*** unknown clsid %r
ic  i  uncik  r   workbookunknownz... object dump ...r   zoffset=%d record_size=%dz=*** WARNING: hyperlink at R%dC%d has %d extra data bytes: %s
z:Bug or corrupt file, send copy of input file for debugging)r  r   r-   r   	Hyperlinkr   frowxlrowxfcolxlcolxdesctargetr   r   r=  r  url_or_pathfindtextmarkr@  REPRrE  r[   r   r   r\   )rh   r  record_sizer"   guid0dummyr  r  r  clsidnbytesendpostrue_nbytesextra_nbytes
extra_datauplevels	shortpathszxlextended_pathrt   ru   s                         rl   ra  Sheet.handle_hlink  s   5%-DLLA$iKDJ=Z^_b`bZcDdA!'17E'[[[[++++5%'1E	 T>7ENAFFT>9$GAHfaKK'E//FD$<=FEugdllL5AbLF[[ )/d&1*&=>qA! 'FO(Dj Q5'$,,0I1==Z]^_^k^kZlm++F35%f 44<<H !gv 66A:.%%3!)>?
&5Vz;
 $w...]](6#)%VaZ1H#I !#h.V_q=P1QQ	5'$,,0LhXab "D$fqj"9:1=5%"4<<@!d&1*&=>qABaKFaKF$+D,Dj$QMbLF$1AM$-AM &>Fu_%$U+AF$>t$L!AM6u_!$Z0AF$Y/AFS=!;D!IAJ5FF/F0,/DDE"+!P!!T-.)* AXYY""1%177AGGAI.Dqww	212""4:. 3 /ro   c                 0   [        SUS S 5      u  p#pEnU[        :X  d   eU R                  (       d   eU R                  S   nX4XV4UR                  UR                  UR
                  UR                  4:X  d   eUSS  S:X  d   e[        USS S5      Ul        g )N<5Hr   r#   r   s     r  )	r   rb  r[   r  r  r  r  r  quicktip)rh   r  rcxr  r  r  r  r"   s           rl   rc  Sheet.handle_quicktip0  s    *0Sb	*B'E%k!!!""""#e+!''177/SSSSBCyK'''T"R[+6
ro   c           	      ^   [         (       d  g SnU R                  S:  a  g [        5       nSnXb:  a  [        SX6US-    5      u  pxn	US-  n
US-	  S-  nU
S:X  a  SnOU	nU(       a2  [	        X6US-   SU R
                  S	9  [        U R
                  S
XXU	5        US:X  a?  US:X  d   e[        SX6S-   US-   U-    5      u  Ul        Ul        Ul	        Ul
        Ul        OUS:X  a  U	S:X  d   eUS-   U:X  d   eO XlS-   -  nXb:  a  M  Xb:X  d   eU(       a  UR                  U R
                  SSS9  g g )Nr   r'   r   z<HHIr   r   r   r   basefoutz.fbt:0x%04X  inst:%d  ver:0x%X  cb:%d (0x%04X)
i  r  z<Hiiiii  z=== MSODrawing === r/  )OBJ_MSO_DEBUGr+   
MSODrawingr   hex_char_dumpr-   r   
anchor_unkanchor_colx_loanchor_rowx_loanchor_colx_hianchor_rowx_hir@  )rh   recidr  r  r  or  tmpfbtcbverinstndbs                rl   ri  Sheet.handle_msodrawingetc9  s]   }r!Ln!&$3q5/:LCb)C1H%Dczdqqt||LEs, f}by y 7=XtPQERUVWRWX[R[G\6]4 !"2 !"2QwwQw(***7NC1 n6 ?"?FF4<<(<cFJ ro   c                 F   U R                   S:  a  g [        5       n[        U5      nSn[        (       a  [	        U R
                  SU5        XC:  Ga  [        SXUS-    5      u  pV[        (       a1  [	        U R
                  SXEU5        [        XUS-   SU R
                  S9  US:X  a4  US:X  a  US	:X  d(  U R                  (       a  [	        U R
                  S
5        g US:X  a7  US:X  d   e[        SXS-   US-    5      u  Ul	        Ul
        n[        X'S5        OUS:X  aL  XU SX4-
  -  :X  a  OSn[	        U R
                  SU-  5        [        XX4-
  SU R
                  S9  [        U5      eUS:X  a:  [        SXS-   US	-    5      n	[        U	S5       H  u  p[        USU-   U
5        M     OBUS:X  a"  [        (       a  [	        U R
                  S5        OUS:X  a  UR                  (       a  OO XFS-   -  nXC:  a  GM   [        (       a  UR!                  U R
                  SSS9  U$ )Nr'   r   z... OBJ record len=%d...
r   r   zpos=%d ft=0x%04X cb=%d
r  r  r  z6*** WARNING Ignoring antique or corrupt OBJECT record
r   r   ))r   r   locked)r   r   	printable)r   r)   
autofilter)r     scrollbar_flag)r  i    autofill)r   r(   autoliner  z'Unexpected data at end of OBJECT recordz*** ERROR %s
r  r  r   )r   r  maxincpage
scrollbar_r  z.*** OBJ record has ft==0x0D 'notes' structure
   z=== MSOBj ===r  r/  )r+   MSObjr   r  r   r-   r   r  r3   r=  rg  rM  rE  r  rV   r  r@  )rh   r  r  r  r  ftr  option_flagsr#  valuesr   tags               rl   rf  Sheet.handle_obja  s   r!Gt9=DLL">InE4CE?3FB}&@#2NdaadllKaxtb>>DLL*cdTzaxx-3FDQs2v<N-O*l *  tH%(.)AA?&6&<=dadllSn$ttE#b&'9:"%f.T"UJEA|c159 #Vt ='$,,8i"jt<<   6MCQ nV =FF4<<FEro   c                    [         (       a6  [        U R                  S5        [        US[	        U5      SU R                  S9  [        5       n[	        U5      nU R                  S:  Gaf  [        SUS S 5      u  Ul        Ul	        n[	        U5      S-
  nXe::  d   eUSS  /nXV-  nUS:  al  U R                  R                  5       u  pn
U[        :X  d   e[        SU
S S 5      u  pUS:X  d   eXiS-
  :X  d   eUR                  U
SS  5        XV-  nUS:  a  Ml  US:X  d   eU R                  R                  =(       d    U R                  R                  5       n[!        S	R#                  U5      U5      Ul        S
/Ul        SUl        SUl        SUl        [/        S5      Ul        S Ul        X0R4                  UR                  UR                  4'   g [        SUS S 5      u  Ul        Ul	        ol        US-	  S-  Ul        US-	  S-  Ul        US-	  S-  Ul        [7        USSS9u  Ul        nXN-
  S;   d   e[         (       a  UR9                  U R                  SSS9  UR;                  UR2                  5      nU(       aG  UR$                  Ul        UR&                  Ul        X0R4                  UR                  UR                  4'   g g )Nz... NOTE record ...
r   r  r'   r   r   z<H2xHr  ro   r  r   z<4Hr   r   r   r   r   )r   r   z=== Note ===r  r/  )r  r   r-   r  r   Noter+   r   rt   ru   r*   r#  rl  r   r-  r.  r  rT  textrich_text_runlistshow
row_hidden
col_hiddenr   author
_object_idr]   r3  r@  r)  )rh   r  r  r  r  expected_bytesr  piecesr  r  r  
dummy_rowxr  r  r  r  s                   rl   rm  Sheet.handle_note  s   =DLL"9:$3t914<<HFt9r!-3FD!H-E*AFAFNTQB'''12hZF N 1$(,		(B(B(D%g~%~!'r!;
!V+++]***eABi($ !1$ "Q&&&))$$C		(A(A(CCSXXf-s3AF#)(AAFALAL&r*AHAL12qvvqvv~.5;E485L2l!#q($)Q.$)Q. 5T1QG& !f,,,=FF4<<FDhhq||$XXAF"%"7"7A12qvvqvv~. ro   c                    U R                   S:  a  g [        5       nSn[        U5      n[        X1S U 5      u  oRl        pgol        XS  Ul        [        X%S5        Sn	[        S5      Ul	        X:  a  U R                  R                  5       u  pnU
[        :X  d   e[        (       a  [        USUSU R                  S9  [!        US   5      nUS-
  nU(       a  US-  S:X  d   eUS-  n[#        USUS	9u  nnUU:X  d   eU=R                  U-  sl	        X-  n	X:  a  M  / Ul        SnUU:  a  U R                  R                  5       u  nnnU[        :X  d   eUS
-  S:X  d   e['        SUS
5       H5  n[        SUUUS
-    5      nUR$                  R)                  U5        US
-  nM7     UU:  a  M  UR$                  (       aL  UR$                  S   S   U:X  a6  UR$                  S	 UR$                  (       a  UR$                  S   S   U:X  a  M6  [        (       a9  UR+                  U R                  SSS9  [-        UR$                  U R                  S9  U$ )Nr'   z<HH6sHHH))r   r   
horz_align)r   p   ri  )r  r  	lock_text)r   r(   	just_last)r   i   secret_editr   r   r  r   r   )	known_lenr   z<HH4xr#   z=== MSTxo ===r  r/  r   )r+   MSTxor   r   rot	ifntEmptyfmlarM  r   r  r*   r#  r  r  r  r-   r2  r3  r  r   r   r@  r   )rh   r  r  r?  fmtsizer  controlInfocchTextcbRunstotcharsr  r  r  r  ncharsutextr  totrunsrc3	data3_lendata3r  runs                          rl   rk  Sheet.handle_txo  sO   r!G3-IOPSZb[bUcIdFe[6;h "
 	  $ $(II$>$>$@!CE+%%%}eQ	M58$B]FzQ&15eQ&QME6Y&&&FFeOFH   !$(II$>$>$@!CE+%%%q=A%%%aA.WeCA&67##**3/1 /  !!a&9&9"&=a&@G&K##B' !!a&9&9"&=a&@G&K=FF4<<FE!%%DLL9ro   c                 V   [         (       d  g [        SUSS 5      u
  p#pEpgppUS:X  d   eU
S:X  d   eUS:X  d   eUS:X  d   eUS:X  d   eX:X  d   e[        U R                  SX4X5        [        SUSS 5      u  ppnnnnnnnnnnn[        S	XXUUUUUUUUUUU4-  U R                  S
9  g )Nz<HH8sHBiHiH8sr   #   r   ir  z3FEAT11: grbitFrt=%d  Ref0=%r cref=%d cbFeatData=%d
z<iiiiiiHHiiiii16sHe   zlt=%d  idList=%d crwHeader=%d  crwTotals=%d  idFieldNext=%d cbFSData=%d
rupBuild=%d  unusedShort=%d listFlags=%04X  lPosStmCache=%d  cbStmCache=%d
cchStmCache=%d  lem=%d  rgbHashParam=%r  cchName=%dr   )r  r   r   r-   )rh   r  rtgrbitFrtRef0isffHdr	reserved0cref
cbFeatData	reserved1Ref1ltidList	crwHeader	crwTotalsidFieldNextcbFSDatarupBuildunusedShort	listFlagslPosStmCache
cbStmCachecchStmCachelemrgbHashParamcchNames                              rl   ro  Sheet.handle_feat11  s   } W]]lnrstuwnxVySd$IA~~A~~axxU{{qyy||dllRT\dhu( 4::NPTUWX]P^3_	1Y;+y,
S, B I+x+izS,E99
 @D||	Mro   )@rd   rA   r@   rB   r?   r>   rg   rc   r=   r<   r,   rR   r9   r   r0   r+   r*   r/   ra   r`   r]   rL   rJ   r_   r^   rH   rI   rE   rF   rG   rC   rX   rW   r4   rS  rY   rZ   r  rP   r  r~  r[   r\   r-   rN   r1   r;   r:   r2   r7   r5   rO   rM   rK   rb   r  rD   rf   re   r3   r  r}  rQ   rT   )r   Nr   )r   )E__name__
__module____qualname____firstlineno____doc__r1   r*   r:   r;   rJ   rK   rL   rM   rN   rO   rC   rD   rE   rF   rG   rH   rI   rT   rS  r[   r\   r]   r}  r~  r  r  r  r  rP   rQ   rm   rw   r|   r   rq   r   r   r   r   r   r   r   r   r   colr   r6   r8   r  rF  r  rB  r+  r2  r   rz  ra  rc  ri  rf  rm  rk  ro  __static_attributes__ ro   rl   r   r   2   s   & D D E E K K"  6 L0   K M
 
 #'
 
 &*"
 &*" J C N M M N N  !  !  O   M#h
-,>,
@;<
$
$
$
$ C
;Jz9vFVOb<+=Z D>2hY&Pn3`7%KP6p13f0d.Mro   r   c                       \ rS rSrSrg)r  i/  r  Nr  r  r  r  r  r  ro   rl   r  r  /      ro   r  c                       \ rS rSrSrg)r  i3  r  Nr   r  ro   rl   r  r  3  r!  ro   r  c                       \ rS rSrSrg)r  i7  r  Nr   r  ro   rl   r  r  7  r!  ro   r  c                   P    \ rS rSrSr\" S5      rSrSrSr	Sr
SrSr\" S5      rSrg)r  i;  z
Represents a user "comment" or "note".
Note objects are accessible through :attr:`Sheet.cell_note_map`.

.. versionadded:: 0.7.2
r   r   Nr  )r  r  r  r  r  r   r  r  ru   r  r  rt   r  r  r  r  ro   rl   r  r  ;  sJ     R F J D
  J D D 2Dro   r  c                   @    \ rS rSrSrSrSrSrSrSr	Sr
SrSrSrSrSrg)r  i^  z
Contains the attributes of a hyperlink.
Hyperlink objects are accessible through :attr:`Sheet.hyperlink_list`
and :attr:`Sheet.hyperlink_map`.

.. versionadded:: 0.7.2
Nr  )r  r  r  r  r  r  r  r  r  r=  r  r  r  r  r  r  r  ro   rl   r  r  ^  sM     E E E E D K D F
 H Hro   r  c           
         [        U S   5      nUS-  (       a-  [        SU 5      u  nUS-  nUS-  (       a  US-  $ [        U5      $ [        SS[        [	        US-  5      5      -   U SS	 -   5      u  nUS-  (       a  US-  $ U$ )
Nr   r   r  r   g      Y@r   s          r   )r2  r   r  BYTES_LITERALchr)rk_strr  ir  s       rl   r5  r5    s    fQi EqyT6"	a19u9Qx D+c%#+6F(GG&QRST+UV19u9ro   emptyr  r2   xldateboolerrorblankc                   0    \ rS rSrSr/ SQrSS jrS rSrg)rr   i  a  
Contains the data for one cell.

.. warning::
  You don't call this class yourself. You access :class:`Cell` objects
  via methods of the :class:`Sheet` object(s) that you found in the
  :class:`~xlrd.book.Book` object that was returned when you called
  :func:`~xlrd.open_workbook`

Cell objects have three attributes: ``ctype`` is an int, ``value``
(which depends on ``ctype``) and ``xf_index``.
If ``formatting_info`` is not enabled when the workbook is opened,
``xf_index`` will be ``None``.

The following table describes the types of cells and how their values
are represented in Python.

.. raw:: html

    <table border="1" cellpadding="7">
    <tr>
    <th>Type symbol</th>
    <th>Type number</th>
    <th>Python value</th>
    </tr>
    <tr>
    <td>XL_CELL_EMPTY</td>
    <td align="center">0</td>
    <td>empty string ''</td>
    </tr>
    <tr>
    <td>XL_CELL_TEXT</td>
    <td align="center">1</td>
    <td>a Unicode string</td>
    </tr>
    <tr>
    <td>XL_CELL_NUMBER</td>
    <td align="center">2</td>
    <td>float</td>
    </tr>
    <tr>
    <td>XL_CELL_DATE</td>
    <td align="center">3</td>
    <td>float</td>
    </tr>
    <tr>
    <td>XL_CELL_BOOLEAN</td>
    <td align="center">4</td>
    <td>int; 1 means TRUE, 0 means FALSE</td>
    </tr>
    <tr>
    <td>XL_CELL_ERROR</td>
    <td align="center">5</td>
    <td>int representing internal Excel codes; for a text representation,
    refer to the supplied dictionary error_text_from_code</td>
    </tr>
    <tr>
    <td>XL_CELL_BLANK</td>
    <td align="center">6</td>
    <td>empty string ''. Note: this type will appear only when
    open_workbook(..., formatting_info=True) is used.</td>
    </tr>
    </table>
r   r   r   Nc                 (    Xl         X l        X0l        g r   r2  )rh   r   r   r   s       rl   rm   Cell.__init__  s    

 ro   c                     U R                   c$  [        U R                     < SU R                  < 3$ [        U R                     < SU R                  < SU R                   < S3$ )N:z (XF:))r   
ctype_textr   r   r   s    rl   __repr__Cell.__repr__	  sB    == (4djjAA&0&<djj$--XXro   r   )	r  r  r  r  r  	__slots__rm   r9  r  r  ro   rl   rr   rr     s    ?B /I!
Yro   rr   r   c                   0    \ rS rSrSrSrSrSrSrSr	Sr
Srg)rK  i	  a  
Width and default formatting information that applies to one or
more columns in a sheet. Derived from ``COLINFO`` records.

Here is the default hierarchy for width, according to the OOo docs:

  In BIFF3, if a ``COLINFO`` record is missing for a column,
  the width specified in the record ``DEFCOLWIDTH`` is used instead.

  In BIFF4-BIFF7, the width set in this ``COLINFO`` record is only used,
  if the corresponding bit for this column is cleared in the ``GCW``
  record, otherwise the column width set in the ``DEFCOLWIDTH`` record
  is used (the ``STANDARDWIDTH`` record is always ignored in this case [#f1]_).

  In BIFF8, if a ``COLINFO`` record is missing for a column,
  the width specified in the record ``STANDARDWIDTH`` is used.
  If this ``STANDARDWIDTH`` record is also missing,
  the column width of the record ``DEFCOLWIDTH`` is used instead.

.. [#f1] The docs on the ``GCW`` record say this:

  If a bit is set, the corresponding column uses the width set in the
  ``STANDARDWIDTH`` record. If a bit is cleared, the corresponding column
  uses the width set in the ``COLINFO`` record for this column.

  If a bit is set, and the worksheet does not contain the ``STANDARDWIDTH``
  record, or if the bit is cleared, and the worksheet does not contain the
  ``COLINFO`` record, the ``DEFCOLWIDTH`` record of the worksheet will be
  used instead.

xlrd goes with the GCW version of the story.
Reference to the source may be useful: see
:meth:`Sheet.computed_column_width`.

.. versionadded:: 0.6.1
r   r#   r  N)r  r  r  r  r  rL  r   r   r   r   r  r  r  ro   rl   rK  rK  	  s2    #N E H F I M Iro   rK  c                   <    \ rS rSrSr\(       a  SrS rS rS r	Sr
g)	r8  iM	  z
Height and default formatting information that applies to a row in a sheet.
Derived from ``ROW`` records.

.. versionadded:: 0.6.1

r9  r:  r   r;  r   r<  r=  r   r>  r?  c                     S U l         S U l        S U l        S U l        S U l        S U l        S U l        S U l        S U l        S U l	        g r   r>  r   s    rl   rm   Rowinfo.__init__c	  sa     #' "
 *.&   $ %)!  '+# '+#ro   c           
          U R                   U R                  U R                  U R                  U R                  U R
                  U R                  U R                  U R                  U R                  4
$ r   r>  r   s    rl   __getstate__Rowinfo.__getstate__	  s`    KK##**KK  %%MM''''
 	
ro   c                     Uu
  U l         U l        U l        U l        U l        U l        U l        U l        U l        U l	        g r   r>  )rh   states     rl   __setstate__Rowinfo.__setstate__	  sE     	
K#*K %M''ro   )
r>  r?  r:  r=  r9  r<  r   r;  r   r   N)r  r  r  r  r  
_USE_SLOTSr;  rm   rB  rF  r  r  ro   rl   r8  r8  M	  s#     
	&+P
ro   r8  N)0
__future__r   r   structr   r   biffhr[  r	   r
   formular   r   r   r   r   timemachiner  r  rU   
BaseObjectr   r  r  r  r  r  r5  r7  r8  r5  r9  r:  r;  r<  r@  r.   r'  rG  rH  rY  r8  rr   r   
empty_cellrK  rH  r8  r  ro   rl   <module>rP     s    &  #  4  	 8zMJ zMz?	 		J 		J 	 :  F4
 4p&   7&H(V77
MY: MY^ -!45

9j 9v 
Xj Xro   