Ë
    •2Úi·à  ã                   óØ  — d dl mZ d dlZddlmZmZmZ ddl­ ddl­ ddl	­ 	 d dl
mZ d dlmZ ej                  Zd Zd dlZd	Z ed
«      \  ZZZZZdZdddddddddddddddœZi Zi Zej;                  «       D ]  \  ZZ e e«      Z e e«      Zeee<   eee<   Œ! [[[de!jD                  d dddddddf
d„Z# G d„ de$«      Z% G d „ d!e$«      Z&d"„ Z'd&d#„Z(d$„ Z)d%„ Z*y# e$ r	 d dl
mZ Y Œ½w xY w)'é    )Úprint_functionNé   )ÚcompdocÚ
formattingÚsheet)Ú*)Úperf_counter)Úclock©Úunpackiªº é   )éP   éF   é2   é-   é(   é   é   é   ú úúúúúúúúú	ú
úúú)ÚConsolidate_AreaÚ	Auto_OpenÚ
Auto_CloseÚExtractÚDatabaseÚCriteriaÚ
Print_AreaÚPrint_TitlesÚRecorderÚ	Data_FormÚAuto_ActivateÚAuto_DeactivateÚSheet_TitleÚ_FilterDatabaseTFc
                 ó˜  — t        «       }
t        «       }	 |j                  | |||||||||	¬«
       t        «       }||
z
  |_        |j	                  t
        «      }|st        d«      ‚|t        vrt        dt        |   z  «      ‚||_	        |dk  r2|rt        |j                  d«       dx|_        }|j                  «        nx|dk(  r2|j                  «        |rat        |j                  d«       dx|_        }nA|j                  «        |j                  D �cg c]  }d ‘Œ c}|_        |s|j#                  «        t%        |j                   «      |_        |dk(  r0|j&                  dkD  r!t        |j                  d	|j&                  «       t        «       }||z
  |_        |s|j+                  «        |S c c}w #  |j+                  «        ‚ xY w)
N)
ÚfilenameÚfile_contentsÚlogfileÚ	verbosityÚuse_mmapÚencoding_overrideÚformatting_infoÚ	on_demandÚragged_rowsÚignore_workbook_corruptionz#Can't determine file's BIFF versionz BIFF version %s is not supportedr   z`*** WARNING: on_demand is not supported for this Excel version.
*** Setting on_demand to False.
Fr   r   z|*** WARNING: Excel 4.0 workbook (.XLW) file contains %d worksheets.
*** Book-level data will be that of the last worksheet.
)r	   ÚBookÚbiff2_8_loadÚload_time_stage_1ÚgetbofÚXL_WORKBOOK_GLOBALSÚ	XLRDErrorÚSUPPORTED_VERSIONSÚbiff_text_from_numÚbiff_versionÚfprintfr5   r:   Úfake_globals_get_sheetÚparse_globalsÚ_sheet_namesÚ_sheet_listÚ
get_sheetsÚlenÚnsheetsÚload_time_stage_2Úrelease_resources)r3   r5   r6   r7   r4   r8   r9   r:   r;   r<   Út0ÚbkÚt1rE   ÚshÚt2s                   ú@/var/www/html/acx/venv/lib/python3.12/site-packages/xlrd/book.pyÚopen_workbook_xlsrV   ;   sÇ  € ô 
‹€BÜ	‹€Bð5Ø
�‰Ø¨]Ø y¸8Ø/Ø+ØØ#Ø'Að 	ô 	
ô ‹^ˆØ! B™wˆÔØ—y‘yÔ!4Ó5ˆÙÜÐAÓBÐBØÔ1Ñ1ÜØ2Ü$ \Ñ2ñ3óð ð 'ˆŒØ˜2ÒáÜ˜Ÿ
™
ð8ô9ð ,1Ð0�”˜yØ×%Ñ%Õ'Ø˜RÒà×ÑÔÙÜ˜Ÿ
™
ð %Hô Ià+0Ð0�”™yà×ÑÔØ-/¯_©_Ö= ršdÒ=ˆBŒNÙØ—‘”Ü˜Ÿ™Ó(ˆŒ
Ø˜2Ò "§*¡*¨q¢.ÜØ—
‘
ðLà—
‘
ô	ô ‹^ˆØ! B™wˆÔñ
 Ø
×ÑÔØ€Iùò' >øðØ
×ÑÔØús   –DF6 Ä	F1Ä A=F6 Æ1F6 Æ6G	c                   óh   — e Zd ZdZdgZdZdZdZdZdZ	dZ
dZdZdZdZ ed«      ZdZdZdZd„ Zd
d	„Zy)ÚNamezÈ
    Information relating to a named reference, formula, macro, etc.

    .. note::

      Name information is **not** extracted from files older than
      Excel 5.0 (``Book.biff_version < 50``)
    ÚstackNr   Ú ó    éÿÿÿÿc                 ó<  — | j                   }|rÜ|j                  }|j                  }|t        k(  r»t	        |«      dk(  r­|d   }d|j
                  cxk  r|j                  dz
  k(  r†n nƒ|j                  |j                  dz
  k(  rg|j                  |j                  dz
  k(  rK| j                  j                  |j
                  «      }|j                  |j                  |j                  «      S | j                  | j                  j                  dd¬«       t!        d«      ‚)a:  
        This is a convenience method for the frequent use case where the name
        refers to a single cell.

        :returns: An instance of the :class:`~xlrd.sheet.Cell` class.

        :raises xlrd.biffh.XLRDError:
          The name is not a constant absolute reference
          to a single cell.
        r   r   ú=== Dump of Name object ===ú======= End of dump =======©ÚheaderÚfooterz2Not a constant absolute reference to a single cell)ÚresultÚkindÚvalueÚoREFrL   ÚshtxloÚshtxhiÚrowxloÚrowxhiÚcolxloÚcolxhiÚbookÚsheet_by_indexÚcellÚdumpr5   rB   )ÚselfÚresrd   re   Úref3drS   s         rU   ro   z	Name.cellÄ   sã   € ð �k‰kˆÙà—8‘8ˆDØ—I‘IˆEØ”tŠ|¤ E£
¨a¢Ø˜a™�Ø˜Ÿ™Ô9¨¯©¸Ñ)9Õ9ØŸ™¨¯©°qÑ(8Ò8ØŸ™¨¯©°qÑ(8Ò8ØŸ™×1Ñ1°%·,±,Ó?�BØŸ7™7 5§<¡<°·±Ó>Ð>Ø�	‰	Ø�I‰I×ÑØ0Ø0ð 	ô 	
ô
 ÐLÓMÐMr[   c                 ó¢  — | j                   }|�rŽ|j                  }|j                  }|t        k(  �rlt	        |«      dk(  �r]|d   }d|j
                  cxk  r|j                  dz
  k(  �r5n �n1| j                  j                  |j
                  «      }|s/||j                  |j                  |j                  |j                  fS t        |j                  |j                  «      }t        |t        |j                  |j                  «      «      }t        |j                  |j                   «      }	t        |	t        |j                  |j                   «      «      }
