JS -- Add tests for print/save actions
* change PDFDocument::hasJSActions to return true when there are JS actions in catalog.
This commit is contained in:
parent
df53e7811c
commit
ffd4bc790c
@ -1038,10 +1038,11 @@ class PDFDocument {
|
|||||||
"hasJSActions",
|
"hasJSActions",
|
||||||
this.fieldObjects.then(fieldObjects => {
|
this.fieldObjects.then(fieldObjects => {
|
||||||
return (
|
return (
|
||||||
fieldObjects !== null &&
|
(fieldObjects !== null &&
|
||||||
Object.values(fieldObjects).some(fieldObject =>
|
Object.values(fieldObjects).some(fieldObject =>
|
||||||
fieldObject.some(object => object.actions !== null)
|
fieldObject.some(object => object.actions !== null)
|
||||||
)
|
)) ||
|
||||||
|
!!this.catalog.jsActions
|
||||||
);
|
);
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
@ -16,6 +16,15 @@
|
|||||||
const { clearInput, closePages, loadAndWait } = require("./test_utils.js");
|
const { clearInput, closePages, loadAndWait } = require("./test_utils.js");
|
||||||
|
|
||||||
describe("Interaction", () => {
|
describe("Interaction", () => {
|
||||||
|
async function actAndWaitForInput(page, selector, action) {
|
||||||
|
await clearInput(page, selector);
|
||||||
|
await action();
|
||||||
|
await page.waitForFunction(
|
||||||
|
`document.querySelector("${selector.replace("\\", "\\\\")}").value !== ""`
|
||||||
|
);
|
||||||
|
return page.$eval(selector, el => el.value);
|
||||||
|
}
|
||||||
|
|
||||||
describe("in 160F-2019.pdf", () => {
|
describe("in 160F-2019.pdf", () => {
|
||||||
let pages;
|
let pages;
|
||||||
|
|
||||||
@ -280,4 +289,76 @@ describe("Interaction", () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe("in doc_actions.pdf for printing", () => {
|
||||||
|
let pages;
|
||||||
|
|
||||||
|
beforeAll(async () => {
|
||||||
|
pages = await loadAndWait("doc_actions.pdf", "#\\34 7R");
|
||||||
|
});
|
||||||
|
|
||||||
|
afterAll(async () => {
|
||||||
|
await closePages(pages);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("must execute WillPrint and DidPrint actions", async () => {
|
||||||
|
await Promise.all(
|
||||||
|
pages.map(async ([browserName, page]) => {
|
||||||
|
if (process.platform === "win32" && browserName === "firefox") {
|
||||||
|
// Doesn't work because of bug 1662471
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let text = await actAndWaitForInput(page, "#\\34 7R", async () => {
|
||||||
|
await page.click("#print");
|
||||||
|
});
|
||||||
|
expect(text).withContext(`In ${browserName}`).toEqual("WillPrint");
|
||||||
|
|
||||||
|
await page.waitForFunction(
|
||||||
|
`document.querySelector("#\\\\35 0R").value !== ""`
|
||||||
|
);
|
||||||
|
|
||||||
|
text = await page.$eval("#\\35 0R", el => el.value);
|
||||||
|
expect(text).withContext(`In ${browserName}`).toEqual("DidPrint");
|
||||||
|
})
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("in doc_actions.pdf for saving", () => {
|
||||||
|
let pages;
|
||||||
|
|
||||||
|
beforeAll(async () => {
|
||||||
|
pages = await loadAndWait("doc_actions.pdf", "#\\34 7R");
|
||||||
|
});
|
||||||
|
|
||||||
|
afterAll(async () => {
|
||||||
|
await closePages(pages);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("must execute WillSave and DidSave actions", async () => {
|
||||||
|
await Promise.all(
|
||||||
|
pages.map(async ([browserName, page]) => {
|
||||||
|
try {
|
||||||
|
// Disable download in chrome
|
||||||
|
// (it leads to an error in firefox so the try...)
|
||||||
|
await page._client.send("Page.setDownloadBehavior", {
|
||||||
|
behavior: "deny",
|
||||||
|
});
|
||||||
|
} catch (_) {}
|
||||||
|
await clearInput(page, "#\\34 7R");
|
||||||
|
let text = await actAndWaitForInput(page, "#\\34 7R", async () => {
|
||||||
|
await page.click("#download");
|
||||||
|
});
|
||||||
|
expect(text).withContext(`In ${browserName}`).toEqual("WillSave");
|
||||||
|
|
||||||
|
await page.waitForFunction(
|
||||||
|
`document.querySelector("#\\\\35 0R").value !== ""`
|
||||||
|
);
|
||||||
|
|
||||||
|
text = await page.$eval("#\\35 0R", el => el.value);
|
||||||
|
expect(text).withContext(`In ${browserName}`).toEqual("DidSave");
|
||||||
|
})
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
2
test/pdfs/.gitignore
vendored
2
test/pdfs/.gitignore
vendored
@ -46,6 +46,7 @@
|
|||||||
!issue7544.pdf
|
!issue7544.pdf
|
||||||
!issue7507.pdf
|
!issue7507.pdf
|
||||||
!issue6931_reduced.pdf
|
!issue6931_reduced.pdf
|
||||||
|
!doc_actions.pdf
|
||||||
!issue7580.pdf
|
!issue7580.pdf
|
||||||
!issue7598.pdf
|
!issue7598.pdf
|
||||||
!issue12750.pdf
|
!issue12750.pdf
|
||||||
@ -179,7 +180,6 @@
|
|||||||
!pattern_text_embedded_font.pdf
|
!pattern_text_embedded_font.pdf
|
||||||
!devicen.pdf
|
!devicen.pdf
|
||||||
!cmykjpeg.pdf
|
!cmykjpeg.pdf
|
||||||
!docactions.pdf
|
|
||||||
!issue840.pdf
|
!issue840.pdf
|
||||||
!160F-2019.pdf
|
!160F-2019.pdf
|
||||||
!issue4402_reduced.pdf
|
!issue4402_reduced.pdf
|
||||||
|
BIN
test/pdfs/doc_actions.pdf
Normal file
BIN
test/pdfs/doc_actions.pdf
Normal file
Binary file not shown.
@ -1,426 +0,0 @@
|
|||||||
%PDF-1.5
|
|
||||||
%¿÷¢þ
|
|
||||||
1 0 obj
|
|
||||||
<< /Type /ObjStm /Length 9839 /N 70 /First 545 >>
|
|
||||||
stream
|
|
||||||
2 0 3 33 4 227 5 301 6 1602 7 1672 8 1755 9 1808 10 1936 11 1990 12 2115 13 2169 14 2464 15 2517 16 2561 17 2606 18 2730 19 2824 20 2877 21 3110 22 3155 23 3208 24 3441 25 3486 26 3539 27 3772 28 3817 29 3870 30 4103 31 4148 32 4201 33 4434 34 4479 35 4532 36 4765 37 4810 38 4905 39 4958 40 5191 41 5236 42 5289 43 5522 44 5567 45 5620 46 5855 47 5900 48 5953 49 6188 50 6233 51 6286 52 6521 53 6566 54 6599 55 6652 56 6887 57 6932 58 6992 59 7107 60 7703 61 7927 62 7935 63 8215 64 8430 65 8632 66 8692 67 8846 68 8989 69 9068 70 9138 71 9177
|
|
||||||
<< /D [ 3 0 R /Fit ] /S /GoTo >>
|
|
||||||
<< /AA << /O << /JS (console.println\('Open the document'\); ) /S /JavaScript >> >> /Annots [ 13 0 R ] /Contents 73 0 R /MediaBox [ 0 0 612 792 ] /Parent 18 0 R /Resources 14 0 R /Type /Page >>
|
|
||||||
<< /JS (console.println('Open Action');) /S /JavaScript >>
|
|
||||||
<< /Differences [ 24 /breve /caron /circumflex /dotaccent /hungarumlaut /ogonek /ring /tilde 39 /quotesingle 96 /grave 128 /bullet /dagger /daggerdbl /ellipsis /emdash /endash /florin /fraction /guilsinglleft /guilsinglright /minus /perthousand /quotedblbase /quotedblleft /quotedblright /quoteleft /quoteright /quotesinglbase /trademark /fi /fl /Lslash /OE /Scaron /Ydieresis /Zcaron /dotlessi /lslash /oe /scaron /zcaron 164 /currency 166 /brokenbar 168 /dieresis /copyright /ordfeminine 172 /logicalnot /.notdef /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu 183 /periodcentered /cedilla /onesuperior /ordmasculine 188 /onequarter /onehalf /threequarters 192 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] /Type /Encoding >>
|
|
||||||
<< /BaseFont /ZapfDingbats /Name /ZaDb /Subtype /Type1 /Type /Font >>
|
|
||||||
<< /BaseFont /Helvetica /Encoding 5 0 R /Name /Helv /Subtype /Type1 /Type /Font >>
|
|
||||||
<< /Font << /F30 9 0 R >> /ProcSet [ /PDF /Text ] >>
|
|
||||||
<< /BaseFont /GCRMMP+Dingbats /FirstChar 123 /FontDescriptor 64 0 R /LastChar 123 /Subtype /Type1 /Type /Font /Widths 61 0 R >>
|
|
||||||
<< /Font << /F31 11 0 R >> /ProcSet [ /PDF /Text ] >>
|
|
||||||
<< /BaseFont /XYLNGW+CMSS10 /FirstChar 80 /FontDescriptor 63 0 R /LastChar 117 /Subtype /Type1 /Type /Font /Widths 60 0 R >>
|
|
||||||
<< /Font << /F31 11 0 R >> /ProcSet [ /PDF /Text ] >>
|
|
||||||
<< /AA << /F << /JS (console.println\('text entered='+event.value\);) /S /JavaScript >> >> /BS << /S /S /W 1 >> /DA (/Helv 10 Tf 0 0 0 rg) /DV () /F 4 /FT /Tx /MK << /BC [ 1 0 0 ] /BG [ 1 1 1 ] >> /Q 0 /Rect [ 184.744 652.309 271.776 668.194 ] /Subtype /Widget /T (field1) /Type /Annot /V () >>
|
|
||||||
<< /Font << /F8 17 0 R >> /ProcSet [ /PDF /Text ] >>
|
|
||||||
<< /D [ 3 0 R /XYZ 105.869 705.06 null ] >>
|
|
||||||
<< /D [ 3 0 R /XYZ 106.869 667.198 null ] >>
|
|
||||||
<< /BaseFont /CFMZGO+CMR10 /FirstChar 12 /FontDescriptor 62 0 R /LastChar 121 /Subtype /Type1 /Type /Font /Widths 59 0 R >>
|
|
||||||
<< /Count 6 /Kids [ 3 0 R 20 0 R 23 0 R 26 0 R 29 0 R 32 0 R ] /Parent 65 0 R /Type /Pages >>
|
|
||||||
<< /Font << /F8 17 0 R >> /ProcSet [ /PDF /Text ] >>
|
|
||||||
<< /AA << /C << /JS (console.println\('Close page 2'\);) /S /JavaScript >> /O << /JS (console.println\('Open page 2'\);) /S /JavaScript >> >> /Contents 74 0 R /MediaBox [ 0 0 612 792 ] /Parent 18 0 R /Resources 19 0 R /Type /Page >>
|
|
||||||
<< /D [ 20 0 R /XYZ 159.667 705.06 null ] >>
|
|
||||||
<< /Font << /F8 17 0 R >> /ProcSet [ /PDF /Text ] >>
|
|
||||||
<< /AA << /C << /JS (console.println\('Close page 3'\);) /S /JavaScript >> /O << /JS (console.println\('Open page 3'\);) /S /JavaScript >> >> /Contents 75 0 R /MediaBox [ 0 0 612 792 ] /Parent 18 0 R /Resources 22 0 R /Type /Page >>
|
|
||||||
<< /D [ 23 0 R /XYZ 105.869 705.06 null ] >>
|
|
||||||
<< /Font << /F8 17 0 R >> /ProcSet [ /PDF /Text ] >>
|
|
||||||
<< /AA << /C << /JS (console.println\('Close page 4'\);) /S /JavaScript >> /O << /JS (console.println\('Open page 4'\);) /S /JavaScript >> >> /Contents 76 0 R /MediaBox [ 0 0 612 792 ] /Parent 18 0 R /Resources 25 0 R /Type /Page >>
|
|
||||||
<< /D [ 26 0 R /XYZ 159.667 705.06 null ] >>
|
|
||||||
<< /Font << /F8 17 0 R >> /ProcSet [ /PDF /Text ] >>
|
|
||||||
<< /AA << /C << /JS (console.println\('Close page 5'\);) /S /JavaScript >> /O << /JS (console.println\('Open page 5'\);) /S /JavaScript >> >> /Contents 77 0 R /MediaBox [ 0 0 612 792 ] /Parent 18 0 R /Resources 28 0 R /Type /Page >>
|
|
||||||
<< /D [ 29 0 R /XYZ 105.869 705.06 null ] >>
|
|
||||||
<< /Font << /F8 17 0 R >> /ProcSet [ /PDF /Text ] >>
|
|
||||||
<< /AA << /C << /JS (console.println\('Close page 6'\);) /S /JavaScript >> /O << /JS (console.println\('Open page 6'\);) /S /JavaScript >> >> /Contents 78 0 R /MediaBox [ 0 0 612 792 ] /Parent 18 0 R /Resources 31 0 R /Type /Page >>
|
|
||||||
<< /D [ 32 0 R /XYZ 159.667 705.06 null ] >>
|
|
||||||
<< /Font << /F8 17 0 R >> /ProcSet [ /PDF /Text ] >>
|
|
||||||
<< /AA << /C << /JS (console.println\('Close page 7'\);) /S /JavaScript >> /O << /JS (console.println\('Open page 7'\);) /S /JavaScript >> >> /Contents 79 0 R /MediaBox [ 0 0 612 792 ] /Parent 37 0 R /Resources 34 0 R /Type /Page >>
|
|
||||||
<< /D [ 35 0 R /XYZ 105.869 705.06 null ] >>
|
|
||||||
<< /Count 6 /Kids [ 35 0 R 39 0 R 42 0 R 45 0 R 48 0 R 51 0 R ] /Parent 65 0 R /Type /Pages >>
|
|
||||||
<< /Font << /F8 17 0 R >> /ProcSet [ /PDF /Text ] >>
|
|
||||||
<< /AA << /C << /JS (console.println\('Close page 8'\);) /S /JavaScript >> /O << /JS (console.println\('Open page 8'\);) /S /JavaScript >> >> /Contents 80 0 R /MediaBox [ 0 0 612 792 ] /Parent 37 0 R /Resources 38 0 R /Type /Page >>
|
|
||||||
<< /D [ 39 0 R /XYZ 159.667 705.06 null ] >>
|
|
||||||
<< /Font << /F8 17 0 R >> /ProcSet [ /PDF /Text ] >>
|
|
||||||
<< /AA << /C << /JS (console.println\('Close page 9'\);) /S /JavaScript >> /O << /JS (console.println\('Open page 9'\);) /S /JavaScript >> >> /Contents 81 0 R /MediaBox [ 0 0 612 792 ] /Parent 37 0 R /Resources 41 0 R /Type /Page >>
|
|
||||||
<< /D [ 42 0 R /XYZ 105.869 705.06 null ] >>
|
|
||||||
<< /Font << /F8 17 0 R >> /ProcSet [ /PDF /Text ] >>
|
|
||||||
<< /AA << /C << /JS (console.println\('Close page 10'\);) /S /JavaScript >> /O << /JS (console.println\('Open page 10'\);) /S /JavaScript >> >> /Contents 82 0 R /MediaBox [ 0 0 612 792 ] /Parent 37 0 R /Resources 44 0 R /Type /Page >>
|
|
||||||
<< /D [ 45 0 R /XYZ 159.667 705.06 null ] >>
|
|
||||||
<< /Font << /F8 17 0 R >> /ProcSet [ /PDF /Text ] >>
|
|
||||||
<< /AA << /C << /JS (console.println\('Close page 11'\);) /S /JavaScript >> /O << /JS (console.println\('Open page 11'\);) /S /JavaScript >> >> /Contents 83 0 R /MediaBox [ 0 0 612 792 ] /Parent 37 0 R /Resources 47 0 R /Type /Page >>
|
|
||||||
<< /D [ 48 0 R /XYZ 105.869 705.06 null ] >>
|
|
||||||
<< /Font << /F8 17 0 R >> /ProcSet [ /PDF /Text ] >>
|
|
||||||
<< /AA << /C << /JS (console.println\('Close page 12'\);) /S /JavaScript >> /O << /JS (console.println\('Open page 12'\);) /S /JavaScript >> >> /Contents 84 0 R /MediaBox [ 0 0 612 792 ] /Parent 37 0 R /Resources 50 0 R /Type /Page >>
|
|
||||||
<< /D [ 51 0 R /XYZ 159.667 705.06 null ] >>
|
|
||||||
<< /Names [ (Open) 4 0 R ] >>
|
|
||||||
<< /Font << /F8 17 0 R >> /ProcSet [ /PDF /Text ] >>
|
|
||||||
<< /AA << /C << /JS (console.println\('Close page 13'\);) /S /JavaScript >> /O << /JS (console.println\('Open page 13'\);) /S /JavaScript >> >> /Contents 85 0 R /MediaBox [ 0 0 612 792 ] /Parent 57 0 R /Resources 54 0 R /Type /Page >>
|
|
||||||
<< /D [ 55 0 R /XYZ 105.869 705.06 null ] >>
|
|
||||||
<< /Count 1 /Kids [ 55 0 R ] /Parent 65 0 R /Type /Pages >>
|
|
||||||
<< /DA (/Helv 10 Tf 0 g) /DR << /Font << /Helv 7 0 R /ZaDb 6 0 R >> >> /Fields [ 13 0 R ] /NeedAppearances true >>
|
|
||||||
[ 555.6 555.6 833.3 833.3 277.8 305.6 500 500 500 500 500 750 444.4 500 722.2 777.8 500 902.8 1013.9 777.8 277.8 277.8 500 833.3 500 833.3 777.8 277.8 388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8 500 277.8 277.8 500 555.6 444.4 555.6 444.4 305.6 500 555.6 277.8 305.6 527.8 277.8 833.3 555.6 500 555.6 527.8 391.7 394.4 388.9 555.6 527.8 722.2 527.8 527.8 ]
|
|
||||||
[ 638.9 736.1 645.8 555.6 680.6 687.5 666.7 944.5 666.7 666.7 611.1 288.9 500 288.9 500 277.8 277.8 480.6 516.7 444.4 516.7 444.4 305.6 500 516.7 238.9 266.7 488.9 238.9 794.4 516.7 500 516.7 516.7 341.7 383.3 361.1 516.7 ]
|
|
||||||
[ 392 ]
|
|
||||||
<< /Ascent 694 /CapHeight 683 /CharSet (/M/a/colon/d/e/eight/fi/five/four/g/l/nine/one/p/seven/six/t/three/two/x/y/zero) /Descent -194 /Flags 4 /FontBBox [ -40 -250 1009 750 ] /FontFile 86 0 R /FontName /CFMZGO+CMR10 /ItalicAngle 0 /StemV 69 /Type /FontDescriptor /XHeight 431 >>
|
|
||||||
<< /Ascent 694 /CapHeight 694 /CharSet (/P/S/b/i/m/t/u) /Descent -194 /Flags 4 /FontBBox [ -61 -250 999 759 ] /FontFile 87 0 R /FontName /XYLNGW+CMSS10 /ItalicAngle 0 /StemV 78 /Type /FontDescriptor /XHeight 444 >>
|
|
||||||
<< /Ascent 708 /CapHeight 708 /CharSet (/a97) /Descent 0 /Flags 4 /FontBBox [ -1 -143 981 819 ] /FontFile 88 0 R /FontName /GCRMMP+Dingbats /ItalicAngle 0 /StemV 0 /Type /FontDescriptor /XHeight 400 >>
|
|
||||||
<< /Count 13 /Kids [ 18 0 R 37 0 R 57 0 R ] /Type /Pages >>
|
|
||||||
<< /Limits [ (Doc-Start) (page.13) ] /Names [ (Doc-Start) 16 0 R (page.1) 15 0 R (page.10) 46 0 R (page.11) 49 0 R (page.12) 52 0 R (page.13) 56 0 R ] >>
|
|
||||||
<< /Limits [ (page.2) (page.7) ] /Names [ (page.2) 21 0 R (page.3) 24 0 R (page.4) 27 0 R (page.5) 30 0 R (page.6) 33 0 R (page.7) 36 0 R ] >>
|
|
||||||
<< /Limits [ (page.8) (page.9) ] /Names [ (page.8) 40 0 R (page.9) 43 0 R ] >>
|
|
||||||
<< /Kids [ 66 0 R 67 0 R 68 0 R ] /Limits [ (Doc-Start) (page.9) ] >>
|
|
||||||
<< /Dests 69 0 R /JavaScript 53 0 R >>
|
|
||||||
<< /AA << >> /AcroForm 58 0 R /Names 70 0 R /OpenAction 2 0 R /PageMode /UseOutlines /Pages 65 0 R /Type /Catalog >>
|
|
||||||
endstream
|
|
||||||
endobj
|
|
||||||
72 0 obj
|
|
||||||
<< /Author () /CreationDate (D:20201207183605+01'00') /Creator (LaTeX with hyperref) /Keywords () /ModDate (D:20201207183605+01'00') /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.21 \(TeX Live 2020/Debian\) kpathsea version 6.3.2) /Producer (pdfTeX-1.40.21) /Subject () /Title () /Trapped /False >>
|
|
||||||
endobj
|
|
||||||
73 0 obj
|
|
||||||
<< /Length 100 >>
|
|
||||||
stream
|
|
||||||
BT
|
|
||||||
/F8 9.9626 Tf 121.813 655.243 Td [(My)-333(text)-334(\014eld:)]TJ 154.421 -565.878 Td [(1)]TJ
|
|
||||||
ET
|
|
||||||
endstream
|
|
||||||
endobj
|
|
||||||
74 0 obj
|
|
||||||
<< /Length 84 >>
|
|
||||||
stream
|
|
||||||
BT
|
|
||||||
/F8 9.9626 Tf 175.611 657.235 Td [(page)-333(2)]TJ 154.421 -567.87 Td [(2)]TJ
|
|
||||||
ET
|
|
||||||
endstream
|
|
||||||
endobj
|
|
||||||
75 0 obj
|
|
||||||
<< /Length 84 >>
|
|
||||||
stream
|
|
||||||
BT
|
|
||||||
/F8 9.9626 Tf 121.813 657.235 Td [(page)-333(3)]TJ 154.421 -567.87 Td [(3)]TJ
|
|
||||||
ET
|
|
||||||
endstream
|
|
||||||
endobj
|
|
||||||
76 0 obj
|
|
||||||
<< /Length 84 >>
|
|
||||||
stream
|
|
||||||
BT
|
|
||||||
/F8 9.9626 Tf 175.611 657.235 Td [(page)-333(4)]TJ 154.421 -567.87 Td [(4)]TJ
|
|
||||||
ET
|
|
||||||
endstream
|
|
||||||
endobj
|
|
||||||
77 0 obj
|
|
||||||
<< /Length 84 >>
|
|
||||||
stream
|
|
||||||
BT
|
|
||||||
/F8 9.9626 Tf 121.813 657.235 Td [(page)-333(5)]TJ 154.421 -567.87 Td [(5)]TJ
|
|
||||||
ET
|
|
||||||
endstream
|
|
||||||
endobj
|
|
||||||
78 0 obj
|
|
||||||
<< /Length 84 >>
|
|
||||||
stream
|
|
||||||
BT
|
|
||||||
/F8 9.9626 Tf 175.611 657.235 Td [(page)-333(6)]TJ 154.421 -567.87 Td [(6)]TJ
|
|
||||||
ET
|
|
||||||
endstream
|
|
||||||
endobj
|
|
||||||
79 0 obj
|
|
||||||
<< /Length 84 >>
|
|
||||||
stream
|
|
||||||
BT
|
|
||||||
/F8 9.9626 Tf 121.813 657.235 Td [(page)-333(7)]TJ 154.421 -567.87 Td [(7)]TJ
|
|
||||||
ET
|
|
||||||
endstream
|
|
||||||
endobj
|
|
||||||
80 0 obj
|
|
||||||
<< /Length 84 >>
|
|
||||||
stream
|
|
||||||
BT
|
|
||||||
/F8 9.9626 Tf 175.611 657.235 Td [(page)-333(8)]TJ 154.421 -567.87 Td [(8)]TJ
|
|
||||||
ET
|
|
||||||
endstream
|
|
||||||
endobj
|
|
||||||
81 0 obj
|
|
||||||
<< /Length 84 >>
|
|
||||||
stream
|
|
||||||
BT
|
|
||||||
/F8 9.9626 Tf 121.813 657.235 Td [(page)-333(9)]TJ 154.421 -567.87 Td [(9)]TJ
|
|
||||||
ET
|
|
||||||
endstream
|
|
||||||
endobj
|
|
||||||
82 0 obj
|
|
||||||
<< /Length 86 >>
|
|
||||||
stream
|
|
||||||
BT
|
|
||||||
/F8 9.9626 Tf 175.611 657.235 Td [(page)-333(10)]TJ 151.931 -567.87 Td [(10)]TJ
|
|
||||||
ET
|
|
||||||
endstream
|
|
||||||
endobj
|
|
||||||
83 0 obj
|
|
||||||
<< /Length 85 >>
|
|
||||||
stream
|
|
||||||
BT
|
|
||||||
/F8 9.9626 Tf 121.813 657.235 Td [(page)-333(11)]TJ 151.93 -567.87 Td [(11)]TJ
|
|
||||||
ET
|
|
||||||
endstream
|
|
||||||
endobj
|
|
||||||
84 0 obj
|
|
||||||
<< /Length 86 >>
|
|
||||||
stream
|
|
||||||
BT
|
|
||||||
/F8 9.9626 Tf 175.611 657.235 Td [(page)-333(12)]TJ 151.931 -567.87 Td [(12)]TJ
|
|
||||||
ET
|
|
||||||
endstream
|
|
||||||
endobj
|
|
||||||
85 0 obj
|
|
||||||
<< /Length 85 >>
|
|
||||||
stream
|
|
||||||
BT
|
|
||||||
/F8 9.9626 Tf 121.813 657.235 Td [(page)-333(13)]TJ 151.93 -567.87 Td [(13)]TJ
|
|
||||||
ET
|
|
||||||
endstream
|
|
||||||
endobj
|
|
||||||
86 0 obj
|
|
||||||
<< /Length1 1700 /Length2 12121 /Length3 0 /Length 13821 >>
|
|
||||||
stream
|
|
||||||
%!PS-AdobeFont-1.0: CMR10 003.002
|
|
||||||
%%Title: CMR10
|
|
||||||
%Version: 003.002
|
|
||||||
%%CreationDate: Mon Jul 13 16:17:00 2009
|
|
||||||
%%Creator: David M. Jones
|
|
||||||
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
|
|
||||||
%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR10.
|
|
||||||
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
||||||
% This license is in the accompanying file OFL.txt, and is also
|
|
||||||
% available with a FAQ at: http://scripts.sil.org/OFL.
|
|
||||||
%%EndComments
|
|
||||||
FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup
|
|
||||||
/UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse
|
|
||||||
{save true}{false}ifelse}{false}ifelse
|
|
||||||
11 dict begin
|
|
||||||
/FontType 1 def
|
|
||||||
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
|
|
||||||
/FontName /CFMZGO+CMR10 def
|
|
||||||
/FontBBox {-40 -250 1009 750 }readonly def
|
|
||||||
/PaintType 0 def
|
|
||||||
/FontInfo 9 dict dup begin
|
|
||||||
/version (003.002) readonly def
|
|
||||||
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR10.) readonly def
|
|
||||||
/FullName (CMR10) readonly def
|
|
||||||
/FamilyName (Computer Modern) readonly def
|
|
||||||
/Weight (Medium) readonly def
|
|
||||||
/ItalicAngle 0 def
|
|
||||||
/isFixedPitch false def
|
|
||||||
/UnderlinePosition -100 def
|
|
||||||
/UnderlineThickness 50 def
|
|
||||||
end readonly def
|
|
||||||
/Encoding 256 array
|
|
||||||
0 1 255 {1 index exch /.notdef put} for
|
|
||||||
dup 77 /M put
|
|
||||||
dup 97 /a put
|
|
||||||
dup 58 /colon put
|
|
||||||
dup 100 /d put
|
|
||||||
dup 101 /e put
|
|
||||||
dup 56 /eight put
|
|
||||||
dup 12 /fi put
|
|
||||||
dup 53 /five put
|
|
||||||
dup 52 /four put
|
|
||||||
dup 103 /g put
|
|
||||||
dup 108 /l put
|
|
||||||
dup 57 /nine put
|
|
||||||
dup 49 /one put
|
|
||||||
dup 112 /p put
|
|
||||||
dup 55 /seven put
|
|
||||||
dup 54 /six put
|
|
||||||
dup 116 /t put
|
|
||||||
dup 51 /three put
|
|
||||||
dup 50 /two put
|
|
||||||
dup 120 /x put
|
|
||||||
dup 121 /y put
|
|
||||||
dup 48 /zero put
|
|
||||||
readonly def
|
|
||||||
currentdict end
|
|
||||||
currentfile eexec
|
|
||||||
ÙÖoc;„j²„¼ø°Aw-åÎ=Ó%åW˜)-{Ùr½uú•)¯œ‚ßröA•ÉÂÜãE(õ@Úý{ë¹´‡º“Q»û|ü_‘RÑå»
|
|
||||||
ØÐÆϤëA³Å -T@æ|ýq|V<>k¹¿J% qu8P¢øwÄGx³ÅªÛ̆ÖåQæ¯6KüªÒ-<2D>UŒ\<5C>§Ô%¡b<C2A1>Õ"t-*ðxÔõöÓŸÏÿJ‘+
|
|
||||||
}ì<>3¥{Zà2ŽùÕzݬT2sÀ$ZõÌÑ&{Bè–J×{¨¥ÜÆØx¹<¥Ÿ
,—Ü-.è2›¯iR‹n·Ã±vÌÙ¾1ä • „'Æ䓱©·_r"O¯»_‹t±3keè¾fBݼöVÁfj—Ú9Ò³ÿ Ô
Yh뀸Á{û´qÝÉÊÆ-÷†—ºøÉ·ÊãÁ}W§?Å?gw1*Eh[ŠÜÛ:›—ªtÍÀWeI,Úv•8üa…<{‚ñBú1â¤00Z8ÃÌî5 |ñŽ}µðN¾àÔ×lw]ƒÿƒ6Nÿb¿—ðð¤h3E`œ†(¡›EÁ‰¡Þ<C2A1>'Q;²eµÔƒª/ðà.D©yL’â5ØñÇ$¥4IGÃå׮Ɋ\‚yjù9£.îVU»<55>5£Q!äì‹-Íèµ<C3A8>ÈBƒ…Ä9ödèâö««B^éoVùðwˆBÉŽáT7„¡‰¾R€ŸÀsO™GA‹¦÷ãÕà b#íTBv!m·<6D>WT=úãÍÀ¦üw,ªID%'¥ÙMÅKé<‡|Ù]ØD¥Ã°€@‰õ·€2²½Oø( |