
    	iOv                     ,   d dl Z d dlZd dlZd dlmZmZ d dlmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddl m!Z! ddl"m#Z# ddl$m%Z% ddl&m'Z' ddl(m)Z) ddl*m+Z+  G d d          Z,dS )    N)BytesIOStringIO)copy   )App)Comments)ContentTypes)Core)Custom)EmptyChartSeries)FeaturePropertyBag)Metadata)Relationships)	RichValue)RichValueRel)RichValueStructure)RichValueTypes)SharedStrings)Styles)Table)Theme)Vmlc                   X    e Zd ZdZd, fdZd,dZd,dZd,dZd Zd	 Z	d,d
Z
d,dZd,dZd,dZd,dZd,dZd,dZd,dZd,dZd,dZd,dZd,dZd,dZd,dZd,dZd,dZd,dZd,dZd,dZd,dZd,dZd,dZd,d Z d,d!Z!d,d"Z"d,d#Z#d,d$Z$d,d%Z%d,d&Z&d,d'Z'd,d(Z(d,d)Z)d,d*Z*d,d+Z+ xZ,S )-Packagera  
    A class for writing the Excel XLSX Packager file.

    This module is used in conjunction with XlsxWriter to create an
    Excel XLSX container file.

    From Wikipedia: The Open Packaging Conventions (OPC) is a
    container-file technology initially created by Microsoft to store
    a combination of XML and non-XML files that together form a single
    entity such as an Open XML Paper Specification (OpenXPS)
    document. http://en.wikipedia.org/wiki/Open_Packaging_Conventions.

    At its simplest an Excel XLSX file contains the following elements::

         ____ [Content_Types].xml
        |
        |____ docProps
        | |____ app.xml
        | |____ core.xml
        |
        |____ xl
        | |____ workbook.xml
        | |____ worksheets
        | | |____ sheet1.xml
        | |
        | |____ styles.xml
        | |
        | |____ theme
        | | |____ theme1.xml
        | |
        | |_____rels
        |   |____ workbook.xml.rels
        |
        |_____rels
          |____ .rels

    The Packager class coordinates the classes that represent the
    elements of the package and writes them into the XLSX file.

    returnNc                     t                                                       d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _	        d| _
        d| _        g | _        g | _        dS )z
        Constructor.

         FNr   )super__init__tmpdir	in_memoryworkbookworksheet_countchartsheet_countchart_countdrawing_counttable_countnum_vml_filesnum_comment_filesnamed_ranges	filenames)self	__class__s    K/srv/django_bis/venv311/lib/python3.11/site-packages/xlsxwriter/packager.pyr   zPackager.__init__V   s{     	  !!"    c                     || _         d S N)r    )r,   r    s     r.   _set_tmpdirzPackager._set_tmpdirq   s    r/   c                     || _         d S r1   )r!   )r,   r!   s     r.   _set_in_memoryzPackager._set_in_memoryu   s    "r/   c                 H   || _         t          |j                  | _        t          |j                  | _        |j        | _        |j        | _        |j        | _        | j         	                                D ]*}|j
        r| xj        dz  c_        | xj        dz  c_        +d S Nr   )r"   lenchartsr%   drawingsr&   r(   r)   r*   