d|cxk  r|cxk  r|j                  k  sJ ‚ J ‚d|	cxk  r|
cxk  r|j                   k  sJ ‚ J ‚||||	|
fS | j#                  | j                  j$                  dd¬«       t'        d«      ‚)aÌ  
        This is a convenience method for the use case where the name
        refers to one rectangular area in one worksheet.

        :param clipped:
          If ``True``, the default, the returned rectangle is clipped
          to fit in ``(0, sheet.nrows, 0, sheet.ncols)``.
          it is guaranteed that ``0 <= rowxlo <= rowxhi <= sheet.nrows`` and
          that the number of usable rows in the area (which may be zero) is
          ``rowxhi - rowxlo``; likewise for columns.

        :returns: a tuple ``(sheet_object, rowxlo, rowxhi, colxlo, colxhi)``.

        :raises xlrd.biffh.XLRDError:
           The name is not a constant absolute reference
           to a single area in a single sheet.
        r   r   r^   r_   r`   zDNot a constant absolute reference to a single area in a single sheet)rc   rd   re   rf   rL   rg   rh   rm   rn   ri   rj   rk   rl   ÚminÚnrowsÚmaxÚncolsrp   r5   rB   )rq   Úclippedrr   rd   re   rs   rS   ri   rj   rk   rl   s              rU   Úarea2dzName.area2dâ   sw  € ð$ �k‰kˆÚà—8‘8ˆDØ—I‘IˆEØ”t‹|¤ E£
¨a£Ø˜a™�Ø˜Ÿ™Ô8¨¯©°qÑ(8×8ØŸ™×1Ñ1°%·,±,Ó?�BÙ"Ø! 5§<¡<°·±¸u¿|¹|ÈUÏ\É\ÐYÐYÜ  §¡¨r¯x©xÓ8�FÜ  ¬¨U¯\©\¸2¿8¹8Ó)DÓE�FÜ  §¡¨r¯x©xÓ8�FÜ  ¬¨U¯\©\¸2¿8¹8Ó)DÓE�FØ Ô<¨&Ô<°B·H±HÒ<Ð<Ñ<Ð<Ð<Ø Ô<¨&Ô<°B·H±HÒ<Ð<Ñ<Ð<Ð<Ø˜v v¨v°vÐ=Ð=Ø�	‰	Ø�I‰I×ÑØ0Ø0ð 	ô 	
ô
 Ð^Ó_Ð_r[   ©T)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú_repr_theserm   ÚhiddenÚfuncÚvbasicÚmacroÚcomplexÚbuiltinÚ	funcgroupÚbinaryÚ
name_indexÚUNICODE_LITERALÚnameÚraw_formulaÚscoperc   ro   rz   © r[   rU   rX   rX      s�   „ ñð �)€KØ€Dð €Fð €Dð €Fð €Eð
 €Gð €Gð €Ið
 €Fð €Jñ ˜2Ó€Dð €Kð €Eð €FòNô<)`r[   rX   c            
       ó„  — e Zd ZdZdZdZdZg ZdZdZ	dZ
 ed«      Zg Zg Zg Zi Zi Zi Zg ZdZdZd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z i Z!i Z"d„ Z#dde$jJ                  dddddddf
d„Z&d„ Z'd„ Z(d„ Z)d„ Z*d1d„Z+d„ Z,d„ Z-d„ Z.d„ Z/d„ Z0d „ Z1d!„ Z2d"„ Z3d#„ Z4d$„ Z5d%„ Z6d&„ Z7d'„ Z8d(„ Z9d)„ Z:d*„ Z;d+„ Z<d,„ Z=d-„ Z>d.„ Z?d/„ Z@d0„ ZAy)2r=   zÒ
    Contents of a "workbook".

    .. warning::

      You should not instantiate this class yourself. You use the :class:`Book`
      object that was returned when you called :func:`~xlrd.open_workbook`.
    r   N©r   r   rZ   g      ð¿c                 ó–   — t        | j                  «      D ]#  }| j                  |   rŒ| j                  |«       Œ% | j                  dd S )zt
        :returns: A list of all sheets in the book.

        All sheets not already loaded will be loaded.
        N)ÚxrangerM   rJ   Ú	get_sheet©rq   Úsheetxs     rU   ÚsheetszBook.sheets²  sI   € ô ˜TŸ\™\Ó*ò 	'ˆFØ×#Ñ# FÓ+Ø—‘˜vÕ&ð	'ð ×Ñ¡Ð"Ð"r[   c                 óF   — | j                   |   xs | j                  |«      S )zr
        :param sheetx: Sheet index in ``range(nsheets)``
        :returns: A :class:`~xlrd.sheet.Sheet`.
        )rJ   r“   r”   s     rU   rn   zBook.sheet_by_index½  s#   € ð
 ×Ñ Ñ'ÒA¨4¯>©>¸&Ó+AÐAr[   c              #   óf   K  — t        | j                  «      D ]  }| j                  |«      –— Œ y­w)z©
        Makes iteration through sheets of a book a little more straightforward.
        Don't free resources after use since it can be called like `list(book)`
        N)ÚrangerM   rn   )rq   Úis     rU   Ú__iter__zBook.__iter__Ä  s1   è ø€ ô
 �t—|‘|Ó$ò 	)ˆAØ×%Ñ% aÓ(Ó(ñ	)ùs   ‚/1c                 ó’   — 	 | j                   j                  |«      }| j	                  |«      S # t        $ r t        d|z  «      ‚w xY w)zp
        :param sheet_name: Name of the sheet required.
        :returns: A :class:`~xlrd.sheet.Sheet`.
        úNo sheet named <%r>)rI   ÚindexÚ
ValueErrorrB   rn   )rq   Ú
sheet_namer•   s      rU   Úsheet_by_namezBook.sheet_by_nameÌ  sU   € ð
	@Ø×&Ñ&×,Ñ,¨ZÓ8ˆFð ×"Ñ" 6Ó*Ð*øô ò 	@ÜÐ1°JÑ>Ó?Ð?ð	@ús	   ‚. ®Ac                 óf   — t        |t        «      r| j                  |«      S | j                  |«      S )z¡
        Allow indexing with sheet name or index.
        :param item: Name or index of sheet enquired upon
        :return: :class:`~xlrd.sheet.Sheet`.
        )Ú
isinstanceÚintrn   r¡   )rq   Úitems     rU   Ú__getitem__zBook.__getitem__×  s0   € ô �dœCÔ Ø×&Ñ& tÓ,Ð,à×%Ñ% dÓ+Ð+r[   c                 ó    — | j                   dd S )zÁ
        :returns:
          A list of the names of all the worksheets in the workbook file.
          This information is available even when no sheets have yet been
          loaded.
        N)rI   ©rq   s    rU   Úsheet_nameszBook.sheet_namesâ  s   € ð × Ñ ¡Ð#Ð#r[   c                 óÆ   — t        |t        «      r|}n	 | j                  j                  |«      }t        | j                  |   «      S # t        $ r t        d|z  «      ‚w xY w)z·
        :param sheet_name_or_index: Name or index of sheet enquired upon
        :returns: ``True`` if sheet is loaded, ``False`` otherwise.

        .. versionadded:: 0.7.1
        r�   )r£   r¤   rI   rž   rŸ   rB   ÚboolrJ   ©rq   Úsheet_name_or_indexr•   s      rU   Úsheet_loadedzBook.sheet_loadedë  sn   € ô Ð)¬3Ô/Ø(‰FðMØ×*Ñ*×0Ñ0Ð1DÓE�ô �D×$Ñ$ VÑ,Ó-Ð-øô ò MÜÐ 5Ð8KÑ KÓLÐLðMús   •A ÁA c                 ó¶   — t        |t        «      r|}n	 | j                  j                  |«      }d| j                  |<   y# t        $ r t        d|z  «      ‚w xY w)zu
        :param sheet_name_or_index: Name or index of sheet to be unloaded.

        .. versionadded:: 0.7.1
        r�   N)r£   r¤   rI   rž   rŸ   rB   rJ   r¬   s      rU   Úunload_sheetzBook.unload_sheetû  sh   € ô Ð)¬3Ô/Ø(‰FðMØ×*Ñ*×0Ñ0Ð1DÓE�ð $(ˆ×Ñ˜Ò øô ò MÜÐ 5Ð8KÑ KÓLÐLðMús   •A  Á Ac                 ó
  — d| _         t        | j                  d«      r| j                  j                  «        d| _        t        | j                  d«      r| j                  j                  «        d| _        d| _        d| _        y)a_  
        This method has a dual purpose. You can call it to release
        memory-consuming objects and (possibly) a memory-mapped file
        (:class:`mmap.mmap` object) when you have finished loading sheets in
        ``on_demand`` mode, but still require the :class:`Book` object to
        examine the loaded sheets. It is also called automatically (a) when
        :func:`~xlrd.open_workbook`
        raises an exception and (b) if you are using a ``with`` statement, when
        the ``with`` block is exited. Calling this method multiple times on the
        same object has no ill effect.
        r   ÚcloseN)Ú_resources_releasedÚhasattrÚmemr²   ÚfilestrÚ_sharedstringsÚ_rich_text_runlist_mapr¨   s    rU   rO   zBook.release_resources
  sd   € ð $%ˆÔ Ü�4—8‘8˜WÔ%à�H‰H�N‰NÔØˆŒÜ�4—<‘< Ô)Ø�L‰L×ÑÔ ØˆŒØ"ˆÔØ&*ˆÕ#r[   c                 ó   — | S ©NrŽ   r¨   s    rU   Ú	__enter__zBook.__enter__!  s   € Øˆr[   c                 ó$   — | j                  «        y rº   )rO   )rq   Úexc_typeÚ	exc_valueÚexc_tbs       rU   Ú__exit__zBook.__exit__$  s   € Ø×ÑÕ r[   c                 óÈ  — g | _         g | _        g | _        d| _        g | _        g | _        i | _        d| _        d| _        d| _	        | j                  «        d| _        d| _        d | _        d | _        g | _        g | _        g | _        i | _        i | _        d| _        g | _        d| _        g | _        g | _        i | _        g | _        g | _        i | _        d| _        d| _        y )Nr   Fr\   r[   )rJ   rI   Ú_sheet_visibilityrM   Ú_sh_abs_posnr·   r¸   Úraw_user_nameÚ_sheethdr_countÚbuiltinfmtcountÚinitialise_format_infoÚ_all_sheets_countÚ_supbook_countÚ_supbook_locals_inxÚ_supbook_addins_inxÚ_all_sheets_mapÚ_externsheet_infoÚ_externsheet_type_b57Ú_extnsht_name_from_numÚ_sheet_num_from_nameÚ_extnsht_countÚ_supbook_typesr³   Úaddin_func_namesÚname_obj_listÚ
