OASIS Open Document Format for Office Applications (OpenDocument) Version 1.2 - Part 3: Packages @page { } table { border-collapse:collapse; border-spacing:0; empty-cells:show } td, th { vertical-align:top; font-size:12pt;} h1, h2, h3, h4, h5, h6 { clear:both } ol, ul { margin:0; padding:0;} li { list-style: none; margin:0; padding:0;} li span. { clear: both; line-height:0; width:0; height:0; margin:0; padding:0; } span.footnodeNumber { padding-right:1em; } span.annotation_style_by_filter { font-size:95%; font-family:Arial; background-color:#fff000; margin:0; border:0; padding:0; } * { margin:0;} .fr1 { font-size:12pt; text-align:right; vertical-align:top; writing-mode:lr-tb; margin-left:0.1965in; margin-right:0in; } .fr2 { font-size:12pt; text-align:left; vertical-align:top; writing-mode:lr-tb; } .fr3 { font-size:12pt; vertical-align:middle; writing-mode:lr-tb; margin-left:0in; margin-right:0in; margin-top:0in; margin-bottom:0in; padding:0in; border-style:none; } .Appendix_20_Heading_borderStart { border-style:none; border-left-style:none; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; color:#333399; font-size:18pt; font-weight:bold; margin-left:0in; margin-right:0in; margin-top:0.1945in; padding:0in; padding-left:0in; padding-right:0in; padding-top:0.0835in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.1945in; border-bottom-style:none; } .Appendix_20_Heading { border-style:none; border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; margin-left:0in; margin-right:0in; padding:0in; padding-left:0in; padding-right:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.1945in; padding-top:0.1945in; border-top-style:none; border-bottom-style:none; } .Appendix_20_Heading_borderEnd { border-style:none; border-bottom-style:none; border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; margin-bottom:0.1945in; margin-left:0in; margin-right:0in; padding:0in; padding-bottom:0in; padding-left:0in; padding-right:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-top:0.1945in; border-top-style:none;} .Appendix_20_Heading_20_1_borderStart { border-style:none; border-left-style:none; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; color:#333399; font-size:18pt; font-weight:bold; margin-left:0in; margin-right:0in; margin-top:0.1945in; padding:0in; padding-left:0in; padding-right:0in; padding-top:0.0835in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.1945in; border-bottom-style:none; } .Appendix_20_Heading_20_1 { border-style:none; border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; margin-left:0in; margin-right:0in; padding:0in; padding-left:0in; padding-right:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.1945in; padding-top:0.1945in; border-top-style:none; border-bottom-style:none; } .Appendix_20_Heading_20_1_borderEnd { border-style:none; border-bottom-style:none; border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; margin-bottom:0.1945in; margin-left:0in; margin-right:0in; padding:0in; padding-bottom:0in; padding-left:0in; padding-right:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-top:0.1945in; border-top-style:none;} .Appendix_20_Heading_20_2_borderStart { border-style:none; color:#000099; font-size:14pt; font-weight:bold; margin-left:0in; margin-right:0in; margin-top:0.1665in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.0835in; border-bottom-style:none; } .Appendix_20_Heading_20_2 { border-style:none; color:#000099; font-size:14pt; font-weight:bold; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.0835in; padding-top:0.1665in; border-top-style:none; border-bottom-style:none; } .Appendix_20_Heading_20_2_borderEnd { border-style:none; color:#000099; font-size:14pt; font-weight:bold; margin-bottom:0.0835in; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-top:0.1665in; border-top-style:none;} .Attribute_20_List_borderStart { font-size:10pt; margin-top:0.0555in; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-bottom:0.0555in; border-bottom-style:none; } .Attribute_20_List { font-size:10pt; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-bottom:0.0555in; padding-top:0.0555in; border-top-style:none; border-bottom-style:none; } .Attribute_20_List_borderEnd { font-size:10pt; margin-bottom:0.0555in; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-top:0.0555in; border-top-style:none;} .Attribute_20_List2_borderStart { background-color:#e6e6e6; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; margin-top:0.0555in; padding:0.0201in; font-family:Arial; writing-mode:page; padding-bottom:0.0555in; border-bottom-style:none; } .Attribute_20_List2 { background-color:#e6e6e6; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; padding:0.0201in; font-family:Arial; writing-mode:page; padding-bottom:0.0555in; padding-top:0.0555in; border-top-style:none; border-bottom-style:none; } .Attribute_20_List2_borderEnd { background-color:#e6e6e6; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; margin-bottom:0.0555in; padding:0.0201in; font-family:Arial; writing-mode:page; padding-top:0.0555in; border-top-style:none;} .Attribute_20_Value_20_List_borderStart { font-size:10pt; margin-top:0.0555in; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-bottom:0.0555in; border-bottom-style:none; } .Attribute_20_Value_20_List { font-size:10pt; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-bottom:0.0555in; padding-top:0.0555in; border-top-style:none; border-bottom-style:none; } .Attribute_20_Value_20_List_borderEnd { font-size:10pt; margin-bottom:0.0555in; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-top:0.0555in; border-top-style:none;} .Bibliography_20_1 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; margin-left:0in; margin-right:0in; text-indent:0in; } .Child_20_Element_20_List_borderStart { font-size:10pt; margin-top:0.0555in; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-bottom:0.0555in; border-bottom-style:none; } .Child_20_Element_20_List { font-size:10pt; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-bottom:0.0555in; padding-top:0.0555in; border-top-style:none; border-bottom-style:none; } .Child_20_Element_20_List_borderEnd { font-size:10pt; margin-bottom:0.0555in; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-top:0.0555in; border-top-style:none;} .Child_20_Element_20_List2_borderStart { background-color:#e6e6e6; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; margin-top:0.0555in; padding:0.0201in; font-family:Arial; writing-mode:page; padding-bottom:0.0555in; border-bottom-style:none; } .Child_20_Element_20_List2 { background-color:#e6e6e6; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; padding:0.0201in; font-family:Arial; writing-mode:page; padding-bottom:0.0555in; padding-top:0.0555in; border-top-style:none; border-bottom-style:none; } .Child_20_Element_20_List2_borderEnd { background-color:#e6e6e6; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; margin-bottom:0.0555in; padding:0.0201in; font-family:Arial; writing-mode:page; padding-top:0.0555in; border-top-style:none;} .Contents_20_1 { font-size:10pt; margin-bottom:0.0417in; margin-top:0.0417in; font-family:Arial; writing-mode:page; } .Contents_20_10 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; margin-left:1.7689in; margin-right:0in; text-indent:0in; } .Contents_20_2 { font-size:10pt; margin-bottom:0.0417in; margin-top:0.0417in; font-family:Arial; writing-mode:page; margin-left:0.1665in; margin-right:0in; text-indent:0.0008in; } .Contents_20_3 { font-size:10pt; margin-bottom:0.0417in; margin-top:0.0417in; font-family:Arial; writing-mode:page; margin-left:0.3335in; margin-right:0in; text-indent:0.0008in; } .Contents_20_4 { font-size:9pt; margin-bottom:0.0417in; margin-left:0.5in; margin-right:0in; margin-top:0.0417in; text-indent:0.0008in; font-family:Arial; writing-mode:page; } .Contents_20_5 { font-size:9pt; margin-bottom:0.0417in; margin-left:0.6665in; margin-right:0in; margin-top:0.0417in; text-indent:0.0008in; font-family:Arial; writing-mode:page; } .Contents_20_6 { font-size:9pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; margin-left:0.8335in; margin-right:0in; text-indent:0.0008in; } .Contents_20_7 { font-size:10pt; margin-bottom:0.0835in; margin-top:0in; font-family:Arial; writing-mode:page; margin-left:1in; margin-right:0in; text-indent:0.0008in; } .Contents_20_8 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; margin-left:1.3756in; margin-right:0in; text-indent:0in; } .Contents_20_9 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; margin-left:1.572in; margin-right:0in; text-indent:0in; } .Contents_20_Heading_borderStart { border-style:none; color:#000099; font-size:16pt; font-weight:bold; margin-left:0in; margin-right:0in; margin-top:0.1665in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.0835in; border-bottom-style:none; } .Contents_20_Heading { border-style:none; color:#000099; font-size:16pt; font-weight:bold; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.0835in; padding-top:0.1665in; border-top-style:none; border-bottom-style:none; } .Contents_20_Heading_borderEnd { border-style:none; color:#000099; font-size:16pt; font-weight:bold; margin-bottom:0.0835in; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-top:0.1665in; border-top-style:none;} .Contributor { color:#000000; font-size:10pt; font-weight:normal; margin-bottom:0in; margin-left:0.5in; margin-right:0in; margin-top:0in; text-indent:0.0008in; font-family:Arial; writing-mode:page; } .Figure { font-size:10pt; font-style:italic; margin-bottom:0.0835in; margin-top:0.0835in; text-align:center ! important; font-family:Arial; writing-mode:page; } .Heading_20_1_borderStart { border-style:none; color:#000099; font-size:18pt; font-weight:bold; margin-left:0in; margin-right:0in; margin-top:0.3335in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-left:0in; padding-right:0in; padding-top:0.0835in; border-left-style:none; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; padding-bottom:0.0835in; border-bottom-style:none; } .Heading_20_1 { border-style:none; color:#000099; font-size:18pt; font-weight:bold; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-left:0in; padding-right:0in; border-left-style:none; border-right-style:none; padding-bottom:0.0835in; padding-top:0.3335in; border-top-style:none; border-bottom-style:none; } .Heading_20_1_borderEnd { border-style:none; color:#000099; font-size:18pt; font-weight:bold; margin-bottom:0.0835in; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-left:0in; padding-right:0in; padding-bottom:0in; border-left-style:none; border-right-style:none; border-bottom-style:none; padding-top:0.3335in; border-top-style:none;} .Heading_20_2_borderStart { border-style:none; color:#000099; font-size:14pt; font-weight:bold; margin-left:0in; margin-right:0in; margin-top:0.1665in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.0835in; border-bottom-style:none; } .Heading_20_2 { border-style:none; color:#000099; font-size:14pt; font-weight:bold; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.0835in; padding-top:0.1665in; border-top-style:none; border-bottom-style:none; } .Heading_20_2_borderEnd { border-style:none; color:#000099; font-size:14pt; font-weight:bold; margin-bottom:0.0835in; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-top:0.1665in; border-top-style:none;} .Heading_20_3_borderStart { border-style:none; color:#000099; font-size:13pt; font-weight:bold; margin-left:0in; margin-right:0in; margin-top:0.1665in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.0835in; border-bottom-style:none; } .Heading_20_3 { border-style:none; color:#000099; font-size:13pt; font-weight:bold; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.0835in; padding-top:0.1665in; border-top-style:none; border-bottom-style:none; } .Heading_20_3_borderEnd { border-style:none; color:#000099; font-size:13pt; font-weight:bold; margin-bottom:0.0835in; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-top:0.1665in; border-top-style:none;} .Heading_20_4_borderStart { border-style:none; color:#000099; font-size:12pt; font-weight:bold; margin-left:0in; margin-right:0in; margin-top:0.1665in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.0835in; border-bottom-style:none; } .Heading_20_4 { border-style:none; color:#000099; font-size:12pt; font-weight:bold; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.0835in; padding-top:0.1665in; border-top-style:none; border-bottom-style:none; } .Heading_20_4_borderEnd { border-style:none; color:#000099; font-size:12pt; font-weight:bold; margin-bottom:0.0835in; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-top:0.1665in; border-top-style:none;} .Legal_20_notice { color:#000000; font-size:10pt; font-weight:normal; margin-bottom:0.0547in; margin-left:0in; margin-right:0in; margin-top:0.0547in; text-indent:0.0008in; font-family:Arial; writing-mode:page; } .Note { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; } .P1 { font-size:10pt; margin-bottom:0.0598in; margin-top:0in; font-family:Arial; writing-mode:page; } .P10 { font-size:10pt; margin-bottom:0.0417in; margin-top:0.0417in; font-family:Arial; writing-mode:page; } .P11 { font-size:10pt; margin-bottom:0.0417in; margin-left:0.1665in; margin-right:0in; margin-top:0.0417in; text-indent:0.0008in; font-family:Arial; writing-mode:page; } .P12 { color:#000000; font-size:10pt; font-weight:normal; margin-bottom:0.0555in; margin-left:0.5in; margin-right:0in; margin-top:0in; text-indent:0.0008in; font-family:Arial; writing-mode:page; } .P13 { color:#000000; font-size:10pt; font-weight:bold; margin-bottom:0.0555in; margin-left:0.5in; margin-right:0in; margin-top:0in; text-indent:0.0008in; font-family:Arial; writing-mode:page; letter-spacing:normal; font-style:normal; } .P14 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; } .P15 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; } .P16 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; } .P17 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; } .P18 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; } .P19 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; } .P2 { color:#333399; font-size:10pt; font-weight:bold; margin-bottom:0in; margin-top:0.0835in; font-family:Arial; writing-mode:page; } .P20 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; } .P21 { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; } .P22 { font-size:10pt; margin-bottom:0.0598in; margin-top:0in; font-family:Arial; writing-mode:page; } .P23_borderStart { border-style:none; color:#000099; font-size:14pt; font-weight:bold; margin-left:0in; margin-right:0in; margin-top:0.1665in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.0835in; border-bottom-style:none; } .P23 { border-style:none; color:#000099; font-size:14pt; font-weight:bold; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-bottom:0.0835in; padding-top:0.1665in; border-top-style:none; border-bottom-style:none; } .P23_borderEnd { border-style:none; color:#000099; font-size:14pt; font-weight:bold; margin-bottom:0.0835in; margin-left:0in; margin-right:0in; padding:0in; text-indent:0in; font-family:Arial; writing-mode:page; padding-top:0.1665in; border-top-style:none;} .P3 { color:#333399; font-size:12pt; font-weight:bold; margin-bottom:0in; margin-top:0.0835in; font-family:Arial; writing-mode:page; } .P4_borderStart { border-left-style:none; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; color:#333399; font-size:18pt; font-weight:bold; margin-top:0.1665in; padding-left:0in; padding-right:0in; padding-top:0.0138in; font-family:Arial; writing-mode:page; padding-bottom:0.25in; border-bottom-style:none; } .P4 { border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; padding-left:0in; padding-right:0in; font-family:Arial; writing-mode:page; padding-bottom:0.25in; padding-top:0.1665in; border-top-style:none; border-bottom-style:none; } .P4_borderEnd { border-bottom-style:none; border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; margin-bottom:0.25in; padding-bottom:0in; padding-left:0in; padding-right:0in; font-family:Arial; writing-mode:page; padding-top:0.1665in; border-top-style:none;} .P5_borderStart { border-left-style:none; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; color:#333399; font-size:18pt; font-weight:bold; margin-top:0.1665in; padding-left:0in; padding-right:0in; padding-top:0.0138in; font-family:Arial; writing-mode:page; padding-bottom:0.25in; border-bottom-style:none; } .P5 { border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; padding-left:0in; padding-right:0in; font-family:Arial; writing-mode:page; padding-bottom:0.25in; padding-top:0.1665in; border-top-style:none; border-bottom-style:none; } .P5_borderEnd { border-bottom-style:none; border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; margin-bottom:0.25in; padding-bottom:0in; padding-left:0in; padding-right:0in; font-family:Arial; writing-mode:page; padding-top:0.1665in; border-top-style:none;} .P6_borderStart { background-color:#e6e6e6; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; margin-top:0.0555in; padding:0.0201in; font-family:Arial; writing-mode:page; margin-left:0in; margin-right:0in; text-indent:0in; padding-bottom:0.0555in; border-bottom-style:none; } .P6 { background-color:#e6e6e6; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; padding:0.0201in; font-family:Arial; writing-mode:page; margin-left:0in; margin-right:0in; text-indent:0in; padding-bottom:0.0555in; padding-top:0.0555in; border-top-style:none; border-bottom-style:none; } .P6_borderEnd { background-color:#e6e6e6; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; margin-bottom:0.0555in; padding:0.0201in; font-family:Arial; writing-mode:page; margin-left:0in; margin-right:0in; text-indent:0in; padding-top:0.0555in; border-top-style:none;} .P7 { color:#000000; font-size:10pt; font-weight:normal; margin-bottom:0.0555in; margin-left:0.75in; margin-right:0in; margin-top:0in; text-indent:0in; font-family:Arial; writing-mode:page; } .P8 { font-size:10pt; margin-bottom:0.0555in; margin-left:0in; margin-right:0in; margin-top:0.0555in; text-indent:0in; font-family:Arial; writing-mode:page; } .P9 { font-size:10pt; margin-bottom:0.0417in; margin-left:0.3335in; margin-right:0in; margin-top:0.0417in; text-indent:0.0008in; font-family:Arial; writing-mode:page; } .Parent_20_Element_20_List_borderStart { font-size:10pt; margin-top:0.0555in; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-bottom:0.0555in; border-bottom-style:none; } .Parent_20_Element_20_List { font-size:10pt; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-bottom:0.0555in; padding-top:0.0555in; border-top-style:none; border-bottom-style:none; } .Parent_20_Element_20_List_borderEnd { font-size:10pt; margin-bottom:0.0555in; font-family:Arial; writing-mode:page; background-color:#e6e6e6; padding:0.0201in; border-width:0.0133cm; border-style:solid; border-color:#000000; padding-top:0.0555in; border-top-style:none;} .Parent_20_Element_20_List2_borderStart { background-color:#e6e6e6; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; margin-top:0.0555in; padding:0.0201in; font-family:Arial; writing-mode:page; padding-bottom:0.0555in; border-bottom-style:none; } .Parent_20_Element_20_List2 { background-color:#e6e6e6; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; padding:0.0201in; font-family:Arial; writing-mode:page; padding-bottom:0.0555in; padding-top:0.0555in; border-top-style:none; border-bottom-style:none; } .Parent_20_Element_20_List2_borderEnd { background-color:#e6e6e6; border-width:0.0133cm; border-style:solid; border-color:#000000; font-size:10pt; margin-bottom:0.0555in; padding:0.0201in; font-family:Arial; writing-mode:page; padding-top:0.0555in; border-top-style:none;} .Subtitle_borderStart { border-left-style:none; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; color:#333399; font-size:18pt; font-weight:bold; margin-top:0.1665in; padding-left:0in; padding-right:0in; padding-top:0.0138in; font-family:Arial; writing-mode:page; padding-bottom:0.25in; border-bottom-style:none; } .Subtitle { border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; padding-left:0in; padding-right:0in; font-family:Arial; writing-mode:page; padding-bottom:0.25in; padding-top:0.1665in; border-top-style:none; border-bottom-style:none; } .Subtitle_borderEnd { border-bottom-style:none; border-left-style:none; border-right-style:none; color:#333399; font-size:18pt; font-weight:bold; margin-bottom:0.25in; padding-bottom:0in; padding-left:0in; padding-right:0in; font-family:Arial; writing-mode:page; padding-top:0.1665in; border-top-style:none;} .Table { font-size:10pt; font-style:italic; margin-bottom:0.0835in; margin-top:0.0835in; text-align:center ! important; font-family:Arial; writing-mode:page; } .Table_20_Contents { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; } .Table_20_Heading { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; text-align:center ! important; font-style:italic; font-weight:bold; } .Text_20_body { font-size:10pt; margin-bottom:0.0555in; margin-top:0.0555in; font-family:Arial; writing-mode:page; } .Title_borderStart { font-size:24pt; margin-top:0.1665in; font-family:Arial; writing-mode:page; padding-left:0in; padding-right:0in; padding-top:0.0138in; border-left-style:none; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; color:#333399; font-weight:bold; padding-bottom:0.1665in; border-bottom-style:none; } .Title { font-size:24pt; font-family:Arial; writing-mode:page; padding-left:0in; padding-right:0in; border-left-style:none; border-right-style:none; color:#333399; font-weight:bold; padding-bottom:0.1665in; padding-top:0.1665in; border-top-style:none; border-bottom-style:none; } .Title_borderEnd { font-size:24pt; margin-bottom:0.1665in; font-family:Arial; writing-mode:page; padding-left:0in; padding-right:0in; padding-bottom:0in; border-left-style:none; border-right-style:none; border-bottom-style:none; color:#333399; font-weight:bold; padding-top:0.1665in; border-top-style:none;} .Title_20_page_20_info { font-size:10pt; margin-bottom:0in; margin-top:0.0835in; font-family:Arial; writing-mode:page; color:#333399; font-weight:bold; } .Title_20_page_20_info_20_description { color:#000000; font-size:10pt; font-weight:normal; margin-bottom:0.0555in; margin-top:0in; font-family:Arial; writing-mode:page; margin-left:0.5in; margin-right:0in; text-indent:0.0008in; } .NamespaceTable { width:6in; float:none; } .Table1 { width:6in; float:none; } .Table2 { width:6in; float:none; } .NamespaceTable_A1 { background-color:transparent; padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; } .NamespaceTable_A2 { background-color:transparent; padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; } .NamespaceTable_C1 { background-color:transparent; padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; } .NamespaceTable_C2 { background-color:transparent; padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; } .Table1_A1 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; } .Table1_A2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; } .Table1_C1 { padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; } .Table1_C2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; } .Table2_A1 { background-color:transparent; padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; } .Table2_A2 { background-color:transparent; padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; } .Table2_C1 { background-color:transparent; padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; } .Table2_C2 { background-color:transparent; padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; } .NamespaceTable_A { width:0.8632in; } .NamespaceTable_B { width:2.4382in; } .NamespaceTable_C { width:2.6986in; } .Table1_A { width:0.8646in; } .Table1_B { width:2.4368in; } .Table1_C { width:2.6986in; } .Table2_A { width:0.8632in; } .Table2_B { width:2.4382in; } .Table2_C { width:2.6986in; } .Alien_20_Attribute { font-family:Courier New; } .Alien_20_Attribute_20_Value { font-family:Courier New; } .Alien_20_Element { font-family:Courier New; background-color:transparent; } .Attribute { font-family:Courier New; font-size:10pt; background-color:transparent; } .Attribute_20_Value { font-family:Courier New; background-color:transparent; } .Datatype { font-family:Courier New; } .Def { font-style:italic; background-color:transparent; } .Element { font-family:Courier New; background-color:transparent; font-size:NaNpt; } .Emphasis { font-style:italic; background-color:transparent; } .ISO_20_Keyword { background-color:transparent; } .Note_20_Label { background-color:transparent; font-weight:bold; } .OWL_20_Class { font-family:Courier New; } .OWL_20_Property { font-family:Courier New; } .Source_20_Text { font-family:Courier New; } .Strong_20_Emphasis { font-weight:bold; background-color:transparent; } .T1 { background-color:#ffffff; } .T10 { font-family:Arial; background-color:#ffffff; } .T11 { color:#000000; font-family:Arial; font-size:10pt; font-weight:normal; } .T12 { text-decoration:underline; } .T13 { color:#000000; font-family:Arial; letter-spacing:normal; font-style:normal; font-weight:normal; } .T14 { color:#000000; font-family:Arial; letter-spacing:normal; font-style:normal; font-weight:normal; } .T15 { color:#000000; font-family:Arial; letter-spacing:normal; font-style:italic; font-weight:normal; } .T16 { color:#0000ff; font-family:Arial; letter-spacing:normal; font-style:normal; text-decoration:none ! important; font-weight:normal; } .T2 { font-family:Arial; font-size:10pt; } .T3 { font-family:Arial; font-size:10pt; background-color:#ffffff; } .T4 { font-family:Courier New; background-color:transparent; } .T5 { font-family:Arial; font-size:10pt; } .T6 { font-family:Arial; font-size:10pt; } .T8 { background-color:transparent; } .T9 { font-family:Arial; } .Sect1 .Definition .Numbering_20_Symbols .T7 { } Open Document Format for Office Applications (OpenDocument) Version 1.2 Part 3: Packages OASIS Standard 29 September 2011 Specification URIs: This version: http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part3.odt http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part3.pdf http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part3.html Previous version: http://docs.oasis-open.org/office/v1.2/csd06/OpenDocument-v1.2-csd06-part3.odt (Authoritative) http://docs.oasis-open.org/office/v1.2/csd06/OpenDocument-v1.2-csd06-part3.pdf http://docs.oasis-open.org/office/v1.2/csd06/OpenDocument-v1.2-csd06-part3.html Latest version: http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part3.odt (Authoritative) http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part3.pdf http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part3.html Technical Committee: OASIS Open Document Format for Office Applications (OpenDocument) TC Chairs: Rob Weir IBM Michael Brauer Oracle Corporation Editors: Patrick Durusau Dennis Hamilton Michael Brauer Oracle Corporation This document is part of the OASIS Open Document Format for Office Applications (OpenDocument) Version 1.2 The OpenDocument v1.2 specification has these parts: OpenDocument v1.2 part 1: OpenDocument Schema OpenDocument v1.2 part 2: Recalculated Formula (OpenFormula) Format OpenDocument v1.2 part 3: Packages (this part) OpenDocument v1.2 part 3 defines these schemas and ontologies: OpenDocument v1.2 Manifest Schema OpenDocument v1.2 Digital Signature Schema OpenDocument v1.2 Package Metadata Manifest Ontology Declared XML namespaces: urn:oasis:names:tc:opendocument:xmlns:manifest:1.0 http://docs.oasis-open.org/ns/office/1.2/meta/pkg# Abstract: This document is part of the Open Document Format for Office Applications (OpenDocument) Version 1.2 specification. It defines a package format Status: This document was last revised or approved by the OASIS Open Document Format for Office Applications (OpenDocument) TC on the above date. The level of approval is also listed above. Check the "Latest version" location noted above for possible later revisions of this document. Technical Committee members should send comments on this specification to the Technical Committee’s email list. Others should send comments to the Technical Committee by using the “ Send A Comment ” button on the Technical Committee’s web page at http://www.oasis-open.org/committees/office/ . For information on whether any patents have been disclosed that may be essential to implementing this specification, and any offers of patent licensing terms, please refer to the Intellectual Property Rights section of the Technical Committee web page ( http://www.oasis-open.org/committees/office/ipr.php ). Citation format: When referencing this specification the following citation format should be used: OpenDocument-v1.2-part3 Open Document Format for Office Applications ( OpenDocument ) Version 1.2 Part 3 : Packages. 29 September 2011. OASIS Standard. http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part3.html Notices Copyright © OASIS Open 2002–2011. All Rights Reserved. All capitalized terms in the following text have the meanings assigned to them in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The full Policy This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published, and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this section are included on all such copies and derivative works. However, this document itself may not be modified in any way, including by removing the copyright notice or references to OASIS, except as needed for the purpose of developing any document or deliverable produced by an OASIS Technical Committee (in which case the rules applicable to copyrights, as set forth in the OASIS IPR Policy, must be followed) or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. OASIS requests that any OASIS Party or any other party that believes it has patent claims that would necessarily be infringed by implementations of this OASIS Committee Specification or OASIS Standard, to notify OASIS TC Administrator and provide an indication of its willingness to grant patent licenses to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this specification. OASIS invites any party to contact the OASIS TC Administrator if it is aware of a claim of ownership of any patent claims that would necessarily be infringed by implementations of this specification by a patent holder that is not willing to provide a license to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this specification. OASIS may include such claims on its website, but disclaims any obligation to do so. OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS' procedures with respect to rights in any document or deliverable produced by an OASIS Technical Committee can be found on the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this OASIS Committee Specification or OASIS Standard, can be obtained from the OASIS TC Administrator. OASIS makes no representation that any information or list of intellectual property rights will at any time be complete, or that any claims in such list are, in fact, Essential Claims. The names "OASIS", “OpenDocument”, “Open Document Format”, and “ODF” are trademarks of OASIS http://www.oasis-open.org/who/trademark.php Table of Contents 1 Introduction 1.1 Introduction 1.2 Terminology 1.3 Normative References 1.4 Non Normative References 1.5 Namespaces 2 Packages, Package Consumers and Package Producers 2.1 Introduction 2.2 Packages 2.2.1 OpenDocument Package 2.2.2 OpenDocument Extended Package 2.3 Producers 2.3.1 OpenDocument Package Producer 2.3.2 OpenDocument Package Extended Producer 2.4 OpenDocument Package Consumer 3 Packages 3.1 General 3.2 Manifest 3.3 MIME Media Type 3.4 Encryption 3.4.1 General 3.4.2 Encryption Process 3.5 Digital Signatures 3.6 Metadata 3.7 Usage of IRIs Within Packages 3.8 Preview Image 4 Manifest File 4.1 Introduction 4.2 <manifest:manifest> 4.3 <manifest:file-entry> 4.4 <manifest:encryption-data> 4.5 <manifest:algorithm> 4.6 <manifest:start-key-generation> 4.7 <manifest:key-derivation> 4.8 Manifest Attributes 4.8.1 manifest:algorithm-name 4.8.2 manifest:checksum 4.8.3 manifest:checksum-type 4.8.4 manifest:full-path 4.8.5 manifest:initialisation-vector 4.8.6 manifest:start-key-generation-name 4.8.7 manifest:key-size 4.8.8 manifest:iteration-count 4.8.9 manifest:key-derivation-name 4.8.10 manifest:media-type 4.8.11 manifest:preferred-view-mode 4.8.12 manifest:salt 4.8.13 manifest:size 4.8.14 manifest:version 5 Digital Signatures File 5.1 Introduction 5.2 <dsig:document-signatures> 5.3 <ds:Signature> 5.4 Digital Signatures Attributes 5.4.1 dsig:version 6 Metadata Manifest Files 6.1 General 6.2 pkg:Document 6.3 pkg:File 6.4 pkg:MetadataFile 6.5 pkg:Element 6.6 pkg:hasPart 6.7 pkg:mimeType 7 Datatypes 7.1 Introduction 7.2 W3C Schema Datatypes 7.3 Other Datatypes 7.3.1 namespacedToken Appendix A. Schemas A.1. OpenDocument Manifest Schema A.2. OpenDocument Digital Signature Schema Appendix B. OpenDocument Metadata Manifest Ontology Appendix C. Zip File Structure (Non normative) Appendix D. Changes From “Open Document Format for Office Applications (OpenDocument) v1.1” (Non Normative) 1 1.1 This document is part of the Open Document Format for Office Applications (OpenDocument) Version 1.2 specification. It defines a package format for OpenDocument documents. 1.2 All text is normative unless otherwise labeled. Text with a gray background color which is contained in boxes is informative. It lists the XML element-element and element-attribute relations for cross reference purposes. Within the normative text of this specification, the terms “shall”, “shall not”, “should”, “should not”, “may” and “need not” are to be interpreted as described in Annex H of [ISO/IEC Directives] XML Element, attribute names, attribute value types, and attribute values appear in monospace 1.3 [ ISO/IEC Directives Rules for the structure and drafting of International Standards [ OWL OWL Web Ontology Language Overview http://www.w3.org/TR/2004/REC-owl-features-20040210/ [ PNG Portable Network Graphics (PNG) Specification (Second Edition) http://www.w3.org/TR/2003/REC-PNG-20031110 [ RDF-CONCEPTS Resource Description Framework (RDF): Concepts and Abstract Syntax http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/ [ RDF-XML RDF/XML Syntax Specification (Revised) http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210/ [ RFC2898 PKCS #5: Password-Based Cryptography Specification Version 2.0 http://www.ietf.org/rfc/rfc2898.txt [ RFC3174 US Secure Hash Algorithm 1 (SHA1) http://www.ietf.org/rfc/rfc3174.txt [ RFC3986 Uniform Resource Identifier (URI): Generic Syntax http://www.ietf.org/rfc/rfc3986.txt [ RFC3987 Internationalized Resource Identifiers (IRIs) http://www.ietf.org/rfc/rfc3987.txt [ RFC4288 Media Type Specifications and Registration Procedures http://www.ietf.org/rfc/rfc4288.txt [ RNG Document Schema Definition Language (DSDL) -- Part 2: Regular-grammar-based validation -- RELAX NG [ Schneier [ XAdES http://webapp.etsi.org/workprogram/Report_WorkItem.asp?WKI_ID=28064 [ XML-ID xml:id Version 1.0 http://www.w3.org/TR/2005/REC-xml-id-20050909/ [ xml-names Namespaces in XML 1.0 (Second Edition) http://www.w3.org/TR/2006/REC-xml-names-20060816 [ XML1.0 Extensible Markup Language (XML) 1.0 (Fourth Edition) http://www.w3.org/TR/2006/REC-xml-20060816/ [ xmldsig-core XML Signature Syntax and Processing (Second Edition) http://www.w3.org/TR/2008/REC-xmldsig-core-20080610/ [ xmlenc-core XML Encryption Syntax and Processing http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/ [ xmlschema-2 XML Schema Part 2: Datatypes Second Edition http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/ [ ZIP PKWARE Inc. Zip APPNOTE Version 6.2.0 http://www.pkware.com/support/application-note-archives 1.4 [Schneier-Errata] Applied Cryptography 2nd. Ed. - Errata http://www.schneier.com/book-applied-errata.html 1.5 The namespaces used or defined by OpenDocument part 3 are listed in tables 1 and 2. The prefix column in tables 1 and 2 lists the namespace prefixes this specification uses when referring to elements and attributes in different namespaces. Conforming OpenDocument documents may substitute other namespace prefixes, bound to the listed namespace URI's, in accordance with the Namespaces in XML specification [xml-names] Note: Namespaces in XML [xml-names] Table Prefix Description Namespace manifest Elements and attribute contained in the package manifest. urn:oasis:names:tc:opendocument:xmlns: dsig Elements and attribute contained in digital signature files. urn:oasis:names:tc:opendocument:xmlns: Table Prefix Description Namespace pkg OWL classes and properties contained in metadata manifest files. http://docs.oasis-open.org/ns/office/1.2/meta/pkg# Table Prefix Description Namespace ds XML Digital Signature Syntax and Processing namespace (see [xmldsig-core] http://www.w3.org/2000/09/xmldsig# 2 2.1 The OpenDocument specification defines conformance for packages, package consumers, and package producers, with two conformance classes called conforming and extended conforming. This chapter defines the basic requirements for the individual conformance targets. 2.2 2.2.1 An OpenDocument P ackage shall A) shall [ZIP] B) shall shall B.1) shall [XML1.0] B.2) shall <manifest:manifest> 4.2 B.3) shall C) should D) may D.1) shall [XML1.0] D.2) shall <dsig:document-signatures> 5.2 D.3) shall E) F) F.1) shall [xml-names] F.2) shall [XML-ID] 2.2.2 G) OpenDocument Extended Package shall 2.2.1 2.3 2.3.1 An OpenDocument Package Producer A) may shall B) shall 2.3.2 An OpenDocument Package Extended Producer shall 2.4 An OpenDocument Package Consumer A) shall need not B) 2.2.1 2.2.1 B.1) shall [XML1.0] B.2) shall [xml-names] B.3) shall [XML-ID] 3 3.1 OpenDocument defines a package file to store the XML content of a document as separate parts together with [ZIP] A document within a package may consist of a set of files creating a unit, for instance the set of files specified by OpenDocument part 1. These files may be located in the root of the package, or within a directory. If they are contained in the root of the package, they are called document sub document document 3.2 All OpenDocument packages shall contain a file named “META-INF/manifest.xml”. This file is the OpenDocument package manifest. The manifest provides : • • • The format of the manifest file is specified in chapter 4 For all files contained in a package, with exception of the “mimetype” file and files whose relative path starts with “META-INF/”, the “META-INF/manifest.xml” file shall contain exactly one <manifest:file-entry> manifest:full-path The “META-INF/manifest.xml” file need not contain <manifest:file-entry> 4.3 manifest:full-path 4.8.4 shall not <manifest:file-entry> manifest:full-path The “META-INF/manifest.xml” file should <manifest:file-entry> manifest:full-path / 3.3 If a MIME media type for a document exists, then an OpenDocument package should file file [RFC4288] The “mimetype” file shall shall not shall not If the file named “META-INF/manifest.xml” contains a <manifest:file-entry> manifest:full-path / manifest:media-type 4.8.10 Note: • • • 3.4 3.4.1 OpenDocument packages may be encrypted by encrypting some or all files within the package. The encryption process takes place in the following stages: • • • The information regarding the algorithms that were used to encrypt a file and required parameters are contained in the manifest. The manifest shall not be encrypted. Each file entry that is encrypted shall be compressed with the “deflate” algorithm before being encrypted. Encrypted file entries shall be flagged as 'STORED' rather than 'DEFLATED' in the Zip file's central directory. The size of the encrypted file should replace the real size value in the file entry's central directory records, its local file header and the data descriptor, if any. The original uncompressed, unencrypted size shall be contained in the manifest:size 4.8.13 <manifest:file-entry> 4.3 The encrypted form can be of greater size than the DEFLATED file used as the plaintext. Note: The encryption method shall be such that the exact size and value of the plaintext DEFLATED file is recovered by the corresponding decryption process. 3.4.2 The three stages of the encryption process proceed as follows, using the legacy algorithms to illustrate each stage: 1. [RFC3174] 2. [RFC2898] 3. [Schneier] 3.5 Files within a package may have a digital signature applied. Digital signatures are stored in one or more files whose relative paths begin with “META-INF/”. The names of these files shall The format of digital signature files is specified in chapter 5 3.6 Metadata for documents contained in an OpenDocument package may be expressed using the model of the W3C Resource Description Framework [RDF-CONCEPTS] A document or sub document that is stored in a package may metadata files shall [RDF-XML] should All metadata files of a document or sub document shall metadata manifest file 6 In addition to metadata files, the "manifest.rdf" file may list other files which are contained in the document or sub document that contain RDF metadata, like files that contain RDFa metadata. The "manifest.rdf" file need not exist if a document or sub document does not contain any files that contain RDF metadata. All references to a resource within the same package that occur within metadata file shall rdf:about 3.7 Within the files contained in a package, relative IRIs as defined by [RFC3987] OpenDocument Package Consumers shall resolve relative IRIs that occur within a file of a package as follows: 1. file entry path 2. package base IRI [RFC3986] 3. [RFC3986] [RFC3986] 4. [RFC3986] [RFC3986] 5. relative IRI buffer file entry path buffer 6. 7. 8. 9. • [RFC3986] • 10. [RFC3986] • [RFC3986] • 11. 12. 13. [RFC3986] Note: 3.8 Unless a document is encrypted, package producers should generate a preview image of the document that is contained in the package. It should be a representation of the first page, first sheet, etc. of the document. For maximum re-usability of the preview images they shall be generated without any effects, surrounding frames, or borders. Note: The preview image shall Preview images shall [PNG] Note: Encrypted documents are intended to be unreadable for unauthorized users and package producers shall not generate preview images for such documents. They may include a preview image that is independent of the contents of the document. Such preview images should not be encrypted. 4 4.1 The format of the manifest file is defined by the OpenDocument manifest Relax-NG [RNG] 4.2 The <manifest:manifest> the <manifest:file-entry> 4.3 The <manifest:manifest> The <manifest:manifest> manifest:version 4.8.14.2 The <manifest:manifest> <manifest:file-entry> 4.3 4.3 The <manifest:file-entry> For directories, the manifest file should contain a <manifest:file-entry> 3.1 Directories have no corresponding file entries within the Zip file. The <manifest:file-entry> <manifest:manifest> 4.2 The <manifest:file-entry> manifest:full-path 4.8.4 manifest:media-type 4.8.10 manifest:preferred-view-mode 4.8.11 manifest:size 4.8.13 manifest:version 4.8.14.1 The <manifest:file-entry> <manifest:encryption-data> 4.4 4.4 The <manifest:encryption-data> The <manifest:encryption-data> <manifest:file-entry> 4.3 The <manifest:encryption-data> manifest:checksum 4.8.2 manifest:checksum-type 4.8.3 The <manifest:encryption-data> <manifest:algorithm> 4.5 <manifest:key-derivation> 4.7 <manifest:start-key-generation> 4.6 4.5 The <manifest:algorithm> Depending on the algorithm specified by the manifest:algorithm-name 4.8.1 <manifest:algorithm> When the manifest:algorithm-name attribute value matches one of those defined in section §3.2 of [xmlenc-core] , the <manifest:algorithm> element shall not have child elements except those permitted as child elements of the [xmlenc-core] <EncryptionMethod> element whose Algorithm attribute value is the same as the <manifest:algorithm> manifest:algorithm-name attribute value. When the value of the manifest:algorithm-name attribute identifies the legacy Blowfish algorithm, <manifest:algorithm> shall be an empty element. The <manifest:algorithm> <manifest:encryption-data> 4.4 The <manifest:algorithm> manifest:algorithm-name 4.8.1 manifest:initialisation-vector 4.8.5 4.6 The <manifest:start-key-generation> When a <manifest:start-key-generation> <manifest:encryption-data> The <manifest:start-key-generation> <manifest:encryption-data> 4.4 The <manifest:start-key-generation> manifest:key-size 4.8.7 manifest:start-key-generation-name 4.8.6 The <manifest:start-key-generation> 4.7 The <manifest:key-derivation> The <manifest:key-derivation> <manifest:encryption-data> 4.4 The <manifest:key-derivation> manifest:iteration-count 4.8.8 manifest:key-derivation-name 4.8.9 manifest:key-size 4.8.7 manifest:salt 4.8.12 The <manifest:key-derivation> 4.8 4.8.1 The manifest:algorithm-name The defined values for the manifest:algorithm-name • An IRI listed in §5.2 of [xmlenc-core] : The algorithm and mode specified in §5.2 of [xmlenc-core] for this IRI. • Blowfish CFB [Schneier] • urn:oasis:names:tc:opendocument:xmlns: manifest :1.0 #blowfish Blowfish CFB • [xmlenc-core] package package • Blowfish CFB Blowfish CFB urn:oasis:names:tc:opendocument:xmlns: manifest :1.0 #blowfish Note [Schneier] [Schneier-Errata] The manifest:algorithm-name <manifest:algorithm> 4.5 The values of the manifest:algorithm-name Blowfish CFB anyURI 7.2 4.8.2 The manifest:checksum manifest:checksum-type 4.8.3 The manifest:checksum <manifest:encryption-data> 4.4 The manifest:checksum base64Binary 7.2 4.8.3 The manifest:checksum-type The defined values for the manifest:checksum-type • SHA1/1K [RFC3174] • SHA1 http://www.w3.org/2000/09/xmldsig#sha1 • urn:oasis:names:tc:opendocument:xmlns: manifest :1.0 #sha1-1k SHA1/1K • urn:oasis:names:tc:opendocument:xmlns: manifest :1.0 #sha256-1k [RFC3174] • [xmlenc-core] [xmlenc-core] • [xmlenc-core] package package Package producers that support encryption should use the urn:oasis:names:tc:opendocument:xmlns: manifest :1.0 #sha256-1k SHA1/1K urn:oasis:names:tc:opendocument:xmlns: manifest :1.0 #sha1 urn:oasis:names:tc:opendocument:xmlns: manifest :1.0 #sha256-1k The manifest:checksum-type <manifest:encryption-data> 4.4 The values of the manifest:checksum-type SHA1/1K anyURI 7.2 4.8.4 The manifest:full-path The attribute value " / Note: The manifest:full-path <manifest:file-entry> 4.3 The manifest:full-path string 7.2 4.8.5 The manifest:initialisation-vector The manifest:initialisation-vector <manifest:algorithm> 4.5 The manifest:initialisation-vector base64Binary 7.2 4.8.6 The manifest:start-key-generation-name attribute specifies the algorithm used to generate a start key from the user password. The defined values for the manifest:start-key-generation-name attribute are: • SHA1 : The SHA1 algorithm (see [RFC3174] ) . • [xmlenc-core] [xmlenc-core] • [xmlenc-core] package package The default value for this attribute is SHA1 Package producers that support encryption should use the http://www.w3.org/2000/09/xmldsig#sha256 algorithm . Package consumers that support encryption shall support the values SHA1 , and http://www.w3.org/2000/09/xmldsig#sha1 http://www.w3.org/2000/09/xmldsig#sha256 The manifest:start-key-generation-name <manifest:start-key-generation> 4.6 The values of the manifest:start-key-generation-name SHA1 anyURI 7.2 The attribute has the value SHA1 or a value of data type anyURI . 4.8.7 The manifest:key-size ttribute specifies the length in octets of a key delivered by a key-developing algorithm . For a <manifest:start-key-generation> element, the default value for this attribute is 20 . Note : The value used will need to be compatible with the result obtain from the start-key-generation algorithm and the input requirements of the key derivation algorithm. <manifest:key-derivation> element, the default value for this attribute is 16 . Note : The value used will need to be one obtainable from the key-derivation algorithm and acceptable for the encryption algorithm being used. The manifest:key-size <manifest:key-derivation> 4.7 <manifest:start-key-generation> 4.6 The manifest:key-size nonNegativeInteger 7.2 4.8.8 The manifest:iteration-count The manifest:iteration-count <manifest:key-derivation> 4.7 The manifest:iteration-count nonNegativeInteger 7.2 4.8.9 The manifest:key-derivation-name The defined values for the manifest:key-derivation-name • PBKDF2 [RFC2898] • urn:oasis:names:tc:opendocument:xmlns: manifest :1.0 #pbkdf2 PBKDF2 • package package Package producers that support encryption shall support the value PBKDF2 Package consumers that support encryption shall support the values PBKDF2 and urn:oasis:names:tc:opendocument:xmlns: manifest :1.0 #pbkdf2 If the value of this attribute is PBKDF2 urn:oasis:names:tc:opendocument:xmlns: manifest :1.0 #pbkdf2 <manifest:encryption-data> 4.4 <manifest:start-key-generation> 4.6 The manifest:key-derivation-name <manifest:key-derivation> 4.7 The values of the manifest:key-derivation-name PBKDF2 anyURI 7.2 4.8.10 The manifest:media-type [RFC4288] A manifest:media-type The manifest:media-type <manifest:file-entry> 4.3 The manifest:media-type string 7.2 4.8.11 The manifest:preferred-view-mode manifest:full-path 4.8.4 / The defined values for the manifest:preferred-view-mode • edit • presentation-slide-show • read-only • Preferred view modes are not necessarily generally applicable to all media types. The default preferred view mode is implementation defined. The behavior for cases where the manifest:preferred-view-mode The manifest:preferred-view-mode <manifest:file-entry> 4.3 The values of the manifest:preferred-view-mode edit presentation-slide-show read-only namespacedToken 7.3.1 4.8.12 The manifest:salt [RFC2898] base64binary The manifest:salt <manifest:key-derivation> 4.7 The manifest:salt base64Binary 7.2 4.8.13 The manifest:size 3.4 The manifest:size <manifest:file-entry> 4.3 The manifest:size nonNegativeInteger 7.2 4.8.14 4.8.14.1 The manifest:version The interpretation of the attribute value depends on the MIME media type specified in the manifest:media-type The manifest:version <manifest:file-entry> 4.3 The manifest:version string 7.2 4.8.14.2 The manifest:version manifest:version 1.2 The manifest:version <manifest:manifest> 4.2 The only value of the manifest:version 1.2 5 5.1 The format of the digital signature files is defined by the OpenDocument digital signature schema Relax-NG [RNG] 5.2 The <dsig:document-signatures> <ds:Signature> 5.3 <dsig:document-signatures> <ds:Signature> should Consumers may may • • < ds: Reference> < ds: Signature> In particular, consumers may If a digital signature file is not encrypted, consumers shall not decrypt files that are referenced by < ds: Reference> If a digital signature file is encrypted, consumers shall decrypt files that are referenced by < ds: Reference> The <dsig:document-signatures> The <dsig:document-signatures> dsig:version 5.4.1 The <dsig:document-signatures> <ds:Signature> 5.3 5.3 The <ds:Signature> [xmldsig-core] <ds:Signature> Id [XAdES] A <ds:KeyInfo> [xmldsig-core] <ds:KeyInfo> <ds:X509Data> <ds:X509IssuerSerial> <ds:X509Certificate> Additional <ds:X509Certificate> <ds:X509Data> <xades:CertificateValues> <ds:Object> [XAdES] <ds:Reference> <ds:SignedInfo> 1. <ds:Reference> http://docs.oasis-open.org/office/v1.2/OS/OpenDocument-v1.2.odt 3.7 Note: <ds:signature> 2. <ds:Reference> http://uri.etsi.org/01903/v1.2.2#SignedProperties <ds:Reference> [XAdES] 3. <ds:Reference> <ds:Reference> http://docs.oasis-open.org/office/v1.2/OS/OpenDocument-v1.2.odt The only permitted <ds:Transform> [xmldsig-core] The signing time should be recorded using one or more of the following approaches: 1. <ds:Object > <ds:SignatureProperty> a. Id b. Id <ds:Signature> c. <date> http://purl.org/dc/elements/1.1/ [xmlschema-2] 2. <xades:SigningTime> [XAdES] If an <ds:Object> 1. <xades:SignedSignatureProperties> <xades:SigningCertificate> [XAdES] 2. [XAdES] 3. <xades:SignatureTimeStamp> <xades: SigAndRefsTimestamp> 4. <xades:SigAndRefsTimestamp> [XAdES] 5. <ds:Reference> [XAdES] <ds:Reference> <ds:SignedInfo> <ds:Signature> The <ds:Signature> <dsig:document-signatures> 5.2 5.4 5.4.1 The dsig:version dsig:version 1.2 The dsig:version <dsig:document-signatures> 5.2 The only value of the dsig:version 1.2 6 6.1 Metadata manifest files (see 3.6 3.1 Metadata manifest files enumerate metadata files and their relationships to other files in that document or sub document as defined by this specification. The relationships are expressed in the metadata manifest files using [RDF-XML] [OWL] 6.2 An instance of the pkg:Document The following property is defined for the pkg:Document pkg:hasPart 6.6 6.3 A file in an OpenDocument package is represented by an instance of class pkg:File pkg:MetadataFile An instance of the pkg:File The relationship between a file and a package is expressed using the property pkg:hasPart 6.6 The following property is defined for the pkg:File pkg:mimeType 6.7 6.4 An instance of the pkg:MetadataFile The pkg:MetadataFile pkg:File 6.3 6.5 The pkg:Element 6.6 The pkg:hasPart pkg:File This property can be used with the following class: pkg:Document 6.2 6.7 The pkg:mimeType [RFC4288] pkg:File This property can be used with the following class: pkg:File 6.3 7 7.1 The values of attributes and elements are often described as having datatypes. These datatypes either are datatypes defined within [xmlschema-2] [xmlschema-2] [xmlschema-2] 7.2 The following [xmlschema-2] • • • • 7.3 7.3.1 A namespaced token is an [xmlschema-2] [xml-names] Appendix A. A.1. The OpenDocument manifest schema is defined by a separate document, whose location can be found in the Related work A.2. The OpenDocument digital signature schema is defined by a separate document, whose location can be found in the Related work Appendix B. The OpenDocument metadata manifest ontology is defined by a separate document, whose location can be found in the Related work Appendix C. A Zip file starts with a sequence of files, each of which can be compressed or stored in raw format. Each file has a local header immediately before its data, which contains most of the information about the file, including time-stamps, compression method and file name. The compressed file contents immediately follow, and are terminated by an optional data descriptor. The data descriptor contains the CRC and compressed size of the file, which are frequently not available when writing the local file header. If these details were included, the data descriptor can be skipped. Each file in the archive is laid down sequentially in this format, followed by a central directory at the end of the Zip archive. The central directory is a contiguous set of directory entries, each of which contains all the information in the local file header, plus extras such as file comments and attributes. Most importantly, the central directory contains pointers to the position of each file in the archive for navigation of the Zip file. Figure For more details about the Zip file format, see [ZIP] Appendix D. The OpenDocument specification has been divided into three parts and has been restructured. This appendix describes changes that are related to part 3 of this specification. The following is a list of major features that have been added. For minor features please see the lists of new and changed elements and attributes. • 3.5 • 3.6 • 3.4 The following element is new for manifest files: • <manifest:start-key-generation> 4.6 The following attributes are new for manifest files: • manifest:key-size 4.8.7 • manifest:preferred-view-mode 4.8.11 • manifest:start-key-generation-name 4.8.6 • manifest:version 4.8.14 The value types of the following attributes changed: • manifest:algorithm-name 4.8.1 <manifest:algorithm> 4.5 • manifest:checksum-type 4.8.3 <manifest:encryption-data> 4.4 • manifest:key-derivation-name 4.8.9 <manifest:key-derivation> 4.7