worksheetsis_chartsheetr$   r#   )r,   r"   	worksheets      r.   _add_workbookzPackager._add_workbooky   s     x// !233%3!)!;$11133 	* 	*I& *%%*%%%$$)$$$		* 	*r/   c                 p   |                                   |                                  |                                  |                                  |                                  |                                  |                                  |                                  |                                  | 	                                 | 
                                 |                                  |                                  |                                  |                                  |                                  |                                  |                                  |                                  |                                  |                                  |                                  |                                  |                                  |                                  |                                  |                                  |                                  | j        S r1   )_write_content_types_file_write_root_rels_file_write_workbook_rels_file_write_worksheet_files_write_chartsheet_files_write_workbook_file_write_chart_files_write_drawing_files_write_vml_files_write_comment_files_write_table_files_write_shared_strings_file_write_styles_file_write_custom_file_write_theme_file_write_worksheet_rels_files_write_chartsheet_rels_files_write_drawing_rels_files_write_rich_value_rels_files_add_image_files_add_vba_project_add_vba_project_signature_write_vba_project_rels_file_write_core_file_write_app_file_write_metadata_file_write_feature_bag_property_write_rich_value_filesr+   r,   s    r.   _create_packagezPackager._create_package   s   &&(((""$$$&&(((##%%%$$&&&!!###!!!!!###!!###!!!'')))!!!!!!   ((***))+++&&((())+++'')))))+++!!###((***$$&&&~r/   c                     | j         rt                      }n1t          j        | j                  \  }}t          j        |           | j                            ||df           |S )N)dirF)	r!   r   tempfilemkstempr    oscloser+   append)r,   xml_filenameos_filenamefds       r.   	_filenamezPackager._filename   sc     > 	"**KK ( 0T[ A A ARHRLLL{L%@AAAr/   c                     | j         }|                    |                     d                     |                                 d S )Nxl/workbook.xml)r"   _set_xml_writerrg   _assemble_xml_file)r,   r"   s     r.   rD   zPackager._write_workbook_file   sB    =  0A!B!BCCC##%%%%%r/   c           	      X   d}| j                                         D ]}|j        r
|j        r(|                                 |                                 |                    |                     dt          |          z   dz                        |	                                 |dz  }d S )Nr   zxl/worksheets/sheet.xml)
r"   r:   r;   constant_memory_opt_reopen_write_single_rowrj   rg   strrk   r,   indexr<   s      r.   rB   zPackager._write_worksheet_files   s    1133 	 	I& ( .%%'''++---%%4s5zzAFJKK   ((***QJEE	 	r/   c           	          d}| j                                         D ]^}|j        s
|                    |                     dt          |          z   dz                        |                                 |dz  }_d S )Nr   zxl/chartsheets/sheetrm   )r"   r:   r;   rj   rg   rq   rk   rr   s      r.   rC   z Packager._write_chartsheet_files   s    1133 	 	I* %%5E

BVKLL   ((***QJEE	 	r/   c           	          | j         j        sd S d}| j         j        D ]p}|j        st          d| d          |                    |                     dt          |          z   dz                        |                                 |dz  }qd S )Nr   Chartz? must contain at least one data series. See chart.add_series().zxl/charts/chartrm   )r"   r8   seriesr   rj   rg   rq   rk   )r,   rs   charts      r.   rE   zPackager._write_chart_files   s    }# 	F]) 	 	E< &<E < < <  
 !!03u::=FGG   $$&&&QJEE	 	r/   c           	          | j         sd S d}| j        j        D ]V}|                    |                     dt          |          z   dz                        |                                 |dz  }Wd S )Nr   zxl/drawings/drawingrm   )r&   r"   r9   rj   rg   rq   rk   )r,   rs   drawings      r.   rF   zPackager._write_drawing_files   s    ! 	F}- 	 	G##4s5zzAFJKK   &&(((QJEE	 	r/   c           	         d}| j                                         D ])}|j        s|j        s|j        rzt	                      }|                    |                     dt          |          z   dz                        |                    |j	        |j
        |j        |j                   |dz  }|j        rt	                      }|                    |                     dt          |          z   dz                        |                    |j        |j        dz  d d |j                   |                     ||           |dz  }+d S )Nr   zxl/drawings/vmlDrawingz.vmli   )r"   r:   has_vmlhas_header_vmlr   rj   rg   rq   rk   vml_data_idvml_shape_idcomments_listbuttons_listvml_header_idheader_images_list_write_vml_drawing_rels_file)r,   rs   r<   vmls       r.   rG   zPackager._write_vml_files   st   1133 	 	I$ Y-E   ee##NN#;c%jj#H6#QRR   &&)*+*	   
' ee##NN#;c%jj#H6#QRR   &&++d20   11)UCCC
?	 	r/   c           	      "   d}| j                                         D ]r}|j        s
t                      }|                    |                     dt          |          z   dz                        |                    |j                   |dz  }sd S )Nr   zxl/commentsrm   )	r"   r:   has_commentsr   rj   rg   rq   rk   r   )r,   rs   r<   comments       r.   rH   zPackager._write_comment_files   s    1133 	 	I) jjG##DNN=3u::3MPV3V$W$WXXX&&y'>???QJEE	 	r/   c                     t                      }| j        j        |_        | j        j        j        sd S |                    |                     d                     |                                 d S )Nzxl/sharedStrings.xml)r   r"   	str_tablestring_tablecountrj   rg   rk   )r,   ssts     r.   rJ   z#Packager._write_shared_strings_file,  sf    oo=2}&, 	FDNN+ABBCCC     r/   c                    | j         j        }t                      }d}| j                                         D ]4}|j        r
|j        dk    r|                    |j                   |dz  }5|                    d|g           | j                                         D ]$}|j        s
|                    |j                   %|                    d| j	        g           | j
        r)|                    dt          | j
                  g           | j
        D ]}|                    |           |                    |           | j         j        |_        |                    |                     d                     |                                 d S )Nr      r   