colour_mapÚpalette_recordÚxf_listÚstyle_name_maprµ   r¶   r¨   s    rU   Ú__init__zBook.__init__5  sù   € ØˆÔØˆÔØ!#ˆÔØˆŒØˆÔØ ˆÔØ&(ˆÔ#Ø"ˆÔØ ˆÔØ!ˆÔØ×#Ñ#Ô%Ø!"ˆÔØˆÔØ#'ˆÔ Ø#'ˆÔ Ø!ˆÔØ!#ˆÔØ%'ˆÔ"Ø&(ˆÔ#Ø$&ˆÔ!ØˆÔØ ˆÔØ#$ˆÔ Ø "ˆÔØˆÔØˆŒØ ˆÔØˆŒØ ˆÔØˆŒØˆ�r[   TFc                 ó  — || _         || _        || _        || _        || _        || _        |	| _        |sÖt        |d«      5 }|j                  dd«       |j                  «       }|j                  dd«       |dk(  rt        d«      ‚| j                  rAt        j                  |j                  «       |t        j                  ¬«      | _        || _        n/|j!                  «       | _        t#        | j                  «      | _        d d d «       n|| _        t#        |«      | _        d| _        | j                  d d t&        j(                  k7  r| j                  | _        nÉt'        j,                  | j                  | j                   |
¬«      }dD ]=  }|j/                  t1        |«      «      \  | _        | _        | _        | j*                  sŒ= n t        d	«      ‚~| j*                  | j                  ur7t3        | j                  d
«      r| j                  j5                  «        d| _        | j$                  | _        t8        rEt;        dt=        | j*                  «      | j$                  | j                  fz  | j                   ¬«       y y # 1 sw Y   �ŒixY w)NÚrbr   é   zFile size is 0 bytes)Úaccessé   )r5   r<   )ÚWorkbookr=   z-Can't find workbook in OLE2 compound documentr²   r[   zmem: %s, base: %d, len: %d©Úfile)r5   r6   r7   r8   r9   r:   r;   ÚopenÚseekÚtellrB   ÚmmapÚfilenoÚACCESS_READr¶   Ú
stream_lenÚreadrL   Úbaser   Ú	SIGNATURErµ   ÚCompDocÚlocate_named_streamrŠ   r´   r²   Ú	_positionÚDEBUGÚprintÚtype)rq   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   ÚfÚsizeÚcdÚqnames                  rU   r>   zBook.biff2_8_loadV  s	  € ð ˆŒØ"ˆŒØ ˆŒØ!2ˆÔØ.ˆÔØ"ˆŒØ&ˆÔáÜ�h Ó%ð 8¨Ø—‘�q˜!”Ø—v‘v“x�Ø—‘�q˜!”Ø˜1’9Ü#Ð$:Ó;Ð;Ø—=’=Ü#'§9¡9¨Q¯X©X«Z¸Äd×FVÑFVÔ#W�D”LØ&*�D•Oà#$§6¡6£8�D”LÜ&)¨$¯,©,Ó&7�D”O÷8ð 8ð )ˆDŒLÜ! -Ó0ˆDŒOàˆŒ	Ø�<‰<˜˜Ðœw×0Ñ0Ò0à—|‘|ˆD�Hä—‘ §¡°t·|±|Ø<VôXˆBà-ò Q�à×2Ñ2´?À5Ó3IÓJñ 5�”˜$œ) T¤_à—8“8Ùð	Qô  Ð OÓPÐPØØ�x‰x˜tŸ|™|Ñ+Ü˜4Ÿ<™<¨Ô1Ø—L‘L×&Ñ&Ô(Ø"�”ØŸ™ˆŒÝÜÐ.´$°t·x±x³.À$Ç)Á)ÈTÏ_É_Ð1]Ñ]Ðdh×dpÑdpÖqð ÷I8ñ 8ús   Á CJ Ê J
c                 ó€   — i | _         g | _        d| _        d| _        dt        i| _        d| _        g | _        g | _        y )Nr   )	Ú
format_mapÚformat_listÚxfcountÚactualfmtcountÚXL_CELL_NUMBERÚ_xf_index_to_xl_type_mapÚ_xf_epilogue_doner×   Ú	font_listr¨   s    rU   rÇ   zBook.initialise_format_info�  sC   € àˆŒØˆÔØˆŒØˆÔØ)*¬NÐ(;ˆÔ%Ø!"ˆÔØˆŒØˆ�r[   c                 óÒ   — | j                   }| j                  ||dz    }t        |«      }| xj                   |z  c_         |dk  rt        S |\  }}t	        |«      dz  t	        |«      z  S )NrÜ   rÞ   )rî   rµ   rL   ÚMY_EOFÚ	BYTES_ORD)rq   ÚposÚbuff_twoÚlenbuffÚloÚhis         rU   Ú	get2byteszBook.get2bytesš  sc   € Ø�n‰nˆØ—8‘8˜C  A¡Ð&ˆÜ�h“-ˆØ�Š˜'Ñ!�Ø�QŠ;ÜˆMØ‰ˆˆBÜ˜"“ Ñ"¤i°£mÑ3Ð3r[   c                 ó”   — | j                   }| j                  }t        d|||dz    «      \  }}|dz  }||||z    }||z   | _         |||fS )Nú<HHé   ©rî   rµ   r   )rq   r  rµ   ÚcodeÚlengthÚdatas         rU   Úget_record_partszBook.get_record_parts¤  s_   € Ø�n‰nˆØ�h‰hˆÜ˜e S¨¨S°©U ^Ó4‰ˆˆfØˆq‰ˆØ�3�s˜6‘zÐ"ˆØ˜v™ˆŒØ�f˜dÐ#Ð#r[   c                 ó    — | j                   }| j                  }t        d|||dz    «      \  }}||k7  ry|dz  }||||z    }||z   | _         |||fS )Nr	  r
  )Nr   r[   r  )rq   Úreqd_recordr  rµ   r  r  r  s          rU   Úget_record_parts_conditionalz!Book.get_record_parts_conditional­  sj   € Ø�n‰nˆØ�h‰hˆÜ˜e S¨¨S°©U ^Ó4‰ˆˆfØ�;ÒØ!Øˆq‰ˆØ�3�s˜6‘zÐ"ˆØ˜v™ˆŒØ�f˜dÐ#Ð#r[   c                 ó(  — | j                   rt        d«      ‚|r| j                  |   | _        | j	                  t
        «       t        j                  | | j                  | j                  |   |«      }|j                  | «       || j                  |<   |S )Nz,Can't load sheets after releasing resources.)r³   rB   rÃ   rî   r@   ÚXL_WORKSHEETr   ÚSheetrI   ré   rJ   )rq   Ú	sh_numberÚ
update_posrS   s       rU   r“   zBook.get_sheet¸  s…   € Ø×#Ò#ÜÐJÓKÐKÙØ!×.Ñ.¨yÑ9ˆDŒNØ�‰”LÔ!ô �[‰[ØØ�N‰NØ×Ñ˜iÑ(Øó	
ˆð 	�‰�ŒØ&(ˆ×Ñ˜Ñ#Øˆ	r[   c                 ó:  — t         r-t        d| j                  | j                  | j                  ¬«       t        t        | j                  «      «      D ]G  }t         r.t        d|| j                  | j                  | j                  ¬«       | j                  |«       ŒI y )NzGET_SHEETS:rà   zGET_SHEETS: sheetno =)rï   rð   rI   rÃ   r5   r’   rL   r“   )rq   Úsheetnos     rU   rK   zBook.get_sheetsÍ  sw   € å”%˜ t×'8Ñ'8¸$×:KÑ:KÐRV×R^ÑR^Õ_Üœc $×"3Ñ"3Ó4Ó5ò 	$ˆGÝ”eÐ3°W¸d×>OÑ>OÐQU×QbÑQbÐim×iuÑiuÕvØ�N‰N˜7Õ#ñ	$r[   c                 óÊ   — t        j                  | «       t        d«      }|g| _        dg| _        dg| _        | j                  j                  d «       | j                  «        y )NzSheet 1r   )	r   Úinitialise_bookrŠ   rI   rÃ   rÂ   rJ   ÚappendrK   )rq   Úfake_sheet_names     rU   rG   zBook.fake_globals_get_sheetÔ  sW   € Ü×"Ñ" 4Ô(Ü)¨)Ó4ˆØ,Ð-ˆÔØ˜CˆÔØ"# ˆÔØ×Ñ×Ñ Ô%Ø�‰Õr[   c           	      óf  — | j                   }| j                  «        t        rt        | j                  d||«       |dk(  rVt        |d| j                  d¬«      }d}t        }t        | j                  «      dk(  r| j                  | j                  z   }nVd}nSt        d|dd «      \  }}}|| j                  z   }|t        k  rt        |d| j                  d¬«      }nt        |dd¬«      }t        s| j                  d	k\  r%t        | j                  d
| j                   ||||«       | xj                   dz  c_        |t        k7  ra| j"                  j%                  d«       ddddœj'                  |d«      }t        s| j                  dk\  rt        | j                  d|||«       y y t        | j(                  «      }	| j"                  j%                  |	«       | j(                  j%                  |«       | j                  j%                  |«       | j*                  j%                  |«       |	| j,                  |<   y )NzBOUNDSHEET: bv=%d data %r
r   r   r   ©Úlenlenr\   z<iBBé   rÜ   zFBOUNDSHEET: inx=%d vis=%r sheet_name=%r abs_posn=%d sheet_type=0x%02x
zMacro sheetÚChartzVisual Basic module)r   rÜ   r!  ÚUNKNOWNzANOTE *** Ignoring non-worksheet data named %r (type 0x%02x = %s)
)rE   Úderive_encodingrï   rF   r5   Úunpack_stringÚencodingÚXL_BOUNDSHEET_WORKSHEETrL   rÃ   Ú_sheetsoffsetrê   r   ÚBIFF_FIRST_UNICODEÚunpack_unicoder6   rÈ   rÌ   r  ÚgetrI   rÂ   rÐ   )
rq   r  Úbvr    Ú
visibilityÚ
sheet_typeÚabs_posnÚoffsetÚdescrÚsnums
             rU   Úhandle_boundsheetzBook.handle_boundsheetÝ  s÷  € à×ÑˆØ×ÑÔÝÜ�D—L‘LÐ"?ÀÀTÔJØ�Š8ô ' t¨Q°·±ÀaÔHˆJØˆJÜ0ˆJÜ�4×$Ñ$Ó%¨Ò*Ø×-Ñ-°·	±	Ñ9‘ð
 ‘ä-3°F¸DÀÀ1¸IÓ-FÑ*ˆF�J 
