summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2013-06-15 03:35:10 +0200
committerJay Berkenbilt <ejb@ql.org>2013-06-15 03:36:04 +0200
commit16051788ed6a8209aadff619b586eac86543b4f9 (patch)
tree6262f0eb4d40e56f4d2076da885a57fea96d14aa
parenteae8370cd9c4e6ac748931a425721303561bd6ac (diff)
downloadqpdf-16051788ed6a8209aadff619b586eac86543b4f9.tar.zst
Handle /Outlines dictionary being a direct object
Even though this case is not valid according to the spec, it has been seen, and caused an internal error.
-rw-r--r--ChangeLog6
-rw-r--r--libqpdf/QPDF_linearization.cc9
-rw-r--r--libqpdf/QPDF_optimization.cc15
-rw-r--r--qpdf/qpdf.testcov1
-rw-r--r--qpdf/qtest/qpdf.test1
-rw-r--r--qpdf/qtest/qpdf/direct-outlines.pdf1503
6 files changed, 1534 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 13c964d2..98657248 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2013-06-14 Jay Berkenbilt <ejb@ql.org>
+ * Detect and correct /Outlines dictionary being a direct object
+ when linearizing files. This is not allowed by the spec but has
+ been seen in the wild. Prior to this change, such a file would
+ cause an internal error in the linearization code, which assumed
+ /Outlines was indirect.
+
* Add /Length key to crypt filter dictionary for encrypted files.
This key is optional, but some version of MacOS reportedly fail to
open encrypted PDF files without this key.
diff --git a/libqpdf/QPDF_linearization.cc b/libqpdf/QPDF_linearization.cc
index 4b1f5c09..2c4fefc0 100644
--- a/libqpdf/QPDF_linearization.cc
+++ b/libqpdf/QPDF_linearization.cc
@@ -958,6 +958,15 @@ QPDF::checkHOutlines(std::list<std::string>& warnings)
{
// Check length and offset. Acrobat gets these wrong.
QPDFObjectHandle outlines = getRoot().getKey("/Outlines");
+ if (! outlines.isIndirect())
+ {
+ // This case is not exercised in test suite since not
+ // permitted by the spec, but if this does occur, the
+ // code below would fail.
+ warnings.push_back(
+ "/Outlines key of root dictionary is not indirect");
+ return;
+ }
QPDFObjGen og(outlines.getObjGen());
assert(this->xref_table.count(og) > 0);
int offset = getLinearizationOffset(og);
diff --git a/libqpdf/QPDF_optimization.cc b/libqpdf/QPDF_optimization.cc
index 0286fdb9..35663c45 100644
--- a/libqpdf/QPDF_optimization.cc
+++ b/libqpdf/QPDF_optimization.cc
@@ -68,6 +68,20 @@ QPDF::optimize(std::map<int, int> const& object_stream_data,
return;
}
+ // The PDF specification indicates that /Outlines is supposed to
+ // be an indirect reference. Force it to be so if it exists and
+ // is direct. (This has been seen in the wild.)
+ QPDFObjectHandle root = getRoot();
+ if (root.getKey("/Outlines").isDictionary())
+ {
+ QPDFObjectHandle outlines = root.getKey("/Outlines");
+ if (! outlines.isIndirect())
+ {
+ QTC::TC("qpdf", "QPDF_optimization indirect outlines");
+ root.replaceKey("/Outlines", makeIndirectObject(outlines));
+ }
+ }
+
// Traverse pages tree pushing all inherited resources down to the
// page level. This also initializes this->all_pages.
pushInheritedAttributesToPage(allow_changes, false);
@@ -97,7 +111,6 @@ QPDF::optimize(std::map<int, int> const& object_stream_data,
}
}
- QPDFObjectHandle root = getRoot();
keys = root.getKeys();
for (std::set<std::string>::iterator iter = keys.begin();
iter != keys.end(); ++iter)
diff --git a/qpdf/qpdf.testcov b/qpdf/qpdf.testcov
index 16650f73..6cd4e014 100644
--- a/qpdf/qpdf.testcov
+++ b/qpdf/qpdf.testcov
@@ -263,3 +263,4 @@ QPDFObjectHandle EOF in inline image 0
QPDFObjectHandle inline image token 0
QPDF not caching overridden objstm object 0
QPDFWriter original obj non-zero gen 0
+QPDF_optimization indirect outlines 0
diff --git a/qpdf/qtest/qpdf.test b/qpdf/qtest/qpdf.test
index 30200ca1..2f2063f8 100644
--- a/qpdf/qtest/qpdf.test
+++ b/qpdf/qtest/qpdf.test
@@ -1192,6 +1192,7 @@ my @to_linearize =
'object-stream', # contains object streams
'hybrid-xref', # contains both xref tables and streams
'gen1', # has objects with generation > 0
+ 'direct-outlines', # /Outlines is a direct object
@linearized_files, # we should be able to relinearize
);
diff --git a/qpdf/qtest/qpdf/direct-outlines.pdf b/qpdf/qtest/qpdf/direct-outlines.pdf
new file mode 100644
index 00000000..507ab466
--- /dev/null
+++ b/qpdf/qtest/qpdf/direct-outlines.pdf
@@ -0,0 +1,1503 @@
+%PDF-1.3
+%¿÷¢þ
+%QDF-1.0
+
+1 0 obj
+<<
+ /PageLabels << /Nums [
+ 0 << /P () >>
+ 2 << /S /r /St 1 >>
+ 7 << /P () >>
+ 9 << /S /r /St 6 >>
+ 11 << /P () >>
+ 12 << /S /D /St 2 >>
+ 15 << /S /D /St 6 >>
+ 19 << /P () >>
+ 20 << /S /D /St 12 >>
+ 22 << /S /D /St 16059 >>
+ 23 << /S /r /St 50 >>
+ 29 << /S /r /St 54 >>
+ ] >>
+ /Pages 2 0 R
+ /Type /Catalog
+ /PageMode /UseOutlines
+ /Outlines <<
+ /Type /Outlines
+ /First 96 0 R
+ /Last 97 0 R
+ /Count 6
+ >>
+>>
+endobj
+
+2 0 obj
+<<
+ /Count 30
+ /Kids [
+ 3 0 R
+ 4 0 R
+ 5 0 R
+ 6 0 R
+ 7 0 R
+ 8 0 R
+ 9 0 R
+ 10 0 R
+ 11 0 R
+ 12 0 R
+ 13 0 R
+ 14 0 R
+ 15 0 R
+ 16 0 R
+ 17 0 R
+ 18 0 R
+ 19 0 R
+ 20 0 R
+ 21 0 R
+ 22 0 R
+ 23 0 R
+ 24 0 R
+ 25 0 R
+ 26 0 R
+ 27 0 R
+ 28 0 R
+ 29 0 R
+ 30 0 R
+ 31 0 R
+ 32 0 R
+ ]
+ /Type /Pages
+>>
+endobj
+
+%% Page 1
+3 0 obj
+<<
+ /Contents 33 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 2
+4 0 obj
+<<
+ /Contents 37 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 3
+5 0 obj
+<<
+ /Contents 39 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 4
+6 0 obj
+<<
+ /Contents 41 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 5
+7 0 obj
+<<
+ /Contents 43 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 6
+8 0 obj
+<<
+ /Contents 45 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 7
+9 0 obj
+<<
+ /Contents 47 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 8
+10 0 obj
+<<
+ /Contents 49 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 9
+11 0 obj
+<<
+ /Contents 51 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 10
+12 0 obj
+<<
+ /Contents 53 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 11
+13 0 obj
+<<
+ /Contents 55 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 12
+14 0 obj
+<<
+ /Contents 57 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 13
+15 0 obj
+<<
+ /Contents 59 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 14
+16 0 obj
+<<
+ /Contents 61 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 15
+17 0 obj
+<<
+ /Contents 63 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 16
+18 0 obj
+<<
+ /Contents 65 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 17
+19 0 obj
+<<
+ /Contents 67 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 18
+20 0 obj
+<<
+ /Contents 69 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 19
+21 0 obj
+<<
+ /Contents 71 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 20
+22 0 obj
+<<
+ /Contents 73 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 21
+23 0 obj
+<<
+ /Contents 75 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 22
+24 0 obj
+<<
+ /Contents 77 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 23
+25 0 obj
+<<
+ /Contents 79 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 24
+26 0 obj
+<<
+ /Contents 81 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 25
+27 0 obj
+<<
+ /Contents 83 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 26
+28 0 obj
+<<
+ /Contents 85 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 27
+29 0 obj
+<<
+ /Contents 87 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 28
+30 0 obj
+<<
+ /Contents 89 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 29
+31 0 obj
+<<
+ /Contents 91 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Page 30
+32 0 obj
+<<
+ /Contents 93 0 R
+ /MediaBox [
+ 0
+ 0
+ 612
+ 792
+ ]
+ /Parent 2 0 R
+ /Resources <<
+ /Font <<
+ /F1 35 0 R
+ >>
+ /ProcSet 36 0 R
+ >>
+ /Type /Page
+>>
+endobj
+
+%% Contents for page 1
+33 0 obj
+<<
+ /Length 34 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 0) Tj
+ET
+endstream
+endobj
+
+34 0 obj
+46
+endobj
+
+35 0 obj
+<<
+ /BaseFont /Helvetica
+ /Encoding /WinAnsiEncoding
+ /Name /F1
+ /Subtype /Type1
+ /Type /Font
+>>
+endobj
+
+36 0 obj
+[
+ /PDF
+ /Text
+]
+endobj
+
+%% Contents for page 2
+37 0 obj
+<<
+ /Length 38 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 1) Tj
+ET
+endstream
+endobj
+
+38 0 obj
+46
+endobj
+
+%% Contents for page 3
+39 0 obj
+<<
+ /Length 40 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 2) Tj
+ET
+endstream
+endobj
+
+40 0 obj
+46
+endobj
+
+%% Contents for page 4
+41 0 obj
+<<
+ /Length 42 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 3) Tj
+ET
+endstream
+endobj
+
+42 0 obj
+46
+endobj
+
+%% Contents for page 5
+43 0 obj
+<<
+ /Length 44 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 4) Tj
+ET
+endstream
+endobj
+
+44 0 obj
+46
+endobj
+
+%% Contents for page 6
+45 0 obj
+<<
+ /Length 46 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 5) Tj
+ET
+endstream
+endobj
+
+46 0 obj
+46
+endobj
+
+%% Contents for page 7
+47 0 obj
+<<
+ /Length 48 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 6) Tj
+ET
+endstream
+endobj
+
+48 0 obj
+46
+endobj
+
+%% Contents for page 8
+49 0 obj
+<<
+ /Length 50 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 7) Tj
+ET
+endstream
+endobj
+
+50 0 obj
+46
+endobj
+
+%% Contents for page 9
+51 0 obj
+<<
+ /Length 52 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 8) Tj
+ET
+endstream
+endobj
+
+52 0 obj
+46
+endobj
+
+%% Contents for page 10
+53 0 obj
+<<
+ /Length 54 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 9) Tj
+ET
+endstream
+endobj
+
+54 0 obj
+46
+endobj
+
+%% Contents for page 11
+55 0 obj
+<<
+ /Length 56 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 10) Tj
+ET
+endstream
+endobj
+
+56 0 obj
+47
+endobj
+
+%% Contents for page 12
+57 0 obj
+<<
+ /Length 58 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 11) Tj
+ET
+endstream
+endobj
+
+58 0 obj
+47
+endobj
+
+%% Contents for page 13
+59 0 obj
+<<
+ /Length 60 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 12) Tj
+ET
+endstream
+endobj
+
+60 0 obj
+47
+endobj
+
+%% Contents for page 14
+61 0 obj
+<<
+ /Length 62 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 13) Tj
+ET
+endstream
+endobj
+
+62 0 obj
+47
+endobj
+
+%% Contents for page 15
+63 0 obj
+<<
+ /Length 64 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 14) Tj
+ET
+endstream
+endobj
+
+64 0 obj
+47
+endobj
+
+%% Contents for page 16
+65 0 obj
+<<
+ /Length 66 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 15) Tj
+ET
+endstream
+endobj
+
+66 0 obj
+47
+endobj
+
+%% Contents for page 17
+67 0 obj
+<<
+ /Length 68 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 16) Tj
+ET
+endstream
+endobj
+
+68 0 obj
+47
+endobj
+
+%% Contents for page 18
+69 0 obj
+<<
+ /Length 70 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 17) Tj
+ET
+endstream
+endobj
+
+70 0 obj
+47
+endobj
+
+%% Contents for page 19
+71 0 obj
+<<
+ /Length 72 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 18) Tj
+ET
+endstream
+endobj
+
+72 0 obj
+47
+endobj
+
+%% Contents for page 20
+73 0 obj
+<<
+ /Length 74 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 19) Tj
+ET
+endstream
+endobj
+
+74 0 obj
+47
+endobj
+
+%% Contents for page 21
+75 0 obj
+<<
+ /Length 76 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 20) Tj
+ET
+endstream
+endobj
+
+76 0 obj
+47
+endobj
+
+%% Contents for page 22
+77 0 obj
+<<
+ /Length 78 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 21) Tj
+ET
+endstream
+endobj
+
+78 0 obj
+47
+endobj
+
+%% Contents for page 23
+79 0 obj
+<<
+ /Length 80 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 22) Tj
+ET
+endstream
+endobj
+
+80 0 obj
+47
+endobj
+
+%% Contents for page 24
+81 0 obj
+<<
+ /Length 82 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 23) Tj
+ET
+endstream
+endobj
+
+82 0 obj
+47
+endobj
+
+%% Contents for page 25
+83 0 obj
+<<
+ /Length 84 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 24) Tj
+ET
+endstream
+endobj
+
+84 0 obj
+47
+endobj
+
+%% Contents for page 26
+85 0 obj
+<<
+ /Length 86 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 25) Tj
+ET
+endstream
+endobj
+
+86 0 obj
+47
+endobj
+
+%% Contents for page 27
+87 0 obj
+<<
+ /Length 88 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 26) Tj
+ET
+endstream
+endobj
+
+88 0 obj
+47
+endobj
+
+%% Contents for page 28
+89 0 obj
+<<
+ /Length 90 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 27) Tj
+ET
+endstream
+endobj
+
+90 0 obj
+47
+endobj
+
+%% Contents for page 29
+91 0 obj
+<<
+ /Length 92 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 28) Tj
+ET
+endstream
+endobj
+
+92 0 obj
+47
+endobj
+
+%% Contents for page 30
+93 0 obj
+<<
+ /Length 94 0 R
+>>
+stream
+BT
+ /F1 24 Tf
+ 72 720 Td
+ (Potato 29) Tj
+ET
+endstream
+endobj
+
+94 0 obj
+47
+endobj
+
+95 0 obj
+null
+endobj
+
+96 0 obj
+<<
+ /Type /Outline
+ /Title (Isís 1 -> 5: /XYZ null null null)
+ /Parent 95 0 R
+ /Count 4
+ /Next 97 0 R
+ /First 98 0 R
+ /Last 99 0 R
+ /Dest [ 8 0 R /XYZ null null null ]
+>>
+endobj
+
+97 0 obj
+<<
+ /Type /Outline
+ /Title (Trepak 2 -> 15: /XYZ 66 756 3)
+ /Parent 95 0 R
+ /Prev 96 0 R
+ /Dest [ 18 0 R /XYZ 66 756 3 ]
+>>
+endobj
+
+98 0 obj
+<<
+ /Type /Outline
+ /Title (Amanda 1.1 -> 11: /Fit)
+ /Parent 96 0 R
+ /Next 99 0 R
+ /First 100 0 R
+ /Last 101 0 R
+ /Count -3
+ /Dest [ 14 0 R /Fit ]
+>>
+endobj
+
+99 0 obj
+<<
+ /Type /Outline
+ % /Title (Sandy (Sandy [Greek]) 1.2 -> 13: /FitH 792)
+ /Title <feff00530061006e00640079002000f703a303b103bd03b403b900f700200031002e00320020002d003e002000310033003a0020002f00460069007400480020003700390032>
+ /Parent 96 0 R
+ /Prev 98 0 R
+ /First 105 0 R
+ /Last 106 0 R
+ /Count 2
+ /Dest [ 16 0 R /FitH 792 ]
+>>
+endobj
+
+100 0 obj
+<<
+ /Type /Outline
+ /Title (Isosicle 1.1.1 -> 12: /FitV 100)
+ /Parent 98 0 R
+ /Next 101 0 R
+ /First 102 0 R
+ /Last 103 0 R
+ /Count -2
+ /Dest [ 15 0 R /FitV 100 ]
+>>
+endobj
+
+101 0 obj
+<<
+ /Type /Outline
+ /Title (Isosicle 1.1.2 -> 12: /XYZ null null null)
+ /Parent 98 0 R
+ /Prev 100 0 R
+ /First 104 0 R
+ /Last 104 0 R
+ /Count 1
+ /Dest [ 15 0 R /XYZ null null null ]
+>>
+endobj
+
+102 0 obj
+<<
+ /Type /Outline
+ /Title (Isosicle 1.1.1.1 -> 18: /XYZ null null null)
+ /Parent 100 0 R
+ /Next 103 0 R
+ /Dest [ 21 0 R /XYZ null null null ]
+>>
+endobj
+
+103 0 obj
+<<
+ /Type /Outline
+ /Title (Isosicle 1.1.1.2 -> 19: /XYZ null null null)
+ /Parent 100 0 R
+ /Prev 102 0 R
+ /Dest [ 22 0 R /XYZ null null null ]
+>>
+endobj
+
+104 0 obj
+<<
+ /Type /Outline
+ /Title (Isosicle 1.1.2.1 -> 22: /XYZ null null null)
+ /Parent 101 0 R
+ /Dest [ 25 0 R /XYZ null null null ]
+>>
+endobj
+
+105 0 obj
+<<
+ /Type /Outline
+ /Title (Trepsichord 1.2.1 -> 1: /FitR 66 714 180 770)
+ /Parent 99 0 R
+ /Next 106 0 R
+ /Dest [ 4 0 R /FitR 66 714 180 770 ]
+>>
+endobj
+
+106 0 obj
+<<
+ /Type /Outline
+ /Title (Trepsicle 1.2.2 -> 0: /XYZ null null null)
+ /Parent 99 0 R
+ /Prev 105 0 R
+ /Dest [ 3 0 R /XYZ null null null ]
+>>
+endobj
+
+xref
+0 107
+0000000000 65535 f
+0000000025 00000 n
+0000000507 00000 n
+0000000903 00000 n
+0000001108 00000 n
+0000001313 00000 n
+0000001518 00000 n
+0000001723 00000 n
+0000001928 00000 n
+0000002133 00000 n
+0000002338 00000 n
+0000002544 00000 n
+0000002751 00000 n
+0000002958 00000 n
+0000003165 00000 n
+0000003372 00000 n
+0000003579 00000 n
+0000003786 00000 n
+0000003993 00000 n
+0000004200 00000 n
+0000004407 00000 n
+0000004614 00000 n
+0000004821 00000 n
+0000005028 00000 n
+0000005235 00000 n
+0000005442 00000 n
+0000005649 00000 n
+0000005856 00000 n
+0000006063 00000 n
+0000006270 00000 n
+0000006477 00000 n
+0000006684 00000 n
+0000006891 00000 n
+0000007110 00000 n
+0000007213 00000 n
+0000007233 00000 n
+0000007352 00000 n
+0000007411 00000 n
+0000007514 00000 n
+0000007557 00000 n
+0000007660 00000 n
+0000007703 00000 n
+0000007806 00000 n
+0000007849 00000 n
+0000007952 00000 n
+0000007995 00000 n
+0000008098 00000 n
+0000008141 00000 n
+0000008244 00000 n
+0000008287 00000 n
+0000008390 00000 n
+0000008433 00000 n
+0000008536 00000 n
+0000008580 00000 n
+0000008683 00000 n
+0000008727 00000 n
+0000008831 00000 n
+0000008875 00000 n
+0000008979 00000 n
+0000009023 00000 n
+0000009127 00000 n
+0000009171 00000 n
+0000009275 00000 n
+0000009319 00000 n
+0000009423 00000 n
+0000009467 00000 n
+0000009571 00000 n
+0000009615 00000 n
+0000009719 00000 n
+0000009763 00000 n
+0000009867 00000 n
+0000009911 00000 n
+0000010015 00000 n
+0000010059 00000 n
+0000010163 00000 n
+0000010207 00000 n
+0000010311 00000 n
+0000010355 00000 n
+0000010459 00000 n
+0000010503 00000 n
+0000010607 00000 n
+0000010651 00000 n
+0000010755 00000 n
+0000010799 00000 n
+0000010903 00000 n
+0000010947 00000 n
+0000011051 00000 n
+0000011095 00000 n
+0000011199 00000 n
+0000011243 00000 n
+0000011347 00000 n
+0000011391 00000 n
+0000011495 00000 n
+0000011539 00000 n
+0000011643 00000 n
+0000011663 00000 n
+0000011685 00000 n
+0000011881 00000 n
+0000012027 00000 n
+0000012202 00000 n
+0000012555 00000 n
+0000012746 00000 n
+0000012956 00000 n
+0000013125 00000 n
+0000013294 00000 n
+0000013447 00000 n
+0000013616 00000 n
+trailer <<
+ /Root 1 0 R
+ /Size 107
+>>
+startxref
+13781
+%%EOF