@adobe/helix-md2docx 1.3.9 → 1.4.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.
Files changed (30) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/package.json +4 -4
  3. package/src/mdast2docx/handlers/table.js +16 -8
  4. package/src/mdast2docx/handlers/tableCell.js +20 -3
  5. package/src/mdast2docx/handlers/tableRow.js +2 -7
  6. package/src/mdast2docx/hast-table-cell-handler.js +46 -0
  7. package/src/mdast2docx/hast-table-handler.js +39 -58
  8. package/src/mdast2docx/mdast-sanitize-html.js +3 -0
  9. package/src/mdast2docx/template/[Content_Types].xml +39 -41
  10. package/src/mdast2docx/template/docProps/app.xml +40 -20
  11. package/src/mdast2docx/template/docProps/core.xml +12 -12
  12. package/src/mdast2docx/template/word/_rels/document.xml.rels +36 -51
  13. package/src/mdast2docx/template/word/document.xml +1907 -1116
  14. package/src/mdast2docx/template/word/fontTable.xml +105 -58
  15. package/src/mdast2docx/template/word/media/image1.png +0 -0
  16. package/src/mdast2docx/template/word/numbering.xml +622 -277
  17. package/src/mdast2docx/template/word/settings.xml +140 -91
  18. package/src/mdast2docx/template/word/styles.xml +1806 -1084
  19. package/src/mdast2docx/template/word/theme/theme1.xml +490 -296
  20. package/src/mdast2docx/template/word/webSettings.xml +13 -40
  21. package/src/mdast2docx/template.docx +0 -0
  22. package/src/mdast2docx/template/word/_rels/settings.xml.rels +0 -7
  23. package/src/mdast2docx/template/word/endnotes.xml +0 -56
  24. package/src/mdast2docx/template/word/footer1.xml +0 -39
  25. package/src/mdast2docx/template/word/footer2.xml +0 -39
  26. package/src/mdast2docx/template/word/footer3.xml +0 -39
  27. package/src/mdast2docx/template/word/footnotes.xml +0 -56
  28. package/src/mdast2docx/template/word/header1.xml +0 -39
  29. package/src/mdast2docx/template/word/header2.xml +0 -39
  30. package/src/mdast2docx/template/word/header3.xml +0 -39