Ø §	¡	Ñ)ˆHØÔ&Ò&Ü*¨4°°D·M±MÈ!ÔL‘
ä+¨D°!¸AÔ>�
å�D—N‘N aÒ'Ü�D—L‘LØYØ×&Ñ&¨
°JÀÈ*ôVð 	×Ò !Ñ#ÕØÔ0Ò0Ø× Ñ ×'Ñ'¨Ô+à ØØ(ñ÷ ‰c�*˜iÓ(ð	 õ ˜Ÿ™¨!Ò+Ü˜Ÿ™ØXØ 
¨Eõ3ð ,ô
 �t×(Ñ(Ó)ˆDØ× Ñ ×'Ñ'¨Ô-Ø×Ñ×$Ñ$ ZÔ0Ø×Ñ×$Ñ$ XÔ.Ø×"Ñ"×)Ñ)¨*Ô5Ø48ˆD×%Ñ% jÒ1r[   c                 óp   — t        d|dd «      d   }t        rt        | j                  d|«       || _        y )Nú<Hr   rÜ   zBUILTINFMTCOUNT: %r
)r   rï   rF   r5   rÆ   )rq   r  rÆ   s      rU   Úhandle_builtinfmtcountzBook.handle_builtinfmtcount  s6   € ô !  t¨A¨a yÓ1°!Ñ4ˆÝ”'˜$Ÿ,™,Ð(?ÀÔQØ.ˆÕr[   c           
      ó  — | j                   r| j                   | _        �n| j                  €Z| j                  dk  rt	        | j
                  d«       d| _        nÏd| _        | j                  dk\  r¹t	        | j
                  d«       n¢| j                  }|t        v r
t        |   }nDd|cxk  rdk  rn nd	t        |«      z   }n'| j                  dk\  r
d| _        d
}ndt        |«      z   }t        s| j                  r'|| j                  k7  rt	        | j
                  d||«       || _        | j                  dk7  r	 t        d| j                  «       | j                  rAt!        | j"                  d| j                  d¬«      }|j%                  «       }|| _        d| _        | j                  S # t        $ rY}t	        | j
                  d| j                  | j                  t        |«      j                  j                  d«      d   |«       ‚ d }~ww xY w)Nr   zD*** No CODEPAGE record, no encoding_override: will use 'iso-8859-1'
z
iso-8859-1i°  rÜ   z2*** No CODEPAGE record; assuming 1200 (utf_16_le)
i,  iÏ  ÚcpÚ	utf_16_leÚunknown_codepage_z%CODEPAGE: codepage %r -> encoding %r
s   trialz/ERROR *** codepage %r -> encoding %r -> %s: %s
ú.r\   r   r   r  F)r8   r&  ÚcodepagerE   rF   r5   r6   Úencoding_from_codepageÚstrrï   ÚunicodeÚBaseExceptionrñ   r|   ÚsplitrÄ   r%  Ú	user_nameÚrstrip)rq   r<  r&  ÚeÚstrgs        rU   r$  zBook.derive_encoding  s·  € Ø×!Ò!Ø ×2Ñ2ˆDŽMØ�]‰]Ð"Ø× Ñ  2Ò%Ü˜Ÿ™Ø[ô]à ,�•à $�”Ø—>‘> QÒ&Ü˜DŸL™LÐ*_Õ`à—}‘}ˆHØÔ1Ñ1Ü1°(Ñ;‘Ø˜Ô( DÕ(Ø¤# h£-Ñ/‘Ø×"Ñ" bÒ(Ø $�”Ø&‘à.´°X³Ñ>�Ý˜Ÿš¨H¸¿¹Ò,EÜ˜Ÿ™Ð&NÐPXÐZbÔcØ$ˆDŒMØ�=‰=˜DÒ ðÜ˜ $§-¡-Ô0ð ×ÒÜ  §¡°°D·M±MÈ!ÔLˆDØ—;‘;“=ˆDð "ˆDŒNØ!&ˆDÔØ�}‰}Ðøô !ò Ü˜Ÿ™ØFØ—M‘M 4§=¡=´$°q³'×2BÑ2B×2HÑ2HÈÓ2MÈbÑ2QÐSTôVð ûð	ús   Ä8F' Æ'	H	Æ0AHÈH	c                 óV   — t        d|dd «      d   }|| _        | j                  «        y )Nr5  r   rÜ   )r   r<  r$  )rq   r  r<  s      rU   Úhandle_codepagezBook.handle_codepageE  s,   € ä˜$  Q q 	Ó*¨1Ñ-ˆØ ˆŒØ×ÑÕr[   c                 ó¸   — t        d|dd «      }| j                  rt        d|| j                  ¬«       | j                  dk(  s| j                  |k(  sJ ‚|| _        y )Nr	  r   r
  z
Countries:rà   r�   )r   r6   rð   r5   Ú	countries)rq   r  rI  s      rU   Úhandle_countryzBook.handle_countryK  sN   € Ü˜5 $ q¨ )Ó,ˆ	Ø�>Š>œ5 ¨y¸t¿|¹|ÕLà�~‰~ Ò'¨4¯>©>¸YÒ+FÐFÐFØ"ˆ�r[   c                 ó”   — t        d|dd «      d   }t        s| j                  rt        | j                  d|«       |dv sJ ‚|| _        y )Nr5  r   rÜ   zDATEMODE: datemode %r
)r   r   )r   rï   r6   rF   r5   Údatemode)rq   r  rL  s      rU   Úhandle_datemodezBook.handle_datemodeR  sH   € Ü˜$  Q q 	Ó*¨1Ñ-ˆÝ�D—N’NÜ�D—L‘LÐ";¸XÔFØ˜6Ñ!Ð!Ð!Ø ˆ�r[   c           	      ó^  — t         xs | j                  dk\  }| j                  dk\  r‡t        d|d d «      \  }}d}t	        ||d¬«      \  }}||d  }| j
                  d   t        k(  r| j                  j                  |«       |r)t        | j                  d| j
                  d   ||||«       y y y )	NrÜ   r   ú<HIr!  r   r  r\   zCEXTERNNAME: sbktype=%d oflags=0x%04x oinfo=0x%08x name=%r extra=%r
)rï   r6   rE   r   Úunpack_unicode_update_posrÒ   ÚSUPBOOK_ADDINrÓ   r  rF   r5   )rq   r  ÚblahÚoption_flagsÚ
other_infor  r‹   Úextras           rU   Úhandle_externnamezBook.handle_externnameY  s¸   € ÜÒ+˜Ÿ™¨!Ñ+ˆØ×Ñ Ò"Ü&,¨U°D¸¸!°HÓ&=Ñ$ˆL˜*ØˆCÜ1°$¸ÀAÔF‰IˆD�#Ø˜˜�JˆEØ×"Ñ" 2Ñ&¬-Ò7Ø×%Ñ%×,Ñ,¨TÔ2ÙÜ˜Ÿ™ØZØ×'Ñ'¨Ñ+¨\¸:ÀtÈUõTð ð #r[   c           	      ó¶  — | j                  «        | xj                  dz  c_        t        xs | j                  dk\  }t        xs | j                  dk\  }| j                  dk\  rït        d|dd «      d   }|dz  dz   }t        |«      |k  r_|r!t        | j                  d|t        |«      «       | j                  «       \  }}}|t        k7  rt        d«      ‚||z  }t        |«      |k  rŒ_d}	t        |«      D ]W  }
t        d	||	|	dz    «      }|\  }}}| j                  j                  |«       |	dz  }	|sŒ>t        | j                  d
|
|||«       ŒY y t        d|d d «      \  }}|rmt        d| j                  ¬«       t!        |dt        |«      | j                  ¬«       dddddœj#                  |d«      }t        d|||fz  | j                  ¬«       |dk(  rXt%        |d|dz    | j&                  «      }|| j(                  | j                  <   |r!t        | j(                  | j                  ¬«       d|cxk  rdk  sn d}| j*                  j                  |«       y )Nr   rÜ   r   r5  r   r!  z*INFO: EXTERNSHEET needs %d bytes, have %d
z)Missing CONTINUE after EXTERNSHEET recordz<HHHzLEXTERNSHEET(b8): k = %2d, record = %2d, first_sheet = %5d, last sheet = %5d
z<BBzEXTERNSHEET(b7-):rà   ©ÚfoutzEncoded URLzCurrent sheet!!zSpecific sheet in own doc'tz Nonspecific sheet in own doc't!!)r   rÜ   é   r
  zNot encodedz   %3d chars, type is %d (%s)rZ  r
  )r$  rÑ   rï   r6   rE   r   rL   rF   r5   r  ÚXL_CONTINUErB   r’   rÍ   r  rð   Úhex_char_dumpr+  r?  r&  rÏ   rÎ   )rq   r  Úblah1Úblah2Únum_refsÚ