WorksheetsChartszNamed RangesdocProps/app.xml)r"   doc_propertiesr   r:   r;   hidden_add_part_namename_add_heading_pairr$   r*   r7   _set_properties	read_onlydoc_securityrj   rg   rk   )r,   
propertiesappr#   r<   named_ranges         r.   rW   zPackager._write_app_file7  s   ]1
ee 1133 	% 	%I&  1$$""9>2221$ 	|_=>>> 1133 	/ 	/I* y~.... 	x)>?@@@  	L!!>3t7H3I3I"JKKK  , 	, 	,K{++++J'''=2DNN+=>>???     r/   c                     | j         j        }t                      }|                    |           |                    |                     d                     |                                 d S )NdocProps/core.xml)r"   r   r
   r   rj   rg   rk   )r,   r   cores      r.   rV   zPackager._write_core_filea  sb    ]1
vvZ(((T^^,?@@AAA!!!!!r/   c                    | j         j        sd S t                      }| j         j        |_        t	          | j         j        j                  |_        |                    | 	                    d                     |
                                 d S )Nzxl/metadata.xml)r"   has_metadatar   has_dynamic_functionsr7   embedded_imagesimagesnum_embedded_imagesrj   rg   rk   )r,   metadatas     r.   rX   zPackager._write_metadata_filej  s{    }) 	F::)-)L&'*4=+H+O'P'P$  0A!B!BCCC##%%%%%r/   c                     | j                                         }|sd S t                      }||_        |                    |                     d                     |                                 d S )Nz,xl/featurePropertyBag/featurePropertyBag.xml)r"   _has_feature_property_bagsr   feature_property_bagsrj   rg   rk   )r,   r   property_bags      r.   rY   z$Packager._write_feature_bag_propertyv  sx     $ H H J J$ 	F)++-B*$$NNIJJ	
 	
 	
 	'')))))r/   c                     | j         j                                        sd S |                                  |                                  |                                  |                                  d S r1   )r"   r   
has_images_write_rich_value_write_rich_value_types_write_rich_value_structure_write_rich_value_relr[   s    r.   rZ   z Packager._write_rich_value_files  sn    },7799 	F   $$&&&((***""$$$$$r/   c                     |                      d          }t                      }| j        j        j        |_        |                    |           |                                 d S )Nzxl/richData/rdrichvalue.xml)rg   r   r"   r   r   rj   rk   r,   filenamexml_files      r.   r   zPackager._write_rich_value  sY    >>"?@@;;#'=#@#G   ***##%%%%%r/   c                     |                      d          }t                      }|                    |           |                                 d S )Nz xl/richData/rdRichValueTypes.xml)rg   r   rj   rk   r   s      r.   r   z Packager._write_rich_value_types  sK    >>"DEE!##  ***##%%%%%r/   c                     |                      d          }t                      }| j        j        |_        |                    |           |                                 d S )Nz$xl/richData/rdrichvaluestructure.xml)rg   r   r"   has_embedded_descriptionsrj   rk   r   s      r.   r   z$Packager._write_rich_value_structure  sX    >>"HII%''-1]-T*  ***##%%%%%r/   c                     |                      d          }t                      }t          | j        j        j                  |_        |                    |           |                                 d S )Nzxl/richData/richValueRel.xml)	rg   r   r7   r"   r   r   r   rj   rk   r   s      r.   r   zPackager._write_rich_value_rel  sa    >>"@AA>>'*4=+H+O'P'P$  ***##%%%%%r/   c                     | j         j        }t                      }|sd S |                    |           |                    |                     d                     |                                 d S )NdocProps/custom.xml)r"   custom_propertiesr   r   rj   rg   rk   )r,   r   customs      r.   rL   zPackager._write_custom_file  so    ]4
 	Fz***t~~.CDDEEE!!#####r/   c                 6   t                      }|                    | j        j                   |                                  d}d}| j                                        D ]^}|j        r+|                    dt          |          z              |dz  }4|	                    dt          |          z              |dz  }_t          d| j        dz             D ]'}|                    dt          |          z              (t          d| j        dz             D ]'}|                    dt          |          z              (| j        r|                                 t          d| j        dz             D ]'}|                    dt          |          z              (t          d| j        dz             D ]'}|                    dt          |          z              (| j        j        j        r|                                 | j        j        r4|                                 | j        j        r|                                 | j        j        r|                                 | j        j        r|                                 | j                                         r|!                                 | j        j"        #                                r|$                                 |%                    | &                    d                     |'                                 d S )Nr   sheetrx   rz   tablecommentsz[Content_Types].xml)(r	   _add_image_typesr"   image_types_get_table_countr:   r;   _add_chartsheet_namerq   _add_worksheet_nameranger%   _add_chart_namer&   _add_drawing_namer(   _add_vml_namer'   _add_table_namer)   _add_comment_namer   r   _add_shared_stringsvba_projectrS   vba_project_signaturerT   r   _add_custom_propertiesr   _add_metadatar   _add_feature_bag_propertyr   r   _add_rich_valuerj   rg   rk   )r,   contentworksheet_indexchartsheet_indexr<   is         r.   r?   z"Packager._write_content_types_file  s%   ..  !:;;;1133 	% 	%I& %,,Ws;K7L7L-LMMM A%  ++Gc/6J6J,JKKK1$q$*Q.// 	6 	6A##Gc!ff$45555q$,q011 	: 	:A%%i#a&&&89999 	$!!###q$*Q.// 	6 	6A##Gc!ff$45555q$01455 	; 	;A%%j3q66&9:::: ="( 	*''))) =$ 	5$$&&&}2 522444 =* 	-**,,, =% 	$!!### =3355 	0--/// =(3355 	&##%%%/D E EFFF""$$$$$r/   c                    | j         j        }| j         j        }| j         j        }| j         j        }| j         j        }| j         j        }| j         j        }| j         j        }| j         j	        }	t                      }
