{{header}}
{{object 1 0}} <<
  /Type /Catalog
  /Pages 2 0 R
  /AcroForm 4 0 R
  /OpenAction 10 0 R
>>
endobj
{{object 2 0}} <<
  /Type /Pages
  /Count 1
  /Kids [
    3 0 R
  ]
>>
endobj
% Page number 0.
{{object 3 0}} <<
  /Type /Page
  /Parent 2 0 R
  /Resources <<
    /Font <</F1 15 0 R>>
  >>
  /Contents [21 0 R]
  /MediaBox [0 0 612 792]
  /Annots [7 0 R 8 0 R 9 0 R]
>>
endobj
% Forms
{{object 4 0}} <<
  /XFA [
    (xdp:xdp) 23 0 R
    (form) 29 0 R
    (</xdp:xdp>) 30 0 R
  ]
  /Fields [
    5 0 R
  ]
>>
endobj
% Fields
{{object 5 0}} <<
  /T (MyField)
  /Kids [
    6 0 R
  ]
  /Rect [100 100 400 400]
>>
endobj
{{object 6 0}} <<
  /Parent 5 0 R
  /FT /Btn
  /Kids [
    7 0 R
    8 0 R
    9 0 R
  ]
  /Rect [200 200 220 220]
>>
endobj
{{object 7 0}} <<
  /Parent 6 0 R
  /Type /Annot
  /Subtype /Widget
  /Rect [220 220 240 240]
>>
endobj
{{object 8 0}} <<
  /Parent 6 0 R
  /Type /Annot
  /Subtype /Widget
  /Rect [240 240 260 260]
>>
endobj
{{object 9 0}} <<
  /Parent 6 0 R
  /Type /Annot
  /Subtype /Widget
  /Rect [240 240 260 260]
>>
endobj
% OpenAction action
{{object 10 0}} <<
  /Type /Action
  /S /JavaScript
  /JS 11 0 R
>>
endobj
% JS program to exexute
{{object 11 0}} <<
>>
stream
var theName = "MyField";
function Mangles() {
  app.alert('Starting ...');
  try {
    var f = this.getField(theName);
    Object.defineProperty(Array.prototype, 1, {
      get: () => {
        return this[1];
      },
      set: (v) => {
        app.alert('Firing ...');
        this.removeField(theName);
        gc();
        return false;
      },
      enumerable: true
    });
    f.page;
  } catch (e) {
    app.alert("failed: " + e);
  }
}
Mangles();
endstream
endobj
{{object 23 0}} <<
>>stream
<?xml version="1.0" encoding="UTF-8"?>
<xdp:xdp xmlns:xdp="http://ns.adobe.com/xdp/">
endstream
endobj
{{object 29 0}} <<
>>stream
<config></config>
<template></template>
endstream
endobj
{{object 30 0}} <<
>>stream
</xdp:xdp>
endstream
endobj
{{xref}}
trailer <<
  /Root 1 0 R
>>
{{startxref}}
%%EOF