bytes_reqdÚcode2Úlength2Údata2r  ÚkÚinfoÚref_recordxÚref_first_sheetxÚref_last_sheetxÚncÚtyÚmsgr    s                      rU   Úhandle_externsheetzBook.handle_externsheetg  sO  € Ø×ÑÔØ×Ò˜qÑ ÕÜÒ,˜Ÿ™¨1Ñ,ˆÜÒ,˜Ÿ™¨1Ñ,ˆØ×Ñ Ò"Ü˜d D¨¨1 IÓ.¨qÑ1ˆHØ! A™¨Ñ)ˆJÜ�d“)˜jÒ(ÙÜØŸ™ØEØ"¤C¨£Iôð
 )-×(=Ñ(=Ó(?Ñ%��w ØœKÒ'Ü#Ð$OÓPÐPØ˜‘�ô �d“)˜jÓ(ð ˆCÜ˜HÓ%ò 
�Ü˜f d¨3¨s°1©u oÓ6�ØAEÑ>�Ð-¨Ø×&Ñ&×-Ñ-¨dÔ3Ø�q‘�ÚÜØŸ™ØgØ˜;Ð(8¸/õñ
ô ˜E 4¨¨ 8Ó,‰FˆB�ÙÜÐ)°·±Õ=Ü˜d A¤s¨4£y°t·|±|ÕDà$Ø(Ø4Ø9ñ	÷
 ‘#�b˜-Ó(ð ô Ð5¸¸RÀ¸ÑEÈDÏLÉLÕYØ�QŠwÜ$ T¨!¨B¨q©D \°4·=±=ÓA�
ØCM�×+Ñ+¨D×,?Ñ,?Ñ@Ùœ% × ;Ñ ;À$Ç,Á,ÕOØ˜”L˜q”LØ�Ø×&Ñ&×-Ñ-¨bÕ1r[   c                 ó¢  — | j                   dk\  r¶| j                  }t        |d«       t        |dt	        |«      d|¬«       | j
                  dk\  rvt        d|d d «      \  }|dk(  r+t        d|dd  «      \  }}t        |d||«       t        d«      ‚|d	k(  r0t        d|d
d «      \  }|d	k(  rd}n
|dk(  rd}nd}t        |d|«       t        d«      ‚)NrÜ   z
FILEPASS:
r   )rê   rY  r   r5  r	  z!weak XOR: key=0x%04x hash=0x%04x
r   r
  r!  z	BIFF8 stdzBIFF8 strongz** UNKNOWN ENCRYPTION METHOD **z%s
zWorkbook is encrypted)r6   r5   rF   r\  rL   rE   r   rB   )rq   r  ÚlogfÚkind1ÚkeyÚ
hash_valueÚkind2Úcaptions           rU   Úhandle_filepasszBook.handle_filepassš  sæ   € Ø�>‰>˜QÒØ—<‘<ˆDÜ�D˜-Ô(Ü˜$ ¤3 t£9°1¸4Õ@Ø× Ñ  BÒ&Ü  d¨2¨A hÓ/‘�Ø˜A’:Ü&,¨U°D¸¸°HÓ&=‘O�C˜Ü˜DØ<Ø˜Zô)ô Ð/Ó0Ð0ð ˜a’ZÜ# D¨$¨q°¨)Ó4‘F�EØ ’zØ"-™Ø !šØ"0™à"C˜Ü˜D &¨'Ô2ÜÐ/Ó0Ð0r[   c                 ó€  — t         xs | j                  dk\  }| j                  }|dk  ry | j                  «        t	        d|dd «      \
  }}}}}}	}
}}}t        «       }| |_        t        | j                  «      }||_	        | j                  j                  |«       ||_        g d¢}|D ]  \  }}}t        ||||z  |z	  «       Œ d|j                     }|dk  rt        |d| j                  |¬	«      \  }}nt!        |d|¬	«      \  }}||_        |	|_        d |_        |rt)        | j*                  d
|||||||	|«
       |}|j,                  r2t.        j1                  |d«      }|rt3        d|z  | j*                  ¬«       ||_        ||d  |_        ||_        d|_        |r"|j=                  | j*                  d|z  d¬«       y y )NrÜ   r   z	<HBBHHH4Br   é   ))r�   r   r   )r‚   rÜ   r   )rƒ   r
  rÜ   )r„   rÞ   rZ  )r…   é   r
  )r†   é    r   )r‡   iÀ  r!  )rˆ   i   é   z Mr   )Ú	known_lenzZNAME[%d]:%s oflags=%d, name_len=%d, fmla_len=%d, extsht_index=%d, sheet_index=%d, name=%r