|
                    |||||||||	g	           |
                    |                     d                     |
                                 d S )Nzxl/styles.xml)r"   
xf_formatspalette
font_countnum_formatsborder_count
fill_countcustom_colorsdxf_formatsr   r   _set_style_propertiesrj   rg   rk   )r,   r   r   r   r   r   r   r   r   r   styless              r.   rK   zPackager._write_styles_file  s    ]-
-']-
m/}1]-
3m/}1$$
	
 	
 	
 	t~~o>>???!!#####r/   c                     t                      }|                    |                     d                     |                                 d S )Nzxl/theme/theme1.xml)r   rj   rg   rk   )r,   themes     r.   rM   zPackager._write_theme_file  sD    dnn-BCCDDD  """""r/   c           
      N   d}| j                                         D ]}|j        }|s|D ]y}t                      }|                    |                     dt          |          z   dz                        |                    |           |                                 |dz  }zd S )Nr   zxl/tables/tablerm   )	r"   r:   tablesr   rj   rg   rq   r   rk   )r,   rs   r<   table_propsr   s        r.   rI   zPackager._write_table_files  s    1133 	 	I#*K *  %%NN#4s5zz#AF#JKK   %%k222((***
	 	r/   c                 r    | j                                         D ]}|j        D ]}| xj        dz  c_        d S r6   )r"   r:   r   r'   )r,   r<   _s      r.   r   zPackager._get_table_count-  sW    1133 	& 	&I% & &  A%   &	& 	&r/   c                 b   t                      }|                    dd           |                    dd           |                    dd           | j        j        r|                    dd           |                    |                     d	                     |                                 d S )
Nz/officeDocumentri   z/metadata/core-propertiesr   z/extended-propertiesr   z/custom-propertiesr   z_rels/.rels)r   _add_document_relationship_add_package_relationshipr"   r   rj   rg   rk   )r,   relss     r.   r@   zPackager._write_root_rels_file3  s    ''(9;LMMM&&'BDWXXX''(>@RSSS=* 	Y++,@BWXXXT^^M::;;;!!!!!r/   c                    t                      }d}d}| j                                        D ]f}|j        r/|                    ddt          |          z   dz              |dz  }8|                    ddt          |          z   dz              |dz  }g|                    dd           |                    d	d
           | j        j        j        r|                    dd           | j        j        r|	                    dd           | j        j
        r|                    dd           | j        j                                        r|                                 | j                                        r|                                 |                    |                     d                     |                                 d S )Nr   z/chartsheetzchartsheets/sheetrm   z
