@blocknote/xl-odt-exporter 0.48.0 → 0.49.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"blocknote-xl-odt-exporter.js","names":[],"sources":["../src/odt/defaultSchema/blocks.tsx","../src/odt/defaultSchema/inlineContent.tsx","../src/odt/defaultSchema/styles.ts","../src/odt/defaultSchema/index.ts","../../../shared/util/fileUtil.ts","../../../shared/util/imageUtil.ts","../src/odt/template/styles.xml?raw","../src/odt/odtExporter.tsx"],"sourcesContent":["import {\n BlockFromConfig,\n BlockMapping,\n createPageBreakBlockConfig,\n DefaultBlockSchema,\n DefaultProps,\n mapTableCell,\n StyledText,\n TableCell,\n} from \"@blocknote/core\";\nimport { ODTExporter } from \"../odtExporter.js\";\nimport { multiColumnSchema } from \"@blocknote/xl-multi-column\";\n\nexport const getTabs = (nestingLevel: number) => {\n return Array.from({ length: nestingLevel }, () => <text:tab />);\n};\n\nconst createParagraphStyle = (\n exporter: ODTExporter<any, any, any>,\n props: Partial<DefaultProps>,\n parentStyleName = \"Standard\",\n styleAttributes: Record<string, string> = {},\n paragraphStyleAttributes: Record<string, string> = {},\n textStyleAttributes: Record<string, string> = {},\n) => {\n const paragraphStyles: Record<string, string> = {\n ...paragraphStyleAttributes,\n };\n const textStyles: Record<string, string> = { ...textStyleAttributes };\n\n if (props.textAlignment && props.textAlignment !== \"left\") {\n const alignmentMap = {\n left: \"start\",\n center: \"center\",\n right: \"end\",\n justify: \"justify\",\n };\n paragraphStyles[\"fo:text-align\"] =\n alignmentMap[props.textAlignment as keyof typeof alignmentMap];\n }\n\n const backgroundColor =\n props.backgroundColor && props.backgroundColor !== \"default\"\n ? exporter.options.colors[props.backgroundColor]?.background\n : undefined;\n\n if (backgroundColor) {\n paragraphStyles[\"fo:background-color\"] = backgroundColor;\n }\n\n if (props.textColor && props.textColor !== \"default\") {\n const color =\n exporter.options.colors[\n props.textColor as keyof typeof exporter.options.colors\n ]?.text ?? props.textColor;\n textStyles[\"fo:color\"] = color;\n }\n\n if (\n !backgroundColor &&\n !Object.keys(styleAttributes).length &&\n !Object.keys(paragraphStyles).length &&\n !Object.keys(textStyles).length\n ) {\n return parentStyleName || \"Standard\";\n }\n\n return exporter.registerStyle((name) => (\n <style:style\n style:family=\"paragraph\"\n style:name={name}\n style:parent-style-name={parentStyleName}\n {...styleAttributes}\n >\n {backgroundColor && (\n <loext:graphic-properties\n draw:fill=\"solid\"\n draw:fill-color={backgroundColor}\n />\n )}\n {Object.keys(paragraphStyles).length > 0 && (\n <style:paragraph-properties {...paragraphStyles} />\n )}\n {Object.keys(textStyles).length > 0 && (\n <style:text-properties {...textStyles}></style:text-properties>\n )}\n </style:style>\n ));\n};\n\nconst createTableCellStyle = (\n exporter: ODTExporter<any, any, any>,\n): ((cell: TableCell<any, any>) => string) => {\n // To not create a new style for each cell within a table, we cache the styles based on unique cell properties\n const cellStyleCache = new Map<string, string>();\n\n return (cell: TableCell<any, any>) => {\n const key = `${cell.props.backgroundColor}-${cell.props.textColor}-${cell.props.textAlignment}`;\n\n if (cellStyleCache.has(key)) {\n return cellStyleCache.get(key)!;\n }\n\n const styleName = exporter.registerStyle((name) => (\n <style:style style:family=\"table-cell\" style:name={name}>\n <style:table-cell-properties\n fo:border=\"0.5pt solid #000000\"\n style:writing-mode=\"lr-tb\"\n fo:padding-top=\"0in\"\n fo:padding-left=\"0.075in\"\n fo:padding-bottom=\"0in\"\n fo:padding-right=\"0.075in\"\n fo:background-color={\n cell.props.backgroundColor !== \"default\" &&\n cell.props.backgroundColor\n ? exporter.options.colors?.[cell.props.backgroundColor]\n ?.background\n : undefined\n }\n // TODO This is not applying because the children set their own colors\n fo:color={\n cell.props.textColor !== \"default\" && cell.props.textColor\n ? exporter.options.colors[cell.props.textColor]?.text\n : undefined\n }\n />\n </style:style>\n ));\n\n cellStyleCache.set(key, styleName);\n\n return styleName;\n };\n};\nconst createTableStyle = (\n exporter: ODTExporter<any, any, any>,\n options: { width: number },\n) => {\n const tableStyleName = exporter.registerStyle((name) => (\n <style:style style:family=\"table\" style:name={name}>\n <style:table-properties\n table:align=\"left\"\n style:writing-mode=\"lr-tb\"\n style:width={`${options.width}pt`}\n />\n </style:style>\n ));\n\n return tableStyleName;\n};\n\nconst wrapWithLists = (\n content: React.ReactNode,\n level: number,\n): React.ReactNode => {\n if (level <= 0) {\n return content;\n }\n return (\n <text:list>\n <text:list-item>{wrapWithLists(content, level - 1)}</text:list-item>\n </text:list>\n );\n};\n\nexport const odtBlockMappingForDefaultSchema: BlockMapping<\n DefaultBlockSchema & {\n pageBreak: ReturnType<typeof createPageBreakBlockConfig>;\n } & typeof multiColumnSchema.blockSchema,\n any,\n any,\n React.ReactNode,\n React.ReactNode\n> = {\n paragraph: (block, exporter, nestingLevel) => {\n const styleName = createParagraphStyle(\n exporter as ODTExporter<any, any, any>,\n block.props,\n );\n\n return (\n <text:p text:style-name={styleName}>\n {getTabs(nestingLevel)}\n {exporter.transformInlineContent(block.content)}\n </text:p>\n );\n },\n\n heading: (block, exporter, nestingLevel) => {\n const customStyleName = createParagraphStyle(\n exporter as ODTExporter<any, any, any>,\n block.props,\n \"Heading_20_\" + block.props.level,\n );\n const styleName = customStyleName;\n\n return (\n <text:h\n text:outline-level={`${block.props.level}`}\n text:style-name={styleName}\n >\n {getTabs(nestingLevel)}\n {exporter.transformInlineContent(block.content)}\n </text:h>\n );\n },\n\n quote: (block, exporter, nestingLevel) => {\n const customStyleName = createParagraphStyle(\n exporter as ODTExporter<any, any, any>,\n block.props,\n \"Standard\",\n {},\n {\n \"fo:border-left\": \"2pt solid #7D797A\",\n \"fo:padding-left\": \"0.25in\",\n },\n {\n \"fo:color\": \"#7D797A\",\n },\n );\n const styleName = customStyleName;\n\n return (\n <text:p text:style-name={styleName}>\n {getTabs(nestingLevel)}\n {exporter.transformInlineContent(block.content)}\n </text:p>\n );\n },\n\n /**\n * Note: we wrap each list item in it's own list element.\n * This is not the cleanest solution, it would be nicer to recognize subsequent\n * list items and wrap them in the same list element.\n *\n * However, Word DocX -> ODT export actually does the same thing, so\n * for now it seems reasonable.\n *\n * (LibreOffice does nicely wrap the list items in the same list element)\n */\n toggleListItem: (block, exporter) => (\n <text:p text:style-name=\"Standard\">\n {\"> \"}\n {exporter.transformInlineContent(block.content)}\n </text:p>\n ),\n\n bulletListItem: (block, exporter, nestingLevel) => {\n const styleName = createParagraphStyle(\n exporter as ODTExporter<any, any, any>,\n block.props,\n \"Standard\",\n { \"style:list-style-name\": \"WWNum1\" },\n );\n return (\n <text:list text:style-name=\"WWNum1\">\n <text:list-item>\n {wrapWithLists(\n <text:p text:style-name={styleName}>\n {exporter.transformInlineContent(block.content)}\n </text:p>,\n nestingLevel,\n )}\n </text:list-item>\n </text:list>\n );\n },\n\n numberedListItem: (block, exporter, nestingLevel, numberedListIndex) => {\n const styleName = createParagraphStyle(\n exporter as ODTExporter<any, any, any>,\n block.props,\n );\n // continue numbering from the previous list item if this is not the first item\n const continueNumbering = (numberedListIndex || 0) > 1 ? \"true\" : \"false\";\n\n return (\n <text:list\n text:style-name=\"No_20_List\"\n text:continue-numbering={continueNumbering}\n >\n <text:list-item\n {...(continueNumbering === \"false\" && {\n \"text:start-value\": block.props.start,\n })}\n >\n {wrapWithLists(\n <text:p text:style-name={styleName}>\n {exporter.transformInlineContent(block.content)}\n </text:p>,\n nestingLevel,\n )}\n </text:list-item>\n </text:list>\n );\n },\n\n checkListItem: (block, exporter) => (\n <text:p text:style-name=\"Standard\">\n {block.props.checked ? \"☒ \" : \"☐ \"}\n {exporter.transformInlineContent(block.content)}\n </text:p>\n ),\n\n pageBreak: async () => {\n return <text:p text:style-name=\"PageBreak\" />;\n },\n\n divider: (block, exporter) => {\n const styleName = createParagraphStyle(\n exporter as ODTExporter<any, any, any>,\n block.props,\n \"Standard\",\n {},\n {\n \"fo:border-top\": \"1pt solid #cccccc\",\n \"fo:margin-top\": \"11pt\",\n \"fo:margin-bottom\": \"12pt\",\n \"fo:padding-top\": \"0pt\",\n \"fo:padding-bottom\": \"0pt\",\n },\n );\n\n return <text:p text:style-name={styleName} />;\n },\n\n column: (_block, exporter, _nestingLevel, _numberedListIndex, children) => {\n const ex = exporter as ODTExporter<any, any, any>;\n const style = ex.registerStyle((name) => (\n <style:style style:name={name} style:family=\"table-cell\">\n <style:table-cell-properties\n style:writing-mode=\"lr-tb\"\n fo:border=\"none\"\n fo:padding-top=\"0in\"\n fo:padding-left=\"0.075in\"\n fo:padding-bottom=\"0in\"\n fo:padding-right=\"0.075in\"\n />\n </style:style>\n ));\n\n return (\n <table:table-cell table:style-name={style}>{children}</table:table-cell>\n );\n },\n columnList: (\n block,\n exporter,\n _nestingLevel,\n _numberedListIndex,\n children,\n ) => {\n const blockWithChildren = block as BlockFromConfig<\n {\n type: \"columnList\";\n content: \"none\";\n propSchema: Record<string, any>;\n },\n any,\n any\n >;\n const ex = exporter as ODTExporter<any, any, any>;\n const style = ex.registerStyle((name) => (\n <style:style style:name={name} style:family=\"table\">\n <style:table-properties\n table:align=\"margins\"\n style:writing-mode=\"lr-tb\"\n />\n </style:style>\n ));\n\n return (\n <table:table table:name={block.id} table:style-name={style}>\n {(blockWithChildren.children || []).map((column, index) => {\n const style = ex.registerStyle((name) => (\n <style:style style:name={name} style:family=\"table-column\">\n <style:table-column-properties\n style:rel-column-width={`${column.props.width * 100}*`}\n />\n </style:style>\n ));\n\n return <table:table-column table:style-name={style} key={index} />;\n })}\n <table:table-row>{children}</table:table-row>\n </table:table>\n );\n },\n\n image: async (block, exporter) => {\n const odtExporter = exporter as ODTExporter<any, any, any>;\n\n const { path, mimeType, ...originalDimensions } =\n await odtExporter.registerPicture(block.props.url);\n const styleName = createParagraphStyle(\n exporter as ODTExporter<any, any, any>,\n block.props,\n );\n const width = block.props.previewWidth || originalDimensions.width;\n const height =\n (originalDimensions.height / originalDimensions.width) * width;\n const captionHeight = 20;\n const imageFrame = (\n <text:p text:style-name={block.props.caption ? \"Caption\" : styleName}>\n <draw:frame\n draw:style-name=\"Frame\"\n style:rel-height=\"scale\"\n svg:width={`${width}px`}\n svg:height={`${height}px`}\n style:rel-width={block.props.caption ? \"100%\" : `${width}px`}\n {...(!block.props.caption && {\n \"text:anchor-type\": \"as-char\",\n })}\n >\n <draw:image\n xlink:type=\"simple\"\n xlink:show=\"embed\"\n xlink:actuate=\"onLoad\"\n xlink:href={path}\n draw:mime-type={mimeType}\n />\n </draw:frame>\n <text:line-break />\n <text:span text:style-name=\"Caption\">{block.props.caption}</text:span>\n </text:p>\n );\n\n if (block.props.caption) {\n return (\n <text:p text:style-name={styleName}>\n <draw:frame\n draw:style-name=\"Frame\"\n style:rel-height=\"scale\"\n style:rel-width={`${width}px`}\n svg:width={`${width}px`}\n svg:height={`${height + captionHeight}px`}\n text:anchor-type=\"as-char\"\n >\n <draw:text-box>{imageFrame}</draw:text-box>\n </draw:frame>\n </text:p>\n );\n }\n\n return imageFrame;\n },\n\n table: (block, exporter) => {\n const DEFAULT_COLUMN_WIDTH_PX = 120;\n const tableWidthPX =\n block.content.columnWidths.reduce(\n (totalWidth, colWidth) =>\n (totalWidth || 0) + (colWidth || DEFAULT_COLUMN_WIDTH_PX),\n 0,\n ) || 0;\n const tableWidthPT = tableWidthPX * 0.75;\n const ex = exporter as ODTExporter<any, any, any>;\n const getCellStyleName = createTableCellStyle(ex);\n const tableStyleName = createTableStyle(ex, { width: tableWidthPT });\n\n return (\n <table:table table:name={block.id} table:style-name={tableStyleName}>\n {block.content.rows[0]?.cells.map((_, i) => {\n const colWidthPX =\n block.content.columnWidths[i] || DEFAULT_COLUMN_WIDTH_PX;\n const colWidthPT = colWidthPX * 0.75;\n const style = ex.registerStyle((name) => (\n <style:style style:name={name} style:family=\"table-column\">\n <style:table-column-properties\n style:column-width={`${colWidthPT}pt`}\n />\n </style:style>\n ));\n return <table:table-column table:style-name={style} key={i} />;\n })}\n {block.content.rows.map((row, rowIndex) => (\n <table:table-row key={rowIndex}>\n {row.cells.map((c, colIndex) => {\n const cell = mapTableCell(c);\n return (\n <table:table-cell\n key={`${rowIndex}-${colIndex}`}\n table:style-name={getCellStyleName(cell)}\n office:value-type=\"string\"\n style:text-align-source=\"fix\"\n style:paragraph-properties-text-align={\n cell.props.textAlignment\n }\n >\n <text:p text:style-name=\"Standard\">\n {exporter.transformInlineContent(cell.content)}\n </text:p>\n </table:table-cell>\n );\n })}\n </table:table-row>\n ))}\n </table:table>\n );\n },\n\n codeBlock: (block) => {\n const textContent = (block.content as StyledText<any>[])[0]?.text || \"\";\n\n return (\n <text:p text:style-name=\"Codeblock\">\n {...textContent.split(\"\\n\").map((line, index) => {\n return (\n <>\n {index !== 0 && <text:line-break />}\n {line}\n </>\n );\n })}\n </text:p>\n );\n },\n\n file: async (block) => {\n return (\n <>\n <text:p style:style-name=\"Standard\">\n {block.props.url ? (\n <text:a\n xlink:type=\"simple\"\n text:style-name=\"Internet_20_link\"\n office:target-frame-name=\"_top\"\n xlink:show=\"replace\"\n xlink:href={block.props.url}\n >\n <text:span text:style-name=\"Internet_20_link\">\n Open file\n </text:span>\n </text:a>\n ) : (\n \"Open file\"\n )}\n </text:p>\n {block.props.caption && (\n <text:p text:style-name=\"Caption\">{block.props.caption}</text:p>\n )}\n </>\n );\n },\n\n video: (block) => (\n <>\n <text:p style:style-name=\"Standard\">\n <text:a\n xlink:type=\"simple\"\n text:style-name=\"Internet_20_link\"\n office:target-frame-name=\"_top\"\n xlink:show=\"replace\"\n xlink:href={block.props.url}\n >\n <text:span text:style-name=\"Internet_20_link\">Open video</text:span>\n </text:a>\n </text:p>\n {block.props.caption && (\n <text:p text:style-name=\"Caption\">{block.props.caption}</text:p>\n )}\n </>\n ),\n\n audio: (block) => (\n <>\n <text:p style:style-name=\"Standard\">\n <text:a\n xlink:type=\"simple\"\n text:style-name=\"Internet_20_link\"\n office:target-frame-name=\"_top\"\n xlink:show=\"replace\"\n xlink:href={block.props.url}\n >\n <text:span text:style-name=\"Internet_20_link\">Open audio</text:span>\n </text:a>\n </text:p>\n {block.props.caption && (\n <text:p text:style-name=\"Caption\">{block.props.caption}</text:p>\n )}\n </>\n ),\n};\n","import {\n DefaultInlineContentSchema,\n InlineContentMapping,\n} from \"@blocknote/core\";\n\nexport const odtInlineContentMappingForDefaultSchema: InlineContentMapping<\n DefaultInlineContentSchema,\n any,\n React.JSX.Element,\n React.JSX.Element\n> = {\n link: (ic, exporter) => {\n const content = ic.content.map((c) => exporter.transformStyledText(c));\n\n return (\n <text:a\n xlink:type=\"simple\"\n text:style-name=\"Internet_20_link\"\n office:target-frame-name=\"_top\"\n xlink:show=\"replace\"\n xlink:href={ic.href}\n >\n {content}\n </text:a>\n );\n },\n\n text: (ic, exporter) => {\n return exporter.transformStyledText(ic);\n },\n};\n","import { DefaultStyleSchema, StyleMapping } from \"@blocknote/core\";\nexport const odtStyleMappingForDefaultSchema: StyleMapping<\n DefaultStyleSchema,\n Record<string, string>\n> = {\n bold: (val): Record<string, string> => {\n if (!val) {\n return {};\n }\n return { \"fo:font-weight\": \"bold\" };\n },\n\n italic: (val): Record<string, string> => {\n if (!val) {\n return {};\n }\n return { \"fo:font-style\": \"italic\" };\n },\n\n underline: (val): Record<string, string> => {\n if (!val) {\n return {};\n }\n return { \"style:text-underline-style\": \"solid\" };\n },\n\n strike: (val): Record<string, string> => {\n if (!val) {\n return {};\n }\n return { \"style:text-line-through-style\": \"solid\" };\n },\n\n textColor: (val, exporter): Record<string, string> => {\n if (!val) {\n return {};\n }\n const color = exporter.options.colors[val]?.text;\n if (!color) {\n return {};\n }\n return { \"fo:color\": color };\n },\n\n backgroundColor: (val, exporter): Record<string, string> => {\n if (!val) {\n return {};\n }\n const color = exporter.options.colors[val]?.background;\n if (!color) {\n return {};\n }\n return { \"fo:background-color\": color };\n },\n\n code: (val): Record<string, string> => {\n if (!val) {\n return {};\n }\n return { \"style:font-name\": \"Courier New\" };\n },\n};\n","import { odtBlockMappingForDefaultSchema } from \"./blocks.js\";\nimport { odtInlineContentMappingForDefaultSchema } from \"./inlineContent.js\";\nimport { odtStyleMappingForDefaultSchema } from \"./styles.js\";\n\nexport const odtDefaultSchemaMappings = {\n blockMapping: odtBlockMappingForDefaultSchema,\n inlineContentMapping: odtInlineContentMappingForDefaultSchema,\n styleMapping: odtStyleMappingForDefaultSchema,\n};\n","/**\n *\n * Helper functions so that we can import files both on vitest, browser and node\n * TODO: should find a way to test automatically in all environments\n */\n\nexport async function loadFileDataUrl(\n requireUrl: { default: string },\n mimeType: string,\n) {\n if (import.meta.env.NODE_ENV === \"test\") {\n const buffer = await loadFileBuffer(requireUrl);\n const fileBase64 = buffer.toString(\"base64\");\n\n const dataUrl = `data:${mimeType};base64,${fileBase64}`;\n return dataUrl;\n } else {\n // in browser, this is already a data url\n return requireUrl.default as string;\n }\n}\n\nexport async function loadFontDataUrl(requireUrl: { default: string }) {\n return loadFileDataUrl(requireUrl, \"font/ttf\");\n}\n\nexport async function loadFileBuffer(requireUrl: {\n default: string;\n}): Promise<Buffer | ArrayBuffer> {\n if (import.meta.env.NODE_ENV === \"test\") {\n // in vitest, this is the url we need to load with readfilesync\n // eslint-disable-next-line\n const fs = require(\"fs\");\n let url = requireUrl.default;\n\n if (url.startsWith(\"/@fs/\")) {\n url = url.substring(\"/@fs\".length);\n }\n // On Windows, vite/vitest may yield paths like \"/C:/...\" after removing /@fs\n // Node on Windows treats paths starting with \"/\" as relative to current drive,\n // which would produce \"C:\\C:\\...\". Strip leading slash when followed by a drive letter.\n if (/^\\/[A-Za-z]:/.test(url)) {\n url = url.slice(1);\n }\n const buffer = fs.readFileSync(url);\n return buffer;\n } else {\n // in browser, this is already a data url\n const dataUrl = requireUrl.default as string;\n // convert to buffer on browser\n const response = await fetch(dataUrl);\n const arrayBuffer = await response.arrayBuffer();\n return arrayBuffer;\n }\n}\n\n/**\n * usage:\n * \n * await loadFontDataUrl(\n await import(\"../fonts/inter/Inter_18pt-Italic.ttf\")\n );\n */\n","export async function getImageDimensions(blob: Blob) {\n if (typeof window !== \"undefined\" && import.meta.env.NODE_ENV !== \"test\") {\n const bmp = await createImageBitmap(blob);\n const { width, height } = bmp;\n bmp.close(); // free memory\n return { width, height };\n } else {\n // node or vitest\n const imageMetaFunc = (await import(\"image-meta\")).imageMeta;\n const bytes = new Uint8Array(await blob.arrayBuffer());\n const meta = imageMetaFunc(bytes);\n if (!meta.width || !meta.height) {\n throw new Error(\"Image dimensions not found\");\n }\n return { width: meta.width, height: meta.height };\n }\n}\n","export default \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\\n<office:document-styles xmlns:css3t=\\\"http://www.w3.org/TR/css3-text/\\\"\\n xmlns:grddl=\\\"http://www.w3.org/2003/g/data-view#\\\" xmlns:xhtml=\\\"http://www.w3.org/1999/xhtml\\\"\\n xmlns:dom=\\\"http://www.w3.org/2001/xml-events\\\"\\n xmlns:script=\\\"urn:oasis:names:tc:opendocument:xmlns:script:1.0\\\"\\n xmlns:form=\\\"urn:oasis:names:tc:opendocument:xmlns:form:1.0\\\"\\n xmlns:math=\\\"http://www.w3.org/1998/Math/MathML\\\"\\n xmlns:number=\\\"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\\\"\\n xmlns:field=\\\"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0\\\"\\n xmlns:meta=\\\"urn:oasis:names:tc:opendocument:xmlns:meta:1.0\\\"\\n xmlns:loext=\\\"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0\\\"\\n xmlns:officeooo=\\\"http://openoffice.org/2009/office\\\"\\n xmlns:table=\\\"urn:oasis:names:tc:opendocument:xmlns:table:1.0\\\"\\n xmlns:chart=\\\"urn:oasis:names:tc:opendocument:xmlns:chart:1.0\\\"\\n xmlns:svg=\\\"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\\\"\\n xmlns:rpt=\\\"http://openoffice.org/2005/report\\\"\\n xmlns:dr3d=\\\"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0\\\"\\n xmlns:tableooo=\\\"http://openoffice.org/2009/table\\\"\\n xmlns:draw=\\\"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\\\"\\n xmlns:of=\\\"urn:oasis:names:tc:opendocument:xmlns:of:1.2\\\"\\n xmlns:text=\\\"urn:oasis:names:tc:opendocument:xmlns:text:1.0\\\"\\n xmlns:style=\\\"urn:oasis:names:tc:opendocument:xmlns:style:1.0\\\"\\n xmlns:dc=\\\"http://purl.org/dc/elements/1.1/\\\"\\n xmlns:calcext=\\\"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0\\\"\\n xmlns:oooc=\\\"http://openoffice.org/2004/calc\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"\\n xmlns:drawooo=\\\"http://openoffice.org/2010/draw\\\" xmlns:ooow=\\\"http://openoffice.org/2004/writer\\\"\\n xmlns:fo=\\\"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\\\"\\n xmlns:ooo=\\\"http://openoffice.org/2004/office\\\"\\n xmlns:office=\\\"urn:oasis:names:tc:opendocument:xmlns:office:1.0\\\" office:version=\\\"1.3\\\">\\n <office:font-face-decls>\\n <style:font-face style:name=\\\"Geist Mono\\\" svg:font-family=\\\"Geist Mono\\\" />\\n <style:font-face style:name=\\\"Inter 18pt\\\" svg:font-family=\\\"Inter 18pt\\\"\\n style:font-pitch=\\\"variable\\\" />\\n <style:font-face style:name=\\\"Liberation Serif\\\"\\n svg:font-family=\\\"&apos;Liberation Serif&apos;\\\" style:font-family-generic=\\\"roman\\\"\\n style:font-pitch=\\\"variable\\\" />\\n <style:font-face style:name=\\\"OpenSymbol\\\" svg:font-family=\\\"OpenSymbol\\\"\\n style:font-charset=\\\"x-symbol\\\" />\\n <style:font-face style:name=\\\"PingFang SC\\\" svg:font-family=\\\"&apos;PingFang SC&apos;\\\"\\n style:font-family-generic=\\\"system\\\" style:font-pitch=\\\"variable\\\" />\\n <style:font-face style:name=\\\"Tahoma\\\" svg:font-family=\\\"Tahoma\\\"\\n style:font-family-generic=\\\"system\\\" style:font-pitch=\\\"variable\\\" />\\n <style:font-face style:name=\\\"Times New Roman (Body CS)\\\"\\n svg:font-family=\\\"&apos;Times New Roman (Body CS)&apos;\\\"\\n style:font-family-generic=\\\"system\\\" style:font-pitch=\\\"variable\\\" />\\n </office:font-face-decls>\\n <office:styles>\\n <draw:gradient draw:name=\\\"Gradient_20_1\\\" draw:display-name=\\\"Gradient 1\\\" draw:style=\\\"linear\\\"\\n draw:start-color=\\\"#000000\\\" draw:end-color=\\\"#ffffff\\\" draw:start-intensity=\\\"100%\\\"\\n draw:end-intensity=\\\"100%\\\" draw:angle=\\\"0deg\\\" draw:border=\\\"0%\\\">\\n <loext:gradient-stop svg:offset=\\\"0\\\" loext:color-type=\\\"rgb\\\" loext:color-value=\\\"#000000\\\" />\\n <loext:gradient-stop svg:offset=\\\"1\\\" loext:color-type=\\\"rgb\\\" loext:color-value=\\\"#ffffff\\\" />\\n </draw:gradient>\\n <draw:hatch draw:name=\\\"Red_20_90_20_Degrees_20_Crossed_20_1\\\"\\n draw:display-name=\\\"Red 90 Degrees Crossed 1\\\" draw:style=\\\"single\\\" draw:color=\\\"#3465a4\\\"\\n draw:distance=\\\"0.0079in\\\" draw:rotation=\\\"0\\\" />\\n <style:default-style style:family=\\\"graphic\\\">\\n <style:graphic-properties svg:stroke-color=\\\"#3465a4\\\" draw:fill-color=\\\"#729fcf\\\"\\n fo:wrap-option=\\\"no-wrap\\\" draw:shadow-offset-x=\\\"0.1181in\\\"\\n draw:shadow-offset-y=\\\"0.1181in\\\" draw:start-line-spacing-horizontal=\\\"0.1114in\\\"\\n draw:start-line-spacing-vertical=\\\"0.1114in\\\"\\n draw:end-line-spacing-horizontal=\\\"0.1114in\\\"\\n draw:end-line-spacing-vertical=\\\"0.1114in\\\" style:flow-with-text=\\\"false\\\" />\\n <style:paragraph-properties style:text-autospace=\\\"ideograph-alpha\\\"\\n style:line-break=\\\"strict\\\" loext:tab-stop-distance=\\\"0in\\\" style:writing-mode=\\\"lr-tb\\\"\\n style:font-independent-line-spacing=\\\"false\\\">\\n <style:tab-stops />\\n </style:paragraph-properties>\\n <style:text-properties style:font-name=\\\"Inter 18pt\\\"\\n fo:font-family=\\\"Inter 18pt\\\" style:font-style-name=\\\"Regular\\\"\\n style:font-pitch=\\\"variable\\\" style:font-name-complex=\\\"Times New Roman (Body CS)\\\"\\n style:font-family-complex=\\\"&apos;Times New Roman (Body CS)&apos;\\\"\\n style:font-family-generic-complex=\\\"system\\\" style:font-pitch-complex=\\\"variable\\\"\\n style:use-window-font-color=\\\"true\\\" loext:opacity=\\\"0%\\\"\\n fo:font-size=\\\"12pt\\\" fo:language=\\\"en\\\" fo:country=\\\"NL\\\"\\n style:letter-kerning=\\\"true\\\" style:font-size-asian=\\\"12pt\\\"\\n style:language-asian=\\\"en\\\" style:country-asian=\\\"GB\\\"\\n style:font-size-complex=\\\"12pt\\\" style:language-complex=\\\"ar\\\"\\n style:country-complex=\\\"SA\\\" />\\n </style:default-style>\\n <style:default-style style:family=\\\"paragraph\\\">\\n <style:paragraph-properties fo:hyphenation-ladder-count=\\\"no-limit\\\"\\n fo:hyphenation-keep=\\\"auto\\\" loext:hyphenation-keep-type=\\\"column\\\"\\n style:text-autospace=\\\"ideograph-alpha\\\" style:punctuation-wrap=\\\"hanging\\\"\\n style:line-break=\\\"strict\\\" style:tab-stop-distance=\\\"0.139in\\\"\\n style:writing-mode=\\\"page\\\" />\\n <style:text-properties style:font-name=\\\"Inter 18pt\\\"\\n fo:font-family=\\\"Inter 18pt\\\" style:font-style-name=\\\"Regular\\\"\\n style:font-pitch=\\\"variable\\\" style:font-name-complex=\\\"Times New Roman (Body CS)\\\"\\n style:font-family-complex=\\\"&apos;Times New Roman (Body CS)&apos;\\\"\\n style:font-family-generic-complex=\\\"system\\\" style:font-pitch-complex=\\\"variable\\\"\\n style:use-window-font-color=\\\"true\\\" loext:opacity=\\\"0%\\\"\\n fo:font-size=\\\"12pt\\\" fo:language=\\\"en\\\" fo:country=\\\"NL\\\"\\n style:letter-kerning=\\\"true\\\" style:font-size-asian=\\\"12pt\\\"\\n style:language-asian=\\\"en\\\" style:country-asian=\\\"GB\\\"\\n style:font-size-complex=\\\"12pt\\\" style:language-complex=\\\"ar\\\"\\n style:country-complex=\\\"SA\\\" fo:hyphenate=\\\"false\\\" fo:hyphenation-remain-char-count=\\\"2\\\"\\n fo:hyphenation-push-char-count=\\\"2\\\" loext:hyphenation-no-caps=\\\"false\\\"\\n loext:hyphenation-no-last-word=\\\"false\\\" loext:hyphenation-word-char-count=\\\"5\\\"\\n loext:hyphenation-zone=\\\"no-limit\\\" />\\n </style:default-style>\\n <style:default-style style:family=\\\"table\\\">\\n <style:table-properties table:border-model=\\\"collapsing\\\" />\\n </style:default-style>\\n <style:default-style style:family=\\\"table-row\\\">\\n <style:table-row-properties fo:keep-together=\\\"auto\\\" />\\n </style:default-style>\\n <style:style style:name=\\\"Standard\\\" style:family=\\\"paragraph\\\" style:class=\\\"text\\\">\\n <style:paragraph-properties fo:margin-top=\\\"0.0311in\\\" fo:margin-bottom=\\\"0.0311in\\\"\\n style:contextual-spacing=\\\"false\\\" fo:line-height=\\\"150%\\\" fo:text-align=\\\"start\\\"\\n style:justify-single-word=\\\"false\\\" fo:orphans=\\\"2\\\" fo:widows=\\\"2\\\"\\n style:writing-mode=\\\"lr-tb\\\" />\\n <style:text-properties style:font-name=\\\"Inter 18pt\\\"\\n fo:font-family=\\\"Inter 18pt\\\" style:font-style-name=\\\"Regular\\\"\\n style:font-pitch=\\\"variable\\\" style:font-name-complex=\\\"Times New Roman (Body CS)\\\"\\n style:font-family-complex=\\\"&apos;Times New Roman (Body CS)&apos;\\\"\\n style:font-family-generic-complex=\\\"system\\\" style:font-pitch-complex=\\\"variable\\\" />\\n </style:style>\\n <style:style style:name=\\\"Heading\\\" style:family=\\\"paragraph\\\"\\n style:parent-style-name=\\\"Standard\\\" style:next-style-name=\\\"Text_20_body\\\"\\n style:class=\\\"text\\\">\\n <style:paragraph-properties fo:margin-top=\\\"0.1665in\\\" fo:margin-bottom=\\\"0.0835in\\\"\\n style:contextual-spacing=\\\"false\\\" fo:keep-with-next=\\\"always\\\" />\\n <style:text-properties style:font-family-generic=\\\"swiss\\\"\\n style:font-pitch=\\\"variable\\\" fo:font-size=\\\"14pt\\\" style:font-name-asian=\\\"PingFang SC\\\"\\n style:font-family-asian=\\\"&apos;PingFang SC&apos;\\\"\\n style:font-family-generic-asian=\\\"system\\\" style:font-pitch-asian=\\\"variable\\\"\\n style:font-size-asian=\\\"14pt\\\" style:font-name-complex=\\\"Arial Unicode MS1\\\"\\n style:font-family-complex=\\\"&apos;Arial Unicode MS&apos;\\\"\\n style:font-family-generic-complex=\\\"system\\\" style:font-pitch-complex=\\\"variable\\\"\\n style:font-size-complex=\\\"14pt\\\" />\\n </style:style>\\n <style:style style:name=\\\"Text_20_body\\\" style:display-name=\\\"Text body\\\"\\n style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\" style:class=\\\"text\\\">\\n <style:paragraph-properties fo:margin-top=\\\"0in\\\" fo:margin-bottom=\\\"0.0972in\\\"\\n style:contextual-spacing=\\\"false\\\" fo:line-height=\\\"115%\\\" />\\n </style:style>\\n <style:style style:name=\\\"List\\\" style:family=\\\"paragraph\\\"\\n style:parent-style-name=\\\"Text_20_body\\\" style:class=\\\"list\\\">\\n <style:text-properties style:font-size-asian=\\\"12pt\\\"\\n style:font-name-complex=\\\"Arial Unicode MS\\\"\\n style:font-family-complex=\\\"&apos;Arial Unicode MS&apos;\\\"\\n style:font-family-generic-complex=\\\"swiss\\\" />\\n </style:style>\\n <style:style style:name=\\\"Caption\\\" style:family=\\\"paragraph\\\"\\n style:parent-style-name=\\\"Standard\\\" style:next-style-name=\\\"Standard\\\" style:class=\\\"extra\\\">\\n <style:paragraph-properties fo:margin-top=\\\"0in\\\" fo:margin-bottom=\\\"0.139in\\\"\\n style:contextual-spacing=\\\"false\\\" fo:line-height=\\\"100%\\\" />\\n <style:text-properties fo:color=\\\"#0e2841\\\" loext:opacity=\\\"100%\\\" fo:font-size=\\\"9pt\\\"\\n fo:font-style=\\\"italic\\\" style:font-size-asian=\\\"9pt\\\" style:font-style-asian=\\\"italic\\\"\\n style:font-size-complex=\\\"9pt\\\" style:font-style-complex=\\\"italic\\\">\\n <loext:char-complex-color loext:theme-type=\\\"dark2\\\" loext:color-type=\\\"theme\\\" />\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Index\\\" style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\"\\n style:class=\\\"index\\\">\\n <style:paragraph-properties text:number-lines=\\\"false\\\" text:line-number=\\\"0\\\" />\\n <style:text-properties style:font-size-asian=\\\"12pt\\\"\\n style:font-name-complex=\\\"Arial Unicode MS\\\"\\n style:font-family-complex=\\\"&apos;Arial Unicode MS&apos;\\\"\\n style:font-family-generic-complex=\\\"swiss\\\" />\\n </style:style>\\n <style:style style:name=\\\"Heading_20_1\\\" style:display-name=\\\"Heading 1\\\"\\n style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\"\\n style:next-style-name=\\\"Standard\\\" loext:linked-style-name=\\\"Heading_20_1_20_Char\\\"\\n style:default-outline-level=\\\"1\\\" style:list-style-name=\\\"\\\" style:class=\\\"text\\\">\\n <style:text-properties fo:font-size=\\\"24pt\\\" fo:font-weight=\\\"bold\\\"\\n style:font-size-asian=\\\"24pt\\\" style:font-weight-asian=\\\"bold\\\"\\n style:font-size-complex=\\\"24pt\\\" />\\n </style:style>\\n <style:style style:name=\\\"Heading_20_2\\\" style:display-name=\\\"Heading 2\\\"\\n style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\"\\n style:next-style-name=\\\"Standard\\\" loext:linked-style-name=\\\"Heading_20_2_20_Char\\\"\\n style:default-outline-level=\\\"2\\\" style:list-style-name=\\\"\\\" style:class=\\\"text\\\">\\n <style:text-properties fo:font-size=\\\"18pt\\\" fo:font-weight=\\\"bold\\\"\\n style:font-size-asian=\\\"18pt\\\" style:font-weight-asian=\\\"bold\\\"\\n style:font-size-complex=\\\"18pt\\\" />\\n </style:style>\\n <style:style style:name=\\\"Heading_20_3\\\" style:display-name=\\\"Heading 3\\\"\\n style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\"\\n style:next-style-name=\\\"Standard\\\" loext:linked-style-name=\\\"Heading_20_3_20_Char\\\"\\n style:default-outline-level=\\\"3\\\" style:list-style-name=\\\"\\\" style:class=\\\"text\\\">\\n <style:text-properties fo:font-size=\\\"14pt\\\" fo:font-weight=\\\"bold\\\"\\n style:font-size-asian=\\\"14pt\\\" style:font-weight-asian=\\\"bold\\\"\\n style:font-size-complex=\\\"14pt\\\" />\\n </style:style>\\n <style:style style:name=\\\"Heading_20_4\\\" style:display-name=\\\"Heading 4\\\"\\n style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\"\\n style:next-style-name=\\\"Standard\\\" loext:linked-style-name=\\\"Heading_20_4_20_Char\\\"\\n style:default-outline-level=\\\"4\\\" style:list-style-name=\\\"\\\" style:class=\\\"text\\\">\\n <style:paragraph-properties fo:margin-top=\\\"0.0555in\\\" fo:margin-bottom=\\\"0.028in\\\"\\n style:contextual-spacing=\\\"false\\\" fo:keep-together=\\\"always\\\"\\n fo:keep-with-next=\\\"always\\\" />\\n <style:text-properties fo:color=\\\"#0f4761\\\" loext:opacity=\\\"100%\\\" fo:font-style=\\\"italic\\\"\\n style:font-name-asian=\\\"F2\\\" style:font-family-generic-asian=\\\"system\\\"\\n style:font-pitch-asian=\\\"variable\\\" style:font-style-asian=\\\"italic\\\"\\n style:font-name-complex=\\\"F2\\\" style:font-family-generic-complex=\\\"system\\\"\\n style:font-pitch-complex=\\\"variable\\\" style:font-style-complex=\\\"italic\\\">\\n <loext:char-complex-color loext:theme-type=\\\"accent1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"shade\\\" loext:value=\\\"2509\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Heading_20_5\\\" style:display-name=\\\"Heading 5\\\"\\n style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\"\\n style:next-style-name=\\\"Standard\\\" loext:linked-style-name=\\\"Heading_20_5_20_Char\\\"\\n style:default-outline-level=\\\"5\\\" style:list-style-name=\\\"\\\" style:class=\\\"text\\\">\\n <style:paragraph-properties fo:margin-top=\\\"0.0555in\\\" fo:margin-bottom=\\\"0.028in\\\"\\n style:contextual-spacing=\\\"false\\\" fo:keep-together=\\\"always\\\"\\n fo:keep-with-next=\\\"always\\\" />\\n <style:text-properties fo:color=\\\"#0f4761\\\" loext:opacity=\\\"100%\\\"\\n style:font-name-asian=\\\"F2\\\" style:font-family-generic-asian=\\\"system\\\"\\n style:font-pitch-asian=\\\"variable\\\" style:font-name-complex=\\\"F2\\\"\\n style:font-family-generic-complex=\\\"system\\\" style:font-pitch-complex=\\\"variable\\\">\\n <loext:char-complex-color loext:theme-type=\\\"accent1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"shade\\\" loext:value=\\\"2509\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Heading_20_6\\\" style:display-name=\\\"Heading 6\\\"\\n style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\"\\n style:next-style-name=\\\"Standard\\\" loext:linked-style-name=\\\"Heading_20_6_20_Char\\\"\\n style:default-outline-level=\\\"6\\\" style:list-style-name=\\\"\\\" style:class=\\\"text\\\">\\n <style:paragraph-properties fo:margin-top=\\\"0.028in\\\" fo:margin-bottom=\\\"0in\\\"\\n style:contextual-spacing=\\\"false\\\" fo:keep-together=\\\"always\\\"\\n fo:keep-with-next=\\\"always\\\" />\\n <style:text-properties fo:color=\\\"#595959\\\" loext:opacity=\\\"100%\\\" fo:font-style=\\\"italic\\\"\\n style:font-name-asian=\\\"F2\\\" style:font-family-generic-asian=\\\"system\\\"\\n style:font-pitch-asian=\\\"variable\\\" style:font-style-asian=\\\"italic\\\"\\n style:font-name-complex=\\\"F2\\\" style:font-family-generic-complex=\\\"system\\\"\\n style:font-pitch-complex=\\\"variable\\\" style:font-style-complex=\\\"italic\\\">\\n <loext:char-complex-color loext:theme-type=\\\"dark1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"tint\\\" loext:value=\\\"3490\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Heading_20_7\\\" style:display-name=\\\"Heading 7\\\"\\n style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\"\\n style:next-style-name=\\\"Standard\\\" loext:linked-style-name=\\\"Heading_20_7_20_Char\\\"\\n style:default-outline-level=\\\"7\\\" style:list-style-name=\\\"\\\" style:class=\\\"text\\\">\\n <style:paragraph-properties fo:margin-top=\\\"0.028in\\\" fo:margin-bottom=\\\"0in\\\"\\n style:contextual-spacing=\\\"false\\\" fo:keep-together=\\\"always\\\"\\n fo:keep-with-next=\\\"always\\\" />\\n <style:text-properties fo:color=\\\"#595959\\\" loext:opacity=\\\"100%\\\"\\n style:font-name-asian=\\\"F2\\\" style:font-family-generic-asian=\\\"system\\\"\\n style:font-pitch-asian=\\\"variable\\\" style:font-name-complex=\\\"F2\\\"\\n style:font-family-generic-complex=\\\"system\\\" style:font-pitch-complex=\\\"variable\\\">\\n <loext:char-complex-color loext:theme-type=\\\"dark1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"tint\\\" loext:value=\\\"3490\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Heading_20_8\\\" style:display-name=\\\"Heading 8\\\"\\n style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\"\\n style:next-style-name=\\\"Standard\\\" loext:linked-style-name=\\\"Heading_20_8_20_Char\\\"\\n style:default-outline-level=\\\"8\\\" style:list-style-name=\\\"\\\" style:class=\\\"text\\\">\\n <style:paragraph-properties fo:margin-top=\\\"0.0311in\\\" fo:margin-bottom=\\\"0in\\\"\\n style:contextual-spacing=\\\"false\\\" fo:keep-together=\\\"always\\\"\\n fo:keep-with-next=\\\"always\\\" />\\n <style:text-properties fo:color=\\\"#272727\\\" loext:opacity=\\\"100%\\\" fo:font-style=\\\"italic\\\"\\n style:font-name-asian=\\\"F2\\\" style:font-family-generic-asian=\\\"system\\\"\\n style:font-pitch-asian=\\\"variable\\\" style:font-style-asian=\\\"italic\\\"\\n style:font-name-complex=\\\"F2\\\" style:font-family-generic-complex=\\\"system\\\"\\n style:font-pitch-complex=\\\"variable\\\" style:font-style-complex=\\\"italic\\\">\\n <loext:char-complex-color loext:theme-type=\\\"dark1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"tint\\\" loext:value=\\\"1529\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Heading_20_9\\\" style:display-name=\\\"Heading 9\\\"\\n style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\"\\n style:next-style-name=\\\"Standard\\\" loext:linked-style-name=\\\"Heading_20_9_20_Char\\\"\\n style:default-outline-level=\\\"9\\\" style:list-style-name=\\\"\\\" style:class=\\\"text\\\">\\n <style:paragraph-properties fo:margin-top=\\\"0.0311in\\\" fo:margin-bottom=\\\"0in\\\"\\n style:contextual-spacing=\\\"false\\\" fo:keep-together=\\\"always\\\"\\n fo:keep-with-next=\\\"always\\\" />\\n <style:text-properties fo:color=\\\"#272727\\\" loext:opacity=\\\"100%\\\"\\n style:font-name-asian=\\\"F2\\\" style:font-family-generic-asian=\\\"system\\\"\\n style:font-pitch-asian=\\\"variable\\\" style:font-name-complex=\\\"F2\\\"\\n style:font-family-generic-complex=\\\"system\\\" style:font-pitch-complex=\\\"variable\\\">\\n <loext:char-complex-color loext:theme-type=\\\"dark1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"tint\\\" loext:value=\\\"1529\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Title\\\" style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\"\\n style:next-style-name=\\\"Standard\\\" loext:linked-style-name=\\\"Title_20_Char\\\"\\n style:class=\\\"chapter\\\">\\n <style:paragraph-properties fo:margin-top=\\\"0.0311in\\\" fo:margin-bottom=\\\"0.0555in\\\"\\n style:contextual-spacing=\\\"true\\\" fo:line-height=\\\"100%\\\" />\\n <style:text-properties\\n fo:font-size=\\\"28pt\\\" fo:letter-spacing=\\\"-0.0071in\\\" style:letter-kerning=\\\"true\\\"\\n style:font-name-asian=\\\"F2\\\" style:font-family-generic-asian=\\\"system\\\"\\n style:font-pitch-asian=\\\"variable\\\" style:font-size-asian=\\\"28pt\\\"\\n style:font-name-complex=\\\"F2\\\" style:font-family-generic-complex=\\\"system\\\"\\n style:font-pitch-complex=\\\"variable\\\" style:font-size-complex=\\\"28pt\\\" />\\n </style:style>\\n <style:style style:name=\\\"Subtitle\\\" style:family=\\\"paragraph\\\"\\n style:parent-style-name=\\\"Standard\\\" style:next-style-name=\\\"Standard\\\"\\n loext:linked-style-name=\\\"Subtitle_20_Char\\\" style:class=\\\"chapter\\\">\\n <style:text-properties fo:color=\\\"#595959\\\" loext:opacity=\\\"100%\\\" fo:font-size=\\\"14pt\\\"\\n fo:letter-spacing=\\\"0.0102in\\\" style:font-name-asian=\\\"F2\\\"\\n style:font-family-generic-asian=\\\"system\\\" style:font-pitch-asian=\\\"variable\\\"\\n style:font-size-asian=\\\"14pt\\\" style:font-name-complex=\\\"F2\\\"\\n style:font-family-generic-complex=\\\"system\\\" style:font-pitch-complex=\\\"variable\\\"\\n style:font-size-complex=\\\"14pt\\\">\\n <loext:char-complex-color loext:theme-type=\\\"dark1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"tint\\\" loext:value=\\\"3490\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Quote\\\" style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\"\\n style:next-style-name=\\\"Standard\\\" loext:linked-style-name=\\\"Quote_20_Char\\\">\\n <style:paragraph-properties fo:margin-top=\\\"0.111in\\\" fo:margin-bottom=\\\"0.0311in\\\"\\n style:contextual-spacing=\\\"false\\\" fo:text-align=\\\"center\\\"\\n style:justify-single-word=\\\"false\\\" />\\n <style:text-properties fo:color=\\\"#404040\\\" loext:opacity=\\\"100%\\\" fo:font-style=\\\"italic\\\"\\n style:font-style-asian=\\\"italic\\\" style:font-style-complex=\\\"italic\\\">\\n <loext:char-complex-color loext:theme-type=\\\"dark1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"tint\\\" loext:value=\\\"2509\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"List_20_Paragraph\\\" style:display-name=\\\"List Paragraph\\\"\\n style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\">\\n <style:paragraph-properties fo:margin-left=\\\"0.5in\\\" fo:margin-top=\\\"0.0311in\\\"\\n fo:margin-bottom=\\\"0.0311in\\\" style:contextual-spacing=\\\"true\\\" />\\n </style:style>\\n <style:style style:name=\\\"Intense_20_Quote\\\" style:display-name=\\\"Intense Quote\\\"\\n style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\"\\n style:next-style-name=\\\"Standard\\\" loext:linked-style-name=\\\"Intense_20_Quote_20_Char\\\">\\n <style:paragraph-properties fo:margin-left=\\\"0.6in\\\" fo:margin-right=\\\"0.6in\\\"\\n fo:margin-top=\\\"0.25in\\\" fo:margin-bottom=\\\"0.25in\\\" style:contextual-spacing=\\\"false\\\"\\n fo:text-align=\\\"center\\\" style:justify-single-word=\\\"false\\\" fo:padding-left=\\\"0in\\\"\\n fo:padding-right=\\\"0in\\\" fo:padding-top=\\\"0.139in\\\" fo:padding-bottom=\\\"0.139in\\\"\\n fo:border-left=\\\"none\\\" fo:border-right=\\\"none\\\" fo:border-top=\\\"0.51pt solid #0f4761\\\"\\n fo:border-bottom=\\\"0.51pt solid #0f4761\\\" />\\n <style:text-properties fo:color=\\\"#0f4761\\\" loext:opacity=\\\"100%\\\" fo:font-style=\\\"italic\\\"\\n style:font-style-asian=\\\"italic\\\" style:font-style-complex=\\\"italic\\\">\\n <loext:char-complex-color loext:theme-type=\\\"accent1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"shade\\\" loext:value=\\\"2509\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"PageBreak\\\" style:family=\\\"paragraph\\\"\\n style:parent-style-name=\\\"Standard\\\">\\n <style:paragraph-properties fo:break-before=\\\"page\\\" />\\n </style:style>\\n <style:style style:name=\\\"Codeblock\\\" style:family=\\\"paragraph\\\"\\n style:parent-style-name=\\\"Standard\\\">\\n <loext:graphic-properties draw:fill=\\\"solid\\\" draw:fill-color=\\\"#161616\\\" />\\n <style:paragraph-properties fo:line-height=\\\"100%\\\" fo:background-color=\\\"#161616\\\" />\\n <style:text-properties fo:color=\\\"#e1e4e8\\\" loext:opacity=\\\"100%\\\"\\n style:font-name=\\\"Geist Mono\\\"\\n fo:font-family=\\\"Geist Mono\\\" />\\n </style:style>\\n <style:style style:name=\\\"Heading_20_1_20_Char\\\" style:display-name=\\\"Heading 1 Char\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\"\\n loext:linked-style-name=\\\"Heading_20_1\\\">\\n <style:text-properties fo:font-size=\\\"20pt\\\"\\n style:font-size-asian=\\\"20pt\\\"\\n style:font-size-complex=\\\"20pt\\\" />\\n </style:style>\\n <style:style style:name=\\\"Heading_20_2_20_Char\\\" style:display-name=\\\"Heading 2 Char\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\"\\n loext:linked-style-name=\\\"Heading_20_2\\\">\\n <style:text-properties fo:color=\\\"#0f4761\\\" loext:opacity=\\\"100%\\\" fo:font-size=\\\"16pt\\\"\\n style:font-size-asian=\\\"16pt\\\" style:font-size-complex=\\\"16pt\\\">\\n <loext:char-complex-color loext:theme-type=\\\"accent1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"shade\\\" loext:value=\\\"2509\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Heading_20_3_20_Char\\\" style:display-name=\\\"Heading 3 Char\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\"\\n loext:linked-style-name=\\\"Heading_20_3\\\">\\n <style:text-properties fo:color=\\\"#0f4761\\\" loext:opacity=\\\"100%\\\" fo:font-size=\\\"14pt\\\"\\n style:font-name-asian=\\\"F2\\\" style:font-family-generic-asian=\\\"system\\\"\\n style:font-pitch-asian=\\\"variable\\\" style:font-size-asian=\\\"14pt\\\"\\n style:font-name-complex=\\\"F2\\\" style:font-family-generic-complex=\\\"system\\\"\\n style:font-pitch-complex=\\\"variable\\\" style:font-size-complex=\\\"14pt\\\">\\n <loext:char-complex-color loext:theme-type=\\\"accent1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"shade\\\" loext:value=\\\"2509\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Heading_20_4_20_Char\\\" style:display-name=\\\"Heading 4 Char\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\"\\n loext:linked-style-name=\\\"Heading_20_4\\\">\\n <style:text-properties fo:color=\\\"#0f4761\\\" loext:opacity=\\\"100%\\\" fo:font-style=\\\"italic\\\"\\n style:font-name-asian=\\\"F2\\\" style:font-family-generic-asian=\\\"system\\\"\\n style:font-pitch-asian=\\\"variable\\\" style:font-style-asian=\\\"italic\\\"\\n style:font-name-complex=\\\"F2\\\" style:font-family-generic-complex=\\\"system\\\"\\n style:font-pitch-complex=\\\"variable\\\" style:font-style-complex=\\\"italic\\\">\\n <loext:char-complex-color loext:theme-type=\\\"accent1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"shade\\\" loext:value=\\\"2509\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Heading_20_5_20_Char\\\" style:display-name=\\\"Heading 5 Char\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\"\\n loext:linked-style-name=\\\"Heading_20_5\\\">\\n <style:text-properties fo:color=\\\"#0f4761\\\" loext:opacity=\\\"100%\\\"\\n style:font-name-asian=\\\"F2\\\" style:font-family-generic-asian=\\\"system\\\"\\n style:font-pitch-asian=\\\"variable\\\" style:font-name-complex=\\\"F2\\\"\\n style:font-family-generic-complex=\\\"system\\\" style:font-pitch-complex=\\\"variable\\\">\\n <loext:char-complex-color loext:theme-type=\\\"accent1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"shade\\\" loext:value=\\\"2509\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Heading_20_6_20_Char\\\" style:display-name=\\\"Heading 6 Char\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\"\\n loext:linked-style-name=\\\"Heading_20_6\\\">\\n <style:text-properties fo:color=\\\"#595959\\\" loext:opacity=\\\"100%\\\" fo:font-style=\\\"italic\\\"\\n style:font-name-asian=\\\"F2\\\" style:font-family-generic-asian=\\\"system\\\"\\n style:font-pitch-asian=\\\"variable\\\" style:font-style-asian=\\\"italic\\\"\\n style:font-name-complex=\\\"F2\\\" style:font-family-generic-complex=\\\"system\\\"\\n style:font-pitch-complex=\\\"variable\\\" style:font-style-complex=\\\"italic\\\">\\n <loext:char-complex-color loext:theme-type=\\\"dark1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"tint\\\" loext:value=\\\"3490\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Heading_20_7_20_Char\\\" style:display-name=\\\"Heading 7 Char\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\"\\n loext:linked-style-name=\\\"Heading_20_7\\\">\\n <style:text-properties fo:color=\\\"#595959\\\" loext:opacity=\\\"100%\\\"\\n style:font-name-asian=\\\"F2\\\" style:font-family-generic-asian=\\\"system\\\"\\n style:font-pitch-asian=\\\"variable\\\" style:font-name-complex=\\\"F2\\\"\\n style:font-family-generic-complex=\\\"system\\\" style:font-pitch-complex=\\\"variable\\\">\\n <loext:char-complex-color loext:theme-type=\\\"dark1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"tint\\\" loext:value=\\\"3490\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Heading_20_8_20_Char\\\" style:display-name=\\\"Heading 8 Char\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\"\\n loext:linked-style-name=\\\"Heading_20_8\\\">\\n <style:text-properties fo:color=\\\"#272727\\\" loext:opacity=\\\"100%\\\" fo:font-style=\\\"italic\\\"\\n style:font-name-asian=\\\"F2\\\" style:font-family-generic-asian=\\\"system\\\"\\n style:font-pitch-asian=\\\"variable\\\" style:font-style-asian=\\\"italic\\\"\\n style:font-name-complex=\\\"F2\\\" style:font-family-generic-complex=\\\"system\\\"\\n style:font-pitch-complex=\\\"variable\\\" style:font-style-complex=\\\"italic\\\">\\n <loext:char-complex-color loext:theme-type=\\\"dark1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"tint\\\" loext:value=\\\"1529\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Heading_20_9_20_Char\\\" style:display-name=\\\"Heading 9 Char\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\"\\n loext:linked-style-name=\\\"Heading_20_9\\\">\\n <style:text-properties fo:color=\\\"#272727\\\" loext:opacity=\\\"100%\\\"\\n style:font-name-asian=\\\"F2\\\" style:font-family-generic-asian=\\\"system\\\"\\n style:font-pitch-asian=\\\"variable\\\" style:font-name-complex=\\\"F2\\\"\\n style:font-family-generic-complex=\\\"system\\\" style:font-pitch-complex=\\\"variable\\\">\\n <loext:char-complex-color loext:theme-type=\\\"dark1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"tint\\\" loext:value=\\\"1529\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Title_20_Char\\\" style:display-name=\\\"Title Char\\\" style:family=\\\"text\\\"\\n style:parent-style-name=\\\"Standard\\\" loext:linked-style-name=\\\"Title\\\">\\n <style:text-properties style:font-name=\\\"Inter 18pt\\\" fo:font-size=\\\"28pt\\\"\\n fo:letter-spacing=\\\"-0.0071in\\\"\\n style:letter-kerning=\\\"true\\\"\\n style:font-size-asian=\\\"28pt\\\"\\n style:font-size-complex=\\\"28pt\\\" />\\n </style:style>\\n <style:style style:name=\\\"Subtitle_20_Char\\\" style:display-name=\\\"Subtitle Char\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\"\\n loext:linked-style-name=\\\"Subtitle\\\">\\n <style:text-properties fo:color=\\\"#595959\\\" loext:opacity=\\\"100%\\\" fo:font-size=\\\"14pt\\\"\\n fo:letter-spacing=\\\"0.0102in\\\" style:font-name-asian=\\\"F2\\\"\\n style:font-family-generic-asian=\\\"system\\\" style:font-pitch-asian=\\\"variable\\\"\\n style:font-size-asian=\\\"14pt\\\" style:font-name-complex=\\\"F2\\\"\\n style:font-family-generic-complex=\\\"system\\\" style:font-pitch-complex=\\\"variable\\\"\\n style:font-size-complex=\\\"14pt\\\">\\n <loext:char-complex-color loext:theme-type=\\\"dark1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"tint\\\" loext:value=\\\"3490\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Quote_20_Char\\\" style:display-name=\\\"Quote Char\\\" style:family=\\\"text\\\"\\n style:parent-style-name=\\\"Standard\\\" loext:linked-style-name=\\\"Quote\\\">\\n <style:text-properties fo:color=\\\"#404040\\\" loext:opacity=\\\"100%\\\" fo:font-style=\\\"italic\\\"\\n style:font-style-asian=\\\"italic\\\" style:font-style-complex=\\\"italic\\\">\\n <loext:char-complex-color loext:theme-type=\\\"dark1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"tint\\\" loext:value=\\\"2509\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Intense_20_Emphasis\\\" style:display-name=\\\"Intense Emphasis\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\">\\n <style:text-properties fo:color=\\\"#0f4761\\\" loext:opacity=\\\"100%\\\" fo:font-style=\\\"italic\\\"\\n style:font-style-asian=\\\"italic\\\" style:font-style-complex=\\\"italic\\\">\\n <loext:char-complex-color loext:theme-type=\\\"accent1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"shade\\\" loext:value=\\\"2509\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Intense_20_Quote_20_Char\\\" style:display-name=\\\"Intense Quote Char\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\"\\n loext:linked-style-name=\\\"Intense_20_Quote\\\">\\n <style:text-properties fo:color=\\\"#0f4761\\\" loext:opacity=\\\"100%\\\" fo:font-style=\\\"italic\\\"\\n style:font-style-asian=\\\"italic\\\" style:font-style-complex=\\\"italic\\\">\\n <loext:char-complex-color loext:theme-type=\\\"accent1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"shade\\\" loext:value=\\\"2509\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Intense_20_Reference\\\" style:display-name=\\\"Intense Reference\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\">\\n <style:text-properties fo:font-variant=\\\"small-caps\\\" fo:color=\\\"#0f4761\\\"\\n loext:opacity=\\\"100%\\\" fo:letter-spacing=\\\"0.0035in\\\" fo:font-weight=\\\"bold\\\"\\n style:font-weight-asian=\\\"bold\\\" style:font-weight-complex=\\\"bold\\\">\\n <loext:char-complex-color loext:theme-type=\\\"accent1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"shade\\\" loext:value=\\\"2509\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Internet_20_link\\\" style:display-name=\\\"Internet link\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\">\\n <style:text-properties style:font-name=\\\"Inter 18pt\\\" style:font-name-asian=\\\"Inter 18pt\\\"\\n style:font-name-complex=\\\"Times New Roman (Body CS)\\\" fo:color=\\\"#0000ef\\\"\\n loext:opacity=\\\"100%\\\"\\n style:text-underline-type=\\\"single\\\" style:text-underline-style=\\\"solid\\\"\\n style:text-underline-width=\\\"auto\\\" style:text-underline-mode=\\\"continuous\\\"\\n style:text-underline-color=\\\"font-color\\\" />\\n </style:style>\\n <style:style style:name=\\\"Unresolved_20_Mention\\\" style:display-name=\\\"Unresolved Mention\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\">\\n <style:text-properties fo:color=\\\"#605e5c\\\" loext:opacity=\\\"100%\\\"\\n fo:background-color=\\\"#e1dfdd\\\" />\\n </style:style>\\n <style:style style:name=\\\"ListLabel_20_1\\\" style:display-name=\\\"ListLabel 1\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_2\\\" style:display-name=\\\"ListLabel 2\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_3\\\" style:display-name=\\\"ListLabel 3\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_4\\\" style:display-name=\\\"ListLabel 4\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_5\\\" style:display-name=\\\"ListLabel 5\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_6\\\" style:display-name=\\\"ListLabel 6\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_7\\\" style:display-name=\\\"ListLabel 7\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_8\\\" style:display-name=\\\"ListLabel 8\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_9\\\" style:display-name=\\\"ListLabel 9\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_10\\\" style:display-name=\\\"ListLabel 10\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_11\\\" style:display-name=\\\"ListLabel 11\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_12\\\" style:display-name=\\\"ListLabel 12\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_13\\\" style:display-name=\\\"ListLabel 13\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_14\\\" style:display-name=\\\"ListLabel 14\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_15\\\" style:display-name=\\\"ListLabel 15\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_16\\\" style:display-name=\\\"ListLabel 16\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_17\\\" style:display-name=\\\"ListLabel 17\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_18\\\" style:display-name=\\\"ListLabel 18\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_19\\\" style:display-name=\\\"ListLabel 19\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_20\\\" style:display-name=\\\"ListLabel 20\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_21\\\" style:display-name=\\\"ListLabel 21\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_22\\\" style:display-name=\\\"ListLabel 22\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_23\\\" style:display-name=\\\"ListLabel 23\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_24\\\" style:display-name=\\\"ListLabel 24\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_25\\\" style:display-name=\\\"ListLabel 25\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_26\\\" style:display-name=\\\"ListLabel 26\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_27\\\" style:display-name=\\\"ListLabel 27\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_28\\\" style:display-name=\\\"ListLabel 28\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"Graphics\\\" style:family=\\\"graphic\\\">\\n <style:graphic-properties text:anchor-type=\\\"paragraph\\\" svg:x=\\\"0in\\\" svg:y=\\\"0in\\\"\\n style:wrap=\\\"dynamic\\\" style:number-wrapped-paragraphs=\\\"no-limit\\\"\\n style:wrap-contour=\\\"false\\\" style:vertical-pos=\\\"top\\\" style:vertical-rel=\\\"paragraph\\\"\\n style:horizontal-pos=\\\"center\\\" style:horizontal-rel=\\\"paragraph\\\" draw:fill=\\\"none\\\" />\\n </style:style>\\n <style:style style:name=\\\"Frame\\\" style:family=\\\"graphic\\\">\\n <style:graphic-properties fo:margin-left=\\\"0in\\\" fo:margin-right=\\\"0in\\\" fo:margin-top=\\\"0in\\\"\\n fo:margin-bottom=\\\"0in\\\" style:run-through=\\\"foreground\\\" style:wrap=\\\"dynamic\\\"\\n style:number-wrapped-paragraphs=\\\"no-limit\\\" style:vertical-pos=\\\"from-top\\\"\\n style:horizontal-pos=\\\"center\\\" style:horizontal-rel=\\\"paragraph\\\" fo:padding=\\\"0in\\\"\\n draw:fill=\\\"none\\\"\\n draw:stroke=\\\"none\\\"\\n fo:border=\\\"none\\\"\\n style:shadow=\\\"none\\\" svg:stroke-color=\\\"transparent\\\"\\n draw:shadow-opacity=\\\"100%\\\"\\n loext:rel-width-rel=\\\"paragraph\\\" />\\n </style:style>\\n <text:outline-style style:name=\\\"Outline\\\">\\n <text:outline-level-style text:level=\\\"1\\\" style:num-format=\\\"\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\" />\\n </style:list-level-properties>\\n </text:outline-level-style>\\n <text:outline-level-style text:level=\\\"2\\\" style:num-format=\\\"\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\" />\\n </style:list-level-properties>\\n </text:outline-level-style>\\n <text:outline-level-style text:level=\\\"3\\\" style:num-format=\\\"\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\" />\\n </style:list-level-properties>\\n </text:outline-level-style>\\n <text:outline-level-style text:level=\\\"4\\\" style:num-format=\\\"\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\" />\\n </style:list-level-properties>\\n </text:outline-level-style>\\n <text:outline-level-style text:level=\\\"5\\\" style:num-format=\\\"\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\" />\\n </style:list-level-properties>\\n </text:outline-level-style>\\n <text:outline-level-style text:level=\\\"6\\\" style:num-format=\\\"\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\" />\\n </style:list-level-properties>\\n </text:outline-level-style>\\n <text:outline-level-style text:level=\\\"7\\\" style:num-format=\\\"\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\" />\\n </style:list-level-properties>\\n </text:outline-level-style>\\n <text:outline-level-style text:level=\\\"8\\\" style:num-format=\\\"\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\" />\\n </style:list-level-properties>\\n </text:outline-level-style>\\n <text:outline-level-style text:level=\\\"9\\\" style:num-format=\\\"\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\" />\\n </style:list-level-properties>\\n </text:outline-level-style>\\n <text:outline-level-style text:level=\\\"10\\\" style:num-format=\\\"\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\" />\\n </style:list-level-properties>\\n </text:outline-level-style>\\n </text:outline-style>\\n <text:list-style style:name=\\\"No_20_List\\\" style:display-name=\\\"No List\\\">\\n <text:list-level-style-number text:level=\\\"1\\\" loext:num-list-format=\\\"%1%.\\\"\\n style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n text:list-tab-stop-position=\\\"0.5in\\\" fo:text-indent=\\\"-0.25in\\\"\\n fo:margin-left=\\\"0.5in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"2\\\" loext:num-list-format=\\\"%2%.\\\"\\n style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n text:list-tab-stop-position=\\\"0.75in\\\" fo:text-indent=\\\"-0.25in\\\"\\n fo:margin-left=\\\"0.75in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"3\\\" loext:num-list-format=\\\"%3%.\\\"\\n style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n text:list-tab-stop-position=\\\"1in\\\" fo:text-indent=\\\"-0.25in\\\"\\n fo:margin-left=\\\"1in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"4\\\" loext:num-list-format=\\\"%4%.\\\"\\n style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n text:list-tab-stop-position=\\\"1.25in\\\" fo:text-indent=\\\"-0.25in\\\"\\n fo:margin-left=\\\"1.25in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"5\\\" loext:num-list-format=\\\"%5%.\\\"\\n style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n text:list-tab-stop-position=\\\"1.5in\\\" fo:text-indent=\\\"-0.25in\\\"\\n fo:margin-left=\\\"1.5in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"6\\\" loext:num-list-format=\\\"%6%.\\\"\\n style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n text:list-tab-stop-position=\\\"1.75in\\\" fo:text-indent=\\\"-0.25in\\\"\\n fo:margin-left=\\\"1.75in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"7\\\" loext:num-list-format=\\\"%7%.\\\"\\n style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n text:list-tab-stop-position=\\\"2in\\\" fo:text-indent=\\\"-0.25in\\\"\\n fo:margin-left=\\\"2in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"8\\\" loext:num-list-format=\\\"%8%.\\\"\\n style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n text:list-tab-stop-position=\\\"2.25in\\\" fo:text-indent=\\\"-0.25in\\\"\\n fo:margin-left=\\\"2.25in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"9\\\" loext:num-list-format=\\\"%9%.\\\"\\n style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n text:list-tab-stop-position=\\\"2.5in\\\" fo:text-indent=\\\"-0.25in\\\"\\n fo:margin-left=\\\"2.5in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"10\\\" loext:num-list-format=\\\"%10%.\\\"\\n style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n text:list-tab-stop-position=\\\"2.75in\\\" fo:text-indent=\\\"-0.25in\\\"\\n fo:margin-left=\\\"2.75in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n </text:list-style>\\n <text:list-style style:name=\\\"WWNum1\\\">\\n <text:list-level-style-bullet text:level=\\\"1\\\" text:style-name=\\\"ListLabel_20_1\\\"\\n loext:num-list-format=\\\"•\\\" style:num-suffix=\\\"•\\\" text:bullet-char=\\\"•\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"0.5in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"2\\\" text:style-name=\\\"ListLabel_20_2\\\"\\n loext:num-list-format=\\\"◦\\\" style:num-suffix=\\\"◦\\\" text:bullet-char=\\\"◦\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"1in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"3\\\" text:style-name=\\\"ListLabel_20_3\\\"\\n loext:num-list-format=\\\"▪\\\" style:num-suffix=\\\"▪\\\" text:bullet-char=\\\"▪\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"1.5in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"4\\\" text:style-name=\\\"ListLabel_20_4\\\"\\n loext:num-list-format=\\\"•\\\" style:num-suffix=\\\"•\\\" text:bullet-char=\\\"•\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"2in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"5\\\" text:style-name=\\\"ListLabel_20_5\\\"\\n loext:num-list-format=\\\"◦\\\" style:num-suffix=\\\"◦\\\" text:bullet-char=\\\"◦\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"2.5in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"6\\\" text:style-name=\\\"ListLabel_20_6\\\"\\n loext:num-list-format=\\\"▪\\\" style:num-suffix=\\\"▪\\\" text:bullet-char=\\\"▪\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"3in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"7\\\" text:style-name=\\\"ListLabel_20_7\\\"\\n loext:num-list-format=\\\"•\\\" style:num-suffix=\\\"•\\\" text:bullet-char=\\\"•\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"3.5in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"8\\\" text:style-name=\\\"ListLabel_20_8\\\"\\n loext:num-list-format=\\\"•\\\" style:num-suffix=\\\"•\\\" text:bullet-char=\\\"•\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"4in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"9\\\" text:style-name=\\\"ListLabel_20_9\\\"\\n loext:num-list-format=\\\"•\\\" style:num-suffix=\\\"•\\\" text:bullet-char=\\\"•\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"4.5in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-number text:level=\\\"10\\\" loext:num-list-format=\\\"%10%.\\\"\\n style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n text:list-tab-stop-position=\\\"2.75in\\\" fo:text-indent=\\\"-0.25in\\\"\\n fo:margin-left=\\\"2.75in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n </text:list-style>\\n <text:list-style style:name=\\\"WWNum2\\\">\\n <text:list-level-style-bullet text:level=\\\"1\\\" text:style-name=\\\"ListLabel_20_10\\\"\\n loext:num-list-format=\\\"•\\\" style:num-suffix=\\\"•\\\" text:bullet-char=\\\"•\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"0.25in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"2\\\" text:style-name=\\\"ListLabel_20_11\\\"\\n loext:num-list-format=\\\"•\\\" style:num-suffix=\\\"•\\\" text:bullet-char=\\\"•\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"0.5in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"3\\\" text:style-name=\\\"ListLabel_20_12\\\"\\n loext:num-list-format=\\\"•\\\" style:num-suffix=\\\"•\\\" text:bullet-char=\\\"•\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"0.75in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"4\\\" text:style-name=\\\"ListLabel_20_13\\\"\\n loext:num-list-format=\\\"•\\\" style:num-suffix=\\\"•\\\" text:bullet-char=\\\"•\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"1in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"5\\\" text:style-name=\\\"ListLabel_20_14\\\"\\n loext:num-list-format=\\\"•\\\" style:num-suffix=\\\"•\\\" text:bullet-char=\\\"•\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"1.25in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"6\\\" text:style-name=\\\"ListLabel_20_15\\\"\\n loext:num-list-format=\\\"•\\\" style:num-suffix=\\\"•\\\" text:bullet-char=\\\"•\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"1.5in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"7\\\" text:style-name=\\\"ListLabel_20_16\\\"\\n loext:num-list-format=\\\"•\\\" style:num-suffix=\\\"•\\\" text:bullet-char=\\\"•\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"1.75in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"8\\\" text:style-name=\\\"ListLabel_20_17\\\"\\n loext:num-list-format=\\\"•\\\" style:num-suffix=\\\"•\\\" text:bullet-char=\\\"•\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"2in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"9\\\" text:style-name=\\\"ListLabel_20_18\\\"\\n loext:num-list-format=\\\"•\\\" style:num-suffix=\\\"•\\\" text:bullet-char=\\\"•\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"2.25in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-number text:level=\\\"10\\\" loext:num-list-format=\\\"%10%.\\\"\\n style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n text:list-tab-stop-position=\\\"2.75in\\\" fo:text-indent=\\\"-0.25in\\\"\\n fo:margin-left=\\\"2.75in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n </text:list-style>\\n <text:list-style style:name=\\\"WWNum3\\\">\\n <text:list-level-style-number text:level=\\\"1\\\" text:style-name=\\\"ListLabel_20_19\\\"\\n loext:num-list-format=\\\"%1%.\\\" style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"0.25in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"2\\\" text:style-name=\\\"ListLabel_20_20\\\"\\n loext:num-list-format=\\\"%2%.\\\" style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"0.5in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"3\\\" text:style-name=\\\"ListLabel_20_21\\\"\\n loext:num-list-format=\\\"%3%.\\\" style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"0.75in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"4\\\" text:style-name=\\\"ListLabel_20_22\\\"\\n loext:num-list-format=\\\"%4%.\\\" style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"1in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"5\\\" text:style-name=\\\"ListLabel_20_23\\\"\\n loext:num-list-format=\\\"%5%.\\\" style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"1.25in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"6\\\" text:style-name=\\\"ListLabel_20_24\\\"\\n loext:num-list-format=\\\"%6%.\\\" style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"1.5in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"7\\\" text:style-name=\\\"ListLabel_20_25\\\"\\n loext:num-list-format=\\\"%7%.\\\" style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"1.75in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"8\\\" text:style-name=\\\"ListLabel_20_26\\\"\\n loext:num-list-format=\\\"%8%.\\\" style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"2in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"9\\\" text:style-name=\\\"ListLabel_20_27\\\"\\n loext:num-list-format=\\\"%9%.\\\" style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"2.25in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"10\\\" loext:num-list-format=\\\"%10%.\\\"\\n style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n text:list-tab-stop-position=\\\"2.75in\\\" fo:text-indent=\\\"-0.25in\\\"\\n fo:margin-left=\\\"2.75in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n </text:list-style>\\n <text:notes-configuration text:note-class=\\\"footnote\\\" style:num-format=\\\"1\\\"\\n text:start-value=\\\"0\\\" text:footnotes-position=\\\"page\\\" text:start-numbering-at=\\\"document\\\" />\\n <text:notes-configuration text:note-class=\\\"endnote\\\" style:num-format=\\\"i\\\"\\n text:start-value=\\\"0\\\" />\\n <text:linenumbering-configuration text:number-lines=\\\"false\\\" text:offset=\\\"0.1965in\\\"\\n style:num-format=\\\"1\\\" text:number-position=\\\"left\\\" text:increment=\\\"5\\\" />\\n <style:default-page-layout>\\n <style:page-layout-properties style:layout-grid-standard-mode=\\\"true\\\" />\\n </style:default-page-layout>\\n <loext:theme loext:name=\\\"Office\\\">\\n <loext:theme-colors loext:name=\\\"LibreOffice\\\">\\n <loext:color loext:name=\\\"dark1\\\" loext:color=\\\"#000000\\\" />\\n <loext:color loext:name=\\\"light1\\\" loext:color=\\\"#ffffff\\\" />\\n <loext:color loext:name=\\\"dark2\\\" loext:color=\\\"#000000\\\" />\\n <loext:color loext:name=\\\"light2\\\" loext:color=\\\"#ffffff\\\" />\\n <loext:color loext:name=\\\"accent1\\\" loext:color=\\\"#18a303\\\" />\\n <loext:color loext:name=\\\"accent2\\\" loext:color=\\\"#0369a3\\\" />\\n <loext:color loext:name=\\\"accent3\\\" loext:color=\\\"#a33e03\\\" />\\n <loext:color loext:name=\\\"accent4\\\" loext:color=\\\"#8e03a3\\\" />\\n <loext:color loext:name=\\\"accent5\\\" loext:color=\\\"#c99c00\\\" />\\n <loext:color loext:name=\\\"accent6\\\" loext:color=\\\"#c9211e\\\" />\\n <loext:color loext:name=\\\"hyperlink\\\" loext:color=\\\"#0000ee\\\" />\\n <loext:color loext:name=\\\"followed-hyperlink\\\" loext:color=\\\"#551a8b\\\" />\\n </loext:theme-colors>\\n </loext:theme>\\n </office:styles>\\n <office:automatic-styles>\\n <style:style style:name=\\\"MP1\\\" style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Header\\\">\\n <style:text-properties officeooo:rsid=\\\"0008951b\\\" officeooo:paragraph-rsid=\\\"0008951b\\\" />\\n </style:style>\\n <style:style style:name=\\\"MP2\\\" style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Footer\\\">\\n <style:text-properties officeooo:rsid=\\\"0008951b\\\" officeooo:paragraph-rsid=\\\"0008951b\\\" />\\n </style:style>\\n <style:page-layout style:name=\\\"Mpm1\\\">\\n <style:page-layout-properties fo:page-width=\\\"8.2681in\\\" fo:page-height=\\\"11.6929in\\\"\\n style:num-format=\\\"1\\\" style:print-orientation=\\\"portrait\\\" fo:margin-top=\\\"1in\\\"\\n fo:margin-bottom=\\\"1in\\\" fo:margin-left=\\\"1in\\\" fo:margin-right=\\\"1in\\\"\\n style:writing-mode=\\\"lr-tb\\\" style:layout-grid-color=\\\"#c0c0c0\\\"\\n style:layout-grid-lines=\\\"38\\\" style:layout-grid-base-height=\\\"0.25in\\\"\\n style:layout-grid-ruby-height=\\\"0in\\\" style:layout-grid-mode=\\\"none\\\"\\n style:layout-grid-ruby-below=\\\"false\\\" style:layout-grid-print=\\\"false\\\"\\n style:layout-grid-display=\\\"false\\\" style:layout-grid-base-width=\\\"0.1665in\\\"\\n style:layout-grid-snap-to=\\\"true\\\" style:footnote-max-height=\\\"0in\\\"\\n loext:margin-gutter=\\\"0in\\\">\\n <style:footnote-sep style:width=\\\"0.0071in\\\" style:distance-before-sep=\\\"0.0398in\\\"\\n style:distance-after-sep=\\\"0.0398in\\\" style:line-style=\\\"solid\\\"\\n style:adjustment=\\\"left\\\" style:rel-width=\\\"25%\\\" style:color=\\\"#000000\\\" />\\n </style:page-layout-properties>\\n <style:header-style>\\n <style:header-footer-properties fo:min-height=\\\"0in\\\" fo:margin-bottom=\\\"0.1965in\\\"\\n fo:background-color=\\\"transparent\\\" />\\n </style:header-style>\\n <style:footer-style>\\n <style:header-footer-properties fo:min-height=\\\"0in\\\" fo:margin-top=\\\"0.1965in\\\"\\n fo:background-color=\\\"transparent\\\" />\\n </style:footer-style>\\n </style:page-layout>\\n <style:style style:name=\\\"Mdp1\\\" style:family=\\\"drawing-page\\\">\\n <style:drawing-page-properties draw:background-size=\\\"full\\\" />\\n </style:style>\\n </office:automatic-styles>\\n <office:master-styles>\\n <style:master-page style:name=\\\"Standard\\\" style:page-layout-name=\\\"Mpm1\\\"\\n draw:style-name=\\\"Mdp1\\\" />\\n </office:master-styles>\\n</office:document-styles>\"","import {\n Block,\n BlockNoteSchema,\n BlockSchema,\n COLORS_DEFAULT,\n Exporter,\n ExporterOptions,\n InlineContentSchema,\n StyleSchema,\n StyledText,\n} from \"@blocknote/core\";\nimport { loadFileBuffer } from \"@shared/util/fileUtil.js\";\nimport { getImageDimensions } from \"@shared/util/imageUtil.js\";\nimport { BlobReader, BlobWriter, TextReader, ZipWriter } from \"@zip.js/zip.js\";\nimport { renderToString } from \"react-dom/server\";\nimport stylesXml from \"./template/styles.xml?raw\";\n\nexport class ODTExporter<\n B extends BlockSchema,\n S extends StyleSchema,\n I extends InlineContentSchema,\n> extends Exporter<\n B,\n I,\n S,\n React.ReactNode,\n React.ReactNode,\n Record<string, string>,\n React.ReactNode\n> {\n // \"Styles\" to be added to the AutomaticStyles section of the ODT file\n // Keyed by the style name\n private automaticStyles: Map<string, React.ReactNode> = new Map();\n\n // \"Pictures\" to be added to the Pictures folder in the ODT file\n // Keyed by the original image URL\n private pictures = new Map<\n string,\n {\n file: Blob;\n fileName: string;\n height: number;\n width: number;\n }\n >();\n\n private styleCounter = 0;\n\n public readonly options: ExporterOptions;\n\n constructor(\n protected readonly schema: BlockNoteSchema<B, I, S>,\n mappings: Exporter<\n NoInfer<B>,\n NoInfer<I>,\n NoInfer<S>,\n React.ReactNode,\n React.ReactNode,\n Record<string, string>,\n React.ReactNode\n >[\"mappings\"],\n options?: Partial<ExporterOptions>,\n ) {\n const defaults = {\n colors: COLORS_DEFAULT,\n } satisfies Partial<ExporterOptions>;\n\n super(schema, mappings, { ...defaults, ...options });\n this.options = { ...defaults, ...options };\n }\n\n protected async loadFonts() {\n const interFont = await loadFileBuffer(\n await import(\"@shared/assets/fonts/inter/Inter_18pt-Regular.ttf\"),\n );\n const geistMonoFont = await loadFileBuffer(\n await import(\"@shared/assets/fonts/GeistMono-Regular.ttf\"),\n );\n\n return [\n {\n name: \"Inter 18pt\",\n fileName: \"Inter_18pt-Regular.ttf\",\n data: new Blob([interFont as ArrayBuffer], { type: \"font/ttf\" }),\n },\n {\n name: \"Geist Mono\",\n fileName: \"GeistMono-Regular.ttf\",\n data: new Blob([geistMonoFont as ArrayBuffer], { type: \"font/ttf\" }),\n },\n ];\n }\n\n public transformStyledText(styledText: StyledText<S>): React.ReactNode {\n const stylesArray = this.mapStyles(styledText.styles);\n const styles = Object.assign({}, ...stylesArray);\n\n if (Object.keys(styles).length === 0) {\n return styledText.text;\n }\n\n const styleName = `BN_T${++this.styleCounter}`;\n\n // Store the complete style element\n this.automaticStyles.set(\n styleName,\n <style:style style:name={styleName} style:family=\"text\">\n <style:text-properties {...styles} />\n </style:style>,\n );\n\n return <text:span text:style-name={styleName}>{styledText.text}</text:span>;\n }\n\n public async transformBlocks(\n blocks: Block<B, I, S>[],\n nestingLevel = 0,\n ): Promise<Awaited<React.ReactNode>[]> {\n const ret: Awaited<React.ReactNode>[] = [];\n let numberedListIndex = 0;\n\n for (const block of blocks) {\n if (block.type === \"numberedListItem\") {\n numberedListIndex++;\n } else {\n numberedListIndex = 0;\n }\n\n if ([\"columnList\", \"column\"].includes(block.type)) {\n const children = await this.transformBlocks(block.children, 0);\n const content = await this.mapBlock(\n block as any,\n 0,\n numberedListIndex,\n children,\n );\n\n ret.push(content);\n } else {\n const children = await this.transformBlocks(\n block.children,\n nestingLevel + 1,\n );\n const content = await this.mapBlock(\n block as any,\n nestingLevel,\n numberedListIndex,\n children,\n );\n\n ret.push(content);\n if (children.length > 0) {\n ret.push(...children);\n }\n }\n }\n\n return ret;\n }\n\n public async toODTDocument(\n blocks: Block<B, I, S>[],\n options?: {\n header?: string | XMLDocument;\n footer?: string | XMLDocument;\n },\n ): Promise<Blob> {\n const xmlOptionToString = (xmlDocument: string | XMLDocument) => {\n const xmlNamespacesRegEx =\n /<([a-zA-Z0-9:]+)\\s+?(?:xml)ns(?::[a-zA-Z0-9]+)?=\".*\"(.*)>/g;\n let stringifiedDoc = \"\";\n\n if (typeof xmlDocument === \"string\") {\n stringifiedDoc = xmlDocument;\n } else {\n const serializer = new XMLSerializer();\n\n stringifiedDoc = serializer.serializeToString(xmlDocument);\n }\n\n // Detect and remove XML namespaces (already defined in the root element)\n return stringifiedDoc.replace(xmlNamespacesRegEx, \"<$1$2>\");\n };\n const blockContent = await this.transformBlocks(blocks);\n const styles = Array.from(this.automaticStyles.values());\n const pictures = Array.from(this.pictures.values());\n const fonts = await this.loadFonts();\n const header = xmlOptionToString(options?.header || \"\");\n const footer = xmlOptionToString(options?.footer || \"\");\n\n const content = (\n <office:document-content\n xmlns:office=\"urn:oasis:names:tc:opendocument:xmlns:office:1.0\"\n xmlns:text=\"urn:oasis:names:tc:opendocument:xmlns:text:1.0\"\n xmlns:table=\"urn:oasis:names:tc:opendocument:xmlns:table:1.0\"\n xmlns:draw=\"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n xmlns:style=\"urn:oasis:names:tc:opendocument:xmlns:style:1.0\"\n xmlns:fo=\"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\"\n xmlns:svg=\"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\"\n xmlns:loext=\"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0\"\n office:version=\"1.3\"\n >\n <office:font-face-decls>\n {fonts.map((font) => {\n return (\n <style:font-face\n style:name={font.name}\n svg:font-family={font.name}\n style:font-pitch=\"variable\"\n >\n <svg:font-face-src>\n <svg:font-face-uri\n xlink:href={`Fonts/${font.fileName}`}\n xlink:type=\"simple\"\n loext:font-style=\"normal\"\n loext:font-weight=\"normal\"\n >\n <svg:font-face-format svg:string=\"truetype\" />\n </svg:font-face-uri>\n </svg:font-face-src>\n </style:font-face>\n );\n })}\n </office:font-face-decls>\n <office:automatic-styles>{styles}</office:automatic-styles>\n {(header || footer) && (\n <office:master-styles>\n <style:master-page\n style:name=\"Standard\"\n style:page-layout-name=\"Mpm1\"\n draw:style-name=\"Mdp1\"\n >\n {header && (\n <style:header\n dangerouslySetInnerHTML={{\n __html: header,\n }}\n ></style:header>\n )}\n {footer && (\n <style:footer\n dangerouslySetInnerHTML={{\n __html: footer,\n }}\n ></style:footer>\n )}\n </style:master-page>\n </office:master-styles>\n )}\n <office:body>\n <office:text>{blockContent}</office:text>\n </office:body>\n </office:document-content>\n );\n\n const manifestNode = (\n <manifest:manifest\n xmlns:manifest=\"urn:oasis:names:tc:opendocument:xmlns:manifest:1.0\"\n manifest:version=\"1.3\"\n >\n <manifest:file-entry\n manifest:media-type=\"application/vnd.oasis.opendocument.text\"\n manifest:full-path=\"/\"\n />\n <manifest:file-entry\n manifest:media-type=\"text/xml\"\n manifest:full-path=\"content.xml\"\n />\n <manifest:file-entry\n manifest:media-type=\"text/xml\"\n manifest:full-path=\"styles.xml\"\n />\n {pictures.map((picture) => {\n return (\n <manifest:file-entry\n manifest:media-type={picture.file.type}\n manifest:full-path={`Pictures/${picture.fileName}`}\n />\n );\n })}\n {fonts.map((font) => {\n return (\n <manifest:file-entry\n manifest:media-type=\"application/x-font-ttf\"\n manifest:full-path={`Fonts/${font.fileName}`}\n />\n );\n })}\n </manifest:manifest>\n );\n const zipWriter = new ZipWriter(\n new BlobWriter(\"application/vnd.oasis.opendocument.text\"),\n );\n\n // Add mimetype first, uncompressed\n zipWriter.add(\n \"mimetype\",\n new TextReader(\"application/vnd.oasis.opendocument.text\"),\n {\n compressionMethod: 0,\n level: 0,\n dataDescriptor: false,\n extendedTimestamp: false,\n },\n );\n\n const contentXml = renderToString(content);\n const manifestXml = renderToString(manifestNode);\n\n zipWriter.add(\"content.xml\", new TextReader(contentXml));\n zipWriter.add(\"styles.xml\", new TextReader(stylesXml));\n zipWriter.add(\"META-INF/manifest.xml\", new TextReader(manifestXml));\n fonts.forEach((font) => {\n zipWriter.add(`Fonts/${font.fileName}`, new BlobReader(font.data));\n });\n pictures.forEach((picture) => {\n zipWriter.add(\n `Pictures/${picture.fileName}`,\n new BlobReader(picture.file),\n );\n });\n\n return zipWriter.close();\n }\n\n public registerStyle(style: (name: string) => React.ReactNode): string {\n const styleName = `BN_S${++this.styleCounter}`;\n this.automaticStyles.set(styleName, style(styleName));\n return styleName;\n }\n\n public async registerPicture(url: string): Promise<{\n path: string;\n mimeType: string;\n height: number;\n width: number;\n }> {\n const mimeTypeFileExtensionMap = {\n \"image/apng\": \"apng\",\n \"image/avif\": \"avif\",\n \"image/bmp\": \"bmp\",\n \"image/gif\": \"gif\",\n \"image/vnd.microsoft.icon\": \"ico\",\n \"image/jpeg\": \"jpg\",\n \"image/png\": \"png\",\n \"image/svg+xml\": \"svg\",\n \"image/tiff\": \"tiff\",\n \"image/webp\": \"webp\",\n };\n if (this.pictures.has(url)) {\n const picture = this.pictures.get(url)!;\n\n return {\n path: `Pictures/${picture.fileName}`,\n mimeType: picture.file.type,\n height: picture.height,\n width: picture.width,\n };\n }\n\n const blob = await this.resolveFile(url);\n const fileExtension =\n mimeTypeFileExtensionMap[\n blob.type as keyof typeof mimeTypeFileExtensionMap\n ] || \"png\";\n const fileName = `picture-${this.pictures.size}.${fileExtension}`;\n const { width, height } = await getImageDimensions(blob);\n\n this.pictures.set(url, {\n file: blob,\n fileName: fileName,\n height,\n width,\n });\n\n return { path: `Pictures/${fileName}`, mimeType: blob.type, height, width };\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"blocknote-xl-odt-exporter.js","names":[],"sources":["../src/odt/defaultSchema/blocks.tsx","../src/odt/defaultSchema/inlineContent.tsx","../src/odt/defaultSchema/styles.ts","../src/odt/defaultSchema/index.ts","../../../shared/util/fileUtil.ts","../../../shared/util/imageUtil.ts","../src/odt/template/styles.xml?raw","../src/odt/odtExporter.tsx"],"sourcesContent":["import {\n BlockFromConfig,\n BlockMapping,\n createPageBreakBlockConfig,\n DefaultBlockSchema,\n DefaultProps,\n mapTableCell,\n StyledText,\n TableCell,\n} from \"@blocknote/core\";\nimport { ODTExporter } from \"../odtExporter.js\";\nimport { multiColumnSchema } from \"@blocknote/xl-multi-column\";\n\nexport const getTabs = (nestingLevel: number) => {\n return Array.from({ length: nestingLevel }, () => <text:tab />);\n};\n\nconst createParagraphStyle = (\n exporter: ODTExporter<any, any, any>,\n props: Partial<DefaultProps>,\n parentStyleName = \"Standard\",\n styleAttributes: Record<string, string> = {},\n paragraphStyleAttributes: Record<string, string> = {},\n textStyleAttributes: Record<string, string> = {},\n) => {\n const paragraphStyles: Record<string, string> = {\n ...paragraphStyleAttributes,\n };\n const textStyles: Record<string, string> = { ...textStyleAttributes };\n\n if (props.textAlignment && props.textAlignment !== \"left\") {\n const alignmentMap = {\n left: \"start\",\n center: \"center\",\n right: \"end\",\n justify: \"justify\",\n };\n paragraphStyles[\"fo:text-align\"] =\n alignmentMap[props.textAlignment as keyof typeof alignmentMap];\n }\n\n const backgroundColor =\n props.backgroundColor && props.backgroundColor !== \"default\"\n ? exporter.options.colors[props.backgroundColor]?.background\n : undefined;\n\n if (backgroundColor) {\n paragraphStyles[\"fo:background-color\"] = backgroundColor;\n }\n\n if (props.textColor && props.textColor !== \"default\") {\n const color =\n exporter.options.colors[\n props.textColor as keyof typeof exporter.options.colors\n ]?.text ?? props.textColor;\n textStyles[\"fo:color\"] = color;\n }\n\n if (\n !backgroundColor &&\n !Object.keys(styleAttributes).length &&\n !Object.keys(paragraphStyles).length &&\n !Object.keys(textStyles).length\n ) {\n return parentStyleName || \"Standard\";\n }\n\n return exporter.registerStyle((name) => (\n <style:style\n style:family=\"paragraph\"\n style:name={name}\n style:parent-style-name={parentStyleName}\n {...styleAttributes}\n >\n {backgroundColor && (\n <loext:graphic-properties\n draw:fill=\"solid\"\n draw:fill-color={backgroundColor}\n />\n )}\n {Object.keys(paragraphStyles).length > 0 && (\n <style:paragraph-properties {...paragraphStyles} />\n )}\n {Object.keys(textStyles).length > 0 && (\n <style:text-properties {...textStyles}></style:text-properties>\n )}\n </style:style>\n ));\n};\n\nconst createTableCellStyle = (\n exporter: ODTExporter<any, any, any>,\n): ((cell: TableCell<any, any>) => string) => {\n // To not create a new style for each cell within a table, we cache the styles based on unique cell properties\n const cellStyleCache = new Map<string, string>();\n\n return (cell: TableCell<any, any>) => {\n const key = `${cell.props.backgroundColor}-${cell.props.textColor}-${cell.props.textAlignment}`;\n\n if (cellStyleCache.has(key)) {\n return cellStyleCache.get(key)!;\n }\n\n const styleName = exporter.registerStyle((name) => (\n <style:style style:family=\"table-cell\" style:name={name}>\n <style:table-cell-properties\n fo:border=\"0.5pt solid #000000\"\n style:writing-mode=\"lr-tb\"\n fo:padding-top=\"0in\"\n fo:padding-left=\"0.075in\"\n fo:padding-bottom=\"0in\"\n fo:padding-right=\"0.075in\"\n fo:background-color={\n cell.props.backgroundColor !== \"default\" &&\n cell.props.backgroundColor\n ? exporter.options.colors?.[cell.props.backgroundColor]\n ?.background\n : undefined\n }\n // TODO This is not applying because the children set their own colors\n fo:color={\n cell.props.textColor !== \"default\" && cell.props.textColor\n ? exporter.options.colors[cell.props.textColor]?.text\n : undefined\n }\n />\n </style:style>\n ));\n\n cellStyleCache.set(key, styleName);\n\n return styleName;\n };\n};\nconst createTableStyle = (\n exporter: ODTExporter<any, any, any>,\n options: { width: number },\n) => {\n const tableStyleName = exporter.registerStyle((name) => (\n <style:style style:family=\"table\" style:name={name}>\n <style:table-properties\n table:align=\"left\"\n style:writing-mode=\"lr-tb\"\n style:width={`${options.width}pt`}\n />\n </style:style>\n ));\n\n return tableStyleName;\n};\n\nconst wrapWithLists = (\n content: React.ReactNode,\n level: number,\n): React.ReactNode => {\n if (level <= 0) {\n return content;\n }\n return (\n <text:list>\n <text:list-item>{wrapWithLists(content, level - 1)}</text:list-item>\n </text:list>\n );\n};\n\nexport const odtBlockMappingForDefaultSchema: BlockMapping<\n DefaultBlockSchema & {\n pageBreak: ReturnType<typeof createPageBreakBlockConfig>;\n } & typeof multiColumnSchema.blockSchema,\n any,\n any,\n React.ReactNode,\n React.ReactNode\n> = {\n paragraph: (block, exporter, nestingLevel) => {\n const styleName = createParagraphStyle(\n exporter as ODTExporter<any, any, any>,\n block.props,\n );\n\n return (\n <text:p text:style-name={styleName}>\n {getTabs(nestingLevel)}\n {exporter.transformInlineContent(block.content)}\n </text:p>\n );\n },\n\n heading: (block, exporter, nestingLevel) => {\n const customStyleName = createParagraphStyle(\n exporter as ODTExporter<any, any, any>,\n block.props,\n \"Heading_20_\" + block.props.level,\n );\n const styleName = customStyleName;\n\n return (\n <text:h\n text:outline-level={`${block.props.level}`}\n text:style-name={styleName}\n >\n {getTabs(nestingLevel)}\n {exporter.transformInlineContent(block.content)}\n </text:h>\n );\n },\n\n quote: (block, exporter, nestingLevel) => {\n const customStyleName = createParagraphStyle(\n exporter as ODTExporter<any, any, any>,\n block.props,\n \"Standard\",\n {},\n {\n \"fo:border-left\": \"2pt solid #7D797A\",\n \"fo:padding-left\": \"0.25in\",\n },\n {\n \"fo:color\": \"#7D797A\",\n },\n );\n const styleName = customStyleName;\n\n return (\n <text:p text:style-name={styleName}>\n {getTabs(nestingLevel)}\n {exporter.transformInlineContent(block.content)}\n </text:p>\n );\n },\n\n /**\n * Note: we wrap each list item in it's own list element.\n * This is not the cleanest solution, it would be nicer to recognize subsequent\n * list items and wrap them in the same list element.\n *\n * However, Word DocX -> ODT export actually does the same thing, so\n * for now it seems reasonable.\n *\n * (LibreOffice does nicely wrap the list items in the same list element)\n */\n toggleListItem: (block, exporter) => (\n <text:p text:style-name=\"Standard\">\n {\"> \"}\n {exporter.transformInlineContent(block.content)}\n </text:p>\n ),\n\n bulletListItem: (block, exporter, nestingLevel) => {\n const styleName = createParagraphStyle(\n exporter as ODTExporter<any, any, any>,\n block.props,\n \"Standard\",\n { \"style:list-style-name\": \"WWNum1\" },\n );\n return (\n <text:list text:style-name=\"WWNum1\">\n <text:list-item>\n {wrapWithLists(\n <text:p text:style-name={styleName}>\n {exporter.transformInlineContent(block.content)}\n </text:p>,\n nestingLevel,\n )}\n </text:list-item>\n </text:list>\n );\n },\n\n numberedListItem: (block, exporter, nestingLevel, numberedListIndex) => {\n const styleName = createParagraphStyle(\n exporter as ODTExporter<any, any, any>,\n block.props,\n );\n // continue numbering from the previous list item if this is not the first item\n const continueNumbering = (numberedListIndex || 0) > 1 ? \"true\" : \"false\";\n\n return (\n <text:list\n text:style-name=\"No_20_List\"\n text:continue-numbering={continueNumbering}\n >\n <text:list-item\n {...(continueNumbering === \"false\" && {\n \"text:start-value\": block.props.start,\n })}\n >\n {wrapWithLists(\n <text:p text:style-name={styleName}>\n {exporter.transformInlineContent(block.content)}\n </text:p>,\n nestingLevel,\n )}\n </text:list-item>\n </text:list>\n );\n },\n\n checkListItem: (block, exporter) => (\n <text:p text:style-name=\"Standard\">\n {block.props.checked ? \"☒ \" : \"☐ \"}\n {exporter.transformInlineContent(block.content)}\n </text:p>\n ),\n\n pageBreak: async () => {\n return <text:p text:style-name=\"PageBreak\" />;\n },\n\n divider: (block, exporter) => {\n const styleName = createParagraphStyle(\n exporter as ODTExporter<any, any, any>,\n block.props,\n \"Standard\",\n {},\n {\n \"fo:border-top\": \"1pt solid #cccccc\",\n \"fo:margin-top\": \"11pt\",\n \"fo:margin-bottom\": \"12pt\",\n \"fo:padding-top\": \"0pt\",\n \"fo:padding-bottom\": \"0pt\",\n },\n );\n\n return <text:p text:style-name={styleName} />;\n },\n\n column: (_block, exporter, _nestingLevel, _numberedListIndex, children) => {\n const ex = exporter as ODTExporter<any, any, any>;\n const style = ex.registerStyle((name) => (\n <style:style style:name={name} style:family=\"table-cell\">\n <style:table-cell-properties\n style:writing-mode=\"lr-tb\"\n fo:border=\"none\"\n fo:padding-top=\"0in\"\n fo:padding-left=\"0.075in\"\n fo:padding-bottom=\"0in\"\n fo:padding-right=\"0.075in\"\n />\n </style:style>\n ));\n\n return (\n <table:table-cell table:style-name={style}>{children}</table:table-cell>\n );\n },\n columnList: (\n block,\n exporter,\n _nestingLevel,\n _numberedListIndex,\n children,\n ) => {\n const blockWithChildren = block as BlockFromConfig<\n {\n type: \"columnList\";\n content: \"none\";\n propSchema: Record<string, any>;\n },\n any,\n any\n >;\n const ex = exporter as ODTExporter<any, any, any>;\n const style = ex.registerStyle((name) => (\n <style:style style:name={name} style:family=\"table\">\n <style:table-properties\n table:align=\"margins\"\n style:writing-mode=\"lr-tb\"\n />\n </style:style>\n ));\n\n return (\n <table:table table:name={block.id} table:style-name={style}>\n {(blockWithChildren.children || []).map((column, index) => {\n const style = ex.registerStyle((name) => (\n <style:style style:name={name} style:family=\"table-column\">\n <style:table-column-properties\n style:rel-column-width={`${column.props.width * 100}*`}\n />\n </style:style>\n ));\n\n return <table:table-column table:style-name={style} key={index} />;\n })}\n <table:table-row>{children}</table:table-row>\n </table:table>\n );\n },\n\n image: async (block, exporter) => {\n const odtExporter = exporter as ODTExporter<any, any, any>;\n\n const { path, mimeType, ...originalDimensions } =\n await odtExporter.registerPicture(block.props.url);\n const styleName = createParagraphStyle(\n exporter as ODTExporter<any, any, any>,\n block.props,\n );\n const width = block.props.previewWidth || originalDimensions.width;\n const height =\n (originalDimensions.height / originalDimensions.width) * width;\n const captionHeight = 20;\n const imageFrame = (\n <text:p text:style-name={block.props.caption ? \"Caption\" : styleName}>\n <draw:frame\n draw:style-name=\"Frame\"\n style:rel-height=\"scale\"\n svg:width={`${width}px`}\n svg:height={`${height}px`}\n style:rel-width={block.props.caption ? \"100%\" : `${width}px`}\n {...(!block.props.caption && {\n \"text:anchor-type\": \"as-char\",\n })}\n >\n <draw:image\n xlink:type=\"simple\"\n xlink:show=\"embed\"\n xlink:actuate=\"onLoad\"\n xlink:href={path}\n draw:mime-type={mimeType}\n />\n </draw:frame>\n <text:line-break />\n <text:span text:style-name=\"Caption\">{block.props.caption}</text:span>\n </text:p>\n );\n\n if (block.props.caption) {\n return (\n <text:p text:style-name={styleName}>\n <draw:frame\n draw:style-name=\"Frame\"\n style:rel-height=\"scale\"\n style:rel-width={`${width}px`}\n svg:width={`${width}px`}\n svg:height={`${height + captionHeight}px`}\n text:anchor-type=\"as-char\"\n >\n <draw:text-box>{imageFrame}</draw:text-box>\n </draw:frame>\n </text:p>\n );\n }\n\n return imageFrame;\n },\n\n table: (block, exporter) => {\n const DEFAULT_COLUMN_WIDTH_PX = 120;\n const tableWidthPX =\n block.content.columnWidths.reduce(\n (totalWidth, colWidth) =>\n (totalWidth || 0) + (colWidth || DEFAULT_COLUMN_WIDTH_PX),\n 0,\n ) || 0;\n const tableWidthPT = tableWidthPX * 0.75;\n const ex = exporter as ODTExporter<any, any, any>;\n const getCellStyleName = createTableCellStyle(ex);\n const tableStyleName = createTableStyle(ex, { width: tableWidthPT });\n\n return (\n <table:table table:name={block.id} table:style-name={tableStyleName}>\n {block.content.rows[0]?.cells.map((_, i) => {\n const colWidthPX =\n block.content.columnWidths[i] || DEFAULT_COLUMN_WIDTH_PX;\n const colWidthPT = colWidthPX * 0.75;\n const style = ex.registerStyle((name) => (\n <style:style style:name={name} style:family=\"table-column\">\n <style:table-column-properties\n style:column-width={`${colWidthPT}pt`}\n />\n </style:style>\n ));\n return <table:table-column table:style-name={style} key={i} />;\n })}\n {block.content.rows.map((row, rowIndex) => (\n <table:table-row key={rowIndex}>\n {row.cells.map((c, colIndex) => {\n const cell = mapTableCell(c);\n return (\n <table:table-cell\n key={`${rowIndex}-${colIndex}`}\n table:style-name={getCellStyleName(cell)}\n office:value-type=\"string\"\n style:text-align-source=\"fix\"\n style:paragraph-properties-text-align={\n cell.props.textAlignment\n }\n >\n <text:p text:style-name=\"Standard\">\n {exporter.transformInlineContent(cell.content)}\n </text:p>\n </table:table-cell>\n );\n })}\n </table:table-row>\n ))}\n </table:table>\n );\n },\n\n codeBlock: (block) => {\n const textContent = (block.content as StyledText<any>[])[0]?.text || \"\";\n\n return (\n <text:p text:style-name=\"Codeblock\">\n {...textContent.split(\"\\n\").map((line, index) => {\n return (\n <>\n {index !== 0 && <text:line-break />}\n {line}\n </>\n );\n })}\n </text:p>\n );\n },\n\n file: async (block) => {\n return (\n <>\n <text:p style:style-name=\"Standard\">\n {block.props.url ? (\n <text:a\n xlink:type=\"simple\"\n text:style-name=\"Internet_20_link\"\n office:target-frame-name=\"_top\"\n xlink:show=\"replace\"\n xlink:href={block.props.url}\n >\n <text:span text:style-name=\"Internet_20_link\">\n Open file\n </text:span>\n </text:a>\n ) : (\n \"Open file\"\n )}\n </text:p>\n {block.props.caption && (\n <text:p text:style-name=\"Caption\">{block.props.caption}</text:p>\n )}\n </>\n );\n },\n\n video: (block) => (\n <>\n <text:p style:style-name=\"Standard\">\n <text:a\n xlink:type=\"simple\"\n text:style-name=\"Internet_20_link\"\n office:target-frame-name=\"_top\"\n xlink:show=\"replace\"\n xlink:href={block.props.url}\n >\n <text:span text:style-name=\"Internet_20_link\">Open video</text:span>\n </text:a>\n </text:p>\n {block.props.caption && (\n <text:p text:style-name=\"Caption\">{block.props.caption}</text:p>\n )}\n </>\n ),\n\n audio: (block) => (\n <>\n <text:p style:style-name=\"Standard\">\n <text:a\n xlink:type=\"simple\"\n text:style-name=\"Internet_20_link\"\n office:target-frame-name=\"_top\"\n xlink:show=\"replace\"\n xlink:href={block.props.url}\n >\n <text:span text:style-name=\"Internet_20_link\">Open audio</text:span>\n </text:a>\n </text:p>\n {block.props.caption && (\n <text:p text:style-name=\"Caption\">{block.props.caption}</text:p>\n )}\n </>\n ),\n};\n","import {\n DefaultInlineContentSchema,\n InlineContentMapping,\n} from \"@blocknote/core\";\n\nexport const odtInlineContentMappingForDefaultSchema: InlineContentMapping<\n DefaultInlineContentSchema,\n any,\n React.JSX.Element,\n React.JSX.Element\n> = {\n link: (ic, exporter) => {\n const content = ic.content.map((c) => exporter.transformStyledText(c));\n\n return (\n <text:a\n xlink:type=\"simple\"\n text:style-name=\"Internet_20_link\"\n office:target-frame-name=\"_top\"\n xlink:show=\"replace\"\n xlink:href={ic.href}\n >\n {content}\n </text:a>\n );\n },\n\n text: (ic, exporter) => {\n return exporter.transformStyledText(ic);\n },\n};\n","import { DefaultStyleSchema, StyleMapping } from \"@blocknote/core\";\nexport const odtStyleMappingForDefaultSchema: StyleMapping<\n DefaultStyleSchema,\n Record<string, string>\n> = {\n bold: (val): Record<string, string> => {\n if (!val) {\n return {};\n }\n return { \"fo:font-weight\": \"bold\" };\n },\n\n italic: (val): Record<string, string> => {\n if (!val) {\n return {};\n }\n return { \"fo:font-style\": \"italic\" };\n },\n\n underline: (val): Record<string, string> => {\n if (!val) {\n return {};\n }\n return { \"style:text-underline-style\": \"solid\" };\n },\n\n strike: (val): Record<string, string> => {\n if (!val) {\n return {};\n }\n return { \"style:text-line-through-style\": \"solid\" };\n },\n\n textColor: (val, exporter): Record<string, string> => {\n if (!val) {\n return {};\n }\n const color = exporter.options.colors[val]?.text;\n if (!color) {\n return {};\n }\n return { \"fo:color\": color };\n },\n\n backgroundColor: (val, exporter): Record<string, string> => {\n if (!val) {\n return {};\n }\n const color = exporter.options.colors[val]?.background;\n if (!color) {\n return {};\n }\n return { \"fo:background-color\": color };\n },\n\n code: (val): Record<string, string> => {\n if (!val) {\n return {};\n }\n return { \"style:font-name\": \"Courier New\" };\n },\n};\n","import { odtBlockMappingForDefaultSchema } from \"./blocks.js\";\nimport { odtInlineContentMappingForDefaultSchema } from \"./inlineContent.js\";\nimport { odtStyleMappingForDefaultSchema } from \"./styles.js\";\n\nexport const odtDefaultSchemaMappings = {\n blockMapping: odtBlockMappingForDefaultSchema,\n inlineContentMapping: odtInlineContentMappingForDefaultSchema,\n styleMapping: odtStyleMappingForDefaultSchema,\n};\n","/**\n *\n * Helper functions so that we can import files both on vitest, browser and node\n * TODO: should find a way to test automatically in all environments\n */\n\nexport async function loadFileDataUrl(\n requireUrl: { default: string },\n mimeType: string,\n) {\n if (import.meta.env.NODE_ENV === \"test\") {\n const buffer = await loadFileBuffer(requireUrl);\n const fileBase64 = buffer.toString(\"base64\");\n\n const dataUrl = `data:${mimeType};base64,${fileBase64}`;\n return dataUrl;\n } else {\n // in browser, this is already a data url\n return requireUrl.default as string;\n }\n}\n\nexport async function loadFontDataUrl(requireUrl: { default: string }) {\n return loadFileDataUrl(requireUrl, \"font/ttf\");\n}\n\nexport async function loadFileBuffer(requireUrl: {\n default: string;\n}): Promise<Buffer | ArrayBuffer> {\n if (import.meta.env.NODE_ENV === \"test\") {\n // in vitest, this is the url we need to load with readfilesync\n // eslint-disable-next-line\n const fs = require(\"fs\");\n let url = requireUrl.default;\n\n if (url.startsWith(\"/@fs/\")) {\n url = url.substring(\"/@fs\".length);\n }\n // On Windows, vite/vitest may yield paths like \"/C:/...\" after removing /@fs\n // Node on Windows treats paths starting with \"/\" as relative to current drive,\n // which would produce \"C:\\C:\\...\". Strip leading slash when followed by a drive letter.\n if (/^\\/[A-Za-z]:/.test(url)) {\n url = url.slice(1);\n }\n const buffer = fs.readFileSync(url);\n return buffer;\n } else {\n // in browser, this is already a data url\n const dataUrl = requireUrl.default as string;\n // convert to buffer on browser\n const response = await fetch(dataUrl);\n const arrayBuffer = await response.arrayBuffer();\n return arrayBuffer;\n }\n}\n\n/**\n * usage:\n * \n * await loadFontDataUrl(\n await import(\"../fonts/inter/Inter_18pt-Italic.ttf\")\n );\n */\n","export async function getImageDimensions(blob: Blob) {\n if (typeof window !== \"undefined\" && import.meta.env.NODE_ENV !== \"test\") {\n const bmp = await createImageBitmap(blob);\n const { width, height } = bmp;\n bmp.close(); // free memory\n return { width, height };\n } else {\n // node or vitest\n const imageMetaFunc = (await import(\"image-meta\")).imageMeta;\n const bytes = new Uint8Array(await blob.arrayBuffer());\n const meta = imageMetaFunc(bytes);\n if (!meta.width || !meta.height) {\n throw new Error(\"Image dimensions not found\");\n }\n return { width: meta.width, height: meta.height };\n }\n}\n","export default \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\\n<office:document-styles xmlns:css3t=\\\"http://www.w3.org/TR/css3-text/\\\"\\n xmlns:grddl=\\\"http://www.w3.org/2003/g/data-view#\\\" xmlns:xhtml=\\\"http://www.w3.org/1999/xhtml\\\"\\n xmlns:dom=\\\"http://www.w3.org/2001/xml-events\\\"\\n xmlns:script=\\\"urn:oasis:names:tc:opendocument:xmlns:script:1.0\\\"\\n xmlns:form=\\\"urn:oasis:names:tc:opendocument:xmlns:form:1.0\\\"\\n xmlns:math=\\\"http://www.w3.org/1998/Math/MathML\\\"\\n xmlns:number=\\\"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\\\"\\n xmlns:field=\\\"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0\\\"\\n xmlns:meta=\\\"urn:oasis:names:tc:opendocument:xmlns:meta:1.0\\\"\\n xmlns:loext=\\\"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0\\\"\\n xmlns:officeooo=\\\"http://openoffice.org/2009/office\\\"\\n xmlns:table=\\\"urn:oasis:names:tc:opendocument:xmlns:table:1.0\\\"\\n xmlns:chart=\\\"urn:oasis:names:tc:opendocument:xmlns:chart:1.0\\\"\\n xmlns:svg=\\\"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\\\"\\n xmlns:rpt=\\\"http://openoffice.org/2005/report\\\"\\n xmlns:dr3d=\\\"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0\\\"\\n xmlns:tableooo=\\\"http://openoffice.org/2009/table\\\"\\n xmlns:draw=\\\"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\\\"\\n xmlns:of=\\\"urn:oasis:names:tc:opendocument:xmlns:of:1.2\\\"\\n xmlns:text=\\\"urn:oasis:names:tc:opendocument:xmlns:text:1.0\\\"\\n xmlns:style=\\\"urn:oasis:names:tc:opendocument:xmlns:style:1.0\\\"\\n xmlns:dc=\\\"http://purl.org/dc/elements/1.1/\\\"\\n xmlns:calcext=\\\"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0\\\"\\n xmlns:oooc=\\\"http://openoffice.org/2004/calc\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"\\n xmlns:drawooo=\\\"http://openoffice.org/2010/draw\\\" xmlns:ooow=\\\"http://openoffice.org/2004/writer\\\"\\n xmlns:fo=\\\"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\\\"\\n xmlns:ooo=\\\"http://openoffice.org/2004/office\\\"\\n xmlns:office=\\\"urn:oasis:names:tc:opendocument:xmlns:office:1.0\\\" office:version=\\\"1.3\\\">\\n <office:font-face-decls>\\n <style:font-face style:name=\\\"Geist Mono\\\" svg:font-family=\\\"Geist Mono\\\" />\\n <style:font-face style:name=\\\"Inter 18pt\\\" svg:font-family=\\\"Inter 18pt\\\"\\n style:font-pitch=\\\"variable\\\" />\\n <style:font-face style:name=\\\"Liberation Serif\\\"\\n svg:font-family=\\\"&apos;Liberation Serif&apos;\\\" style:font-family-generic=\\\"roman\\\"\\n style:font-pitch=\\\"variable\\\" />\\n <style:font-face style:name=\\\"OpenSymbol\\\" svg:font-family=\\\"OpenSymbol\\\"\\n style:font-charset=\\\"x-symbol\\\" />\\n <style:font-face style:name=\\\"PingFang SC\\\" svg:font-family=\\\"&apos;PingFang SC&apos;\\\"\\n style:font-family-generic=\\\"system\\\" style:font-pitch=\\\"variable\\\" />\\n <style:font-face style:name=\\\"Tahoma\\\" svg:font-family=\\\"Tahoma\\\"\\n style:font-family-generic=\\\"system\\\" style:font-pitch=\\\"variable\\\" />\\n <style:font-face style:name=\\\"Times New Roman (Body CS)\\\"\\n svg:font-family=\\\"&apos;Times New Roman (Body CS)&apos;\\\"\\n style:font-family-generic=\\\"system\\\" style:font-pitch=\\\"variable\\\" />\\n </office:font-face-decls>\\n <office:styles>\\n <draw:gradient draw:name=\\\"Gradient_20_1\\\" draw:display-name=\\\"Gradient 1\\\" draw:style=\\\"linear\\\"\\n draw:start-color=\\\"#000000\\\" draw:end-color=\\\"#ffffff\\\" draw:start-intensity=\\\"100%\\\"\\n draw:end-intensity=\\\"100%\\\" draw:angle=\\\"0deg\\\" draw:border=\\\"0%\\\">\\n <loext:gradient-stop svg:offset=\\\"0\\\" loext:color-type=\\\"rgb\\\" loext:color-value=\\\"#000000\\\" />\\n <loext:gradient-stop svg:offset=\\\"1\\\" loext:color-type=\\\"rgb\\\" loext:color-value=\\\"#ffffff\\\" />\\n </draw:gradient>\\n <draw:hatch draw:name=\\\"Red_20_90_20_Degrees_20_Crossed_20_1\\\"\\n draw:display-name=\\\"Red 90 Degrees Crossed 1\\\" draw:style=\\\"single\\\" draw:color=\\\"#3465a4\\\"\\n draw:distance=\\\"0.0079in\\\" draw:rotation=\\\"0\\\" />\\n <style:default-style style:family=\\\"graphic\\\">\\n <style:graphic-properties svg:stroke-color=\\\"#3465a4\\\" draw:fill-color=\\\"#729fcf\\\"\\n fo:wrap-option=\\\"no-wrap\\\" draw:shadow-offset-x=\\\"0.1181in\\\"\\n draw:shadow-offset-y=\\\"0.1181in\\\" draw:start-line-spacing-horizontal=\\\"0.1114in\\\"\\n draw:start-line-spacing-vertical=\\\"0.1114in\\\"\\n draw:end-line-spacing-horizontal=\\\"0.1114in\\\"\\n draw:end-line-spacing-vertical=\\\"0.1114in\\\" style:flow-with-text=\\\"false\\\" />\\n <style:paragraph-properties style:text-autospace=\\\"ideograph-alpha\\\"\\n style:line-break=\\\"strict\\\" loext:tab-stop-distance=\\\"0in\\\" style:writing-mode=\\\"lr-tb\\\"\\n style:font-independent-line-spacing=\\\"false\\\">\\n <style:tab-stops />\\n </style:paragraph-properties>\\n <style:text-properties style:font-name=\\\"Inter 18pt\\\"\\n fo:font-family=\\\"Inter 18pt\\\" style:font-style-name=\\\"Regular\\\"\\n style:font-pitch=\\\"variable\\\" style:font-name-complex=\\\"Times New Roman (Body CS)\\\"\\n style:font-family-complex=\\\"&apos;Times New Roman (Body CS)&apos;\\\"\\n style:font-family-generic-complex=\\\"system\\\" style:font-pitch-complex=\\\"variable\\\"\\n style:use-window-font-color=\\\"true\\\" loext:opacity=\\\"0%\\\"\\n fo:font-size=\\\"12pt\\\" fo:language=\\\"en\\\" fo:country=\\\"NL\\\"\\n style:letter-kerning=\\\"true\\\" style:font-size-asian=\\\"12pt\\\"\\n style:language-asian=\\\"en\\\" style:country-asian=\\\"GB\\\"\\n style:font-size-complex=\\\"12pt\\\" style:language-complex=\\\"ar\\\"\\n style:country-complex=\\\"SA\\\" />\\n </style:default-style>\\n <style:default-style style:family=\\\"paragraph\\\">\\n <style:paragraph-properties fo:hyphenation-ladder-count=\\\"no-limit\\\"\\n fo:hyphenation-keep=\\\"auto\\\" loext:hyphenation-keep-type=\\\"column\\\"\\n style:text-autospace=\\\"ideograph-alpha\\\" style:punctuation-wrap=\\\"hanging\\\"\\n style:line-break=\\\"strict\\\" style:tab-stop-distance=\\\"0.139in\\\"\\n style:writing-mode=\\\"page\\\" />\\n <style:text-properties style:font-name=\\\"Inter 18pt\\\"\\n fo:font-family=\\\"Inter 18pt\\\" style:font-style-name=\\\"Regular\\\"\\n style:font-pitch=\\\"variable\\\" style:font-name-complex=\\\"Times New Roman (Body CS)\\\"\\n style:font-family-complex=\\\"&apos;Times New Roman (Body CS)&apos;\\\"\\n style:font-family-generic-complex=\\\"system\\\" style:font-pitch-complex=\\\"variable\\\"\\n style:use-window-font-color=\\\"true\\\" loext:opacity=\\\"0%\\\"\\n fo:font-size=\\\"12pt\\\" fo:language=\\\"en\\\" fo:country=\\\"NL\\\"\\n style:letter-kerning=\\\"true\\\" style:font-size-asian=\\\"12pt\\\"\\n style:language-asian=\\\"en\\\" style:country-asian=\\\"GB\\\"\\n style:font-size-complex=\\\"12pt\\\" style:language-complex=\\\"ar\\\"\\n style:country-complex=\\\"SA\\\" fo:hyphenate=\\\"false\\\" fo:hyphenation-remain-char-count=\\\"2\\\"\\n fo:hyphenation-push-char-count=\\\"2\\\" loext:hyphenation-no-caps=\\\"false\\\"\\n loext:hyphenation-no-last-word=\\\"false\\\" loext:hyphenation-word-char-count=\\\"5\\\"\\n loext:hyphenation-zone=\\\"no-limit\\\" />\\n </style:default-style>\\n <style:default-style style:family=\\\"table\\\">\\n <style:table-properties table:border-model=\\\"collapsing\\\" />\\n </style:default-style>\\n <style:default-style style:family=\\\"table-row\\\">\\n <style:table-row-properties fo:keep-together=\\\"auto\\\" />\\n </style:default-style>\\n <style:style style:name=\\\"Standard\\\" style:family=\\\"paragraph\\\" style:class=\\\"text\\\">\\n <style:paragraph-properties fo:margin-top=\\\"0.0311in\\\" fo:margin-bottom=\\\"0.0311in\\\"\\n style:contextual-spacing=\\\"false\\\" fo:line-height=\\\"150%\\\" fo:text-align=\\\"start\\\"\\n style:justify-single-word=\\\"false\\\" fo:orphans=\\\"2\\\" fo:widows=\\\"2\\\"\\n style:writing-mode=\\\"lr-tb\\\" />\\n <style:text-properties style:font-name=\\\"Inter 18pt\\\"\\n fo:font-family=\\\"Inter 18pt\\\" style:font-style-name=\\\"Regular\\\"\\n style:font-pitch=\\\"variable\\\" style:font-name-complex=\\\"Times New Roman (Body CS)\\\"\\n style:font-family-complex=\\\"&apos;Times New Roman (Body CS)&apos;\\\"\\n style:font-family-generic-complex=\\\"system\\\" style:font-pitch-complex=\\\"variable\\\" />\\n </style:style>\\n <style:style style:name=\\\"Heading\\\" style:family=\\\"paragraph\\\"\\n style:parent-style-name=\\\"Standard\\\" style:next-style-name=\\\"Text_20_body\\\"\\n style:class=\\\"text\\\">\\n <style:paragraph-properties fo:margin-top=\\\"0.1665in\\\" fo:margin-bottom=\\\"0.0835in\\\"\\n style:contextual-spacing=\\\"false\\\" fo:keep-with-next=\\\"always\\\" />\\n <style:text-properties style:font-family-generic=\\\"swiss\\\"\\n style:font-pitch=\\\"variable\\\" fo:font-size=\\\"14pt\\\" style:font-name-asian=\\\"PingFang SC\\\"\\n style:font-family-asian=\\\"&apos;PingFang SC&apos;\\\"\\n style:font-family-generic-asian=\\\"system\\\" style:font-pitch-asian=\\\"variable\\\"\\n style:font-size-asian=\\\"14pt\\\" style:font-name-complex=\\\"Arial Unicode MS1\\\"\\n style:font-family-complex=\\\"&apos;Arial Unicode MS&apos;\\\"\\n style:font-family-generic-complex=\\\"system\\\" style:font-pitch-complex=\\\"variable\\\"\\n style:font-size-complex=\\\"14pt\\\" />\\n </style:style>\\n <style:style style:name=\\\"Text_20_body\\\" style:display-name=\\\"Text body\\\"\\n style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\" style:class=\\\"text\\\">\\n <style:paragraph-properties fo:margin-top=\\\"0in\\\" fo:margin-bottom=\\\"0.0972in\\\"\\n style:contextual-spacing=\\\"false\\\" fo:line-height=\\\"115%\\\" />\\n </style:style>\\n <style:style style:name=\\\"List\\\" style:family=\\\"paragraph\\\"\\n style:parent-style-name=\\\"Text_20_body\\\" style:class=\\\"list\\\">\\n <style:text-properties style:font-size-asian=\\\"12pt\\\"\\n style:font-name-complex=\\\"Arial Unicode MS\\\"\\n style:font-family-complex=\\\"&apos;Arial Unicode MS&apos;\\\"\\n style:font-family-generic-complex=\\\"swiss\\\" />\\n </style:style>\\n <style:style style:name=\\\"Caption\\\" style:family=\\\"paragraph\\\"\\n style:parent-style-name=\\\"Standard\\\" style:next-style-name=\\\"Standard\\\" style:class=\\\"extra\\\">\\n <style:paragraph-properties fo:margin-top=\\\"0in\\\" fo:margin-bottom=\\\"0.139in\\\"\\n style:contextual-spacing=\\\"false\\\" fo:line-height=\\\"100%\\\" />\\n <style:text-properties fo:color=\\\"#0e2841\\\" loext:opacity=\\\"100%\\\" fo:font-size=\\\"9pt\\\"\\n fo:font-style=\\\"italic\\\" style:font-size-asian=\\\"9pt\\\" style:font-style-asian=\\\"italic\\\"\\n style:font-size-complex=\\\"9pt\\\" style:font-style-complex=\\\"italic\\\">\\n <loext:char-complex-color loext:theme-type=\\\"dark2\\\" loext:color-type=\\\"theme\\\" />\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Index\\\" style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\"\\n style:class=\\\"index\\\">\\n <style:paragraph-properties text:number-lines=\\\"false\\\" text:line-number=\\\"0\\\" />\\n <style:text-properties style:font-size-asian=\\\"12pt\\\"\\n style:font-name-complex=\\\"Arial Unicode MS\\\"\\n style:font-family-complex=\\\"&apos;Arial Unicode MS&apos;\\\"\\n style:font-family-generic-complex=\\\"swiss\\\" />\\n </style:style>\\n <style:style style:name=\\\"Heading_20_1\\\" style:display-name=\\\"Heading 1\\\"\\n style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\"\\n style:next-style-name=\\\"Standard\\\" loext:linked-style-name=\\\"Heading_20_1_20_Char\\\"\\n style:default-outline-level=\\\"1\\\" style:list-style-name=\\\"\\\" style:class=\\\"text\\\">\\n <style:text-properties fo:font-size=\\\"24pt\\\" fo:font-weight=\\\"bold\\\"\\n style:font-size-asian=\\\"24pt\\\" style:font-weight-asian=\\\"bold\\\"\\n style:font-size-complex=\\\"24pt\\\" />\\n </style:style>\\n <style:style style:name=\\\"Heading_20_2\\\" style:display-name=\\\"Heading 2\\\"\\n style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\"\\n style:next-style-name=\\\"Standard\\\" loext:linked-style-name=\\\"Heading_20_2_20_Char\\\"\\n style:default-outline-level=\\\"2\\\" style:list-style-name=\\\"\\\" style:class=\\\"text\\\">\\n <style:text-properties fo:font-size=\\\"18pt\\\" fo:font-weight=\\\"bold\\\"\\n style:font-size-asian=\\\"18pt\\\" style:font-weight-asian=\\\"bold\\\"\\n style:font-size-complex=\\\"18pt\\\" />\\n </style:style>\\n <style:style style:name=\\\"Heading_20_3\\\" style:display-name=\\\"Heading 3\\\"\\n style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\"\\n style:next-style-name=\\\"Standard\\\" loext:linked-style-name=\\\"Heading_20_3_20_Char\\\"\\n style:default-outline-level=\\\"3\\\" style:list-style-name=\\\"\\\" style:class=\\\"text\\\">\\n <style:text-properties fo:font-size=\\\"14pt\\\" fo:font-weight=\\\"bold\\\"\\n style:font-size-asian=\\\"14pt\\\" style:font-weight-asian=\\\"bold\\\"\\n style:font-size-complex=\\\"14pt\\\" />\\n </style:style>\\n <style:style style:name=\\\"Heading_20_4\\\" style:display-name=\\\"Heading 4\\\"\\n style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\"\\n style:next-style-name=\\\"Standard\\\" loext:linked-style-name=\\\"Heading_20_4_20_Char\\\"\\n style:default-outline-level=\\\"4\\\" style:list-style-name=\\\"\\\" style:class=\\\"text\\\">\\n <style:paragraph-properties fo:margin-top=\\\"0.0555in\\\" fo:margin-bottom=\\\"0.028in\\\"\\n style:contextual-spacing=\\\"false\\\" fo:keep-together=\\\"always\\\"\\n fo:keep-with-next=\\\"always\\\" />\\n <style:text-properties fo:color=\\\"#0f4761\\\" loext:opacity=\\\"100%\\\" fo:font-style=\\\"italic\\\"\\n style:font-name-asian=\\\"F2\\\" style:font-family-generic-asian=\\\"system\\\"\\n style:font-pitch-asian=\\\"variable\\\" style:font-style-asian=\\\"italic\\\"\\n style:font-name-complex=\\\"F2\\\" style:font-family-generic-complex=\\\"system\\\"\\n style:font-pitch-complex=\\\"variable\\\" style:font-style-complex=\\\"italic\\\">\\n <loext:char-complex-color loext:theme-type=\\\"accent1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"shade\\\" loext:value=\\\"2509\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Heading_20_5\\\" style:display-name=\\\"Heading 5\\\"\\n style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\"\\n style:next-style-name=\\\"Standard\\\" loext:linked-style-name=\\\"Heading_20_5_20_Char\\\"\\n style:default-outline-level=\\\"5\\\" style:list-style-name=\\\"\\\" style:class=\\\"text\\\">\\n <style:paragraph-properties fo:margin-top=\\\"0.0555in\\\" fo:margin-bottom=\\\"0.028in\\\"\\n style:contextual-spacing=\\\"false\\\" fo:keep-together=\\\"always\\\"\\n fo:keep-with-next=\\\"always\\\" />\\n <style:text-properties fo:color=\\\"#0f4761\\\" loext:opacity=\\\"100%\\\"\\n style:font-name-asian=\\\"F2\\\" style:font-family-generic-asian=\\\"system\\\"\\n style:font-pitch-asian=\\\"variable\\\" style:font-name-complex=\\\"F2\\\"\\n style:font-family-generic-complex=\\\"system\\\" style:font-pitch-complex=\\\"variable\\\">\\n <loext:char-complex-color loext:theme-type=\\\"accent1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"shade\\\" loext:value=\\\"2509\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Heading_20_6\\\" style:display-name=\\\"Heading 6\\\"\\n style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\"\\n style:next-style-name=\\\"Standard\\\" loext:linked-style-name=\\\"Heading_20_6_20_Char\\\"\\n style:default-outline-level=\\\"6\\\" style:list-style-name=\\\"\\\" style:class=\\\"text\\\">\\n <style:paragraph-properties fo:margin-top=\\\"0.028in\\\" fo:margin-bottom=\\\"0in\\\"\\n style:contextual-spacing=\\\"false\\\" fo:keep-together=\\\"always\\\"\\n fo:keep-with-next=\\\"always\\\" />\\n <style:text-properties fo:color=\\\"#595959\\\" loext:opacity=\\\"100%\\\" fo:font-style=\\\"italic\\\"\\n style:font-name-asian=\\\"F2\\\" style:font-family-generic-asian=\\\"system\\\"\\n style:font-pitch-asian=\\\"variable\\\" style:font-style-asian=\\\"italic\\\"\\n style:font-name-complex=\\\"F2\\\" style:font-family-generic-complex=\\\"system\\\"\\n style:font-pitch-complex=\\\"variable\\\" style:font-style-complex=\\\"italic\\\">\\n <loext:char-complex-color loext:theme-type=\\\"dark1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"tint\\\" loext:value=\\\"3490\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Heading_20_7\\\" style:display-name=\\\"Heading 7\\\"\\n style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\"\\n style:next-style-name=\\\"Standard\\\" loext:linked-style-name=\\\"Heading_20_7_20_Char\\\"\\n style:default-outline-level=\\\"7\\\" style:list-style-name=\\\"\\\" style:class=\\\"text\\\">\\n <style:paragraph-properties fo:margin-top=\\\"0.028in\\\" fo:margin-bottom=\\\"0in\\\"\\n style:contextual-spacing=\\\"false\\\" fo:keep-together=\\\"always\\\"\\n fo:keep-with-next=\\\"always\\\" />\\n <style:text-properties fo:color=\\\"#595959\\\" loext:opacity=\\\"100%\\\"\\n style:font-name-asian=\\\"F2\\\" style:font-family-generic-asian=\\\"system\\\"\\n style:font-pitch-asian=\\\"variable\\\" style:font-name-complex=\\\"F2\\\"\\n style:font-family-generic-complex=\\\"system\\\" style:font-pitch-complex=\\\"variable\\\">\\n <loext:char-complex-color loext:theme-type=\\\"dark1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"tint\\\" loext:value=\\\"3490\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Heading_20_8\\\" style:display-name=\\\"Heading 8\\\"\\n style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\"\\n style:next-style-name=\\\"Standard\\\" loext:linked-style-name=\\\"Heading_20_8_20_Char\\\"\\n style:default-outline-level=\\\"8\\\" style:list-style-name=\\\"\\\" style:class=\\\"text\\\">\\n <style:paragraph-properties fo:margin-top=\\\"0.0311in\\\" fo:margin-bottom=\\\"0in\\\"\\n style:contextual-spacing=\\\"false\\\" fo:keep-together=\\\"always\\\"\\n fo:keep-with-next=\\\"always\\\" />\\n <style:text-properties fo:color=\\\"#272727\\\" loext:opacity=\\\"100%\\\" fo:font-style=\\\"italic\\\"\\n style:font-name-asian=\\\"F2\\\" style:font-family-generic-asian=\\\"system\\\"\\n style:font-pitch-asian=\\\"variable\\\" style:font-style-asian=\\\"italic\\\"\\n style:font-name-complex=\\\"F2\\\" style:font-family-generic-complex=\\\"system\\\"\\n style:font-pitch-complex=\\\"variable\\\" style:font-style-complex=\\\"italic\\\">\\n <loext:char-complex-color loext:theme-type=\\\"dark1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"tint\\\" loext:value=\\\"1529\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Heading_20_9\\\" style:display-name=\\\"Heading 9\\\"\\n style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\"\\n style:next-style-name=\\\"Standard\\\" loext:linked-style-name=\\\"Heading_20_9_20_Char\\\"\\n style:default-outline-level=\\\"9\\\" style:list-style-name=\\\"\\\" style:class=\\\"text\\\">\\n <style:paragraph-properties fo:margin-top=\\\"0.0311in\\\" fo:margin-bottom=\\\"0in\\\"\\n style:contextual-spacing=\\\"false\\\" fo:keep-together=\\\"always\\\"\\n fo:keep-with-next=\\\"always\\\" />\\n <style:text-properties fo:color=\\\"#272727\\\" loext:opacity=\\\"100%\\\"\\n style:font-name-asian=\\\"F2\\\" style:font-family-generic-asian=\\\"system\\\"\\n style:font-pitch-asian=\\\"variable\\\" style:font-name-complex=\\\"F2\\\"\\n style:font-family-generic-complex=\\\"system\\\" style:font-pitch-complex=\\\"variable\\\">\\n <loext:char-complex-color loext:theme-type=\\\"dark1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"tint\\\" loext:value=\\\"1529\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Title\\\" style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\"\\n style:next-style-name=\\\"Standard\\\" loext:linked-style-name=\\\"Title_20_Char\\\"\\n style:class=\\\"chapter\\\">\\n <style:paragraph-properties fo:margin-top=\\\"0.0311in\\\" fo:margin-bottom=\\\"0.0555in\\\"\\n style:contextual-spacing=\\\"true\\\" fo:line-height=\\\"100%\\\" />\\n <style:text-properties\\n fo:font-size=\\\"28pt\\\" fo:letter-spacing=\\\"-0.0071in\\\" style:letter-kerning=\\\"true\\\"\\n style:font-name-asian=\\\"F2\\\" style:font-family-generic-asian=\\\"system\\\"\\n style:font-pitch-asian=\\\"variable\\\" style:font-size-asian=\\\"28pt\\\"\\n style:font-name-complex=\\\"F2\\\" style:font-family-generic-complex=\\\"system\\\"\\n style:font-pitch-complex=\\\"variable\\\" style:font-size-complex=\\\"28pt\\\" />\\n </style:style>\\n <style:style style:name=\\\"Subtitle\\\" style:family=\\\"paragraph\\\"\\n style:parent-style-name=\\\"Standard\\\" style:next-style-name=\\\"Standard\\\"\\n loext:linked-style-name=\\\"Subtitle_20_Char\\\" style:class=\\\"chapter\\\">\\n <style:text-properties fo:color=\\\"#595959\\\" loext:opacity=\\\"100%\\\" fo:font-size=\\\"14pt\\\"\\n fo:letter-spacing=\\\"0.0102in\\\" style:font-name-asian=\\\"F2\\\"\\n style:font-family-generic-asian=\\\"system\\\" style:font-pitch-asian=\\\"variable\\\"\\n style:font-size-asian=\\\"14pt\\\" style:font-name-complex=\\\"F2\\\"\\n style:font-family-generic-complex=\\\"system\\\" style:font-pitch-complex=\\\"variable\\\"\\n style:font-size-complex=\\\"14pt\\\">\\n <loext:char-complex-color loext:theme-type=\\\"dark1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"tint\\\" loext:value=\\\"3490\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Quote\\\" style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\"\\n style:next-style-name=\\\"Standard\\\" loext:linked-style-name=\\\"Quote_20_Char\\\">\\n <style:paragraph-properties fo:margin-top=\\\"0.111in\\\" fo:margin-bottom=\\\"0.0311in\\\"\\n style:contextual-spacing=\\\"false\\\" fo:text-align=\\\"center\\\"\\n style:justify-single-word=\\\"false\\\" />\\n <style:text-properties fo:color=\\\"#404040\\\" loext:opacity=\\\"100%\\\" fo:font-style=\\\"italic\\\"\\n style:font-style-asian=\\\"italic\\\" style:font-style-complex=\\\"italic\\\">\\n <loext:char-complex-color loext:theme-type=\\\"dark1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"tint\\\" loext:value=\\\"2509\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"List_20_Paragraph\\\" style:display-name=\\\"List Paragraph\\\"\\n style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\">\\n <style:paragraph-properties fo:margin-left=\\\"0.5in\\\" fo:margin-top=\\\"0.0311in\\\"\\n fo:margin-bottom=\\\"0.0311in\\\" style:contextual-spacing=\\\"true\\\" />\\n </style:style>\\n <style:style style:name=\\\"Intense_20_Quote\\\" style:display-name=\\\"Intense Quote\\\"\\n style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Standard\\\"\\n style:next-style-name=\\\"Standard\\\" loext:linked-style-name=\\\"Intense_20_Quote_20_Char\\\">\\n <style:paragraph-properties fo:margin-left=\\\"0.6in\\\" fo:margin-right=\\\"0.6in\\\"\\n fo:margin-top=\\\"0.25in\\\" fo:margin-bottom=\\\"0.25in\\\" style:contextual-spacing=\\\"false\\\"\\n fo:text-align=\\\"center\\\" style:justify-single-word=\\\"false\\\" fo:padding-left=\\\"0in\\\"\\n fo:padding-right=\\\"0in\\\" fo:padding-top=\\\"0.139in\\\" fo:padding-bottom=\\\"0.139in\\\"\\n fo:border-left=\\\"none\\\" fo:border-right=\\\"none\\\" fo:border-top=\\\"0.51pt solid #0f4761\\\"\\n fo:border-bottom=\\\"0.51pt solid #0f4761\\\" />\\n <style:text-properties fo:color=\\\"#0f4761\\\" loext:opacity=\\\"100%\\\" fo:font-style=\\\"italic\\\"\\n style:font-style-asian=\\\"italic\\\" style:font-style-complex=\\\"italic\\\">\\n <loext:char-complex-color loext:theme-type=\\\"accent1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"shade\\\" loext:value=\\\"2509\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"PageBreak\\\" style:family=\\\"paragraph\\\"\\n style:parent-style-name=\\\"Standard\\\">\\n <style:paragraph-properties fo:break-before=\\\"page\\\" />\\n </style:style>\\n <style:style style:name=\\\"Codeblock\\\" style:family=\\\"paragraph\\\"\\n style:parent-style-name=\\\"Standard\\\">\\n <loext:graphic-properties draw:fill=\\\"solid\\\" draw:fill-color=\\\"#161616\\\" />\\n <style:paragraph-properties fo:line-height=\\\"100%\\\" fo:background-color=\\\"#161616\\\" />\\n <style:text-properties fo:color=\\\"#e1e4e8\\\" loext:opacity=\\\"100%\\\"\\n style:font-name=\\\"Geist Mono\\\"\\n fo:font-family=\\\"Geist Mono\\\" />\\n </style:style>\\n <style:style style:name=\\\"Heading_20_1_20_Char\\\" style:display-name=\\\"Heading 1 Char\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\"\\n loext:linked-style-name=\\\"Heading_20_1\\\">\\n <style:text-properties fo:font-size=\\\"20pt\\\"\\n style:font-size-asian=\\\"20pt\\\"\\n style:font-size-complex=\\\"20pt\\\" />\\n </style:style>\\n <style:style style:name=\\\"Heading_20_2_20_Char\\\" style:display-name=\\\"Heading 2 Char\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\"\\n loext:linked-style-name=\\\"Heading_20_2\\\">\\n <style:text-properties fo:color=\\\"#0f4761\\\" loext:opacity=\\\"100%\\\" fo:font-size=\\\"16pt\\\"\\n style:font-size-asian=\\\"16pt\\\" style:font-size-complex=\\\"16pt\\\">\\n <loext:char-complex-color loext:theme-type=\\\"accent1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"shade\\\" loext:value=\\\"2509\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Heading_20_3_20_Char\\\" style:display-name=\\\"Heading 3 Char\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\"\\n loext:linked-style-name=\\\"Heading_20_3\\\">\\n <style:text-properties fo:color=\\\"#0f4761\\\" loext:opacity=\\\"100%\\\" fo:font-size=\\\"14pt\\\"\\n style:font-name-asian=\\\"F2\\\" style:font-family-generic-asian=\\\"system\\\"\\n style:font-pitch-asian=\\\"variable\\\" style:font-size-asian=\\\"14pt\\\"\\n style:font-name-complex=\\\"F2\\\" style:font-family-generic-complex=\\\"system\\\"\\n style:font-pitch-complex=\\\"variable\\\" style:font-size-complex=\\\"14pt\\\">\\n <loext:char-complex-color loext:theme-type=\\\"accent1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"shade\\\" loext:value=\\\"2509\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Heading_20_4_20_Char\\\" style:display-name=\\\"Heading 4 Char\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\"\\n loext:linked-style-name=\\\"Heading_20_4\\\">\\n <style:text-properties fo:color=\\\"#0f4761\\\" loext:opacity=\\\"100%\\\" fo:font-style=\\\"italic\\\"\\n style:font-name-asian=\\\"F2\\\" style:font-family-generic-asian=\\\"system\\\"\\n style:font-pitch-asian=\\\"variable\\\" style:font-style-asian=\\\"italic\\\"\\n style:font-name-complex=\\\"F2\\\" style:font-family-generic-complex=\\\"system\\\"\\n style:font-pitch-complex=\\\"variable\\\" style:font-style-complex=\\\"italic\\\">\\n <loext:char-complex-color loext:theme-type=\\\"accent1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"shade\\\" loext:value=\\\"2509\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Heading_20_5_20_Char\\\" style:display-name=\\\"Heading 5 Char\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\"\\n loext:linked-style-name=\\\"Heading_20_5\\\">\\n <style:text-properties fo:color=\\\"#0f4761\\\" loext:opacity=\\\"100%\\\"\\n style:font-name-asian=\\\"F2\\\" style:font-family-generic-asian=\\\"system\\\"\\n style:font-pitch-asian=\\\"variable\\\" style:font-name-complex=\\\"F2\\\"\\n style:font-family-generic-complex=\\\"system\\\" style:font-pitch-complex=\\\"variable\\\">\\n <loext:char-complex-color loext:theme-type=\\\"accent1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"shade\\\" loext:value=\\\"2509\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Heading_20_6_20_Char\\\" style:display-name=\\\"Heading 6 Char\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\"\\n loext:linked-style-name=\\\"Heading_20_6\\\">\\n <style:text-properties fo:color=\\\"#595959\\\" loext:opacity=\\\"100%\\\" fo:font-style=\\\"italic\\\"\\n style:font-name-asian=\\\"F2\\\" style:font-family-generic-asian=\\\"system\\\"\\n style:font-pitch-asian=\\\"variable\\\" style:font-style-asian=\\\"italic\\\"\\n style:font-name-complex=\\\"F2\\\" style:font-family-generic-complex=\\\"system\\\"\\n style:font-pitch-complex=\\\"variable\\\" style:font-style-complex=\\\"italic\\\">\\n <loext:char-complex-color loext:theme-type=\\\"dark1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"tint\\\" loext:value=\\\"3490\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Heading_20_7_20_Char\\\" style:display-name=\\\"Heading 7 Char\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\"\\n loext:linked-style-name=\\\"Heading_20_7\\\">\\n <style:text-properties fo:color=\\\"#595959\\\" loext:opacity=\\\"100%\\\"\\n style:font-name-asian=\\\"F2\\\" style:font-family-generic-asian=\\\"system\\\"\\n style:font-pitch-asian=\\\"variable\\\" style:font-name-complex=\\\"F2\\\"\\n style:font-family-generic-complex=\\\"system\\\" style:font-pitch-complex=\\\"variable\\\">\\n <loext:char-complex-color loext:theme-type=\\\"dark1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"tint\\\" loext:value=\\\"3490\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Heading_20_8_20_Char\\\" style:display-name=\\\"Heading 8 Char\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\"\\n loext:linked-style-name=\\\"Heading_20_8\\\">\\n <style:text-properties fo:color=\\\"#272727\\\" loext:opacity=\\\"100%\\\" fo:font-style=\\\"italic\\\"\\n style:font-name-asian=\\\"F2\\\" style:font-family-generic-asian=\\\"system\\\"\\n style:font-pitch-asian=\\\"variable\\\" style:font-style-asian=\\\"italic\\\"\\n style:font-name-complex=\\\"F2\\\" style:font-family-generic-complex=\\\"system\\\"\\n style:font-pitch-complex=\\\"variable\\\" style:font-style-complex=\\\"italic\\\">\\n <loext:char-complex-color loext:theme-type=\\\"dark1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"tint\\\" loext:value=\\\"1529\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Heading_20_9_20_Char\\\" style:display-name=\\\"Heading 9 Char\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\"\\n loext:linked-style-name=\\\"Heading_20_9\\\">\\n <style:text-properties fo:color=\\\"#272727\\\" loext:opacity=\\\"100%\\\"\\n style:font-name-asian=\\\"F2\\\" style:font-family-generic-asian=\\\"system\\\"\\n style:font-pitch-asian=\\\"variable\\\" style:font-name-complex=\\\"F2\\\"\\n style:font-family-generic-complex=\\\"system\\\" style:font-pitch-complex=\\\"variable\\\">\\n <loext:char-complex-color loext:theme-type=\\\"dark1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"tint\\\" loext:value=\\\"1529\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Title_20_Char\\\" style:display-name=\\\"Title Char\\\" style:family=\\\"text\\\"\\n style:parent-style-name=\\\"Standard\\\" loext:linked-style-name=\\\"Title\\\">\\n <style:text-properties style:font-name=\\\"Inter 18pt\\\" fo:font-size=\\\"28pt\\\"\\n fo:letter-spacing=\\\"-0.0071in\\\"\\n style:letter-kerning=\\\"true\\\"\\n style:font-size-asian=\\\"28pt\\\"\\n style:font-size-complex=\\\"28pt\\\" />\\n </style:style>\\n <style:style style:name=\\\"Subtitle_20_Char\\\" style:display-name=\\\"Subtitle Char\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\"\\n loext:linked-style-name=\\\"Subtitle\\\">\\n <style:text-properties fo:color=\\\"#595959\\\" loext:opacity=\\\"100%\\\" fo:font-size=\\\"14pt\\\"\\n fo:letter-spacing=\\\"0.0102in\\\" style:font-name-asian=\\\"F2\\\"\\n style:font-family-generic-asian=\\\"system\\\" style:font-pitch-asian=\\\"variable\\\"\\n style:font-size-asian=\\\"14pt\\\" style:font-name-complex=\\\"F2\\\"\\n style:font-family-generic-complex=\\\"system\\\" style:font-pitch-complex=\\\"variable\\\"\\n style:font-size-complex=\\\"14pt\\\">\\n <loext:char-complex-color loext:theme-type=\\\"dark1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"tint\\\" loext:value=\\\"3490\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Quote_20_Char\\\" style:display-name=\\\"Quote Char\\\" style:family=\\\"text\\\"\\n style:parent-style-name=\\\"Standard\\\" loext:linked-style-name=\\\"Quote\\\">\\n <style:text-properties fo:color=\\\"#404040\\\" loext:opacity=\\\"100%\\\" fo:font-style=\\\"italic\\\"\\n style:font-style-asian=\\\"italic\\\" style:font-style-complex=\\\"italic\\\">\\n <loext:char-complex-color loext:theme-type=\\\"dark1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"tint\\\" loext:value=\\\"2509\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Intense_20_Emphasis\\\" style:display-name=\\\"Intense Emphasis\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\">\\n <style:text-properties fo:color=\\\"#0f4761\\\" loext:opacity=\\\"100%\\\" fo:font-style=\\\"italic\\\"\\n style:font-style-asian=\\\"italic\\\" style:font-style-complex=\\\"italic\\\">\\n <loext:char-complex-color loext:theme-type=\\\"accent1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"shade\\\" loext:value=\\\"2509\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Intense_20_Quote_20_Char\\\" style:display-name=\\\"Intense Quote Char\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\"\\n loext:linked-style-name=\\\"Intense_20_Quote\\\">\\n <style:text-properties fo:color=\\\"#0f4761\\\" loext:opacity=\\\"100%\\\" fo:font-style=\\\"italic\\\"\\n style:font-style-asian=\\\"italic\\\" style:font-style-complex=\\\"italic\\\">\\n <loext:char-complex-color loext:theme-type=\\\"accent1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"shade\\\" loext:value=\\\"2509\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Intense_20_Reference\\\" style:display-name=\\\"Intense Reference\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\">\\n <style:text-properties fo:font-variant=\\\"small-caps\\\" fo:color=\\\"#0f4761\\\"\\n loext:opacity=\\\"100%\\\" fo:letter-spacing=\\\"0.0035in\\\" fo:font-weight=\\\"bold\\\"\\n style:font-weight-asian=\\\"bold\\\" style:font-weight-complex=\\\"bold\\\">\\n <loext:char-complex-color loext:theme-type=\\\"accent1\\\" loext:color-type=\\\"theme\\\">\\n <loext:transformation loext:type=\\\"shade\\\" loext:value=\\\"2509\\\" />\\n </loext:char-complex-color>\\n </style:text-properties>\\n </style:style>\\n <style:style style:name=\\\"Internet_20_link\\\" style:display-name=\\\"Internet link\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\">\\n <style:text-properties style:font-name=\\\"Inter 18pt\\\" style:font-name-asian=\\\"Inter 18pt\\\"\\n style:font-name-complex=\\\"Times New Roman (Body CS)\\\" fo:color=\\\"#0000ef\\\"\\n loext:opacity=\\\"100%\\\"\\n style:text-underline-type=\\\"single\\\" style:text-underline-style=\\\"solid\\\"\\n style:text-underline-width=\\\"auto\\\" style:text-underline-mode=\\\"continuous\\\"\\n style:text-underline-color=\\\"font-color\\\" />\\n </style:style>\\n <style:style style:name=\\\"Unresolved_20_Mention\\\" style:display-name=\\\"Unresolved Mention\\\"\\n style:family=\\\"text\\\" style:parent-style-name=\\\"Standard\\\">\\n <style:text-properties fo:color=\\\"#605e5c\\\" loext:opacity=\\\"100%\\\"\\n fo:background-color=\\\"#e1dfdd\\\" />\\n </style:style>\\n <style:style style:name=\\\"ListLabel_20_1\\\" style:display-name=\\\"ListLabel 1\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_2\\\" style:display-name=\\\"ListLabel 2\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_3\\\" style:display-name=\\\"ListLabel 3\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_4\\\" style:display-name=\\\"ListLabel 4\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_5\\\" style:display-name=\\\"ListLabel 5\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_6\\\" style:display-name=\\\"ListLabel 6\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_7\\\" style:display-name=\\\"ListLabel 7\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_8\\\" style:display-name=\\\"ListLabel 8\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_9\\\" style:display-name=\\\"ListLabel 9\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_10\\\" style:display-name=\\\"ListLabel 10\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_11\\\" style:display-name=\\\"ListLabel 11\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_12\\\" style:display-name=\\\"ListLabel 12\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_13\\\" style:display-name=\\\"ListLabel 13\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_14\\\" style:display-name=\\\"ListLabel 14\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_15\\\" style:display-name=\\\"ListLabel 15\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_16\\\" style:display-name=\\\"ListLabel 16\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_17\\\" style:display-name=\\\"ListLabel 17\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_18\\\" style:display-name=\\\"ListLabel 18\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_19\\\" style:display-name=\\\"ListLabel 19\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_20\\\" style:display-name=\\\"ListLabel 20\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_21\\\" style:display-name=\\\"ListLabel 21\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_22\\\" style:display-name=\\\"ListLabel 22\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_23\\\" style:display-name=\\\"ListLabel 23\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_24\\\" style:display-name=\\\"ListLabel 24\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_25\\\" style:display-name=\\\"ListLabel 25\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_26\\\" style:display-name=\\\"ListLabel 26\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_27\\\" style:display-name=\\\"ListLabel 27\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"ListLabel_20_28\\\" style:display-name=\\\"ListLabel 28\\\"\\n style:family=\\\"text\\\" />\\n <style:style style:name=\\\"Graphics\\\" style:family=\\\"graphic\\\">\\n <style:graphic-properties text:anchor-type=\\\"paragraph\\\" svg:x=\\\"0in\\\" svg:y=\\\"0in\\\"\\n style:wrap=\\\"dynamic\\\" style:number-wrapped-paragraphs=\\\"no-limit\\\"\\n style:wrap-contour=\\\"false\\\" style:vertical-pos=\\\"top\\\" style:vertical-rel=\\\"paragraph\\\"\\n style:horizontal-pos=\\\"center\\\" style:horizontal-rel=\\\"paragraph\\\" draw:fill=\\\"none\\\" />\\n </style:style>\\n <style:style style:name=\\\"Frame\\\" style:family=\\\"graphic\\\">\\n <style:graphic-properties fo:margin-left=\\\"0in\\\" fo:margin-right=\\\"0in\\\" fo:margin-top=\\\"0in\\\"\\n fo:margin-bottom=\\\"0in\\\" style:run-through=\\\"foreground\\\" style:wrap=\\\"dynamic\\\"\\n style:number-wrapped-paragraphs=\\\"no-limit\\\" style:vertical-pos=\\\"from-top\\\"\\n style:horizontal-pos=\\\"center\\\" style:horizontal-rel=\\\"paragraph\\\" fo:padding=\\\"0in\\\"\\n draw:fill=\\\"none\\\"\\n draw:stroke=\\\"none\\\"\\n fo:border=\\\"none\\\"\\n style:shadow=\\\"none\\\" svg:stroke-color=\\\"transparent\\\"\\n draw:shadow-opacity=\\\"100%\\\"\\n loext:rel-width-rel=\\\"paragraph\\\" />\\n </style:style>\\n <text:outline-style style:name=\\\"Outline\\\">\\n <text:outline-level-style text:level=\\\"1\\\" style:num-format=\\\"\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\" />\\n </style:list-level-properties>\\n </text:outline-level-style>\\n <text:outline-level-style text:level=\\\"2\\\" style:num-format=\\\"\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\" />\\n </style:list-level-properties>\\n </text:outline-level-style>\\n <text:outline-level-style text:level=\\\"3\\\" style:num-format=\\\"\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\" />\\n </style:list-level-properties>\\n </text:outline-level-style>\\n <text:outline-level-style text:level=\\\"4\\\" style:num-format=\\\"\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\" />\\n </style:list-level-properties>\\n </text:outline-level-style>\\n <text:outline-level-style text:level=\\\"5\\\" style:num-format=\\\"\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\" />\\n </style:list-level-properties>\\n </text:outline-level-style>\\n <text:outline-level-style text:level=\\\"6\\\" style:num-format=\\\"\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\" />\\n </style:list-level-properties>\\n </text:outline-level-style>\\n <text:outline-level-style text:level=\\\"7\\\" style:num-format=\\\"\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\" />\\n </style:list-level-properties>\\n </text:outline-level-style>\\n <text:outline-level-style text:level=\\\"8\\\" style:num-format=\\\"\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\" />\\n </style:list-level-properties>\\n </text:outline-level-style>\\n <text:outline-level-style text:level=\\\"9\\\" style:num-format=\\\"\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\" />\\n </style:list-level-properties>\\n </text:outline-level-style>\\n <text:outline-level-style text:level=\\\"10\\\" style:num-format=\\\"\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\" />\\n </style:list-level-properties>\\n </text:outline-level-style>\\n </text:outline-style>\\n <text:list-style style:name=\\\"No_20_List\\\" style:display-name=\\\"No List\\\">\\n <text:list-level-style-number text:level=\\\"1\\\" loext:num-list-format=\\\"%1%.\\\"\\n style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n text:list-tab-stop-position=\\\"0.5in\\\" fo:text-indent=\\\"-0.25in\\\"\\n fo:margin-left=\\\"0.5in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"2\\\" loext:num-list-format=\\\"%2%.\\\"\\n style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n text:list-tab-stop-position=\\\"0.75in\\\" fo:text-indent=\\\"-0.25in\\\"\\n fo:margin-left=\\\"0.75in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"3\\\" loext:num-list-format=\\\"%3%.\\\"\\n style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n text:list-tab-stop-position=\\\"1in\\\" fo:text-indent=\\\"-0.25in\\\"\\n fo:margin-left=\\\"1in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"4\\\" loext:num-list-format=\\\"%4%.\\\"\\n style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n text:list-tab-stop-position=\\\"1.25in\\\" fo:text-indent=\\\"-0.25in\\\"\\n fo:margin-left=\\\"1.25in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"5\\\" loext:num-list-format=\\\"%5%.\\\"\\n style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n text:list-tab-stop-position=\\\"1.5in\\\" fo:text-indent=\\\"-0.25in\\\"\\n fo:margin-left=\\\"1.5in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"6\\\" loext:num-list-format=\\\"%6%.\\\"\\n style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n text:list-tab-stop-position=\\\"1.75in\\\" fo:text-indent=\\\"-0.25in\\\"\\n fo:margin-left=\\\"1.75in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"7\\\" loext:num-list-format=\\\"%7%.\\\"\\n style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n text:list-tab-stop-position=\\\"2in\\\" fo:text-indent=\\\"-0.25in\\\"\\n fo:margin-left=\\\"2in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"8\\\" loext:num-list-format=\\\"%8%.\\\"\\n style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n text:list-tab-stop-position=\\\"2.25in\\\" fo:text-indent=\\\"-0.25in\\\"\\n fo:margin-left=\\\"2.25in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"9\\\" loext:num-list-format=\\\"%9%.\\\"\\n style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n text:list-tab-stop-position=\\\"2.5in\\\" fo:text-indent=\\\"-0.25in\\\"\\n fo:margin-left=\\\"2.5in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"10\\\" loext:num-list-format=\\\"%10%.\\\"\\n style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n text:list-tab-stop-position=\\\"2.75in\\\" fo:text-indent=\\\"-0.25in\\\"\\n fo:margin-left=\\\"2.75in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n </text:list-style>\\n <text:list-style style:name=\\\"WWNum1\\\">\\n <text:list-level-style-bullet text:level=\\\"1\\\" text:style-name=\\\"ListLabel_20_1\\\"\\n loext:num-list-format=\\\"•\\\" style:num-suffix=\\\"•\\\" text:bullet-char=\\\"•\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"0.5in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"2\\\" text:style-name=\\\"ListLabel_20_2\\\"\\n loext:num-list-format=\\\"◦\\\" style:num-suffix=\\\"◦\\\" text:bullet-char=\\\"◦\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"1in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"3\\\" text:style-name=\\\"ListLabel_20_3\\\"\\n loext:num-list-format=\\\"▪\\\" style:num-suffix=\\\"▪\\\" text:bullet-char=\\\"▪\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"1.5in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"4\\\" text:style-name=\\\"ListLabel_20_4\\\"\\n loext:num-list-format=\\\"•\\\" style:num-suffix=\\\"•\\\" text:bullet-char=\\\"•\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"2in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"5\\\" text:style-name=\\\"ListLabel_20_5\\\"\\n loext:num-list-format=\\\"◦\\\" style:num-suffix=\\\"◦\\\" text:bullet-char=\\\"◦\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"2.5in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"6\\\" text:style-name=\\\"ListLabel_20_6\\\"\\n loext:num-list-format=\\\"▪\\\" style:num-suffix=\\\"▪\\\" text:bullet-char=\\\"▪\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"3in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"7\\\" text:style-name=\\\"ListLabel_20_7\\\"\\n loext:num-list-format=\\\"•\\\" style:num-suffix=\\\"•\\\" text:bullet-char=\\\"•\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"3.5in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"8\\\" text:style-name=\\\"ListLabel_20_8\\\"\\n loext:num-list-format=\\\"•\\\" style:num-suffix=\\\"•\\\" text:bullet-char=\\\"•\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"4in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"9\\\" text:style-name=\\\"ListLabel_20_9\\\"\\n loext:num-list-format=\\\"•\\\" style:num-suffix=\\\"•\\\" text:bullet-char=\\\"•\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"4.5in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-number text:level=\\\"10\\\" loext:num-list-format=\\\"%10%.\\\"\\n style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n text:list-tab-stop-position=\\\"2.75in\\\" fo:text-indent=\\\"-0.25in\\\"\\n fo:margin-left=\\\"2.75in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n </text:list-style>\\n <text:list-style style:name=\\\"WWNum2\\\">\\n <text:list-level-style-bullet text:level=\\\"1\\\" text:style-name=\\\"ListLabel_20_10\\\"\\n loext:num-list-format=\\\"•\\\" style:num-suffix=\\\"•\\\" text:bullet-char=\\\"•\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"0.25in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"2\\\" text:style-name=\\\"ListLabel_20_11\\\"\\n loext:num-list-format=\\\"•\\\" style:num-suffix=\\\"•\\\" text:bullet-char=\\\"•\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"0.5in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"3\\\" text:style-name=\\\"ListLabel_20_12\\\"\\n loext:num-list-format=\\\"•\\\" style:num-suffix=\\\"•\\\" text:bullet-char=\\\"•\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"0.75in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"4\\\" text:style-name=\\\"ListLabel_20_13\\\"\\n loext:num-list-format=\\\"•\\\" style:num-suffix=\\\"•\\\" text:bullet-char=\\\"•\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"1in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"5\\\" text:style-name=\\\"ListLabel_20_14\\\"\\n loext:num-list-format=\\\"•\\\" style:num-suffix=\\\"•\\\" text:bullet-char=\\\"•\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"1.25in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"6\\\" text:style-name=\\\"ListLabel_20_15\\\"\\n loext:num-list-format=\\\"•\\\" style:num-suffix=\\\"•\\\" text:bullet-char=\\\"•\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"1.5in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"7\\\" text:style-name=\\\"ListLabel_20_16\\\"\\n loext:num-list-format=\\\"•\\\" style:num-suffix=\\\"•\\\" text:bullet-char=\\\"•\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"1.75in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"8\\\" text:style-name=\\\"ListLabel_20_17\\\"\\n loext:num-list-format=\\\"•\\\" style:num-suffix=\\\"•\\\" text:bullet-char=\\\"•\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"2in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-bullet text:level=\\\"9\\\" text:style-name=\\\"ListLabel_20_18\\\"\\n loext:num-list-format=\\\"•\\\" style:num-suffix=\\\"•\\\" text:bullet-char=\\\"•\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"2.25in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-bullet>\\n <text:list-level-style-number text:level=\\\"10\\\" loext:num-list-format=\\\"%10%.\\\"\\n style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n text:list-tab-stop-position=\\\"2.75in\\\" fo:text-indent=\\\"-0.25in\\\"\\n fo:margin-left=\\\"2.75in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n </text:list-style>\\n <text:list-style style:name=\\\"WWNum3\\\">\\n <text:list-level-style-number text:level=\\\"1\\\" text:style-name=\\\"ListLabel_20_19\\\"\\n loext:num-list-format=\\\"%1%.\\\" style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"0.25in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"2\\\" text:style-name=\\\"ListLabel_20_20\\\"\\n loext:num-list-format=\\\"%2%.\\\" style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"0.5in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"3\\\" text:style-name=\\\"ListLabel_20_21\\\"\\n loext:num-list-format=\\\"%3%.\\\" style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"0.75in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"4\\\" text:style-name=\\\"ListLabel_20_22\\\"\\n loext:num-list-format=\\\"%4%.\\\" style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"1in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"5\\\" text:style-name=\\\"ListLabel_20_23\\\"\\n loext:num-list-format=\\\"%5%.\\\" style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"1.25in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"6\\\" text:style-name=\\\"ListLabel_20_24\\\"\\n loext:num-list-format=\\\"%6%.\\\" style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"1.5in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"7\\\" text:style-name=\\\"ListLabel_20_25\\\"\\n loext:num-list-format=\\\"%7%.\\\" style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"1.75in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"8\\\" text:style-name=\\\"ListLabel_20_26\\\"\\n loext:num-list-format=\\\"%8%.\\\" style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"2in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"9\\\" text:style-name=\\\"ListLabel_20_27\\\"\\n loext:num-list-format=\\\"%9%.\\\" style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n fo:text-indent=\\\"-0.25in\\\" fo:margin-left=\\\"2.25in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n <text:list-level-style-number text:level=\\\"10\\\" loext:num-list-format=\\\"%10%.\\\"\\n style:num-suffix=\\\".\\\" style:num-format=\\\"1\\\">\\n <style:list-level-properties\\n text:list-level-position-and-space-mode=\\\"label-alignment\\\">\\n <style:list-level-label-alignment text:label-followed-by=\\\"listtab\\\"\\n text:list-tab-stop-position=\\\"2.75in\\\" fo:text-indent=\\\"-0.25in\\\"\\n fo:margin-left=\\\"2.75in\\\" />\\n </style:list-level-properties>\\n </text:list-level-style-number>\\n </text:list-style>\\n <text:notes-configuration text:note-class=\\\"footnote\\\" style:num-format=\\\"1\\\"\\n text:start-value=\\\"0\\\" text:footnotes-position=\\\"page\\\" text:start-numbering-at=\\\"document\\\" />\\n <text:notes-configuration text:note-class=\\\"endnote\\\" style:num-format=\\\"i\\\"\\n text:start-value=\\\"0\\\" />\\n <text:linenumbering-configuration text:number-lines=\\\"false\\\" text:offset=\\\"0.1965in\\\"\\n style:num-format=\\\"1\\\" text:number-position=\\\"left\\\" text:increment=\\\"5\\\" />\\n <style:default-page-layout>\\n <style:page-layout-properties style:layout-grid-standard-mode=\\\"true\\\" />\\n </style:default-page-layout>\\n <loext:theme loext:name=\\\"Office\\\">\\n <loext:theme-colors loext:name=\\\"LibreOffice\\\">\\n <loext:color loext:name=\\\"dark1\\\" loext:color=\\\"#000000\\\" />\\n <loext:color loext:name=\\\"light1\\\" loext:color=\\\"#ffffff\\\" />\\n <loext:color loext:name=\\\"dark2\\\" loext:color=\\\"#000000\\\" />\\n <loext:color loext:name=\\\"light2\\\" loext:color=\\\"#ffffff\\\" />\\n <loext:color loext:name=\\\"accent1\\\" loext:color=\\\"#18a303\\\" />\\n <loext:color loext:name=\\\"accent2\\\" loext:color=\\\"#0369a3\\\" />\\n <loext:color loext:name=\\\"accent3\\\" loext:color=\\\"#a33e03\\\" />\\n <loext:color loext:name=\\\"accent4\\\" loext:color=\\\"#8e03a3\\\" />\\n <loext:color loext:name=\\\"accent5\\\" loext:color=\\\"#c99c00\\\" />\\n <loext:color loext:name=\\\"accent6\\\" loext:color=\\\"#c9211e\\\" />\\n <loext:color loext:name=\\\"hyperlink\\\" loext:color=\\\"#0000ee\\\" />\\n <loext:color loext:name=\\\"followed-hyperlink\\\" loext:color=\\\"#551a8b\\\" />\\n </loext:theme-colors>\\n </loext:theme>\\n </office:styles>\\n <office:automatic-styles>\\n <style:style style:name=\\\"MP1\\\" style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Header\\\">\\n <style:text-properties officeooo:rsid=\\\"0008951b\\\" officeooo:paragraph-rsid=\\\"0008951b\\\" />\\n </style:style>\\n <style:style style:name=\\\"MP2\\\" style:family=\\\"paragraph\\\" style:parent-style-name=\\\"Footer\\\">\\n <style:text-properties officeooo:rsid=\\\"0008951b\\\" officeooo:paragraph-rsid=\\\"0008951b\\\" />\\n </style:style>\\n <style:page-layout style:name=\\\"Mpm1\\\">\\n <style:page-layout-properties fo:page-width=\\\"8.2681in\\\" fo:page-height=\\\"11.6929in\\\"\\n style:num-format=\\\"1\\\" style:print-orientation=\\\"portrait\\\" fo:margin-top=\\\"1in\\\"\\n fo:margin-bottom=\\\"1in\\\" fo:margin-left=\\\"1in\\\" fo:margin-right=\\\"1in\\\"\\n style:writing-mode=\\\"lr-tb\\\" style:layout-grid-color=\\\"#c0c0c0\\\"\\n style:layout-grid-lines=\\\"38\\\" style:layout-grid-base-height=\\\"0.25in\\\"\\n style:layout-grid-ruby-height=\\\"0in\\\" style:layout-grid-mode=\\\"none\\\"\\n style:layout-grid-ruby-below=\\\"false\\\" style:layout-grid-print=\\\"false\\\"\\n style:layout-grid-display=\\\"false\\\" style:layout-grid-base-width=\\\"0.1665in\\\"\\n style:layout-grid-snap-to=\\\"true\\\" style:footnote-max-height=\\\"0in\\\"\\n loext:margin-gutter=\\\"0in\\\">\\n <style:footnote-sep style:width=\\\"0.0071in\\\" style:distance-before-sep=\\\"0.0398in\\\"\\n style:distance-after-sep=\\\"0.0398in\\\" style:line-style=\\\"solid\\\"\\n style:adjustment=\\\"left\\\" style:rel-width=\\\"25%\\\" style:color=\\\"#000000\\\" />\\n </style:page-layout-properties>\\n <style:header-style>\\n <style:header-footer-properties fo:min-height=\\\"0in\\\" fo:margin-bottom=\\\"0.1965in\\\"\\n fo:background-color=\\\"transparent\\\" />\\n </style:header-style>\\n <style:footer-style>\\n <style:header-footer-properties fo:min-height=\\\"0in\\\" fo:margin-top=\\\"0.1965in\\\"\\n fo:background-color=\\\"transparent\\\" />\\n </style:footer-style>\\n </style:page-layout>\\n <style:style style:name=\\\"Mdp1\\\" style:family=\\\"drawing-page\\\">\\n <style:drawing-page-properties draw:background-size=\\\"full\\\" />\\n </style:style>\\n </office:automatic-styles>\\n <office:master-styles>\\n <style:master-page style:name=\\\"Standard\\\" style:page-layout-name=\\\"Mpm1\\\"\\n draw:style-name=\\\"Mdp1\\\" />\\n </office:master-styles>\\n</office:document-styles>\"","import {\n Block,\n BlockNoteSchema,\n BlockSchema,\n COLORS_DEFAULT,\n Exporter,\n ExporterOptions,\n InlineContentSchema,\n StyleSchema,\n StyledText,\n} from \"@blocknote/core\";\nimport { loadFileBuffer } from \"@shared/util/fileUtil.js\";\nimport { getImageDimensions } from \"@shared/util/imageUtil.js\";\nimport { BlobReader, BlobWriter, TextReader, ZipWriter } from \"@zip.js/zip.js\";\nimport { renderToString } from \"react-dom/server\";\nimport stylesXml from \"./template/styles.xml?raw\";\n\nexport class ODTExporter<\n B extends BlockSchema,\n S extends StyleSchema,\n I extends InlineContentSchema,\n> extends Exporter<\n B,\n I,\n S,\n React.ReactNode,\n React.ReactNode,\n Record<string, string>,\n React.ReactNode\n> {\n // \"Styles\" to be added to the AutomaticStyles section of the ODT file\n // Keyed by the style name\n private automaticStyles: Map<string, React.ReactNode> = new Map();\n\n // \"Pictures\" to be added to the Pictures folder in the ODT file\n // Keyed by the original image URL\n private pictures = new Map<\n string,\n {\n file: Blob;\n fileName: string;\n height: number;\n width: number;\n }\n >();\n\n private styleCounter = 0;\n\n public readonly options: ExporterOptions;\n\n constructor(\n protected readonly schema: BlockNoteSchema<B, I, S>,\n mappings: Exporter<\n NoInfer<B>,\n NoInfer<I>,\n NoInfer<S>,\n React.ReactNode,\n React.ReactNode,\n Record<string, string>,\n React.ReactNode\n >[\"mappings\"],\n options?: Partial<ExporterOptions>,\n ) {\n const defaults = {\n colors: COLORS_DEFAULT,\n } satisfies Partial<ExporterOptions>;\n\n super(schema, mappings, { ...defaults, ...options });\n this.options = { ...defaults, ...options };\n }\n\n protected async loadFonts() {\n const interFont = await loadFileBuffer(\n await import(\"@shared/assets/fonts/inter/Inter_18pt-Regular.ttf\"),\n );\n const geistMonoFont = await loadFileBuffer(\n await import(\"@shared/assets/fonts/GeistMono-Regular.ttf\"),\n );\n\n return [\n {\n name: \"Inter 18pt\",\n fileName: \"Inter_18pt-Regular.ttf\",\n data: new Blob([interFont as ArrayBuffer], { type: \"font/ttf\" }),\n },\n {\n name: \"Geist Mono\",\n fileName: \"GeistMono-Regular.ttf\",\n data: new Blob([geistMonoFont as ArrayBuffer], { type: \"font/ttf\" }),\n },\n ];\n }\n\n public transformStyledText(styledText: StyledText<S>): React.ReactNode {\n const stylesArray = this.mapStyles(styledText.styles);\n const styles = Object.assign({}, ...stylesArray);\n\n if (Object.keys(styles).length === 0) {\n return styledText.text;\n }\n\n const styleName = `BN_T${++this.styleCounter}`;\n\n // Store the complete style element\n this.automaticStyles.set(\n styleName,\n <style:style style:name={styleName} style:family=\"text\">\n <style:text-properties {...styles} />\n </style:style>,\n );\n\n return <text:span text:style-name={styleName}>{styledText.text}</text:span>;\n }\n\n public async transformBlocks(\n blocks: Block<B, I, S>[],\n nestingLevel = 0,\n ): Promise<Awaited<React.ReactNode>[]> {\n const ret: Awaited<React.ReactNode>[] = [];\n let numberedListIndex = 0;\n\n for (const block of blocks) {\n if (block.type === \"numberedListItem\") {\n numberedListIndex++;\n } else {\n numberedListIndex = 0;\n }\n\n if ([\"columnList\", \"column\"].includes(block.type)) {\n const children = await this.transformBlocks(block.children, 0);\n const content = await this.mapBlock(\n block as any,\n 0,\n numberedListIndex,\n children,\n );\n\n ret.push(content);\n } else {\n const children = await this.transformBlocks(\n block.children,\n nestingLevel + 1,\n );\n const content = await this.mapBlock(\n block as any,\n nestingLevel,\n numberedListIndex,\n children,\n );\n\n ret.push(content);\n if (children.length > 0) {\n ret.push(...children);\n }\n }\n }\n\n return ret;\n }\n\n public async toODTDocument(\n blocks: Block<B, I, S>[],\n options?: {\n header?: string | XMLDocument;\n footer?: string | XMLDocument;\n },\n ): Promise<Blob> {\n const xmlOptionToString = (xmlDocument: string | XMLDocument) => {\n const xmlNamespacesRegEx =\n /<([a-zA-Z0-9:]+)\\s+?(?:xml)ns(?::[a-zA-Z0-9]+)?=\".*\"(.*)>/g;\n let stringifiedDoc = \"\";\n\n if (typeof xmlDocument === \"string\") {\n stringifiedDoc = xmlDocument;\n } else {\n const serializer = new XMLSerializer();\n\n stringifiedDoc = serializer.serializeToString(xmlDocument);\n }\n\n // Detect and remove XML namespaces (already defined in the root element)\n return stringifiedDoc.replace(xmlNamespacesRegEx, \"<$1$2>\");\n };\n const blockContent = await this.transformBlocks(blocks);\n const styles = Array.from(this.automaticStyles.values());\n const pictures = Array.from(this.pictures.values());\n const fonts = await this.loadFonts();\n const header = xmlOptionToString(options?.header || \"\");\n const footer = xmlOptionToString(options?.footer || \"\");\n\n const content = (\n <office:document-content\n xmlns:office=\"urn:oasis:names:tc:opendocument:xmlns:office:1.0\"\n xmlns:text=\"urn:oasis:names:tc:opendocument:xmlns:text:1.0\"\n xmlns:table=\"urn:oasis:names:tc:opendocument:xmlns:table:1.0\"\n xmlns:draw=\"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n xmlns:style=\"urn:oasis:names:tc:opendocument:xmlns:style:1.0\"\n xmlns:fo=\"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\"\n xmlns:svg=\"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\"\n xmlns:loext=\"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0\"\n office:version=\"1.3\"\n >\n <office:font-face-decls>\n {fonts.map((font) => {\n return (\n <style:font-face\n style:name={font.name}\n svg:font-family={font.name}\n style:font-pitch=\"variable\"\n >\n <svg:font-face-src>\n <svg:font-face-uri\n xlink:href={`Fonts/${font.fileName}`}\n xlink:type=\"simple\"\n loext:font-style=\"normal\"\n loext:font-weight=\"normal\"\n >\n <svg:font-face-format svg:string=\"truetype\" />\n </svg:font-face-uri>\n </svg:font-face-src>\n </style:font-face>\n );\n })}\n </office:font-face-decls>\n <office:automatic-styles>{styles}</office:automatic-styles>\n {(header || footer) && (\n <office:master-styles>\n <style:master-page\n style:name=\"Standard\"\n style:page-layout-name=\"Mpm1\"\n draw:style-name=\"Mdp1\"\n >\n {header && (\n <style:header\n dangerouslySetInnerHTML={{\n __html: header,\n }}\n ></style:header>\n )}\n {footer && (\n <style:footer\n dangerouslySetInnerHTML={{\n __html: footer,\n }}\n ></style:footer>\n )}\n </style:master-page>\n </office:master-styles>\n )}\n <office:body>\n <office:text>{blockContent}</office:text>\n </office:body>\n </office:document-content>\n );\n\n const manifestNode = (\n <manifest:manifest\n xmlns:manifest=\"urn:oasis:names:tc:opendocument:xmlns:manifest:1.0\"\n manifest:version=\"1.3\"\n >\n <manifest:file-entry\n manifest:media-type=\"application/vnd.oasis.opendocument.text\"\n manifest:full-path=\"/\"\n />\n <manifest:file-entry\n manifest:media-type=\"text/xml\"\n manifest:full-path=\"content.xml\"\n />\n <manifest:file-entry\n manifest:media-type=\"text/xml\"\n manifest:full-path=\"styles.xml\"\n />\n {pictures.map((picture) => {\n return (\n <manifest:file-entry\n manifest:media-type={picture.file.type}\n manifest:full-path={`Pictures/${picture.fileName}`}\n />\n );\n })}\n {fonts.map((font) => {\n return (\n <manifest:file-entry\n manifest:media-type=\"application/x-font-ttf\"\n manifest:full-path={`Fonts/${font.fileName}`}\n />\n );\n })}\n </manifest:manifest>\n );\n const zipWriter = new ZipWriter(\n new BlobWriter(\"application/vnd.oasis.opendocument.text\"),\n );\n\n // Add mimetype first, uncompressed\n zipWriter.add(\n \"mimetype\",\n new TextReader(\"application/vnd.oasis.opendocument.text\"),\n {\n compressionMethod: 0,\n level: 0,\n dataDescriptor: false,\n extendedTimestamp: false,\n },\n );\n\n const contentXml = renderToString(content);\n const manifestXml = renderToString(manifestNode);\n\n zipWriter.add(\"content.xml\", new TextReader(contentXml));\n zipWriter.add(\"styles.xml\", new TextReader(stylesXml));\n zipWriter.add(\"META-INF/manifest.xml\", new TextReader(manifestXml));\n fonts.forEach((font) => {\n zipWriter.add(`Fonts/${font.fileName}`, new BlobReader(font.data));\n });\n pictures.forEach((picture) => {\n zipWriter.add(\n `Pictures/${picture.fileName}`,\n new BlobReader(picture.file),\n );\n });\n\n return zipWriter.close();\n }\n\n public registerStyle(style: (name: string) => React.ReactNode): string {\n const styleName = `BN_S${++this.styleCounter}`;\n this.automaticStyles.set(styleName, style(styleName));\n return styleName;\n }\n\n public async registerPicture(url: string): Promise<{\n path: string;\n mimeType: string;\n height: number;\n width: number;\n }> {\n const mimeTypeFileExtensionMap = {\n \"image/apng\": \"apng\",\n \"image/avif\": \"avif\",\n \"image/bmp\": \"bmp\",\n \"image/gif\": \"gif\",\n \"image/vnd.microsoft.icon\": \"ico\",\n \"image/jpeg\": \"jpg\",\n \"image/png\": \"png\",\n \"image/svg+xml\": \"svg\",\n \"image/tiff\": \"tiff\",\n \"image/webp\": \"webp\",\n };\n if (this.pictures.has(url)) {\n const picture = this.pictures.get(url)!;\n\n return {\n path: `Pictures/${picture.fileName}`,\n mimeType: picture.file.type,\n height: picture.height,\n width: picture.width,\n };\n }\n\n const blob = await this.resolveFile(url);\n const fileExtension =\n mimeTypeFileExtensionMap[\n blob.type as keyof typeof mimeTypeFileExtensionMap\n ] || \"png\";\n const fileName = `picture-${this.pictures.size}.${fileExtension}`;\n const { width, height } = await getImageDimensions(blob);\n\n this.pictures.set(url, {\n file: blob,\n fileName: fileName,\n height,\n width,\n });\n\n return { path: `Pictures/${fileName}`, mimeType: blob.type, height, width };\n }\n}\n"],"mappings":"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"}