z??Unknown??z    builtin: %srà   z--- handle_name: name[%d] ---z-------------------r`   )rï   r6   rE   r$  r   rX   rm   rL   rÔ   r‰   r  rS  Úsetattrr„   Úunpack_string_update_posr&  rP  Úextn_sheet_numÚexcel_sheet_indexr�   rF   r5   r†   Úbuiltin_name_from_coder+  rð   r‹   rŒ   Úbasic_formula_lenÚ	evaluatedrp   )rq   r  rR  r,  rS  Úkb_shortcutÚname_lenÚfmla_lenÚextsht_indexÚsheet_indexÚmenu_text_lenÚdescription_text_lenÚhelp_topic_text_lenÚstatus_bar_text_lenÚnobjr‰   ÚattrsÚattrÚmaskÚnshiftÚ
macro_flagÚinternal_namer  r‹   s                           rU   Úhandle_namezBook.handle_name±  sæ  € ÜÒ+˜Ÿ™¨!Ñ+ˆØ×ÑˆØ�Š7ØØ×ÑÔô �;  Q r 
Ó+ñ	
Ø˜+ x°¸<ÈØÐ/Ð1DÐFYä‹vˆØˆŒ	Ü˜×+Ñ+Ó,ˆ
Ø$ˆŒØ×Ñ×!Ñ! $Ô'Ø(ˆÔò	
ˆð #(ò 	AÑˆD�$˜Ü�D˜$ °Ñ!4¸Ñ ?Õ@ð	Að ˜$Ÿ*™*Ñ%ˆ
Ø�Š7Ü!9¸$ÀÀDÇMÁMÐ]eÔ!fÑˆM™3ä!:¸4ÀÈxÔ!XÑˆM˜3Ø*ˆÔØ!,ˆÔØˆŒ
ÙÜØ—‘ØmØ˜J¨°hØ˜,¨°]ô	Dð
 ˆØ�<Š<Ü)×-Ñ-¨d°MÓBˆDÙ”UÐ,¨tÑ3¸$¿,¹,ÕGØˆŒ	Ø  ˜:ˆÔØ!)ˆÔØˆŒÙØ�I‰IØ—‘Ø6¸ÑCØ,ð õ ð r[   c                 óD  — | j                   dk\  }| j                  }|rpt        d|¬«       t        dt        | j                  «      |¬«       t        dt        | j
                  «      |¬«       t        dt        | j                  «      |¬«       t        | j                  «      }t        |«      D ]Ð  }| j                  |   }| j                  dk\  rR|j                  }|dk(  rd	}n•d
|cxk  rt        | j                  «      k  rn n| j                  |d
z
     }|d	k(  r]d}nZd}nWd| j                  cxk  rdk  rBn n?|j                  }|dk(  rd	}n+| j
                  |   }| j                  j                  |d«      }|_        ŒÒ t        |«      D ]F  }| j                  |   }|j                  s|j                   rŒ+|j"                  rŒ8t%        | |||¬«       ŒH | j                   dk\  rOt        d|¬«       t        |«      D ]'  }| j                  |   }|j'                  |d|z  ¬«       Œ) t        d|¬«       i }	i }
t        |«      D ]‰  }| j                  |   }|j(                  j+                  «       }||j                  f}||	v r| j                   rt-        |d|«       ||	|<   |j                  ||f}||
v r|
|   j/                  |«       Œ„|g|
|<   Œ‹ |
j1                  «       D ]-  }|
|   }|j3                  «        |D �cg c]  }|d   ‘Œ	 c}|
|<   Œ/ |	| _        |
| _        y c c}w )NrÜ   z+++++ names_epilogue +++++rà   rÌ   rÏ   rÐ   r   r   r\   r   éþÿÿÿéýÿÿÿr   r   )rR  z&---------- name object dump ----------z--- name[%d] ---)ra   z&--------------------------------------z)Duplicate entry %r in name_and_scope_map
)r6   r5   rð   ÚREPRrÌ   rÏ   rÐ   rL   rÔ   r™   rE   r~  r}  r+  r�   r„   rˆ   r�  Úevaluate_name_formularp   r‹   ÚlowerrF   r  ÚkeysÚsortÚname_and_scope_mapÚname_map)rq   rR  rò   Ú	num_namesÚnamexr‹  r†  Úintl_sheet_indexr    r›  rœ  Ú
name_lcaserp  Ú	sort_dataÚalistÚxs                   rU   Únames_epiloguezBook.names_epilogueí  s$  € Ø�~‰~ Ñ"ˆØ�L‰LˆÙÜÐ.°QÕ7ÜÐ#¤T¨$×*>Ñ*>Ó%?ÀaÕHÜÐ*¬D°×1LÑ1LÓ,MÐTUÕVÜÐ(¬$¨t×/HÑ/HÓ*IÐPQÕRÜ˜×*Ñ*Ó+ˆ	Ü˜9Ó%ò 	*ˆEØ×%Ñ% eÑ,ˆDð
 × Ñ  BÒ&Ø"×4Ñ4�Ø !Ò#Ø')Ñ$Ø˜+ÔB¬¨T×-AÑ-AÓ)BÕBØ'+×';Ñ';¸KÈ¹MÑ'JÐ$Ø'¨2Ò-Ø+-Ñ(ð (*Ñ$Ø�t×(Ñ(Ô.¨BÕ.Ø"×1Ñ1�Ø !Ò#Ø')Ñ$à!%×!<Ñ!<¸[Ñ!I�JØ'+×'@Ñ'@×'DÑ'DÀZÐQSÓ'TÐ$Ø)ˆD�Jð1	*ô4 ˜9Ó%ò 	@ˆEØ×%Ñ% eÑ,ˆDà�zŠz˜TŸ[š[¨(Ø�~Š~˜xÜ! $¨¨e¸$Ö?ð	@ð �>‰>˜QÒÜÐ:ÀÕCÜ˜yÓ)ò @�Ø×)Ñ)¨%Ñ0�Ø—	‘	˜!Ð$6¸Ñ$>�	Õ?ð@ô Ð:ÀÕCð  ÐØˆÜ˜9Ó%ò 	3ˆEØ×%Ñ% eÑ,ˆDØŸ™Ÿ™Ó*ˆJØ˜tŸz™zÐ*ˆCØÐ(Ñ(¨T¯^ª^Ü˜ÐGÈÔMØ&*Ð˜sÑ#ØŸ™ U¨DÐ1ˆIð ˜XÑ%Ø˜Ñ$×+Ñ+¨IÕ6à(1 {�˜Ò$ð	3ð —=‘=“?ò 	2ˆCØ˜S‘MˆEØ�J‰JŒLØ+0Ö1 a˜Q˜q›TÒ1ˆH�SŠMð	2ð #5ˆÔØ ˆ�ùò 2s   Ë:Lc                 ó(   — t        d|dd «      \  }}y )NrO  r
  é
   r   )rq   r  Úobj_typeÚobj_ids       rU   Ú
handle_objzBook.handle_obj7  s   € ô " %¨¨a°¨Ó4Ñˆ‘&r[   c           	      ó  — | j                   j                  d «       t        xs | j                  dk\  }|r9t	        d| j
                  ¬«       t        |dt        |«      | j
                  ¬«       t        d|dd «      d   }|rt	        d|z  | j
                  ¬«       | j                  }| xj                  dz  c_	        |dd	 d
k(  rht        | j                   d<   | j                  dz
  | _        |r>t	        d||fz  | j
                  ¬«       t	        d| j                  | j
                  ¬«       y |dd	 dk(  rDt        | j                   d<   | j                  dz
  | _        |rt	        d|z  | j
                  ¬«       y t        |dd¬«      \  }}|dk(  r.t         | j                   d<   |rt#        | j
                  d||«       y t$        | j                   d<   |rt#        | j
                  d||«       g }t'        |«      D ]K  }	 t        ||d¬«      \  }	}|j                  |	«       |sŒ)t#        | j
                  d|t        |	«      |	|«       ŒM y # t(        j*                  $ r- | j                  rt	        d|||fz  | j
                  ¬«       Y  y w xY w)NrÜ   zSUPBOOK:rà   r   rX  r5  znum_sheets = %dr   r
  s   r\   z(SUPBOOK[%d]: internal 3D refs; %d sheetsz    _all_sheets_maps    :zSUPBOOK[%d]: add-in functionsr  z#SUPBOOK[%d]: DDE/OLE document = %r
zSUPBOOK[%d]: url = %r
zK*** WARNING: unpack failure in sheet %d of %d in SUPBOOK record for file %rz-  sheetx=%d namelen=%d name=%r (next pos=%d)
)rÒ   r  rï   r6   rð   r5   r\  rL   r   rÉ   ÚSUPBOOK_INTERNALrÊ   rÌ   rQ  rË   rP  ÚSUPBOOK_DDEOLErF   ÚSUPBOOK_EXTERNALr™   ÚstructÚerror)
rq   r  rR  Ú
num_sheetsÚsbnÚurlr  r©   r£  Úshnames
             rU   Úhandle_supbookzBook.handle_supbook>  s_  € à×Ñ×"Ñ" 4Ô(ÜÒ+˜Ÿ™¨!Ñ+ˆÙÜ�* 4§<¡<Õ0Ü˜$ ¤3 t£9°4·<±<Õ@Ü˜D $ q¨ )Ó,¨QÑ/ˆ
Ù”Ð(¨:Ñ5¸D¿L¹LÕIØ×!Ñ!ˆØ×Ò˜qÑ ÕØ��!ˆ9˜Ò#Ü&6ˆD×Ñ Ñ#Ø'+×':Ñ':¸QÑ'>ˆDÔ$ÙÜÐ@ÀCÈÐCTÑTÐ[_×[gÑ[gÕhÜÐ+¨T×-AÑ-AÈÏÉÕUØØ��!ˆ9Ð+Ò+Ü&3ˆD×Ñ Ñ#Ø'+×':Ñ':¸QÑ'>ˆDÔ$Ù”UÐ:¸SÑ@ÀtÇ|Á|ÕTØÜ,¨T°1¸QÔ?‰ˆˆSØ˜Š?Ü&4ˆD×Ñ Ñ#Ù”W˜TŸ\™\Ð+QÐSVÐX[Ô\ØÜ"2ˆ×Ñ˜BÑÙ”˜Ÿ™Ð'@À#ÀsÔKØˆÜ�zÓ"ò 	zˆAðÜ7¸¸cÈ!ÔL‘�˜ð ×Ñ˜vÔ&Ú”W˜TŸ\™\Ð+[Ð]^Ô`cÐdjÓ`kÐmsÐuxÕyñ	zøô —<‘<ò 	ð —>’>ÜØeØ˜j¨#Ð.ñ/à!Ÿ\™\õò
 ð	ús   Ç;IÉ<JÊJc                 ó’  — | j                  «        t        d|d d «      d   }t        |d| j                  d¬«      }| j                  }|| j
                  |   k(  sJ ‚| xj                  dz  c_        | j                  }|dz
  t        |«      z
  }t        rt        | j                  d||||«       | j                  «        t        r$t        d| j                  z  | j                  ¬«       | j                  j                  d «       | j!                  |d	¬
«       t        r"t        d| j                  | j                  ¬«       ||z   | _        y )Nú<ir
  r   r   r  z'SHEETHDR %d at posn %d: len=%d name=%r
z SHEETHDR: xf epilogue flag is %drà   F)r  z"SHEETHDR: posn after get_sheet() =)r$  r   r%  r&  rÅ   rI   rî   rL   rï   rF   r5   rÇ   rð   rý   rJ   r  r“   )rq   r  Ú	sheet_lenr    r  ÚBOF_posnÚposns          rU   Úhandle_sheethdrzBook.handle_sheethdrm  s  € ð
 	×ÑÔÜ˜4  b q Ó*¨1Ñ-ˆ	Ü" 4¨¨D¯M©MÀ!ÔDˆ
Ø×&Ñ&ˆØ˜T×.Ñ.¨wÑ7Ò7Ð7Ð7Ø×Ò Ñ!ÕØ—>‘>ˆØ˜!‰|œc $›iÑ'ˆÝ”'˜$Ÿ,™,Ð(RÐT[Ð]aÐclÐnxÔyØ×#Ñ#Ô%Ý”%Ð:¸T×=SÑ=SÑSÐZ^×ZfÑZfÕgØ×Ñ×Ñ Ô%Ø�‰�w¨5ˆÔ1Ý”%Ð<¸d¿n¹nÐSW×S_ÑS_Õ`Ø! IÑ-ˆ�r[   c                 ól   — t        d|«      d   }t        rt        d|| j                  ¬«       || _        y )Nr¶  r   zSHEETSOFFSET:rà   )r   rï   rð   r5   r(  )rq   r  r¹  s      rU   Úhandle_sheetsoffsetzBook.handle_sheetsoffset‚  s-   € ä�d˜DÓ! !Ñ$ˆÝ”%˜¨°D·L±LÕAØ!ˆÕr[   c                 ó@  — t         r!t        d| j                  ¬«       t        «       }t	        |«      }|g}t        d|dd «      d   }t         s| j                  dk\  rt        | j                  d|«       	 | j                  t        «      \  }}}|€n8||z  }t         dk\  rt        | j                  d	||«       |j                  |«       ŒTt        ||«      \  | _        }| j                  r|| _        t         r)t        «       }	t        d
|	z
  fz  | j                  ¬«       y y )NzSST Processingrà   r¶  r
  rÞ   r   rÜ   zSST: unique strings: %d
z'CONTINUE: adding %d bytes to SST -> %d
z SST processing took %.2f seconds)rï   rð   r5   r	   rL   r   r6   rF   r  r[  r  Úunpack_SST_tabler·   r9   r¸   )
rq   r  rP   ÚnbtÚstrlistÚuniquestringsr  ÚnbÚ
rt_runlistrR   s
             rU   Ú