/worksheetzworksheets/sheetz/themeztheme/theme1.xmlz/stylesz
styles.xmlz/sharedStringszsharedStrings.xmlz/vbaProjectzvbaProject.binz/sheetMetadatazmetadata.xmlzxl/_rels/workbook.xml.rels)r   r"   r:   r;   r   rq   r   r   r   _add_ms_package_relationshipr   r   r   _add_rich_value_relationshipr   _add_feature_bag_relationshiprj   rg   rk   )r,   r   r   r   r<   s        r.   rA   z"Packager._write_workbook_rels_fileD  s   1133 
	% 
	%I& 	%//!#6=M9N9N#NQW#W   !A%  // "4s?7K7K"Kf"T    1$''2DEEE''	<@@@ ="( 	S++,<>QRRR =$ 	O--m=MNNN =% 	N++,<nMMM =(3355 	0--/// =3355 	1..000T^^,HIIJJJ!!!!!r/   c           	         d}| j                                         D ]}|j        r
|dz  }|j        |j        z   |j        z   |j        z   |j        z   |j        z   }|sAt                      }|D ]} |j
        |  |                    |                     dt          |          z   dz                        |                                 d S )Nr   r   zxl/worksheets/_rels/sheet	.xml.rels)r"   r:   r;   external_hyper_linksexternal_drawing_linksexternal_vml_linksexternal_background_linksexternal_table_linksexternal_comment_linksr   r   rj   rg   rq   rk   r,   rs   r<   external_linksr   	link_datas         r.   rN   z$Packager._write_worksheet_rels_filesq  s   1133 	& 	&I& QJE .23./ 56 0	1
 23  "  !??D+ < <	//;;;   :SZZG+UVV   ##%%%%9	& 	&r/   c           	      X   d}| j                                         D ]}|j        s
|dz  }|j        |j        z   }|s!t                      }|D ]} |j        |  |                    |                     dt          |          z   dz                        |
                                 d S )Nr   r   zxl/chartsheets/_rels/sheetr   )r"   r:   r;   r   r   r   r   rj   rg   rq   rk   r   s         r.   rO   z%Packager._write_chartsheet_rels_files  s    1133 	& 	&I* QJE 093OO  "  !??D+ < <	//;;;   ;c%jjH;VWW   ##%%%%/	& 	&r/   c           	      L   d}| j                                         D ]}|j        r|dz  }|j        st	                      }|j        D ]} |j        |  |                    |                     dt          |          z   dz                        |	                                 d S )Nr   r   zxl/drawings/_rels/drawingr   )
r"   r:   rz   drawing_linksr   r   rj   rg   rq   rk   )r,   rs   r<   r   drawing_datas        r.   rP   z"Packager._write_drawing_rels_files  s    1133 	& 	&I  
*  !??D ) 7 ? ?//>>>   :SZZG+UVV   ##%%%%#	& 	&r/   c                     t                      }|j        D ]} |j        |  |                    |                     dt          |          z   dz                        |                                 d S )Nzxl/drawings/_rels/vmlDrawingz	.vml.rels)r   vml_drawing_linksr   rj   rg   rq   rk   )r,   r<   rs   r   r   s        r.   r   z%Packager._write_vml_drawing_rels_file  s    
 %7 	; 	;L+D+\::: 	NN9CJJFTUU	
 	
 	
 	!!!!!r/   c                     | j         j        }|sd S t                      }|                    dd           |                    |                     d                     |                                 d S )Nz/vbaProjectSignaturezvbaProjectSignature.binzxl/_rels/vbaProject.bin.rels)r"   r   r   r   rj   rg   rk   )r,   r   r   s      r.   rU   z%Packager._write_vba_project_rels_file  s~     $ C$ 	F ))"$=	
 	
 	
 	T^^,JKKLLL!!!!!r/   c                 ~   | j         j                                        sd S t                      }d}| j         j        j        D ]>}|j                                        }d| d| }|                    d|           |dz  }?|                    | 	                    d                     |
                                 d S )Nr   z../media/image.z/imagez(/xl/richData/_rels/richValueRel.xml.rels)r"   r   r   r   r   