package/CHANGELOG.md CHANGED
@@ -1,3 +1,24 @@
1
+ # [1.4.0](https://github.com/adobe/helix-md2docx/compare/v1.3.11...v1.4.0) (2022-03-24)
2
+
3
+
4
+ ### Features
5
+
6
+ * new docx template ([e8a96b7](https://github.com/adobe/helix-md2docx/commit/e8a96b7035d1c6c804bf9c3c8b748c432e1f5421))
7
+
8
+ ## [1.3.11](https://github.com/adobe/helix-md2docx/compare/v1.3.10...v1.3.11) (2022-03-24)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * handle row and colspan ([7077d4f](https://github.com/adobe/helix-md2docx/commit/7077d4f99957741885cdc1be39d6f23fa0cb88fa)), closes [#47](https://github.com/adobe/helix-md2docx/issues/47)
14
+
15
+ ## [1.3.10](https://github.com/adobe/helix-md2docx/compare/v1.3.9...v1.3.10) (2022-03-20)
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * **deps:** update dependency @adobe/helix-fetch to v3.0.7 ([f211f44](https://github.com/adobe/helix-md2docx/commit/f211f4483dd6687e310e98c8b9793f65fa2f1893))
21
+
1
22
  ## [1.3.9](https://github.com/adobe/helix-md2docx/compare/v1.3.8...v1.3.9) (2022-03-18)
2
23
 
3
24
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adobe/helix-md2docx",
3
- "version": "1.3.9",
3
+ "version": "1.4.0",
4
4
  "description": "Helix Service that converts markdown to word documents",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
@@ -27,7 +27,7 @@
27
27
  },
28
28
  "homepage": "https://github.com/adobe/helix-md2docx#readme",
29
29
  "dependencies": {
30
- "@adobe/helix-fetch": "3.0.6",
30
+ "@adobe/helix-fetch": "3.0.7",
31
31
  "@adobe/helix-markdown-support": "3.1.2",
32
32
  "@adobe/helix-shared-process-queue": "1.1.4",
33
33
  "@adobe/helix-docx2md": "1.0.10",
@@ -43,7 +43,7 @@
43
43
  },
44
44
  "devDependencies": {
45
45
  "@adobe/eslint-config-helix": "1.3.2",
46
- "@adobe/helix-mediahandler": "1.0.11",
46
+ "@adobe/helix-mediahandler": "1.0.13",
47
47
  "@semantic-release/changelog": "6.0.1",
48
48
  "@semantic-release/exec": "6.0.3",
49
49
  "@semantic-release/git": "10.0.1",
@@ -57,7 +57,7 @@
57
57
  "fs-extra": "10.0.1",
58
58
  "husky": "7.0.4",
59
59
  "junit-report-builder": "3.0.0",
60
- "lint-staged": "12.3.5",
60
+ "lint-staged": "12.3.7",
61
61
  "mocha": "9.2.2",
62
62
  "mocha-multi-reporters": "1.5.1",
63
63
  "semantic-release": "19.0.2",
@@ -21,24 +21,32 @@ const { Paragraph, Table, WidthType } = docx;
21
21
  // decimal or a percent, so a % symbol should be included when type="pct".
22
22
 
23
23
  export default async function table(ctx, node) {
24
+ let numCols = node.maxCols;
25
+ if (node.children.length > 0) {
26
+ // eslint-disable-next-line no-param-reassign
27
+ node.children[0].tableHeader = true;
28
+ if (!numCols) {
29
+ numCols = node.children[0].children.length;
30
+ }
31
+ }
32
+
24
33
  const oldTable = ctx.table;
25
34
  ctx.table = {
26
- // remember the table width (the column width will be calculated in the tableRow handler)
35
+ // remember the table width
27
36
  // default width: Letter Width - Margin = 8.5" - 2" = 6.5". the unit is 1/1440 inches.
28
- width: oldTable ? oldTable.columnWidth : 1440 * 6.5,
37
+ width: oldTable?.columnWidth || 1440 * 6.5,
29
38
  align: node.align || [],
30
39
  };
40
+
41
+ // use the same width for all columns
42
+ ctx.table.columnWidth = numCols ? (ctx.table.width / numCols) : ctx.table.width;
43
+ const columnWidths = new Array(numCols).fill(Math.round(ctx.table.columnWidth));
44
+
31
45
  // process the rows
32
46
  const rows = await all(ctx, node);
33
47
 
34
- // and remember the column width
35
- const { columnWidth } = ctx.table;
36
48
  ctx.table = oldTable;
37
49
 
38
- // use the same width for all columns
39
- const numCols = rows.length ? rows[0].CellCount : 0;
40
- const columnWidths = new Array(numCols).fill(Math.round(columnWidth));
41
-
42
50
  const tbl = new Table({
43
51
  style: 'PageBlock',
44
52
  rows,
@@ -13,7 +13,7 @@ import docx from 'docx';
13
13
  import all from '../all.js';
14
14
 
15
15
  const {
16
- AlignmentType, Paragraph, Table, TableCell,
16
+ AlignmentType, Paragraph, Table, TableCell, ShadingType,
17
17
  } = docx;
18
18
 
19
19
  const ALIGN = {
@@ -45,7 +45,24 @@ export default async function tableCell(ctx, node, parent, siblings) {
45
45
  content.push(new Paragraph({ alignment, children: leaves }));
46
46
  }
47
47
 
48
- return new TableCell({
48
+ const opts = {
49
49
  children: content,
50
- });
50
+ };
51
+
52
+ if (node.data?.colSpan) {
53
+ opts.columnSpan = node.data.colSpan;
54
+ }
55
+ if (node.data?.rowSpan) {
56
+ opts.rowSpan = node.data.rowSpan;
57
+ }
58
+
59
+ if (parent.tableHeader) {
60
+ // shading for header row
61
+ opts.shading = {
62
+ fill: 'F4CCCD', // color defined in styles.xml (PageBlock table style)
63
+ type: ShadingType.CLEAR,
64
+ color: 'auto',
65
+ };
66
+ }
67
+ return new TableCell(opts);
51
68
  }
@@ -14,15 +14,10 @@ import all from '../all.js';
14
14
 
15
15
  const { TableRow } = docx;
16
16
 
17
- export default async function tableRow(ctx, node, parent, siblings) {
18
- // adjust columnWidth
19
- if (!ctx.table.columnWidth) {
20
- ctx.table.columnWidth = ctx.table.width / node.children.length;
21
- }
22
-
17
+ export default async function tableRow(ctx, node) {
23
18
  const children = await all(ctx, node);
24
19
  return new TableRow({
25
20
  children,
26
- tableHeader: siblings.length === 0,
21
+ // tableHeader: node.tableHeader,
27
22
  });
28
23
  }
@@ -0,0 +1,46 @@
1
+ /*
2
+ * Copyright 2022 Adobe. All rights reserved.
3
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License. You may obtain a copy
5
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software distributed under
8
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ * OF ANY KIND, either express or implied. See the License for the specific language
10
+ * governing permissions and limitations under the License.
11
+ */
12
+
13
+ /*
14
+ copied and adapted (adding align) from
15
+ https://github.com/syntax-tree/hast-util-to-mdast/blob/main/lib/handlers/table-cell.js
16
+ */
17
+
18
+ 'use strict';
19
+
20
+ import { all } from 'hast-util-to-mdast/lib/all.js';
21
+
22
+ export default function cell(h, node) {
23
+ const wrap = h.wrapText;
24
+
25
+ // eslint-disable-next-line no-param-reassign
26
+ h.wrapText = false;
27
+
28
+ const result = h(node, 'tableCell', all(h, node));
29
+
30
+ if (node.properties?.rowSpan || node.properties?.colSpan || node.properties?.align) {
31
+ const data = result.data || (result.data = {});
32
+ if (node.properties.rowSpan) {
33
+ data.rowSpan = node.properties.rowSpan;
34
+ }
35
+ if (node.properties.colSpan) {
36
+ data.colSpan = node.properties.colSpan;
37
+ }
38
+ if (node.properties.align) {
39
+ data.align = node.properties.align;
40
+ }
41
+ }
42
+ // eslint-disable-next-line no-param-reassign
43
+ h.wrapText = wrap;
44
+
45
+ return result;
46
+ }
@@ -12,56 +12,15 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- import { convertElement } from 'hast-util-is-element';
16
- import { visit } from 'unist-util-visit';
17
15
  import { all } from 'hast-util-to-mdast/lib/all.js';
18
16
 
19
- const thead = convertElement('thead');
20
- const tr = convertElement('tr');
21
- const cell = convertElement(['th', 'td']);
22
-
23
17
  /*
24
18
  copied and adapted from
25
- https://github.com/syntax-tree/hast-util-to-mdast/blob/7.1.3/lib/handlers/table.js
19
+ https://github.com/syntax-tree/hast-util-to-mdast/blob/main/lib/handlers/table.js
26
20
  */
27
21
 
28
- // Infer whether the HTML table has a head and how it aligns.
29
- function inspect(node) {
30
- let headless = true;
31
- const align = [];
32
- let rowIndex = 0;
33
- let cellIndex = 0;
34
-
35
- function visitor(child) {
36
- // If there is a `thead`, assume there is a header row.
37
- if (thead(child)) {
38
- headless = false;
39
- } else if (tr(child)) {
40
- rowIndex += 1;
41
- cellIndex = 0;
42
- } else if (cell(child)) {
43
- if (align[cellIndex] === undefined) {
44
- align[cellIndex] = child.properties.align || null;
45
- }
46
-
47
- // If there is a th in the first row, assume there is a header row.
48
- if (headless && rowIndex < 2 && child.tagName === 'th') {
49
- headless = false;
50
- }
51
-
52
- cellIndex += 1;
53
- return visit.SKIP;
54
- }
55
- return visit.CONTINUE;
56
- }
57
-
58
- visit(node, 'element', visitor);
59
-
60
- return { align, headless };
61
- }
62
-
63
22
  // Ensure the cells in a row are properly structured.
64
- function toCells(children, info) {
23
+ function toCells(children) {
65
24
  const nodes = [];
66
25
  let queue;
67
26
 
@@ -93,25 +52,14 @@ function toCells(children, info) {
93
52
  node.children = node.children.concat(queue);
94
53
  }
95
54
 
96
- // add empty cells if there are more in the table
97
- for (let index = nodes.length; index < info.align.length; index += 1) {
98
- nodes.push({ type: 'tableCell', children: [] });
99
- }
100
-
101
55
  return nodes;
102
56
  }
103
57
 
104
58
  // Ensure the rows are properly structured.
105
- function toRows(children, info) {
59
+ function toRows(children) {
106
60
  const nodes = [];
107
61
  let queue;
108
62
 
109
- // Add an empty header row.
110
- // we don't need extra header rows
111
- // if (info.headless) {
112
- // nodes.push({ type: 'tableRow', children: [] });
113
- // }
114
-
115
63
  children.forEach((node) => {
116
64
  if (node.type === 'tableRow') {
117
65
  if (queue) {
@@ -133,13 +81,46 @@ function toRows(children, info) {
133
81
  }
134
82
  nodes.forEach((node) => {
135
83
  // eslint-disable-next-line no-param-reassign
136
- node.children = toCells(node.children, info);
84
+ node.children = toCells(node.children);
137
85
  });
138
86
 
139
87
  return nodes;
140
88
  }
141
89
 
142
90
  export default function table(h, node) {
143
- const info = inspect(node);
144
- return h(node, 'table', { align: info.align }, toRows(all(h, node), info));
91
+ const mdNode = h(node, 'table', toRows(all(h, node)));
92
+
93
+ // clean up table in respect to row and colspan and compute alignments
94
+ mdNode.align = [];
95
+
96
+ // compute the number of cells in each row, respecting the row and col spans.
97
+ mdNode.maxCols = 0;
98
+ const pendingRowSpans = [];
99
+ for (const row of mdNode.children) {
100
+ row.numCols = pendingRowSpans.shift() || 0;
101
+ for (const cell of row.children) {
102
+ const rowSpan = Number.parseInt(cell.data?.rowSpan || '1', 10);
103
+ const colSpan = Number.parseInt(cell.data?.colSpan || '1', 10);
104
+ if (cell.data?.align && !mdNode.align[row.numCols]) {
105
+ mdNode.align[row.numCols] = cell.data.align;
106
+ }
107
+ row.numCols += colSpan;
108
+ if (rowSpan > 1) {
109
+ for (let i = 0; i < rowSpan - 1; i += 1) {
110
+ pendingRowSpans[i] = (pendingRowSpans[i] || 0) + colSpan;
111
+ }
112
+ }
113
+ }
114
+ mdNode.maxCols = Math.max(mdNode.maxCols, row.numCols);
115
+ }
116
+
117
+ // add empty cells if needed
118
+ for (const row of mdNode.children) {
119
+ for (let i = row.numCols; i < mdNode.maxCols; i += 1) {
120
+ row.children.push({ type: 'tableCell', children: [] });
121
+ }
122
+ delete row.numCols;
123
+ }
124
+
125
+ return mdNode;
145
126
  }
@@ -15,6 +15,7 @@ import parse from 'rehype-parse';
15
15
  import { toMdast } from 'hast-util-to-mdast';
16
16
  // import inspect from 'unist-util-inspect';
17
17
  import tableHandler from './hast-table-handler.js';
18
+ import tableCellHandler from './hast-table-cell-handler.js';
18
19
 
19
20
  /**
20
21
  * Creates simple format handler
@@ -90,6 +91,8 @@ export default function sanitizeHtml(tree) {
90
91
  sup: formatHandler('superScript'),
91
92
  table: tableHandler,
92
93
  markdown: mdHandler(mdInserts),
94
+ th: tableCellHandler,
95
+ td: tableCellHandler,
93
96
  },
94
97
  });
95
98
 
@@ -1,41 +1,39 @@
1
- <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
- <Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
3
- <Default Extension="png" ContentType="image/png"/>
4
- <Default Extension="rels"
5
- ContentType="application/vnd.openxmlformats-package.relationships+xml"/>
6
- <Default Extension="xml" ContentType="application/xml"/>
7
- <Override PartName="/word/document.xml"
8
- ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/>
9
- <Override PartName="/word/numbering.xml"
10
- ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml"/>
11
- <Override PartName="/word/styles.xml"
12
- ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml"/>
13
- <Override PartName="/word/settings.xml"
14
- ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml"/>
15
- <Override PartName="/word/webSettings.xml"
16
- ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml"/>
17
- <Override PartName="/word/footnotes.xml"
18
- ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml"/>
19
- <Override PartName="/word/endnotes.xml"
20
- ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml"/>
21
- <Override PartName="/word/header1.xml"
22
- ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml"/>
23
- <Override PartName="/word/header2.xml"
24
- ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml"/>
25
- <Override PartName="/word/footer1.xml"
26
- ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml"/>
27
- <Override PartName="/word/footer2.xml"
28
- ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml"/>
29
- <Override PartName="/word/header3.xml"
30
- ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml"/>
31
- <Override PartName="/word/footer3.xml"
32
- ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml"/>
33
- <Override PartName="/word/fontTable.xml"
34
- ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml"/>
35
- <Override PartName="/word/theme/theme1.xml"
36
- ContentType="application/vnd.openxmlformats-officedocument.theme+xml"/>
37
- <Override PartName="/docProps/core.xml"
38
- ContentType="application/vnd.openxmlformats-package.core-properties+xml"/>
39
- <Override PartName="/docProps/app.xml"
40
- ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/>
41
- </Types>
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
3
+ <Default
4
+ Extension="png"
5
+ ContentType="image/png"/>
6
+ <Default
7
+ Extension="rels"
8
+ ContentType="application/vnd.openxmlformats-package.relationships+xml"/>
9
+ <Default
10
+ Extension="xml"
11
+ ContentType="application/xml"/>
12
+ <Override
13
+ PartName="/word/document.xml"
14
+ ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/>
15
+ <Override
16
+ PartName="/word/numbering.xml"
17
+ ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml"/>
18
+ <Override
19
+ PartName="/word/styles.xml"
20
+ ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml"/>
21
+ <Override
22
+ PartName="/word/settings.xml"
23
+ ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml"/>
24
+ <Override
25
+ PartName="/word/webSettings.xml"
26
+ ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml"/>
27
+ <Override
28
+ PartName="/word/fontTable.xml"
29
+ ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml"/>
30
+ <Override
31
+ PartName="/word/theme/theme1.xml"
32
+ ContentType="application/vnd.openxmlformats-officedocument.theme+xml"/>
33
+ <Override
34
+ PartName="/docProps/core.xml"
35
+ ContentType="application/vnd.openxmlformats-package.core-properties+xml"/>
36
+ <Override
37
+ PartName="/docProps/app.xml"
38
+ ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/>
39
+ </Types>
@@ -1,20 +1,40 @@
1
- <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
- <Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties"
3
- xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">
4
- <Template>template.dotx</Template>
5
- <TotalTime>6</TotalTime>
6
- <Pages>2</Pages>
7
- <Words>222</Words>
8
- <Characters>1266</Characters>
9
- <Application>Microsoft Office Word</Application>
10
- <DocSecurity>0</DocSecurity>
11
- <Lines>10</Lines>
12
- <Paragraphs>2</Paragraphs>
13
- <ScaleCrop>false</ScaleCrop>
14
- <Company></Company>
15
- <LinksUpToDate>false</LinksUpToDate>
16
- <CharactersWithSpaces>1486</CharactersWithSpaces>
17
- <SharedDoc>false</SharedDoc>
18
- <HyperlinksChanged>false</HyperlinksChanged>
19
- <AppVersion>16.0000</AppVersion>
20
- </Properties>
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <Properties
3
+ xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties"
4
+ xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">
5
+ <Template>Normal.dotm</Template>
6
+ <TotalTime>51</TotalTime>
7
+ <Pages>3</Pages>
8
+ <Words>271</Words>
9
+ <Characters>1545</Characters>
10
+ <Application>Microsoft Office Word</Application>
11
+ <DocSecurity>0</DocSecurity>
12
+ <Lines>12</Lines>
13
+ <Paragraphs>3</Paragraphs>
14
+ <ScaleCrop>false</ScaleCrop>
15
+ <HeadingPairs>
16
+ <vt:vector
17
+ size="2"
18
+ baseType="variant">
19
+ <vt:variant>
20
+ <vt:lpstr>Title</vt:lpstr>
21
+ </vt:variant>
22
+ <vt:variant>
23
+ <vt:i4>1</vt:i4>
24
+ </vt:variant>
25
+ </vt:vector>
26
+ </HeadingPairs>
27
+ <TitlesOfParts>
28
+ <vt:vector
29
+ size="1"
30
+ baseType="lpstr">
31
+ <vt:lpstr></vt:lpstr>
32
+ </vt:vector>
33
+ </TitlesOfParts>
34
+ <Company></Company>
35
+ <LinksUpToDate>false</LinksUpToDate>
36
+ <CharactersWithSpaces>1813</CharactersWithSpaces>
37
+ <SharedDoc>false</SharedDoc>
38
+ <HyperlinksChanged>false</HyperlinksChanged>
39
+ <AppVersion>16.0000</AppVersion>
40
+ </Properties>
@@ -1,12 +1,12 @@
1
- <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
- <cp:coreProperties
3
- xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties"
4
- xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/"
5
- xmlns:dcmitype="http://purl.org/dc/dcmitype/"
6
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
7
- <dc:creator>Tobias Bocanegra</dc:creator>
8
- <cp:lastModifiedBy>Tobias Bocanegra</cp:lastModifiedBy>
9
- <cp:revision>3</cp:revision>
10
- <dcterms:created xsi:type="dcterms:W3CDTF">2021-03-19T03:32:00Z</dcterms:created>
11
- <dcterms:modified xsi:type="dcterms:W3CDTF">2021-04-02T02:45:00Z</dcterms:modified>
12
- </cp:coreProperties>
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <cp:coreProperties
3
+ xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties"
4
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
5
+ xmlns:dcterms="http://purl.org/dc/terms/"
6
+ xmlns:dcmitype="http://purl.org/dc/dcmitype/"
7
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
8
+ <cp:lastModifiedBy>Alexandre Capt</cp:lastModifiedBy>
9
+ <cp:revision>29</cp:revision>
10
+ <dcterms:created xsi:type="dcterms:W3CDTF">2022-03-23T14:16:00Z</dcterms:created>
11
+ <dcterms:modified xsi:type="dcterms:W3CDTF">2022-03-24T09:17:00Z</dcterms:modified>
12
+ </cp:coreProperties>
@@ -1,51 +1,36 @@
1
- <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
- <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
3
- <Relationship Id="rId8"
4
- Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image"
5
- Target="media/image1.png"/>
6
- <Relationship Id="rId13"
7
- Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/header"
8
- Target="header3.xml"/>
9
- <Relationship Id="rId3"
10
- Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings"
11
- Target="settings.xml"/>
12
- <Relationship Id="rId7"
13
- Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink"
14
- Target="https://www.adobe.com/" TargetMode="External"/>
15
- <Relationship Id="rId12"
16
- Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer"
17
- Target="footer2.xml"/>
18
- <Relationship Id="rId2"
19
- Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles"
20
- Target="styles.xml"/>
21
- <Relationship Id="rId16"
22
- Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme"
23
- Target="theme/theme1.xml"/>
24
- <Relationship Id="rId1"
25
- Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering"
26
- Target="numbering.xml"/>
27
- <Relationship Id="rId6"
28
- Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/endnotes"
29
- Target="endnotes.xml"/>
30
- <Relationship Id="rId11"
31
- Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer"
32
- Target="footer1.xml"/>
33
- <Relationship Id="rId5"
34
- Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes"
35
- Target="footnotes.xml"/>
36
- <Relationship Id="rId15"
37
- Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable"
38
- Target="fontTable.xml"/>
39
- <Relationship Id="rId10"
40
- Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/header"
41
- Target="header2.xml"/>
42
- <Relationship Id="rId4"
43
- Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings"
44
- Target="webSettings.xml"/>
45
- <Relationship Id="rId9"
46
- Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/header"
47
- Target="header1.xml"/>
48
- <Relationship Id="rId14"
49
- Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer"
50
- Target="footer3.xml"/>
51
- </Relationships>
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
3
+ <Relationship
4
+ Id="rId8"
5
+ Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme"
6
+ Target="theme/theme1.xml"/>
7
+ <Relationship
8
+ Id="rId3"
9
+ Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings"
10
+ Target="settings.xml"/>
11
+ <Relationship
12
+ Id="rId7"
13
+ Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable"
14
+ Target="fontTable.xml"/>
15
+ <Relationship
16
+ Id="rId2"
17
+ Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles"
18
+ Target="styles.xml"/>
19
+ <Relationship
20
+ Id="rId1"
21
+ Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering"
22
+ Target="numbering.xml"/>
23
+ <Relationship
24
+ Id="rId6"
25
+ Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image"
26
+ Target="media/image1.png"/>
27
+ <Relationship
28
+ Id="rId5"
29
+ Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink"
30
+ Target="https://www.adobe.com/"
31
+ TargetMode="External"/>
32
+ <Relationship
33
+ Id="rId4"
34
+ Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings"
35
+ Target="webSettings.xml"/>
36
+ </Relationships>