handle_sstzBook.handle_sstˆ  s  € åÜÐ"¨¯©Õ6Ü“ˆBÜ�$‹iˆØ�&ˆÜ˜t T¨!¨A YÓ/°Ñ2ˆÝ�T—^‘^ qÒ(Ü�D—L‘LÐ"=¸}ÔMØØ!×>Ñ>¼{ÓK‰NˆD�"�dØˆ|ØØ�2‰IˆCÜ˜ŠzÜ˜Ÿ™Ð&PÐRTÐVYÔZØ�N‰N˜4Ô ð ô +;¸7ÀMÓ*RÑ'ˆÔ˜ZØ×ÒØ*4ˆDÔ'ÝÜ“ˆBÜÐ4¸¸R¹°{ÑBÈÏÉÖVð r[   c                 óŽ  — d}| j                   dk  r5| j                  sd| _        || _        y t	        |d| j                  d¬«      }n	 t        |dd¬«      }|r,t        | j                  dt        |«      | j                  |«       |j                  «       }|| _        y # t        $ r t        |j                  «       dd¬«      }Y Œmw xY w)Nr   r   Tr   r  rÜ   z!WRITEACCESS: %d bytes; raw=%s %r
)rE   r&  rÄ   rB  r%  r*  ÚUnicodeDecodeErrorÚstriprF   r5   rL   rC  )rq   r  rï   rE  s       rU   Úhandle_writeaccesszBook.handle_writeaccess¡  sµ   € ØˆØ×Ñ˜rÒ!Ø—=’=Ø%)�Ô"Ø!%�”ØÜ   q¨$¯-©-ÀÔB‰DðAÜ% d¨A°aÔ8�ñ ”'˜$Ÿ,™,Ð(LÌcÐRVËiÐY]×YkÑYkÐmqÔrØ�{‰{‹}ˆØˆ�øô &ò Aä% d§j¡j£l°A¸aÔ@’ðAús   ÁB Â%CÃCc                 ó2  — t        j                  | «       	 | j                  «       \  }}}t        rt	        d|z  | j
                  ¬«       |t        k(  r| j                  |«       �n°|t        k(  s	|t        k(  r| j                  |«       �n‹|t        k(  r| j                  |«       �no|t        k(  r| j                  |«       �nS|t        k(  r| j!                  |«       �n7|t"        k(  r| j%                  |«       �n|t&        k(  r| j)                  |«       �nÿ|t*        k(  r| j-                  |«       �nã|t.        k(  r| j1                  |«       �nÇ|t2        k(  r| j5                  |«       �n«|t6        k(  r| j9                  |«       �n�|t:        k(  r| j=                  |«       �ns|t>        k(  r| jA                  |«       �nW|tB        k(  r| jE                  |«       �n;|tF        k(  r| jI                  |«       �n|tJ        k(  r| jM                  |«       �n|tN        k(  r| jQ                  |«       nè|tR        k(  r| jU                  |«       nÍ|dz  dk(  r7| jV                  r+tY        | j
                  d| jZ                  |z
  dz
  |||«       nŽ|t\        k(  r„| j_                  «        | ja                  «        | jc                  «        | jd                  s| jg                  «        | jh                  dk(  r(t        r"t	        d| jZ                  | j
                  ¬«       y 	 �Œ)	Nz$parse_globals: record code is 0x%04xrà   éÿ   é	   z5*** Unexpected BOF at posn %d: 0x%04x len=%d data=%r
r
  r   zglobal EOF: position)5r   r  r  rï   rð   r5   ÚXL_SSTrÄ  ÚXL_FONTÚXL_FONT_B3B4Úhandle_fontÚ	XL_FORMATÚhandle_formatÚXL_XFÚ	handle_xfÚXL_BOUNDSHEETr3  ÚXL_DATEMODErM  ÚXL_CODEPAGErG  Ú
XL_COUNTRYrJ  ÚXL_EXTERNNAMErV  ÚXL_EXTERNSHEETrl  ÚXL_FILEPASSrt  ÚXL_WRITEACCESSrÈ  ÚXL_SHEETSOFFSETr¼  ÚXL_SHEETHDRrº  Ú
XL_SUPBOOKr´  ÚXL_NAMEr’  Ú
XL_PALETTEÚhandle_paletteÚXL_STYLEÚhandle_styler6   rF   rî   ÚXL_EOFÚxf_epiloguer¤  Úpalette_epiloguer&  r$  rE   )rq   Úrcr  r  s       rU   rH   zBook.parse_globals³  sy  € ô 	×"Ñ" 4Ô(ØØ#×4Ñ4Ó6ÑˆB�˜Ý”eÐBÀRÑGÈdÏlÉlÕ[Ø”VŠ|Ø—‘ Ö%Ø”w’ "¬Ò"4Ø× Ñ  Ö&Ø”y’Ø×"Ñ" 4Ö(Ø”u’Ø—‘˜tÖ$ØœÒ%Ø×&Ñ& tÖ,Ø”{Ò"Ø×$Ñ$ TÖ*Ø”{Ò"Ø×$Ñ$ TÖ*Ø”zÒ!Ø×#Ñ# DÖ)Ø”}Ò$Ø×&Ñ& tÖ,Ø”~Ò%Ø×'Ñ'¨Ö-Ø”{Ò"Ø×$Ñ$ TÖ*Ø”~Ò%Ø×'Ñ'¨Ö-Ø”Ò&Ø×(Ñ(¨Ö.Ø”{Ò"Ø×$Ñ$ TÖ*Ø”zÒ!Ø×#Ñ# DÖ)Ø”w’Ø× Ñ  Ö&Ø”zÒ!Ø×#Ñ# DÕ)Ø”x’Ø×!Ñ! $Õ'Ø�d‘˜a’ D§N¢NÜ˜Ÿ™Ð&^Ø—N‘N VÑ+¨aÑ/°°V¸TõCàœ’Ø× Ñ Ô"Ø×#Ñ#Ô%Ø×%Ñ%Ô'Ø—}’}Ø×(Ñ(Ô*Ø×$Ñ$¨Ò*åœeÐ$:¸D¿N¹NÐQU×Q]ÑQ]Õ^ð ð ñu r[   c                 óP   — | j                   |||z    }|t        |«      z   | _        |S rº   )rµ   rL   rî   )rq   r  r  r  s       rU   ré   z	Book.readó  s*   € Ø�x‰x˜˜C ™JÐ'ˆØœs 4›y™ˆŒØˆr[   c           	      ó  — t         rt        d|z  | j                  ¬«       d„ }| j                  }| j	                  «       }|t
        k(  r |d«       |t        vr |d| j                  ||dz    z  «       | j	                  «       }|t
        k(  r |d«       d|cxk  rd	k  sn  |d
||fz  «       dt        dt        |   |z
  «      z  }| j                  | j                  |«      }t         rt        | j                  d|«       t        |«      |k  r |d«       ||z  }|dz	  }t        d|dd «      \  }	}
t         rt        d||	|
fz  | j                  ¬«       | j                  dz
  |z
  }t         rt        d||fz  | j                  ¬«       dx}x}}|dk(  rGt        d|dd «      \  }}|	dk(  rd}n:|	dk(  r|dk  s|dv rd}n)d}n&ddddddœj                  |	d«      }n|dv r	ddddœ|   }|dk(  r|
t        k(  rd}t         s| j                   dk\  r t        d ||	|
|||fz  | j                  ¬«       |
t"        k(  xs |dk(  xr	 |
t        k(  }|t"        k(  r|s|
|k(  r|S |dk  r|
t$        k(  r|S |dk\  r|
d!k(  r |d"«        |d#||	|
|||fz  «       y )$Nzreqd: 0x%04xrà   c                 ó   — t        d| z   «      ‚)Nz%Unsupported format, or corrupt file: )rB   )rk  s    rU   Ú	bof_errorzBook.getbof.<locals>.bof_errorý  s   € ÜÐCÀcÑIÓJÐJr[   z$Expected BOF record; met end of filezExpected BOF record; found %rrÞ   z)Incomplete BOF record[1]; met end of filer
  r   z.Invalid length (%d) for BOF record type 0x%04xó    r   z
getbof(): data=%r
z)Incomplete BOF record[2]; met end of filer	  z5getbof(): op=0x%04x version2=0x%04x streamtype=0x%04xz+getbof(): BOF found at offset %d; savpos=%di   r   i   iÊ  )il	  i’  iù  r   r   r   r   r   )r   é   i   i   i   )r
  rÜ   r   r   rÜ   zHBOF: op=0x%04x vers=0x%04x stream=0x%04x buildid=%d buildyr=%d -> BIFF%dé   z%Workspace file -- no spreadsheet datazXBOF not workbook/worksheet: op=0x%04x vers=0x%04x strm=0x%04x build=%d year=%d -> BIFF%d)rï   rð   r5   rî   r  r   Úbofcodesrµ   rw   Úboflenré   rF   rL   r   r+  ÚXL_WORKBOOK_GLOBALS_4Wr6   rA   r  )rq   Ú