image_typelowerr   rj   rg   rk   )r,   r   rs   imageimage_extension
image_files         r.   rQ   z%Packager._write_rich_value_rels_files  s    },7799 	F ]29 	 	E#.4466OC%CC/CCJ++HjAAAQJEE 	T^^,VWWXXX!!!!!r/   c                 .   | j         }d}|j        j        |j        z   }|D ]s}dt          |          z   dz   |j        z   }| j        s|                     |          }|j        rRt          |d          }|	                    |j        
                                           |                                 nt          |j        |           	 t          j        |t          j        |          j        t           j        z             n# t&          $ r Y n}w xY w|j        r|j        }nMt          |j        d          }|                                }	t+          |	          }|                                 | j                            ||df           |dz  }ud S )Nr   zxl/media/imager  wbmoderbT)r"   r   r   rq   _image_extensionr!   rg   
image_dataopenwritegetvaluerb   r   r   ra   chmodstatst_modeS_IWRITEOSErrorreadr   r+   rc   )
r,   r"   rs   r   r  xml_image_namere   os_filer
  r  s
             r.   rR   zPackager._add_image_files  s    =)08?B %	 %	E 3u::-3e6LL  > K"nn^<<# ";T:::GMM%"2";";"="=>>>MMOOOO555')=)=)E)U    #    # '"'"2KK!%en4!@!@!@J!+!2!2J")*"5"5K$$&&&%%{ND&IJJJQJEEK%	 %	s   9D
DDc                    | j         j        }| j         j        }|sd S d}| j        sw|                     |          }|rNt          |d          }|                    |                                           |                                 d S t          ||           d S |r|}nHt          |d          }|
                                }t          |          }|                                 | j                            ||df           d S )Nzxl/vbaProjectSignature.binr  r  r  T)r"   r   vba_project_signature_is_streamr!   rg   r  r  r  rb   r   r  r   r+   rc   )r,   r   r  xml_vba_signature_namere   r  vba_filevba_datas           r.   rT   z#Packager._add_vba_project_signature(  s    !% C*.-*W'$ 	F!=~ 	O..)?@@K. 9{6663<<>>???*K88888 / !3 5DAAA#==??%h//   N!!;0F"MNNNNNr/   c                    | j         j        }| j         j        }|sd S d}| j        sw|                     |          }|rNt          |d          }|                    |                                           |                                 d S t          ||           d S |r|}nHt          |d          }|
                                }t          |          }|                                 | j                            ||df           d S )Nzxl/vbaProject.binr  r  r  T)r"   r   vba_project_is_streamr!   rg   r  r  r  rb   r   r  r   r+   rc   )r,   r   r#  xml_vba_namere   r  r   r!  s           r.   rS   zPackager._add_vba_projectL  s    m/ $ C 	F*~ 	E..66K$ /{666k2244555[+..... % !)$777#==??%h//   N!!;d"CDDDDDr/   )r   N)-__name__
__module____qualname____doc__r   r2   r4   r=   r\   rg   rD   rB   rC   rE   rF   rG   rH   rJ   rW   rV   rX   rY   rZ   r   r   r   r   rL   r?   rK   rM   rI   r   r@   rA   rN   rO   rP   r   rU   rQ   rR   rT   rS   __classcell__)r-   s   @r.   r   r   &   s^       ' '^     6   # # # #* * * *  B  & & & &   "      (   " " " "H
 
 
 
	! 	! 	! 	!(! (! (! (!T" " " "
& 
& 
& 
&* * * *% % % %& & & && & & && & & && & & &
$ 
$ 
$ 
$;% ;% ;% ;%z$ $ $ $<# # # #   $& & & &" " " ""+" +" +" +"Z& & & &B& & & &8& & & &," " " " " " " """ " " "(- - - -^"O "O "O "OH"E "E "E "E "E "E "E "Er/   r   )-ra   r  r_   ior   r   shutilr   r   r   r   r   contenttypesr	   r   r
   r   r   
exceptionsr   feature_property_bagr   r   r   relationshipsr   
rich_valuer   rich_value_relr   rich_value_structurer   rich_value_typesr   sharedstringsr   r   r   r   r   r   r   r   r   r    r/   r.   <module>r6     s   
			                                     & & & & & &             ( ( ( ( ( ( 4 4 4 4 4 4       ( ( ( ( ( ( ! ! ! ! ! ! ( ( ( ( ( ( 4 4 4 4 4 4 , , , , , , ( ( ( ( ( (                        HE HE HE HE HE HE HE HE HE HEr/   