rqd_streamrë  ÚsavposÚopcoder  Úpaddingr  Úversion1Úversion2Ú
streamtypeÚ
bof_offsetÚversionÚbuildÚyearÚgot_globalss                   rU   r@   zBook.getbofø  sû  € õ ”%˜¨Ñ3¸$¿,¹,ÕGò	Kà—‘ˆØ—‘Ó!ˆØ”VÒÙÐ<Ô=ØœÑ!ÙÐ5¸¿¹ÀÈÈqÉÐ8QÑQÔRØ—‘Ó!ˆØ”VÒÙÐAÔBØ�VÔ!˜rÔ!ÙØ@Ø˜6Ð"ñ#ô$ð œ#˜a¤¨¡°&Ñ!8Ó9Ñ9ˆØ�y‰y˜Ÿ™¨Ó0ˆÝ”'˜$Ÿ,™,Ð(?ÀÔFÜˆt‹9�vÒÙÐAÔBØ�‰ˆØ˜Q‘;ˆÜ% e¨T°!°A¨YÓ7Ñˆ�*ÝÜÐIØ˜8 ZÐ0ñ1Ø7;·|±|õEà—^‘^ aÑ'¨&Ñ0ˆ
ÝÜÐ?Ø˜vÐ&ñ'Ø-1¯\©\õ;à!"Ð"ˆÐ"�%˜$Ø�tÒÜ  ¨¨Q¨q¨	Ó2‰KˆE�4Ø˜6Ò!Ø‘Ø˜VÒ#Ø˜$’; %Ð+=Ñ"=Ø ‘Gà ‘Gð ØØØØñ÷ ‘#�h Ó"ñ ð Ð+Ñ+Ø r°Ñ4°XÑ>ˆGà�bŠ=˜ZÔ+AÒAØˆGå�D—N‘N aÒ'ÜÐ\Ø˜8 Z°¸¸gÐFñGØMQÏ\É\õ[à Ô$7Ñ7ò DØ�r‰MÒB˜jÔ,BÑBð 	àÔ-Ò-±+À*ÐPZÒBZØˆNØ�RŠ<˜J¬,Ò6ØˆNØ�bŠ=˜Z¨6Ò1ÙÐ=Ô>ÙØfØ�x ¨U°D¸'ÐBñCõ	
r[   r{   )Br|   r}   r~   r   rM   rL  rE   rÔ   r<  r&  rI  rŠ   rB  rþ   r×   rø   r÷   rØ   rÕ   rÖ   r?   rN   r–   rn   r›   r¡   r¦   r©   r®   r°   rO   r»   rÀ   r›  rœ  rÙ   ÚsysÚstdoutr>   rÇ   r  r  r  r“   rK   rG   r3  r6  r$  rG  rJ  rM  rV  rl  rt  r’  r¤  r©  r´  rº  r¼  rÄ  rÈ  rH   ré   r@   rŽ   r[   rU   r=   r=     s�  „ ñð €Gð €Hð
 €Lð €Mð €Hð €Hð €Iñ   Ó#€Ið €Ið €Gð €Kð €Jð: €Nð  €Jð €Nð Ðð Ðò	#òBò)ò	+ò	,ò$ò.ò (ò+ò.ò!ð Ðð €HòðB %)¸Ø ŸZ™Z°1¸tØ'+Ø%*Ø$Ø!&Ø05ó7ròr	ò4ò$ò	$óò*$òò29òh/ò+òZò#ò!òTò12òf1ò.:òxH!òT5ò-zò^.ò*"òWò2ò$>ò@ó
J
r[   r=   c                 ól   — | }|dz  r|dk\  r|dz  }d}nd}|dz  }|dz  r|dk\  r|dz  }d}nd}||||fS )	Ni €  i   r   r   rÊ  i @  é€   rî  rŽ   )ÚinrowÚincolÚoutrowÚrelrowÚoutcolÚrelcols         rU   Úexpand_cell_addressr  F  sa   € à€FØˆv‚~Ø�UŠ?Ø�e‰OˆFØ‰àˆØ�T‰\€FØˆv‚~Ø�SŠ=Ø�c‰MˆFØ‰àˆØ�6˜6 6Ð)Ð)r[   c                 ój   — | dk\  sJ ‚t        d«      }	 t        | d«      \  }}||   |z   }|s|S |dz
  } Œ!)Nr   rZ   r   é   )rŠ   Údivmod)ÚcolxÚ_A2Zr‹   ÚquotÚrems        rU   Úcolnamer  X  sO   € Ø�1Š9Ðˆ9Ü˜2Ó€DØ
Ü˜4 Ó$‰	ˆˆcØ�C‰y˜4ÑˆÙØˆKØ�a‰xˆð r[   c                 ó¦   — |rdd| dk     t        | «      fz  }n	d| dz   fz  }|rdd|dk     t        |«      fz  }||z   S dt        |«      z   }||z   S )Nz(*%s%d)z+-r   z$%dr   ú$)Úabsr  )Úrowxr  r  r  ÚrowpartÚcolparts         rU   Údisplay_cell_addressr  b  sv   € ÙØ˜t D¨1¡H™~¬s°4«yÐ9Ñ9‰à˜4 ™6˜)Ñ#ˆÙØ˜t D¨1¡H™~¬s°4«yÐ9Ñ9ˆð �WÑÐð œ ›Ñ%ˆØ�WÑÐr[   c                 ó  — d}t        | «      }| d   }t        |«      }d}g }|j                  }i }	t        }
t        }t        }d}t        |«      D �]¤  } |
d|||dz    «      d   }|dz  } |||   «      }|dz  }d}d}|dz  r |
d|||dz    «      d   }|dz  }|dz  r |
d|||dz    «      d   }|dz  }t        d	«      }d}	 ||z
  }|dz  r3 |||z
  dz	  |«      }|||d|z  z    }	 |t        |d
«      z  }|d|z  z  }n( |||z
  |«      }||||z    }|t        ||«      z  }||z  }||z  }||k(  rn#|dz  }| |   }t        |«      } ||d   «      }d}Œ“|r_g }t        |«      D ]A  }||k(  rd}|dz  }| |   }t        |«      }|j                   |
d|||dz    «      «       |dz  }ŒC ||	t        |«      <   ||z  }||k\  r*||z
  }|dz  }||k  r| |   }t        |«      }n
||dz
  k(  sJ ‚ ||«       �Œ§ ||	fS #  ‚ xY w)zReturn list of stringsr   rÞ   Úlatin_1r5  rÜ   r   r
  r¶  rZ   r9  r	  )rL   r  r   ru   r  r’   rŠ   r?  )ÚdatatabÚnstringsÚdatainxÚndatasr  Údatalenr  ÚstringsÚ	strappendÚrichtext_runsÚlocal_unpackÚ	local_minÚlocal_BYTES_ORDr  Ú	_unused_iÚncharsÚoptionsÚrtcountÚphoszÚaccstrgÚcharsgotÚ	charsneedÚ
charsavailÚrawstrgÚrunsÚrunindexs                             rU   r¾  r¾  m  sç  € à€GÜ�‹\€FØ�1‰:€DÜ�$‹i€GØ
€CØ€GØ—‘€IØ€MÜ€LÜ€IÜ€OØ€GÜ˜HÓ%ó Fˆ	Ù˜d D¨¨S°©U OÓ4°QÑ7ˆØˆq‰ˆÙ! $ s¡)Ó,ˆØˆq‰ˆØˆØˆØ�TŠ>Ù" 4¨¨c°#°a±%¨Ó9¸!Ñ<ˆGØ�1‰HˆCØ�TŠ>Ù   t¨C°°A± Ó7¸Ñ:ˆEØ�1‰HˆCÜ! "Ó%ˆØˆØØ Ñ)ˆIØ˜Š~á&¨°#©¸!Ñ';¸YÓG�
Ø˜s 3 q¨¡|Ñ#3Ð4�ðØœw w°Ó<Ñ<�Gð �q˜‘|Ñ#‘ñ ' w°¡}°iÓ@�
Ø˜s 3 z¡>Ð2�àœ7 7¨GÓ4Ñ4�Ø�zÑ!�Ø˜
Ñ"ˆHØ˜6Ò!ØØ�q‰LˆGØ˜7Ñ#ˆDÜ˜$“iˆGÙ% d¨1¡gÓ.ˆGØˆCð? ñB ØˆDÜ" 7›Oò �Ø˜'’>Ø�CØ˜q‘L�GØ" 7Ñ+�DÜ! $›i�GØ—‘™L¨°°S¸¸Q¹°Ó@ÔAØ�q‘‘ðð +/ˆMœ#˜g›,Ñ'àˆu‰ˆØ�'Š>à˜‘-ˆCØ�q‰LˆGØ˜ÒØ˜wÑ'�Ü˜d›)‘à  H¨q¡LÒ0Ð0Ð0Ù�'ÖðMFðN �MÐ!Ð!øð_ð ús   Ã)G;Ç;G>)ÚABCDEFGHIJKLMNOPQRSTUVWXYZ)+Ú
__future__r   r®  rZ   r   r   r   ÚbiffhÚformulaÚtimemachineÚtimer	   ÚImportErrorr
   r   Ú
empty_cellrï   rå   r   r™   ÚSUPBOOK_UNKr«  r­  rQ  r¬  rC   Ú_code_from_builtin_namer  Úcode_from_builtin_nameÚitemsÚ_binÚ_bicrŠ   rþ  rÿ  rV   Ú
BaseObjectrX   r=   r  r  r  r¾  rŽ   r[   rU   ú<module>r@     s`  ðõ
 &ã ç (Ñ (Ü Ü Ü ð+Ý!õ
 à×Ñ€
à	€ã à	€áQVÐWXÓQYÑ N€ÐÐ/°Àà5Ð ð ØØØØØØØØØØØØØñÐ ð  Ð ØÐ Ø)×/Ñ/Ó1ò (�J€Dˆ$Ù˜4Ó €DÙ˜4Ó €DØ#'Ð˜4Ñ Ø#'Ð˜4Ò ð	(ð
 	ˆ$Ð'à#Ø!Ÿj™j°AÀØ$(Ø(,Ø&+°uÈ%Ø16óAôHL`ˆ:ô L`ô^t
ˆ:ô t
òp!*ó$ò	óU"øð{* ò +ç*ð+ús   ¥C ÃC)Ã(C)