juno-app/derived/JunoBundle.m3


MODULE JunoBundle;
Generated by m3bundle; see its manpage.

IMPORT Bundle, BundleRep, Text;
IMPORT Thread, Wr, TextWr;

TYPE T = Bundle.T OBJECT OVERRIDES
           get      := LookUp;
           getNames := GetNames;
         END;

TYPE Texts = REF ARRAY OF TEXT;

VAR
  bundle: T     := NIL;
  names : Texts := NIL;

PROCEDURE Get(): Bundle.T =
  BEGIN
    IF (bundle = NIL) THEN bundle := NEW (T) END;
    RETURN bundle;
  END Get;

PROCEDURE GetNames (<*UNUSED*> self: T): Texts =
  BEGIN
    IF names = NIL THEN
      names := NEW (Texts, NUMBER (Names));
      names^ := Names;
    END;
    RETURN names;
  END GetNames;

PROCEDURE LookUp (<*UNUSED*> self: T;  element: TEXT): TEXT =
  BEGIN
    FOR i := 0 TO LAST (Names)-1 DO
      IF Text.Equal (Names[i], element) THEN
        IF Elements[i] = NIL THEN Elements[i] := GetElt (i) END;
        RETURN Elements[i];
      END;
    END;
    RETURN NIL;
  END LookUp;

CONST Names = ARRAY [0..79] OF TEXT {
  "Xform2.juno",
  "R2.juno",
  "LoadModule.fv",
  "Curve.juno",
  "Triangle.juno",
  "Pen.juno",
  "UpArrow.pbm",
  "Arrow.juno",
  "Shadow.juno",
  "Fold.fv",
  "JunoUI.juno",
  "Unit.juno",
  "PS.juno",
  "Editor2.fv",
  "CharSet.juno",
  "Text.juno",
  "FontData.pkl",
  "DefaultConfig.sx",
  "Offset.juno",
  "Grow.pbm",
  "Angle.juno",
  "Random.juno",
  "SaveFile.fv",
  "DiGraph.juno",
  "TypeLinesC.juno",
  "Plot.juno",
  "Startup.fv",
  "BST.juno",
  "ShowLine.juno",
  "SaveChanges.fv",
  "LineSkip.juno",
  "VPrint.juno",
  "PtLoc.juno",
  "Configure.fv",
  "Color.juno",
  "Time.juno",
  "Path.juno",
  "MenuArrow.pbm",
  "Arc.juno",
  "Rel.juno",
  "SavePS.fv",
  "Geometry.juno",
  "TypeLinesR.juno",
  "Proj3D.juno",
  "Toolbox.fv",
  "C.juno",
  "Square.juno",
  "showerror.ps",
  "Math.juno",
  "CompaqLogo.ppm",
  "Bundled.modlist",
  "R3.juno",
  "LoadFile.fv",
  "Dash.juno",
  "Type.juno",
  "PieChart.juno",
  "Macros.fv",
  "Bezier.juno",
  "Show.juno",
  "FoldAsAnim.fv",
  "Line.juno",
  "Unparse.juno",
  "PtLabel.juno",
  "AboutBox.fv",
  "Circle.juno",
  "TextList.juno",
  "Outline.juno",
  "Juno2Logo.ppm",
  "Anim.juno",
  "Rect.juno",
  "SaveConfirm.fv",
  "Ellipse.juno",
  "TypeLinesL.juno",
  "Print.juno",
  "Juno.fv",
  "BuiltIn.juno",
  "Slider.juno",
  "prologue.ps",
  "List.juno",
  NIL
};

VAR Elements := ARRAY [0..79] OF TEXT {
  NIL (* E0 .. E0_0 *),
  NIL (* E1 .. E1_0 *),
  E2,
  NIL (* E3 .. E3_4 *),
  E4,
  NIL (* E5 .. E5_1 *),
  E6,
  NIL (* E7 .. E7_1 *),
  NIL (* E8 .. E8_0 *),
  E9,
  E10,
  E11,
  NIL (* E12 .. E12_6 *),
  E13,
  NIL (* E14 .. E14_0 *),
  E15,
  NIL (* E16 .. E16_40 *),
  E17,
  E18,
  E19,
  E20,
  E21,
  E22,
  NIL (* E23 .. E23_1 *),
  NIL (* E24 .. E24_1 *),
  NIL (* E25 .. E25_3 *),
  E26,
  NIL (* E27 .. E27_0 *),
  E28,
  E29,
  E30,
  NIL (* E31 .. E31_2 *),
  E32,
  E33,
  NIL (* E34 .. E34_0 *),
  E35,
  NIL (* E36 .. E36_2 *),
  E37,
  NIL (* E38 .. E38_0 *),
  NIL (* E39 .. E39_0 *),
  E40,
  NIL (* E41 .. E41_1 *),
  NIL (* E42 .. E42_1 *),
  E43,
  E44,
  E45,
  E46,
  E47,
  E48,
  NIL (* E49 .. E49_3 *),
  E50,
  NIL (* E51 .. E51_0 *),
  E52,
  NIL (* E53 .. E53_3 *),
  E54,
  NIL (* E55 .. E55_1 *),
  NIL (* E56 .. E56_0 *),
  NIL (* E57 .. E57_2 *),
  E58,
  E59,
  E60,
  NIL (* E61 .. E61_0 *),
  NIL (* E62 .. E62_1 *),
  E63,
  NIL (* E64 .. E64_0 *),
  E65,
  NIL (* E66 .. E66_2 *),
  NIL (* E67 .. E67_34 *),
  NIL (* E68 .. E68_2 *),
  NIL (* E69 .. E69_3 *),
  E70,
  NIL (* E71 .. E71_0 *),
  NIL (* E72 .. E72_1 *),
  E73,
  NIL (* E74 .. E74_1 *),
  NIL (* E75 .. E75_0 *),
  NIL (* E76 .. E76_3 *),
  NIL (* E77 .. E77_1 *),
  NIL (* E78 .. E78_0 *),
  NIL
};

PROCEDURE GetElt (n: INTEGER): TEXT =
  <*FATAL Thread.Alerted, Wr.Failure *>
  VAR wr := TextWr.New ();
  BEGIN
    CASE n OF
    | 0 =>
        Wr.PutText (wr, E0);
        Wr.PutText (wr, E0_0);
    | 1 =>
        Wr.PutText (wr, E1);
        Wr.PutText (wr, E1_0);
    | 3 =>
        Wr.PutText (wr, E3);
        Wr.PutText (wr, E3_0);
        Wr.PutText (wr, E3_1);
        Wr.PutText (wr, E3_2);
        Wr.PutText (wr, E3_3);
        Wr.PutText (wr, E3_4);
    | 5 =>
        Wr.PutText (wr, E5);
        Wr.PutText (wr, E5_0);
        Wr.PutText (wr, E5_1);
    | 7 =>
        Wr.PutText (wr, E7);
        Wr.PutText (wr, E7_0);
        Wr.PutText (wr, E7_1);
    | 8 =>
        Wr.PutText (wr, E8);
        Wr.PutText (wr, E8_0);
    | 12 =>
        Wr.PutText (wr, E12);
        Wr.PutText (wr, E12_0);
        Wr.PutText (wr, E12_1);
        Wr.PutText (wr, E12_2);
        Wr.PutText (wr, E12_3);
        Wr.PutText (wr, E12_4);
        Wr.PutText (wr, E12_5);
        Wr.PutText (wr, E12_6);
    | 14 =>
        Wr.PutText (wr, E14);
        Wr.PutText (wr, E14_0);
    | 16 =>
        Wr.PutText (wr, E16);
        Wr.PutText (wr, E16_0);
        Wr.PutText (wr, E16_1);
        Wr.PutText (wr, E16_2);
        Wr.PutText (wr, E16_3);
        Wr.PutText (wr, E16_4);
        Wr.PutText (wr, E16_5);
        Wr.PutText (wr, E16_6);
        Wr.PutText (wr, E16_7);
        Wr.PutText (wr, E16_8);
        Wr.PutText (wr, E16_9);
        Wr.PutText (wr, E16_10);
        Wr.PutText (wr, E16_11);
        Wr.PutText (wr, E16_12);
        Wr.PutText (wr, E16_13);
        Wr.PutText (wr, E16_14);
        Wr.PutText (wr, E16_15);
        Wr.PutText (wr, E16_16);
        Wr.PutText (wr, E16_17);
        Wr.PutText (wr, E16_18);
        Wr.PutText (wr, E16_19);
        Wr.PutText (wr, E16_20);
        Wr.PutText (wr, E16_21);
        Wr.PutText (wr, E16_22);
        Wr.PutText (wr, E16_23);
        Wr.PutText (wr, E16_24);
        Wr.PutText (wr, E16_25);
        Wr.PutText (wr, E16_26);
        Wr.PutText (wr, E16_27);
        Wr.PutText (wr, E16_28);
        Wr.PutText (wr, E16_29);
        Wr.PutText (wr, E16_30);
        Wr.PutText (wr, E16_31);
        Wr.PutText (wr, E16_32);
        Wr.PutText (wr, E16_33);
        Wr.PutText (wr, E16_34);
        Wr.PutText (wr, E16_35);
        Wr.PutText (wr, E16_36);
        Wr.PutText (wr, E16_37);
        Wr.PutText (wr, E16_38);
        Wr.PutText (wr, E16_39);
        Wr.PutText (wr, E16_40);
    | 23 =>
        Wr.PutText (wr, E23);
        Wr.PutText (wr, E23_0);
        Wr.PutText (wr, E23_1);
    | 24 =>
        Wr.PutText (wr, E24);
        Wr.PutText (wr, E24_0);
        Wr.PutText (wr, E24_1);
    | 25 =>
        Wr.PutText (wr, E25);
        Wr.PutText (wr, E25_0);
        Wr.PutText (wr, E25_1);
        Wr.PutText (wr, E25_2);
        Wr.PutText (wr, E25_3);
    | 27 =>
        Wr.PutText (wr, E27);
        Wr.PutText (wr, E27_0);
    | 31 =>
        Wr.PutText (wr, E31);
        Wr.PutText (wr, E31_0);
        Wr.PutText (wr, E31_1);
        Wr.PutText (wr, E31_2);
    | 34 =>
        Wr.PutText (wr, E34);
        Wr.PutText (wr, E34_0);
    | 36 =>
        Wr.PutText (wr, E36);
        Wr.PutText (wr, E36_0);
        Wr.PutText (wr, E36_1);
        Wr.PutText (wr, E36_2);
    | 38 =>
        Wr.PutText (wr, E38);
        Wr.PutText (wr, E38_0);
    | 39 =>
        Wr.PutText (wr, E39);
        Wr.PutText (wr, E39_0);
    | 41 =>
        Wr.PutText (wr, E41);
        Wr.PutText (wr, E41_0);
        Wr.PutText (wr, E41_1);
    | 42 =>
        Wr.PutText (wr, E42);
        Wr.PutText (wr, E42_0);
        Wr.PutText (wr, E42_1);
    | 49 =>
        Wr.PutText (wr, E49);
        Wr.PutText (wr, E49_0);
        Wr.PutText (wr, E49_1);
        Wr.PutText (wr, E49_2);
        Wr.PutText (wr, E49_3);
    | 51 =>
        Wr.PutText (wr, E51);
        Wr.PutText (wr, E51_0);
    | 53 =>
        Wr.PutText (wr, E53);
        Wr.PutText (wr, E53_0);
        Wr.PutText (wr, E53_1);
        Wr.PutText (wr, E53_2);
        Wr.PutText (wr, E53_3);
    | 55 =>
        Wr.PutText (wr, E55);
        Wr.PutText (wr, E55_0);
        Wr.PutText (wr, E55_1);
    | 56 =>
        Wr.PutText (wr, E56);
        Wr.PutText (wr, E56_0);
    | 57 =>
        Wr.PutText (wr, E57);
        Wr.PutText (wr, E57_0);
        Wr.PutText (wr, E57_1);
        Wr.PutText (wr, E57_2);
    | 61 =>
        Wr.PutText (wr, E61);
        Wr.PutText (wr, E61_0);
    | 62 =>
        Wr.PutText (wr, E62);
        Wr.PutText (wr, E62_0);
        Wr.PutText (wr, E62_1);
    | 64 =>
        Wr.PutText (wr, E64);
        Wr.PutText (wr, E64_0);
    | 66 =>
        Wr.PutText (wr, E66);
        Wr.PutText (wr, E66_0);
        Wr.PutText (wr, E66_1);
        Wr.PutText (wr, E66_2);
    | 67 =>
        Wr.PutText (wr, E67);
        Wr.PutText (wr, E67_0);
        Wr.PutText (wr, E67_1);
        Wr.PutText (wr, E67_2);
        Wr.PutText (wr, E67_3);
        Wr.PutText (wr, E67_4);
        Wr.PutText (wr, E67_5);
        Wr.PutText (wr, E67_6);
        Wr.PutText (wr, E67_7);
        Wr.PutText (wr, E67_8);
        Wr.PutText (wr, E67_9);
        Wr.PutText (wr, E67_10);
        Wr.PutText (wr, E67_11);
        Wr.PutText (wr, E67_12);
        Wr.PutText (wr, E67_13);
        Wr.PutText (wr, E67_14);
        Wr.PutText (wr, E67_15);
        Wr.PutText (wr, E67_16);
        Wr.PutText (wr, E67_17);
        Wr.PutText (wr, E67_18);
        Wr.PutText (wr, E67_19);
        Wr.PutText (wr, E67_20);
        Wr.PutText (wr, E67_21);
        Wr.PutText (wr, E67_22);
        Wr.PutText (wr, E67_23);
        Wr.PutText (wr, E67_24);
        Wr.PutText (wr, E67_25);
        Wr.PutText (wr, E67_26);
        Wr.PutText (wr, E67_27);
        Wr.PutText (wr, E67_28);
        Wr.PutText (wr, E67_29);
        Wr.PutText (wr, E67_30);
        Wr.PutText (wr, E67_31);
        Wr.PutText (wr, E67_32);
        Wr.PutText (wr, E67_33);
        Wr.PutText (wr, E67_34);
    | 68 =>
        Wr.PutText (wr, E68);
        Wr.PutText (wr, E68_0);
        Wr.PutText (wr, E68_1);
        Wr.PutText (wr, E68_2);
    | 69 =>
        Wr.PutText (wr, E69);
        Wr.PutText (wr, E69_0);
        Wr.PutText (wr, E69_1);
        Wr.PutText (wr, E69_2);
        Wr.PutText (wr, E69_3);
    | 71 =>
        Wr.PutText (wr, E71);
        Wr.PutText (wr, E71_0);
    | 72 =>
        Wr.PutText (wr, E72);
        Wr.PutText (wr, E72_0);
        Wr.PutText (wr, E72_1);
    | 74 =>
        Wr.PutText (wr, E74);
        Wr.PutText (wr, E74_0);
        Wr.PutText (wr, E74_1);
    | 75 =>
        Wr.PutText (wr, E75);
        Wr.PutText (wr, E75_0);
    | 76 =>
        Wr.PutText (wr, E76);
        Wr.PutText (wr, E76_0);
        Wr.PutText (wr, E76_1);
        Wr.PutText (wr, E76_2);
        Wr.PutText (wr, E76_3);
    | 77 =>
        Wr.PutText (wr, E77);
        Wr.PutText (wr, E77_0);
        Wr.PutText (wr, E77_1);
    | 78 =>
        Wr.PutText (wr, E78);
        Wr.PutText (wr, E78_0);
    ELSE (*skip*)
    END;
    RETURN TextWr.ToText (wr);
  END GetElt;

CONST E0 =
   "MODULE Xform2;\n\n(* Procedures for transforming 2-D points. *)\n\nIMPO"
 & "RT R2;\n\n(* \\subsection{Point Transformations} *)\n\n(* The following"
 & " procedures transform 2-D points \n   into 2-D points. *)\n\nPROC res :"
 & "= Translate(q, p) IS \n  res := R2.Plus(p, q) \nEND;\n\n(* \"res\" is t"
 & "he point \"p\" translated by the vector \n   \"q\". *)\n\nPROC res := S"
 & "cale(scale, p) IS \n  IF \n    VAR sx, sy, px, py IN \n      scale = (s"
 & "x, sy) AND p = (px, py) -> \n        res := (sx * px, sy * py) \n    EN"
 & "D \n  FI \nEND;\n\n(* \"res\" is the point \"p\" scaled about the origi"
 & "n \n   by the scale factor \"scale\", which must be a \n   pair of real"
 & " numbers representing the x- and \n   y-scale factors. *)\n\nPROC res :"
 & "= Rotate(theta, p) IS \n  IF \n    VAR px, py, cos = COS(theta), sin = "
 & "SIN(theta) IN \n      p = (px, py) -> \n        res := \n          (cos"
 & " * px - sin * py, \n           sin * px + cos * py) \n    END \n  FI \n"
 & "END;\n\n(* \"res\" is the point \"p\" rotated by \"theta\" \n   radians"
 & " about the origin. *)\n\n(* \\subsection{Transformation Closures} *)\n\n"
 & "(* The following procedures produce closures that \n   transform 2-D po"
 & "ints into 2-D points. There is \n   also a procedure for composing clos"
 & "ures \n   functionally. \n\n   In the comments for the following proced"
 & "ures, \n   we write \"cl(p)\" as a shorthand for \"APPLY(cl, \n   p)\","
 & " where \"cl\" denotes a closure with one IN \n   parameter and one OUT "
 & "parameter. *)\n\nPROC cl := TranslateCl(q) IS \n  cl := CLOSE(Translate"
 & ", q) \nEND;\n\n(* \"cl\" is a closure such that \"cl(p)\" evaluates \n "
 & "  to \"Translate(q, p)\". *)\n\nPROC cl := ScaleCl(scale) IS \n  cl := "
 & "CLOSE(Scale, scale) \nEND;\n\n(* \"cl\" is a closure such that \"cl(p)\""
 & " evaluates \n   to \"Scale(scale, p)\". *)\n\nPROC cl := RotateCl(theta"
 & ") IS \n  cl := CLOSE(Rotate, theta) \nEND;\n\n(* \"cl\" is a closure su"
 & "ch that \"cl(p)\" evaluates \n   to \"Rotate(theta, p)\". *)\n\nPRIVATE"
 & " PROC res := ComposeClsProc(cl2, cl1, p) IS \n  res := APPLY(cl2, APPLY"
 & "(cl1, p)) \nEND;\n\nPROC cl := ComposeCls(cl2, cl1) IS \n  cl := CLOSE("
 & "ComposeClsProc, cl2, cl1) \nEND;\n\n(* Set \"cl\" to a closure such tha"
 & "t";

CONST E0_0 =
   " \"cl(p)\" is \n   equivalent to \"cl2(cl1(p))\". *)\n\n";

CONST E1 =
   "MODULE R2;\n\nIMPORT Math;\n\n(* Arithmetic functions on 2D real \n   v"
 & "ectors.\n\n   See also: \"C\", \"Math\". *)\n\nCONST Origin = (0,0);\n\n"
 & "(* \"Origin\" is the origin in 2-space. *)\n\nPRED AtOrigin(p) IS\n  p "
 & "= Origin\nEND;\n\nUI PointTool(AtOrigin);\n\n(* The point \"p\" is at t"
 & "he origin. The Juno-2 application\n   arranges that the origin of the J"
 & "uno coordinate system\n   is always in the center of the drawing view, "
 & "and always\n   at the center of a printed page. *)\n\nFUNC r = Plus(p, "
 & "q) IS \n  (E px, py, qx, qy :: \n    p = (px, py) AND \n    q = (qx, qy"
 & ") AND \n    r = (px + qx, py + qy)) \nEND;\n\n(* \"r\" is the vector su"
 & "m \"p\" + \"q\". \n*)\n\nFUNC r = PlusX(p, x) IS\n  (E px, py ::\n    p"
 & " = (px, py) AND\n    r = (px + x, py))\nEND;\n\n(* Equivalent to \"r = "
 & "Plus(p, (x, 0))\". *)\n\nFUNC r = PlusY(p, y) IS\n  (E px, py ::\n    p"
 & " = (px, py) AND\n    r = (px, py + y))\nEND;\n\n(* Equivalent to \"r = "
 & "Plus(p, (0, y))\". *)\n\nFUNC r = Minus(p, q) IS \n  (E px, py, qx, qy "
 & ":: \n    p = (px, py) AND \n    q = (qx, qy) AND \n    r = (px - qx, py"
 & " - qy)) \nEND;\n\n(* \"r\" is the vector difference \"p\" \n   - \"q\"."
 & " *)\n\nFUNC r = MinusX(p, x) IS\n  (E px, py ::\n    p = (px, py) AND\n"
 & "    r = (px - x, py))\nEND;\n\n(* Equivalent to \"r = Minus(p, (x, 0))\""
 & ". *)\n\nFUNC r = MinusY(p, y) IS\n  (E px, py ::\n    p = (px, py) AND\n"
 & "    r = (px, py - y))\nEND;\n\n(* Equivalent to \"r = Minus(p, (0, y))\""
 & ". *)\n\nFUNC p = Times(t, q) IS \n  (E px, py, qx, qy :: \n    p = (px,"
 & " py) AND \n    q = (qx, qy) AND \n    px = t * qx AND \n    py = t * qy"
 & ") \nEND;\n\n(* \"p\" is the product of the scalar \n   \"t\" and the ve"
 & "ctor \"q\". *)\n\nFUNC len2 = Length2(v) IS \n  (E vx, vy :: \n    v = "
 & "(vx, vy) AND \n    len2 = (vx * vx) + (vy * vy))\nEND;\n\n(* \"len2\" i"
 & "s the square of the Euclidean\n   length of the vector \"v\". *)\n\nFUN"
 & "C len = Length(v) IS \n  len = Math.Sqrt(Length2(v))\nEND;\n\n(* \"len\""
 & " is the Euclidean length of the\n   vector \"v\". *)\n\nFUNC u = Normal"
 & "ize(v) IS\n  Times(Length(v), u) = v\nEND;\n\n(* \"u\" is the vector \""
 & "v\" normalized\n   to have unit length. *)\n\nFUNC t = Dot(p, q) IS \n "
 & " (E px, py, qx, qy :: ";

CONST E1_0 =
   "\n    p = (px, py) AND \n    q = (qx, qy) AND \n    t = px * qx + py * "
 & "qy) \nEND;\n\n(* The scalar \"t\" is the \n   dot-product of \"p\" and "
 & "\"q\". *)\n\nFUNC t = Det(p, q) IS \n  (E px, py, qx, qy :: \n    p = ("
 & "px, py) AND \n    q = (qx, qy) AND \n    t = px * qy - py * qx) \nEND;\n"
 & "\n(* The scalar \"t\" is the \n   determinant of the 2x2 matrix \n   \""
 & "(p q)\", where \"p\" and \"q\" are \n   column vectors. *)\n\n";

CONST E2 =
   "; Copyright (C) 1992, Digital Equipment Corporation                    "
 & "     \n; All rights reserved.                                          "
 & "            \n; See the file COPYRIGHT for a full description.         "
 & "                   \n;                                                 "
 & "                          \n; Last modified on Mon Oct  3 11:00:21 PDT "
 & "1994 by heydon                   \n\n(Rim (Pen 5)\n  (Macro Gap () \'(G"
 & "lue 5))\n  (Shape\n    (Height2 300)\n    (Width2 80)\n    (VBox\n     "
 & " (Border\n        (Browser %moduleBrowser\n          (MyBrowserFont)\n "
 & "         (BgColor \"White\")\n        )\n      )\n    )\n  )\n)\n";

CONST E3 =
   "MODULE Curve;\n\n(* Define curves by sequences of points. *)\n\nIMPORT "
 & "List, R2, Bezier, Geometry, PS;\n\n/* The implementation of the \"Fit\""
 & " procedure was \n   taken from the book \"Graphic Gems\", edited by \n "
 & "  Andrew S. Glassner and published by AP \n   Professional, New York, 1"
 & "990. The algorithm is \n   described in the section \"An Algorithm for "
 & "\n   Automatically Fitting Digitized Curves\" by Philip \n   J. Schneid"
 & "er, pp. 612-626. */\n\nCONST DefaultErrorBound = 20;\n\n(* This module "
 & "maintains a current error bound, \n   which is used by the \"Fit\" (and"
 & " hence the \n   \"EndPoints\") procedures below. *)\n\nPRIVATE VAR erro"
 & "rBound := DefaultErrorBound;\n\nPRIVATE CONST MinErrorBound = 1;\n\n/* "
 & "A lower bound on the minimum allowed error bound. \n*/\n\nPROC SetError"
 & "Bound(errBnd) IS \n  IF \n    errBnd < MinErrorBound -> errBnd := MinEr"
 & "rorBound \n  | SKIP \n  FI; \n  errorBound := errBnd \nEND;\n\nUI SetTo"
 & "ol(SetErrorBound);\n\n(* Set the current error bound to \"errBnd\". *)\n"
 & "\nUI Param(SetErrorBound, DefaultErrorBound);\n\nUI Param(SetErrorBound"
 & ", 5);\n\nUI Param(SetErrorBound, 10);\n\nUI Param(SetErrorBound, 20);\n"
 & "\nUI Param(SetErrorBound, 50);\n\nUI Param(SetErrorBound, 100);\n\nUI P"
 & "aram(SetErrorBound, 200);\n\nUI Param(SetErrorBound, 500);\n\nPRIVATE C"
 & "ONST MaxIterations = 1, False = 0, True = 1;\n\n/* MISCELLANEOUS FUNCTI"
 & "ONS */\n\nPRIVATE FUNC ie = IterationError(error) IS \n  ie = 5 * error"
 & " \nEND;\n\nPRIVATE PROC v:Inc(x) IS v := v + x END;\n\nPRIVATE FUNC res"
 & " = Sum3(a, b, c) IS \n  res = R2.Plus(a, R2.Plus(b, c)) \nEND;\n\nPRIVA"
 & "TE FUNC res = Sum4(a, b, c, d) IS \n  res = R2.Plus(a, R2.Plus(b, R2.Pl"
 & "us(c, d))) \nEND;\n\nPRIVATE PROC res := B0(t) IS \n  VAR x IN x := 1 -"
 & " t; res := x * x * x END \nEND;\n\nPRIVATE PROC res := B1(t) IS \n  VAR"
 & " x IN x := 1 - t; res := 3 * t * x * x END \nEND;\n\nPRIVATE PROC res :"
 & "= B2(t) IS \n  res := 3 * t * t * (1 - t) \nEND;\n\nPRIVATE PROC res :="
 & " B3(t) IS res := t * t * t END;\n\n/* ROUTINES FOR OPTIMIZING TIMESTAMP"
 & "S */\n\nPRIVATE PROC res := ImproveTimeStamp(pt, bez, ts) IS \n  IF \n "
 & "   VAR a, b, c, d, p1, p2, p3 IN \n      bez";

CONST E3_0 =
   " = [a, b, c, d] AND \n      Bezier.MapRep(a, b, c, d, p1, p2, p3) -> \n"
 & "        IF \n          VAR tsPrime ~ ts IN \n            0 = \n        "
 & "      R2.Dot(R2.Minus(pt, \n                              Bezier.AtTFro"
 & "mCoeffs(a, \n                                                   p1, \n "
 & "                                                  p2, \n               "
 & "                                    p3, \n                             "
 & "                      tsPrime)), \n                     Bezier.PrimeAtT"
 & "FromCoeffs(a, \n                                               p1, \n  "
 & "                                             p2, \n                    "
 & "                           p3, \n                                      "
 & "         tsPrime)) -> \n              res := tsPrime \n          END \n"
 & "        FI \n    END \n  FI \nEND;\n\nPRIVATE PROC res := Reparameteriz"
 & "e(pts, ts, bez) IS \n  res := NIL; \n  DO \n    pts # NIL -> \n      re"
 & "s := \n        (ImproveTimeStamp(CAR(pts), bez, CAR(ts)), \n         re"
 & "s); \n      pts, ts := CDR(pts), CDR(ts) \n  OD; \n  res := List.Revers"
 & "e(res) \nEND;\n\n/* ROUTINES FOR DOING RECURSIVE SPLIT */\n\nPRIVATE PR"
 & "OC \n  res := ComputeCenterTangent(pts, middle) IS \n  pts := List.Suff"
 & "ixFrom(pts, middle - 1); \n  res := \n    R2.Normalize(R2.Minus(CAR(pts"
 & "), List.Nth(pts, 2))) \nEND;\n\n/* Requires \"3 <= List.Length(pts)\" a"
 & "nd \"1 <= middle \n   < List.Length(pts) -1\" */\n\nPRIVATE PROC l, r :"
 & "= Split(pts, middle) IS \n  l := List.Prefix(pts, middle + 1); \n  r :="
 & " List.SuffixFrom(pts, middle) \nEND;\n\n/* BASIC ROUTINES */\n\nPRIVATE"
 & " PROC AppendBezier(bez) IS \n  IF \n    VAR p0, p1, p2, p3 IN \n      b"
 & "ez = [p0, p1, p2, p3] -> \n        PS.CurveTo(p1, p2, p3) \n    END \n "
 & " FI \nEND;\n\n/* Requires \"2 <= List.Size(pts)\" */\n\nPRIVATE PROC \n"
 & "  bez := BezHeuristic(pts, tHat1, tHat2) IS \n  VAR dist IN \n    dist "
 & ":= \n      Geometry.Dist(CAR(pts), List.Last(pts)) / 3; \n    bez := Be"
 & "zCurve(pts, tHat1, tHat2, dist, dist) \n  END \nEND;\n\n/* Requires \"2"
 & " <= List.Size(pts)\" */\n\nPRIVATE PROC ts := ChordLengthTimeStamps(pts"
 & ") IS \n  VAR dists = [0], ";

CONST E3_1 =
   "prev IN \n    prev, pts := CAR(pts), CDR(pts); \n    DO \n      pts # N"
 & "IL -> \n        dists := \n          (CAR(dists) + Geometry.Dist(prev, "
 & "CAR(pts)), \n           dists); \n        prev, pts := CAR(pts), CDR(pt"
 & "s) \n    OD; \n    VAR sum IN \n      sum := CAR(dists); \n      ts := "
 & "NIL; \n      DO \n        dists # NIL -> \n          ts := (CAR(dists) "
 & "/ sum, ts); \n          dists := CDR(dists) \n      OD \n    END \n  EN"
 & "D \nEND;\n\n/* Set \"ts\" to a list of the approximate timestamps \n   "
 & "for the list points \"pts\". The timestamps are \n   monotonically incr"
 & "easing in the interval [0, 1]. \n*/\n\nPRIVATE PROC \n  a1, a2 := Compu"
 & "teMagnitudesA(ts, tHat1, tHat2) IS \n  a1, a2, ts := NIL, NIL, List.Rev"
 & "erse(ts); \n  DO \n    ts # NIL -> \n      a1 := (R2.Times(B1(CAR(ts)),"
 & " tHat1), a1); \n      a2 := (R2.Times(B2(CAR(ts)), tHat2), a2); \n     "
 & " ts := CDR(ts) \n  OD \nEND;\n\nPRIVATE PROC \n  c00, c01, c10, c11, x0"
 & ", x1 := \n    ComputeMagnitudesCX(pts, ts, tHat1, tHat2) IS \n  VAR a1,"
 & " a2, ptFirst, ptLast IN \n    a1, a2 := ComputeMagnitudesA(ts, tHat1, t"
 & "Hat2); \n    ptFirst, ptLast := CAR(pts), List.Last(pts); \n    c00, c0"
 & "1, c10, c11, x0, x1 := 0, 0, 0, 0, 0, 0; \n    DO \n      pts # NIL -> "
 & "\n        c00:Inc(R2.Dot(CAR(a1), CAR(a1))); \n        VAR k IN \n     "
 & "     k := R2.Dot(CAR(a1), CAR(a2)); \n          c01:Inc(k); \n         "
 & " c10:Inc(k) \n        END; \n        c11:Inc(R2.Dot(CAR(a2), CAR(a2)));"
 & " \n        VAR v IN \n          v := \n            R2.Minus(CAR(pts), \n"
 & "                     Sum4(R2.Times(B0(CAR(ts)), \n                     "
 & "              ptFirst), \n                          R2.Times(B1(CAR(ts)"
 & "), \n                                   ptFirst), \n                   "
 & "       R2.Times(B2(CAR(ts)), \n                                   ptLas"
 & "t), \n                          R2.Times(B3(CAR(ts)), \n               "
 & "                    ptLast))); \n          x0:Inc(R2.Dot(CAR(a1), v)); "
 & "\n          x1:Inc(R2.Dot(CAR(a2), v)) \n        END; \n        pts, ts"
 & " := CDR(pts), CDR(ts); \n        a1, a2 := CDR(a1), CDR(a2) \n    OD \n"
 & "  END \nEND;\n\nP";

CONST E3_2 =
   "RIVATE PROC \n  detc0c1, detc0x, detxc1 := \n    ComputeDeterminants(pt"
 & "s, ts, tHat1, tHat2) IS \n  VAR c00, c01, c10, c11, x0, x1 IN \n    c00"
 & ", c01, c10, c11, x0, x1 := \n      ComputeMagnitudesCX(pts, ts, tHat1, "
 & "tHat2); \n    detc0c1 := c00 * c11 - c10 * c01; \n    detc0x := c00 * x"
 & "1 - c01 * x0; \n    detxc1 := x0 * c11 - x1 * c01; \n    IF \n      det"
 & "c0c1 = 0 -> detc0c1 := c00 * c11 * 1e-11 \n    | SKIP \n    FI \n  END "
 & "\nEND;\n\nPRIVATE PROC \n  l, r := ComputeMagnitudes(pts, ts, tHat1, tH"
 & "at2) IS \n  VAR detc0c1, detc0x, detxc1 IN \n    detc0c1, detc0x, detxc"
 & "1 := \n      ComputeDeterminants(pts, ts, tHat1, tHat2); \n    l := det"
 & "xc1 / detc0c1; \n    r := detc0x / detc0c1 \n  END \nEND;\n\nPRIVATE PR"
 & "OC \n  bez := BezCurve(pts, tHat1, tHat2, d1, d2) IS \n  VAR p0, p3 IN "
 & "\n    p0, p3 := CAR(pts), List.Last(pts); \n    bez := \n      [p0, R2."
 & "Plus(p0, R2.Times(d1, tHat1)), \n       R2.Plus(p3, R2.Times(d2, tHat2)"
 & "), p3] \n  END \nEND;\n\nPRIVATE PROC \n  bez := GenerateBezier(pts, ts"
 & ", tHat1, tHat2) IS \n  VAR alphaL, alphaR IN \n    alphaL, alphaR := \n"
 & "      ComputeMagnitudes(pts, ts, tHat1, tHat2); \n    IF \n      alphaL"
 & " < 0 OR alphaR < 0 -> \n        bez := BezHeuristic(pts, tHat1, tHat2) "
 & "\n    | bez := \n        BezCurve(pts, tHat1, tHat2, alphaL, alphaR) \n"
 & "    FI \n  END \nEND;\n\nPRIVATE PROC cl := BezClosure(bez) IS \n  IF \n"
 & "    VAR p0, p1, p2, p3 IN \n      bez = [p0, p1, p2, p3] -> \n        c"
 & "l := Bezier.Closure(p0, p1, p2, p3) \n    END \n  FI \nEND;\n\nPRIVATE "
 & "PROC \n  maxError, splitPoint := \n    ComputeMaxError(pts, bez, ts) IS"
 & " \n  VAR cl, dist, i, point IN \n    cl := BezClosure(bez); \n    pts, "
 & "ts, i := CDR(pts), CDR(ts), 1; \n    maxError := 0; \n    DO \n      CD"
 & "R(pts) # NIL -> \n        point := APPLY(cl, CAR(ts)); \n        dist :"
 & "= Geometry.Dist2(CAR(pts), point); \n        IF \n          maxError <="
 & " dist -> \n            maxError, splitPoint := dist, i | SKIP \n       "
 & " FI; \n        pts, ts, i := CDR(pts), CDR(ts), i + 1 \n    OD \n  END "
 & "\nEND;\n\n/* Requires \"3 <= List.Length(pts)\" and \n   \"List.Length("
 & "pts) = List.Length(ts)\"";

CONST E3_3 =
   " */\n\nPRIVATE PROC \n  DrawCubicMany(pts, tHat1, tHat2, error) IS \n  "
 & "VAR ts, bez, maxError, splitPoint, i, done = False IN \n    ts := Chord"
 & "LengthTimeStamps(pts); \n    bez := GenerateBezier(pts, ts, tHat1, tHat"
 & "2); \n    maxError, splitPoint := \n      ComputeMaxError(pts, bez, ts)"
 & "; \n    IF \n      maxError < error -> \n        AppendBezier(bez); don"
 & "e := True \n    | maxError < IterationError(error) -> \n        i := 0;"
 & " \n        DO \n          done = False AND i < MaxIterations -> \n     "
 & "       ts := Reparameterize(pts, ts, bez); \n            bez := \n     "
 & "         GenerateBezier(pts, ts, tHat1, tHat2); \n            maxError,"
 & " splitPoint := \n              ComputeMaxError(pts, bez, ts); \n       "
 & "     IF \n              maxError < error -> \n                AppendBez"
 & "ier(bez); done := True \n            | i := i + 1 \n            FI \n  "
 & "      OD | SKIP \n    FI; \n    IF \n      done = False -> \n        VA"
 & "R \n          tHatCenter \n        = ComputeCenterTangent(pts, splitPoi"
 & "nt), \n          leftPts, rightPts \n        IN \n          leftPts, ri"
 & "ghtPts := Split(pts, splitPoint); \n          DrawCubic(leftPts, tHat1,"
 & " tHatCenter, error); \n          tHatCenter := R2.Times(-1, tHatCenter)"
 & "; \n          DrawCubic(rightPts, tHatCenter, tHat2, \n                "
 & "    error) \n        END | SKIP \n    FI \n  END \nEND;\n\nPRIVATE PROC"
 & " res := ComputeLeftTangent(pts) IS \n  res := \n    R2.Normalize(R2.Min"
 & "us(List.Nth(pts, 1), \n                          List.Nth(pts, 0))) \nE"
 & "ND;\n\n/* Requires \"2 <= List.Size(pts)\" */\n\nPRIVATE PROC res := Co"
 & "mputeRightTangent(pts) IS \n  res := ComputeLeftTangent(List.Reverse(pt"
 & "s)) \nEND;\n\n/* Requires \"2 <= List.Size(pts)\" */\n\nPRIVATE PROC Dr"
 & "awCubic(pts, tHat1, tHat2, error) IS \n  IF \n    List.Length(pts) = 2 "
 & "-> \n      AppendBezier(BezHeuristic(pts, tHat1, tHat2)) \n  | DrawCubi"
 & "cMany(pts, tHat1, tHat2, error) \n  FI \nEND;\n\nPROC FitPointList(pts)"
 & " IS \n  VAR len IN \n    len := List.Length(pts); \n    PS.MoveTo(CAR(p"
 & "ts)); \n    IF \n      len = 1 -> SKIP \n    | len = 2 -> PS.LineTo(CAR"
 & "(CDR(pts))) \n    |";

CONST E3_4 =
   " len > 2 -> \n        DrawCubic(pts, ComputeLeftTangent(pts), \n       "
 & "           ComputeRightTangent(pts), \n                  errorBound) \n"
 & "    FI \n  END \nEND;\n\n(* Augment the current path with a sequence of"
 & " \n   connected Bezier curves that approximate the \n   points in the n"
 & "onempty list \"pts\". The sum of the \n   squared distances of the give"
 & "n points to the \n   constructed curve is at most the current error \n "
 & "  bound. *)\n\nPRIVATE VAR ptList := NIL;\n\n/* The list of points augm"
 & "ented, used, and reset by \n   the \"AddPoint\" and \"FitPoints\" proce"
 & "dures. */\n\n(* This module maintains a list of points, initially \n   "
 & "empty. Use the \"AddPoint\" procedure to append a \n   point to the lis"
 & "t, and the \"FitPoints\" procedure \n   to draw a curve through the poi"
 & "nts. *)\n\nPROC AddPoint(p) IS ptList := (p, ptList) END;\n\nUI PointTo"
 & "ol(AddPoint);\n\n(* Add the point \"p\" to the current list of points. "
 & "\n*)\n\nPROC FitPoints() IS \n  FitPointList(List.Reverse(ptList)); ptL"
 & "ist := NIL \nEND;\n\nUI PointTool(FitPoints);\n\n(* Equivalent to \"Fit"
 & "PointList(l)\", where \"l\" is the \n   current list of points. On exit"
 & ", the current list \n   of points is reset to the empty list. *)\n\nPRI"
 & "VATE VAR history := NIL;\n\nPROC Save() IS \n  history := ((errorBound,"
 & " ptList), history) \nEND;\n\nPROC Restore() IS \n  IF \n    VAR hd, tl "
 & "IN \n      history = (hd, tl) -> \n        errorBound := CAR(hd); \n   "
 & "     ptList := CDR(hd); \n        history := tl \n    END \n  FI \nEND;"
 & "\n\nUI PointTool(Save);\n\nUI PointTool(Restore);\n\n(* Save/restore th"
 & "e current error bound and point \n   list. *)\n\n";

CONST E4 =
   "MODULE Triangle;\n\n(* Procedures and predicates for \n   triangles. *)"
 & "\n\nIMPORT Math, R2, Geometry, PS, Angle;\n\nPROC Draw(a, b, c) IS \n  "
 & "IF \n    PS.MoveTo(a); \n    PS.LineTo(b); \n    PS.LineTo(c); \n    PS"
 & ".Close() \n  FI \nEND;\n\nUI PointTool(Draw);\n\n(* Add the closed tria"
 & "ngle on the \n   vertices \"a\", \"b\", and \"c\" to \n   the current p"
 & "ath. *)\n\nFUNC p = OutCenter(a, b, c) IS \n  (b, p) CONG (p, a) AND \n"
 & "  (a, p) CONG (p, c) \nEND;\n\nUI PointTool(OutCenter);\n\n(* \"p\" is "
 & "the center of the circle \n   circumscribing the triangle \n   \"abc\"."
 & " *)\n\nFUNC p = InCenter(a, b, c) IS \n  Angle.OnBisector(p, a, b, c) A"
 & "ND \n  Angle.OnBisector(p, b, a, c) \nEND;\n\nUI PointTool(InCenter);\n"
 & "\n(* \"p\" is the center of the circle \n   inscribed in the triangle \""
 & "abc\". \n*)\n\nFUNC res = Area(a, b, c) IS \n  (E ab = R2.Minus(b, a),\n"
 & "     ac = R2.Minus(c, a), \n     det = R2.Det(ab, ac) :: \n    res = Ma"
 & "th.Abs(det) / 2) \nEND;\n\n(* \"res\" is the area of the \n   triangle "
 & "\"abc\". *)\n\n";

CONST E5 =
   "MODULE Pen;\n\nIMPORT R2, PS;\n\n(* A module for simulating strokes of "
 & "a \n   calligraphic pen. *)\n\nPRIVATE FUNC d = MidVector(p, q) IS \n  "
 & "(E px, py, qx, qy, dx, dy :: \n    p = (px, py) AND \n    q = (qx, qy) "
 & "AND \n    d = (dx, dy) AND \n    dx = (qx - px) / 2 AND \n    dy = (qy "
 & "- py) / 2) \nEND;\n\n/* \"d\" is the vector from \"p\" to the \n   midp"
 & "oint of the segment (p,q). */\n\nPRIVATE PROC Line(a, b, p, q) IS \n  I"
 & "F \n    VAR del, aL, aR, bL, bR, cL, cR, dL, dR IN \n      del = MidVec"
 & "tor(p, q) AND \n      aL = R2.Minus(a, del) AND \n      aR = R2.Plus(a,"
 & " del) AND \n      bL = R2.Minus(b, del) AND \n      bR = R2.Plus(b, del"
 & ") -> \n        PS.MoveTo(aL); \n        PS.LineTo(bL); \n        PS.Lin"
 & "eTo(bR); \n        PS.LineTo(aR); \n        PS.Close(); \n        PS.Fi"
 & "ll() \n    END \n  FI \nEND;\n\n/* Stroke the segment \"ab\" with a \n "
 & "  calligrapher\'s pen determined by the \n   segment \"pq\". */\n\nPRIV"
 & "ATE FUNC p = B3Point(t, a, b, c, d) IS \n  (E ab, bc, cd, abc, bcd :: \n"
 & "    ab = (t, 0) REL (a, b) AND \n    bc = (t, 0) REL (b, c) AND \n    c"
 & "d = (t, 0) REL (c, d) AND \n    abc = (t, 0) REL (ab, bc) AND \n    bcd"
 & " = (t, 0) REL (bc, cd) AND \n    p = (t, 0) REL (abc, bcd)) \nEND;\n\n/"
 & "* \"p\" is a point on the curve (a,b,c,d) \n   such that p = (x(t), y(t"
 & ")), where x() and \n   y() are the parametric coordinate \n   functions"
 & " of the curve. */\n\nPRIVATE PRED \n  OnSplineTan(t, a, b, c, d, p, pL,"
 & " pR) IS \n  (E ab, bc, cd :: \n    ab = (t, 0) REL (a, b) AND \n    bc "
 & "= (t, 0) REL (b, c) AND \n    cd = (t, 0) REL (c, d) AND \n    pL = (t,"
 & " 0) REL (ab, bc) AND \n    pR = (t, 0) REL (bc, cd) AND \n    p = (t, 0"
 & ") REL (pL, pR)) \nEND;\n\n/* \"p\" is the point on the spline (a,b,c,d)"
 & " \n   whose tangent is parallel to the segment \n   (pL,pR), where \"pL"
 & "\" and \"pR\" are the \n   points surrounding \"p\" in the segment \n  "
 & " construction of a point on a spline. */\n\nPRIVATE PROC \n  Notch(aL, "
 & "bL, cL, dL, aR, bR, cR, dR, p, q) IS \n  IF \n    VAR t ~ 0.5, p1, p1L,"
 & " p1R, p2 IN \n      OnSplineTan(t, aL, bL, cL, dL, p1, \n              "
 & "    p1L, p1R) AND \n      (p1L, p1R) P";

CONST E5_0 =
   "ARA (p, q) AND \n      p2 = R2.Plus(p1, R2.Minus(q, p)) -> \n        IF"
 & " \n          0 <= t AND t <= 1 -> \n            IF \n              VAR "
 & "\n                tL ~ (1 + t) / 2, \n                tR ~ t / 2, \n   "
 & "             p0 ~ (0.5, 0) REL (p1, p2) \n              IN \n          "
 & "      p0 = \n                  B3Point(tL, aL, bL, cL, dL) AND \n      "
 & "          p0 = \n                  B3Point(tR, aR, bR, cR, dR) -> \n   "
 & "               IF \n                    0 <= tL AND \n                 "
 & "   tL <= 1 AND \n                    0 <= tR AND \n                    "
 & "tR <= 1 -> \n                      PS.MoveTo(p0); \n                   "
 & "   PS.LineTo(p1); \n                      PS.LineTo(p2); \n            "
 & "          PS.Close(); \n                      PS.Fill() | SKIP \n      "
 & "            FI | SKIP \n              END \n            FI | SKIP \n   "
 & "     FI | SKIP \n    END \n  FI \nEND;\n\nPRIVATE PROC Curve(a, b, c, d"
 & ", p, q) IS \n  IF \n    VAR del, aL, aR, bL, bR, cL, cR, dL, dR IN \n  "
 & "    del = MidVector(p, q) AND \n      aL = R2.Minus(a, del) AND \n     "
 & " aR = R2.Plus(a, del) AND \n      bL = R2.Minus(b, del) AND \n      bR "
 & "= R2.Plus(b, del) AND \n      cL = R2.Minus(c, del) AND \n      cR = R2"
 & ".Plus(c, del) AND \n      dL = R2.Minus(d, del) AND \n      dR = R2.Plu"
 & "s(d, del) -> \n        Notch(aL, bL, cL, dL, aR, bR, cR, \n            "
 & "  dR, p, q); \n        PS.MoveTo(aR); \n        PS.CurveTo(bR, cR, dR);"
 & " \n        PS.LineTo(dL); \n        PS.CurveTo(cL, bL, aL); \n        P"
 & "S.Close(); \n        PS.Fill() \n    END \n  FI \nEND;\n\n/* Stroke the"
 & " Bezier cubic \"a\", \"b\", \"c\", \n   \"d\" with a calligrapher\'s pe"
 & "n determined \n   by the segment \"pq\". */\n\nPROC Stroke(p, q) IS \n "
 & " VAR path, currPt, startPt IN \n    path := PS.CurrentPath(); \n    PS."
 & "NewPath(); \n    currPt, startPt := NIL, NIL; \n    DO \n      path # N"
 & "IL -> \n        IF \n          VAR op, args IN \n            CAR(path) "
 & "= (op, args) -> \n              IF \n                op = \"MoveTo\" ->"
 & " \n                  startPt := CAR(args); \n                  currPt :"
 & "= startPt \n              | ";

CONST E5_1 =
   "op = \"LineTo\" -> \n                  Line(currPt, CAR(args), p, \n   "
 & "                    q); \n                  currPt := CAR(args) \n     "
 & "         | op = \"CurveTo\" -> \n                  VAR b, c, d IN \n   "
 & "                 args = [b, c, d] -> \n                      Curve(curr"
 & "Pt, b, c, d, \n                            p, q); \n                   "
 & "   currPt := d \n                  END \n              | op = \"Close\""
 & " -> \n                  Line(currPt, startPt, p, q); \n                "
 & "  currPt, startPt := NIL, NIL \n              FI \n          END \n    "
 & "    FI; \n        path := CDR(path) \n    OD \n  END \nEND;\n\nUI Point"
 & "Tool(Stroke);\n\n(* Stroke the current path with a \n   calligrapher\'s"
 & " pen determined by the \n   segment \"pq\". *)\n\n";

CONST E6 =
   "P4\n11 8\n\004\000\016\000\037\000?\200\177\300\377\340\000\000\000\000"
;

CONST E7 =
   "MODULE Arrow;\n\n(* Procedures for drawing directed edges. *)\n\nIMPORT"
 & " Geometry, PS;\n\nPRIVATE CONST \n  WidthBase = 8, \n  WidthFactor = 3,"
 & " \n  StubSz = 0.15;\n\n/* If the current line width is \"w\", then \n  "
 & " when the arrowhead size = -1, the size \n   used is: \n\n|  size := Wi"
 & "dthBase + (w * WidthFactor)\n    */\n\nCONST DefaultSize = -1;\n\n(* Th"
 & "is module maintains a current arrowhead \n   size, which is the distanc"
 & "e from its tip \n   to its cusp. If the arrowhead size is \n   negative"
 & ", then the size is determined as a \n   function of the current line wi"
 & "dth. *)\n\nPRIVATE VAR size := DefaultSize;\n\nPROC SetSize(sz) IS size"
 & " := sz END;\n\nUI SetTool(SetSize);\n\n(* Set the current arrowhead siz"
 & "e to \"sz\". *)\n\nUI Param(SetSize, DefaultSize);\n\nUI Param(SetSize,"
 & " 12);\n\nUI Param(SetSize, 16);\n\nUI Param(SetSize, 20);\n\nUI Param(S"
 & "etSize, 24);\n\nUI Param(SetSize, 28);\n\nUI Param(SetSize, 48);\n\nPRO"
 & "C sz := GetSize() IS sz := size END;\n\n(* Return the current arrow hea"
 & "d size. A \n   negative result means the arrow head size \n   is determ"
 & "ined from the current line width. \n*)\n\nPROC sz := HeadSize() IS \n  "
 & "IF \n    size < 0 -> \n      VAR w IN \n        w := PS.GetWidth(); \n "
 & "       IF w = 0 -> w := 1 | SKIP FI; \n        sz := WidthBase + (Width"
 & "Factor * w) \n      END | sz := size \n  FI \nEND;\n\n(* Set \"sz\" to "
 & "the size to use to draw \n   arrowheads. This is usually the same as \n"
 & "   the value of the \"GetSize\" procedure, \n   unless that is negative"
 & ", in which case it \n   is a function of the current line width. *)\n\n"
 & "PRIVATE PROC DrawHead(a, b) IS \n  IF \n    VAR \n      c = (-0.16, 0.3"
 & "6) REL (a, b), \n      d = (-0.16, -0.36) REL (a, b) \n    IN \n      S"
 & "AVE PS IN \n        PS.SetJointStyle(PS.MiterJoints); \n        PS.Move"
 & "To(a); \n        PS.LineTo(c); \n        PS.LineTo(b); \n        PS.Lin"
 & "eTo(d); \n        PS.Close(); \n        PS.Fill() \n      END \n    END"
 & " \n  FI \nEND;\n\n/* Draw the head of an arrow with its cusp at \n   \""
 & "a\" and its tip at \"b\". The arrowhead is \n   filled with paint of th"
 & "e current color. */\n\nPRIVATE PROC DrawHeadWith";

CONST E7_0 =
   "Tail(a, b) IS \n  IF \n    VAR c = (StubSz, 0) REL (a, b) IN \n      SA"
 & "VE PS IN \n        PS.SetEndStyle(PS.ButtEnds); \n        PS.MoveTo(a);"
 & " \n        PS.LineTo(c); \n        PS.Stroke() \n      END; \n      Dra"
 & "wHead(c, b) \n    END \n  FI \nEND;\n\n/* Draw an arrow head with a sma"
 & "ll tail. The \n   tail starts at \"a\", and the tip of the \n   head is"
 & " at \"b\". */\n\nFUNC p = StraightEnd(a, b, dist) IS \n  (E p0 ~ Geomet"
 & "ry.Mid(a, b) :: \n    Geometry.Colinear(a, p0, b) AND \n    dist = Geom"
 & "etry.Dist(p0, b) AND \n    p = p0) \nEND;\n\n(* \"p\" is the point on t"
 & "he line \"ab\" closest \n   to \"a\" and a distance \"dist\" from \"b\""
 & ". *)\n\nPROC Head(a, b) IS \n  IF \n    VAR p = StraightEnd(a, b, HeadS"
 & "ize()) IN \n      IF \n        VAR c = (StubSz, 0) REL (p, b) IN \n    "
 & "      DrawHead(c, b) \n        END \n      FI \n    END \n  FI \nEND;\n"
 & "\nUI PointTool(Head);\n\n(* Draw an arrow head with no tail as if the \n"
 & "   tail started at \"a\" and ended at \"b\". *)\n\nPROC Straight(a, b) "
 & "IS \n  IF \n    VAR p = StraightEnd(a, b, HeadSize()) IN \n      PS.Mov"
 & "eTo(a); \n      PS.LineTo(p); \n      PS.Stroke(); \n      DrawHeadWith"
 & "Tail(p, b) \n    END \n  FI \nEND;\n\nPROC DblStraight(a, b) IS \n  IF "
 & "\n    VAR \n      sz = HeadSize(), \n      p = StraightEnd(b, a, sz), \n"
 & "      q = StraightEnd(a, b, sz) \n    IN \n      DrawHeadWithTail(p, a)"
 & "; \n      PS.MoveTo(p); \n      PS.LineTo(q); \n      PS.Stroke(); \n  "
 & "    DrawHeadWithTail(q, b) \n    END \n  FI \nEND;\n\nUI PointTool(Stra"
 & "ight);\n\nUI PointTool(DblStraight);\n\n(* Draw a directed or doubly-di"
 & "rected edge, \n   respectively, from \"a\" to \"b\". Requires \n   that"
 & " \"a # b\". *)\n\nPROC Curved(a, b, c, d) IS \n  IF \n    VAR p = Strai"
 & "ghtEnd(c, d, HeadSize()) IN \n      PS.MoveTo(a); \n      PS.CurveTo(b,"
 & " c, p); \n      PS.Stroke(); \n      DrawHeadWithTail(p, d) \n    END \n"
 & "  FI \nEND;\n\nPROC DblCurved(a, b, c, d) IS \n  IF \n    VAR \n      s"
 & "z = HeadSize(), \n      p = StraightEnd(b, a, sz), \n      q = Straight"
 & "End(c, d, sz) \n    IN \n      DrawHeadWithTail(p, a); \n      PS.MoveT"
 & "o(p); \n      PS.CurveTo(b, c, q); \n      PS.Stroke(); \n      ";

CONST E7_1 =
   "DrawHeadWithTail(q, d) \n    END \n  FI \nEND;\n\nUI PointTool(Curved);"
 & "\n\nUI PointTool(DblCurved);\n\n(* Draw a directed or doubly-directed c"
 & "urved \n   edge, respectively, from \"a\" to \"d\" with \n   Bezier con"
 & "trol points \"b\" and \"c\". \n   Requires that \"c # d\". *)\n\nPRIVAT"
 & "E VAR history := NIL;\n\nPROC Save() IS history := (size, history) END;"
 & "\n\nPROC Restore() IS \n  size := CAR(history); \n  history := CDR(hist"
 & "ory) \nEND;\n\nUI PointTool(Save);\n\nUI PointTool(Restore);\n\n(* Save"
 & "/restore the current arrow size. *)\n\n";

CONST E8 =
   "MODULE Shadow;\n\n(* Procedures for drawing 3D shadow effects. *)\n\nIM"
 & "PORT Color, R2, Geometry, PS;\n\nCONST DefaultWidth = 4;\n\n(* This mod"
 & "ule maintains a current shadow width. *)\n\nPRIVATE VAR width := Defaul"
 & "tWidth;\n\nPROC SetWidth(w) IS width := w END;\n\nUI SetTool(SetWidth);"
 & "\n\n(* Set the current shadow width to \"w\". *)\n\nUI Param(SetWidth, "
 & "DefaultWidth);\n\nUI Param(SetWidth, 1);\n\nUI Param(SetWidth, 2);\n\nU"
 & "I Param(SetWidth, 3);\n\nUI Param(SetWidth, 4);\n\nUI Param(SetWidth, 5"
 & ");\n\nUI Param(SetWidth, 7);\n\nUI Param(SetWidth, 10);\n\nCONST \n  De"
 & "faultColors = (Color.Grey75, Color.Grey25), \n  ReverseColors = (Color."
 & "Grey25, Color.Grey75);\n\n(* This module maintains a current pair of co"
 & "lors, \n   which are the two colors used to draw the shadows. \n   By d"
 & "efault, the shadows are drawn so a light source \n   appears to be shin"
 & "ing on a raised object from the \n   upper-left. *)\n\nPRIVATE VAR colo"
 & "rs := DefaultColors;\n\nPROC SetColors(c) IS colors := c END;\n\nUI Set"
 & "Tool(SetColors);\n\n(* Set the current pair of colors to \"c\", which s"
 & "hould \n   be a pair of colors produced using the \"Color\" \n   module"
 & ". *)\n\nUI Param(SetColors, DefaultColors);\n\nUI Param(SetColors, Reve"
 & "rseColors);\n\nPRIVATE PROC Rect0(a, b) IS \n  IF \n    VAR \n      c ="
 & " Geometry.HorVer(b, a), \n      d = Geometry.HorVer(a, b), \n      e = "
 & "R2.Minus(a, (width, width)), \n      f = R2.Plus(b, (width, width)), \n"
 & "      g = Geometry.HorVer(f, e), \n      h = Geometry.HorVer(e, f) \n  "
 & "  IN \n      SAVE PS IN \n        PS.MoveTo(a); \n        PS.LineTo(c);"
 & " \n        PS.LineTo(b); \n        PS.LineTo(f); \n        PS.LineTo(g)"
 & "; \n        PS.LineTo(e); \n        PS.Close(); \n        PS.SetColor(C"
 & "AR(colors)); \n        PS.Fill(); \n        PS.MoveTo(a); \n        PS."
 & "LineTo(d); \n        PS.LineTo(b); \n        PS.LineTo(f); \n        PS"
 & ".LineTo(h); \n        PS.LineTo(e); \n        PS.Close(); \n        PS."
 & "SetColor(CDR(colors)); \n        PS.Fill() \n      END \n    END \n  FI"
 & " \nEND;\n\nPROC Rect(a, b) IS \n  IF \n    VAR ax, ay, bx, by IN \n    "
 & "  a = (ax, ay) AND b = (bx, by) -> \n      ";

CONST E8_0 =
   "  Rect0((MIN(ax, bx), MIN(ay, by)), \n              (MAX(ax, bx), MAX(a"
 & "y, by))) \n    END \n  FI \nEND;\n\nUI PointTool(Rect);\n\n(* Draw shad"
 & "ows around the rectangle with corners \"a\" \n   and \"b\" that is squa"
 & "rely oriented with the page. The \n   shadows are drawn in the current "
 & "shadow width and \n   colors. The west and north shadows are filled wit"
 & "h \n   the first color, and the east and south shadows are \n   filled "
 & "with the second color. *)\n\nPROC RectC(c, b) IS \n  IF VAR a = (-1, 0)"
 & " REL (c, b) IN Rect(a, b) END FI \nEND;\n\nUI PointTool(RectC);\n\n(* L"
 & "ike \"Rect\" above, but the rectangle is specified by \n   its center \""
 & "c\" and one of its corners \"b\". *)\n\nPRIVATE VAR history := NIL;\n\n"
 & "PROC Save() IS \n  history := ((width, colors), history) \nEND;\n\nPROC"
 & " Restore() IS \n  VAR head IN \n    head := CAR(history); \n    width :"
 & "= CAR(head); \n    colors := CDR(head) \n  END; \n  history := CDR(hist"
 & "ory) \nEND;\n\nUI PointTool(Save);\n\nUI PointTool(Restore);\n\n(* Save"
 & "/restore the current shadow state. *)\n";

CONST E9 =
   "; Copyright (C) 1992, Digital Equipment Corporation                    "
 & "     \n; All rights reserved.                                          "
 & "            \n; See the file COPYRIGHT for a full description.         "
 & "                   \n;                                                 "
 & "                          \n; Last modified on Thu Mar 28 17:07:59 PST "
 & "1996 by heydon                   \n;      modified on Sun Jun 11 17:30:"
 & "56 PDT 1995 by gnelson                  \n\n(Rim (Pen 5)\n  (Macro Gap "
 & "() \'(Glue 5 + Inf))\n  (Macro VGap () \'(Glue 5))\n  (Macro LeftText B"
 & "OA (t)\n    `(HBox (Shape (Width 45 + 0) (Text RightAlign ,t)) (Glue 2)"
 & "))\n (VBox\n  (HBox\n    (LeftText \"Name:\")\n    (Frame Lowered (MyBr"
 & "owserFont)\n      (Shape (Width 100 + Inf)\n        (TypeIn %declName F"
 & "irstFocus (BgColor \"White\")))\n    )\n  )\n  (VGap)\n  (Radio %typeRa"
 & "dio\n    (HBox\n      (LeftText \"Type:\")\n      (HBox\n        Fill\n"
 & "        (Choice %procType \"PROC\") (Gap)\n        (Filter (Choice %pre"
 & "dType \"PRED\")) (Gap)\n        (Choice %templType \"Template\")\n     "
 & "   Fill\n      )\n    )\n  )\n  (VGap)\n  (Radio %toolRadio\n    (HBox\n"
 & "      (LeftText \"Tool:\")\n      (HBox\n        Fill\n        (Choice "
 & "%pointTool \"Point\") (Gap)\n        (Choice %noTool    \"None\")\n    "
 & "    Fill\n      )\n    )\n  )\n  (VGap)\n  (HBox\n    Fill\n    (Button"
 & " %foldOk \"  OK  \")\n    Fill\n  )\n))\n";

CONST E10 =
   "MODULE JunoUI;\n\n(* This module provides information to the Juno progr"
 & "am about the \n   state of the Juno application user interface. *) \n  "
 & " \nPROC nm := DragName() IS SKIP END; /* external procedure */\n\n(* \""
 & "DragName()\" returns the name of the point currently being dragged by\n"
 & "the user, or \"NIL\" if the user isn\'t dragging. *)\n\nPROC pt := Drag"
 & "Loc() IS SKIP END; /* external procedure */\n\n(* \"DragLoc()\" returns"
 & " the location of the point currently being dragged by\nthe user, or \"N"
 & "IL\" if the user isn\'t dragging. *)\n\nPROC pr := GetClick() IS SKIP E"
 & "ND;\n\n(* UNIMPLEMENTED!\n\n   Blocks and waits for the user to click t"
 & "he mouse in the drawing window,\n   then returns a value of the form \""
 & "((x,y),(tp,bt))\" where \"(x,y)\" are\n   the Juno coordinates of the p"
 & "osition of the click, \"tp\" is one\n   of \"FirstDown\", \"OtherDown\""
 & ", \"OtherUp\", and \"LastUp\" and identifies\n   the type of the click,"
 & " and \"bt\" is 0, 1, 2 identifying the left,\n   middle, and right mous"
 & "e button respectively. *)\n\n";

CONST E11 =
   "MODULE Unit;\n\n(* Defines constants and \n   procedures for various un"
 & "its \n   of length. The lengths are\n   defined in terms of the units\n"
 & "   of Juno\'s coordinate system,\n   which are PostScript points\n   (e"
 & "qual to 1/72 of an inch). *)\n\nCONST \n  In = 72.0, \n  Ft = In * 12.0"
 & ", \n  Cm = In / 2.54, \n  Mm = Cm / 10.0;\n\n(* \"In\", \"Ft\", \"Cm\","
 & " and \"Mm\" \n   are the size (in points) of \n   one inch, one foot, o"
 & "ne \n   centimeter, and one \n   millimeter, respectively. *)\n\n(* Jun"
 & "o\'s coordinate system \n   uses screen-independent \n   units, but the"
 & "re are cases \n   in which screen-dependent \n   units could be useful."
 & " This \n   is most often the case when \n   PostScript output is not \n"
 & "   being generated, and it is \n   important that the \n   quantization"
 & " error induced \n   by the discrete pixels on \n   the screen not effec"
 & "t the \n   regularity of the drawing. \n   For example, it would be \n "
 & "  more convenient to use \n   screen-dependent units to \n   draw a ser"
 & "ies of \n   evenly-spaced horizontal \n   lines. The following \n   pro"
 & "cedure can be used to \n   obtain the screen-dependent \n   size of a s"
 & "ingle pixel. *)\n\nPROC x, y := Pixel() IS \n  SKIP \nEND;\n\n(* \"x\" "
 & "and \"y\" are the \n   horizontal and vertical size \n   (in points) of"
 & " a pixel on \n   the screen on which Juno is \n   running. Use this pro"
 & "cedure \n   in your Juno programs with \n   care, since it will cause \n"
 & "   your program to be \n   screen-dependent. *)\n\n";

CONST E12 =
   "MODULE PS;\n\n/* A template for the PS interface to be \n   read in But"
 & "ton or Public view only. */\n\n(* The built-in Juno PostScript module. "
 & "*)\n\nIMPORT Color;\n\n(* \\section{Coordinate System} *)\n\n(* Juno us"
 & "es the same coordinate system\n   as the default PostScript coordinate\n"
 & "   system. The origin of this coordinate\n   system is the lower-left c"
 & "orner of the\n   page with \"x\" and \"y\" coordinates\n   increasing t"
 & "o the left and up,\n   respectively. The units of the coordinate\n   sy"
 & "stem are PostScript {\\it points}, equal\n   to 1/72 of an inch. The \""
 & "Unit\" module\n   defines constants and procedures for\n   converting f"
 & "rom points to other units. *)\n\n(* \\section{Drawing Model} *)\n\n(* J"
 & "uno uses the PostScript drawing model.\n   In this model, ink is painte"
 & "d on the page\n   by defining a {\\it path} of straight and\n   curved "
 & "segments, and then {\\it stroking}\n   or {\\it filling} the path with "
 & "ink. There\n   are separate procedures for painting text\n   in a parti"
 & "cular font. There are also\n   procedures for reading the values of\n  "
 & " the PostScript state, such as the current\n   point, and for measuring"
 & " text strings. *)\n\n(* \\section{Paths} *)\n\n(* A {\\it segment} is a"
 & " directed arc. A\n   segment is defined mathematically by two\n   param"
 & "etric univariate cubic polynomials \"x(t)\"\n   and \"y(t)\", where \"t"
 & "\" ranges over the closed\n   interval \"[0, 1]\". The segment starts a"
 & "t\n   \"(x(0), y(0))\" and ends at \"(x(1), y(1))\". If \n   \"x\" and "
 & "\"y\" are linear functions of \n   \"t\", then the segment is {\\it lin"
 & "ear}: it \n   corresponds to a straight line \n   segment. If \"x\" and"
 & " \"y\" are constant \n   functions of \"t\", then the segment is \n   {"
 & "\\it degenerate}: it consists of a single \n   point. \n\n   A {\\it su"
 & "b-path} is a connected sequence \n   of straight and curved line segmen"
 & "ts. \n   Within a sub-path, each segment \n   begins where the previous"
 & " segment \n   ends. \n\n   Each sub-path is either {\\it open} or \n   "
 & "{\\it closed}. In a closed sub-path, the \n   last segment ends where t"
 & "he first \n   segment begins. (This may also";

CONST E12_0 =
   " happen \n   for an open sub-path, but this \n   coincidence does not m"
 & "ake the \n   sub-path closed.) \n\n   A {\\it path} is a (possibly empt"
 & "y) \n   sequence of sub-paths. This module \n   maintains a {\\it curre"
 & "nt path}. The \n   endpoint of the last segment of the \n   last open s"
 & "ub-path of the current \n   path is called the {\\it current point}; \n"
 & "   if the current path is empty, or if \n   the last sub-path of the cu"
 & "rrent path \n   is closed, the current point is \n   undefined. *)\n\n("
 & "* Variables named \"p\", \"q\", \"r\", and \n   \"s\" are points. *)\n\n"
 & "PROC NewPath() IS SKIP END;\n\n(* Make the current path empty. *)\n\nPR"
 & "OC MoveTo(p) IS SKIP END;\n\nUI PointTool(MoveTo);\n\n(* Let \"pp\" be "
 & "a new degenerate open \n   sub-path starting and ending at \"p\". \n   "
 & "In the usual case, this procedure \n   appends \"pp\" to the current pa"
 & "th. \n   However, in the special case that the \n   current sub-path is"
 & " non-empty, open, \n   and degenerate (i.e., \"MoveTo\" was \n   the mo"
 & "st-recently called path \n   construction procedure), this \n   procedu"
 & "re instead replaces the \n   current sub-path with \"pp\". In either \n"
 & "   case, \"p\" becomes the current point. *)\n\nPROC LineTo(p) IS SKIP "
 & "END;\n\nUI PointTool(LineTo);\n\n(* Extend the current path with a \n  "
 & " straight line segment from the \n   current point to \"p\"; \"p\" beco"
 & "mes the \n   current point. It is a checked \n   run-time error for the"
 & " current point \n   to be undefined. *)\n\nPROC CurveTo(q, r, s) IS SKI"
 & "P END;\n\nUI PointTool(CurveTo);\n\n(* Extend the current path with a B"
 & "ezier \n   curve determined by the current \n   point, \"q\", \"r\", an"
 & "d \"s\"; \"s\" becomes \n   the current point. It is a checked \n   run"
 & "-time error for the current point \n   to be undefined. *)\n\n(* \"Curv"
 & "eTo\" adds a curve that starts at \n   the current point in the directi"
 & "on of \n   \"q\", and ends at \"s\" coming from the \n   direction of \""
 & "r\". More precisely, let \n   \"p\" be the current point, and let \n   "
 & "\"x(t)\" and \"y(t)\" be the cubic \n   polynomials such that: \n\n|   "
 & " (x(0), y(0)) = p\n|    (x(1), y(1)) = s\n|    (x\'(0), y\'(0)";

CONST E12_1 =
   ") = 3 * (q - p)\n|    (x\'(1), y\'(1)) = 3 * (s - r)\n\n   (where the p"
 & "rimes denote \n   differentiation with respect to \"t\"). \n   Then \"C"
 & "urveTo\" adds the segment \n   \"(x(t), y(t))\" to the current path, fo"
 & "r \n   \"t\" in the closed interval \"[0, 1]\". This \n   is called the"
 & " {\\it Bezier arc} determined \n   by \"p\", \"q\", \"r\", and \"s\". *"
 & ")\n\nPROC Close() IS SKIP END;\n\nUI PointTool(Close);\n\n(* Closes the"
 & " last sub-path of the \n   current path by adding a straight \n   line "
 & "segment from the current point \n   to the starting point of the curren"
 & "t \n   sub-path. It is a checked run-time \n   error for the current po"
 & "int to be\n   undefined. *)\n\n(* \\section{Painting} *)\n\nPROC Stroke"
 & "() IS SKIP END;\n\nUI PointTool(Stroke);\n\n(* Stroke the current path "
 & "using the \n   current color, current width, current \n   end style, an"
 & "d current joint style. *)\n\nPROC Fill() IS SKIP END;\n\nUI PointTool(F"
 & "ill);\n\n(* Fill the region enclosed by the\n   current path in the cur"
 & "rent \n   color according to the current \n   winding style. If the pat"
 & "h consists\n   of several disconnected sub-paths,\n   the subpaths are "
 & "filled individually.\n   Any open subpaths are implicitly\n   closed be"
 & "fore being filled. *)\n\nPROC Type(p, txt) IS SKIP END;\n\nUI TextTool("
 & "Type);\n\n(* Paint the string \"txt\" at the point \n   \"p\" in the cu"
 & "rrent font and the \n   current color. The current path is \n   unchang"
 & "ed.\n\n   The \"Type\" procedure uses the\n   ISO-Latin-1 character enc"
 & "oding for\n   the Courier, Helvetica, and Times\n   font families, and "
 & "the Symbol character\n   encoding for the Symbol font family.\n   See A"
 & "ppendix E of the ``PostScript\n   Language Reference Manual, Second\n  "
 & " Edition\'\'. Section E.7 shows the\n   ISO-Latin-1 encoding, and Secti"
 & "on\n   E.12 shows the Symbol encoding.\n\n   Warning: In the ISO-Latin-"
 & "1 encoding,\n   the easy-to-type \"-\" character with\n   code value \\"
 & "055 is a minus sign, while\n   the hyphen is hidden at code value\n   \\"
 & "255. *)\n\n(* \\section{Stroking} *)\n\nCONST DefaultWidth = 1;\n\n(* T"
 & "his module maintains a \"current \n   width\", which i";

CONST E12_2 =
   "s a number. *)\n\nPROC SetWidth(w) IS SKIP END;\n\nUI SetTool(SetWidth)"
 & ";\n\n(* Set the current width to \"w\". It is a \n   checked run-time e"
 & "rror for \"w < 0\". *)\n\nUI Param(SetWidth, DefaultWidth);\n\nUI Param"
 & "(SetWidth, 0);\n\nUI Param(SetWidth, 1);\n\nUI Param(SetWidth, 2);\n\nU"
 & "I Param(SetWidth, 3);\n\nUI Param(SetWidth, 4);\n\nUI Param(SetWidth, 5"
 & ");\n\nUI Param(SetWidth, 10);\n\nUI Param(SetWidth, 20);\n\nCONST \n  B"
 & "uttEnds = 0, \n  RoundEnds = 1, \n  SquareEnds = 2, \n  DefaultEnds = B"
 & "uttEnds;\n\n(* This module maintains a \"current end \n   style\", whic"
 & "h is one of \"ButtEnds\", \n   \"RoundEnds\", or \"SquareEnds\". *)\n\n"
 & "PROC SetEndStyle(es) IS SKIP END;\n\nUI SetTool(SetEndStyle);\n\n(* Set"
 & " the current end style to \"es\". It \n   is a checked run-time error f"
 & "or \"es\" \n   not to be one of the values \n   \"ButtEnds\", \"RoundEn"
 & "ds\", or \n   \"SquareEnds\". *)\n\nUI Param(SetEndStyle, DefaultEnds);"
 & "\n\nUI Param(SetEndStyle, ButtEnds);\n\nUI Param(SetEndStyle, RoundEnds"
 & ");\n\nUI Param(SetEndStyle, SquareEnds);\n\nCONST \n  MiterJoints = 0, "
 & "\n  RoundJoints = 1, \n  BevelJoints = 2, \n  DefaultJoints = MiterJoin"
 & "ts;\n\n(* This module maintains a \"current \n   joint style\", which i"
 & "s one of \n   \"MiterJoints\", \"RoundJoints\", and \n   \"BevelJoints\""
 & ". *)\n\nPROC SetJointStyle(js) IS SKIP END;\n\nUI SetTool(SetJointStyle"
 & ");\n\n(* Set the current joint style to \"js\". \n   It is a checked ru"
 & "n-time error for \n   \"js\" not to be one of the values \n   \"MiterJo"
 & "ints\", \"RoundJoints\", or \n   \"BevelJoints\". *)\n\nUI Param(SetJoi"
 & "ntStyle, DefaultJoints);\n\nUI Param(SetJointStyle, MiterJoints);\n\nUI"
 & " Param(SetJointStyle, RoundJoints);\n\nUI Param(SetJointStyle, BevelJoi"
 & "nts);\n\nPROC w := GetWidth() IS SKIP END;\n\nPROC es := GetEndStyle() "
 & "IS SKIP END;\n\nPROC js := GetJointStyle() IS SKIP END;\n\n(* Return th"
 & "e current line width, end \n   style, and joint style as set by the \n "
 & "  most recent calls to the \n   corresponding \"Set\" procedures. *)\n\n"
 & "(* \\section{Filling} *)\n\nCONST DefaultColor = Color.Black;\n\n(* Thi"
 & "s module maintains a \"current \n   color\", which is specified as a re"
 & "d, \n   green,";

CONST E12_3 =
   " blue triple \"[r, g, b]\". A \n   color is legal if \"0 <= r, g, b <= "
 & "\n   1\". See the \"Color\" module. *)\n\nPROC SetColor(c) IS SKIP END;"
 & "\n\nUI SetTool(SetColor);\n\n(* Set the current color to \"c\". It is a"
 & " \n   checked run-time error for \"c\" not to \n   be a legal color. *)"
 & "\n\nUI Param(SetColor, DefaultColor);\n\nUI Param(SetColor, Color.Black"
 & ");\n\nUI Param(SetColor, Color.White);\n\nUI Param(SetColor, Color.Red)"
 & ";\n\nUI Param(SetColor, Color.Green);\n\nUI Param(SetColor, Color.Blue)"
 & ";\n\nUI Param(SetColor, Color.Cyan);\n\nUI Param(SetColor, Color.Magent"
 & "a);\n\nUI Param(SetColor, Color.Yellow);\n\nUI Param(SetColor, Color.Gr"
 & "ey25);\n\nUI Param(SetColor, Color.Grey50);\n\nUI Param(SetColor, Color"
 & ".Grey75);\n\nCONST \n  NonZeroWinding = 0, \n  OddWinding = 1,\n  Defau"
 & "ltWinding = NonZeroWinding;\n\n(* This module maintains a \"current \n "
 & "  winding style\", which is one of \n   \"OddWinding\" or \"NonZeroWind"
 & "ing\". *)\n\nPROC SetWinding(ws) IS SKIP END;\n\nUI SetTool(SetWinding)"
 & ";\n\n(* Set the current winding style to \n   \"ws\". It is a checked r"
 & "un-time error \n   for \"ws\" not to be one of the \n   constants \"Odd"
 & "Winding\" or \n   \"NonZeroWinding\". *)\n\nUI Param(SetWinding, Defaul"
 & "tWinding);\n\nUI Param(SetWinding, OddWinding);\n\nUI Param(SetWinding,"
 & " NonZeroWinding);\n\nPROC c := GetColor() IS SKIP END;\n\nPROC ws := Ge"
 & "tWinding() IS SKIP END;\n\n(* Return the current color and winding \n  "
 & " style as set by the most recent calls \n   to the corresponding \"Set\""
 & " \n   procedures. *)\n\n(* \\section{Text} *)\n\nCONST \n  FontFaces = "
 & "[\"Times-Roman\", \n               \"Times-Bold\", \n               \"T"
 & "imes-Italic\", \n               \"Times-BoldItalic\", \n               "
 & "\"Helvetica\", \n               \"Helvetica-Bold\", \n               \""
 & "Helvetica-Oblique\", \n               \"Helvetica-BoldOblique\", \n    "
 & "           \"Courier\", \n               \"Courier-Bold\", \n          "
 & "     \"Courier-Oblique\", \n               \"Courier-BoldOblique\", \n "
 & "              \"Symbol\"], \n  DefaultFace = \"Times-Roman\";\n\n(* Thi"
 & "s module maintains a current font \n   face, which is one of the font f"
 & "aces \n   name";

CONST E12_4 =
   "d in the list \"FontFaces\". *)\n\nPROC SetFontFace(nm) IS SKIP END;\n\n"
 & "UI SetTool(SetFontFace);\n\n(* Set the current font face to \"nm\"; \n "
 & "  the current font size is unchanged. \n   It is a checked run-time err"
 & "or for \n   \"nm\" not to be a member of the list \n   \"FontFaces\". *"
 & ")\n\nUI Param(SetFontFace, DefaultFace);\n\nUI Param(SetFontFace, \"Tim"
 & "es-Roman\");\n\nUI Param(SetFontFace, \"Times-Bold\");\n\nUI Param(SetF"
 & "ontFace, \"Times-Italic\");\n\nUI Param(SetFontFace, \"Times-BoldItalic"
 & "\");\n\nUI Param(SetFontFace, \"Helvetica\");\n\nUI Param(SetFontFace, "
 & "\"Helvetica-Bold\");\n\nUI Param(SetFontFace, \"Helvetica-Oblique\");\n"
 & "\nUI Param(SetFontFace, \n         \"Helvetica-BoldOblique\");\n\nUI Pa"
 & "ram(SetFontFace, \"Courier\");\n\nUI Param(SetFontFace, \"Courier-Bold\""
 & ");\n\nUI Param(SetFontFace, \"Courier-Oblique\");\n\nUI Param(SetFontFa"
 & "ce, \n         \"Courier-BoldOblique\");\n\nUI Param(SetFontFace, \"Sym"
 & "bol\");\n\nCONST \n  Tiny = 0, \n  Small = 1, \n  Medium = 2, \n  Big ="
 & " 3, \n  Large = 4, \n  Huge = 5, \n  DefaultSize = Large, \n  FontSizes"
 & " = [Tiny, Small, Medium, Big, \n               Large, Huge];\n\n(* This"
 & " module maintains a current font \n   size, which is one of the symboli"
 & "c \n   font sizes in the list \"FontSizes\". *)\n\nPROC SetFontSize(sz)"
 & " IS SKIP END;\n\nUI SetTool(SetFontSize);\n\n(* Set the current font si"
 & "ze to \"sz\"; \n   the current font face is unchanged. \n   It is a che"
 & "cked run-time error for \n   \"sz\" not to be a member of the list \n  "
 & " \"FontSizes\". *)\n\nUI Param(SetFontSize, DefaultSize);\n\nUI Param(S"
 & "etFontSize, Tiny);\n\nUI Param(SetFontSize, Small);\n\nUI Param(SetFont"
 & "Size, Medium);\n\nUI Param(SetFontSize, Big);\n\nUI Param(SetFontSize, "
 & "Large);\n\nUI Param(SetFontSize, Huge);\n\nPROC SetFont(nm, sz) IS SKIP"
 & " END;\n\n(* Equivalent to \"SetFontFace(nm); \n   SetFontSize(sz)\". *)"
 & "\n\nPROC nm := GetFontFace() IS SKIP END;\n\nPROC sz := GetFontSize() I"
 & "S SKIP END;\n\nPROC nm, sz := GetFont() IS SKIP END;\n\n(* Return the c"
 & "urrent font face and size \n   as set by the most recent calls to \n   "
 & "the corresponding \"Set\" procedures. *)\n\nPROC ptSz := GetFontPtSize("
 & ") IS SKIP ";

CONST E12_5 =
   "END;\n\n(* Return the height in points of the \n   current font. This i"
 & "s the nominal \n   distance between tightly-spaced lines \n   of the fo"
 & "nt, and so is probably \n   larger than the height of the font\'s \n   "
 & "capital letters. *)\n\nPROC asc, dec := FontHeight() IS \n  SKIP \nEND;"
 & "\n\n(* Return the ascent and the decent of \n   the current font. The a"
 & "scent is the \n   height of the character in the font \n   that extends"
 & " furthest above the \n   baseline, and the decent is the depth \n   of "
 & "the character in the font that \n   extends furthest below the baseline"
 & ". \n   Hence, the height of the font\'s \n   bounding box is \"asc + de"
 & "c\". *)\n\nPROC w := StringWidth(txt) IS SKIP END;\n\n(* Return the wid"
 & "th of the string \"txt\" \n   typed in the current font. *)\n\nPROC rec"
 & "t := StringBBox(txt) IS SKIP END;\n\n(* Return the bounding box of the "
 & "string \n   \"txt\" typed at the origin in the \n   current font. The r"
 & "esult \"rect\" is a \n   pair of points \"(sw, ne)\", where \"sw\" \n  "
 & " and \"ne\" are the southwest and \n   northeast corners of the boundin"
 & "g \n   box, respectively. *)\n\n(* \\section{Current Path State} *)\n\n"
 & "PROC p := CurrentPoint() IS SKIP END;\n\n(* Returns the current point, "
 & "or \"NIL\" \n   if the current point is undefined. \n   The current poi"
 & "nt is defined if and \n   only if the current path is non-empty \n   an"
 & "d its last sub-path is open. *)\n\nPROC path := CurrentPath() IS SKIP E"
 & "ND;\n\n(* Returns a description of the current \n   path, or \"NIL\" if"
 & " the current path is \n   empty. A path description is a list \n   of s"
 & "ublists, where each sublist \n   describes a segment of the path and \n"
 & "   takes one of the following forms: \n\n|    [\"MoveTo\", p]\n|    [\""
 & "LineTo\", p]\n|    [\"CurveTo\", p, q, r]\n|    [\"Close\"]\n\n   In th"
 & "ese descriptions, the variables \n   \"p\", \"q\", and \"r\" range over"
 & " points \n   (i.e., pairs of numbers). *)\n\n(* \\section{Bounding Box}"
 & " *)\n\n(* This module maintains a \"bounding \n   box\", which is a rec"
 & "tangle. The \n   default bounding box is the bounding \n   box of an 8-"
 & "1/2\" x 11\" page. Juno\n   displays the current boun";

CONST E12_6 =
   "ding box as\n   a grey rectangle on the screen, and\n   writes the boun"
 & "ding box information\n   into a \"BoundingBox\" comment when\n   genera"
 & "ting PostScript. *)\n\nPROC SetBBox(p, q) IS SKIP END;\n\nUI PointTool("
 & "SetBBox);\n\n(* Set the current bounding box to the \n   rectangle whos"
 & "e opposite corners are \n   \"p\" and \"q\". *)\n\nPROC p, q := GetBBox"
 & "() IS SKIP END;\n\n(* Set \"p\" and \"q\" to points at opposite\n   cor"
 & "ners of the current bounding box. *)\n\n(* \\section{PostScript State} "
 & "*)\n\nPROC ShowPage() IS SKIP END;\n\nUI PointTool(ShowPage);\n\n(* Upd"
 & "ate the display to contain the \n   current page. Since the Juno system"
 & " \n   executes an implicit ShowPage() at \n   the end of the current co"
 & "mmand, you \n   only need to use ShowPage() to \n   achieve animation e"
 & "ffects. *)\n\nPROC Reset() IS SKIP END;\n\nUI PointTool(Reset);\n\n(* R"
 & "eset the PostScript state to its \n   default value. Subsequent paintin"
 & "g \n   operations appear on a blank page. *)\n\nPROC SavePage() IS SKIP"
 & " END;\n\nPROC RestorePage() IS SKIP END;\n\n(* Save/restore the current"
 & " page to an offscreen\n   buffer. This can be used in animations to\n  "
 & " quickly restore a background common to all\n   frames. WARNING: When o"
 & "utputing PostScript,\n   these procedures are no-ops. *)\n\nPROC Save()"
 & " IS SKIP END;\n\nPROC Restore() IS SKIP END;\n\nUI PointTool(Save);\n\n"
 & "UI PointTool(Restore);\n\n(* Save/Restore the entire state of this \n  "
 & " module. The state is saved to and \n   restored from an internal stack"
 & ". The \n   state includes the current path, \n   current width, current"
 & " end style, \n   current joint style, current color, \n   current windi"
 & "ng style, and current \n   font. *)\n\n";

CONST E13 =
   "; Copyright (C) 1992, Digital Equipment Corporation                    "
 & "     \n; All rights reserved.                                          "
 & "            \n; See the file COPYRIGHT for a full description.         "
 & "                   \n;                                                 "
 & "                          \n; Last modified on Fri Jun 16 18:38:37 PDT "
 & "1995 by heydon                   \n\n(VBox\n  (Insert \"Macros.fv\")\n "
 & " (MyLabelFont)\n  (HBox\n    (Menu (MenuLabel \"View\") (Radio %view =p"
 & "ublic (VBox\n      (LinkMButton (For publicView)\n        (Choice %publ"
 & "ic  CheckMark MenuStyle (TextL \"Public\")))\n      (LinkMButton (For p"
 & "rivateView)\n        (Choice %private  CheckMark MenuStyle (TextL \"Pri"
 & "vate\")))\n    )))\n    Fill\n  )\n  (MyRidge)\n  (TSplit %body Flex (W"
 & "hich firstChild)\n    (Macro EditorW BOA () \'(Width 400 + Inf - 200))\n"
 & "    (Macro EditorH BOA () \'(Height 500 + Inf - 450))\n    (Shape %firs"
 & "tChild (EditorW) (EditorH) (Generic %publicView))\n    (Shape (EditorW)"
 & " (EditorH) (Generic %privateView)))\n)\n";

CONST E14 =
   "MODULE CharSet;\n\nIMPORT Text, R2, PS, Type, TypeLinesC, TypeLinesR;\n"
 & "\nPRIVATE CONST \n  Rows = 16, \n  Cols = 16, \n  XBorder = 3, \n  YBor"
 & "der = 2;\n\n/* \"Rows\" and \"Cols\" specify the total \n   number of r"
 & "ows and columns of the \n   grid. \"XBorder\" and \"YBorder\" specify \n"
 & "   the amount of horizontal and vertical \n   space, respectively, to l"
 & "eave on each \n   side of the widest/tallest character \n   in the font"
 & ". */\n\nPRIVATE PROC w := MaxCharWidth() IS \n  w := 0; \n  VAR i = 0 I"
 & "N \n    DO \n      i < 256 -> \n        w := \n          MAX(w, \n     "
 & "     PS.StringWidth(Text.FromChar(i))); \n        i := i + 1 \n    OD \n"
 & "  END \nEND;\n\n/* Set \"w\" to the width of the widest \n   character "
 & "in the current font at the \n   current font size. */\n\nPROC Show(p) I"
 & "S \n  SAVE PS IN \n    PS.SetWidth(1); \n    VAR row, col, h, asc, dec,"
 & " w IN \n      w := MaxCharWidth() + 2 * XBorder; \n      asc, dec := PS"
 & ".FontHeight(); \n      h := asc + dec + 2 * YBorder; \n      p := \n   "
 & "     R2.Plus(p, \n                (-w * Rows / 2, \n                 h "
 & "* Cols / 2)); \n      row := 0; \n      DO \n        row < Rows -> \n  "
 & "        col := 0; \n          DO \n            col < Cols -> \n        "
 & "      ShowChar(p, asc, w, h, row, \n                       col); \n    "
 & "          col := col + 1 \n          OD; \n          GridLines(p, w, h,"
 & " row); \n          row := row + 1 \n      OD; \n      GridLines(p, w, h"
 & ", Rows); \n      ShowCodes(p, w, h) \n    END \n  END \nEND;\n\nUI Poin"
 & "tTool(Show);\n\n(* Display a 16 x 16 grid centered at \n   \"p\"; the g"
 & "rid contains the 256 \n   characters of the current font, \n   rendered"
 & " in the current size. *)\n\nPRIVATE PROC \n  ShowChar(p, asc, w, h, row"
 & ", col) IS \n  VAR c, dx, dy IN \n    c := Text.FromChar(col + row * Col"
 & "s); \n    dx := w * (col + 0.5); \n    dy := -(row * h + YBorder + asc)"
 & "; \n    p := R2.Plus(p, (dx, dy)); \n    Type.C(p, c) \n  END \nEND;\n\n"
 & "PRIVATE PROC GridLines(p, w, h, i) IS \n  PS.MoveTo((CAR(p) + i * w, CD"
 & "R(p))); \n  PS.LineTo((CAR(p) + i * w, \n             CDR(p) - h * Rows"
 & ")); \n  PS.MoveTo((CAR(p), CDR(p) - i";

CONST E14_0 =
   " * h)); \n  PS.LineTo((CAR(p) + w * Cols, \n             CDR(p) - i * h"
 & ")); \n  PS.Stroke() \nEND;\n\nPRIVATE PROC ShowCodes(p, w, h) IS \n  SA"
 & "VE PS IN \n    PS.SetFontFace(\"Helvetica\"); \n    ShowHCodes(p, w); \n"
 & "    ShowVCodes(p, h) \n  END \nEND;\n\nPRIVATE PROC ShowHCodes(p, w) IS"
 & " \n  VAR i = 0, q IN \n    DO \n      i < Cols -> \n        q := \n    "
 & "      R2.Plus(p, (w / 2 + w * i, 0)); \n        TypeLinesC.South(q, Hex"
 & "Char(i)); \n        i := i + 1 \n    OD \n  END \nEND;\n\nPRIVATE PROC "
 & "ShowVCodes(p, h) IS \n  VAR i = 0, q IN \n    DO \n      i < Rows -> \n"
 & "        q := \n          R2.Minus(p, (5, h / 2 + h * i)); \n        Typ"
 & "eLinesR.East(q, HexChar(i)); \n        i := i + 1 \n    OD \n  END \nEN"
 & "D;\n\nPRIVATE VAR \n  Zero := Text.GetChar(\"0\", 0), \n  A := Text.Get"
 & "Char(\"A\", 0);\n\nPRIVATE PROC txt := HexChar(i) IS \n  IF \n    0 <= "
 & "i AND i < 10 -> \n      txt := Text.FromChar(Zero + i) \n  | 10 <= i AN"
 & "D i < 16 -> \n      txt := Text.FromChar(A + (i - 10)) \n  FI \nEND;\n\n"
;

CONST E15 =
   "MODULE Text;\n\n/* A template for the Text \n   interface to be read in"
 & " Button \n   or Public view only. */\n\n(* The built-in Juno Text modul"
 & "e. A \n   Juno text string is a zero-based \n   sequence of characters."
 & " *)\n\n(* The variables \"t\", \"u\", and \"tu\" \n   are texts; \"i\","
 & " \"n\", and \"ch\" \n   are integers; and \"r\" is an \n   arbitrary nu"
 & "mber. *)\n\nPROC tu := Cat(t, u) IS SKIP END;\n\n(* Returns the concate"
 & "nation of \"t\" \n   and \"u\". *)\n\nPROC n := Length(t) IS SKIP END;\n"
 & "\n(* Returns the number of characters \n   in \"t\". *)\n\nPROC u := Su"
 & "b(t, i, n) IS SKIP END;\n\n(* Returns a subsequence of \"t\" \n   start"
 & "ing at character \"i\" of \n   length at most \"n\". The result \n   is"
 & " empty if \"i >= Length(t)\" or \n   if \"n = 0\"; otherwise, it ranges"
 & " \n   from \"i\" to \"MIN(i+n, \n   Length(t)-1)\". *)\n\nPROC ch := Ge"
 & "tChar(t, n) IS \n  SKIP \nEND;\n\n(* Returns the integer code of \n   c"
 & "haracter \"n\" of \"t\". It is a \n   checked run-time error if \"n < \n"
 & "   0\" or \"n >= Length(t)\". *)\n\nPROC t := FromChar(ch) IS SKIP END;"
 & "\n\n(* Returns a string of length one \n   containing the character wit"
 & "h \n   code \"ch\". It is a checked \n   run-time error if \"ch < 0\" o"
 & "r \n   \"ch > 255\". *)\n\nPROC t := FromNum(r, n) IS SKIP END;\n\n(* R"
 & "eturns the unparsing of the \n   number \"r\" to \"n\" digits of \n   p"
 & "recision. *)\n\nPROC i := FindChar(t, ch) IS \n  SKIP \nEND;\n\n(* Retu"
 & "rns the index of first \n   occurrence of the character \"ch\" in \n   "
 & "the text \"t\", or -1 if \"ch\" does \n   not occur in \"t\". It is a \n"
 & "   checked run-time error if \"ch < \n   0\" or \"ch > 255\". *)\n\nPRO"
 & "C i := FindCharR(t, ch) IS \n  SKIP \nEND;\n\n(* Returns the index of l"
 & "ast \n   occurrence of the character \"ch\" in \n   the text \"t\", or "
 & "-1 if \"ch\" does \n   not occur in \"t\". It is a \n   checked run-tim"
 & "e error if \"ch < \n   0\" or \"ch > 255\". *)\n\n";

CONST E16 =
   "&%2IL6N5\000null\000\000\200$\000\201\320\032B\345\214\002\n5\001\000U\226"
 & "\303{\303`d\016\010\000\000\000\000\000\000\0005\001\000\312Q\2211\217U"
 & "\207\024\000\001\000\0000005\001\000\236\207\330\351d3h\0105\001\000\375"
 & "\r\300V\'\217\375\0375\000\201\357\272c\366(D\022\t\000\000\000Helvetic"
 & "a5\007\001\000\000\0005\t\000\000\000\000\000\000\000\001\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\0005\001\000\022\363M\246+B\016"
 & "\0265\001\0065\001\0065\001\0065\001\0065\007\003\000\000\000-*-5\007\022"
 & "\000\000\000helvetica-medium-r\003\000\000\000\000\000\000\000\022\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\0005\007\f\000\000\000"
 & "-normal-*-*-\025\000\000\000\000\000\000\000\f\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\0005\007\002\000\000\00024!\000\000\000\000"
 & "\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\0005\007\r\000\000\0000-*-*-*-*-*-*#\000\000\000\000\000\000\000\r\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000%y\300A\000\000"
 & "\000\00000005\001\0055\001\0065\007\020\000\000\000Times-BoldItalic5\007"
 & "\001\000\000\0000\020\000\000\000\000\000\000\000\001\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\0005\001\0105\001\0065\001\0065\001"
 & "\0065\001\0061\f\000\000\0005\007\f\000\000\000times-bold-i\003\000\000"
 & "\000\000\000\000\000\f\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\0001\016\000\000\000\017\000\000\000\000\000\000\000\f\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\0005\007\001\000\000\0008\033"
 & "\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\0001\020\000\000\000\034\000\000\000\000\000\000\000\r"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\360[\347@\000"
 & "\000\000\000005\001\0055\001\0065\007\013\000\000\000Times-Roman5\007\001"
 & "\000\000\0001\013\000\000\000\000\000\000\000\001\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\0005\001\0105\001\0065\001\0065\001\006"
 & "5\001\0061\f\000\000\0005\007\016\000\000\000times-medium-r\003\000\000"
 & "\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\0001\016\000\000\000\021\000\000\000\000\000\000\000\f\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\0005\007\002\000\000\000"
 & "10\035\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\0001\020\000\000\000\037\000\000\000\000\000\000\000"
 & "\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\001\'"
 & "A\000\000\000\00005\001\0055\001\0065\007\f\000\000\000Courier-Bold1\037"
 & "\000\000\000\f\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\0005\001\0105\001\0065\001\0065\001\0065\001"
 & "\0061\f\000\000\0005\007\016\000\000\000courier-bold-r\003\000\000\000\000"
 & "\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\0001\016\000\000\000\021\000\000\000\000\000\000\000\f\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\0001&\000\000\000\035\000\000\000"
 & "\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\0001\020\000\000\000\037\000\000\000\000\000\000\000\r\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000H\f1A\000\000\000\00000"
 & "5\001\0055\001\0065\007\007\000\000\000Courier5\007\001\000\000\0004\007"
 & "\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\0005\001\0105\001\0065\001\0065\001\0065\001\0061\f\000"
 & "\000\0005\007\020\000\000\000courier-medium-r\003\000\000\000\000\000\000"
 & "\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\016"
 & "\000\000\000\023\000\000\000\000\000\000\000\f\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\0005\007\002\000\000\00018\037\000\000\000"
 & "\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\0001\020\000\000\000!\000\000\000\000\000\000\000\r\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\0008\264\211A\000\000\000\0000"
 & "0005\001\0055\001\0065\007\017\000\000\000Courier-Oblique13\000\000\000"
 & "\017\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\0005\001\0105\001\0065\001\0065\001\0065\001\0061\f"
 & "\000\000\0005\007\020\000\000\000courier-medium-o\003\000\000\000\000\000"
 & "\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "1\016\000\000\000\023\000\000\000\000\000\000\000\f\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\0001:\000\000\000\037\000\000\000\000"
 & "\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\0001\020\000\000\000!\000\000\000\000\000\000\000\r\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\0008\264\211A\000\000\000\00000000"
 & "05\001\0055\001\0065\007\016\000\000\000Helvetica-Bold13\000\000\000\016"
 & "\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\0005\001\0105\001\0065\001\0065\001\0065\001\0061\f\000"
 & "\000\0005\007\020\000\000\000helvetica-bold-r\003\000\000\000\000\000\000"
 & "\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\016"
 & "\000\000\000\023\000\000\000\000\000\000\000\f\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\0001:\000\000\000\037\000\000\000\000\000\000"
 & "\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\020"
 & "\000\000\000!\000\000\000\000\000\000\000\r\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\230G\222A\000\000\000\00000000005\001\005"
 & "5\001\0065\007\021\000\000\000Helvetica-Oblique13\000\000\000\021\000\000"
 & "\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\0005\001\0105\001\0065\001\0065\001\0065\001\0061\f\000\000\000"
 & "5\007\022\000\000\000helvetica-medium-o\003\000\000\000\000\000\000\000"
 & "\022\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\016\000"
 & "\000\000\025\000\000\000\000\000\000\000\f\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\0001:\000\000\000!\000\000\000\000\000\000\000"
 & "\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\020\000"
 & "\000\000#\000\000\000\000\000\000\000\r\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\230G\222A\000\000\000\00005\001\0055\001\006"
 & "1\023\000\000\0001\006\000\000\000\020\000\000\000\000\000\000\000\001\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\0005\001\0105\001\006"
 & "5\001\0065\001\0065\001\0061\f\000\000\0001\032\000\000\000\003\000\000"
 & "\000\000\000\000\000\f\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\0001\016\000\000\000\017\000\000\000\000\000\000\000\f\000\000\000"
 & "\000\000\000\000\000\000\000\000\000";

CONST E16_0 =
   "\000\000\0001\017\000\000\000\033\000\000\000\000\000\000\000\002\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\0001\020\000\000\000\035"
 & "\000\000\000\000\000\000\000\r\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\205\013\276A\000\000\000\00005\001\0055\001\0065\007\n"
 & "\000\000\000Times-Bold5\007\001\000\000\0002\n\000\000\000\000\000\000\000"
 & "\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0005\001\010"
 & "5\001\0065\001\0065\001\0065\001\0061\f\000\000\0005\007\f\000\000\000t"
 & "imes-bold-r\003\000\000\000\000\000\000\000\f\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\0001\016\000\000\000\017\000\000\000\000\000"
 & "\000\000\f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0005"
 & "\007\002\000\000\00012\033\000\000\000\000\000\000\000\002\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\0001\020\000\000\000\035\000\000"
 & "\000\000\000\000\000\r\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000[\3463A\000\000\000\00005\001\0055\001\0065\007\006\000\000\000"
 & "Symbol1`\000\000\000\006\000\000\000\000\000\000\000\001\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\0005\001\0105\001\0065\001\006"
 & "5\001\0065\001\0061\f\000\000\0005\007\017\000\000\000symbol-medium-r\003"
 & "\000\000\000\000\000\000\000\017\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\0001\016\000\000\000\022\000\000\000\000\000\000\000\f"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001g\000\000\000"
 & "\036\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\0001\020\000\000\000 \000\000\000\000\000\000\000\r"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\247\2634A\000"
 & "\000\000\0000005\001\0055\001\0065\007\025\000\000\000Helvetica-BoldObl"
 & "ique1\024\000\000\000\025\000\000\000\000\000\000\000\001\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\0005\001\0105\001\0065\001\006"
 & "5\001\0065\001\0061\f\000\000\0005\007\020\000\000\000helvetica-bold-o\003"
 & "\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\0001\016\000\000\000\023\000\000\000\000\000\000\000\f"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\033\000\000"
 & "\000\037\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\0001\020\000\000\000 \000\000\000\000\000\000\000"
 & "\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\241]\366"
 & "@\000\000\000\00000005\001\0055\001\0061=\000\000\0001\037\000\000\000\017"
 & "\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\0005\001\0105\001\0065\001\0065\001\0065\001\0061\f\000"
 & "\000\0001C\000\000\000\003\000\000\000\000\000\000\000\020\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\0001\016\000\000\000\023\000\000"
 & "\000\000\000\000\000\f\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\0001&\000\000\000\037\000\000\000\000\000\000\000\002\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\0001\020\000\000\000!\000\000\000"
 & "\000\000\000\000\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000H\f1A\000\000\000\00005\001\0055\001\0065\007\f\000\000\000Times-It"
 & "alic5\007\001\000\000\0003\f\000\000\000\000\000\000\000\001\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\0005\001\0105\001\0065\001"
 & "\0065\001\0065\001\0061\f\000\000\0005\007\016\000\000\000times-medium-"
 & "i\003\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\0001\016\000\000\000\021\000\000\000\000\000\000\000"
 & "\f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0005\007\002"
 & "\000\000\00014\035\000\000\000\000\000\000\000\002\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\0001\020\000\000\000\037\000\000\000\000"
 & "\000\000\000\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\357\030\\A\000\000\000\0000000005\001\0055\001\0061F\000\000\0001\037\000"
 & "\000\000\016\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\0005\001\0105\001\0065\001\0065\001\0065\001"
 & "\0061\f\000\000\0001L\000\000\000\003\000\000\000\000\000\000\000\020\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\016\000\000\000"
 & "\023\000\000\000\000\000\000\000\f\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\0001&\000\000\000\037\000\000\000\000\000\000\000\002\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\020\000\000\000"
 & "!\000\000\000\000\000\000\000\r\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000^`)A\000\000\000\00005\001\0055\001\0061)\000\000\000"
 & "1`\000\000\000\f\000\000\000\000\000\000\000\001\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\0005\001\0105\001\0065\001\0065\001\006"
 & "5\001\0061\f\000\000\0001/\000\000\000\003\000\000\000\000\000\000\000\016"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\016\000\000"
 & "\000\021\000\000\000\000\000\000\000\f\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\0001g\000\000\000\035\000\000\000\000\000\000\000\002"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\020\000\000"
 & "\000\037\000\000\000\000\000\000\000\r\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000Q\270DA\000\000\000\000005\001\0055\001\00612\000"
 & "\000\0001\037\000\000\000\007\000\000\000\000\000\000\000\001\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\0005\001\0105\001\0065\001"
 & "\0065\001\0065\001\0061\f\000\000\00019\000\000\000\003\000\000\000\000"
 & "\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\0001\016\000\000\000\023\000\000\000\000\000\000\000\f\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\0001&\000\000\000\037\000\000\000"
 & "\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\0001\020\000\000\000!\000\000\000\000\000\000\000\r\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000H\f1A\000\000\000\0000005\001"
 & "\0055\001\0061O\000\000\0001\037\000\000\000\021\000\000\000\000\000\000"
 & "\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0005\001"
 & "\0105\001\0065\001\0065\001\0065\001\0061\f\000\000\0001U\000\000\000\003"
 & "\000\000\000\000\000\000\000\022\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\0001\016\000\000\000\025\000\000\000\000\000\000\000\f"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001&\000\000\000"
 & "!\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\0001\020\000\000\000#\000\000\000\000\000\000\000\r\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000^`)A\000\000\000"
 & "\00000005\001\0055\001\0065\007\023\000\000\000Courier-BoldOblique1\204"
 & "\000\000\000\023\000\000\000\000\000\000\000\001\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\0005\001\0105\001\0065\001\0065\001\006"
 & "5\001\0061\f\000\000\0005\007\016\000\000\000courier-bold-o\003\000\000"
 & "\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\0001";

CONST E16_1 =
   "\016\000\000\000\021\000\000\000\000\000\000\000\f\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\0001\213\000\000\000\035\000\000\000\000"
 & "\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\0001\020\000\000\000\037\000\000\000\000\000\000\000\r\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000XdXA\000\000\000\0000000000"
 & "00005\001\0055\001\0061\023\000\000\0001`\000\000\000\020\000\000\000\000"
 & "\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\0005\001\0105\001\0065\001\0065\001\0065\001\0061\f\000\000\0001\032\000"
 & "\000\000\003\000\000\000\000\000\000\000\f\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\0001\016\000\000\000\017\000\000\000\000\000\000"
 & "\000\f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001g\000"
 & "\000\000\033\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\0001\020\000\000\000\035\000\000\000\000\000"
 & "\000\000\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000="
 & "\3105A\000\000\000\0000005\001\0055\001\0061\036\000\000\0001\204\000\000"
 & "\000\013\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\0005\001\0105\001\0065\001\0065\001\0065\001\006"
 & "1\f\000\000\0001%\000\000\000\003\000\000\000\000\000\000\000\016\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\0001\016\000\000\000\021"
 & "\000\000\000\000\000\000\000\f\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\0001\213\000\000\000\035\000\000\000\000\000\000\000\002\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\020\000\000\000"
 & "\037\000\000\000\000\000\000\000\r\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\352\032YA\000\000\000\000005\001\0055\001\0061s\000"
 & "\000\0001\006\000\000\000\025\000\000\000\000\000\000\000\001\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\0005\001\0105\001\0065\001"
 & "\0065\001\0065\001\0061\f\000\000\0001y\000\000\000\003\000\000\000\000"
 & "\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\0001\016\000\000\000\023\000\000\000\000\000\000\000\f\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\0001\017\000\000\000\037\000\000"
 & "\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\0001\020\000\000\000!\000\000\000\000\000\000\000\r\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000%y\300A\000\000\000\000"
 & "000005\001\0055\001\0061\203\000\000\0001\024\000\000\000\f\000\000\000"
 & "\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\0005\001\0105\001\0065\001\0065\001\0065\001\0061\f\000\000\0001\212"
 & "\000\000\000\003\000\000\000\000\000\000\000\016\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\0001\016\000\000\000\021\000\000\000\000"
 & "\000\000\000\f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "1\033\000\000\000\035\000\000\000\000\000\000\000\001\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\0001\020\000\000\000\036\000\000\000"
 & "\000\000\000\000\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000)\007\355@\000\000\000\00005\001\0055\001\0061\005\000\000\0001\204"
 & "\000\000\000\t\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\0005\001\0105\001\0065\001\0065\001\0065\001"
 & "\0061\f\000\000\0001\r\000\000\000\003\000\000\000\000\000\000\000\022\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\016\000\000\000"
 & "\025\000\000\000\000\000\000\000\f\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\0001\213\000\000\000!\000\000\000\000\000\000\000\002\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\020\000\000\000"
 & "#\000\000\000\000\000\000\000\r\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\354\221WA\000\000\000\000000005\001\0055\001\0061F"
 & "\000\000\0001`\000\000\000\016\000\000\000\000\000\000\000\001\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\0005\001\0105\001\0065\001"
 & "\0065\001\0065\001\0061\f\000\000\0001L\000\000\000\003\000\000\000\000"
 & "\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\0001\016\000\000\000\023\000\000\000\000\000\000\000\f\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\0001g\000\000\000\037\000\000\000"
 & "\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\0001\020\000\000\000!\000\000\000\000\000\000\000\r\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\0008\3068A\000\000\000\0000000"
 & "5\001\0055\001\00612\000\000\0001`\000\000\000\007\000\000\000\000\000\000"
 & "\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0005\001"
 & "\0105\001\0065\001\0065\001\0065\001\0061\f\000\000\00019\000\000\000\003"
 & "\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\0001\016\000\000\000\023\000\000\000\000\000\000\000\f"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001g\000\000\000"
 & "\037\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\0001\020\000\000\000!\000\000\000\000\000\000\000\r"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000Q\270DA\000"
 & "\000\000\00000005\001\0055\001\0061_\000\000\0001\024\000\000\000\n\000"
 & "\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\0005\001\0105\001\0065\001\0065\001\0065\001\0061\f\000\000"
 & "\0001f\000\000\000\003\000\000\000\000\000\000\000\f\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\0001\016\000\000\000\017\000\000\000"
 & "\000\000\000\000\f\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\0001\033\000\000\000\033\000\000\000\000\000\000\000\001\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\0001\020\000\000\000\034\000\000"
 & "\000\000\000\000\000\r\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\242\366\344@\000\000\000\000005\001\0055\001\0061j\000\000\000"
 & "1\024\000\000\000\006\000\000\000\000\000\000\000\001\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\0005\001\0105\001\0065\001\0065\001"
 & "\0065\001\0061\f\000\000\0001p\000\000\000\003\000\000\000\000\000\000\000"
 & "\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\016\000"
 & "\000\000\022\000\000\000\000\000\000\000\f\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\0001\033\000\000\000\036\000\000\000\000\000\000"
 & "\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\020"
 & "\000\000\000\037\000\000\000\000\000\000\000\r\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\353\373\345@\000\000\000\00005\001\005"
 & "5\001\0061\252\000\000\0001\024\000\000\000\023\000\000\000\000\000\000"
 & "\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0005\001"
 & "\0105\001\0065\001\0065\001\0065\001\0061\f\000\000\0001\260\000\000\000"
 & "\003\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\0001\016\000\000\000\021\000\000\000\000\000\000\000"
 & "\f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\033\000"
 & "\000\000\035\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\0001\020\000\000\000\036\000\000\000\000\000"
 & "\000\000\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000_"
 & "\020\354@\000\000\000\00005\001\0055\001\0061s\000\000\0001`\000\000\000"
 & "\025\000\000\000\000\000\000\000\001\000\000";

CONST E16_2 =
   "\000\000\000\000\000\000\000\000\000\000\000\000\0005\001\0105\001\0065"
 & "\001\0065\001\0065\001\0061\f\000\000\0001y\000\000\000\003\000\000\000"
 & "\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\0001\016\000\000\000\023\000\000\000\000\000\000\000\f\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\0001g\000\000\000\037\000\000"
 & "\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\0001\020\000\000\000!\000\000\000\000\000\000\000\r\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\0008\3068A\000\000\000\000"
 & "00005\001\0055\001\0061=\000\000\0001\204\000\000\000\017\000\000\000\000"
 & "\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\0005\001\0105\001\0065\001\0065\001\0065\001\0061\f\000\000\0001C\000\000"
 & "\000\003\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\0001\016\000\000\000\023\000\000\000\000\000\000"
 & "\000\f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\213"
 & "\000\000\000\037\000\000\000\000\000\000\000\002\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\0001\020\000\000\000!\000\000\000\000\000"
 & "\000\000\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000X"
 & "dXA\000\000\000\000005\001\0055\001\0061\005\000\000\00013\000\000\000\t"
 & "\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\0005\001\0105\001\0065\001\0065\001\0065\001\0061\f\000"
 & "\000\0001\r\000\000\000\003\000\000\000\000\000\000\000\022\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\0001\016\000\000\000\025\000"
 & "\000\000\000\000\000\000\f\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\0001:\000\000\000!\000\000\000\000\000\000\000\002\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\0001\020\000\000\000#\000\000"
 & "\000\000\000\000\000\r\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\230G\222A\000\000\000\0000000005\001\0055\001\0061\036\000\000"
 & "\0001\024\000\000\000\013\000\000\000\000\000\000\000\001\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\0005\001\0105\001\0065\001\006"
 & "5\001\0065\001\0061\f\000\000\0001%\000\000\000\003\000\000\000\000\000"
 & "\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "1\016\000\000\000\021\000\000\000\000\000\000\000\f\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\0001\033\000\000\000\035\000\000\000"
 & "\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\0001\020\000\000\000\036\000\000\000\000\000\000\000\r\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\0008\316\351@\000\000\000\000"
 & "05\001\0055\001\0061)\000\000\0001\024\000\000\000\f\000\000\000\000\000"
 & "\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "5\001\0105\001\0065\001\0065\001\0065\001\0061\f\000\000\0001/\000\000\000"
 & "\003\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\0001\016\000\000\000\021\000\000\000\000\000\000\000"
 & "\f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\033\000"
 & "\000\000\035\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\0001\020\000\000\000\036\000\000\000\000\000"
 & "\000\000\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000_"
 & "\020\354@\000\000\000\000000005\001\0055\001\0061O\000\000\0001\204\000"
 & "\000\000\021\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\0005\001\0105\001\0065\001\0065\001\0065\001"
 & "\0061\f\000\000\0001U\000\000\000\003\000\000\000\000\000\000\000\022\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\016\000\000\000"
 & "\025\000\000\000\000\000\000\000\f\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\0001\213\000\000\000!\000\000\000\000\000\000\000\002\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\020\000\000\000"
 & "#\000\000\000\000\000\000\000\r\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\354\221WA\000\000\000\00005\001\0055\001\0061_\000"
 & "\000\0001\006\000\000\000\n\000\000\000\000\000\000\000\001\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\0005\001\0105\001\0065\001"
 & "\0065\001\0065\001\0061\f\000\000\0001f\000\000\000\003\000\000\000\000"
 & "\000\000\000\f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "1\016\000\000\000\017\000\000\000\000\000\000\000\f\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\0001\017\000\000\000\033\000\000\000"
 & "\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\0001\020\000\000\000\035\000\000\000\000\000\000\000\r\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\274\023\274A\000\000\000"
 & "\00005\001\0055\001\0061\203\000\000\0001\006\000\000\000\f\000\000\000"
 & "\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\0005\001\0105\001\0065\001\0065\001\0065\001\0061\f\000\000\0001\212"
 & "\000\000\000\003\000\000\000\000\000\000\000\016\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\0001\016\000\000\000\021\000\000\000\000"
 & "\000\000\000\f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "1\017\000\000\000\035\000\000\000\000\000\000\000\002\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\0001\020\000\000\000\037\000\000\000"
 & "\000\000\000\000\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\231\263\302A\000\000\000\00005\001\0055\001\0061j\000\000\0001\006"
 & "\000\000\000\006\000\000\000\000\000\000\000\001\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\0005\001\0105\001\0065\001\0065\001\006"
 & "5\001\0061\f\000\000\0001p\000\000\000\003\000\000\000\000\000\000\000\017"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\016\000\000"
 & "\000\022\000\000\000\000\000\000\000\f\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\0001\017\000\000\000\036\000\000\000\000\000\000\000"
 & "\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\020\000"
 & "\000\000 \000\000\000\000\000\000\000\r\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000]\352\274A\000\000\000\0000000000000005\001"
 & "\0055\001\0061\023\000\000\00013\000\000\000\020\000\000\000\000\000\000"
 & "\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0005\001"
 & "\0105\001\0065\001\0065\001\0065\001\0061\f\000\000\0001\032\000\000\000"
 & "\003\000\000\000\000\000\000\000\f\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\0001\016\000\000\000\017\000\000\000\000\000\000\000\f"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001:\000\000\000"
 & "\033\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\0001\020\000\000\000\035\000\000\000\000\000\000\000"
 & "\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\322w\214"
 & "A\000\000\000\000005\001\0055\001\0061\036\000\000\0001\006\000\000\000"
 & "\013\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\0005\001\0105\001\0065\001\0065\001\0065\001\0061\f"
 & "\000\000\0001%\000\000\000\003\000\000\000\000\000\000\000\016\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\0001\016\000\000\000\021\000"
 & "\000\000\000\000\000\000\f\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\0001\017\000\000\000\035\000\000\000\000\000\000\000\002\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\0001\020\000\000\000";

CONST E16_3 =
   "\037\000\000\000\000\000\000\000\r\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\367\r\300A\000\000\000\00005\001\0055\001\0061\252"
 & "\000\000\0001\006\000\000\000\023\000\000\000\000\000\000\000\001\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\0005\001\0105\001\0065"
 & "\001\0065\001\0065\001\0061\f\000\000\0001\260\000\000\000\003\000\000\000"
 & "\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\0001\016\000\000\000\021\000\000\000\000\000\000\000\f\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\0001\017\000\000\000\035\000"
 & "\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\0001\020\000\000\000\037\000\000\000\000\000\000\000\r\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000Q\270\304A\000\000"
 & "\000\000000005\001\0055\001\0061=\000\000\0001\024\000\000\000\017\000\000"
 & "\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\0005\001\0105\001\0065\001\0065\001\0065\001\0061\f\000\000\000"
 & "1C\000\000\000\003\000\000\000\000\000\000\000\020\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\0001\016\000\000\000\023\000\000\000\000"
 & "\000\000\000\f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "1\033\000\000\000\037\000\000\000\000\000\000\000\001\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\0001\020\000\000\000 \000\000\000\000"
 & "\000\000\000\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "_\020\354@\000\000\000\000005\001\0055\001\0061\005\000\000\0001\037\000"
 & "\000\000\t\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\0005\001\0105\001\0065\001\0065\001\0065\001\006"
 & "1\f\000\000\0001\r\000\000\000\003\000\000\000\000\000\000\000\022\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\0001\016\000\000\000\025"
 & "\000\000\000\000\000\000\000\f\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\0001&\000\000\000!\000\000\000\000\000\000\000\002\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\0001\020\000\000\000#\000"
 & "\000\000\000\000\000\000\r\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000^`)A\000\000\000\0005\001\0055\001\0061\203\000\000\0001`\000"
 & "\000\000\f\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\0005\001\0105\001\0065\001\0065\001\0065\001\006"
 & "1\f\000\000\0001\212\000\000\000\003\000\000\000\000\000\000\000\016\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\016\000\000\000"
 & "\021\000\000\000\000\000\000\000\f\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\0001g\000\000\000\035\000\000\000\000\000\000\000\002\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\020\000\000\000"
 & "\037\000\000\000\000\000\000\000\r\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000|<:A\000\000\000\000000005\001\0055\001\0061F\000\000"
 & "\0001\024\000\000\000\016\000\000\000\000\000\000\000\001\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\0005\001\0105\001\0065\001\006"
 & "5\001\0065\001\0061\f\000\000\0001L\000\000\000\003\000\000\000\000\000"
 & "\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "1\016\000\000\000\023\000\000\000\000\000\000\000\f\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\0001\033\000\000\000\037\000\000\000"
 & "\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\0001\020\000\000\000 \000\000\000\000\000\000\000\r\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\241]\366@\000\000\000\0000"
 & "05\001\0055\001\0061)\000\000\0001\006\000\000\000\f\000\000\000\000\000"
 & "\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "5\001\0105\001\0065\001\0065\001\0065\001\0061\f\000\000\0001/\000\000\000"
 & "\003\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\0001\016\000\000\000\021\000\000\000\000\000\000\000"
 & "\f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\017\000"
 & "\000\000\035\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\0001\020\000\000\000\037\000\000\000\000\000"
 & "\000\000\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000Q"
 & "\270\304A\000\000\000\000005\001\0055\001\00612\000\000\0001\024\000\000"
 & "\000\007\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\0005\001\0105\001\0065\001\0065\001\0065\001\006"
 & "1\f\000\000\00019\000\000\000\003\000\000\000\000\000\000\000\020\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\0001\016\000\000\000\023"
 & "\000\000\000\000\000\000\000\f\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\0001\033\000\000\000\037\000\000\000\000\000\000\000\001\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\020\000\000\000"
 & " \000\000\000\000\000\000\000\r\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000_\020\354@\000\000\000\0000005\001\0055\001\0061O\000"
 & "\000\0001\024\000\000\000\021\000\000\000\000\000\000\000\001\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\0005\001\0105\001\0065\001"
 & "\0065\001\0065\001\0061\f\000\000\0001U\000\000\000\003\000\000\000\000"
 & "\000\000\000\022\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\0001\016\000\000\000\025\000\000\000\000\000\000\000\f\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\0001\033\000\000\000!\000\000\000"
 & "\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\0001\020\000\000\000\"\000\000\000\000\000\000\000\r\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\241]\366@\000\000\000\0000"
 & "0005\001\0055\001\0061\252\000\000\0001`\000\000\000\023\000\000\000\000"
 & "\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\0005\001\0105\001\0065\001\0065\001\0065\001\0061\f\000\000\0001\260\000"
 & "\000\000\003\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\0001\016\000\000\000\021\000\000\000\000\000"
 & "\000\000\f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001"
 & "g\000\000\000\035\000\000\000\000\000\000\000\002\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\0001\020\000\000\000\037\000\000\000\000"
 & "\000\000\000\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "Q\270DA\000\000\000\000000000000005\001\0055\001\0061\023\000\000\0001\037"
 & "\000\000\000\020\000\000\000\000\000\000\000\001\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\0005\001\0105\001\0065\001\0065\001\006"
 & "5\001\0061\f\000\000\0001\032\000\000\000\003\000\000\000\000\000\000\000"
 & "\f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\016\000"
 & "\000\000\017\000\000\000\000\000\000\000\f\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\0001&\000\000\000\033\000\000\000\000\000\000\000"
 & "\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\020\000"
 & "\000\000\035\000\000\000\000\000\000\000\r\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\254A%A\000\000\000\0000005\001\0055\001\006"
 & "1\036\000\000\0001`\000\000\000\013\000\000\000\000\000\000\000\001\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\0005\001\0105\001\006"
 & "5\001\0065\001\0065\001\0061\f\000\000\0001%\000\000\000\003\000\000\000"
 & "\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\0001";

CONST E16_4 =
   "\016\000\000\000\021\000\000\000\000\000\000\000\f\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\0001g\000\000\000\035\000\000\000\000\000"
 & "\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "1\020\000\000\000\037\000\000\000\000\000\000\000\r\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000P\2647A\000\000\000\000005\001\005"
 & "5\001\00612\000\000\0001\006\000\000\000\007\000\000\000\000\000\000\000"
 & "\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0005\001\010"
 & "5\001\0065\001\0065\001\0065\001\0061\f\000\000\00019\000\000\000\003\000"
 & "\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\0001\016\000\000\000\023\000\000\000\000\000\000\000\f\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\017\000\000\000"
 & "\037\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\0001\020\000\000\000!\000\000\000\000\000\000\000\r"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000M\342\272A\000"
 & "\000\000\0005\001\0055\001\0061s\000\000\00013\000\000\000\025\000\000\000"
 & "\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\0005\001\0105\001\0065\001\0065\001\0065\001\0061\f\000\000\0001y\000"
 & "\000\000\003\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\0001\016\000\000\000\023\000\000\000\000\000"
 & "\000\000\f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001"
 & ":\000\000\000\037\000\000\000\000\000\000\000\002\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\0001\020\000\000\000!\000\000\000\000\000"
 & "\000\000\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\230"
 & "G\222A\000\000\000\00000005\001\0055\001\0061=\000\000\0001\006\000\000"
 & "\000\017\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\0005\001\0105\001\0065\001\0065\001\0065\001\006"
 & "1\f\000\000\0001C\000\000\000\003\000\000\000\000\000\000\000\020\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\0001\016\000\000\000\023"
 & "\000\000\000\000\000\000\000\f\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\0001\017\000\000\000\037\000\000\000\000\000\000\000\002\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\020\000\000\000"
 & "!\000\000\000\000\000\000\000\r\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000M\342\272A\000\000\000\000005\001\0055\001\0061\005"
 & "\000\000\0001`\000\000\000\t\000\000\000\000\000\000\000\001\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\0005\001\0105\001\0065\001"
 & "\0065\001\0065\001\0061\f\000\000\0001\r\000\000\000\003\000\000\000\000"
 & "\000\000\000\022\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\0001\016\000\000\000\025\000\000\000\000\000\000\000\f\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\0001g\000\000\000!\000\000\000"
 & "\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\0001\020\000\000\000#\000\000\000\000\000\000\000\r\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\0008\3068A\000\000\000\0000000"
 & "05\001\0055\001\0061F\000\000\0001\006\000\000\000\016\000\000\000\000\000"
 & "\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "5\001\0105\001\0065\001\0065\001\0065\001\0061\f\000\000\0001L\000\000\000"
 & "\003\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\0001\016\000\000\000\023\000\000\000\000\000\000\000"
 & "\f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\017\000"
 & "\000\000\037\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\0001\020\000\000\000!\000\000\000\000\000\000"
 & "\000\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000%y\300"
 & "A\000\000\000\0000000005\001\0055\001\0061O\000\000\0001\006\000\000\000"
 & "\021\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\0005\001\0105\001\0065\001\0065\001\0065\001\0061\f"
 & "\000\000\0001U\000\000\000\003\000\000\000\000\000\000\000\022\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\0001\016\000\000\000\025\000"
 & "\000\000\000\000\000\000\f\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\0001\017\000\000\000!\000\000\000\000\000\000\000\002\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\0001\020\000\000\000#\000\000"
 & "\000\000\000\000\000\r\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000%y\300A\000\000\000\000005\001\0055\001\0061_\000\000\0001\204\000"
 & "\000\000\n\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\0005\001\0105\001\0065\001\0065\001\0065\001\006"
 & "1\f\000\000\0001f\000\000\000\003\000\000\000\000\000\000\000\f\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\0001\016\000\000\000\017"
 & "\000\000\000\000\000\000\000\f\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\0001\213\000\000\000\033\000\000\000\000\000\000\000\002\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\020\000\000\000"
 & "\035\000\000\000\000\000\000\000\r\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\340\233TA\000\000\000\000005\001\0055\001\0061j\000"
 & "\000\0001\204\000\000\000\006\000\000\000\000\000\000\000\001\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\0005\001\0105\001\0065\001"
 & "\0065\001\0065\001\0061\f\000\000\0001p\000\000\000\003\000\000\000\000"
 & "\000\000\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\0001\016\000\000\000\022\000\000\000\000\000\000\000\f\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\0001\213\000\000\000\036\000\000"
 & "\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\0001\020\000\000\000 \000\000\000\000\000\000\000\r\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\177\216UA\000\000\000\000"
 & "005\001\0055\001\0061s\000\000\0001\037\000\000\000\025\000\000\000\000"
 & "\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\0005\001\0105\001\0065\001\0065\001\0065\001\0061\f\000\000\0001y\000\000"
 & "\000\003\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\0001\016\000\000\000\023\000\000\000\000\000\000"
 & "\000\f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001&\000"
 & "\000\000\037\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\0001\020\000\000\000!\000\000\000\000\000\000"
 & "\000\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000^`)A\000"
 & "\000\000\00000005\001\0055\001\0061=\000\000\0001`\000\000\000\017\000\000"
 & "\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\0005\001\0105\001\0065\001\0065\001\0065\001\0061\f\000\000\000"
 & "1C\000\000\000\003\000\000\000\000\000\000\000\020\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\0001\016\000\000\000\023\000\000\000\000"
 & "\000\000\000\f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "1g\000\000\000\037\000\000\000\000\000\000\000\002\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\0001\020\000\000\000!\000\000\000\000\000"
 & "\000\000\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000Q"
 & "\270DA\000\000\000\000000000005\001\0055\001\0061)\000\000\0001\204\000"
 & "\000\000\f\000\000\000\000\000\000\000\001\000\000\000\000";

CONST E16_5 =
   "\000\000\000\000\000\000\000\000\000\000\0005\001\0105\001\0065\001\006"
 & "5\001\0065\001\0061\f\000\000\0001/\000\000\000\003\000\000\000\000\000"
 & "\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "1\016\000\000\000\021\000\000\000\000\000\000\000\f\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\0001\213\000\000\000\035\000\000\000"
 & "\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\0001\020\000\000\000\037\000\000\000\000\000\000\000\r\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000XdXA\000\000\000\000000"
 & "005\001\0055\001\0061O\000\000\0001`\000\000\000\021\000\000\000\000\000"
 & "\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "5\001\0105\001\0065\001\0065\001\0065\001\0061\f\000\000\0001U\000\000\000"
 & "\003\000\000\000\000\000\000\000\022\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\0001\016\000\000\000\025\000\000\000\000\000\000\000"
 & "\f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001g\000\000"
 & "\000!\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\0001\020\000\000\000#\000\000\000\000\000\000\000\r"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0008\3068A\000"
 & "\000\000\000005\001\0055\001\0061_\000\000\00013\000\000\000\n\000\000\000"
 & "\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\0005\001\0105\001\0065\001\0065\001\0065\001\0061\f\000\000\0001f\000"
 & "\000\000\003\000\000\000\000\000\000\000\f\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\0001\016\000\000\000\017\000\000\000\000\000\000"
 & "\000\f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001:\000"
 & "\000\000\033\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\0001\020\000\000\000\035\000\000\000\000\000"
 & "\000\000\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000u"
 & "\003\213A\000\000\000\00005\001\0055\001\0061\203\000\000\00013\000\000"
 & "\000\f\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\0005\001\0105\001\0065\001\0065\001\0065\001\0061\f"
 & "\000\000\0001\212\000\000\000\003\000\000\000\000\000\000\000\016\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\0001\016\000\000\000\021"
 & "\000\000\000\000\000\000\000\f\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\0001:\000\000\000\035\000\000\000\000\000\000\000\002\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\0001\020\000\000\000\037"
 & "\000\000\000\000\000\000\000\r\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\354\350\217A\000\000\000\00005\001\0055\001\0061j\000\000"
 & "\00013\000\000\000\006\000\000\000\000\000\000\000\001\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\0005\001\0105\001\0065\001\0065\001"
 & "\0065\001\0061\f\000\000\0001p\000\000\000\003\000\000\000\000\000\000\000"
 & "\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\016\000"
 & "\000\000\022\000\000\000\000\000\000\000\f\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\0001:\000\000\000\036\000\000\000\000\000\000\000"
 & "\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\020\000"
 & "\000\000 \000\000\000\000\000\000\000\r\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\030\242\213A\000\000\000\0000000000000005\001"
 & "\0055\001\0061\023\000\000\0001\204\000\000\000\020\000\000\000\000\000"
 & "\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "5\001\0105\001\0065\001\0065\001\0065\001\0061\f\000\000\0001\032\000\000"
 & "\000\003\000\000\000\000\000\000\000\f\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\0001\016\000\000\000\017\000\000\000\000\000\000\000"
 & "\f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\213\000"
 & "\000\000\033\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\0001\020\000\000\000\035\000\000\000\000\000"
 & "\000\000\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000_"
 & "\325VA\000\000\000\000005\001\0055\001\0061\036\000\000\00013\000\000\000"
 & "\013\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\0005\001\0105\001\0065\001\0065\001\0065\001\0061\f"
 & "\000\000\0001%\000\000\000\003\000\000\000\000\000\000\000\016\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\0001\016\000\000\000\021\000"
 & "\000\000\000\000\000\000\f\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\0001:\000\000\000\035\000\000\000\000\000\000\000\002\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\0001\020\000\000\000\037\000"
 & "\000\000\000\000\000\000\r\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\020\364\215A\000\000\000\00005\001\0055\001\0061\252\000\000"
 & "\00013\000\000\000\023\000\000\000\000\000\000\000\001\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\0005\001\0105\001\0065\001\0065\001"
 & "\0065\001\0061\f\000\000\0001\260\000\000\000\003\000\000\000\000\000\000"
 & "\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\016"
 & "\000\000\000\021\000\000\000\000\000\000\000\f\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\0001:\000\000\000\035\000\000\000\000\000\000"
 & "\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\020"
 & "\000\000\000\037\000\000\000\000\000\000\000\r\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000<\212\223A\000\000\000\00000000005\001\005"
 & "5\001\0061\005\000\000\0001\024\000\000\000\t\000\000\000\000\000\000\000"
 & "\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0005\001\010"
 & "5\001\0065\001\0065\001\0065\001\0061\f\000\000\0001\r\000\000\000\003\000"
 & "\000\000\000\000\000\000\022\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\0001\016\000\000\000\025\000\000\000\000\000\000\000\f\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\033\000\000\000"
 & "!\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\0001\020\000\000\000\"\000\000\000\000\000\000\000\r\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\241]\366@\000\000"
 & "\000\0005\001\0055\001\0061\203\000\000\0001\037\000\000\000\f\000\000\000"
 & "\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\0005\001\0105\001\0065\001\0065\001\0065\001\0061\f\000\000\0001\212"
 & "\000\000\000\003\000\000\000\000\000\000\000\016\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\0001\016\000\000\000\021\000\000\000\000"
 & "\000\000\000\f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "1&\000\000\000\035\000\000\000\000\000\000\000\002\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\0001\020\000\000\000\037\000\000\000\000"
 & "\000\000\000\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "CN)A\000\000\000\000000005\001\0055\001\0061F\000\000\0001\204\000\000\000"
 & "\016\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\0005\001\0105\001\0065\001\0065\001\0065\001\0061\f"
 & "\000\000\0001L\000\000\000\003\000\000\000\000\000\000\000\020\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\0001\016\000\000\000\023\000"
 & "\000\000\000\000\000\000\f\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\0001\213\000\000\000\037\000\000\000\000\000\000\000\002\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\0001\020\000\000\000!";

CONST E16_6 =
   "\000\000\000\000\000\000\000\r\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\354\221WA\000\000\000\000005\001\0055\001\0061)\000\000"
 & "\00013\000\000\000\f\000\000\000\000\000\000\000\001\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\0005\001\0105\001\0065\001\0065\001"
 & "\0065\001\0061\f\000\000\0001/\000\000\000\003\000\000\000\000\000\000\000"
 & "\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\016\000"
 & "\000\000\021\000\000\000\000\000\000\000\f\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\0001:\000\000\000\035\000\000\000\000\000\000\000"
 & "\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\020\000"
 & "\000\000\037\000\000\000\000\000\000\000\r\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000<\212\223A\000\000\000\000005\001\0055\001\006"
 & "12\000\000\0001\204\000\000\000\007\000\000\000\000\000\000\000\001\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\0005\001\0105\001\006"
 & "5\001\0065\001\0065\001\0061\f\000\000\00019\000\000\000\003\000\000\000"
 & "\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\0001\016\000\000\000\023\000\000\000\000\000\000\000\f\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\0001\213\000\000\000\037\000"
 & "\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\0001\020\000\000\000!\000\000\000\000\000\000\000\r\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000XdXA\000\000\000\000"
 & "00005\001\0055\001\0061_\000\000\0001\037\000\000\000\n\000\000\000\000"
 & "\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\0005\001\0105\001\0065\001\0065\001\0065\001\0061\f\000\000\0001f\000\000"
 & "\000\003\000\000\000\000\000\000\000\f\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\0001\016\000\000\000\017\000\000\000\000\000\000\000"
 & "\f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001&\000\000"
 & "\000\033\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\0001\020\000\000\000\035\000\000\000\000\000\000"
 & "\000\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\231\213"
 & "#A\000\000\000\000005\001\0055\001\0061j\000\000\0001\037\000\000\000\006"
 & "\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\0005\001\0105\001\0065\001\0065\001\0065\001\0061\f\000"
 & "\000\0001p\000\000\000\003\000\000\000\000\000\000\000\017\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\0001\016\000\000\000\022\000\000"
 & "\000\000\000\000\000\f\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\0001&\000\000\000\036\000\000\000\000\000\000\000\002\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\0001\020\000\000\000 \000\000\000"
 & "\000\000\000\000\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000;F$A\000\000\000\00005\001\0055\001\0061\252\000\000\0001\037\000\000"
 & "\000\023\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\0005\001\0105\001\0065\001\0065\001\0065\001\006"
 & "1\f\000\000\0001\260\000\000\000\003\000\000\000\000\000\000\000\016\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\016\000\000\000"
 & "\021\000\000\000\000\000\000\000\f\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\0001&\000\000\000\035\000\000\000\000\000\000\000\002\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\020\000\000\000"
 & "\037\000\000\000\000\000\000\000\r\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000H\f1A\000\000\000\000005\001\0055\001\0061s\000\000"
 & "\0001\204\000\000\000\025\000\000\000\000\000\000\000\001\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\0005\001\0105\001\0065\001\006"
 & "5\001\0065\001\0061\f\000\000\0001y\000\000\000\003\000\000\000\000\000"
 & "\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "1\016\000\000\000\023\000\000\000\000\000\000\000\f\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\0001\213\000\000\000\037\000\000\000"
 & "\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\0001\020\000\000\000!\000\000\000\000\000\000\000\r\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\354\221WA\000\000\000\0000"
 & "0\010\000\000\000\000\000\000\000\300\000\000\000\000\000\000\0003\000\000"
 & "\000\000\000\000\000N\000\000\000\000\000\000\0005\001\003\005\000\000\000"
 & "\000\000\000\0005\001\004 \000\000\0005\001\0051=\000\000\0005\001\000\200"
 & "[\244\355\034\366Y\032B`\345\274\266\363=?{\024N?\000\000\200\276\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\001"
 & "\001\001\001\001\001\001\001\000\001\001\000\001\001\001\000\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\000";

CONST E16_7 =
   "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\000\000\000\000\232\231\031?\232\231\031?\000\000"
 & "\000\000\232\231\031?\232\231\031?\232\231\031?\000\000\000\000\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?00000000000000000000000"
 & "00000000005\001\000\311\005\356G\216\333a\035\376\324x>h\221\355>\230n\022"
 & "?\217\302u\2745\001\n\250\306\213>\'1\010?;\337\017?\236\357\247>5\001\n"
 & "\'1\010>u\223\030?\201\225#?o\022\003\2755\001\n\033/\335=u\223\030?\325"
 & "x)?%\006\001\2765\001\nL7\t>\020X\031?d;\037?\217\302u\2745\001\n\016-\262"
 & "=\341z\024?\f\002\013?\217\302u\2745\001\n`\345\220>\244p\375>;\337\017"
 & "?\236\357\247>5\001\n\211A\240>\230n\022?d;\037?\033/\335\2755\001\n\272"
 & "I\f>\203\300\312>d;\037?\033/\335\2755\001\n\207\026Y>\341z\024?Zd\033?"
 & "\201\225\203>5\001\n\223\030\004>\341z\024?\327\243\360>X94=5\001\n\234"
 & "\304 >\244p\275>#\333\371=B`\345\2755\001\n\223\030\004>\341z\024?`\345"
 & "\220>h\221m>5\001\nF\266s>\201\225\303>d;\337=\217\302u\2745\001\nB`\345"
 & "=\276\237\032?%\006!?\n\327\243\2755\001\n-\262\035>33\023?d;\037?\217\302"
 & "u\2745\001\n9\264\310=\n\327\003?d;\037?\000\000\000\0005\001\n)\\\217="
 & "sh\021?d;\037?\000\000\000\0005\001\n\236\357\247=^\272\t?d;\037?\217\302"
 & "u\2745\001\n\033/\335=\372~\n?d;\037?\000\000\000\0005\001\n\203\300\312"
 & "=\264\310\026?Zd\033?\217\302u\2745\001\nR\270\036>%\006!?d;\037?\217\302"
 & "u\2745\001\n5^:>\010\254\034?Zd\033?\000\000\000\0005\001\n\002+\007>+\207"
 & "\026?d;\037?\217\302u\2745\001\n\311v\276=\252\361\022?d;\037?\217\302u"
 & "\2745\001\nF\266s>\301\312\341>\270\036\305>\217\302u\2745\001\n\234\304"
 & " >\301\312\341>\270\036\305>B`\345\2755\001\n\246\233\304=\366(\034?\374"
 & "\251\361>1\010,=5\001\nd;\337=\232\231\031?\022\203\300>\337O\r>5\001\n"
 & "{\024\256=\020X\031?\374\251\361>1\010,=5\001\n\370Sc>}?\025?\230n\022?"
 & "\217\302u\2745\001\nJ\f\002>\364\375\024?d;\037?\217\302u\2745\001\n\246"
 & "\233D;Zd\033?;\337\017?\000\000\000\0005\001\n\305 0=-\262\035?;\337\017"
 & "?\000\000\000\0005\001\n\311v\276=\024\256\'?\341z\024?\274t\223\2745\001"
 & "\n\305 0=\270\036%?;\337\017?\000\000\000\0005\001\n\207\026Y=\303\365("
 & "?;\337\017?\000\000\000\0005\001\n\207\026Y=\303\365(?;\337\017?\000\000"
 & "\000\0005\001\n\347\373\251=\270\036%?\341z\024?\274t\223\2745\001\no\022"
 & "\003=;\337/?;\337\017?\000\000\000\0005\001\n\246\233\304=\356|\037?;\337"
 & "\017?\000\000\000\0005\001\n\364\375T=)\\/?;\337\017?\274t\223\2745\001"
 & "\n\343\245\033=\250\306+?;\337\017?\000\000\000\0005\001\n\022\203@=Zd\033"
 & "?;\337\017?\000\000\000\0005\001\no\022\203;=\n7?;\337\017?\000\000\000"
 & "\0005\001\nB`\345;\242E6?;\337\017?\364\375T\2745\001\n\022\203\300=\000"
 & "\000 ?\341z\024?\274t\223\2745\001\n\301\312\241=/\335$?;\337\017?\000\000"
 & "\000\0005\001\n\\\217\302=\000\000 ?\341z\024?\337O\r\2765\001\n\343\245"
 & "\033=\207\026\031?;\337\017?\000\000\000\0005\001\n\343\245\233=ff&?\341"
 & "z\024?\n\327\243\2745\001\n\033/\335=q=*?;\337\017?\000\000\000\0005\001"
 & "\n\000\000\000>F\2663?;\337\017?\274t\223\2745\001\n=\n\327=\207\0269?;"
 & "\337\017?\364\375T\2745\001\n\207\026\331=\376\3248?;\337\017?\364\375T"
 & "\2745\001\n\177j\274<\315\314,?;\337\017?\000\000\000\0005\001\n\'1\010"
 & ">\205\3531?;\337\017?\000\000\000\0005\001\n\305 \260=\366(\034?;\337\017"
 & "?\000\000\000\0005\001\nm\347{>\252\361\022?d;\037?\033/\335\2755\001\n"
 & "\333\371~>\262\235\357>%\006!?\n\327\243\2755\001\nq=\n>V\016\355>d;\037"
 & "?\033/\335\2755\001\n333>\242E\026?d;\037?}?\265>5\001\n\033/\335\274\006"
 & "\201\025?\232\231\231\275\000\000\000\2765\001\n\262\235\257>\347\373\351"
 & ">;\337\017?\236\357\247>5\001\n\343\245\233=\374\251\021?\301\312\341>\217"
 & "\302u\2745\001\nh\221\355<\000\000 ?%\006!?\217\302u\2745\001\n\207\026"
 & "\331=\343\245\033?\301\312\341>\217\302u\2745\001\n{\024\256=\n\327#?%\006"
 & "!?\217\302u\2745\001\n\207\026\331=\207\026\031?\301\312\341>\217\302u\274"
 & "5\001\n\325x\351=\325x)?%\006!?\000\000\000\0005\001\n#\333y=\'1(?\301\312"
 & "\341>\234\304 \2765\001\n\002+\007=P\215\027?%\006!?\000\000\000\0005\001"
 & "\n\\\217\302=\n\327\003?\'1(?\000\000\000\0005\001\n\364\375T=\315\314\f"
 & "?\'1(?\234\304 \2765\001\nh\221m=J\f\"?%\006!?\000\000\000\0005\001\n\\"
 & "\217\302=\n\327\003?%\006!?\000\000\000\000";

CONST E16_8 =
   "5\001\n\n\327\243\273\244p\035?\301\312\341>\000\000\000\0005\001\n\364"
 & "\375\324<\217\302\025?\301\312\341>\000\000\000\0005\001\n`\345\320=+\207"
 & "\026?\301\312\341>\217\302u\2745\001\n\246\233\304\274H\341\032?\301\312"
 & "\341>\234\304 \2765\001\n{\024\256=\215\227.?\301\312\341>\234\304 \276"
 & "5\001\n\217\302u=\345\320\"?\301\312\341>\000\000\000\0005\001\nw\276\237"
 & "=\006\201\025?\301\312\341>\217\302u\2745\001\n\f\002+>\262\235\017?\262"
 & "\235\017?\217\302u\2745\001\n\027\331\316=\230n\022?\254\034\332>\217\302"
 & "u\2745\001\n\354Q\270=\004V.?\254\034\332>\n\327#\2745\001\n\343\245\233"
 & "=\205\3531?\254\034\332>\n\327#\2745\001\n\n\327\243<\024\256\'?\254\034"
 & "\332>\000\000\000\0005\001\no\022\203\273\027\331.?\254\034\332>\234\304"
 & " \2765\001\n\203\300\312=\331\316\027?\254\034\332>\000\000\000\0005\001"
 & "\n\215\227n>\374\251\021?d;\037?\033/\335\2755\001\n\370Sc>\354Q\370>\000"
 & "\000@?\000\000\200\2765\001\n)\\\017>X9\364>d;\037?\033/\335\2755\001\n"
 & "h\221\355=\232\231\031?\n\327\243>^\272I>000000000000000005\001\n\\\217"
 & "\302=\n\327\003?\254\034\332>\000\000\000\0005\001\n+\207\226>\331\316\367"
 & ">1\010,?\311v\376>5\001\n\016-\262>\010\254\034?1\010,?\311v\376>5\001\n"
 & "\372~j>j\274\024?\213l\'?X9\364>5\001\n\207\026Y>%\006!?\321\"\033?5^\372"
 & ">5\001\nh\221m>\232\231\031?\327\243\020?ff\006?5\001\n\027\331\216>\274"
 & "t\023?m\347\033?\211A\000?5\001\n\354Q\270>\215\227\356>\341z\024?X9\364"
 & ">5\001\n\335$\206>\205\353\021?\354Q\030?m\347\373>05\001\n\347\373\251"
 & ">\000\000\000?\022\203 ?V\016\355>5\001\n^\272I>\305 \260>\n\327#<\276\237"
 & "\032\27605\001\nj\274t>\027\331.?1\010,?\311v\376>5\001\n\317\367S>\016"
 & "-\262>\000\000\000\000\276\237\032\2765\001\n\335$\206>\033/\035?\226C+"
 & "?m\347\373>05\001\nfff>\n\327\343>\366(\334>\234\304 \2765\001\n\276\237"
 & "\032>+\207\026?\033/\035?9\264H\2755\001\n\266\363\375=\333\371\036?\177"
 & "j\034?1\010\254\2745\001\n\022\203\300=\234\304 ?7\211\001?h\221m=5\001"
 & "\n\217\302\365=sh1?;\337\017?\000\000\000\0005\001\nF\266s>\305 \360>\315"
 & "\314,?333\2765\001\n\364\375\324==\n\027?\341z\024?w\276\237\2751\270\002"
 & "\000\0005\001\n\207\026Y=\203\300*?\341z\024?\274t\223\2745\001\n\031\004"
 & "V>o\022\003?\341z\024?\333\371~>5\001\n\177j\274=y\351&?\035Z\344>)\\\217"
 & "=5\001\nR\270\036>\307K\027?\221\355\274>\033/\335=5\001\n\343\245\033>"
 & "\027\331\016?\205\353\221>D\213l>5\001\n\207\026Y=\203\300*?\341z\024?\274"
 & "t\223\2741\265\002\000\0005\001\n\321\"[>\274t\023?d;\037?^\272\211>5\001"
 & "\n\246\233\304=b\020\030?\027\331\016?X94=5\001\n\037\205k>\303\365\010"
 & "?d;\037?\333\371~>5\001\n\254\034Z>\211A\000?d;\037?\217\302u>1\262\002"
 & "\000\0005\001\n\274t\223=\230n\022?\254\034\332>\234\304 \2765\001\n\315"
 & "\314\314=\256G!?;\337\017?w\276\237\2755\001\n\315\314\214>?5\336>\213l"
 & "\247>7\211A>1\272\002\000\0005\001\nD\213l>Zd\373>d;\037?\333\371~>5\001"
 & "\n=\nW>\303\365\010?\341z\024?\333\371~>5\001\nh\221m=?5\036?\035Z\344>"
 & ")\\\217=5\001\n\270\036\205=D\213,?q=*?\325xi\2755\001\n\270\036\205=\226"
 & "C+?q=*?\325xi\2755\001\n\006\201\225=9\264(?\372~*?B`e\2755\001\n=\n\327"
 & "=\215\227\356>\366(\334>\234\304 \2765\001\n\246\233D;Zd\033?\f\002K?\000"
 & "\000\000\0005\001\n\246\233D;\260r(?\f\002K?\000\000\000\0005\001\n\246"
 & "\233D;Zd\033?ffF?\000\000\000\0005\001\n\246\233D;\236\357\'?Zd;?\000\000"
 & "\000\0005\001\n\246\233D;Zd\033?\321\";?\000\000\000\0005\001\n\246\233"
 & "D;Zd\033?\234\304@?\000\000\000\0005\001\n\246\233D;\024\256\'?;\337\017"
 & "?\000\000\000\0005\001\n\311v\276=\260r(?\341z\024?\276\237\032\2765\001"
 & "\n\207\026Y=\303\365(?\f\002K?\000\000\000\0005\001\n\207\026Y=\f\002+?"
 & "\f\002K?\000\000\000\0005\001\n\207\026Y=\303\365(?ffF?\000\000\000\000"
 & "5\001\n\207\026Y=\303\365(?\321\";?\000\000\000\0005\001\n\246\233\304="
 & "\356|\037?\f\002K?\000\000\000\0005\001\n\246\233\304=\370S#?\f\002K?\000"
 & "\000\000\0005\001\n\246\233\304=\356|\037?ffF?\000\000\000\0005\001\n\246"
 & "\233\304=\356|\037?\321\";?\000\000\000\0005\001\n\305 0=\270\036%?;\337"
 & "\017?\000\000\000\0005\001\nB`\345;\242E6?Zd;?\364\375T\2745\001\n\022\203"
 & "\300=\000\000 ?\f\002K?\274t\223\2745\001\n\022\203\300=\370S#?\f\002K?"
 & "\274t\223\2745\001\n\022\203\300=\000\000 ?ffF?\274t\223\2745\001\n\022"
 & "\203\300=\236\357\'?Zd;?\274t\223\2745\001\n\022\203\300=\000\000 ?\321"
 & "\";?\274t\223\2745\001\n\252\361\322=Zd\033?\327\243\360>\305 0=5\001\n"
 & "\022\203\300=\000\000 ?%\006!?\n\327\243\2755\001\n\000\000\000>F\2663?"
 & "\f\002K?\274t\223\2745\001\n\000\000\000>F\2663?\f\002K?\274t\223\2745\001"
 & "\n\000\000\000>F\2663?ffF?\274t\223\2745\001\n\000\000\000>F\2663?\321\""
 & ";?\274t\223\2745\001\n\'1\010>\205\3531?\f\002K?\000\000\000\0005\001\n"
 & "\301\312\241=\321\"\033?;\337\017?\000\000\000\0005\001\n\246\233D=\266"
 & "\363\035?%\006!?\217\302u\2745\001\n\343\245\233=\374\251\021?1\010,?\217"
 & "\302u\2745\001\n\343\245\233=\010\254\034?1\010,?\217\302u\2745\001\n\343"
 & "\245\233=j\274\024?\213l\'?\217\302u\2745\001\n\343\245\233=%\006!?\321"
 & "\"\033?\217\302u\2745\001\n\343\245\233=\205\353\021?\354Q\030?\217\302"
 & "u\2745\001\n\343\245\233=\374\251\021?\022\203 ?\217\302u\2745\001\n\236"
 & "\357\'=\211A ?\301\312\341>\217\302u\2745\001\n\207\026\331=\033/\035?\301"
 & "\312\341>\276\237\032\2765\001\n\207\026\331=\207\026\031?1\010,?\217\302"
 & "u\2745\001\n\207\026\331=\010\254\034?1\010,?\217\302u\2745\001\n\207\026"
 & "\331=\207\026\031?\213l\'?\217\302u\2745\001\n\207\026\331=\207\026\031"
 & "?\354Q\030?\217\302u\2745\001\n";

CONST E16_9 =
   "\\\217\302=\n\327\003?1\010,?\000\000\000\0005\001\n\\\217\302=\010\254"
 & "\034?1\010,?\000\000\000\0005\001\n\\\217\302=V\016\r?\213l\'?\000\000\000"
 & "\0005\001\n\\\217\302=q=\n?\354Q\030?\000\000\000\0005\001\n`\345\320=\201"
 & "\225#?%\006!?\217\302u\2745\001\n\364\375\324<%\006!?\321\"\033?\000\000"
 & "\000\0005\001\n`\345\320=+\207\026?1\010,?\217\302u\2745\001\n`\345\320"
 & "=\010\254\034?1\010,?\217\302u\2745\001\n`\345\320=+\207\026?\213l\'?\217"
 & "\302u\2745\001\n`\345\320=%\006!?\321\"\033?\217\302u\2745\001\n`\345\320"
 & "=+\207\026?\354Q\030?\217\302u\2745\001\n\226C\013>!\260\022?\240\032\357"
 & ">\246\233D=5\001\n`\345\320=+\207\026?7\211\001?\n\327\243\2755\001\n\027"
 & "\331\316=\230n\022?1\010,?\217\302u\2745\001\n\027\331\316=\254\034\032"
 & "?1\010,?\217\302u\2745\001\n\027\331\316=\230n\022?\213l\'?\217\302u\274"
 & "5\001\n\027\331\316=\230n\022?\354Q\030?\217\302u\2745\001\no\022\203\273"
 & "\027\331.?1\010,?\234\304 \2765\001\n\246\233\304\274H\341\032?%\006!?\234"
 & "\304 \2765\001\no\022\203\273\027\331.?\354Q\030?\234\304 \2760005\001\005"
 & "1j\000\000\0005\001\t\354Q8\276\037\205\213?\256G\201?\031\004\226\276\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000"
 & "\001\001\001\001\001\000\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\200>\372~\252>+\2076?\000\000\000?D\213\f?"
 & "}?U?\002+G?\234\304\340>\372~\252>\372~\252>\000\000\000?D\213\f?\000\000"
 & "\200>D\213\f?\000\000\200>\004V\216>\000\000\000?\000\000\000?\000\000\000"
 & "?\000\000\000?\000\000\000?\000\000\000?\000\000\000?\000\000\000?\000\000"
 & "\000?\000\000\000?\004V\216>\004V\216>D\213\f?D\213\f?D\213\f?\370S\343"
 & ">D\213\f?\376\3248?\203\300*?\376\3248?\010\254\034?\177j\034?\370SC?5^"
 & "\032?\376\3248?\372~\252>7\211!?\376\3248?\262\235/?\201\225c?\376\3248"
 & "?\376\3248?\246\233D?-\262=?\004V\016?P\215\027?\177j\034?\327\2430?\234"
 & "\304\340>\246\233D?\270\036%?\037\205K?\177j\034?\372~\252>\221\355\\?\372"
 & "~\252>\260r(?\000\000\000?\000\000\000?7\211!?D\213\f?D\213\f?\221\355\374"
 & ">\234\304\340>B`\005?\230n\322>5^\032?\260r\250>5^\032?D\213\f?D\213\f?"
 & "\274t\023?B`\005?D\213\f?D\213\f?B`\005?D\213\f?5^\032?\234\304\340>\274"
 & "t\023?+\2076?\262\235/?\177j\374>\262\235/?\221\355\374>\217\302\365>\315"
 & "\314L>\217\302\365>D\213\f?\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000R\270"
 & "\036?\221\355|>D\213\f?\f\002+>+\2076?\000\000\000?\234\304@?\234\304@?"
 & "\234\304@?\234\304@?B`\205?\010\254|?5^\032?\010\254|?5^\032?\315\314\314"
 & ">D\213\f?\230n\322>D\213\f?D\213\f?+\2076?\221\355\374>\037\205\353>D\213"
 & "\f?D\213\f?D\213\f?D\213\f?\000\000\200?5^\032?\000\000\200?\260r(?!\260"
 & "R?\262\235/?\037\205K?\010\254|?\246\233D?\246\233D?!\260R?\246\233D?\246"
 & "\233D?+\2076?+\2076?+\2076?+\2076?+\2076?+\2076?+\2076?\246\233D?+\2076"
 & "?q=J?q=J?\n\327c?!\260R?D\213\f?\000\000\200>+\2076?5^\032?5^\032?B`\205"
 & "?\010\254|?5^\032?\010\254|?5^\032?\221\355\374>\260r\250>q=J?q=J?L7I?+"
 & "\2076?\246\233\304>\246\233\304>\246\233\304>\246\233\304>\000\000\000\000"
 & "\246\233\304>\221\355\374>\221\355\374>\221\355\374>\221\355\374>\000\000"
 & "\000\000\260r\250>\272I\214>\262\235/?\262\235/?\262\235/?\246\233\304>"
 & "\246\233\304>\246\233\304>\246\233\304>\246\233\304>\246\233\304>\221\355"
 & "\374>\221\355\374>\221\355\374>\000\000\000\000000000000000000000000000"
 & "0000000005\001\no\022\003>\217\302u>1\010,?\226C\213\2745\001\n\266\363"
 & "\375<\004V.?\341z4?\000\000\000\0005\001\n\n\327\243<\242E\366>\272I,?o"
 & "\022\203\2745\001\n\315\314\314<j\274\364>\364\3754?\000\000\000\0005\001"
 & "\n%\006\201=B`E?\024\256\'?\274t\023\2755\001\n\236\357\'=\000\000@?L7)"
 & "?\274t\223\2745\001\n\246\233D=\317\367\323>\000\000\000?\226C\213\2745"
 & "\001\n\207\026Y=\232\231\231>\272I,?\201\225C\2765\001\n\217\302\365<\362"
 & "\322\215>\272I,?\201\225C\2765\001\n\270\036\205=\276\237\332>V\016\r?L"
 & "7\t>5\001\n\n\327#<\347\373\t?\260r\010?\000\000\000\0005\001\nB`e=\360"
 & "\247F>\364\375\324=\343\245\033\2765\001\nX94<\303\365\010?\274t\223>\215"
 & "\227n>5\001\n\337O\215=\020X9>\\\217\302=\226C\213\2745\001\n\000\000\000"
 & "\000J\f\202>B`%";

CONST E16_10 =
   "?\274t\223\2745\001\n\177j\274<\351&\361>)\\/?\226C\213\2745\001\n\262\235"
 & "\357=\024\256\307>\272I,?\000\000\000\0005\001\n\315\314\314<33\363>\262"
 & "\235/?\000\000\000\0005\001\nw\276\037=R\270\336>)\\/?\226C\213\2745\001"
 & "\no\022\203<\305 \360>)\\/?\000\000\000\0005\001\nh\221\355<\345\320\342"
 & ">)\\/?\226C\213\2745\001\n\274t\023=\240\032\357>)\\/?\226C\213\2745\001"
 & "\n\246\233\304<B`\345>\272I,?o\022\203\2745\001\n\033/]=\256G\341>)\\/?"
 & "\274t\223\2745\001\n\266\363\375<\037\205\353>)\\/?\274t\223\2745\001\n"
 & "T\343\245=\313\241E>\037\205\353>\226C\213\2745\001\n\347\373\251=\323M"
 & "b>\037\205\353>\343\245\033\2765\001\n\364\375\324<T\343\005?\313\241\005"
 & "?\000\000\000\0005\001\nX94<\325x\t?\024\256\307>Nb\020>5\001\n\364\375"
 & "\324<T\343\005?\313\241\005?\000\000\000\0005\001\n)\\\217=\252\361\322"
 & ">\262\235/?\226C\213\2745\001\nX94<\325x\t?33\363>\000\000\000\0005\001"
 & "\no\022\203;\240\032/?\272I,?\000\000\000\0005\001\nh\221\355<P\215\027"
 & "?\272I,?\000\000\000\0005\001\n\274t\023\274X94?\272I,?\000\000\000\000"
 & "5\001\n\246\233\304;\343\245\033?\305 0?\000\000\000\0005\001\no\022\003"
 & "=\266\363\035?\272I,?\000\000\000\0005\001\n\364\375\324<-\262=?\272I,?"
 & "\000\000\000\0005\001\n\246\233\304<m\347\033?\272I,?\000\000\000\0005\001"
 & "\nw\276\037=\276\237:?\272I,?\000\000\000\0005\001\no\022\003=\301\312\241"
 & ">\272I,?\000\000\000\0005\001\n\274t\223<\356|\037?Nb0?\274t\223\2745\001"
 & "\n)\\\017=\376\3248?\272I,?\000\000\000\0005\001\n\246\233\304;{\024.?\305"
 & " 0?\000\000\000\0005\001\nB`\345<o\022c?\272I,?\000\000\000\0005\001\nh"
 & "\221\355<\354Q8?\272I,?o\022\003\2745\001\n\236\357\'==\n7?)\\/?\226C\213"
 & "\2745\001\n\315\314\314<R\270>?\272I,?\000\000\000\0005\001\n\236\357\'"
 & "==\n7?)\\/?\226C\213\2745\001\nB`\345<\305 \020?\272I,?\000\000\000\000"
 & "5\001\n\n\327\243;\264\310\026?\272I,?\000\000\000\0005\001\n\002+\007="
 & "Zd\033?\272I,?\000\000\000\0005\001\no\022\003\274\374\2511?\272I,?\000"
 & "\000\000\0005\001\n\n\327#=d;\337>\000\000\000?\215\227n\2765\001\n\226"
 & "C\013=\177j<?\305 0?\000\000\000\0005\001\n\n\327#=\020X\031?\272I,?\000"
 & "\000\000\0005\001\n\217\302u<\236\357G?\240\032/?\000\000\000\0005\001\n"
 & "X94=\345\320\"?\272I,?\000\000\000\0005\001\n\305 \260=\207\026\231>D\213"
 & ",?R\270\036\2765\001\ny\351&>\274t3?j\274\364>\000\000\000\0005\001\n\002"
 & "+\007=m\347{>D\213,?R\270\036\2765\001\n\217\302u<y\351&?D\213,?\000\000"
 & "\000\0005\001\no\022\003\273\022\203\000?\252\361R\276%\006\201\2765\001"
 & "\n\217\302\365>\037\205\213?\203\300j?7\211a?5\001\n\236\357\'=d;\037?\000"
 & "\000\000?\274t\223\2745\001\n#\333y=\n\327\003?-\262=?\035Zd\2765\001\n"
 & "\246\233D<\313\241\005?\356|\377>D\213l\2765\001\n\n\327#=\242E\366>\244"
 & "p=?\343\245\233\2745\001\nX9\264<\276\237\332>\022\203\000?\343\245\233"
 & "\2745\001\n\033/\335<H\341\372>\250\306+?B`e\2765\001\n\n\327\243;\331\316"
 & "\367>\356|\377>fff\2765\001\n\000\000\000\000y\351\006?\201\225\003?\027"
 & "\331N\2765\001\n\000\000\000\000\254\034\232>\234\304\000?\226C\213\274"
 & "5\001\n\274t\023=\242E\026?\356|\377>B`e\2765\001\n\002+\007=\027\331\016"
 & "?\211A\000?\000\000\000\0005\001\n\246\233\304<\272I\f?\033/=?\226C\213"
 & "\2745\001\n\002+\007=\351&\021?\000\000\000?\035Zd\2765\001\n\274t\023\274"
 & "33\363>\301\312\001?o\022\203\2745\001\n)\\\017=\211A\000?\356|\377>\343"
 & "\245\233\2745\001\n\n\327#<\024\256\007?\020X\371>\343\245\233\2745\001"
 & "\n\305 0=\354Q\370>\327\2430?\226C\213\2745\001\n\315\314L=H\341\372>\356"
 & "|\377>\037\205k\2765\001\n\217\302\365<+\207\026?\000\000\000?1\010\254"
 & "\2745\001\n\n\327#<\031\004\326>\000\000\000?\343\245\233\2745\001\nB`\345"
 & ";\303\365\010?\301\312\001?\274t\223\2745\001\n\246\233D<\250\306+?}?\025"
 & "?\274t\223\2745\001\n1\010,=\240\032/?\000\000\000?\226C\213\2745\001\n"
 & "\033/\335<\305 \360>\223\030D?B`e\2765\001\n\246\233D<\274t3?\000\000\000"
 & "?\325xi\2765\001\n\217\302u=\240\032\357>7\211A?fff\2765\001\nh\221m=\226"
 & "C\313>\272I,?Zd;\2765\001\n\270\036\205=q=\n>\272I,?}?5\2765\001\n\301\312"
 & "\241=\031\004\326>\272I,?Zd;\2765\001\n\226C\213<\213l\007?\033/\235>;\337"
 & "O>00000000000000000000000000000000005\001\no\022\003\273\366(\034?)\\/?"
 & "\000\000\000\0005\001\n\033/\335<\325xi>\366(<?\f\002\353>5\001\nh\221\355"
 & "<\360\247\006?\201\225#?\000\000\000\0005\001\n\354Q8\276{\024\256>\337"
 & "O-?\246\233D\2745\001\n\364\375\324<\305 0?\027\331\316>\266\363\375=5\001"
 & "\no\022\003;\221\355\374>\262\235/?\313\241E\2765\001\n\305 \260=\303\365"
 & "(?\260r\010?\364\375\324\2745\001\nsh\021>\232\231\031?\315\314\f?\274t"
 & "\023\2755\001\n\262\235\357=7\211!?\'1\010?\002+\007\2755\001\n\213l\347"
 & "=%\006!?\272I\f?\274t\023\2755\001\n\246\233\304<o\022\203?\345\320\002"
 & "?\217\302u\2745\001\no\022\003=\351&q?\345\320\002?\217\302u\2745\001\n"
 & "\354Q8=\016-\022?\303\365h?\000\000\000\0005\001\n9\264H=\006\201u?\345"
 & "\320\002?\217\302u\2745\001\n\354Q8=\016-\022?\370Sc?X9\264\2745\001\n\315"
 & "\314L=33\263>)\\/?\270\036\305>5\001\n\n\327#<\347\373\t?\270\036%?\000"
 & "\000\000\0005\001\n\n\327\243<\274t\323>\010\254<?\f\002\353>5\001\nh\221"
 & "\355<\360\247\006?\201\225#?\000\000\000\0005\001\n\226C\213<\260r\010?"
 & "\335$\006?o\022\003<5\001\n\033/\335<\201\225#?\027\331\316>m\347\373=5"
 & "\001\n\364\375\324<D\213\354>\333\371>?\n\327\243\2745\001\n\315\314L=\205"
 & "\353\321>\016-\362>\213l\347=5\001\n\n\327#<L7\t?\325x\351>sh\221=5\001"
 & "\n\217";

CONST E16_11 =
   "\302u<q=\n?D\213\f?\315\314\314\2745\001\nB`e<^\272\t?\345\320\342>\236"
 & "\357\247=5\001\nB`e<y\351\006?^\272\311>q=\n>5\001\n\370S\343=\201\225c"
 & "?\\\217\302=\226C\213\2745\001\n)\\\217>1\010\254>\256G\201?\217\302\365"
 & "\2755\001\n\217\302u\275ff\206?\337O\215>\256Ga>5\001\n\217\302u<\254\034"
 & "\032?%\006!?o\022\203\2745\001\n333>L7)?\260r(?\274t\223\2745\001\n\n\327"
 & "#<\317\367\023?\244p=?\207\026Y\2755\001\n\364\375\324<\323MB?m\347;?\217"
 & "\302u\2745\001\n\345\320\">R\270^?!\260\022?b\020X\2765\001\n\305 0=\343"
 & "\245;?\272I,?\226C\213\2745\001\n\305 0=\343\245;?\315\314,?\217\302u\274"
 & "5\001\nw\276\037=\236\357G?b\0208?\246\233\304\2745\001\n\n\327#=Zd;?\323"
 & "M\002?\000\000\000\0005\001\n\n\327#=Zd;?m\347\373>\226C\213\2745\001\n"
 & "\n\327\243<\272I,?\327\243\360>\000\000\000\0005\001\n\n\327\243<\272I,"
 & "?\327\243\360>\000\000\000\2765\001\n\274t\023=\327\2430?q=\n?)\\\217\275"
 & "5\001\nP\215\027=\327\2430?\327\243\360>\000\000\000\0005\001\nP\215\027"
 & "=\327\2430?\327\243\360>\000\000\000\2765\001\n\354Q8=\256G\001?\262\235"
 & "\357>\000\000\000\0005\001\n\354Q8=\256G\001?{\024\016?h\221m\2755\001\n"
 & "\364\375\324<\221\355<?\272I,?\000\000\000\0005\001\n\274t\023=\004V.?\331"
 & "\3167?\343\245\233\2745\001\n\315\314L=\244p=?\272I,?\226C\213\2745\001"
 & "\n`\345P=-\262=?\315\314,?\217\302u\2745\001\n\274t\223<H\341Z?\272I,?\031"
 & "\004\226>5\001\n\315\314\314<h\221M?\211A@?\027\331\316\2755\001\n\n\327"
 & "#<\n\327\003?\203\300j?\343\245\033\2755\001\n\337O\215=V\016->R\270\236"
 & ">=\nW>5\001\n\217\302u<{\024.?\274t\223>\000\000\000\0005\001\n\177j\274"
 & "<}?\025?\260r\350>\000\000\000\0005\001\n\217\302\365<\317\367\023?X9\364"
 & ">\000\000\000\0005\001\n\033/\335<\252\361\202?\\\217\002?\n\327\243\274"
 & "5\001\n\217\302\365<Nbp?\370S\003?\217\302u\2745\001\nw\276\037=\351&\021"
 & "?L7i?o\022\003;5\001\n\354Q8=X9t?J\f\002?\n\327\243\2745\001\nX94=\230n"
 & "\022?\n\327c?\343\245\233\2745\001\n\274t\223<\215\227\356>R\270>?\000\000"
 & "\000\0005\001\n\315\314\314<\010\254\234>\333\371>?\203\300J\2765\001\n"
 & "\315\314L=\244p=?\037\205+?\n\327\243\2745\001\n9\264H=\033/=?\315\314,"
 & "?\217\302u\2745\001\n\n\327\243;\232\2319?\272I,?\031\004\226>5\001\nB`"
 & "e<\205\3531?\022\203@?\033/\335\2755\001\n\n\327#=d;\337>V\016m?\031\004"
 & "\226\2765\001\n\n\327#=\177j\274=\315\314l?{\024\256\2755\001\n\n\327#="
 & "d;\337>V\016m?\031\004\226\2765\001\n\000\000\000\000\215\227\256>V\016"
 & "m?\n\327\243\27505\001\n\000\000\000\000{\024\256>V\016m?\n\327\243\275"
 & "5\001\n\362\322M>\234\304\340>V\016m?\232\231\231\2755\001\nB`e<\\\217\202"
 & ">)\\o?{\024\256\2755\001\n\362\322M>\234\304\340>V\016m?)\\\217\2755\001"
 & "\n\362\322M>\\\217\202>)\\o?\n\327\243\27505\001\n1\010\254<\276\237\232"
 & ">\333\371>?\203\300J\2765\001\no\022\003;\364\375\224>\372~j?\321\"\333"
 & "\2755\001\n\347\373\251>=\n7?\250\306k?\347\373\251\2755\001\n\347\373\251"
 & ">\341z\324>\232\231y?X9\264\2755\001\nw\276\037=\341z\324>\250\306k?T\343"
 & "\245\2755\001\n\033/]=ff\346>V\016m?\031\004\226\2765\001\n\250\306\313"
 & ">ff\346>\315\314l?{\024\256\2755\001\n\033/]=ff\346>V\016m?\031\004\226"
 & "\2765\001\nX9\264<\354Q\270>V\016m?\n\327\243\2755\001\n\366(\234>\354Q"
 & "\270>\315\314l?\301\312\241\2755\001\n\n\327\243<\354Q\270>V\016m?\n\327"
 & "\243\2755\001\n\226C\213<\\\217\202>V\016m?\232\231\231\2755\001\n\362\322"
 & "M>\323M\342>)\\o?{\024\256\2755\001\n\226C\213<\\\217\202>V\016m?)\\\217"
 & "\275005\001\0051F\000\000\0005\001\t{\024.\276Nb\200?\242Ev?\325xi\276\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001"
 & "\001\001\001\001\001\001\001\001\000\001\001\000\001\001\001\000\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\004V\216>\372~\252>!\260\362>\004V\016?\004V\016?\201"
 & "\225c?\376\3248?\004V\216>\372~\252>\372~\252>\002+\307>\006\201\025?\004"
 & "V\216>\006\201\025?\004V\216>\004V\216>\004V\016?\004V\016?\004V\016?\004"
 & "V\016?\004V\016?\004V\016?\004V\016?\004V\016?\004V\016?\004V\016?\372~"
 & "\252>\372~\252>\006\201\025?\006\201\025?\006\201\025?\177j\034?\232\231"
 & "y?\376\3248?\376\3248?\376\3248?\376\3248?\203\300*?\177j\034?\002+G?\376"
 & "\3248?\004V\216>\004V\016?\376\3248?\177j\034?}?U?\376\3248?\002+G?\203"
 & "\300*?\002+G?\376\3248?\203\300*?\177j\034?\376\3248?\203\300*?\374\251"
 & "q?\203\300*?\203\300*?\177j\034?\372~\252>\004V\216>\372~\252>\006\201\025"
 & "?\004V\016?\004V\216>\004V\016?\177j\034?\004V\016?\177j\034?\004V\016?"
 & "\372~\252>\177j\034?\177j\034?\004V\216>\004";

CONST E16_12 =
   "V\216>\004V\016?\004V\216>\201\225c?\177j\034?\177j\034?\177j\034?\177j"
 & "\034?\002+\307>\004V\016?\372~\252>\177j\034?\004V\016?\002+G?\004V\016"
 & "?\004V\016?\000\000\000?\002+\307>)\\\217>\002+\307>\006\201\025?\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\004V\216>\372~\252>\372"
 & "~\252>\372~\252>\372~\252>\372~\252>\372~\252>\372~\252>\372~\252>\000\000"
 & "\000\000\372~\252>\372~\252>\000\000\000\000\372~\252>\372~\252>\372~\252"
 & ">\000\000\000\000\372~\252>\004V\016?\004V\016?\004V\016?\004V\016?)\\\217"
 & ">\004V\016?\372~\252>\010\254<?\244p\275>\004V\016?\006\201\025?\372~\252"
 & ">\010\254<?\372~\252>\315\314\314>\006\201\025?\372~\252>\372~\252>\372"
 & "~\252>\177j\034?\004V\016?\004V\216>\372~\252>\372~\252>H\341\272>\004V"
 & "\016?\006\201U?\006\201U?\006\201U?\177j\034?\376\3248?\376\3248?\376\324"
 & "8?\376\3248?\376\3248?\376\3248?\000\000\200?\376\3248?\203\300*?\203\300"
 & "*?\203\300*?\203\300*?\004V\216>\004V\216>\004V\216>\004V\216>\376\3248"
 & "?\376\3248?\002+G?\002+G?\002+G?\002+G?\002+G?\006\201\025?\002+G?\376\324"
 & "8?\376\3248?\376\3248?\376\3248?\203\300*?\203\300*?\177j\034?\004V\016"
 & "?\004V\016?\004V\016?\004V\016?\004V\016?\004V\016?\201\225c?\004V\016?"
 & "\004V\016?\004V\016?\004V\016?\004V\016?\004V\216>\004V\216>\004V\216>\004"
 & "V\216>\177j\034?\177j\034?\177j\034?\177j\034?\177j\034?\177j\034?\177j"
 & "\034?\006\201\025?\177j\034?\177j\034?\177j\034?\177j\034?\177j\034?\004"
 & "V\016?\177j\034?\004V\016?0000000000000000000000000000000005\001\n\354Q"
 & "\270=#\333y>\331\3167?\000\000\000\0005\001\n9\264\310=\022\203\300>\331"
 & "\3167?/\335\344>5\001\n\274t\223<^\272\t?!\2602?\000\000\000\0005\001\n"
 & "\217\302\365<T\343\005?ffF?\037\205\353\2755\001\nB`\345<\177j\\?\217\302"
 & "5?\343\245\233\2745\001\n\033/]=\274t3?\331\3167?\343\245\233\2745\001\n"
 & "\337O\215=\031\004V>\331\3167?\n\327\343>5\001\n)\\\017=\234\304\240>m\347"
 & ";?\364\375T\2765\001\n\343\245\233<u\223\230>m\347;?\364\375T\2765\001\n"
 & "\033/\335<\020X\271>\331\3167?\335$\306>5\001\n\n\327#=\226C\013?7\211\001"
 & "?\000\000\000\0005\001\no\022\203=\321\"[>\006\201\025>1\010,\2765\001\n"
 & "\n\327#=\226C\013??5\236>^\272I>5\001\no\022\203=\321\"[>\006\201\025>\000"
 & "\000\000\0005\001\n\002+\007\275d;\237>\010\254<?\343\245\233\2745\001\n"
 & "o\022\003=\335$\006?\217\3025?\343\245\233\2745\001\n\337O\215=7\211\301"
 & ">\217\3025?\000\000\000\0005\001\n\364\375\324<\345\320\002?\217\3025?\000"
 & "\000\000\0005\001\n\033/\335<\223\030\004?\217\3025?\343\245\233\2745\001"
 & "\n\033/\335<\360\247\006?\217\3025?\000\000\000\0005\001\n\033/\335<\223"
 & "\030\004?!\2602?\343\245\233\2745\001\n\266\363\375<\270\036\005?\217\302"
 & "5?\343\245\233\2745\001\n\315\314\314<\002+\007?!\2602?\000\000\000\000"
 & "5\001\no\022\003=\335$\006?\217\3025?\343\245\233\2745\001\n\217\302\365"
 & "<\313\241\005?\217\3025?\343\245\233\2745\001\n\177j\274=\331\316w>o\022"
 & "\003?\000\000\000\0005\001\n\177j\274=\331\316w>o\022\003?1\010,\2765\001"
 & "\n\343\245\033=\250\306\013?\201\225\003?o\022\003\2745\001\n\n\327#=\226"
 & "C\013?+\207\326>\016-\262=5\001\n\343\245\033=\250\306\013?\201\225\003"
 & "?o\022\003\2745\001\n\217\302u=\004V\016?\254\034:?\000\000\000\0005\001"
 & "\n\374\251\361=\321\"[?\010\254<?\343\245\233\2745\001\n\n\327\243<F\266"
 & "3?\331\3167?\000\000\000\0005\001\n\343\245\233=\226C+?\331\3167?\000\000"
 & "\000\0005\001\nX94=\240\032/?\010\254<?\343\245\233\2745\001\n\343\245\233"
 & "=)\\/?\331\3167?\000\000\000\0005\001\n\343\245\233=\333\371\036?\331\316"
 & "7?\000\000\000\0005\001\n\343\245\233=\242E\026?\331\3167?\000\000\000\000"
 & "5\001\nX94=+\2076?\010\254<?\343\245\233\2745\001\nsh\221=\360\247&?\331"
 & "\3167?\000\000\000\0005\001\no\022\203=\321\"[>\331\3167?\000\000\000\000"
 & "5\001\nX9\264<\331\316\367>\331\3167?\274t\223\2745\001\n\016-\262=\376"
 & "\3248?\331\3167?\000\000\000\0005\001\n\343\245\233=}?\025?\331\3167?\000"
 & "\000\000\0005\001\n\337O\215=\n\327C?\331\3167?\000\000\000\0005\001\n\337"
 & "O\215=\213l\'?\331\3167?\000\000\000\0005\001\nX94=m\347;?\010\254<?\343"
 & "\245\233\2745\001\n\343\245\233=\022\203 ?\331\3167?\000\000\000\0005\001"
 & "\nX94=\010\254<?\010\254<?\364\375T\2755\001\n\343\245\233=\337O-?\331\316"
 & "7?\000\000\000\0005\001\nw\276\037=%\006!?\010\254<?\343\245\233\2745\001"
 & "\nB`e<\207\026\031?\331\3167?\000\000\000\0005\001\n\274t\223=\360\247&"
 & "?\331\3167?\343\245\233\2745\001\n\343\245\233<T\343%?\331\3167?\000\000"
 & "\000\0005\001\no\022\203<\362\322m?\331\3167?\000\000\000\0005\001\nB`e"
 & "<\002+\'?\331\3167?\000\000\000\0005\001\n\217\302u<\002+\'?\331\3167?\000"
 & "\000\000\0005\001\n\315\314\314<\031\004\026?\331\3167?\000\000\000\000"
 & "5\001\n%\006\201=?5\236>\376\3248?9\264H\2765\001\n\002+\007\275d;\237>"
 & "\010\254<?\343\245\233\2745\001\n\246\233\304<q=\212>\376\3248?9\264H\276"
 & "5\001\n\266\363}=\313\241\005?!\2602?B`\245>5\001\n\000\000\000\000\004"
 & "V\016?\232\231\231\275\000\000\000\2765\001\n\337O\215=\031\004V>\254\034"
 & ":?\260r\350>5\001\nh\221\355<y\351\006?\250\306\013?B`e\2745\001\n#\333"
 & "y=\317\367\023?\331\3167?B`e\2745\001\n\226C\013=\335$\006?\250\306\013"
 & "?B`e\2745\001\n\226C\013=V\016\r?\331\3167?B`e\2745\001\n\177j\274<\002"
 & "+\007?\250\306\013?B`e\2745\001\n\n\327#<\345\320\242>\254\034:?\000\000"
 & "\000\0005\001\n\n\327#=h\221\r?\250\306\013??5^\2765\001\n\270\036\205="
 & "\250\306\013?\331\3167?\000\000\000\000";

CONST E16_13 =
   "5\001\n\337O\215=\031\004V>\232\2319?\000\000\000\0005\001\n\246\233D;\031"
 & "\004V>\232\2319?\321\"[\2765\001\n\337O\215=;\337\017?\331\3167?\000\000"
 & "\000\0005\001\n\337O\215=\031\004V>\331\3167?\000\000\000\0005\001\no\022"
 & "\203=\274tS?\250\306\013?\000\000\000\0005\001\n\270\036\205=\250\306\013"
 & "?\250\306\013?\000\000\000\0005\001\n\226C\013=\317\367\023?\250\306\013"
 & "?B`e\2745\001\n\266\363}=\317\367\023?\250\306\013?\317\367S\2765\001\n"
 & "\226C\013=\337O\r?\250\306\013?\317\367S\2765\001\no\022\203=\333\371\276"
 & ">\250\306\013?\000\000\000\0005\001\n\217\302\365</\335\004?\250\306\013"
 & "?B`e\2745\001\n\n\327#<?5\236>V\016-?\246\233\304\2735\001\n\002+\207=\037"
 & "\205\013?\'1\010?B`e\2745\001\n\364\375T<\f\002\013?\'1\010?\000\000\000"
 & "\0005\001\n\n\327#</\335D?\'1\010?\000\000\000\0005\001\n\217\302u<\372"
 & "~\n?\'1\010?\000\000\000\0005\001\n\n\327#<\347\373\t?\'1\010?\321\"[\276"
 & "5\001\n\n\327\243<\217\302\365>\'1\010?\000\000\000\0005\001\n\246\233D"
 & "=H\341\272>\376\3248?9\264H\2765\001\n1\010\254=9\264H>\010\254<?\343\245"
 & "\233\2745\001\n\246\233\304<\215\227\256>\376\3248?9\264H\2765\001\n#\333"
 & "y=T\343\005?\262\235\257>y\351&>000000000000000005\001\n\337O\215=\031\004"
 & "V>\'1\010?\000\000\000\0005\001\n\177j\274\274fff>\000\000@?\276\237\032"
 & "?5\001\n\033/\335=\242E\266>\000\000@?\276\237\032?5\001\n\n\327#\274\262"
 & "\235\257>\000\000@?\276\237\032?5\001\n\226C\213\27433\263>\010\254<?\366"
 & "(\034?5\001\n\246\233\304\273h\221\255>h\221-?\276\237\032?5\001\no\022"
 & "\003\273\037\205\253>\000\000@?\276\237\032?5\001\n\364\375\324=\037\205"
 & "k>\276\237:?\033/\035?5\001\n\246\233\304;\213l\247>\276\237:?\033/\035"
 & "?05\001\n\374\251q=\315\314\214>\360\247F?sh\021?5\001\n\246\233\304;H\341"
 & "z>\000\000\000\000\325xi\27605\001\n\274t\023<\376\324\370>\000\000@?\276"
 & "\237\032?5\001\nsh\221=\343\245\233>\000\000\000\000\325xi\2765\001\n\n"
 & "\327#\274\262\235\257>\000\000@?\276\237\032?05\001\n\354Q\270=#\333y>\'"
 & "1\010?\311v>\2765\001\n\226C\013=\335$\006?\234\304 ?\374\251\361\2755\001"
 & "\nB`\345<\372~\n?\331\3167?o\022\203\2745\001\n\246\233D\273\240\032\017"
 & "?\345\320\"?\343\245\233=5\001\n\274t\023\274\327\243\020?!\2602?\000\000"
 & "\000\0005\001\n1\010\254=9\264H>\010\254<?\343\245\233\2745\001\n\226C\013"
 & "=\313\241\005?\254\034:?\177j<\2761=\004\000\0005\001\nX94\274w\276??\010"
 & "\254<?\343\245\233\2745\001\nX9\264<\374\251\261>\010\254<?\337O\215>5\001"
 & "\nX9\264=\262\235\357>\331\316\367>\343\245\233=5\001\n\n\327#=\226C\013"
 & "?+\207\326>\033/\335=5\001\n\033/\335<\010\254\234>\327\243\260>\366(\\"
 & ">5\001\nX94\274\356|??\010\254<?\343\245\233\2741:\004\000\0005\001\n\325"
 & "xi=\262\235\257>\242E6?\254\034\332>5\001\n\n\327#=\226C\013?7\211\001?"
 & "\000\000\000\0005\001\n\274t\023<T\343\245>\217\3025?`\345\220>5\001\no"
 & "\022\003<y\351\246>\217\3025?\203\300\212>17\004\000\0005\001\n\002+\207"
 & "=\037\205\013?\'1\010?\317\367S\2765\001\no\022\003\274\347\373\t?333?\201"
 & "\225C\2765\001\nh\221m=\256Ga>\f\002\253>\305 0>1?\004\000\0005\001\n\364"
 & "\375\324<!\260r>\217\3025?`\345\220>5\001\n\246\233\304;\354Q\270>\010\254"
 & "<?\337O\215>5\001\nX9\264=\262\235\357>\331\316\367>\343\245\233=5\001\n"
 & "\364\375\324<\223\030D?\217\3025?\343\245\233\2745\001\n\364\375\324<\226"
 & "CK?\217\3025?\343\245\233\2745\001\no\022\203<D\213L?\217\3025?\343\245"
 & "\233\2745\001\n\256Ga=V\016\r?\'1\010?\024\256G\2765\001\n\n\327\243<F\266"
 & "3?\262\235o?\000\000\000\0005\001\n\n\327\243<F\2663?\262\235o?\000\000"
 & "\000\0005\001\n\n\327\243<F\2663?\262\235o?\000\000\000\0005\001\n\n\327"
 & "\243<F\2663?\272Il?\000\000\000\0005\001\n\n\327\243<F\2663?q=j?\000\000"
 & "\000\0005\001\n\n\327\243<F\2663?\242Ev?\000\000\000\0005\001\n\n\327\243"
 & ";X9t?\331\3167?\000\000\000\0005\001\nX94=\240\032/?\010\254<?\325xi\276"
 & "5\001\n\343\245\233=\333\371\036?\262\235o?\000\000\000\0005\001\n\343\245"
 & "\233=\333\371\036?\262\235o?\000\000\000\0005\001\n\343\245\233=\333\371"
 & "\036?\262\235o?\000\000\000\0005\001\n\343\245\233=\333\371\036?q=j?\000"
 & "\000\000\0005\001\n\315\314L\275\321\"[>\262\235o?\000\000\000\0005\001"
 & "\no\022\203=\260r\250>\262\235o?\000\000\000\0005\001\nP\215\027\275\301"
 & "\312\241>\262\235o?\000\000\000\0005\001\n1\010\254\274\232\231\231>q=j"
 & "?\000\000\000\0005\001\n\n\327\243\273)\\/?\331\3167?\000\000\000\0005\001"
 & "\n\337O\215=\213l\'?\272Il?\000\000\000\0005\001\nX94=m\347;?\262\235o?"
 & "\343\245\233\2745\001\nX94=m\347;?\262\235o?\343\245\233\2745\001\nX94="
 & "m\347;?\262\235o?\343\245\233\2745\001\nX94=m\347;?\272Il?\343\245\233\274"
 & "5\001\nX94=m\347;?q=j?\343\245\233\2745\001\n\n\327#=\037\205\013?\256G"
 & "\001?o\022\203:5\001\n\002+\007=\311v>?R\270>?\033/\335\2745\001\n\274t"
 & "\223=\360\247&?\262\235o?\343\245\233\2745\001\n\274t\223=\360\247&?\262"
 & "\235o?\343\245\233\2745\001\n\274t\223=\360\247&?\262\235o?\343\245\233"
 & "\2745\001\n\274t\223=\360\247&?q=j?\343\245\233\2745\001\n\217\302u<\002"
 & "+\'?\262\235o?\000\000\000\0005\001\n\343\245\233=\022\203 ?\331\3167?\000"
 & "\000\000\0005\001\n\337O\215=X9\024?\321\";?B`e\2745\001\nh\221\355<y\351"
 & "\006?\000\000@?B`e\2745\001\nh\221\355<y\351\006?\000\000@?B`e\2745\001"
 & "\nh\221\355<y\351\006?\000\000@?B`e\2745\001\nh\221\355<y\351\006?\010\254"
 & "<?B`e\2745\001\nh\221\355<y\351\006?\276\237:?B`e\2745\001\nh\221\355<y"
 & "\351\006?\360\247F?B`e\2745\001\nh\221\355<\343\245[?\250\306\013?B`e\274"
 & "5\001\n\226C\013=\335$\006?\250\306\013?\325xi\2765\001\n";

CONST E16_14 =
   "\177j\274<\002+\007?\000\000@?B`e\2745\001\n\177j\274<\002+\007?\000\000"
 & "@?B`e\2745\001\n\177j\274<\002+\007?\000\000@?B`e\2745\001\n\177j\274<\002"
 & "+\007?\276\237:?B`e\2745\001\n\315\314L\275\031\004V>\000\000@?\000\000"
 & "\000\0005\001\n\337O\215=\260r\250>\000\000@?\000\000\000\0005\001\nP\215"
 & "\027\275\301\312\241>\000\000@?\000\000\000\0005\001\n1\010\254\274\232"
 & "\231\231>\276\237:?\000\000\000\0005\001\n\226C\013=\317\367\023?\010\254"
 & "<?B`e\2745\001\n\270\036\205=\250\306\013?\010\254<?\000\000\000\0005\001"
 & "\n\226C\013=\317\367\023?\000\000@?B`e\2745\001\n\226C\013=\317\367\023"
 & "?\000\000@?B`e\2745\001\n\226C\013=\317\367\023?\000\000@?B`e\2745\001\n"
 & "\226C\013=\317\367\023?\010\254<?B`e\2745\001\n\226C\013=\317\367\023?\276"
 & "\237:?B`e\2745\001\n\n\327#=\226C\013?\272I\f?1\010,\2755\001\nX9\264<\264"
 & "\310\026?)\\\017?h\221\355\2745\001\n\002+\207=\037\205\013?\000\000@?B"
 & "`e\2745\001\n\002+\207=\037\205\013?\000\000@?B`e\2745\001\n\002+\207=\037"
 & "\205\013?\000\000@?B`e\2745\001\n\002+\207=\037\205\013?\276\237:?B`e\274"
 & "5\001\n\n\327#<\347\373\t?\000\000@?\321\"[\2765\001\n\266\363}=\317\367"
 & "\023?\331\3167?\364\375T\2765\001\n\n\327#<\347\373\t?\276\237:?\321\"["
 & "\27605\001\0051_\000\000\0005\001\t1\010,\276\000\000\200?)\\o?d;_\276\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001"
 & "\001\001\001\001\001\001\001\001\000\001\001\000\001\001\001\000\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\200>\372~\252>{\024\016?\000\000\000?\000\000"
 & "\000?\000\000\200?}?U?\372~\252>\372~\252>\372~\252>\000\000\000?\205\353"
 & "\021?\000\000\200>\205\353\021?\000\000\200>\004V\216>\000\000\000?\000"
 & "\000\000?\000\000\000?\000\000\000?\000\000\000?\000\000\000?\000\000\000"
 & "?\000\000\000?\000\000\000?\000\000\000?\372~\252>\372~\252>\205\353\021"
 & "?\205\353\021?\205\353\021?\000\000\000?{\024n?\376\3248?\203\300*?\376"
 & "\3248?\376\3248?\203\300*?\177j\034?\002+G?\002+G?\002+\307>\000\000\000"
 & "?\002+G?\203\300*?\374\251q?\376\3248?\002+G?\177j\034?\002+G?\376\3248"
 & "?\004V\016?\203\300*?\376\3248?\376\3248?\000\000\200?\376\3248?\376\324"
 & "8?\203\300*?\372~\252>\004V\216>\372~\252>j\274\024?\000\000\000?\372~\252"
 & ">\000\000\000?\004V\016?\370S\343>\004V\016?\370S\343>\372~\252>\000\000"
 & "\000?\004V\016?\004V\216>\372~\252>\004V\016?\004V\216>}?U?\004V\016?\000"
 & "\000\000?\004V\016?\004V\016?\370S\343>\002+\307>\372~\252>\004V\016?\000"
 & "\000\000?\376\3248?\000\000\000?\000\000\000?\370S\343>^\272\311>\256Ga"
 & ">^\272\311>\270\036\005?\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\004V\216>\372~\252>\372~\252>\372~\252>\372~\252>\372~\252>\372"
 & "~\252>\372~\252>\372~\252>\000\000\000\000\372~\252>\372~\252>\000\000\000"
 & "\000\372~\252>\372~\252>\372~\252>\000\000\000\000\372~\252>\000\000\000"
 & "?\000\000\000?\000\000\000?\000\000\000?\256Ga>\000\000\000?\372~\252>d"
 & ";??\232\231\231>\000\000\000?\205\353\021?\372~\252>d;??\372~\252>\315\314"
 & "\314>\205\353\021?\232\231\231>\232\231\231>\372~\252>\004V\016?q=\n?\000"
 & "\000\200>\372~\252>\232\231\231>\303\365\250>\000\000\000?\000\000@?\000"
 & "\000@?\000\000@?\000\000\000?\376\3248?\376\3248?\376\3248?\376\3248?\376"
 & "\3248?\376\3248?\000\000\200?\376\3248?\203\300*?\203\300*?\203\300*?\203"
 & "\300*?\002+\307>\002+\307>\002+\307>\002+\307>\376\3248?\376\3248?\002+"
 & "G?\002+G?\002+G?\002+G?\002+G?\205\353\021?\002+G?\376\3248?\376\3248?\376"
 & "\3248?\376\3248?\376\3248?\177j\034?\004V\016?\000\000\000?\000\000\000"
 & "?\000\000\000?\000\000\000?\000\000\000?\000\000\000?\376\3248?\370S\343"
 & ">\370S\343>\370S\343>\370S\343>\370S\343>\004V\216>\004V\216>\004V\216>"
 & "\004V\216>\000\000\000?\004V\016?\000\000\000?\000\000\000?\000\000\000"
 & "?\000\000\000?\000\000\000?\205\353\021?\000\000\000?\004V\016?\004V\016"
 & "?\004V\016?\004V\016?\000\000\000?\004V\016?\000\000\000?00000000000000"
 & "00000000000000000005\001\nT\343\245=\022\203\200>`\3450?\364\375T\2745\001"
 & "\n\347\373\251=\374\251\361>`\3450?\027\331\316>5\001\no\022\203;\266\363"
 & "\375>333?\000\000\000\0005\001\nh\221\355<\374\251\361>\000\000@?\203\300"
 & "\312\2755\001\n\266\363\375=\022\203`?\351&1?B`e\2745\001\n\266\363}=\325"
 & "xI?`\3450?o\022\203\2745\001\n\301\312\241=\360\247\206>`\3450?\242E\266"
 & ">5\001\n\177j<=\010\254\234>\374\2511?1\010,\2765\001\n\033/\335<\252\361"
 & "\222>\374\2511?1\010,\2765\001\nB`e=/\335\344>`\3450?\\\217\202>5\001\n"
 & "\002+\007=\325x\t?7\211\001?\000";

CONST E16_15 =
   "\000\000\0005\001\nw\276\037=\035Zd>R\270\036>\354Q8\2765\001\n\002+\007"
 & "=\325x\t?b\020\230>\031\004V>5\001\n\236\357\'==\nW>w\276\037>\364\375T"
 & "\2745\001\n\246\233\304\274\276\237\232>`\3450?\343\245\233\2745\001\n\246"
 & "\233\304<F\266\363>\305 0?\364\375T\2745\001\n\270\036\205=\323M\342>\305"
 & " 0?\000\000\000\0005\001\n\226C\213<j\274\364>\305 0?\000\000\000\0005\001"
 & "\no\022\203<\262\235\357>\305 0?B`e\2745\001\n\343\245\233<33\363>\305 "
 & "0?\000\000\000\0005\001\nX9\264<\327\243\360>V\016-?o\022\003\2745\001\n"
 & "B`\345<33\363>\305 0?\364\375T\2745\001\n\226C\213<X9\364>V\016-?\000\000"
 & "\000\0005\001\nB`\345<\374\251\361>\305 0?\364\375T\2745\001\n\364\375\324"
 & "<\016-\362>\305 0?\364\375T\2745\001\n\236\357\247=\022\203\200>\374\251"
 & "\361>\364\375T\2745\001\n\236\357\247=\'1\210>\374\251\361>\354Q8\2765\001"
 & "\n\266\363\375<\347\373\t?\201\225\003?o\022\003\2745\001\n\002+\007=\325"
 & "x\t?\272I\314>\321\"\333=5\001\n\266\363\375<\347\373\t?\201\225\003?o\022"
 & "\003\2745\001\n\325xi=\n\327\343>Nb0?\364\375T\2745\001\n\033/\335=\230"
 & "nR?`\3450?\343\245\233\2745\001\n\274t\023<Nb0?\327\2430?\000\000\000\000"
 & "5\001\no\022\203<\311v\036?V\016-?\000\000\000\0005\001\n9\264H=;\337/?"
 & "`\3450?\343\245\233\2745\001\nB`e<\327\2430?V\016-?\000\000\000\0005\001"
 & "\no\022\203<\223\030$?V\016-?\000\000\000\0005\001\no\022\203<}?\025?V\016"
 & "-?\000\000\000\0005\001\nP\215\027=\256GA?`\3450?\343\245\233\2745\001\n"
 & "1\010\254<\323MB?V\016-?\000\000\000\0005\001\n\n\327\243<\244p\275>V\016"
 & "-?\000\000\000\0005\001\n\246\233D;}?\365>V\016-?\246\233\304\2755\001\n"
 & "\217\302\365</\335D?V\016-?\000\000\000\0005\001\n\343\245\233<\370S#?V"
 & "\016-?\000\000\000\0005\001\nB`e<\250\306k?V\016-?\000\000\000\0005\001"
 & "\no\022\203<\274t3?V\016-?\274t\223\2745\001\n)\\\017=?5>?`\3450?\343\245"
 & "\233\2745\001\no\022\203<\232\231\031?V\016-?\000\000\000\0005\001\n)\\"
 & "\017=?5>?`\3450?X94\2765\001\n\364\375\324<=\n7?V\016-?\000\000\000\000"
 & "5\001\n)\\\017=\370S\003?\351&1?\343\245\233\2745\001\n\266\363\375<\345"
 & "\320\"?V\016-?\000\000\000\0005\001\no\022\203<\274t3?V\016-?\343\245\233"
 & "\2745\001\no\022\203<\274t3?V\016-?\274t\223\2745\001\n\343\245\233<\321"
 & "\"{?V\016-?\217\302u\2745\001\no\022\203<\252\3612?V\016-?\000\000\000\000"
 & "5\001\n\217\302u<\252\3612?V\016-?\000\000\000\0005\001\nB`\345<\323M\""
 & "?V\016-?\000\000\000\0005\001\nL7\211=\254\034\232>h\221-?u\223\030\276"
 & "5\001\n\315\314\314\274\321\"\233>`\3450?\343\245\233\2745\001\no\022\003"
 & "=\'1\210>h\221-?u\223\030\2765\001\n\006\201\225=\323M\002?V\016-?d;\237"
 & ">5\001\n\000\000\000\000\000\000\000?\232\231\231\275\000\000\000\2765\001"
 & "\n)\\\217=J\f\202>`\3450?\242E\266>5\001\n\315\314\314<#\333\371>\016-\362"
 & ">B`e\2745\001\n\226C\213<B`\005?V\016-?B`e\2745\001\n\315\314\314<\366("
 & "\334>\016-\362>B`e\2745\001\n\315\314\314<9\264\010?V\016-?B`e\2745\001"
 & "\n\315\314\314<\254\034\332>\016-\362>B`e\2745\001\nB`e<\002+\307>`\345"
 & "0?\000\000\000\0005\001\nB`\345<\307K\367>\016-\362>\252\361R\2765\001\n"
 & "o\022\203<9\264\010?V\016-?\000\000\000\0005\001\no\022\203<\\\217\202>"
 & "`\3450?\000\000\000\0005\001\n\325xi\275\360\247\206>`\3450?;\337O\2765"
 & "\001\nX9\264<\f\002\013?V\016-?\000\000\000\0005\001\no\022\203<\\\217\202"
 & ">V\016-?\000\000\000\0005\001\no\022\203<NbP?\016-\362>\000\000\000\000"
 & "5\001\n1\010\254<\347\373\t?\016-\362>\000\000\000\0005\001\n\315\314\314"
 & "<F\266\363>\016-\362>B`e\2745\001\n\343\245\233<\335$\006?\016-\362>\205"
 & "\353Q\2765\001\n\226C\013=L7\t?\016-\362>\205\353Q\2765\001\nh\221\355<"
 & "?5\336>\016-\362>\000\000\000\0005\001\n\315\314\314<\376\324\270>\016-"
 & "\362>B`e\2745\001\n\n\327\243<\347\373\251>\256G!?\246\233D\2745\001\no"
 & "\022\203<\325x\t?1\010\354>B`e\2745\001\n1\010\254<\354Q\370>1\010\354>"
 & "B`e\2745\001\n\177j\274<\364\3754?1\010\354>B`e\2745\001\n\246\233D<\331"
 & "\316\367>1\010\354>\000\000\000\0005\001\no\022\203<\217\302\365>1\010\354"
 & ">\205\353Q\2765\001\n1\010\254<=\n\327>1\010\354>\000\000\000\0005\001\n"
 & "X9\264<{\024\256>!\2602?333\2765\001\n\002+\207=-\262\035>`\3450?\343\245"
 & "\233\2745\001\n\033/]=\311v\276>!\2602?333\2765\001\nh\221\355<Zd\373>\372"
 & "~\252>\351&1>000000000000000005\001\no\022\203<\\\217\202>1\010\354>\000"
 & "\000\000\0005\001\no\022\003<m\347{>+\2076?\002+\007?5\001\n\305 \260=T"
 & "\343\245>+\2076?\002+\007?5\001\no\022\003\273\037\205\253>X94?\002+\007"
 & "?5\001\no\022\203\274!\260\262>D\213,?1\010\f?5\001\no\022\203:\325x\251"
 & ">o\022#?\327\243\020?5\001\n\217\302u<\345\320\242>`\3450?\002+\007?5\001"
 & "\n\252\361\322=\037\205k>\203\300*?\325x\t?5\001\no\022\003\273\037\205"
 & "\253>\203\300*?\325x\t?05\001\n\217\302u=\250\306\213>\244p=?y\351\006?"
 & "5\001\n\226C\213=+\207\226>\000\000\000\000d;_\27605\001\n\364\375T\274"
 & "\232\231\331>+\2076?\002+\007?5\001\n\354Q\270=\370S\243>X94=\351&1\276"
 & "5\001\no\022\003\273\037\205\253>X94?\002+\007?05\001\n\236\357\247=%\006"
 & "\201>\211A\000?;\337O\2765\001\n\207\026Y=\372~\352>+\207\026?)\\\017\276"
 & "5\001\n1\010\254<X9\364>\240\032/?B`e\2745\001\n\364\375\324\274\360\247"
 & "\006?\221\355\034?#\333y=5\001\no\022\203\2751\010\f?V\016-?\000\000\000"
 & "\0005\001\n\002+\207=-\262\035>`\3450?\343\245\233\2745\001\n\325xi=\345"
 & "\320\342>`\3450?\002+\007\2761";

CONST E16_16 =
   "\006\005\000\0005\001\n\364\375\324<u\2238?`\3450?\343\245\233\2745\001"
 & "\no\022\203\272\254\034\232>\305 0?\226C\313>5\001\n\177j\274<\016-\362"
 & ">\341z\324>\274t\023=5\001\n\002+\007=\325x\t?\272I\314>\033/\335=5\001"
 & "\nX94=\252\361\222>\252\361\222>\240\032/>5\001\n\364\375\324<u\2238?`\345"
 & "0?\343\245\233\2741\003\005\000\0005\001\n\325xi=\262\235\257>\305 0?\362"
 & "\322\315>5\001\n\002+\007=\325x\t?7\211\001?\000\000\000\0005\001\n\000"
 & "\000\000\000\232\231\231>\305 0?\315\314\214>5\001\n\246\233D;b\020\230"
 & ">\305 0?L7\211>1\000\005\000\0005\001\n\002+\007=L7\t?1\010\354>\252\361"
 & "R\2765\001\n\000\000\000\000/\335\004?V\016-?\311v>\2765\001\n\236\357\'"
 & "==\nW>\006\201\325>\266\363}>1\010\005\000\0005\001\nB`\345<\250\306\213"
 & ">\305 0?\315\314\214>5\001\n\274t\223<w\276\237>\305 0?\226C\313>5\001\n"
 & "\033/\335<X9\364>\341z\324>\274t\023=5\001\nB`\345<?5>?\305 0?\246\233D"
 & "\2745\001\nB`\345\273ffF?\305 0?\246\233D\2745\001\n\177j\274<\343\245;"
 & "?\305 0?\246\233D\2745\001\n\256Ga=\345\320\342>\211A\000?\362\322M\276"
 & "5\001\n\274t\023<Nb0?\272Il?\000\000\000\0005\001\n\274t\023<Nb0?\272Il"
 & "?\000\000\000\0005\001\n\274t\023<Nb0?\347\373i?\000\000\000\0005\001\n"
 & "\274t\023<Nb0?\323Mb?\000\000\000\0005\001\n\274t\023<Nb0?\022\203`?\000"
 & "\000\000\0005\001\n\274t\023<Nb0?)\\o?\000\000\000\0005\001\no\022\203;"
 & "\274ts?V\016-?\000\000\000\0005\001\n9\264H=;\337/?`\3450?d;_\2765\001\n"
 & "o\022\203<\223\030$?\272Il?\000\000\000\0005\001\no\022\203<\223\030$?\272"
 & "Il?\000\000\000\0005\001\no\022\203<\223\030$?\347\373i?\000\000\000\000"
 & "5\001\no\022\203<\223\030$?\022\203`?\000\000\000\0005\001\n\n\327\243<"
 & "\244p\275>\272Il?\000\000\000\0005\001\n\n\327\243<\244p\275>\272Il?\000"
 & "\000\000\0005\001\n\n\327\243<\244p\275>\347\373i?\000\000\000\0005\001"
 & "\n\n\327\243<\244p\275>\022\203`?\000\000\000\0005\001\n\246\233\304;\327"
 & "\2430?V\016-?\000\000\000\0005\001\no\022\203<\274t3?\323Mb?\274t\223\274"
 & "5\001\n)\\\017=?5>?\272Il?\343\245\233\2745\001\n)\\\017=?5>?\272Il?\343"
 & "\245\233\2745\001\n)\\\017=?5>?\347\373i?\343\245\233\2745\001\n)\\\017"
 & "=?5>?\323Mb?\343\245\233\2745\001\n)\\\017=?5>?\022\203`?\343\245\233\274"
 & "5\001\n\246\233D=\313\241\005?H\341\372>o\022\203<5\001\n)\\\017=?5>?\010"
 & "\254<?P\215\227\2755\001\no\022\203<\274t3?\272Il?\343\245\233\2745\001"
 & "\no\022\203<\274t3?\272Il?\343\245\233\2745\001\no\022\203<\274t3?\347\373"
 & "i?\343\245\233\2745\001\no\022\203<\274t3?\022\203`?\343\245\233\2745\001"
 & "\n\217\302u<\252\3612?h\221m?\000\000\000\0005\001\no\022\203<\232\231\031"
 & "?V\016-?\000\000\000\0005\001\n\343\245\233<\035Z\004?`\3450?\246\233D\274"
 & "5\001\n\315\314\314<#\333\371>+\2076?B`e\2745\001\n\315\314\314<#\333\371"
 & ">+\2076?B`e\2745\001\n\315\314\314<#\333\371>X94?B`e\2745\001\n\315\314"
 & "\314<#\333\371>D\213,?B`e\2745\001\n\315\314\314<#\333\371>\203\300*?B`"
 & "e\2745\001\n\315\314\314<#\333\371>\244p=?B`e\2745\001\n\002+\007=sh1?\016"
 & "-\362>B`e\2745\001\n\315\314\314<\366(\334>\016-\362>d;_\2765\001\n\315"
 & "\314\314<\254\034\332>+\2076?B`e\2745\001\n\315\314\314<\254\034\332>+\207"
 & "6?B`e\2745\001\n\315\314\314<\254\034\332>X94?B`e\2745\001\n\315\314\314"
 & "<\254\034\332>\203\300*?B`e\2745\001\n\364\375\324\274\\\217\202>+\2076"
 & "?\000\000\000\0005\001\no\022\203<\341z\224>+\2076?\000\000\000\0005\001"
 & "\n\274t\023\275\254\034\232>X94?\000\000\000\0005\001\n\274t\023\275\254"
 & "\034\232>\203\300*?\000\000\000\0005\001\n\315\314\314<F\266\363>`\3450"
 & "?B`e\2745\001\n1\010\254<\347\373\t?D\213,?\000\000\000\0005\001\n\315\314"
 & "\314<F\266\363>+\2076?B`e\2745\001\n\315\314\314<F\266\363>+\2076?B`e\274"
 & "5\001\n\315\314\314<F\266\363>X94?B`e\2745\001\n\315\314\314<F\266\363>"
 & "D\213,?B`e\2745\001\n\315\314\314<F\266\363>\203\300*?B`e\2745\001\n\002"
 & "+\007=\325x\t?\325x\t?\266\363\375\2745\001\n\315\314\314<F\266\363>D\213"
 & "\f?\177j\274\2755\001\no\022\203<\325x\t?+\2076?B`e\2745\001\no\022\203"
 & "<\325x\t?+\2076?B`e\2745\001\no\022\203<\325x\t?X94?B`e\2745\001\no\022"
 & "\203<\325x\t?\203\300*?B`e\2745\001\no\022\203<\217\302\365>+\2076?\205"
 & "\353Q\2765\001\n\343\245\233<\335$\006?V\016-?\205\353Q\2765\001\no\022"
 & "\203<\217\302\365>\203\300*?\205\353Q\276000005\001\0051\036\000\000\000"
 & "5\001\t1\010,\276\000\000\200?T\343e?d;_\276\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\001\001\001\001\001\001\001"
 & "\001\001\000\001\001\000\001\001\001\000\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000";

CONST E16_17 =
   "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\200>\372~\252"
 & ">`\345\320>\000\000\000?\000\000\000?}?U?\002+G?\372~\252>\372~\252>\372"
 & "~\252>\000\000\000?Nb\020?\000\000\200>Nb\020?\000\000\200>\004V\216>\000"
 & "\000\000?\000\000\000?\000\000\000?\000\000\000?\000\000\000?\000\000\000"
 & "?\000\000\000?\000\000\000?\000\000\000?\000\000\000?\004V\216>\004V\216"
 & ">Nb\020?Nb\020?Nb\020?\370S\343>\250\306k?\376\3248?\203\300*?\203\300*"
 & "?\376\3248?\177j\034?\004V\016?\376\3248?\376\3248?\372~\252>\002+\307>"
 & "\376\3248?\177j\034?\201\225c?\376\3248?\376\3248?\004V\016?\376\3248?\203"
 & "\300*?\004V\016?\177j\034?\376\3248?\376\3248?\374\251q?\376\3248?\376\324"
 & "8?\177j\034?\372~\252>\004V\216>\372~\252>\305 \360>\000\000\000?\372~\252"
 & ">\370S\343>\000\000\000?\370S\343>\000\000\000?\370S\343>\372~\252>\000"
 & "\000\000?\000\000\000?\004V\216>\004V\216>\000\000\000?\004V\216>\002+G"
 & "?\000\000\000?\000\000\000?\000\000\000?\000\000\000?\372~\252>\002+\307"
 & ">\004V\216>\000\000\000?\000\000\000?\376\3248?\000\000\000?\000\000\000"
 & "?\370S\343>\217\302\365>\315\314L>\217\302\365>\372~\n?\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\004V\216>\372~\252>\372~\252>\372"
 & "~\252>\372~\252>\372~\252>\372~\252>\372~\252>\372~\252>\000\000\000\000"
 & "\372~\252>\372~\252>\000\000\000\000\372~\252>\372~\252>\372~\252>\000\000"
 & "\000\000\372~\252>\000\000\000?\000\000\000?\000\000\000?\000\000\000?\315"
 & "\314L>\000\000\000?\372~\252>\\\217B?\337O\215>\000\000\000?Nb\020?\372"
 & "~\252>\\\217B?\372~\252>\315\314\314>Nb\020?\232\231\231>\232\231\231>\372"
 & "~\252>\000\000\000?\236\357\347>\000\000\200>\372~\252>\232\231\231>R\270"
 & "\236>\000\000\000?\000\000@?\000\000@?\000\000@?\370S\343>\376\3248?\376"
 & "\3248?\376\3248?\376\3248?\376\3248?\376\3248?\201\225c?\203\300*?\177j"
 & "\034?\177j\034?\177j\034?\177j\034?\372~\252>\372~\252>\372~\252>\372~\252"
 & ">\376\3248?\376\3248?\376\3248?\376\3248?\376\3248?\376\3248?\376\3248?"
 & "Nb\020?\376\3248?\376\3248?\376\3248?\376\3248?\376\3248?\376\3248?\004"
 & "V\016?\000\000\000?\370S\343>\370S\343>\370S\343>\370S\343>\370S\343>\370"
 & "S\343>\203\300*?\370S\343>\370S\343>\370S\343>\370S\343>\370S\343>\004V"
 & "\216>\004V\216>\004V\216>\004V\216>\000\000\000?\000\000\000?\000\000\000"
 & "?\000\000\000?\000\000\000?\000\000\000?\000\000\000?Nb\020?\000\000\000"
 & "?\000\000\000?\000\000\000?\000\000\000?\000\000\000?\000\000\000?\000\000"
 & "\000?\000\000\000?0000000000000000000000000000000005\001\n\270\036\005>"
 & "F\266s>V\016-?\274t\023\2745\001\n-\262\235=\325x\251>V\016-?\010\254\334"
 & ">5\001\n\n\327\243;\266\363\375>\325x)?\000\000\000\0005\001\nX94=\347\373"
 & "\351>\254\034:?\016-\262\2755\001\n#\333y=\313\241E?V\016-?\364\375T\274"
 & "5\001\n1\010,=\000\000@?V\016-?\364\375T\2745\001\n\301\312\241=d;_>V\016"
 & "-?-\262\335>5\001\n\246\233D=\343\245\233>V\016-?}?5\2765\001\nh\221\355"
 & "<\205\353\221>V\016-?}?5\2765\001\n\337O\215=\033/\335>V\016-?\024\256\207"
 & ">5\001\n\217\302\365<9\264\010?7\211\001?\000\000\000\0005\001\nB`e=\024"
 & "\256G>`\345\320=Nb\020\2765\001\n\217\302\365<9\264\010?\230n\222>\256G"
 & "a>5\001\n)\\\217=\020X9>\315\314\314=X94\2745\001\n\274t\023\274\252\361"
 & "\222>V\016-?B`e\2745\001\n\246\233\304<F\266\363>V\016-?B`e\2745\001\n\370"
 & "S\343=^\272\311>V\016-?\000\000\000\0005\001\n\217\302\365<33\363>V\016"
 & "-?\000\000\000\0005\001\n\305 0=\010\254\334>V\016-?B`e\2745\001\n\246\233"
 & "D<\374\251\361>V\016-?\000\000\000\0005\001\no\022\003=\211A\340>\305 0"
 & "?B`e\2745\001\n\226C\013=\262\235\357>\240\032/?B`e\2745\001\n\n\327\243"
 & "<T\343\345>\325x)?o\022\003\2745\001\nB`e=\n\327\343>V\016-?B`e\2745\001"
 & "\n\217\302\365<\f\002\353>V\016-?X9\264\2745\001\nT\343\245=\246\233D>\f"
 & "\002\353>X94\2745\001\n\n\327\243=\211A`>\f\002\353>Nb\020\2765\001\nB`"
 & "\345<L7\t?\201\225\003?o\022\003\2745\001\n\217\302\365<9\264\010?\313\241"
 & "\305>\217\302\365=5\001\nB`\345<L7\t?\201\225\003?o\022\003\2745\001\n\226"
 & "C\213=\317\367\323>V\016-?o\022\003\2745\001\nh\221\355=\240\032O?V\016"
 & "-?B`e\2745\001\n\217\302u<j\2744?D\213,?\000\000\000\0005\001\n\226C\213"
 & "<\331\316\027?\325x)?\000\000\000\0005\001\nB`\345<J\f\"?V\016-?B`e\274"
 & "5\001\no\022\203<)\\/?\325x)?\000\000\000\0005\001\n\246\233D<\376\324\030"
 & "?\325x)?\000\000\000\0005\001\n\246\233D<\250\306\013?\325x)?\000\000\000"
 & "\0005\001\no\022\003=\006\2015?V\016-?B`e\2745\001\n\343\245\233<F\2663"
 & "?\325x)?\000\000\000\0005\001\n\274t\223<\256G\241>\325x)?\000\000\000\000"
 & "5\001\n\n\327#<\244p\275>\325x)?B`e\2745\001\n\226C\013=\207\0269?\325x"
 & ")?\000\000\000\0005\001\n\246\233D<\207\026\031?\325x)?\000\000\000\000"
 & "5\001\n\246\233D<\221\355\\?\325x)?\000\000\000\0005\001\n\246\233D<\364"
 & "\3754?\325x)?X94\2745\001\n\226C\013=\305 0?V\016-?B`e\2745\001\no\022\203"
 & "<\203\300\n?\325x)?\000\000\000\0005\001\n\226C\013=\274t3?V\016-?\242E"
 & "6\2765\001\n\226C\213<9\264(?\325x)?\000\000\000\0005\001\n1\010,=Zd\373"
 & ">V\016-?B`e\2745\001\n\226C\213<\331\316\027?\325x)?\000\000\000\0005\001"
 & "\nB`e<\341z4?\325x)?B`e\2745\001\no\022\203<\230n2?\325x)?X94\2745\001\n"
 & "\n\327\243;\215\227n?\325x)";

CONST E16_18 =
   "?X94\2745\001\n\n\327#<X94?\325x)?\000\000\000\0005\001\nX9\264<\317\367"
 & "3?\325x)?\000\000\000\0005\001\n\274t\023<\376\324\030?\325x)?\000\000\000"
 & "\0005\001\nX9\264=\207\026\231>\325x)?w\276\037\2765\001\n\274t\023\274"
 & "\252\361\222>V\016-?B`e\2745\001\n\226C\013=H\341z>\325x)?w\276\037\276"
 & "5\001\n\246\233\304<\035Z\344>\325x)?b\020\230>5\001\n\000\000\000\000\000"
 & "\000\000?\232\231\231\275\000\000\000\2765\001\n\037\205\353=J\f\202>V\016"
 & "-?-\262\335>5\001\nP\215\027=\323M\342>\037\205\353>\n\327#\2745\001\n\246"
 & "\233D;\262\235\357>\027\331.?\n\327#\2745\001\n\315\314\314<\252\361\322"
 & ">\037\205\353>\n\327#\2745\001\n\033/\335<Zd\373>\027\331.?\n\327#\2745"
 & "\001\n\315\314\314<\207\026\331>\037\205\353>\n\327#\2745\001\n\n\327\243"
 & "<\223\030\304>\027\331.?\000\000\000\0005\001\nB`\345<\327\243\360>\037"
 & "\205\353>d;_\2765\001\n\274t\023<\020X\371>\027\331.?\000\000\000\0005\001"
 & "\no\022\203<7\211\201>\027\331.?\000\000\000\0005\001\n)\\\217\275\360\247"
 & "F>\027\331.?d;_\2765\001\nB`\345;\256G\001?\027\331.?\000\000\000\0005\001"
 & "\n\343\245\233<\201\225\203>\027\331.?\000\000\000\0005\001\no\022\203<"
 & "ffF?\037\205\353>\000\000\000\0005\001\no\022\203<\354Q\370>\037\205\353"
 & ">\000\000\000\0005\001\nh\221\355<\327\243\360>\037\205\353>\n\327#\274"
 & "5\001\n\n\327\243;\327\243\360>\037\205\353>?5^\2765\001\n\246\233\304<"
 & "#\333\371>\037\205\353>?5^\2765\001\n\n\327\243;\037\205\253>\037\205\353"
 & ">\000\000\000\0005\001\n`\345P=\016-\262>\037\205\353>\n\327#\2745\001\n"
 & "\364\375T<\027\331\216>X9\024?\n\327#\2745\001\n\274t\023<}?\365>ff\346"
 & ">\n\327#\2745\001\n\343\245\233<X9\364>ff\346>B`e\2745\001\n1\010\254<\374"
 & "\2511?ff\346>B`e\2745\001\n\226C\213<}?\365>ff\346>\000\000\000\0005\001"
 & "\nB`e<33\363>ff\346>d;_\2765\001\n\033/\335<\031\004\326>ff\346>\000\000"
 & "\000\0005\001\n\315\314\314=33\263>{\024.?\020X9\2765\001\nL7\211=\'1\010"
 & ">V\016-?B`e\2745\001\n\270\036\005>\\\217\302>{\024.?\020X9\2765\001\n\n"
 & "\327#=\022\203\000?B`\245>Zd;>000000000000000005\001\no\022\203<7\211\201"
 & ">\037\205\353>\000\000\000\0005\001\n\343\245\233<\331\316w>h\221-?\301"
 & "\312\001?5\001\n\311v\276=\323M\242>h\221-?\301\312\001?5\001\nX94</\335"
 & "\244>D\213,?\301\312\001?5\001\no\022\203:\325x\251>\370S#?\'1\010?5\001"
 & "\nX94</\335\244>#\333\031?1\010\f?5\001\n\364\375\324<\033/\235>\347\373"
 & ")?\301\312\001?5\001\n\374\251\361=\033/]>\356|\037?T\343\005?5\001\n\274"
 & "t\223<\256G\241>\356|\037?T\343\005?05\001\nL7\211=\'1\210>\031\0046?o\022"
 & "\003?5\001\n\364\375T=\313\241\205>\000\000\000\000\366(\\\27605\001\n\246"
 & "\233D\273%\006\301>h\221-?\301\312\001?5\001\no\022\203=\333\371~>\000\000"
 & "\000\000\303\365(\2765\001\nX94</\335\244>D\213,?\301\312\001?05\001\n\360"
 & "\247\306=\205\353Q>\240\032\357>d;_\2765\001\n\207\026Y=B`\345>X9\024?\337"
 & "O\r\2765\001\n\246\233D<H\341\372>V\016-?o\022\003\2745\001\nX9\264\274"
 & "\313\241\005?\254\034\032?h\221m=5\001\n\207\026Y\275o\022\003?\325x)?\000"
 & "\000\000\0005\001\nL7\211=\'1\010>V\016-?B`e\2745\001\n)\\\217=\254\034"
 & "\332>V\016-?P\215\027\2761\317\005\000\0005\001\n\343\245\033=\376\3248"
 & "?V\016-?B`e\2745\001\no\022\203;q=\212>V\016-?^\272\311>5\001\n1\010,=\325"
 & "x\351>\364\375\324>\002+\007=5\001\n\217\302\365<9\264\010?\313\241\305"
 & ">\033/\335=5\001\nw\276\037=\205\353\221>\201\225\203>\360\247F>5\001\n"
 & "\343\245\033=\376\3248?V\016-?B`e\2741\314\005\000\0005\001\n\325xi=\262"
 & "\235\257>V\016-?\024\256\307>5\001\n\217\302\365<9\264\010?7\211\001?\000"
 & "\000\000\0005\001\no\022\203:P\215\227>V\016-?q=\212>5\001\n\217\302u<\364"
 & "\375\224>V\016-?\335$\206>1\311\005\000\0005\001\n\274t\023=o\022\003?f"
 & "f\346>d;_\2765\001\nX9\264\274ff\346>\325x)?-\262\035\2765\001\n)\\\217"
 & "=\020X9>R\270\236>\250\306K>1\321\005\000\0005\001\n\325xi=\266\363}>V\016"
 & "-?q=\212>5\001\n\246\233\304;\343\245\233>V\016-?^\272\311>5\001\nX94=\372"
 & "~\352>\364\375\324>\002+\007=5\001\nP\215\027=\331\3167?V\016-?B`e\2745"
 & "\001\n\266\363\375<\333\371>?V\016-?B`e\2745\001\n\217\302u<\331\3167?V"
 & "\016-?B`e\2745\001\n\217\302\365<\022\203\300>\215\227\356>d;_\2765\001"
 & "\n\217\302u<j\2744?\n\327c?\000\000\000\0005\001\n\217\302u<j\2744?\n\327"
 & "c?\000\000\000\0005\001\n\217\302u<j\2744?\345\320b?\000\000\000\0005\001"
 & "\n\217\302u<j\2744?\232\231Y?\000\000\000\0005\001\n\217\302u<j\2744?\217"
 & "\302U?\000\000\000\0005\001\n\217\302u<j\2744?T\343e?\000\000\000\0005\001"
 & "\n\000\000\000\000\221\355\\?\325x)?\000\000\000\0005\001\nB`\345<J\f\""
 & "?V\016-?\366(\\\2765\001\n\246\233D<\376\324\030?\n\327c?\000\000\000\000"
 & "5\001\n\246\233D<\376\324\030?\n\327c?\000\000\000\0005\001\n\246\233D<"
 & "\376\324\030?\345\320b?\000\000\000\0005\001\n\246\233D<\376\324\030?\217"
 & "\302U?\000\000\000\0005\001\n\274t\223<\256G\241>\n\327c?\000\000\000\000"
 & "5\001\n\274t\223<\323M\242>\n\327c?\000\000\000\0005\001\nX94</\335\244"
 & ">\345\320b?\000\000\000\0005\001\n\274t\223<\256G\241>\217\302U?\000\000"
 & "\000\0005\001\no\022\203<)\\/?\325x)?\000\000\000\0005\001\n\246\233D<\364"
 & "\3754?\232\231Y?X94\2745\001\n\226C\013=\305 0?\n\327c?B`e\2745\001\n\226"
 & "C\013=\305 0?\n\327c?B`e\2745\001\n\226C\013=\305 0?\345\320b?B`e\2745\001"
 & "\n\226C\013=\305 0?\232\231Y?B`e\2745\001\n\226C\013=\305 0?\217\302U?B"
 & "`";

CONST E16_19 =
   "e\2745\001\n\343\245\033=y\351\006?\311v\376>o\022\003<5\001\n\226C\013"
 & "=\305 0?m\347;?\n\327\243\2755\001\nB`e<\341z4?\n\327c?B`e\2745\001\nB`"
 & "e<\341z4?\n\327c?B`e\2745\001\nB`e<\341z4?\345\320b?B`e\2745\001\nB`e<\341"
 & "z4?\217\302U?B`e\2745\001\nX9\264<\317\3673?\n\327c?\000\000\000\0005\001"
 & "\no\022\203<\203\300\n?\325x)?\000\000\000\0005\001\n\246\233D<\262\235"
 & "\357>\027\331.?\274t\023\2745\001\nP\215\027=\323M\342>h\221-?\n\327#\274"
 & "5\001\nP\215\027=\323M\342>h\221-?\n\327#\2745\001\nP\215\027=\323M\342"
 & ">D\213,?\n\327#\2745\001\nP\215\027=\323M\342>\370S#?\n\327#\2745\001\n"
 & "P\215\027=\323M\342>\356|\037?\n\327#\2745\001\nP\215\027=\323M\342>\031"
 & "\0046?\n\327#\2745\001\n\343\245\033=\301\312!?\037\205\353>\n\327#\274"
 & "5\001\n\315\314\314<\252\361\322>\037\205\353>\366(\\\2765\001\n\315\314"
 & "\314<\207\026\331>h\221-?\n\327#\2745\001\n\315\314\314<\207\026\331>h\221"
 & "-?\n\327#\2745\001\n\315\314\314<\207\026\331>D\213,?\n\327#\2745\001\n"
 & "\315\314\314<\207\026\331>\356|\037?\n\327#\2745\001\no\022\003\2747\211"
 & "\201>h\221-?\000\000\000\0005\001\no\022\203<\341z\224>h\221-?\000\000\000"
 & "\0005\001\no\022\203\274=\n\227>D\213,?\000\000\000\0005\001\n\274t\023"
 & "\274\274t\223>\356|\037?\000\000\000\0005\001\nh\221\355<\351&\361>\262"
 & "\235/?\n\327#\2745\001\no\022\203<\354Q\370>\370S#?\000\000\000\0005\001"
 & "\nh\221\355<\327\243\360>h\221-?\n\327#\2745\001\nh\221\355<\327\243\360"
 & ">h\221-?\n\327#\2745\001\nh\221\355<\327\243\360>D\213,?\n\327#\2745\001"
 & "\nh\221\355<\327\243\360>\370S#?\n\327#\2745\001\nh\221\355<\327\243\360"
 & ">\356|\037?\n\327#\2745\001\n\217\302\365<9\264\010?\223\030\004?\n\327"
 & "#\2745\001\nh\221\355<\327\243\360>V\016\r?B`\345\2755\001\n\274t\023<}"
 & "?\365>h\221-?\n\327#\2745\001\n\274t\023<}?\365>h\221-?\n\327#\2745\001"
 & "\n\274t\023<}?\365>D\213,?\n\327#\2745\001\n\274t\023<}?\365>\356|\037?"
 & "\n\327#\2745\001\nB`e<33\363>h\221-?d;_\2765\001\n\n\327\243;\327\243\360"
 & ">\027\331.??5^\2765\001\nB`e<33\363>\356|\037?d;_\27605\001\0051\005\000"
 & "\000\0005\001\t\347\373)\276\000\000\200?\004Vn?fff\276\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001\001"
 & "\001\001\001\001\001\000\001\001\000\001\001\001\000\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\004V\216>\004V\216>\217\302\265>\004V\016?\004V\016?\201\225c?"
 & "\203\300*?\370Sc>\372~\252>\372~\252>\002+\307>\006\201\025?\004V\216>\006"
 & "\201\025?\004V\216>\004V\216>\004V\016?\004V\016?\004V\016?\004V\016?\004"
 & "V\016?\004V\016?\004V\016?\004V\016?\004V\016?\004V\016?\004V\216>\004V"
 & "\216>\006\201\025?\006\201\025?\006\201\025?\004V\016?\205\353\201?\203"
 & "\300*?\203\300*?\376\3248?\376\3248?\203\300*?\177j\034?\002+G?\376\324"
 & "8?\004V\216>\000\000\000?\203\300*?\004V\016?}?U?\376\3248?\002+G?\203\300"
 & "*?\002+G?\376\3248?\203\300*?\177j\034?\376\3248?\203\300*?\374\251q?\203"
 & "\300*?\203\300*?\177j\034?\004V\216>\004V\216>\004V\216>\305 \360>\004V"
 & "\016?\370Sc>\004V\016?\004V\016?\000\000\000?\004V\016?\004V\016?\004V\216"
 & ">\004V\016?\004V\016?\370Sc>\370Sc>\000\000\000?\370Sc>}?U?\004V\016?\004"
 & "V\016?\004V\016?\004V\016?\372~\252>\000\000\000?\004V\216>\004V\016?\000"
 & "\000\000?\376\3248?\000\000\000?\000\000\000?\000\000\000?\f\002\253>\270"
 & "\036\205>\f\002\253>\006\201\025?\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\004V\216>\372~\252>\372~\252>\372~\252>\372~\252>\372~"
 & "\252>\372~\252>\372~\252>\372~\252>\000\000\000\000\372~\252>\372~\252>"
 & "\000\000\000\000\372~\252>\372~\252>\372~\252>\000\000\000\000\372~\252"
 & ">\004V\016?\004V\016?\004V\016?\004V\016?\270\036\205>\004V\016?\372~\252"
 & ">\010\254<?\244p\275>\004V\016?\006\201\025?\372~\252>\010\254<?\372~\252"
 & ">\315\314\314>\006\201\025?\372~\252>\372~\252>\372~\252>\004V\016?\325"
 & "x\t?\004V\216>\372~\252>\372~\252>H\341\272>\004V\016?\006\201U?\006\201"
 & "U?\006\201U?\177j\034?\203\300*?\203\300*?\203\300*?\203\300*?\203\300*"
 & "?\203\300*?\000\000\200?\376\3248?\203\300*?\203\300*?\203\300*?\203\300"
 & "*?\004V\216>\004V\216>\004V\216>\004V\216>\376\3248?\376\3248?\002+G?\002"
 & "+G?\002+G?\002+G?\002+G?\006\201\025?\002+G?\376\3248?\376\3248?\376\324"
 & "8?\376\3248?\203\300*?\203\300*?\177j\034?\004V\016?\004V\016?\004V\016"
 & "?\004V\016?\004V\016?\004V\016?\201\225c?\000\000\000?\004V\016?\004V\016";

CONST E16_20 =
   "?\004V\016?\004V\016?\004V\216>\004V\216>\004V\216>\004V\216>\004V\016?"
 & "\004V\016?\004V\016?\004V\016?\004V\016?\004V\016?\004V\016?\006\201\025"
 & "?\177j\034?\004V\016?\004V\016?\004V\016?\004V\016?\000\000\000?\004V\016"
 & "?\000\000\000?0000000000000000000000000000000005\001\n\354Q\270=\356|?>"
 & "\331\3167?\000\000\000\0005\001\n)\\\217=\205\353\221>\331\3167?V\016\355"
 & ">5\001\nB`\345<\213l\007?\305 0?\000\000\000\0005\001\no\022\003=\270\036"
 & "\005?ffF?\037\205\353\2755\001\nw\276\037=\232\231Y?\317\3673?\343\245\233"
 & "\2745\001\nX94=\270\036%?\331\3167?\217\302u\2745\001\n\207\026Y=\234\304"
 & " >\331\3167?V\016\355>5\001\n\226C\213=\207\026\231>\343\245;?\317\367S"
 & "\2765\001\n\226C\013=\024\256\207>\343\245;?\317\367S\2765\001\nw\276\037"
 & "=!\260\262>\331\3167?\010\254\334>5\001\nw\276\037=\037\205\013?\256G\001"
 & "?\000\000\000\0005\001\n\016-\262=\201\225C>\207\026\331=+\207\026\2765"
 & "\001\nw\276\037=\037\205\013?\317\367\223>\033/]>5\001\n\016-\262=\201\225"
 & "C>\207\026\331=\000\000\000\0005\001\n\226C\213\274=\n\227>\010\254<?\343"
 & "\245\233\2745\001\nP\215\027=/\335\004?\317\3673?\343\245\233\2745\001\n"
 & "\027\331\316=\331\316\267>\317\3673?\000\000\000\0005\001\n\364\375\324"
 & "<\301\312\001?\317\3673?\000\000\000\0005\001\n\226C\013=\313\241\005?\317"
 & "\3673?\343\245\233\2745\001\n\315\314\314<T\343\005?\317\3673?\000\000\000"
 & "\0005\001\no\022\003=\201\225\003?\305 0?\343\245\233\2745\001\n\343\245"
 & "\033=\246\233\004?\317\3673?\343\245\233\2745\001\nP\215\027=T\343\005?"
 & "\305 0?\000\000\000\0005\001\n\343\245\033=\035Z\004?\317\3673?\343\245"
 & "\233\2745\001\n1\010,=\201\225\003?\317\3673?\343\245\233\2745\001\n\016"
 & "-\262=\201\225C>\223\030\004?\000\000\000\0005\001\n\016-\262=\201\225C"
 & ">\223\030\004?+\207\026\2765\001\n\246\233D=L7\t?\244p\375>X94<5\001\nw"
 & "\276\037=\037\205\013?\024\256\307>\037\205\353=5\001\n\246\233D=L7\t?\244"
 & "p\375>X94<5\001\nB`e=m\347\373>\254\034:?\000\000\000\0005\001\n+\207\026"
 & ">?5^?\010\254<?\343\245\233\2745\001\nB`e<\213l\'?\331\3167?\000\000\000"
 & "\0005\001\nP\215\227=\022\203 ?\331\3167?\000\000\000\0005\001\nX94=\004"
 & "V.?\010\254<?\343\245\233\2745\001\nT\343\245=D\213,?\331\3167?\000\000"
 & "\000\0005\001\n\305 \260=-\262\035?\331\3167?\000\000\000\0005\001\n\305"
 & " \260=}?\025?\331\3167?\000\000\000\0005\001\n\246\233D=X94?\010\254<?\343"
 & "\245\233\2745\001\n-\262\235=B`%?\331\3167?\000\000\000\0005\001\n5^\272"
 & "=\022\203@>\331\3167?\000\000\000\0005\001\n\226C\213<\321\"\333>\331\316"
 & "7?\343\245\233\2745\001\n\343\245\233=^\272)?\331\3167?\000\000\000\000"
 & "5\001\n\343\245\233=\325x\t?\331\3167?\000\000\000\0005\001\n\006\201\225"
 & "=\345\320B?\331\3167?\000\000\000\0005\001\n\343\245\233=B`%?\331\3167?"
 & "\000\000\000\0005\001\nw\276\037=\033/=?\010\254<?\343\245\233\2745\001"
 & "\n\305 \260=d;\037?\331\3167?\000\000\000\0005\001\nw\276\037=\033/=?\010"
 & "\254<?B`e\2755\001\nX9\264=\240\032/?\331\3167?\000\000\000\0005\001\n9"
 & "\264H=R\270\036?\010\254<?\343\245\233\2745\001\nB`e<\376\324\030?\331\316"
 & "7?\000\000\000\0005\001\n\301\312\241=/\335$?\331\3167?\343\245\233\274"
 & "5\001\n\n\327\243<\313\241%?\331\3167?\000\000\000\0005\001\no\022\203<"
 & "h\221m?\331\3167?\000\000\000\0005\001\n\343\245\233<T\343%?\331\3167?\000"
 & "\000\000\0005\001\nB`e<\002+\'?\331\3167?\000\000\000\0005\001\n\177j\274"
 & "<+\207\026?\331\3167?\000\000\000\0005\001\n%\006\201=\000\000\200>\376"
 & "\3248?9\264H\2765\001\n\226C\213\274=\n\227>\010\254<?\343\245\233\2745"
 & "\001\nB`\345<\366(\\>\376\3248?9\264H\2765\001\nB`e\274\307K\367>\305 0"
 & "?\002+\207>5\001\n\000\000\000\000\004V\016?\232\231\231\275\000\000\000"
 & "\2765\001\n\270\036\205=V\016->\232\2319?\327\243\360>5\001\n\274t\023="
 & "\024\256\007?^\272\t?\217\302u\2745\001\nh\221m=\035Z\004?\331\3167?\217"
 & "\302u\2745\001\n\217\302\365<X9\364>^\272\t?\217\302u\2745\001\n)\\\017"
 & "=\356|\377>\331\3167?\217\302u\2745\001\n\n\327#=\223\030\004?^\272\t?\217"
 & "\302u\2745\001\nB`e<\335$\206>5^:?\000\000\000\0005\001\n\n\327#=\356|\377"
 & ">^\272\t?\256Ga\2765\001\n\270\036\205=Zd\373>\331\3167?\000\000\000\000"
 & "5\001\nL7\211=R\270\036>\331\3167?\000\000\000\0005\001\no\022\203\274R"
 & "\270\036>\331\3167?=\nW\2765\001\nL7\211=\211A\000?\331\3167?\000\000\000"
 & "\0005\001\nL7\211=R\270\036>\331\3167?\000\000\000\0005\001\n\270\036\205"
 & "=/\335D?^\272\t?\000\000\000\0005\001\n\270\036\205=Zd\373>^\272\t?\000"
 & "\000\000\0005\001\n)\\\017=B`\005?^\272\t?B`e\2745\001\nh\221m=\035Z\004"
 & "?^\272\t?\317\367S\2765\001\n)\\\017=\221\355\374>^\272\t?\317\367S\276"
 & "5\001\n-\262\235=\347\373\251>^\272\t?\000\000\000\0005\001\no\022\003="
 & "h\221\355>^\272\t?\217\302u\2745\001\nB`e<\201\225\203>\226C+?B`\345\273"
 & "5\001\n\226C\213=5^\372>T\343\005?\217\302u\2745\001\no\022\003<m\347\373"
 & ">T\343\005?\000\000\000\0005\001\nB`e<\006\2015?T\343\005?\000\000\000\000"
 & "5\001\nX94<H\341\372>T\343\005?\000\000\000\0005\001\nX94<5^\372>T\343\005"
 & "?\321\"[\2765\001\n\266\363\375<\305 \360>T\343\005?\000\000\000\0005\001"
 & "\n1\010,=\006\201\225>\376\3248?9\264H\2765\001\n\022\203\300=\f\002+>\010"
 & "\254<?\343\245\233\2745\001\n1\010,=\006\201\225>\376\3248?9\264H\2765\001"
 & "\n#\333y=T\343\005?y\351\246>\354Q8>000000000000000005\001\n\\\217\302="
 & "Zd;>T\343\005?\000\000\000\0005\001\nB`e<b\020X>m\347;?\331\316\027?5\001"
 & "\n#\333\371=\370S\243>m\347;?\331\316\027?5\001\n1\010\254<w\276\237>m\347"
 & ";?\331\316\027";

CONST E16_21 =
   "?5\001\no\022\203\273D\213\254>\376\3248?\321\"\033?5\001\n\n\327#<B`\245"
 & ">\240\032/?\022\203 ?5\001\n\364\375T<\035Z\244>\321\";?\354Q\030?5\001"
 & "\n\331\316\367=\207\026Y>j\2744?\276\237\032?5\001\n\n\327#=\031\004\226"
 & ">j\2744?\276\237\032?05\001\n\232\231\231=\246\233\204>7\211A?\230n\022"
 & "?5\001\n\354Q8=\246\233\204>\000\000\000\000fff\27605\001\n\266\363\375"
 & "<sh\321>m\347;?\331\316\027?5\001\n\006\201\225=\252\361\222>\000\000\000"
 & "\000fff\2765\001\n1\010\254<w\276\237>m\347;?\331\316\027?05\001\n\374\251"
 & "\361=\366(\\>T\343\005?\024\256G\2765\001\n`\345P=\370S\003?\356|\037?\037"
 & "\205\353\2755\001\n\002+\007=\347\373\t?\331\3167?o\022\203\2745\001\nB"
 & "`\345<\002+\007?5^\032?\203\300\312=5\001\n\246\233D;h\221\r?\305 0?\000"
 & "\000\000\0005\001\n\022\203\300=\f\002+>\010\254<?\343\245\233\2745\001"
 & "\n\305 0=o\022\003?\010\254<?\201\225C\2761\230\006\000\0005\001\nB`e\274"
 & "\022\203@?\010\254<?\343\245\233\2745\001\n\246\233\304<\351&\261>\010\254"
 & "<?\343\245\233>5\001\n\360\247\306=\f\002\353>\035Z\344>\033/\335=5\001"
 & "\nw\276\037=\037\205\013?\024\256\307>\033/\335=5\001\nX94=\317\367\223"
 & ">/\335\244>h\221m>5\001\nB`e\274\022\203@?\010\254<?\343\245\233\2741\225"
 & "\006\000\0005\001\n\033/]=\351&\261>\317\3673?\230n\322>5\001\nw\276\037"
 & "=\037\205\013?7\211\001?\000\000\000\0005\001\no\022\203;B`\245>\317\367"
 & "3?;\337\217>5\001\n\n\327\243;ff\246>\317\3673?q=\212>1\222\006\000\000"
 & "5\001\n\226C\213=5^\372>T\343\005?\317\367S\2765\001\n\274t\223<\311v\376"
 & ">\331\3167?\351&1\2765\001\n-\262\235=\027\331N>\256G\241>\\\217B>1\232"
 & "\006\000\0005\001\n\305 0=\370Sc>\317\3673?;\337\217>5\001\n\315\314\314"
 & "<\215\227\256>\010\254<?\343\245\233>5\001\n\360\247\306=\f\002\353>\035"
 & "Z\344>\033/\335=5\001\n\006\201\225=7\211A?\317\3673?\343\245\233\2745\001"
 & "\n\305 0=T\343E?\317\3673?\343\245\233\2745\001\n\354Q8=)\\O?\317\3673?"
 & "\343\245\233\2745\001\n5^\272=y\351\006?ff\006?\362\322M\2765\001\nB`e<"
 & "\213l\'?\362\322m?\000\000\000\0005\001\nB`e<\213l\'?\362\322m?\000\000"
 & "\000\0005\001\nB`e<\213l\'?\362\322m?\000\000\000\0005\001\nB`e<\213l\'"
 & "?\203\300j?\000\000\000\0005\001\nB`e<\213l\'?\360\247f?\000\000\000\000"
 & "5\001\nB`e<\213l\'?\004Vn?\000\000\000\0005\001\no\022\003<\274ts?\331\316"
 & "7?\000\000\000\0005\001\nX94=\004V.?\010\254<?fff\2765\001\n\305 \260=-"
 & "\262\035?\362\322m?\000\000\000\0005\001\n\305 \260=-\262\035?\362\322m"
 & "?\000\000\000\0005\001\n\305 \260=-\262\035?\362\322m?\000\000\000\0005"
 & "\001\n\305 \260=-\262\035?\360\247f?\000\000\000\0005\001\n\364\375T\274"
 & "\022\203@>\362\322m?\000\000\000\0005\001\n5^\272=\006\201\225>\362\322"
 & "m?\000\000\000\0005\001\n\246\233\304\273\205\353\221>\362\322m?\000\000"
 & "\000\0005\001\n\364\375T<\'1\210>\360\247f?\000\000\000\0005\001\n\000\000"
 & "\000\000D\213,?\331\3167?\000\000\000\0005\001\n\343\245\233=B`%?\203\300"
 & "j?\000\000\000\0005\001\nw\276\037=\033/=?\362\322m?\343\245\233\2745\001"
 & "\nw\276\037=\033/=?\362\322m?\343\245\233\2745\001\nw\276\037=\033/=?\362"
 & "\322m?\343\245\233\2745\001\nw\276\037=\033/=?\203\300j?\343\245\233\274"
 & "5\001\nw\276\037=\033/=?\360\247f?\343\245\233\2745\001\nw\276\037=\037"
 & "\205\013?7\211\001?\000\000\000\0005\001\nw\276\037=\244p=?\010\254<?\343"
 & "\245\233\2745\001\n\301\312\241=/\335$?\362\322m?\343\245\233\2745\001\n"
 & "\301\312\241=/\335$?\362\322m?\343\245\233\2745\001\n\301\312\241=/\335"
 & "$?\362\322m?\343\245\233\2745\001\n\301\312\241=/\335$?\360\247f?\343\245"
 & "\233\2745\001\nB`e<\002+\'?\362\322m?\000\000\000\0005\001\n\305 \260=d"
 & ";\037?\331\3167?\000\000\000\0005\001\nL7\211=\016-\022?5^:?\217\302u\274"
 & "5\001\n\274t\023=\024\256\007?m\347;?\217\302u\2745\001\n\274t\023=\024"
 & "\256\007?m\347;?\217\302u\2745\001\n\274t\023=\024\256\007?m\347;?\217\302"
 & "u\2745\001\n\274t\023=\024\256\007?\376\3248?\217\302u\2745\001\n\274t\023"
 & "=\024\256\007?j\2744?\217\302u\2745\001\n\274t\023=\024\256\007?7\211A?"
 & "\217\302u\2745\001\n\274t\023=\376\324X?^\272\t?\217\302u\2745\001\n\217"
 & "\302\365<X9\364>^\272\t?fff\2765\001\n\n\327#=\223\030\004?m\347;?\217\302"
 & "u\2745\001\n\n\327#=\223\030\004?m\347;?\217\302u\2745\001\n\n\327#=\223"
 & "\030\004?m\347;?\217\302u\2745\001\n\n\327#=\223\030\004?j\2744?\217\302"
 & "u\2745\001\n\364\375T\274\177j<>m\347;?\000\000\000\0005\001\n\\\217\302"
 & "=\006\201\225>m\347;?\000\000\000\0005\001\n\246\233\304\273\205\353\221"
 & ">m\347;?\000\000\000\0005\001\n\364\375T<\'1\210>j\2744?\000\000\000\000"
 & "5\001\n)\\\017=\313\241\005?\010\254<?\217\302u\2745\001\n\270\036\205="
 & "Zd\373>\376\3248?\000\000\000\0005\001\n)\\\017=B`\005?m\347;?B`e\2745\001"
 & "\n)\\\017=B`\005?m\347;?B`e\2745\001\n)\\\017=B`\005?m\347;?B`e\2745\001"
 & "\n)\\\017=B`\005?\376\3248?B`e\2745\001\n)\\\017=B`\005?j\2744?B`e\2745"
 & "\001\nw\276\037=\037\205\013?\335$\006?\343\245\233\2745\001\nB`\345<\325"
 & "x\t?\037\205\013?X9\264\2745\001\n\226C\213=5^\372>m\347;?\217\302u\274"
 & "5\001\n\226C\213=5^\372>m\347;?\217\302u\2745\001\n\226C\213=5^\372>m\347"
 & ";?\217\302u\2745\001\n\226C\213=5^\372>j\2744?\217\302u\2745\001\nX94<5"
 & "^\372>m\347;?\321\"[\2765\001\nh\221m=\035Z\004?\331\3167?\317\367S\276"
 & "5\001\nX94<5^\372>j\2744?\321\"[\2765\001\0051\203\000\000\0005\001\tV\016"
 & "-\276\256G\201?J\fb??5^\276\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000";

CONST E16_22 =
   "\000\000\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\001\001\001\001\001\001\001\001\001\000\001\001"
 & "\000\001\001\001\000\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\200>\372~\252>"
 & "=\n\327>\000\000\000?\000\000\000?}?U?\002+G?\372~\252>\372~\252>\372~\252"
 & ">\000\000\000?\315\314,?\000\000\200>\315\314,?\000\000\200>\004V\216>\000"
 & "\000\000?\000\000\000?\000\000\000?\000\000\000?\000\000\000?\000\000\000"
 & "?\000\000\000?\000\000\000?\000\000\000?\000\000\000?\372~\252>\372~\252"
 & ">\315\314,?\315\314,?\315\314,?\000\000\000?\037\205k?\177j\034?\177j\034"
 & "?\203\300*?\376\3248?\177j\034?\177j\034?\376\3248?\376\3248?\372~\252>"
 & "\370S\343>\203\300*?\004V\016?}?U?\203\300*?\376\3248?\177j\034?\376\324"
 & "8?\177j\034?\000\000\000?\004V\016?\376\3248?\177j\034?}?U?\177j\034?\004"
 & "V\016?\004V\016?\002+\307>\004V\216>\002+\307>b\020\330>\000\000\000?\372"
 & "~\252>\000\000\000?\000\000\000?\370S\343>\000\000\000?\370S\343>\004V\216"
 & ">\000\000\000?\000\000\000?\004V\216>\004V\216>\370S\343>\004V\216>\376"
 & "\3248?\000\000\000?\000\000\000?\000\000\000?\000\000\000?\002+\307>\002"
 & "+\307>\004V\216>\000\000\000?\370S\343>\203\300*?\370S\343>\370S\343>\002"
 & "+\307>\315\314\314>\315\314\214>\315\314\314>\372~\n?\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\004V\216>\372~\252>\372~\252>\372~"
 & "\252>\372~\252>\372~\252>\372~\252>\372~\252>\372~\252>\000\000\000\000"
 & "\372~\252>\372~\252>\000\000\000\000\372~\252>\372~\252>\372~\252>\000\000"
 & "\000\000\002+\307>\000\000\000?\000\000\000?\000\000\000?\000\000\000?\315"
 & "\314\214>\000\000\000?\372~\252>\\\217B?\337O\215>\000\000\000?\315\314"
 & ",?\372~\252>\\\217B?\372~\252>\315\314\314>\315\314,?\232\231\231>\232\231"
 & "\231>\372~\252>\000\000\000?T\343\005?\000\000\200>\372~\252>\232\231\231"
 & ">R\270\236>\000\000\000?\000\000@?\000\000@?\000\000@?\000\000\000?\177"
 & "j\034?\177j\034?\177j\034?\177j\034?\177j\034?\177j\034?\201\225c?\203\300"
 & "*?\177j\034?\177j\034?\177j\034?\177j\034?\372~\252>\372~\252>\372~\252"
 & ">\372~\252>\376\3248?\203\300*?\376\3248?\376\3248?\376\3248?\376\3248?"
 & "\376\3248?\315\314,?\376\3248?\376\3248?\376\3248?\376\3248?\376\3248?\004"
 & "V\016?\177j\034?\000\000\000?\000\000\000?\000\000\000?\000\000\000?\000"
 & "\000\000?\000\000\000?\000\000\000?\203\300*?\370S\343>\370S\343>\370S\343"
 & ">\370S\343>\370S\343>\004V\216>\004V\216>\004V\216>\004V\216>\000\000\000"
 & "?\000\000\000?\000\000\000?\000\000\000?\000\000\000?\000\000\000?\000\000"
 & "\000?\315\314,?\000\000\000?\000\000\000?\000\000\000?\000\000\000?\000"
 & "\000\000?\370S\343>\000\000\000?\370S\343>00000000000000000000000000000"
 & "00005\001\nw\276\037=\276\237\232>\203\300*?X94\2745\001\n\274t\023>\033"
 & "/\335>\372~*?P\215\327>5\001\no\022\003;q=\n?V\016-?\000\000\000\0005\001"
 & "\n\266\363\375<\311v\376>\321\";?\242E\266\2755\001\n\301\312\241=q=J?V"
 & "\016-?\364\375T\2745\001\n\343\245\233=\207\0269?\372~*?\274t\223\2745\001"
 & "\n\276\237\032>\341z\224>\372~*?d;\337>5\001\n1\010,=\256G\241>\226C+?\020"
 & "X9\2765\001\no\022\203<\317\367\223>\226C+?\354Q8\2765\001\no\022\003>m"
 & "\347\373>\372~*?\\\217\202>5\001\n\305 \260==\n\027?7\211\001?\000\000\000"
 & "\0005\001\no\022\203\273q=\n>\027\331\316=\223\030\004\2765\001\n\305 \260"
 & "==\n\027?\230n\222>\256Ga>5\001\n\033/\335<\337O\r>\315\314\314=X94\274"
 & "5\001\n\270\036\205\275\313\241\305>\372~*?\274t\223\2745\001\no\022\003"
 & "=\311v\376>V\016-?B`\345\2735\001\n9\264H=sh\321>V\016-?\000\000\000\000"
 & "5\001\n\246\233D<\213l\347>V\016-?\000\000\000\0005\001\n\217\302u<{\024"
 & "\356>V\016-?B`\345\2735\001\no\022\203:}?\365>V\016-?\000\000\000\0005\001"
 & "\n\217\302u<Zd\373>\372~*?B`\345\2735\001\n\217\302\365<B`\005?\262\235"
 & "/?B`\345\2735\001\n\232\231\231=\325x\t?\372~*?o\022\003\2745\001\n\217"
 & "\302\365<\177j\374>V\016-?B`\345\2735\001\n\177j\274<m\347\373>V\016-?\226"
 & "C\213\2745\001\n\315\314L=\313\241\205>\301\312\341>X94\2745\001\n\033/"
 & "\335<\313\241\205>\301\312\341>\223\030\004\2765\001\n1\010\254=P\215\027"
 & "?\201\225\003?o\022\003\2745\001\n\305 \260==\n\027?\313\241\305>\217\302"
 & "\365=5\001\n1\010\254=P\215\027?\201\225\003?o\022\003\2745\001\n\002+\007"
 & ">\374\251\361>\347\373)?\246\233D\2745\001\n\374\251\361=\004VN?\372~*?"
 & "\274t\223\2745\001\n`\345P\275Nb\020?\f\002+?\000\000\000\0005\001\no\022"
 & "\003\274+\207\026?\002+\'?\000\000\000\0005\001\n\002+\207=Nb0?\372~*?\274"
 & "t\223\2745\001\no\022\003\274333?\002+\'?\000\000\000\0005\001\no\022\203"
 & "\272\323M\"?\002+\'?\000\000\000\0005\001\no\022\003<\270\036%?\002+\'";

CONST E16_23 =
   "?\000\000\000\0005\001\n\364\375T=\376\3248?\372~*?\274t\223\2745\001\n"
 & "o\022\003\274\035ZD?\002+\'?\000\000\000\0005\001\no\022\003\274\246\233"
 & "\304>\002+\'?\000\000\000\0005\001\n\246\233\304\273Zd\373>\002+\'?\274"
 & "t\223\2745\001\nB`\345;\376\3248?\002+\'?\000\000\000\0005\001\no\022\003"
 & "\274\240\032\017?\002+\'?\000\000\000\0005\001\n\274t\223\274\356|_?\002"
 & "+\'?\000\000\000\0005\001\n\n\327\243\274\254\034:?\002+\'?\217\302u\274"
 & "5\001\n\217\302u=\252\3612?\372~*?\274t\223\2745\001\n\000\000\000\000H"
 & "\341\032?\002+\'?\000\000\000\0005\001\n\374\251q=\252\3612?\372~*?5^:\276"
 & "5\001\n\364\375T\274+\207\026?\002+\'?\000\000\000\0005\001\n\226C\213<"
 & "J\f\002?\203\300*?\274t\223\2745\001\n\374\251q=J\f\"?\002+\'?\000\000\000"
 & "\0005\001\n`\345\320=\n\327C?\002+\'?\274t\223\2745\001\n\343\245\233=\305"
 & " 0?\002+\'?\274t\223\2745\001\nsh\221=\236\357g?\002+\'?\274t\223\2745\001"
 & "\nh\221\355\274\024\256\'?\002+\'?\000\000\000\0005\001\nw\276\237=J\f\""
 & "?\002+\'?\000\000\000\0005\001\n\246\233\304\273\321\"\033?\002+\'?\000"
 & "\000\000\0005\001\n1\010\254<\'1\310>^\272)?\010\254\034\2765\001\n\236"
 & "\357\'\275\370S\243>\372~*?\274t\223\2745\001\n\246\233D<\201\225\303>^"
 & "\272)?\010\254\034\2765\001\n\000\000\000\000b\020\330>\372~*?\254\034\232"
 & ">5\001\n\000\000\000\000\000\000\000?\232\231\231\275\000\000\000\2765\001"
 & "\n\240\032/>R\270\236>\372~*?d;\337>5\001\n\226C\213<F\266\363>\301\312"
 & "\341>X94\2745\001\n\177j\274<\016-\362>\027\331.?X94\2745\001\n\217\302"
 & "\365<\232\231\331>\301\312\341>X94\2745\001\n\217\302u<y\351\006?\027\331"
 & ".?\364\375T\2745\001\n\266\363\375<\252\361\322>\301\312\341>X94\2745\001"
 & "\n+\207\026\276\207\026\331>h\221-?\317\367S\2765\001\no\022\003<\374\251"
 & "\361>\301\312\341>\252\361R\2765\001\n\343\245\233<j\274\364>\027\331.?"
 & "\274t\023\2745\001\n9\264H=\002+\207>\213l\'?X94\2745\001\n\266\363\375"
 & "\275\337O\215>\213l\'?\317\367S\2765\001\nB`e<1\010\354>\027\331.?X94\274"
 & "5\001\n\236\357\'=\027\331\216>\027\331.?X94\2745\001\n\246\233D<X94?\301"
 & "\312\341>\274t\023\2745\001\nB`e<!\260\362>\301\312\341>\274t\023\2745\001"
 & "\n\033/\335<\262\235\357>\301\312\341>X94\2745\001\n\232\231\231\275\305"
 & " \360>\301\312\341>\205\353Q\2765\001\n\315\314\314<\307K\367>\301\312\341"
 & ">\031\004V\2765\001\n\354Q8=\252\361\322>\301\312\341>\000\000\000\0005"
 & "\001\no\022\203<Zd\273>\323M\342>\364\375T\2745\001\nP\215\027=P\215\227"
 & ">\250\306\013?X94\2745\001\n1\010,=33\363>\301\312\341>X94\2745\001\n1\010"
 & "\254<\254\034\332>\301\312\341>\274t\223\2745\001\no\022\203<T\343%?\301"
 & "\312\341>\274t\223\2745\001\n\033/\335\274/\335\344>\301\312\341>X94\274"
 & "5\001\n\246\233\304\274\254\034\332>\301\312\341>\252\361R\2765\001\no\022"
 & "\003\273\\\217\302>\321\"\333>T\343\245\2755\001\n`\345P=Nb\320>;\337/?"
 & "}?5\2765\001\n=\n\327=\240\032/>\372~*?\274t\223\2745\001\nB`\345\273!\260"
 & "\262>;\337/?}?5\2765\001\n\n\327#=\022\203\000?B`\245>Zd;>0000000000000"
 & "00005\001\n9\264H=\327\243p>\301\312\341>X94\2745\001\n\331\316\367=d;\237"
 & ">\347\373)?m\347\373>5\001\n\354Q8>\004V\316>\347\373)?\221\355\374>5\001"
 & "\n5^\272=\270\036\305>L7)?m\347\373>5\001\n\315\314\314=\276\237\332>w\276"
 & "\037?\035Z\004?5\001\n\203\300\312=\230n\322>}?\025?\'1\010?5\001\n\262"
 & "\235\357=\031\004\326>ff&?m\347\373>5\001\n\317\367S>\366(\234>\321\"\033"
 & "?J\f\002?5\001\n\321\"\333=)\\\317>\321\"\033?J\f\002?05\001\nR\270\036"
 & ">\217\302\265>`\3450?m\347\373>5\001\n\217\302\365\2745^:>\000\000\000\000"
 & "?5^\27605\001\n\311v\276=\376\324\370>\347\373)?\221\355\374>5\001\n\n\327"
 & "\243\274\315\314L>\n\327#=V\016-\2765\001\n\331\316\367=\254\034\332>L7"
 & ")?m\347\373>05\001\n\374\251q=/\335\244>\016-\362>\205\353Q\2765\001\n-"
 & "\262\235=\374\251\361>)\\\017?\230n\022\2765\001\n\n\327#<\035Z\004?\037"
 & "\205+?\246\233\304\2735\001\nX9\264\274\313\241\005?\376\324\030?\207\026"
 & "Y=5\001\n\033/\335<5^\032?\002+\'?\000\000\000\0005\001\n=\n\327=\240\032"
 & "/>\372~*?\274t\223\2745\001\n\207\026Y=1\010\354>\372~*?T\343%\2761a\007"
 & "\000\0005\001\n\236\357\'=b\0208?\372~*?\274t\223\2745\001\n1\010,=X9\264"
 & ">V\016-?;\337\317>5\001\n\207\026Y=\n\327\343>\004V\316>P\215\027=5\001"
 & "\n\305 \260==\n\027?\313\241\305>\033/\335=5\001\n9\264H=Nb\220>\\\217\202"
 & ">\246\233D>5\001\n\236\357\'=b\0208?\372~*?\274t\223\2741^\007\000\0005"
 & "\001\n\027\331\316=\335$\306>V\016-?\024\256\307>5\001\n\305 \260==\n\027"
 & "?7\211\001?\000\000\000\0005\001\n\002+\007=T\343\245>V\016-?\203\300\212"
 & ">5\001\n\305 0=h\221\255>V\016-?L7\211>1[\007\000\0005\001\n\217\302\365"
 & "\274\311v\376>\321\"\333>\031\004V\2765\001\n\256Ga=-\262\035?\002+\'?m"
 & "\347\373\2755\001\n)\\\217=\020X9>R\270\236>\250\306K>1c\007\000\0005\001"
 & "\n\305 0=sh\221>V\016-?\203\300\212>5\001\nL7\211=\020X\271>V\016-?;\337"
 & "\317>5\001\n\256Ga=/\335\344>\004V\316>P\215\027=5\001\n\002+\007=\177j"
 & "<?V\016-?\n\327#\2745\001\n\226C\013=w\276??V\016-?\n\327#\2745\001\n\177"
 & "j\274<\177j<?V\016-?\n\327#\2745\001\nB`\345<\177j\274>\351&\361>\205\353"
 & "Q\2765\001\n`\345P\275Nb\020?\211A`?\000\000\000\0005\001\n`\345P\275Nb"
 & "\020?\211A`?\000\000\000\0005\001\n`\345P\275Nb\020?\356|_?\000\000\000"
 & "\0005\001\n`\345P\275`\345\020?\031\004V?\000\000\000\0005\001\n`\345P\275"
 & "Nb\020?shQ?\000\000\000\0005\001\n`\345P\275Nb\020?J\fb?\000\000";

CONST E16_24 =
   "\000\0005\001\n\033/\335\274L7i?\002+\'?\000\000\000\0005\001\n\002+\207"
 & "=Nb0?\372~*??5^\2765\001\no\022\203\272\323M\"?\211A`?\000\000\000\0005"
 & "\001\no\022\203\272\323M\"?\211A`?\000\000\000\0005\001\no\022\203\272\323"
 & "M\"?\356|_?\000\000\000\0005\001\no\022\203\272\323M\"?shQ?\000\000\000"
 & "\0005\001\no\022\003\274\246\233\304>\211A`?\000\000\000\0005\001\no\022"
 & "\003\274\274t\323>\211A`?\000\000\000\0005\001\no\022\003\274\232\231\331"
 & ">\356|_?\000\000\000\0005\001\no\022\003\274R\270\336>shQ?\000\000\000\000"
 & "5\001\no\022\003\274333?\002+\'?\000\000\000\0005\001\n\n\327\243\274\254"
 & "\034:?\031\004V?\217\302u\2745\001\n\217\302u=\252\3612?\211A`?\274t\223"
 & "\2745\001\n\217\302u=\252\3612?\211A`?\274t\223\2745\001\n\217\302u=\252"
 & "\3612?\356|_?\274t\223\2745\001\n\217\302u=\252\3612?\031\004V?\274t\223"
 & "\2745\001\n\217\302u=\252\3612?shQ?\274t\223\2745\001\n\311v\276=\364\375"
 & "\024?\311v\376>o\022\003<5\001\n\217\302u=\252\3612?\376\3248?=\n\327\275"
 & "5\001\n`\345\320=\n\327C?\211A`?\274t\223\2745\001\n`\345\320=\n\327C?\211"
 & "A`?\274t\223\2745\001\n`\345\320=\n\327C?\356|_?\274t\223\2745\001\n`\345"
 & "\320=\n\327C?shQ?\274t\223\2745\001\nw\276\237=J\f\"?\211A`?\000\000\000"
 & "\0005\001\n\000\000\000\000\374\251\021?\002+\'?\000\000\000\0005\001\n"
 & "1\010,\276\177j\374>\362\322-?\317\367S\2765\001\n\226C\213<F\266\363>\347"
 & "\373)?X94\2745\001\n\226C\213<\020X\371>\347\373)?X94\2745\001\n\226C\213"
 & "<F\266\363>L7)?X94\2745\001\n\226C\213<\345\320\002?w\276\037?X94\2745\001"
 & "\n\226C\213<5^\372>\321\"\033?X94\2745\001\n\226C\213<F\266\363>`\3450?"
 & "X94\2745\001\n\177j\274<\n\327#?\301\312\341>X94\2745\001\n\364\375\324"
 & "<\232\231\331>\301\312\341>?5^\2765\001\n\266\363\375<\252\361\322>\347"
 & "\373)?X94\2745\001\n\266\363\375<\f\002\353>\347\373)?X94\2745\001\n\266"
 & "\363\375<\301\312\341>L7)?X94\2745\001\n\266\363\375<y\351\346>\321\"\033"
 & "?X94\2745\001\n9\264H=sh\221>\347\373)?X94\2745\001\n9\264H=\242E\266>\347"
 & "\373)?X94\2745\001\n\226C\013=\236\357\247>L7)?X94\2745\001\n9\264H=j\274"
 & "\264>\321\"\033?X94\2745\001\n\033/\335<\264\310\366>\027\331.?X94\2745"
 & "\001\nB`e<F\266\363>w\276\037?\274t\023\2745\001\n\033/\335<\262\235\357"
 & ">\347\373)?X94\2745\001\n\033/\335<\020X\371>\347\373)?X94\2745\001\n\033"
 & "/\335<\262\235\357>L7)?X94\2745\001\n\033/\335<\266\363\375>w\276\037?X"
 & "94\2745\001\n\033/\335<5^\372>\321\"\033?X94\2745\001\n\305 \260==\n\027"
 & "?\035Z\004?X94\2745\001\nB`\345<\305 \360>\362\322\r?q=\n\2765\001\n1\010"
 & ",=33\363>\347\373)?X94\2745\001\n1\010,=X9\364>\347\373)?X94\2745\001\n"
 & "1\010,=33\363>L7)?X94\2745\001\n1\010,=}?\365>\321\"\033?X94\2745\001\n"
 & "\246\233\304\274\f\002\353>\347\373)?\252\361R\2765\001\n\232\231\231\275"
 & "\305 \360>\027\331.?\205\353Q\2765\001\n\246\233\304\274\301\312\341>\321"
 & "\"\033?\252\361R\2760005\001\0051)\000\000\0005\001\t\213l\347\275w\276"
 & "??V\016M?\000\000\200\276\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\001\001\001\001\001\001\001\001\001\000\001\001"
 & "\000\001\001\001\000\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231";

CONST E16_25 =
   "\031?\000\000\000\000\232\231\031?\232\231\031?\000\000\000\000\232\231"
 & "\031?\232\231\031?\232\231\031?\000\000\000\000\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?0000000000000000000000000000000005\001\n"
 & "\027\331N>\250\306\313>\230n\022?\217\302u\2745\001\nq=\n>{\024\356>;\337"
 & "\017?\362\322\215>5\001\nB`e=\226C\013?\360\247&?\354Q8\2755\001\n\236\357"
 & "\247=/\335\004?\372~*?%\006\001\2765\001\n\n\327\243;\354Q\030?-\262\035"
 & "?\217\302u\2745\001\n\274t\023=\250\306\013?\f\002\013?\217\302u\2745\001"
 & "\n\240\032/>u\223\330>;\337\017?\362\322\215>5\001\n\211A`>1\010\354>-\262"
 & "\035?`\345\320\2755\001\n\004V\016>o\022\303>-\262\035?`\345\320\2755\001"
 & "\n5^\272=\323M\002?#\333\031?\211A`>5\001\nsh\221=\213l\007?j\274\364>w"
 & "\276\037=5\001\nm\347\373=L7\311>\016-2>\370S\343\2755\001\nsh\221=\213"
 & "l\007?\211A\240>;\337O>5\001\n\246\233D>`\345\320>\240\032/>\217\302u\274"
 & "5\001\n9\264\310=\022\203\000?\211A ?-\262\235\2755\001\n\016-\262=\370"
 & "S\003?-\262\035?\217\302u\2745\001\nT\343\245=\347\373\t?-\262\035?\000"
 & "\000\000\0005\001\n#\333y=\356|\377>-\262\035?\000\000\000\0005\001\n%\006"
 & "\201=\211A\000?-\262\035?\217\302u\2745\001\n\207\026Y=\301\312\001?-\262"
 & "\035?\000\000\000\0005\001\n)\\\217=B`\005?#\333\031?\217\302u\2745\001"
 & "\n\354Q\270=B`\005?-\262\035?\217\302u\2745\001\n\256Ga=\221\355\374>#\333"
 & "\031?\000\000\000\0005\001\n\347\373\251=\035Z\004?-\262\035?\217\302u\274"
 & "5\001\n\301\312\241=\\\217\002?-\262\035?\217\302u\2745\001\n\201\225C>"
 & "Nb\320>\232\231\331>\217\302u\2745\001\nm\347\373=`\345\320>\232\231\331"
 & ">\370S\343\2755\001\n\002+\207=T\343\005?\211A\000?\217\302u<5\001\nsh\221"
 & "=\213l\007?\250\306\313>\374\251\361=5\001\n-\262\235=9\264\010?\211A\000"
 & "?\217\302u<5\001\n9\264\310=\211A\000?\341z\024?B`e\2745\001\no\022\203"
 & "<\006\201\025?-\262\035?\217\302u\2745\001\n\274t\023\274m\347\033?;\337"
 & "\017?\000\000\000\0005\001\n\217\302\365<!\260\022?;\337\017?\000\000\000"
 & "\0005\001\nX9\264<)\\\017?\341z\024?\274t\223\2745\001\n\217\302\365<b\020"
 & "\030?;\337\017?\000\000\000\0005\001\n\315\314\314<)\\\017?;\337\017?\000"
 & "\000\000\0005\001\nw\276\037=\205\353\021?;\337\017?\000\000\000\0005\001"
 & "\nX9\264<b\020\030?\341z\024?\274t\223\2745\001\n\n\327\243<\341z\024?;"
 & "\337\017?\000\000\000\0005\001\n-\262\235=T\343\005?;\337\017?\000\000\000"
 & "\0005\001\nP\215\027=#\333\031?;\337\017?\274t\223\2745\001\n1\010\254<"
 & "\020X\031?;\337\017?\000\000\000\0005\001\nw\276\037=\317\367\023?;\337"
 & "\017?\000\000\000\0005\001\no\022\003\273\254\034\032?;\337\017?\000\000"
 & "\000\0005\001\no\022\003<\366(\034?;\337\017?\246\233D\2745\001\nX9\264"
 & "<\317\367\023?\341z\024?\274t\223\2745\001\n\246\233D=\240\032\017?;\337"
 & "\017?\000\000\000\0005\001\no\022\003=\317\367\023?\341z\024?\337O\r\276"
 & "5\001\n\246\233\304<\020X\031?;\337\017?\000\000\000\0005\001\n\022\203"
 & "@=h\221\r?\364\375\024?X9\264\2745\001\n1\010\254<X9\024?;\337\017?\000"
 & "\000\000\0005\001\no\022\203;u\223\030?;\337\017?\274t\223\2745\001\n\364"
 & "\375T\274\221\355\034?;\337\017?\000\000\000\0005\001\n\274t\223\274?5\036"
 & "?;\337\017?\000\000\000\0005\001\n\246\233D<+\207\026?;\337\017?\000\000"
 & "\000\0005\001\n\246\233D<\264\310\026?;\337\017?\000\000\000\0005\001\n"
 & "\266\363}=\347\373\t?;\337\017?\000\000\000\0005\001\nH\341z>33\363>-\262"
 & "\035?`\345\320\2755\001\n\203\300\312=\234\304\000?\211A ?-\262\235\275"
 & "5\001\n\000\000\000>\217\302\265>-\262\035?`\345\320\2755\001\n\033/\335"
 & "=m\347\373>-\262\035?\000\000\200>5\001\n\000\000\000\000\232\231\031?\232"
 & "\231\231\275\000\000\000\2765\001\n\242E6>\321\"\333>;\337\017?\362\322"
 & "\215>5\001\n)\\\017=\205\353\021?\260r\350>\217\302u\2745\001\n\000\000"
 & "\000\000\006\201\025?\211A ?\217\302u\2745\001\n\n\327#=\037\205\013?\f"
 & "\002\353>\217\302u\2745\001\n\n\327\243<\307K\027?\211A ?\217\302u\2745"
 & "\001\n\n\327#=\305 \020?\260r\350>\217\302u\2745\001\n\347\373\251=1\010"
 & "\f?\211A ?\000\000\000\0005\001\n\217\302\365<\341z\024?\260r\350>\006\201"
 & "\025\2765\001\n\n\327\243;P\215\027?\211A ?\000\000\000\0005\001\n-\262"
 & "\235=T\343\005?\260r(?\000\000\000\0005\001\n%\006\201=\256G\341>\260r("
 & "?\006\201\025\2765\001\n\n\327\243<\217\302\025?\211A ?\000\000\000\000"
 & "5\001\n-\262\235=T\343\005?\211A ?\000\000\000\0005\001\nX9\264\274\211"
 & "A ?\260r\350>\000\000\000\0005\001\n\274t\223<P\215\027?\260r\350>\000\000"
 & "\000\0005\001\n\217\302\365<\205\353\021?\260r\350>\217\302u\2745\001\n"
 & "o\022\203\272\205\353\021?\260r\350>sh\021\2765\001\n\n\327\243<\307K\027"
 & "?\260r\350>sh\021\2765\001\n\022\203@=\341z\024?\260r\350";

CONST E16_26 =
   ">\000\000\000\0005\001\n\226C\213=\303\365\010?\f\002\353>\226C\213\274"
 & "5\001\n\022\203@=\'1\010?;\337\017?\217\302u\2745\001\no\022\203\272\374"
 & "\251\021?\234\304\340>\217\302u\2745\001\no\022\203\272#\333\031?\234\304"
 & "\340>\000\000\000\0005\001\n\274t\223\274?5\036?\234\304\340>\000\000\000"
 & "\0005\001\n\246\233\304;b\020\030?\234\304\340>\000\000\000\0005\001\no"
 & "\022\203\273#\333\031?\234\304\340>sh\021\2765\001\nT\343\245=\270\036\005"
 & "?\234\304\340>\000\000\000\0005\001\n\n\327#>h\221\355>-\262\035?`\345\320"
 & "\2755\001\n\\\217\202>\327\243\260>\000\000@?\000\000\200\2765\001\n\226"
 & "C\013>\256G\341>-\262\035?`\345\320\2755\001\nsh\221=\024\256\007?\242E"
 & "\266>\010\254\034>000000000000000005\001\n-\262\235=T\343\005?\234\304\340"
 & ">\000\000\000\0005\001\n\002+\007>q=\312>L7)?J\f\002?5\001\n\205\353Q>\262"
 & "\235\357>L7)?J\f\002?5\001\n\252\361\322=\311v\376>\'1(?\307K\367>5\001"
 & "\n\242E\266=o\022\003?\345\320\"?\177j\374>5\001\nX9\264=o\022\003?\217"
 & "\302\025?\256G\001?5\001\n\347\373\251=\035Z\004?7\211!?\262\235\357>5\001"
 & "\n\037\205k>\244p\275>\000\000 ?\354Q\370>5\001\no\022\003>\374\251\361"
 & ">\000\000 ?\354Q\370>05\001\n\203\300J>\362\322\315>h\221-?\242E\366>5\001"
 & "\n\205\353Q>\335$\306>\000\000\000\000\252\361R\27605\001\n\226C\213=+\207"
 & "\026?L7)?#\333\371>5\001\nV\016->m\347\273>\000\000\000\000\250\306K\276"
 & "5\001\n\252\361\322=\311v\376>\203\300*?\177j\374>05\001\n\027\331N>\250"
 & "\306\313>T\343\345>\006\201\025\2765\001\n\002+\207=\246\233\004?\033/\035"
 & "?9\264H\2755\001\n\274t\223=\027\331\016?\177j\034?B`\345\2745\001\n\033"
 & "/]=\250\306\013?\035Z\004?9\264H=5\001\n\n\327#<=\n\027?;\337\017?\000\000"
 & "\000\0005\001\n\\\217\202>\327\243\260>\315\314,?333\2765\001\n\347\373"
 & "\251=\035Z\004?\341z\024?)\\\217\2751*\010\000\0005\001\n\000\000\000\000"
 & "\232\231\031?\341z\024?\274t\223\2745\001\n+\207\026>\236\357\347>\341z"
 & "\024?9\264H>5\001\no\022\003<h\221\r?\035Z\344>)\\\217=5\001\nsh\221=\213"
 & "l\007?\274t\323>\252\361\322=5\001\n\315\314\314=\000\000\000?\211A\240"
 & ">;\337O>5\001\n\000\000\000\000\232\231\031?\341z\024?\274t\223\2741\'\010"
 & "\000\0005\001\n\305 \260=!\260\362>-\262\035?\376\324x>5\001\nsh\221=\213"
 & "l\007?\n\327\003?\246\233\304<5\001\n\230n\022>d;\337>-\262\035?\037\205"
 & "k>5\001\n\337O\r>-\262\335>-\262\035?\370Sc>1$\010\000\0005\001\no\022\203"
 & "\272\374\251\021?\234\304\340>sh\021\2765\001\n\246\233\304;\274t\023?\341"
 & "z\024?)\\\217\2755\001\n9\264H>\027\331\316>F\266\263>\303\365(>1,\010\000"
 & "\0005\001\n\010\254\034>/\335\344>-\262\035?\037\205k>5\001\n+\207\026>"
 & "\236\357\347>\341z\024?9\264H>5\001\n\022\203@=P\215\027?\035Z\344>)\\\217"
 & "=5\001\nB`e\275\236\357\'?L7)?\217\302u\2755\001\n\022\203@\275T\343%?L"
 & "7)?\217\302u\2755\001\n\022\203@\275T\343%?L7)?\217\302u\2755\001\n\203"
 & "\300\312=\022\203\000?T\343\345>\006\201\025\2765\001\n\274t\023\274m\347"
 & "\033?9\264H?\000\000\000\0005\001\n\274t\023\274m\347\033?9\264H?\000\000"
 & "\000\0005\001\n\274t\023\274m\347\033?\024\256G?\000\000\000\0005\001\n"
 & "\274t\023\274m\347\033?\323MB?\000\000\000\0005\001\n\274t\023\274m\347"
 & "\033?\356|??\000\000\000\0005\001\n\274t\023\274m\347\033?V\016M?\000\000"
 & "\000\0005\001\nh\221\355\274\254\034\032?;\337\017?\000\000\000\0005\001"
 & "\nX9\264<)\\\017?\341z\024?\252\361R\2765\001\n\315\314\314<)\\\017?9\264"
 & "H?\000\000\000\0005\001\n\315\314\314<)\\\017?9\264H?\000\000\000\0005\001"
 & "\n\315\314\314<)\\\017?\024\256G?\000\000\000\0005\001\n\315\314\314<)\\"
 & "\017?\356|??\000\000\000\0005\001\n-\262\235=T\343\005?9\264H?\000\000\000"
 & "\0005\001\n-\262\235=T\343\005?9\264H?\000\000\000\0005\001\n-\262\235="
 & "T\343\005?\024\256G?\000\000\000\0005\001\n-\262\235=T\343\005?\356|??\000"
 & "\000\000\0005\001\n\217\302\365<b\020\030?;\337\017?\000\000\000\0005\001"
 & "\no\022\003<\366(\034?\323MB?\246\233D\2745\001\nX9\264<\317\367\023?9\264"
 & "H?\274t\223\2745\001\nX9\264<\317\367\023?9\264H?\274t\223\2745\001\nX9"
 & "\264<\317\367\023?\024\256G?\274t\223\2745\001\nX9\264<\317\367\023?\323"
 & "MB?\274t\223\2745\001\nX9\264<\317\367\023?\356|??\274t\223\2745\001\nT"
 & "\343\245=\270\036\005?j\274\364>w\276\037=5\001\nX9\264<\317\367\023?\006"
 & "\201\025?X9\264\2745\001\no\022\203;u\223\030?9\264H?\274t\223\2745\001"
 & "\no\022\203;u\223\030?9\264H?\274t\223\2745\001\no\022\203;u\223\030?\024"
 & "\256G?\274t\223\2745\001\no\022\203;u\223\030?\356|??\274t\223\2745\001"
 & "\n\246\233D<\264\310\026?9\264H?\000\000\000\0005\001\n\246\233D=\215\227"
 & "\016?;\337\017?\000\000\000\0005\001\nX9\264<u\223\030?\211A ?\217\302u"
 & "\2745\001\n)\\\017=\205\353\021?L7)?\217\302u\2745\001\n)\\\017=\205\353"
 & "\021?L7)?\217\302u\2745\001\n)\\\017=\205\353\021?\'1(?\217\302u\2745\001"
 & "\n)\\\017=\205\353\021?\345\320\"?\217\302u\2745\001\n)\\\017=\205\353\021"
 & "?\000\000 ?\217\302u\2745\001\n)\\\017=\205\353\021?h\221-?\217\302u\274"
 & "5\001\no\022\203\273#\333\031?\260r\350>\217\302u\2745\001\n\n\327#=\037"
 & "\205\013?\f\002\353>\252\361R\2765\001\n\n\327#=\305 \020?L7)?\217\302u"
 & "\2745\001\n\n\327#=\305 \020?L7)?\217\302u\2745\001\n\n\327#=\305 \020?"
 & "\'1(?\217\302u\2745\001\n\n\327#=\305 \020?\000\000 ?\217\302u\2745\001"
 & "\n-\262\235=T\343\005?L7)?\000\000\000\0005\001\n-\262\235=T\343\005?L7"
 & ")?\000\000\000\0005\001\n%\006\201=T\343\005?\'1(?\000\000\000\0005\001"
 & "\n-\262\235=T\343\005?\000\000 ?\000\000\000\0005\001\nh\221m=\f\002\013"
 & "?\211A ?\033/\335\2745\001\n\274t\223<P\215\027?\345\320\"?\000\000";

CONST E16_27 =
   "\000\0005\001\n\217\302\365<\205\353\021?L7)?\217\302u\2745\001\n\217\302"
 & "\365<\205\353\021?L7)?\217\302u\2745\001\n\217\302\365<\205\353\021?\'1"
 & "(?\217\302u\2745\001\n\217\302\365<\205\353\021?\345\320\"?\217\302u\274"
 & "5\001\n\217\302\365<\205\353\021?\000\000 ?\217\302u\2745\001\nsh\221=\213"
 & "l\007?\000\000\000?o\022\203<5\001\n\217\302\365<\205\353\021?V\016\355"
 & ">\246\233\304\2745\001\no\022\203\272\374\251\021?L7)?\217\302u\2745\001"
 & "\no\022\203\272\374\251\021?L7)?\217\302u\2745\001\no\022\203\272\374\251"
 & "\021?\'1(?\217\302u\2745\001\no\022\203\272\374\251\021?\000\000 ?\217\302"
 & "u\2745\001\no\022\203\273#\333\031?L7)?sh\021\2765\001\nB`e\274\205\353"
 & "\021?\211A ?sh\021\2765\001\no\022\203\273#\333\031?\000\000 ?sh\021\276"
 & "5\001\0051s\000\000\0005\001\t\016-2\276\215\227\216?\242Ev?\325xi\276\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001"
 & "\001\001\001\001\001\001\001\001\000\001\001\000\001\001\001\000\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\004V\216>\372~\252>!\260\362>\004V\016?\004V\016?\201"
 & "\225c?\376\3248?\004V\216>\372~\252>\372~\252>\002+\307>\006\201\025?\004"
 & "V\216>\006\201\025?\004V\216>\004V\216>\004V\016?\004V\016?\004V\016?\004"
 & "V\016?\004V\016?\004V\016?\004V\016?\004V\016?\004V\016?\004V\016?\372~"
 & "\252>\372~\252>\006\201\025?\006\201\025?\006\201\025?\177j\034?\232\231"
 & "y?\376\3248?\376\3248?\376\3248?\376\3248?\203\300*?\177j\034?\002+G?\376"
 & "\3248?\004V\216>\004V\016?\376\3248?\177j\034?}?U?\376\3248?\002+G?\203"
 & "\300*?\002+G?\376\3248?\203\300*?\177j\034?\376\3248?\203\300*?\374\251"
 & "q?\203\300*?\203\300*?\177j\034?\372~\252>\004V\216>\372~\252>\006\201\025"
 & "?\004V\016?\004V\216>\004V\016?\177j\034?\004V\016?\177j\034?\004V\016?"
 & "\372~\252>\177j\034?\177j\034?\004V\216>\004V\216>\004V\016?\004V\216>\201"
 & "\225c?\177j\034?\177j\034?\177j\034?\177j\034?\002+\307>\004V\016?\372~"
 & "\252>\177j\034?\004V\016?\002+G?\004V\016?\004V\016?\000\000\000?\002+\307"
 & ">)\\\217>\002+\307>\006\201\025?\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\004V\216>\372~\252>\372~\252>\372~\252>\372~\252>\372~"
 & "\252>\372~\252>\372~\252>\372~\252>\000\000\000\000\372~\252>\372~\252>"
 & "\000\000\000\000\372~\252>\372~\252>\372~\252>\000\000\000\000\372~\252"
 & ">\004V\016?\004V\016?\004V\016?\004V\016?)\\\217>\004V\016?\372~\252>\010"
 & "\254<?\244p\275>\004V\016?\006\201\025?\372~\252>\010\254<?\372~\252>\315"
 & "\314\314>\006\201\025?\372~\252>\372~\252>\372~\252>\177j\034?\004V\016"
 & "?\004V\216>\372~\252>\372~\252>H\341\272>\004V\016?\006\201U?\006\201U?"
 & "\006\201U?\177j\034?\376\3248?\376\3248?\376\3248?\376\3248?\376\3248?\376"
 & "\3248?\000\000\200?\376\3248?\203\300*?\203\300*?\203\300*?\203\300*?\004"
 & "V\216>\004V\216>\004V\216>\004V\216>\376\3248?\376\3248?\002+G?\002+G?\002"
 & "+G?\002+G?\002+G?\006\201\025?\002+G?\376\3248?\376\3248?\376\3248?\376"
 & "\3248?\203\300*?\203\300*?\177j\034?\004V\016?\004V\016?\004V\016?\004V"
 & "\016?\004V\016?\004V\016?\201\225c?\004V\016?\004V\016?\004V\016?\004V\016"
 & "?\004V\016?\004V\216>\004V\216>\004V\216>\004V\216>\177j\034?\177j\034?"
 & "\177j\034?\177j\034?\177j\034?\177j\034?\177j\034?\006\201\025?\177j\034"
 & "?\177j\034?\177j\034?\177j\034?\177j\034?\004V\016?\177j\034?\004V\016?"
 & "0000000000000000000000000000000005\001\n\022\203\300=\226C\313>\331\316"
 & "7?\000\000\000\0005\001\n\313\241E>\213l\007?\331\3167?/\335\344>5\001\n"
 & "\217\302u=/\335$?!\2602?\000\000\000\0005\001\nL7\211=d;\037?ffF?\037\205"
 & "\353\2755\001\n\226C\013>\360\247f?\217\3025?\343\245\233\2745\001\n\242"
 & "E\266=Zd;?\331\3167?\343\245\233\2745\001\n\f\002+>\020X\271>\331\3167?"
 & "\n\327\343>5\001\n\343\245\233=\327\243\360>m\347;?\364\375T\2765\001\n"
 & "\315\314\314\274\221\355\274>m\347;?\364\375T\2765\001\n\006\201\025>\242"
 & "E\366>\331\3167?\335$\306>5\001\n\236\357\247=\366(\034?7\211\001?\000\000"
 & "\000\0005\001\nB`\345<H\341z>\006\201\025>1\010,\2765\001\n\236\357\247"
 & "=\366(\034??5\236>^\272I>5\001\no\022\203=H\341z>\006\201\025>\000\000\000"
 & "\0005\001\nP\215\027\275\262\235\357>\010\254<?\343\245\233\2745\001\n\305"
 & " \260=\266\363\035?\217\3025?\343\245\233\2745\001\n\351&1>\213l\007?\217"
 & "\3025?\000\000\000\0005\001\n\364\375\324<\311v\036?\217\3025?\000\000\000"
 & "\0005\001\n\270\036\205=\343\245\033?\217\3025?\343\245\233\2745\001\n\217"
 & "\302u=\207\026\031?\217\3025?\000\000\000\0005\001\no\022\203=\345\320\""
 & "?!";

CONST E16_28 =
   "\2602?\343\245\233\2745\001\n{\024\256=\311v\036?\217\3025?\343\245\233"
 & "\2745\001\n\000\000\000>V\016-?!\2602?\000\000\000\0005\001\n\337O\215="
 & "-\262\035?\217\3025?\343\245\233\2745\001\nw\276\237=\244p\035?\217\302"
 & "5?\343\245\233\2745\001\n\177j\274=F\266\263>o\022\003?\000\000\000\000"
 & "5\001\nB`e=F\266\263>o\022\003?1\010,\2765\001\n\236\357\247=\024\256\'"
 & "?\201\225\003?o\022\003\2745\001\nh\221m=J\f\"?+\207\326>\016-\262=5\001"
 & "\n\274t\023=m\347\033?\201\225\003?o\022\003\2745\001\n\303\365(>\250\306"
 & "+?\254\034:?\000\000\000\0005\001\n\311v>>X9t?\010\254<?\343\245\233\274"
 & "5\001\n\n\327\243<F\2663?\331\3167?\000\000\000\0005\001\n\343\245\233="
 & "\201\225C?\331\3167?\000\000\000\0005\001\n\321\"\333=\347\373I?\010\254"
 & "<?\343\245\233\2745\001\n\343\245\233=y\351F?\331\3167?\000\000\000\000"
 & "5\001\n\343\245\233=\301\312A?\331\3167?\000\000\000\0005\001\n\343\245"
 & "\233=\244p=?\331\3167?\000\000\000\0005\001\n\033/\335=\351&Q?\010\254<"
 & "?\343\245\233\2745\001\nsh\221=\362\322M?\331\3167?\000\000\000\0005\001"
 & "\no\022\203=m\347\273>\331\3167?\000\000\000\0005\001\n\217\302u=o\022#"
 & "?\331\3167?\274t\223\2745\001\n\016-\262=\343\245[?\331\3167?\000\000\000"
 & "\0005\001\n\343\245\233=\177j\034?\331\3167?\000\000\000\0005\001\n\337"
 & "O\215=\f\002k?\331\3167?\000\000\000\0005\001\n\337O\215=\215\227N?\331"
 & "\3167?\000\000\000\0005\001\n\321\"\333=!\260R?\010\254<?\343\245\233\274"
 & "5\001\n\343\245\233=\221\355<?\331\3167?\000\000\000\0005\001\n\321\"\333"
 & "=!\260R?\010\254<?\364\375T\2755\001\n\343\245\233=\002+G?\331\3167?\000"
 & "\000\000\0005\001\nT\343\245=\331\3167?\010\254<?\343\245\233\2745\001\n"
 & ")\\\017>\211A@?\331\3167?\000\000\000\0005\001\nh\221\355=\362\322M?\331"
 & "\3167?\343\245\233\2745\001\n\305 0>V\016M?\331\3167?\000\000\000\0005\001"
 & "\nV\016->\372~\212?\331\3167?\000\000\000\0005\001\nB`e<\372~J?\331\316"
 & "7?\000\000\000\0005\001\n1\010,>\004VN?\331\3167?\000\000\000\0005\001\n"
 & "\315\314\314<\010\254<?\331\3167?\000\000\000\0005\001\n1\010\254<D\213"
 & "\354>\376\3248?9\264H\2765\001\n\266\363\375=\033/\235>\010\254<?\343\245"
 & "\233\2745\001\n\274t\223\274u\223\330>\376\3248?9\264H\2765\001\n\335$\006"
 & ">\307K\027?!\2602?B`\245>5\001\n\033/\335\274q=\n?\232\231\231\275\000\000"
 & "\000\2765\001\n\303\365(>\376\324\270>\254\034:?\260r\350>5\001\n\256Ga"
 & "=}?\025?\250\306\013?B`e\2745\001\n#\333y=\270\036%?\331\3167?B`e\2745\001"
 & "\n\301\312\241=\020X\031?\250\306\013?B`e\2745\001\n\236\357\247=X94?\331"
 & "\3167?B`e\2745\001\n)\\\217=\331\316\027?\250\306\013?B`e\2745\001\n\016"
 & "-\262=\305 \360>\254\034:?\000\000\000\0005\001\n\343\245\033=\372~*?\250"
 & "\306\013??5^\2765\001\n\270\036\205=%\006!?\331\3167?\000\000\000\0005\001"
 & "\n\337O\215=#\333\271>\232\2319?\000\000\000\0005\001\n1\010,\275#\333\271"
 & ">\232\2319?\321\"[\2765\001\n\337O\215=\037\205+?\331\3167?\000\000\000"
 & "\0005\001\n\337O\215=\020X\271>\331\3167?\000\000\000\0005\001\no\022\203"
 & "=9\264h?\250\306\013?\000\000\000\0005\001\n\270\036\205=%\006!?\250\306"
 & "\013?\000\000\000\0005\001\n\236\357\247=\246\233$?\250\306\013?B`e\274"
 & "5\001\n\274t\223<\270\036%?\250\306\013?\317\367S\2765\001\n\n\327\243="
 & "q=*?\250\306\013?\317\367S\2765\001\no\022\203=5^\372>\250\306\013?\000"
 & "\000\000\0005\001\n%\006\201=\006\201\025?\250\306\013?B`e\2745\001\n\315"
 & "\314\314=b\020\330>V\016-?\246\233\304\2735\001\n9\264\310=\260r(?\'1\010"
 & "?B`e\2745\001\n%\006\001>\236\357\'?\'1\010?\000\000\000\0005\001\nm\347"
 & "\373=\301\312a?\'1\010?\000\000\000\0005\001\n\217\302u<T\343%?\'1\010?"
 & "\000\000\000\0005\001\n1\010,=y\351&?\'1\010?\321\"[\2765\001\n\n\327\243"
 & "<}?\025?\'1\010?\000\000\000\0005\001\n\022\203\300=\246\233\004?\376\324"
 & "8?9\264H\2765\001\n\n\327\243=j\274\264>\010\254<?\343\245\233\2745\001"
 & "\n\274t\223\274Nb\320>\376\3248?9\264H\2765\001\n\037\205\353=F\266\023"
 & "?\262\235\257>y\351&>000000000000000005\001\n\337O\215=/\335\244>\'1\010"
 & "?\000\000\000\0005\001\n\226C\013>j\274\264>\000\000@?\276\237\032?5\001"
 & "\n\374\251q>\n\327\003?\000\000@?\276\237\032?5\001\n\374\251\361=\351&"
 & "\361>\000\000@?\276\237\032?5\001\n\213l\347=\301\312\001?\010\254<?\366"
 & "(\034?5\001\n#\333\371=\307K\367>h\221-?\276\237\032?5\001\nw\276\037>\221"
 & "\355\374>\000\000@?\276\237\032?5\001\n\327\243p>\270\036\305>\276\237:"
 & "?\033/\035?5\001\n\272I\f>\264\310\366>\276\237:?\033/\035?05\001\n\315"
 & "\314L>=\n\327>\360\247F?sh\021?5\001\nP\215\027\275\256Ga>\000\000\000\000"
 & "\325xi\27605\001\n\272I\f>\270\036%?\000\000@?\276\237\032?5\001\n\236\357"
 & "\'=\002+\207>\000\000\000\000\325xi\2765\001\nu\223\030>\022\203\000?\000"
 & "\000@?\276\237\032?05\001\n\315\314L=j\274\264>\'1\010?\311v>\2765\001\n"
 & "\301\312\241=\020X\031?\234\304 ?\374\251\361\2755\001\n\315\314L=\\\217"
 & "\"?\331\3167?o\022\203\2745\001\n\033/\335<{\024.?\345\320\"?\343\245\233"
 & "=5\001\n\217\302u=+\2076?!\2602?\000\000\000\0005\001\n\n\327\243=j\274"
 & "\264>\010\254<?\343\245\233\2745\001\n#\333y=\207\026\031?\254\034:?\177"
 & "j<\2761\363\010\000\0005\001\nB`e=\217\302U?\010\254<?\343\245\233\2745"
 & "\001\n\177j\274={\024\356>\010\254<?\337O\215>5\001\nq=\n>\016-\022?\331"
 & "\316\367>\343\245\233=5\001\n=\n\327=J\f\"?+\207\326>\033/\335=5\001\n\006"
 & "\201\225=J\f\302>\327\243\260>\366(\\>5\001\n\256Ga=\006\201U?\010\254<"
 & "?\343\245\233\2741\360\010\000\0005\001\n333>\240\032\357>\242E6?\254\034"
 & "\332>5\001\n\n\327#=\000\000 ?7\211\001?\000\000\000\0005\001\n\337O\215"
 & "=T\343\345>\217\3025?`\345\220>5\001\n5^\272";

CONST E16_29 =
   "=\301\312\341>\217\3025?\203\300\212>1\355\010\000\0005\001\nX9\264<\260"
 & "r(?\'1\010?\317\367S\2765\001\n9\264\310=\305 0?333?\201\225C\2765\001\n"
 & "\256G\341=\337O\215>\f\002\253>\305 0>1\365\010\000\0005\001\nP\215\027"
 & ">\360\247\306>\217\3025?`\345\220>5\001\n\177j\274=\354Q\370>\010\254<?"
 & "\337O\215>5\001\n\364\375\324=q=\n?\331\316\367>\343\245\233=5\001\n\002"
 & "+\007>\004VN?\217\3025?\343\245\233\2745\001\n\002+\007>\343\245[?\217\302"
 & "5?\343\245\233\2745\001\n\203\300\312=\264\310V?\217\3025?\343\245\233\274"
 & "5\001\n\207\026Y=\240\032\017?\'1\010?\024\256G\2765\001\n\n\327\243<F\266"
 & "3?\262\235o?\000\000\000\0005\001\n\n\327\243<\000\000@?\262\235o?\000\000"
 & "\000\0005\001\n\n\327\243<j\2744?\262\235o?\000\000\000\0005\001\n\n\327"
 & "\243<-\262=?\272Il?\000\000\000\0005\001\n\n\327\243<\307K7?q=j?\000\000"
 & "\000\0005\001\n\n\327\243<F\2663?\242Ev?\000\000\000\0005\001\n\n\327\243"
 & ";\315\314\214?\331\3167?\000\000\000\0005\001\n\321\"\333=\347\373I?\010"
 & "\254<?\325xi\2765\001\n\343\245\233=\301\312A?\262\235o?\000\000\000\000"
 & "5\001\n\343\245\233=\301\312A?\262\235o?\000\000\000\0005\001\n\343\245"
 & "\233=\301\312A?\262\235o?\000\000\000\0005\001\n\343\245\233=\301\312A?"
 & "q=j?\000\000\000\0005\001\no\022\203=m\347\273>\262\235o?\000\000\000\000"
 & "5\001\no\022\203=\002+\007?\262\235o?\000\000\000\0005\001\no\022\203=\331"
 & "\316\367>\262\235o?\000\000\000\0005\001\no\022\203=\221\355\374>q=j?\000"
 & "\000\000\0005\001\n\266\363}=y\351F?\331\3167?\000\000\000\0005\001\n\337"
 & "O\215=\215\227N?\272Il?\000\000\000\0005\001\n\321\"\333=!\260R?\262\235"
 & "o?\343\245\233\2745\001\n\321\"\333=!\260R?\262\235o?\343\245\233\2745\001"
 & "\n\321\"\333=!\260R?\262\235o?\343\245\233\2745\001\n\321\"\333=!\260R?"
 & "\272Il?\343\245\233\2745\001\n\321\"\333=!\260R?q=j?\343\245\233\2745\001"
 & "\n\325xi=\\\217\"?\256G\001?o\022\203:5\001\n)\\\017=/\335d?R\270>?\033"
 & "/\335\2745\001\nh\221\355=\362\322M?\262\235o?\343\245\233\2745\001\nh\221"
 & "\355=\362\322M?\262\235o?\343\245\233\2745\001\nh\221\355=\362\322M?\262"
 & "\235o?\343\245\233\2745\001\nh\221\355=\362\322M?q=j?\343\245\233\2745\001"
 & "\n1\010,>\004VN?\262\235o?\000\000\000\0005\001\n\343\245\233=\307K7?\331"
 & "\3167?\000\000\000\0005\001\n\337O\215=\'1(?\321\";?B`e\2745\001\n\256G"
 & "a=}?\025?\000\000@?B`e\2745\001\n\256Ga=\022\203 ?\000\000@?B`e\2745\001"
 & "\n\256Ga=}?\025?\000\000@?B`e\2745\001\n\256Ga=\311v\036?\010\254<?B`e\274"
 & "5\001\n\256Ga=b\020\030?\276\237:?B`e\2745\001\n\256Ga=}?\025?\360\247F"
 & "?B`e\2745\001\nB`e=\272Il?\250\306\013?B`e\2745\001\n\301\312\241=\020X"
 & "\031?\250\306\013?\325xi\2765\001\n)\\\217=\331\316\027?\000\000@?B`e\274"
 & "5\001\n)\\\217=\022\203 ?\000\000@?B`e\2745\001\n)\\\217=\331\316\027?\000"
 & "\000@?B`e\2745\001\n)\\\217=b\020\030?\276\237:?B`e\2745\001\n\337O\215"
 & "=y\351\246>\000\000@?\000\000\000\0005\001\n\337O\215=#\333\371>\000\000"
 & "@?\000\000\000\0005\001\n\337O\215=\370S\343>\000\000@?\000\000\000\000"
 & "5\001\n\337O\215=\303\365\350>\276\237:?\000\000\000\0005\001\n\236\357"
 & "\247=\037\205+?\010\254<?B`e\2745\001\n\270\036\205=B`%?\010\254<?\000\000"
 & "\000\0005\001\n\236\357\247=\246\233$?\000\000@?B`e\2745\001\n\236\357\247"
 & "=\213l\'?\000\000@?B`e\2745\001\n\236\357\247=\246\233$?\000\000@?B`e\274"
 & "5\001\n\236\357\247=B`%?\010\254<?B`e\2745\001\n\236\357\247=\246\233$?"
 & "\276\237:?B`e\2745\001\n\236\357\247=\366(\034?\272I\f?1\010,\2755\001\n"
 & "X9\264<\274t3?)\\\017?h\221\355\2745\001\n9\264\310=\260r(?\000\000@?B`"
 & "e\2745\001\n9\264\310=\260r(?\000\000@?B`e\2745\001\n9\264\310=\260r(?\000"
 & "\000@?B`e\2745\001\n9\264\310=\260r(?\276\237:?B`e\2745\001\n1\010,=y\351"
 & "&?\000\000@?\321\"[\2765\001\n\274t\223<\270\036%?\331\3167?\364\375T\276"
 & "5\001\n1\010,=y\351&?\276\237:?\321\"[\2765\001\0051\023\000\000\0005\001"
 & "\t\315\314L\276\333\371~?\250\306k?d;_\276\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\001\001\001\001\001\001\001\001"
 & "\001\000\001\001\000\001\001\001\000\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\200>\002+\307>{\024\016?\000\000\000?\000\000\000?}?U?\002+G?\372~\252"
 & ">\372~\252>\372~\252>\000\000\000?\205\353\021?\000\000\200>\321\"\033?"
 & "\000\000\200>\004V\216>\000\000\000?\000\000\000?\000\000\000?\000\000\000"
 & "?\000\000\000?\000\000\000?\000\000\000?\000\000\000?\000\000\000?\000\000"
 & "\000?\372~\252>\372~\252>\205\353\021?\205\353\021?\205\353\021?\000\000"
 & "\000?\364\375T?\203\300*?\203\300*?\203\300*?\376\3248?\203\300*?\203\300"
 & "*?\376\3248?";

CONST E16_30 =
   "\002+G?\002+\307>\000\000\000?\203\300*?\177j\034?\201\225c?\376\3248?\376"
 & "\3248?\177j\034?\376\3248?\203\300*?\004V\016?\177j\034?\376\3248?\203\300"
 & "*?\201\225c?\203\300*?\177j\034?\177j\034?\372~\252>\004V\216>\372~\252"
 & ">\205\353\021?\000\000\000?\372~\252>\000\000\000?\000\000\000?\370S\343"
 & ">\000\000\000?\370S\343>\372~\252>\000\000\000?\004V\016?\004V\216>\004"
 & "V\216>\000\000\000?\004V\216>\002+G?\004V\016?\000\000\000?\000\000\000"
 & "?\000\000\000?\002+\307>\002+\307>\004V\216>\004V\016?\370S\343>\203\300"
 & "*?\000\000\000?\370S\343>\002+\307>\016-\262>\256Ga>\016-\262>\205\353\021"
 & "?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004V\216>\372~"
 & "\252>\372~\252>\372~\252>\372~\252>\372~\252>\372~\252>\372~\252>\372~\252"
 & ">\000\000\000\000\372~\252>\372~\252>\000\000\000\000\372~\252>\372~\252"
 & ">\372~\252>\000\000\000\000\002+\307>\000\000\000?\000\000\000?\000\000"
 & "\000?\000\000\000?\256Ga>\000\000\000?\372~\252>d;??\'1\210>\000\000\000"
 & "?\321\"\033?\372~\252>d;??\372~\252>\315\314\314>\205\353\021?\232\231\231"
 & ">\232\231\231>\372~\252>\274t\023?\000\000\000?\000\000\200>\372~\252>\232"
 & "\231\231>\232\231\231>\000\000\000?\000\000@?\000\000@?\000\000@?\000\000"
 & "\000?\203\300*?\203\300*?\203\300*?\203\300*?\203\300*?\203\300*?\374\251"
 & "q?\203\300*?\203\300*?\203\300*?\203\300*?\203\300*?\002+\307>\002+\307"
 & ">\002+\307>\002+\307>\376\3248?\376\3248?\376\3248?\376\3248?\376\3248?"
 & "\376\3248?\376\3248?\205\353\021?\376\3248?\376\3248?\376\3248?\376\324"
 & "8?\376\3248?\177j\034?\177j\034?\000\000\000?\000\000\000?\000\000\000?"
 & "\000\000\000?\000\000\000?\000\000\000?\000\000\000?\376\3248?\370S\343"
 & ">\370S\343>\370S\343>\370S\343>\370S\343>\004V\216>\004V\216>\004V\216>"
 & "\004V\216>\000\000\000?\004V\016?\000\000\000?\000\000\000?\000\000\000"
 & "?\000\000\000?\000\000\000?\205\353\021?\000\000\000?\004V\016?\004V\016"
 & "?\004V\016?\004V\016?\370S\343>\000\000\000?\370S\343>00000000000000000"
 & "00000000000000005\001\nL7\211=\244p\275>\240\032/?\364\375T\2745\001\n\226"
 & "C\013>L7\t?)\\/?\250\306\313>5\001\n\002+\007\275\260r\010?333?\000\000"
 & "\000\0005\001\n\n\327\243\274\311v\376>\343\245;?\315\314\314\2755\001\n"
 & "w\276\037=\f\002K?\351&1?\n\327#\2745\001\n\n\327\243;\252\3612?\215\227"
 & ".?\343\245\233\2745\001\n9\264\310=\276\237\232>)\\/?\221\355\274>5\001"
 & "\nB`\345<\305 \260>)\\/?\307K7\2765\001\nX94\275\203\300\212>)\\/?\307K"
 & "7\2765\001\n\270\036\205=\325x\351>)\\/?\333\371~>5\001\n\002+\007=\325"
 & "x\t?7\211\001?\000\000\000\0005\001\n\217\302u\275\274t\023>L7\t>5^:\276"
 & "5\001\n`\345P={\024\016?b\020\230>\031\004V>5\001\n\274t\023\274\004V\016"
 & ">q=\n>\364\375T\2745\001\no\022\203\275\240\032\257>)\\/?\274t\223\2745"
 & "\001\n\226C\213<X9\364>\027\331.?B`e\2745\001\n\n\327\243;+\207\326>\027"
 & "\331.?\000\000\000\0005\001\n\033/\335\274\035Z\344>\027\331.?\000\000\000"
 & "\0005\001\n\217\302u\274ff\346>\027\331.?\364\375T\2745\001\n\217\302u\274"
 & "\234\304\000?\027\331.?\000\000\000\0005\001\nX94\274\020X\371>\226C+?\364"
 & "\375T\2745\001\n\177j\274<\323M\002?\362\322-?\217\302u\2745\001\n\364\375"
 & "T=ff\006?\226C+?\000\000\000\0005\001\n\246\233D;F\266\363>\027\331.?\364"
 & "\375T\2745\001\n\246\233D\27433\363>\027\331.?\n\327#\2745\001\n\177j\274"
 & "<\002+\207>\f\002\353>\364\375T\2745\001\n\315\314\314\274\002+\207>\f\002"
 & "\353>Zd;\2765\001\n\266\363\375<\347\373\t?\201\225\003?o\022\003\2745\001"
 & "\n\002+\007=\325x\t?\272I\314>\321\"\333=5\001\n\266\363\375<\347\373\t"
 & "?\201\225\003?o\022\003\2745\001\n\301\312\241=\327\243\360>\240\032/?\364"
 & "\375T\2745\001\n%\006\201=\270\036E?)\\/?\274t\223\2745\001\nL7\211\275"
 & "\331\316\027?\027\331.?\000\000\000\0005\001\n\246\233\304\274w\276\037"
 & "?\226C+?\000\000\000\0005\001\no\022\003=\337O-?)\\/?\274t\223\2745\001"
 & "\n\177j<\275)\\/?\226C+?\000\000\000\0005\001\n\033/\335\274\002+\'?\226"
 & "C+?\000\000\000\0005\001\n\364\375T\274\303\365(?\226C+?\000\000\000\000"
 & "5\001\n1\010\254<j\2744?)\\/?\274t\223\2745\001\n\246\233\304\274D\213L"
 & "?\226C+?\000\000\000\0005\001\no\022\003\275;\337\317>\226C+?\000\000\000"
 & "\0005\001\n\177j<\275\335$\006?\226C+?\203\300\312\2755\001\n1\010\254\274"
 & "F\2663?\226C+?\000\000\000\0005\001\nX9\264\274=\n\027?\226C+?\000\000\000"
 & "\0005\001\nh\221\355\274\203\300j?\226C+?\246\233D\2745\001\n\033/\335\274"
 & "\356|??\226C+?\217\302u\2745\001\n\033/\335<`\3450?)\\/?\274t\223\2745\001"
 & "\n\033/\335\274\221\355\034?\226C+?\000\000\000\0005\001\n\033/\335<`\345"
 & "0?)\\/?\364\375T\2765\001\nh\221\355\274\356|\037?\226C+?\000\000\000\000"
 & "5\001\no\022\003;\360\247\006?)\\/?\274t\223\2745\001\n\315\314L=ff&?\226"
 & "C+?\000\000\000\0005\001\nL7\211=\311v>?\226C+?\274t\223\2745\001\n\270"
 & "\036\205==\n7?\226C+?\274t\223\2745\001\n\270\036\205=\327\243p?\226C+?"
 & "\274t\223\2745\001\n\246\233\304\274\374\2511?\226C+?\000\000\000\0005\001"
 & "\n\006\201\225=9\264(?\226C+?\000\000\000\0005\001\nX94\274=\n\027?\226"
 & "C+?\000\000\000\0005\001\nP\215\027\275\020X\271>D\213,?\345\320\"\2765"
 & "\001\no\022\203\272\027\331\216>)\\/?\274t\223\2745\001\nB`e\275\262\235"
 & "\257>D\213,?\234\304 \2765\001\nL7\211=\234\304\000?\226C+?\343\245\233"
 & ">5\001\n\000\000\000\000\000\000\000?\232\231\231\275\000\000\000\2765\001"
 & "\no\022\003>\347\373\251>)\\/?\221\355\274>5\001\n1\010\254\274\303\365"
 & "\350>D\213\354>";

CONST E16_31 =
   "B`e\2745\001\nB`e\274\370S\343>\252\3612?\364\375T\2745\001\n\n\327\243"
 & "\2739\264\310>D\213\354>\364\375T\2745\001\n1\010\254\274\035Z\004?\252"
 & "\3612?\364\375T\2745\001\n\n\327\243;\250\306\313>D\213\354>\364\375T\274"
 & "5\001\nV\016-\276\035Z\344>!\2602?\205\353Q\2765\001\n\364\375T\275j\274"
 & "\364>D\213\354>;\337O\2765\001\n\364\375T\274\333\371\376>\252\3612?\274"
 & "t\023\2745\001\no\022\003;\360\247\206>\240\032/?\274t\023\2745\001\n7\211"
 & "A\276\027\331\216>\240\032/?\317\367S\2765\001\n\177j\274\274\307K\367>"
 & "\252\3612?o\022\003\2745\001\no\022\003;\341z\224>\252\3612?\274t\023\274"
 & "5\001\nB`e\274\376\3248?D\213\354>\274t\023\2745\001\n\246\233\304\273\177"
 & "j\374>D\213\354>\274t\023\2745\001\n\246\233D\273\301\312\341>D\213\354"
 & ">\364\375T\2745\001\n\217\302\365\275\035Z\344>D\213\354>\205\353Q\2765"
 & "\001\no\022\203:\351&\361>D\213\354>\205\353Q\2765\001\n1\010\254\274\002"
 & "+\307>D\213\354>\000\000\000\0005\001\n\343\245\233\274\372~\252>D\213\354"
 & ">\364\375T\2745\001\nX94\274;\337\217>b\020\030?\274t\023\2745\001\n\217"
 & "\302u<m\347\373>D\213\354>\274t\023\2745\001\no\022\203<\337O\315>D\213"
 & "\354>\364\375T\2745\001\no\022\203<\033/\035?D\213\354>\364\375T\2745\001"
 & "\n\177j<\275\305 \360>D\213\354>\364\375T\2745\001\n\022\203\300\2759\264"
 & "\310>D\213\354>\205\353Q\2765\001\n\305 0\275\177j\274>T\343\345>w\276\237"
 & "\2755\001\n\n\327\243;d;\337>\262\235/?\356|?\2765\001\n\002+\207=-\262"
 & "\035>)\\/?\274t\223\2745\001\n\223\030\004\276\276\237\232>\262\235/?\356"
 & "|?\2765\001\n\033/]=\223\030\004?\372~\252>\351&1>000000000000000005\001"
 & "\no\022\003;F\266s>D\213\354>\274t\023\2745\001\n{\024\256=b\020\230>\230"
 & "n2?\223\030\004?5\001\n\004V\016>J\f\302>\230n2?\223\030\004?5\001\n\n\327"
 & "#=m\347\273>\327\2430?\223\030\004?5\001\n\246\233D=Nb\320>\024\256\'?L"
 & "7\t?5\001\n`\345P=L7\311>\356|\037?h\221\r?5\001\nsh\221=\335$\306>h\221"
 & "-?\223\030\004?5\001\ny\351&>\031\004\226>\024\256\'?ff\006?5\001\n\256"
 & "Ga=\226C\313>\024\256\'?ff\006?05\001\nJ\f\002>{\024\256>\276\237:?\223"
 & "\030\004?5\001\n\n\327\243\275w\276\037>\n\327\243;d;_\27605\001\n\337O"
 & "\215=\333\371\376>\230n2?\223\030\004?5\001\n\n\327#\2757\211A>X94=\351"
 & "&1\2765\001\n\301\312\241=\230n\322>\327\2430?\223\030\004?05\001\n\343"
 & "\245\233</\335\244>m\347\373>\205\353Q\2765\001\n1\010,=\234\304\340>\274"
 & "t\023?\230n\022\2765\001\no\022\003\275\\\217\002?\027\331.?\246\233D\274"
 & "5\001\n\364\375\324\274\360\247\006?\031\004\026?\226C\013=5\001\n\002+"
 & "\007=\234\304 ?\226C+?\000\000\000\0005\001\n\002+\207=-\262\035>)\\/?\274"
 & "t\223\2745\001\n\274t\023=\f\002\353>)\\/?\230n\022\2761\274\t\000\0005"
 & "\001\n\217\302\365<\331\3167?)\\/?\274t\223\2745\001\no\022\203<\303\365"
 & "\250>)\\/?\272I\314>5\001\n\246\233D<\262\235\357>\341z\324>o\022\003=5"
 & "\001\n`\345P={\024\016?\272I\314>\033/\335=5\001\no\022\003;\203\300\212"
 & ">Nb\220>\347\373)>5\001\n\217\302\365<\331\3167?)\\/?\274t\223\2741\271"
 & "\t\000\0005\001\n\347\373\251=\221\355\274>\027\331.?\226C\313>5\001\n\002"
 & "+\007=\325x\t?7\211\001?\000\000\000\0005\001\no\022\003;\211A\240>\027"
 & "\331.?\272I\214>5\001\n\226C\213<\035Z\244>\027\331.?\024\256\207>1\266"
 & "\t\000\0005\001\n\217\302u\275\223\030\004?T\343\345>\317\367S\2765\001"
 & "\n\325xi\275;\337\017?\226C+?\313\241E\2765\001\n`\345P=\250\306K>)\\\317"
 & ">\201\225\203>1\276\t\000\0005\001\n\217\302\365<\254\034\232>\027\331."
 & "?\272I\214>5\001\nB`e=\374\251\261>)\\/?\315\314\314>5\001\n\246\233D<\262"
 & "\235\357>\341z\324>o\022\003=5\001\nB`\345;u\2238?\027\331.?B`e\2745\001"
 & "\n\274t\023\274\207\0269?\027\331.?B`e\2745\001\nB`\345;#\3339?\027\331"
 & ".?B`e\2745\001\n\217\302\365<P\215\327>m\347\373>\205\353Q\2765\001\nL7"
 & "\211\275\331\316\027?\213lg?\000\000\000\0005\001\nL7\211\275\331\316\027"
 & "?\213lg?\000\000\000\0005\001\nL7\211\275\331\316\027?\313\241e?\000\000"
 & "\000\0005\001\nL7\211\275\331\316\027?\010\254\\?\000\000\000\0005\001\n"
 & "L7\211\275\331\316\027?\010\254\\?\000\000\000\0005\001\nL7\211\275\331"
 & "\316\027?\250\306k?\000\000\000\0005\001\no\022\203\275\f\002k?\226C+?\000"
 & "\000\000\0005\001\no\022\003=\337O-?)\\/?d;_\2765\001\n\033/\335\274\002"
 & "+\'?\213lg?\000\000\000\0005\001\n\033/\335\274\002+\'?\213lg?\000\000\000"
 & "\0005\001\n\033/\335\274\002+\'?\313\241e?\000\000\000\0005\001\n\033/\335"
 & "\274\002+\'?\010\254\\?\000\000\000\0005\001\no\022\003\275;\337\317>\213"
 & "lg?\000\000\000\0005\001\no\022\003\275\252\361\322>\213lg?\000\000\000"
 & "\0005\001\no\022\003\275=\n\327>\313\241e?\000\000\000\0005\001\no\022\003"
 & "\275\n\327\343>\010\254\\?\000\000\000\0005\001\n\266\363\375\274333?\226"
 & "C+?\000\000\000\0005\001\n\033/\335\274\356|??\010\254\\?\217\302u\2745"
 & "\001\n\033/\335<`\3450?\213lg?\274t\223\2745\001\n\033/\335<`\3450?\213"
 & "lg?\274t\223\2745\001\n\033/\335<`\3450?\313\241e?\274t\223\2745\001\n\033"
 & "/\335<`\3450?\010\254\\?\274t\223\2745\001\n\033/\335<`\3450?\010\254\\"
 & "?\274t\223\2745\001\n\246\233D=\313\241\005?H\341\372>o\022\203<5\001\n"
 & "\033/\335<`\3450?\201\225C?\000\000\000\2765\001\nL7\211=\311v>?\213lg?"
 & "\274t\223\2745\001\nL7\211=\311v>?\213lg?\274t\223\2745\001\nL7\211=\311"
 & "v>?\313\241e?\274t\223\2745\001\nL7\211=\311v>?\010\254\\?\274t\223\274"
 & "5\001\n\006\201\225=9\264(?\213lg?\000\000\000\0005\001\n\033/\335\274!"
 & "\260\022?\226C+?\000\000\000\0005\001\n\315\314L\276\016-\362>\341z4?\315"
 & "\314L\2765\001\n1\010\254\274\303\365\350>\230n2?B`e";

CONST E16_32 =
   "\2745\001\n1\010\254\274V\016\355>\230n2?B`e\2745\001\n1\010\254\274\303"
 & "\365\350>\327\2430?B`e\2745\001\n1\010\254\274Zd\373>\024\256\'?B`e\274"
 & "5\001\n1\010\254\274\351&\361>\024\256\'?B`e\2745\001\n1\010\254\274\303"
 & "\365\350>\276\237:?B`e\2745\001\n\n\327\243\273\272I,?D\213\354>\364\375"
 & "T\2745\001\n\246\233\304\2749\264\310>D\213\354>d;_\2765\001\n\n\327\243"
 & ";\250\306\313>\230n2?\364\375T\2745\001\n\n\327\243;R\270\336>\230n2?\364"
 & "\375T\2745\001\n\n\327\243;u\223\330>\327\2430?\364\375T\2745\001\n\n\327"
 & "\243;\345\320\342>\024\256\'?\364\375T\2745\001\no\022\003;\270\036\205"
 & ">\230n2?\274t\023\2745\001\no\022\003;X9\264>\230n2?\274t\023\2745\001\n"
 & "o\022\003\273ff\246>\327\2430?\274t\023\2745\001\no\022\003;\354Q\270>\024"
 & "\256\'?\274t\023\2745\001\n\246\233D\273\260r\350>\252\3612?\364\375T\274"
 & "5\001\n\246\233\304\273%\006\001?\024\256\'?\274t\023\2745\001\n\246\233"
 & "D\273\301\312\341>\230n2?\364\375T\2745\001\n\246\233D\273V\016\355>\230"
 & "n2?\364\375T\2745\001\n\246\233D\273y\351\346>\327\2430?\364\375T\2745\001"
 & "\n\246\233D\273Zd\373>\024\256\'?\364\375T\2745\001\n\246\233D\273\215\227"
 & "\356>\024\256\'?\364\375T\2745\001\n\002+\007=\325x\t?\303\365\010?h\221"
 & "\355\2745\001\n\246\233D\273\301\312\341>)\\\017?F\266\363\2755\001\n\217"
 & "\302u<m\347\373>\230n2?\274t\023\2745\001\n\217\302u<m\347\373>\230n2?\274"
 & "t\023\2745\001\n\217\302u<m\347\373>\327\2430?\274t\023\2745\001\n\217\302"
 & "u<\221\355\374>\024\256\'?\274t\023\2745\001\n\022\203\300\275R\270\336"
 & ">\230n2?\205\353Q\2765\001\n\217\302\365\275\035Z\344>\252\3612?\205\353"
 & "Q\2765\001\n\022\203\300\275\211A\340>\024\256\'?\205\353Q\2760000005\001"
 & "\0051O\000\000\0005\001\t{\024.\276\027\331\216?\004Vn?fff\276\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001"
 & "\001\001\001\001\001\001\000\001\001\000\001\001\001\000\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\004V\216>\004V\216>\217\302\265>\004V\016?\004V\016?\201\225"
 & "c?\203\300*?\370Sc>\372~\252>\372~\252>\002+\307>\006\201\025?\004V\216"
 & ">\006\201\025?\004V\216>\004V\216>\004V\016?\004V\016?\004V\016?\004V\016"
 & "?\004V\016?\004V\016?\004V\016?\004V\016?\004V\016?\004V\016?\004V\216>"
 & "\004V\216>\006\201\025?\006\201\025?\006\201\025?\004V\016?\205\353\201"
 & "?\203\300*?\203\300*?\376\3248?\376\3248?\203\300*?\177j\034?\002+G?\376"
 & "\3248?\004V\216>\000\000\000?\203\300*?\004V\016?}?U?\376\3248?\002+G?\203"
 & "\300*?\002+G?\376\3248?\203\300*?\177j\034?\376\3248?\203\300*?\374\251"
 & "q?\203\300*?\203\300*?\177j\034?\004V\216>\004V\216>\004V\216>\305 \360"
 & ">\004V\016?\370Sc>\004V\016?\004V\016?\000\000\000?\004V\016?\004V\016?"
 & "\004V\216>\004V\016?\004V\016?\370Sc>\370Sc>\000\000\000?\370Sc>}?U?\004"
 & "V\016?\004V\016?\004V\016?\004V\016?\372~\252>\000\000\000?\004V\216>\004"
 & "V\016?\000\000\000?\376\3248?\000\000\000?\000\000\000?\000\000\000?\f\002"
 & "\253>\270\036\205>\f\002\253>\006\201\025?\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\004V\216>\372~\252>\372~\252>\372~\252>\372~\252"
 & ">\372~\252>\372~\252>\372~\252>\372~\252>\000\000\000\000\372~\252>\372"
 & "~\252>\000\000\000\000\372~\252>\372~\252>\372~\252>\000\000\000\000\372"
 & "~\252>\004V\016?\004V\016?\004V\016?\004V\016?\270\036\205>\004V\016?\372"
 & "~\252>\010\254<?\244p\275>\004V\016?\006\201\025?\372~\252>\010\254<?\372"
 & "~\252>\315\314\314>\006\201\025?\372~\252>\372~\252>\372~\252>\004V\016"
 & "?\325x\t?\004V\216>\372~\252>\372~\252>H\341\272>\004V\016?\006\201U?\006"
 & "\201U?\006\201U?\177j\034?\203\300*?\203\300*?\203\300*?\203\300*?\203\300"
 & "*?\203\300*?\000\000\200?\376\3248?\203\300*?\203\300*?\203\300*?\203\300"
 & "*?\004V\216>\004V\216>\004V\216>\004V\216>\376\3248?\376\3248?\002+G?\002"
 & "+G?\002+G?\002+G?\002+G?\006\201\025?\002+G?\376\3248?\376\3248?\376\324"
 & "8?\376\3248?\203\300*?\203\300*?\177j\034?\004V\016?\004V\016?\004V\016"
 & "?\004V\016?\004V\016?\004V\016?\201\225c?\000\000\000?\004V\016?\004V\016"
 & "?\004V\016?\004V\016?\004V\216>\004V\216>\004V\216>\004V\216>\004V\016?"
 & "\004V\016?\004V\016?\004V\016?\004V\016?\004V\016?\004V\016?\006\201\025"
 & "?\177j\034?\004V\016?\004V\016?\004V\016?\004V\016?\000\000\000?\004V\016"
 & "?\000\000\000?0000000000000000000000000000000005\001\n\354Q\270={\024\256"
 & ">\331\3167?\000\000\000\0005\001\n1\010,>\211A\340>\331\3167?V\016\355>"
 & "5\001\n\006\201\225=7\211!?\305 0?\000\000\000\0005\001\n\337O\215=";

CONST E16_33 =
   "\266\363\035?ffF?\037\205\353\2755\001\n+\207\026>\201\225c?\317\3673?\343"
 & "\245\233\2745\001\n-\262\235=\313\241%?\331\3167?\217\302u\2745\001\n\276"
 & "\237\032>R\270\236>\331\3167?V\016\355>5\001\n\033/\335=\260r\350>\343\245"
 & ";?\317\367S\2765\001\n\274t\023\274D\213\254>\343\245;?\317\367S\2765\001"
 & "\n\303\365(>33\363>\331\3167?\010\254\334>5\001\n{\024\256=\321\"\033?\256"
 & "G\001?\000\000\000\0005\001\nB`e=\321\"[>\207\026\331=+\207\026\2765\001"
 & "\n{\024\256=\321\"\033?\317\367\223>\033/]>5\001\n\016-\262=\321\"[>\207"
 & "\026\331=\000\000\000\0005\001\n1\010\254\274\213l\347>\010\254<?\343\245"
 & "\233\2745\001\n\311v\276=\343\245\033?\317\3673?\343\245\233\2745\001\n"
 & "\317\367S>J\f\002?\317\3673?\000\000\000\0005\001\n\364\375\324<\266\363"
 & "\035?\317\3673?\000\000\000\0005\001\n\232\231\231=\366(\034?\317\3673?"
 & "\343\245\233\2745\001\n#\333y=\274t\023?\317\3673?\000\000\000\0005\001"
 & "\n\226C\213=\333\371\036?\305 0?\343\245\233\2745\001\n5^\272=\244p\035"
 & "?\317\3673?\343\245\233\2745\001\n\272I\f>\226C+?\305 0?\000\000\000\000"
 & "5\001\nP\215\227=Zd\033?\317\3673?\343\245\233\2745\001\n\236\357\247=m"
 & "\347\033?\317\3673?\343\245\233\2745\001\n\016-\262=\254\034\232>\223\030"
 & "\004?\000\000\000\0005\001\nB`e=\254\034\232>\223\030\004?+\207\026\276"
 & "5\001\n\022\203\300=\223\030$?\244p\375>X94<5\001\n%\006\201=\234\304 ?"
 & "\024\256\307>\037\205\353=5\001\n\315\314L=\376\324\030?\244p\375>X94<5"
 & "\001\n/\335$>\366(\034?\254\034:?\000\000\000\0005\001\n\366(\\>=\nw?\010"
 & "\254<?\343\245\233\2745\001\nB`e<\213l\'?\331\3167?\000\000\000\0005\001"
 & "\nP\215\227=\242E6?\331\3167?\000\000\000\0005\001\n\033/\335=\'1H?\010"
 & "\254<?\343\245\233\2745\001\nT\343\245=\201\225C?\331\3167?\000\000\000"
 & "\0005\001\n\305 \260=o\022C?\331\3167?\000\000\000\0005\001\n\305 \260="
 & "\177j<?\331\3167?\000\000\000\0005\001\n\370S\343=D\213L?\010\254<?\343"
 & "\245\233\2745\001\n-\262\235=D\213L?\331\3167?\000\000\000\0005\001\n5^"
 & "\272=\215\227\256>\331\3167?\000\000\000\0005\001\n\022\203@=j\274\024?"
 & "\331\3167?\343\245\233\2745\001\n\343\245\233=\027\331N?\331\3167?\000\000"
 & "\000\0005\001\n\343\245\233={\024\016?\331\3167?\000\000\000\0005\001\n"
 & "\006\201\225=\347\373i?\331\3167?\000\000\000\0005\001\n\343\245\233=D\213"
 & "L?\331\3167?\000\000\000\0005\001\n=\n\327=\274tS?\010\254<?\343\245\233"
 & "\2745\001\n\305 \260=\010\254<?\331\3167?\000\000\000\0005\001\n=\n\327"
 & "=\274tS?\010\254<?B`e\2755\001\nX9\264=T\343E?\331\3167?\000\000\000\000"
 & "5\001\n\354Q\270=+\2076?\010\254<?\343\245\233\2745\001\nP\215\027>\000"
 & "\000@?\331\3167?\000\000\000\0005\001\nm\347\373=1\010L?\331\3167?\343\245"
 & "\233\2745\001\n\351&1>\315\314L?\331\3167?\000\000\000\0005\001\nV\016-"
 & ">5^\212?\331\3167?\000\000\000\0005\001\n\343\245\233<q=J?\331\3167?\000"
 & "\000\000\0005\001\n\f\002+>\004VN?\331\3167?\000\000\000\0005\001\n\177"
 & "j\274<-\262=?\331\3167?\000\000\000\0005\001\n1\010\254<\004V\316>\376\324"
 & "8?9\264H\2765\001\n)\\\017>\364\375\224>\010\254<?\343\245\233\2745\001"
 & "\nB`e\274\177j\274>\376\3248?9\264H\2765\001\n1\010,=\347\373\t?\305 0?"
 & "\002+\207>5\001\n\033/\335\274q=\n?\232\231\231\275\000\000\000\2765\001"
 & "\n\303\365(>B`\245>\232\2319?\327\243\360>5\001\n#\333y=\240\032\017?^\272"
 & "\t?\217\302u\2745\001\nh\221m=\006\201\025?\331\3167?\217\302u\2745\001"
 & "\nP\215\227=h\221\r?^\272\t?\217\302u\2745\001\n1\010\254=y\351&?\331\316"
 & "7?\217\302u\2745\001\n1\010\254=\317\367\023?^\272\t?\217\302u\2745\001"
 & "\n\305 \260=\364\375\324>5^:?\000\000\000\0005\001\n1\010,=\366(\034?^\272"
 & "\t?\256Ga\2765\001\n\270\036\205=!\260\022?\331\3167?\000\000\000\0005\001"
 & "\nL7\211=-\262\235>\331\3167?\000\000\000\0005\001\n\217\302u\275-\262\235"
 & ">\331\3167?=\nW\2765\001\nL7\211=\232\231\031?\331\3167?\000\000\000\000"
 & "5\001\nL7\211=-\262\235>\331\3167?\000\000\000\0005\001\n\270\036\205=\254"
 & "\034Z?^\272\t?\000\000\000\0005\001\n\270\036\205=!\260\022?^\272\t?\000"
 & "\000\000\0005\001\n\347\373\251=\217\302\025?^\272\t?B`e\2745\001\nB`e<"
 & "\006\201\025?^\272\t?\317\367S\2765\001\n1\010\254=H\341\032?^\272\t?\317"
 & "\367S\2765\001\n-\262\235=\035Z\344>^\272\t?\000\000\000\0005\001\n%\006"
 & "\201=\213l\007?^\272\t?\217\302u\2745\001\n`\345\320=\177j\274>\226C+?B"
 & "`\345\2735\001\n\022\203\300=\232\231\031?T\343\005?\217\302u\2745\001\n"
 & "F\266\363=5^\032?T\343\005?\000\000\000\0005\001\n\000\000\000>\205\353"
 & "Q?T\343\005?\000\000\000\0005\001\nX94<b\020\030?T\343\005?\000\000\000"
 & "\0005\001\n\217\302u<\232\231\031?T\343\005?\321\"[\2765\001\n\266\363\375"
 & "<\016-\022?T\343\005?\000\000\000\0005\001\n\177j\274=\n\327\343>\376\324"
 & "8?9\264H\2765\001\n\354Q\270=T\343\245>\010\254<?\343\245\233\2745\001\n"
 & "\000\000\000\000}?\265>\376\3248?9\264H\2765\001\n\370S\343=\341z\024?y"
 & "\351\246>\354Q8>000000000000000005\001\n\\\217\302=+\207\226>T\343\005?"
 & "\000\000\000\0005\001\n{\024.>D\213\254>m\347;?\331\316\027?5\001\n\266"
 & "\363}>33\363>m\347;?\331\316\027?5\001\n+\207\026>\211A\340>m\347;?\331"
 & "\316\027?5\001\n\000\000\000>H\341\372>\376\3248?\321\"\033?5\001\n\230"
 & "n\022>\262\235\357>\240\032/?\022\203 ?5\001\n\f\002+>F\266\363>\321\";"
 & "?\354Q\030?5\001\n\333\371~>\020X\271>j\2744?\276\237\032?5\001\n1\010,"
 & ">\345\320\342>j\2744?\276\237\032?05\001\n\321\"[>\362\322\315>7\211A?\230"
 & "n\022?5\001\no\022\003;h\221m>\000\000\000\000fff\27605\001\n\234\304 >"
 & "\327\243\020?m\347;?\331\316\027?5\001\n\305 0=\333\371~>\000\000\000\000"
 & "fff\2765\001\n}?5>\262\235\357>m";

CONST E16_34 =
   "\347;?\331\316\027?05\001\n-\262\235=y\351\246>T\343\005?\024\256G\2765"
 & "\001\n\\\217\302=\006\201\025?\356|\037?\037\205\353\2755\001\n9\264H=\323"
 & "M\"?\331\3167?o\022\203\2745\001\n\217\302u=B`%?5^\032?\203\300\312=5\001"
 & "\nT\343\245=\252\3612?\305 0?\000\000\000\0005\001\n\354Q\270=T\343\245"
 & ">\010\254<?\343\245\233\2745\001\n\343\245\233=\006\201\025?\010\254<?\201"
 & "\225C\2761\205\n\000\0005\001\n\033/]=\242EV?\010\254<?\343\245\233\274"
 & "5\001\n\315\314\314=T\343\345>\010\254<?\343\245\233>5\001\n\006\201\025"
 & ">\362\322\r?\035Z\344>\033/\335=5\001\n\207\026\331=\234\304 ?\024\256\307"
 & ">\033/\335=5\001\n\311v\276=\264\310\266>/\335\244>h\221m>5\001\n\033/]"
 & "=\242EV?\010\254<?\343\245\233\2741\202\n\000\0005\001\nV\016->\262\235"
 & "\357>\317\3673?\230n\322>5\001\nw\276\037=?5\036?7\211\001?\000\000\000"
 & "\0005\001\no\022\203=T\343\345>\317\3673?;\337\217>5\001\n\354Q\270=d;\337"
 & ">\317\3673?q=\212>1\177\n\000\0005\001\n\246\233\304<\232\231\031?T\343"
 & "\005?\317\367S\2765\001\n%\006\001>ff&?\331\3167?\351&1\2765\001\n\223\030"
 & "\004>\201\225\203>\256G\241>\\\217B>1\207\n\000\0005\001\n\347\373)>\266"
 & "\363\275>\317\3673?;\337\217>5\001\n\315\314\314=\262\235\357>\010\254<"
 & "?\343\245\233>5\001\n\217\302\365=\002+\007?\035Z\344>\033/\335=5\001\n"
 & "\232\231\031>\337OM?\317\3673?\343\245\233\2745\001\n\325x\351=\264\310"
 & "V?\317\3673?\343\245\233\2745\001\n\270\036\005>\177j\\?\317\3673?\343\245"
 & "\233\2745\001\n{\024\256=9\264\010?ff\006?\362\322M\2765\001\nB`e<\213l"
 & "\'?\362\322m?\000\000\000\0005\001\nB`e<\027\331.?\362\322m?\000\000\000"
 & "\0005\001\nB`e<\213l\'?\362\322m?\000\000\000\0005\001\nB`e<\252\3612?\203"
 & "\300j?\000\000\000\0005\001\nB`e<\213l\'?\360\247f?\000\000\000\0005\001"
 & "\nB`e<\213l\'?\004Vn?\000\000\000\0005\001\no\022\003<\177j\214?\331\316"
 & "7?\000\000\000\0005\001\n\033/\335=\'1H?\010\254<?fff\2765\001\n\305 \260"
 & "=o\022C?\362\322m?\000\000\000\0005\001\n\305 \260=o\022C?\362\322m?\000"
 & "\000\000\0005\001\n\305 \260=o\022C?\362\322m?\000\000\000\0005\001\n\305"
 & " \260=o\022C?\360\247f?\000\000\000\0005\001\n5^\272=F\266\263>\362\322"
 & "m?\000\000\000\0005\001\n5^\272=5^\372>\362\322m?\000\000\000\0005\001\n"
 & "5^\272=\213l\347>\362\322m?\000\000\000\0005\001\n5^\272=\372~\352>\360"
 & "\247f?\000\000\000\0005\001\n\337O\215=\201\225C?\331\3167?\000\000\000"
 & "\0005\001\n\343\245\233=D\213L?\203\300j?\000\000\000\0005\001\n=\n\327"
 & "=\274tS?\362\322m?\343\245\233\2745\001\n=\n\327=\274tS?\362\322m?\343\245"
 & "\233\2745\001\n=\n\327=\274tS?\362\322m?\343\245\233\2745\001\n=\n\327="
 & "\274tS?\203\300j?\343\245\233\2745\001\n=\n\327=\274tS?\360\247f?\343\245"
 & "\233\2745\001\n\315\314L=\035Z$?7\211\001?\000\000\000\0005\001\n\305 0"
 & "=\n\327c?\010\254<?\343\245\233\2745\001\nm\347\373=1\010L?\362\322m?\343"
 & "\245\233\2745\001\nm\347\373=1\010L?\362\322m?\343\245\233\2745\001\nm\347"
 & "\373=1\010L?\362\322m?\343\245\233\2745\001\nm\347\373=1\010L?\360\247f"
 & "?\343\245\233\2745\001\n\f\002+>\004VN?\362\322m?\000\000\000\0005\001\n"
 & "\305 \260=\242E6?\331\3167?\000\000\000\0005\001\nL7\211=\260r(?5^:?\217"
 & "\302u\2745\001\n#\333y=\240\032\017?m\347;?\217\302u\2745\001\n#\333y=\242"
 & "E\026?m\347;?\217\302u\2745\001\n#\333y=\240\032\017?m\347;?\217\302u\274"
 & "5\001\n#\333y=P\215\027?\376\3248?\217\302u\2745\001\n#\333y=\240\032\017"
 & "?j\2744?\217\302u\2745\001\n#\333y=\240\032\017?7\211A?\217\302u\2745\001"
 & "\n#\333y=9\264h?^\272\t?\217\302u\2745\001\nP\215\227=h\221\r?^\272\t?f"
 & "ff\2765\001\n1\010\254=\317\367\023?m\347;?\217\302u\2745\001\n1\010\254"
 & "=\242E\026?m\347;?\217\302u\2745\001\n1\010\254=\317\367\023?m\347;?\217"
 & "\302u\2745\001\n1\010\254=\317\367\023?j\2744?\217\302u\2745\001\n\\\217"
 & "\302=R\270\236>m\347;?\000\000\000\0005\001\n\\\217\302=B`\345>m\347;?\000"
 & "\000\000\0005\001\n\\\217\302=\230n\322>m\347;?\000\000\000\0005\001\n\\"
 & "\217\302=\364\375\324>j\2744?\000\000\000\0005\001\nT\343\245=\266\363\035"
 & "?\010\254<?\217\302u\2745\001\n\270\036\205=P\215\027?\376\3248?\000\000"
 & "\000\0005\001\n\347\373\251=\217\302\025?m\347;?B`e\2745\001\n\347\373\251"
 & "=\242E\026?m\347;?B`e\2745\001\n\347\373\251=\217\302\025?m\347;?B`e\274"
 & "5\001\n\347\373\251=\254\034\032?\376\3248?B`e\2745\001\n\347\373\251=\217"
 & "\302\025?j\2744?B`e\2745\001\n{\024\256=\321\"\033?\335$\006?\343\245\233"
 & "\2745\001\nh\221\355<\313\241%?\037\205\013?X9\264\2745\001\n\022\203\300"
 & "=\232\231\031?m\347;?\217\302u\2745\001\n\022\203\300=\232\231\031?m\347"
 & ";?\217\302u\2745\001\n\022\203\300=\232\231\031?m\347;?\217\302u\2745\001"
 & "\n\022\203\300=\232\231\031?j\2744?\217\302u\2745\001\n\217\302u<\232\231"
 & "\031?m\347;?\321\"[\2765\001\nB`e<\006\201\025?\331\3167?\317\367S\2765"
 & "\001\n\217\302u<\232\231\031?j\2744?\321\"[\2760000005\001\0051\252\000"
 & "\000\0005\001\tB`e\275?5^?V\016M?\000\000\200\276\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001\001\001\001"
 & "\001\001\001\000\001\001\000\001\001\001\000\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001";

CONST E16_35 =
   "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\000\000\000"
 & "\000\232\231\031?\232\231\031?\000\000\000\000\232\231\031?\232\231\031"
 & "?\232\231\031?\000\000\000\000\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?0000000000000000000000000000000005\001\n\033/]>\244p\375>"
 & "\230n\022?\217\302u\2745\001\n\207\026Y>\006\201\025?;\337\017?\362\322"
 & "\215>5\001\nX9\264=\n\327#?\360\247&?\354Q8\2755\001\n\016-\262=%\006!?"
 & "\372~*?%\006\001\2765\001\n`\345\320=w\276\037?-\262\035?\217\302u\2745"
 & "\001\n\266\363}=b\020\030?\f\002\013?\217\302u\2745\001\n\037\205k>\203"
 & "\300\n?;\337\017?\362\322\215>5\001\n\'1\210>P\215\027?-\262\035?`\345\320"
 & "\2755\001\n\262\235\357=\370S\343>-\262\035?`\345\320\2755\001\n\307K7>"
 & "\376\324\030?#\333\031?\211A`>5\001\n\325x\351=u\223\030?j\274\364>w\276"
 & "\037=5\001\n\203\300\312=\366(\334>\016-2>\370S\343\2755\001\n\325x\351"
 & "=u\223\030?\211A\240>;\337O>5\001\n\317\367S>\254\034\332>\240\032/>\217"
 & "\302u\2745\001\n5^\272=\211A ?\211A ?-\262\235\2755\001\n\226C\013>P\215"
 & "\027?-\262\035?\217\302u\2745\001\n\311v\276=\262\235\017?-\262\035?\000"
 & "\000\000\0005\001\n#\333y=\331\316\027?-\262\035?\000\000\000\0005\001\n"
 & "\274t\223=\016-\022?-\262\035?\217\302u\2745\001\n\236\357\247=\027\331"
 & "\016?-\262\035?\000\000\000\0005\001\n-\262\235=\333\371\036?#\333\031?"
 & "\217\302u\2745\001\n\226C\013>y\351&?-\262\035?\217\302u\2745\001\n+\207"
 & "\026>d;\037?#\333\031?\000\000\000\0005\001\n\037\205\353=\276\237\032?"
 & "-\262\035?\217\302u\2745\001\n\343\245\233=P\215\027?-\262\035?\217\302"
 & "u\2745\001\n\252\361R>}?\365>\232\231\331>\217\302u\2745\001\n\203\300\312"
 & "=\217\302\365>\232\231\331>\370S\343\2755\001\n\331\316\367=\010\254\034"
 & "?\211A\000?\217\302u<5\001\n\246\233\304=\033/\035?\250\306\313>\374\251"
 & "\361=5\001\n\360\247\306=\264\310\026?\211A\000?\217\302u<5\001\nZd;>\307"
 & "K\027?\341z\024?B`e\2745\001\n\002+\207=\223\030$?-\262\035?\217\302u\274"
 & "5\001\n\274t\023\2747\211!?;\337\017?\000\000\000\0005\001\n\217\302\365"
 & "<%\006!?;\337\017?\000\000\000\0005\001\n\232\231\231=D\213,?\341z\024?"
 & "\274t\223\2745\001\n\217\302\365<\347\373)?;\337\017?\000\000\000\0005\001"
 & "\n\315\314\314<\226C+?;\337\017?\000\000\000\0005\001\nw\276\037=\027\331"
 & ".?;\337\017?\000\000\000\0005\001\n\232\231\231=D\213,?\341z\024?\274t\223"
 & "\2745\001\n\n\327\243<\252\3612?;\337\017?\000\000\000\0005\001\n-\262\235"
 & "=\035Z$?;\337\017?\000\000\000\0005\001\n\374\251q=\354Q8?;\337\017?\274"
 & "t\223\2745\001\n1\010\254<`\3450?;\337\017?\000\000\000\0005\001\nw\276"
 & "\037=\\\217\"?;\337\017?\000\000\000\0005\001\no\022\003\273u\2238?;\337"
 & "\017?\000\000\000\0005\001\no\022\003<\276\237:?;\337\017?\246\233D\274"
 & "5\001\nP\215\227=\270\036%?\341z\024?\274t\223\2745\001\n\246";

CONST E16_36 =
   "\233D=\035Z$?;\337\017?\000\000\000\0005\001\n1\010\254=\345\320\"?\341"
 & "z\024?\337O\r\2765\001\n\246\233\304<\266\363\035?;\337\017?\000\000\000"
 & "\0005\001\n\033/]=1\010,?\364\375\024?X9\264\2745\001\n\305 \260=h\221-"
 & "?;\337\017?\000\000\000\0005\001\n\027\331\316==\n7?;\337\017?\274t\223"
 & "\2745\001\n1\010\254=Zd;?;\337\017?\000\000\000\0005\001\n1\010\254=\010"
 & "\254<?;\337\017?\000\000\000\0005\001\n\246\233D<Nb0?;\337\017?\000\000"
 & "\000\0005\001\nd;\337=}?5?;\337\017?\000\000\000\0005\001\n\266\363}=\345"
 & "\320\"?;\337\017?\000\000\000\0005\001\n\035Zd>\321\"\033?-\262\035?`\345"
 & "\320\2755\001\n\035Zd>\266\363\375>\211A ?-\262\235\2755\001\n\252\361\322"
 & "=\376\324\370>-\262\035?`\345\320\2755\001\n\240\032/>{\024\016?-\262\035"
 & "?\000\000\200>5\001\n\033/\335\274\006\201\025?\232\231\231\275\000\000"
 & "\000\2765\001\nb\020\230>\020X\371>;\337\017?\362\322\215>5\001\n\266\363"
 & "}=P\215\027?\260r\350>\217\302u\2745\001\n\364\375T<\345\320\"?\211A ?\217"
 & "\302u\2745\001\nT\343\245=7\211!?\f\002\353>\217\302u\2745\001\n#\333y="
 & "/\335$?\211A ?\217\302u\2745\001\nT\343\245=\276\237\032?\260r\350>\217"
 & "\302u\2745\001\n\347\373\251=\337O-?\211A ?\000\000\000\0005\001\n\236\357"
 & "\'=\272I,?\260r\350>\006\201\025\2765\001\n\274t\223<\033/\035?\211A ?\000"
 & "\000\000\0005\001\n-\262\235=\037\205\013?\260r(?\000\000\000\0005\001\n"
 & "P\215\027=\341z\024?\260r(?\006\201\025\2765\001\n\002+\007=\035Z$?\211"
 & "A ?\000\000\000\0005\001\n-\262\235=\037\205\013?\211A ?\000\000\000\000"
 & "5\001\nX9\264\274T\343%?\260r\350>\000\000\000\0005\001\n\274t\223<\033"
 & "/\035?\260r\350>\000\000\000\0005\001\nsh\221=d;\037?\260r\350>\217\302"
 & "u\2745\001\n\266\363\375\274d;\037?\260r\350>sh\021\2765\001\n#\333y=\240"
 & "\032/?\260r\350>sh\021\2765\001\n\022\203@=\213l\'?\260r\350>\000\000\000"
 & "\0005\001\nL7\211=Zd\033?\f\002\353>\226C\213\2745\001\n\374\251\361=`\345"
 & "\020?;\337\017?\217\302u\2745\001\n)\\\217=\307K\027?\234\304\340>\217\302"
 & "u\2745\001\n)\\\217=\374\2511?\234\304\340>\000\000\000\0005\001\n\207\026"
 & "Y=\031\0046?\234\304\340>\000\000\000\0005\001\n\246\233\304;\037\205+?"
 & "\234\304\340>\000\000\000\0005\001\n\n\327\243\274\374\2511?\234\304\340"
 & ">sh\021\2765\001\nT\343\245=\221\355\034?\234\304\340>\000\000\000\0005"
 & "\001\n`\345P>\354Q\030?-\262\035?`\345\320\2755\001\n\027\331N>%\006\001"
 & "?\000\000@?\000\000\200\2765\001\n\325x\351=7\211\001?-\262\035?`\345\320"
 & "\2755\001\n\217\302\365=\264\310\026?\242E\266>\010\254\034>00000000000"
 & "0000005\001\n-\262\235=\037\205\013?\234\304\340>\000\000\000\0005\001\n"
 & "\226C\213>\234\304\000?L7)?J\f\002?5\001\n\211A\240>\343\245\033?L7)?J\f"
 & "\002?5\001\n\207\026Y>\321\"\033?\'1(?\307K\367>5\001\n\315\314L>\035Z$"
 & "?\345\320\"?\177j\374>5\001\n\024\256G>\345\320\"?\217\302\025?\256G\001"
 & "?5\001\n?5^>\360\247&?7\211!?\262\235\357>5\001\n\351&\261>H\341\372>\000"
 & "\000 ?\354Q\370>5\001\n#\333y>P\215\027?\000\000 ?\354Q\370>05\001\n\370"
 & "S\243>\002+\007?h\221-?\242E\366>5\001\nV\016->m\347\273>\000\000\000\000"
 & "\252\361R\27605\001\n\305 0>5^:?L7)?#\333\371>5\001\n\274t\023>33\263>\000"
 & "\000\000\000\250\306K\2765\001\nF\266s>\301\312!?\203\300*?\177j\374>05"
 & "\001\n^\272I>X9\364>T\343\345>\006\201\025\2765\001\n\331\316\367=\276\237"
 & "\032?\033/\035?9\264H\2755\001\n\321\"\333=ff&?\177j\034?B`\345\2745\001"
 & "\n-\262\235=\246\233$?\035Z\004?9\264H=5\001\n9\264\310=\006\2015?;\337"
 & "\017?\000\000\000\0005\001\nd;_>#\333\371>\315\314,?333\2765\001\nP\215"
 & "\227=\311v\036?\341z\024?)\\\217\2751N\013\000\0005\001\n\207\026Y=\203"
 & "\300*?\341z\024?\274t\223\2745\001\n7\211A>\360\247\006?\341z\024?9\264"
 & "H>5\001\n%\006\201=\370S#?\035Z\344>)\\\217=5\001\nq=\n>\266\363\035?\274"
 & "t\323>\252\361\322=5\001\n\230n\022>\351&\021?\211A\240>;\337O>5\001\n\207"
 & "\026Y=\203\300*?\341z\024?\274t\223\2741K\013\000\0005\001\n\351&1>\374"
 & "\251\021?-\262\035?\376\324x>5\001\n\343\245\233=\033/\035?\n\327\003?\246"
 & "\233\304<5\001\n\246\233D>\372~\n?-\262\035?\037\205k>5\001\n\313\241E>"
 & "ff\006?-\262\035?\370Sc>1H\013\000\0005\001\n\315\314L=\307K\027?\234\304"
 & "\340>sh\021\2765\001\n#\333y=\252\3612?\341z\024?)\\\217\2755\001\n\333"
 & "\371~>1\010\354>F\266\263>\303\365(>1P\013\000\0005\001\n\254\034Z>\201"
 & "\225\003?-\262\035?\037\205k>5\001\n7\211A>\203\300\n?\341z\024?9\264H>"
 & "5\001\n\274t\223=\313\241%?\035Z\344>)\\\217=5\001\nB`e<j\2744?L7)?\217"
 & "\302u\2755\001\n\177j\274<=\n7?L7)?\217\302u\2755\001\no\022\003<!\2602"
 & "?L7)?\217\302u\2755\001\n\027\331\316=\323M\002?T\343\345>\006\201\025\276"
 & "5\001\n\274t\023\2747\211!?9\264H?\000\000\000\0005\001\n\274t\023\274q"
 & "=*?9\264H?\000\000\000\0005\001\n\274t\023\2747\211!?\024\256G?\000\000"
 & "\000\0005\001\n\274t\023\274\370S#?\323MB?\000\000\000\0005\001\n\274t\023"
 & "\2747\211!?\356|??\000\000\000\0005\001\n\274t\023\2747\211!?V\016M?\000"
 & "\000\000\0005\001\nh\221\355\274\364\3754?;\337\017?\000\000\000\0005\001"
 & "\nP\215\227=D\213,?\341z\024?\252\361R\2765\001\n\315\314\314<\226C+?9\264"
 & "H?\000\000\000\0005\001\n\315\314\314<\226C+?9\264H?\000\000\000\0005\001"
 & "\n\315\314\314<\226C+?\024\256G?\000\000\000\0005\001\n\315\314\314<\226"
 & "C+?\356|??\000\000\000\0005\001\n-\262\235=\035Z$?9\264H?\000\000\000\000"
 & "5\001\n-\262\235=\035Z$?9\264H?\000\000\000\0005\001\n-\262\235=\035Z$?"
 & "\024\256G?\000\000\000\0005\001\n-\262\235=";

CONST E16_37 =
   "\035Z$?\356|??\000\000\000\0005\001\n\217\302\365<\347\373)?;\337\017?\000"
 & "\000\000\0005\001\no\022\003<\276\237:?\323MB?\246\233D\2745\001\nP\215"
 & "\227=\270\036%?9\264H?\274t\223\2745\001\nP\215\227=\270\036%?9\264H?\274"
 & "t\223\2745\001\nP\215\227=\270\036%?\024\256G?\274t\223\2745\001\nP\215"
 & "\227=\f\002+?\323MB?\274t\223\2745\001\nP\215\227=\270\036%?\356|??\274"
 & "t\223\2745\001\n=\n\327=\321\"\033?j\274\364>w\276\037=5\001\n\246\233D"
 & "=1\010,?\006\201\025?X9\264\2745\001\n\027\331\316==\n7?9\264H?\274t\223"
 & "\2745\001\n\027\331\316==\n7?9\264H?\274t\223\2745\001\n\027\331\316==\n"
 & "7?\024\256G?\274t\223\2745\001\n\027\331\316==\n7?\356|??\274t\223\2745"
 & "\001\nd;\337=}?5?9\264H?\000\000\000\0005\001\n\246\233D=\311v\036?;\337"
 & "\017?\000\000\000\0005\001\nX9\264<\234\304 ?\211A ?\217\302u\2745\001\n"
 & "\266\363}=P\215\027?L7)?\217\302u\2745\001\n\266\363}=\343\245\033?L7)?"
 & "\217\302u\2745\001\n\266\363}=P\215\027?\'1(?\217\302u\2745\001\n\266\363"
 & "}=\035Z$?\345\320\"?\217\302u\2745\001\n\266\363}=P\215\027?\000\000 ?\217"
 & "\302u\2745\001\n\266\363}=P\215\027?h\221-?\217\302u\2745\001\n1\010\254"
 & "<\360\247&?\260r\350>\217\302u\2745\001\nT\343\245=7\211!?\f\002\353>\252"
 & "\361R\2765\001\nT\343\245=\276\237\032?L7)?\217\302u\2745\001\nT\343\245"
 & "=\343\245\033?L7)?\217\302u\2745\001\nT\343\245=\321\"\033?\'1(?\217\302"
 & "u\2745\001\nT\343\245=\276\237\032?\000\000 ?\217\302u\2745\001\n-\262\235"
 & "=\037\205\013?L7)?\000\000\000\0005\001\n-\262\235=\343\245\033?L7)?\000"
 & "\000\000\0005\001\n-\262\235=`\345\020?\'1(?\000\000\000\0005\001\n-\262"
 & "\235=\337O\r?\000\000 ?\000\000\000\0005\001\n\311v\276=L7)?\211A ?\033"
 & "/\335\2745\001\n\274t\223<\035Z$?\345\320\"?\000\000\000\0005\001\nsh\221"
 & "=d;\037?L7)?\217\302u\2745\001\nsh\221=d;\037?L7)?\217\302u\2745\001\ns"
 & "h\221=d;\037?\'1(?\217\302u\2745\001\nsh\221=\035Z$?\345\320\"?\217\302"
 & "u\2745\001\nsh\221=d;\037?\000\000 ?\217\302u\2745\001\n\325x\351=u\223"
 & "\030?\000\000\000?o\022\203<5\001\n\256Ga=o\022#?V\016\355>\246\233\304"
 & "\2745\001\n)\\\217=\307K\027?L7)?\217\302u\2745\001\n)\\\217=\343\245\033"
 & "?L7)?\217\302u\2745\001\n)\\\217=\307K\027?\'1(?\217\302u\2745\001\n)\\"
 & "\217=\307K\027?\000\000 ?\217\302u\2745\001\n\n\327\243\274\374\2511?L7"
 & ")?sh\021\2765\001\n\266\363\375\274d;\037?\211A ?sh\021\2765\001\n\n\327"
 & "\243\274\374\2511?\000\000 ?sh\021\276005\001\00512\000\000\0005\001\tB"
 & "`\345\274\234\304 ?{\024N?\000\000\200\276\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\001\001\001\001\001\001\001\001"
 & "\001\000\001\001\000\001\001\001\000\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
 & "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\232\231\031?\232\231\031?\232\231\031?"
 & "\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\000\000\000\000\232\231\031?\232\231\031?\000\000\000\000\232\231"
 & "\031?\232\231\031?\232\231\031?\000\000\000\000\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031";

CONST E16_38 =
   "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232"
 & "\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031"
 & "?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231\031?\232\231"
 & "\031?\232\231\031?0000000000000000000000000000000005\001\n\374\251q>5^\272"
 & ">\230n\022?\217\302u\2745\001\n\356|?>\274t\323>;\337\017?\236\357\247>"
 & "5\001\n\311v\276=\301\312\001?\201\225#?o\022\003\2755\001\n=\n\327=\266"
 & "\363\375>\325x)?%\006\001\2765\001\nT\343\245=\246\233\004?d;\037?\217\302"
 & "u\2745\001\n%\006\201=^\272\t?\f\002\013?\217\302u\2745\001\n\254\034Z>"
 & "\022\203\300>;\337\017?\236\357\247>5\001\n^\272\211>\256G\341>d;\037?\033"
 & "/\335\2755\001\n\n\327#>\325x\251>d;\037?\033/\335\2755\001\nh\221\355="
 & "\331\316\367>Zd\033?\201\225\203>5\001\n\n\327\243=\270\036\005?\327\243"
 & "\360>X94=5\001\n\020X9>\305 \260>#\333\371=B`\345\2755\001\n\n\327\243="
 & "\270\036\005?`\345\220>h\221m>5\001\n\372~j>\266\363\275>d;\337=\217\302"
 & "u\2745\001\n\000\000\000>33\363>%\006!?\n\327\243\2755\001\n\207\026\331"
 & "=\221\355\374>d;\037?\217\302u\2745\001\n\246\233\304=\256G\001?d;\037?"
 & "\000\000\000\0005\001\n)\\\217=\351&\361>d;\037?\000\000\000\0005\001\n"
 & "\232\231\231=\215\227\356>d;\037?\217\302u\2745\001\nw\276\237=\000\000"
 & "\000?d;\037?\000\000\000\0005\001\n\177j\274=\311v\376>Zd\033?\217\302u"
 & "\2745\001\n\370S\343=\311v\376>d;\037?\217\302u\2745\001\n\236\357\247="
 & "\307K\367>Zd\033?\000\000\000\0005\001\n`\345\320=\333\371\376>d;\037?\217"
 & "\302u\2745\001\n\246\233\304=5^\372>d;\037?\217\302u\2745\001\n\372~j>\266"
 & "\363\275>\270\036\305>\217\302u\2745\001\n\020X9>\266\363\275>\270\036\305"
 & ">B`\345\2755\001\n\236\357\'=/\335\004?\374\251\361>1\010,=5\001\n\n\327"
 & "\243=\270\036\005?\022\203\300>\337O\r>5\001\n\002+\207=\226C\013?\374\251"
 & "\361>1\010,=5\001\n\223\030\004>m\347\373>\230n\022?\217\302u\2745\001\n"
 & "-\262\235=\260r\010?d;\037?\217\302u\2745\001\n\246\233D;\376\324\030?;"
 & "\337\017?\000\000\000\0005\001\n\305 0=\240\032\017?;\337\017?\000\000\000"
 & "\0005\001\n\236\357\'=q=\n?\341z\024?\274t\223\2745\001\n\305 0=\252\361"
 & "\022?;\337\017?\000\000\000\0005\001\n\207\026Y=\315\314\f?;\337\017?\000"
 & "\000\000\0005\001\n\207\026Y=\037\205\013?;\337\017?\000\000\000\0005\001"
 & "\n\266\363\375<33\023?\341z\024?\274t\223\2745\001\no\022\003=sh\021?;\337"
 & "\017?\000\000\000\0005\001\n\246\233\304=%\006\001?;\337\017?\000\000\000"
 & "\0005\001\n\226C\013=`\345\020?;\337\017?\274t\223\2745\001\n\343\245\033"
 & "=\364\375\024?;\337\017?\000\000\000\0005\001\n\022\203@=\362\322\r?;\337"
 & "\017?\000\000\000\0005\001\no\022\203;u\223\030?;\337\017?\000\000\000\000"
 & "5\001\nB`\345;\331\316\027?;\337\017?\364\375T\2745\001\n\305 0=\215\227"
 & "\016?\341z\024?\274t\223\2745\001\n\301\312\241=\027\331\016?;\337\017?"
 & "\000\000\000\0005\001\n\305 0=\215\227\016?\341z\024?\337O\r\2765\001\n"
 & "\343\245\033=+\207\026?;\337\017?\000\000\000\0005\001\n\274t\223=\213l"
 & "\007?\341z\024?\n\327\243\2745\001\n\343\245\033=\305 \020?;\337\017?\000"
 & "\000\000\0005\001\n\226C\213<}?\025?;\337\017?\274t\223\2745\001\no\022"
 & "\203\273\276\237\032?;\337\017?\364\375T\2745\001\n\246\233D\2735^\032?"
 & ";\337\017?\364\375T\2745\001\n\177j\274<F\266\023?;\337\017?\000\000\000"
 & "\0005\001\n\246\233\304<\274t\023?;\337\017?\000\000\000\0005\001\n\305"
 & " \260=\201\225\003?;\337\017?\000\000\000\0005\001\n^\272\211>\323M\342"
 & ">d;\037?\033/\335\2755\001\n\374\251\361=\264\310\366>%\006!?\n\327\243"
 & "\2755\001\n\301\312!>\325x\251>d;\037?\033/\335\2755\001\n\022\203\300="
 & "7\211\001?d;\037?}?\265>5\001\n\000\000\000\000\232\231\031?\232\231\231"
 & "\275\000\000\000\2765\001\nB`e>\335$\306>;\337\017?\236\357\247>5\001\n"
 & "\207\026Y=\240\032\017?\301\312\341>\217\302u\2745\001\nB`e<33\023?%\006"
 & "!?\217\302u\2745\001\n\002+\207=\213l\007?\301\312\341>\217\302u\2745\001"
 & "\n\354Q8=\307K\027?%\006!?\217\302u\2745\001\n\002+\207=\272I\f?\301\312"
 & "\341>\217\302u\2745\001\n\325x\351=\236\357\007?%\006!?\000\000\000\000"
 & "5\001\n\354Q8=`\345\020?\301\312\341>\234\304 \2765\001\n\274t\223<\364"
 & "\375\024?%\006!?\000\000\000\0005\001\n\\\217\302=\256G\001?\'1(?\000\000"
 & "\000\0005\001\n\236\357\247=\205\353\321>\'1(?\234\304 \2765\001\n\305 "
 & "0=\341z\024?%\006!?\000\000\000\0005\001\n\\\217\302=\256G\001?%\006!?\000"
 & "\000\000\0005\001\n\n\327\243\273H\341\032?\301\312\341>\000\000\000\000"
 & "5\001\n\364\375\324<33\023?\301\312\341>\000\000\000\0005\001\n\266\363"
 & "}=^\272\t?\301\312\341>\217\302u\2745\001\n\274t\023<{\024\016?\301\312"
 & "\341>\234\304 \2765\001\n\354Q8=\307K\027?\301\312\341>\234\304 \2765\001"
 & "\n\217\302u=\240\032\017?\301\312\341>\000\000\000\0005\001\n\n\327\243"
 & "=\370S\003?\301\312\341>\217\302u\2745\001\n\016-\262=\024\256\007?\262"
 & "\235\017?\217\302u\2745\001\n1\010\254<;\337\017?\254\034\332>\217\302u"
 & "\2745\001\n\n\327#<=\n\027?\254\034\332>\n\327#\2745\001\no\022\203\273"
 & "\276\237\032?\254\034\332>\n\327#\2745\001\n\n\327\243<\341z\024?\254\034"
 & "\332>\000\000\000\0005\001\nB`\345;P\215\027?\254\034\332>\234\304 \276"
 & "5\001\n\203\300\312=\022\203\000?\254\034\332>\000\000\000\0005\001\n5^"
 & ":>w\276\337>d;\037?\033/\335\2755\001\n\315\314";

CONST E16_39 =
   "\214>y\351\246>\000\000@?\000\000\200\2765\001\ny\351&>\031\004\326>d;\037"
 & "?\033/\335\2755\001\n%\006\201=q=\n?\n\327\243>^\272I>00000000000000000"
 & "5\001\n\\\217\302=\256G\001?\254\034\332>\000\000\000\0005\001\n\276\237"
 & "\032>7\211\301>1\010,?\311v\376>5\001\n\331\316w>\305 \360>1\010,?\311v"
 & "\376>5\001\n\266\363\375=F\266\363>\213l\'?X9\364>5\001\n=\n\327=\234\304"
 & "\000?\321\"\033?5^\372>5\001\n\217\302\365=\217\302\365>\327\243\020?ff"
 & "\006?5\001\n\010\254\034>/\335\344>m\347\033?\211A\000?5\001\n\333\371~"
 & ">X9\264>\341z\024?X9\364>5\001\nP\215\027>\236\357\347>\354Q\030?m\347\373"
 & ">05\001\nd;_>\201\225\303>\022\203 ?V\016\355>5\001\nB`e>\020X\271>\n\327"
 & "#<\276\237\032\27605\001\n\'1\010>q=\n?1\010,?\311v\376>5\001\n\260rh>\244"
 & "p\275>\000\000\000\000\276\237\032\2765\001\n\266\363\375=F\266\363>\226"
 & "C+?m\347\373>05\001\n\374\251q>5^\272>\366(\334>\234\304 \2765\001\n\246"
 & "\233\304=\000\000\000?\033/\035?9\264H\2755\001\n1\010\254=B`\005?\177j"
 & "\034?1\010\254\2745\001\n\006\201\225=y\351\006?7\211\001?h\221m=5\001\n"
 & "\364\375\324<\252\361\022?;\337\017?\000\000\000\0005\001\n\315\314\214"
 & ">y\351\246>\315\314,?333\2765\001\n\213l\347=#\333\371>\341z\024?w\276\237"
 & "\2751\027\f\000\0005\001\n\000\000\000\000\232\231\031?\341z\024?\274t\223"
 & "\2745\001\nw\276\037>\323M\342>\341z\024?\333\371~>5\001\nP\215\027=\305"
 & " \020?\035Z\344>)\\\217=5\001\n\016-\262=\370S\003?\221\355\274>\033/\335"
 & "=5\001\n\252\361\322=\311v\376>\205\353\221>D\213l>5\001\n\000\000\000\000"
 & "\232\231\031?\341z\024?\274t\223\2741\024\f\000\0005\001\nm\347\373=X9\364"
 & ">d;\037?^\272\211>5\001\n\016-\262=\370S\003?\027\331\016?X94=5\001\n}?"
 & "5>\207\026\331>d;\037?\333\371~>5\001\nR\270\036>;\337\317>d;\037?\217\302"
 & "u>1\021\f\000\0005\001\n1\010\254<;\337\017?\254\034\332>\234\304 \2765"
 & "\001\n\315\314L=\345\320\002?;\337\017?w\276\237\2755\001\n\370Sc>7\211"
 & "\301>\213l\247>7\211A>1\031\f\000\0005\001\n\305 0>\321\"\333>d;\037?\333"
 & "\371~>5\001\n\234\304 >\345\320\342>\341z\024?\333\371~>5\001\nP\215\027"
 & "=\305 \020?\035Z\344>)\\\217=5\001\n\000\000\000\000\232\231\031?q=*?\325"
 & "xi\2755\001\n\000\000\000\000\177j\034?q=*?\325xi\2755\001\no\022\003<\331"
 & "\316\027?\372~*?B`e\2755\001\n\033/\335=\351&\361>\366(\334>\234\304 \276"
 & "5\001\n\246\233D;\376\324\030?\f\002K?\000\000\000\0005\001\n\246\233D;"
 & "\376\324\030?\f\002K?\000\000\000\0005\001\n\246\233D;\376\324\030?ffF?"
 & "\000\000\000\0005\001\n\246\233D;\376\324\030?Zd;?\000\000\000\0005\001"
 & "\n\246\233D;\376\324\030?\321\";?\000\000\000\0005\001\n\246\233D;\376\324"
 & "\030?\234\304@?\000\000\000\0005\001\n\246\233D;\315\314\f?;\337\017?\000"
 & "\000\000\0005\001\n\236\357\'=q=\n?\341z\024?\276\237\032\2765\001\n\207"
 & "\026Y=\315\314\f?\f\002K?\000\000\000\0005\001\n\207\026Y=\315\314\f?\f"
 & "\002K?\000\000\000\0005\001\n\207\026Y=\315\314\f?ffF?\000\000\000\0005"
 & "\001\n\207\026Y=\315\314\f?\321\";?\000\000\000\0005\001\n\246\233\304="
 & "%\006\001?\f\002K?\000\000\000\0005\001\n\246\233\304=%\006\001?\f\002K"
 & "?\000\000\000\0005\001\n\246\233\304=%\006\001?ffF?\000\000\000\0005\001"
 & "\n\246\233\304=%\006\001?\321\";?\000\000\000\0005\001\n\217\302\365<\252"
 & "\361\022?;\337\017?\000\000\000\0005\001\nB`\345;\331\316\027?Zd;?\364\375"
 & "T\2745\001\n\305 0=\215\227\016?\f\002K?\274t\223\2745\001\n\305 0=\215"
 & "\227\016?\f\002K?\274t\223\2745\001\n\305 0=\215\227\016?ffF?\274t\223\274"
 & "5\001\n\305 0=\215\227\016?Zd;?\274t\223\2745\001\n\305 0=\215\227\016?"
 & "\321\";?\274t\223\2745\001\n\016-\262=\n\327\003?\327\243\360>\305 0=5\001"
 & "\n\305 0=\215\227\016?%\006!?\n\327\243\2755\001\n\226C\213<}?\025?\f\002"
 & "K?\274t\223\2745\001\n\226C\213<}?\025?\f\002K?\274t\223\2745\001\n\226"
 & "C\213<}?\025?ffF?\274t\223\2745\001\n\226C\213<}?\025?\321\";?\274t\223"
 & "\2745\001\n\246\233\304<\274t\023?\f\002K?\000\000\000\0005\001\n\301\312"
 & "\241=^\272\t?;\337\017?\000\000\000\0005\001\n\246\233D=+\207\026?%\006"
 & "!?\217\302u\2745\001\n\207\026Y=\240\032\017?1\010,?\217\302u\2745\001\n"
 & "\207\026Y=\240\032\017?1\010,?\217\302u\2745\001\n\207\026Y=\240\032\017"
 & "?\213l\'?\217\302u\2745\001\n\207\026Y=\240\032\017?\321\"\033?\217\302"
 & "u\2745\001\n\207\026Y=\240\032\017?\354Q\030?\217\302u\2745\001\n\207\026"
 & "Y=\240\032\017?\022\203 ?\217\302u\2745\001\n\343\245\233<\205\353\021?"
 & "\301\312\341>\217\302u\2745\001\n\002+\207=\213l\007?\301\312\341>\276\237"
 & "\032\2765\001\n\002+\207=\272I\f?1\010,?\217\302u\2745\001\n\002+\207=\272"
 & "I\f?1\010,?\217\302u\2745\001\n\002+\207=\272I\f?\213l\'?\217\302u\2745"
 & "\001\n\002+\207=\272I\f?\354Q\030?\217\302u\2745\001\n\\\217\302=\256G\001"
 & "?1\010,?\000\000\000\0005\001\n\\\217\302=\256G\001?1\010,?\000\000\000"
 & "\0005\001\n\022\203\300=\256G\001?\213l\'?\000\000\000\0005\001\n\\\217"
 & "\302=\256G\001?\354Q\030?\000\000\000\0005\001\n\266\363}=^\272\t?%\006"
 & "!?\217\302u\2745\001\n\364\375\324<33\023?\321\"\033?\000\000\000\0005\001"
 & "\n\266\363}=^\272\t?1\010,?\217\302u\2745\001\n\266\363}=^\272\t?1\010,"
 & "?\217\302u\2745\001\n\266\363}=^\272\t?\213l\'?\217\302u\2745\001\n\266"
 & "\363}=^\272\t?\321\"\033?\217\302u\2745\001\n\266\363}=^\272\t?\354Q\030"
 & "?\217\302u\2745\001\n\016-\262=\370S\003?\240\032\357>\246\233D=5\001\n"
 & "\266\363}=^\272\t?7\211\001?\n\327\243\2755\001\n1\010\254<;\337\017?1\010"
 & ",?\217\302u\2745\001\n1\010\254<;\337\017?1\010,?\217\302u\2745\001\n1\010"
 & "\254<;";

CONST E16_40 =
   "\337\017?\213l\'?\217\302u\2745\001\n1\010\254<;\337\017?\354Q\030?\217"
 & "\302u\2745\001\nB`\345;P\215\027?1\010,?\234\304 \2765\001\n\246\233\304"
 & "\273{\024\016?%\006!?\234\304 \2765\001\nB`\345;P\215\027?\354Q\030?\234"
 & "\304 \2760000\005\000\000\000\000\000\000\000\030\000\000\000\000\000\000"
 & "\000\006\000\000\000\000\000\000\000\r\000\000\000\000\000\000\0004\n";

CONST E17 =
   "(CodeFont    (courier bold 10))\n(TextFont    (helvetica bold 10))\n(La"
 & "belFont   (helvetica bold 12))\n(DotSize     2.5)\n(CrossSize   4)\n(Ch"
 & "kptIntv   30)\n(RealPrec    4)\n(PrintCmd    \"/usr/bin/lpr -J $Title\""
 & ")\n(PreviewCmd  \"psview -d $Display -t $Title $Filename\")\n(Origin   "
 & "   center)\n(Orientation portrait)\n";

CONST E18 =
   "MODULE Offset;\n\nCONST \n  DefaultHor = 0, DefaultVer = 0;\n\nPRIVATE "
 & "VAR \n  hor := DefaultHor, \n  ver := DefaultVer;\n\n(* This module mai"
 & "ntains a current \n   horizontal and vertical offset.\n   The offset va"
 & "lues \n   are used by other modules. *)\n\nPROC h, v := GetHorVer() IS "
 & "\n  h, v := hor, ver \nEND;\n\nPROC h := GetHor() IS h := hor END;\n\nP"
 & "ROC v := GetVer() IS v := ver END;\n\nPROC SetHorVer(h, v) IS \n  hor, "
 & "ver := h, v \nEND;\n\nPROC SetHor(h) IS hor := h END;\n\nPROC SetVer(v)"
 & " IS ver := v END;\n\nUI SetTool(SetHor);\n\nUI SetTool(SetVer);\n\n(* G"
 & "et/set the horizontal and \n   vertical offset values. *)\n\nUI Param(S"
 & "etHor, DefaultHor);\n\nUI Param(SetHor, 0);\n\nUI Param(SetHor, 2);\n\n"
 & "UI Param(SetHor, 4);\n\nUI Param(SetHor, 6);\n\nUI Param(SetHor, 10);\n"
 & "\nUI Param(SetVer, DefaultVer);\n\nUI Param(SetVer, 0);\n\nUI Param(Set"
 & "Ver, 2);\n\nUI Param(SetVer, 4);\n\nUI Param(SetVer, 6);\n\nUI Param(Se"
 & "tVer, 10);\n\nPRIVATE VAR history := NIL;\n\nPROC Save() IS \n  history"
 & " := ((hor, ver), history) \nEND;\n\nPROC Restore() IS \n  VAR head IN \n"
 & "    head := CAR(history); \n    hor, ver := CAR(head), CDR(head); \n   "
 & " history := CDR(history) \n  END \nEND;\n\nUI PointTool(Save);\n\nUI Po"
 & "intTool(Restore);\n\n(* Save/restore the current offset \n   values. *)"
 & "\n\n";

CONST E19 =
   "P4\n12 12\n\360\360\340p\360\360\271\320\037\200\017\000\017\000\037\200"
 & "\271\320\360\360\340p\360\360";

CONST E20 =
   "MODULE Angle;\n\nIMPORT Math, R2, Geometry, Rel;\n\n(* Functions and pr"
 & "edicates on \n   angles. Unless stated otherwise, \n   all angles are i"
 & "n radians. *)\n\nCONST Degree = Math.Pi / 180;\n\n(* \"Degree\" is the "
 & "value of one \n   degree in radians. *)\n\nPRED Right(a, b, c) IS \n  R"
 & "2.Dot(R2.Minus(a, b), \n         R2.Minus(c, b)) = 0 \nEND;\n\nUI Point"
 & "Tool(Right);\n\n(* The angle \"abc\" is right. True if \n   \"a = b\" o"
 & "r \"b = c\". *)\n\nFUNC theta = Acute(a, b, c) IS \n  (E v1, v2, l1, l2"
 & " :: \n    v1 = R2.Minus(a, b) AND \n    v2 = R2.Minus(c, b) AND \n    l"
 & "1 = R2.Length(v1) AND \n    l2 = R2.Length(v2) AND \n    theta ~ 1.5 AN"
 & "D \n    COS(theta) * l1 * l2 = \n      R2.Dot(v1, v2)) \nEND;\n\n(* Ret"
 & "urn the angle \"abc\" as an acute \n   angle in the closed interval \"["
 & "0, \n   Pi]\". Requires \"a # b\" and \"b # \n   c\". *)\n\nFUNC theta "
 & "= CC(a, b, c) IS \n  (E p = Rel.Inv(c, b, a) :: \n    theta = ATAN(CDR("
 & "p), CAR(p))) \nEND;\n\n(* Return the angle in the half-open \n   interv"
 & "al \"(-Pi, Pi]\" that the ray \n   \"ba\" forms with the ray \"bc\", \n"
 & "   measured counter-clockwise from \n   \"ba\". Requires \"a # b\" and "
 & "\"b # \n   c\". *)\n\nPRED OnBisector(p, a, b, c) IS \n  (E d ~ c :: \n"
 & "    (d, b) CONG (b, a) AND \n    (d, p) CONG (p, a) AND \n    Geometry."
 & "Colinear(b, d, c)) \nEND;\n\nUI PointTool(OnBisector);\n\n(* The point "
 & "\"p\" is on the line \n   bisecting the acute angle \"abc\". *)\n\nPRED"
 & " Cong(a, b, c, d, e, f) IS \n  (E g ~ d, h ~ f :: \n    Geometry.Coline"
 & "ar(e, d, g) AND \n    Geometry.Colinear(e, f, h) AND \n    (a, b) CONG "
 & "(g, e) AND \n    (h, e) CONG (c, b) AND \n    (c, a) CONG (g, h)) \nEND"
 & ";\n\nUI PointTool(Cong);\n\n(* The angle \"abc\" is congruent to \n   t"
 & "he angle \"def\". *)\n\n";

CONST E21 =
   "MODULE Random;\n\n(* Random number generator *)\n\nPROC r := Real01() I"
 & "S SKIP END; /* external procedure */\n\n(* Return a uniformly-distribut"
 & "ed real number\n   in the half-open interval \"[0.0, 1.0)\". *)\n\nPROC"
 & " r := Real(lo, hi) IS SKIP END; /* external procedure */\n\n(* Return a"
 & " uniformly-distributed real number\n   in the half-open interval \"[lo,"
 & " hi)\". It is\n   a checked run-time error for \"lo >= hi\". *)\n\nPROC"
 & " r := Int(lo, hi) IS SKIP END; /* external procedure */\n\n(* Return a "
 & "uniformly-distributed integer\n   in the half-open interval \"[lo, hi)\""
 & ". It\n   is a checked run-time error for \"lo\" or\n   \"hi\" not to be"
 & " an integer or for \"lo >= hi\". *)\n";

CONST E22 =
   "; Copyright (C) 1992, Digital Equipment Corporation                    "
 & "     \n; All rights reserved.                                          "
 & "            \n; See the file COPYRIGHT for a full description.         "
 & "                   \n;                                                 "
 & "                          \n; Last modified on Thu May 26 16:05:47 PDT "
 & "1994 by heydon                   \n\n(Rim (Pen 5)\n  (Macro Gap () \'(G"
 & "lue 5))\n  (BrowserShape\n    (VBox (MyBrowserFont)\n      (DirMenu (Fo"
 & "r saveBrowser))\n      (Gap)\n      (Border\n        (FileBrowser %save"
 & "Browser\n          (BgColor \"White\")\n          (Suffixes \".juno\")\n"
 & "        )\n      )\n      (Gap)\n      (HBox\n        \"File:\"\n      "
 & "  (Glue 2)\n        (Frame Lowered\n          (Helper FirstFocus (BgCol"
 & "or \"White\") (For saveBrowser))\n        )\n      )\n    )\n  )\n)\n";

CONST E23 =
   "MODULE DiGraph;\n\nIMPORT PS, Circle, Color, R2, Geometry, Arrow, \n   "
 & "    TypeLinesC, Ellipse;\n\n(* A module for drawing directed, labeled, "
 & "graphs. The \n   nodes are drawn as ellipses whose axes are oriented \n"
 & "   squarly with the page. *)\n\nCONST \n  DefaultNodeWE = (35, 1), \n  "
 & "DefaultNodeWH = (CAR(DefaultNodeWE), \n                   CAR(DefaultNo"
 & "deWE));\n\n(* This module maintains a current node size, which is \n   "
 & "initially set so as to draw a circle with radius 35. \n*)\n\nPRIVATE VA"
 & "R \n  width := CAR(DefaultNodeWE), \n  eccentricity := CDR(DefaultNodeW"
 & "E);\n\nPROC SetNodeWE(we) IS \n  IF \n    VAR w, e IN \n      we = (w, "
 & "e) -> width := w; eccentricity := e \n    END \n  FI \nEND;\n\nPROC Set"
 & "NodeWH(wh) IS \n  IF \n    VAR w, h IN \n      wh = (w, h) -> width := "
 & "w; eccentricity := h / w \n    END \n  FI \nEND;\n\nUI SetTool(SetNodeW"
 & "E);\n\nUI SetTool(SetNodeWH);\n\n(* These procedures set the node size."
 & " The argument to \n   each procedure is a pair of real numbers of the f"
 & "orm \n   \"(w, x)\". In both procedures, \"w\" is the horizontal \n   w"
 & "idth of the nodes in points. In \"SetNodeWE\", the \n   second value \""
 & "x\" is the eccentricity of the nodes, \n   namely, the ratio of their v"
 & "ertical height to their \n   horizontal width. In \"SetNodeWH\", the se"
 & "cond value \n   \"x\" is the absolute vertical height of the nodes in \n"
 & "   points. *)\n\nUI Param(SetNodeWE, DefaultNodeWE);\n\nUI Param(SetNod"
 & "eWH, DefaultNodeWH);\n\nPROC we := GetNodeWE() IS \n  we := (width, ecc"
 & "entricity) \nEND;\n\nPROC wh := GetNodeWH() IS \n  wh := (width, width "
 & "* eccentricity) \nEND;\n\n(* Return the current node size. *)\n\nPRIVAT"
 & "E PROC maj := FromCenter(a) IS \n  maj := (CAR(a) + width, CDR(a)) \nEN"
 & "D;\n\nPRIVATE PROC NodePath(a) IS \n  VAR maj IN \n    maj := FromCente"
 & "r(a); \n    IF \n      eccentricity = 1 -> Circle.Draw(a, maj) \n    | "
 & "Ellipse.DrawEcc(a, maj, eccentricity) \n    FI \n  END \nEND;\n\nPROC N"
 & "ode(a) IS NodePath(a); PS.Stroke() END;\n\nUI PointTool(Node);\n\n(* Dr"
 & "aw an ellipse centered at \"a\" with the current node \n   width and he"
 & "ight. *)\n\nPROC Label(p, label) IS TypeL";

CONST E23_0 =
   "inesC.Center(p, label) END;\n\nUI TextTool(Label);\n\n(* Print the labe"
 & "l \"txt\" inside the node \"p\". *)\n\nPROC p := Intercept(a, b) IS \n "
 & " IF \n    eccentricity = 1 -> \n      VAR c ~ b IN \n        Geometry.C"
 & "olinear(a, c, b) AND \n        width = Geometry.Dist(a, c) -> p := c \n"
 & "      END \n  | VAR maj IN \n      maj := FromCenter(a); \n      IF \n "
 & "       VAR c ~ b IN \n          Geometry.Colinear(a, c, b) AND \n      "
 & "    Ellipse.OnEcc(c, a, maj, eccentricity) -> \n            p := c \n  "
 & "      END \n      FI \n    END \n  FI \nEND;\n\n(* Sets \"p\" to the po"
 & "int along segment \"ab\" and on the \n   ellipse centered at \"a\" draw"
 & "n in the current node \n   size. *)\n\nPROC Straight0(a, b) IS \n  VAR "
 & "ab, ba IN \n    ab := Intercept(a, b); \n    ba := Intercept(b, a); \n "
 & "   PS.MoveTo(ab); \n    PS.LineTo(ba); \n    PS.Stroke() \n  END \nEND;"
 & "\n\nPROC Straight1(a, b) IS \n  VAR ab, ba IN \n    ab := Intercept(a, "
 & "b); \n    ba := Intercept(b, a); \n    Arrow.Straight(ab, ba) \n  END \n"
 & "END;\n\nPROC Straight2(a, b) IS \n  VAR ab, ba IN \n    ab := Intercept"
 & "(a, b); \n    ba := Intercept(b, a); \n    Arrow.DblStraight(ab, ba) \n"
 & "  END \nEND;\n\nUI PointTool(Straight0);\n\nUI PointTool(Straight1);\n\n"
 & "UI PointTool(Straight2);\n\n(* Draw an undirected, singly-directed or \n"
 & "   doubly-directed straight edge, respectively, from the \n   node \"a\""
 & " to the node \"b\". *)\n\nPROC Curved0(a, b, c, d) IS \n  VAR ab, dc IN"
 & " \n    ab := Intercept(a, b); \n    dc := Intercept(d, c); \n    PS.Mov"
 & "eTo(ab); \n    PS.CurveTo(b, c, dc); \n    PS.Stroke() \n  END \nEND;\n"
 & "\nPROC Curved1(a, b, c, d) IS \n  VAR ab, dc IN \n    ab := Intercept(a"
 & ", b); \n    dc := Intercept(d, c); \n    Arrow.Curved(ab, b, c, dc) \n "
 & " END \nEND;\n\nPROC Curved2(a, b, c, d) IS \n  VAR ab, dc IN \n    ab :"
 & "= Intercept(a, b); \n    dc := Intercept(d, c); \n    Arrow.DblCurved(a"
 & "b, b, c, dc) \n  END \nEND;\n\nUI PointTool(Curved0);\n\nUI PointTool(C"
 & "urved1);\n\nUI PointTool(Curved2);\n\n(* Draw an undirected, singly-dir"
 & "ected or \n   doubly-directed curved edge, respectively, from the \n   "
 & "node \"a\" to the node \"d\" with Bezier control points";

CONST E23_1 =
   " \n   \"b\" and \"c\". *)\n\nCONST DefaultFillColor = Color.White;\n\n("
 & "* This module maintains a current fill color, used by \n   the \"Filled"
 & "Node\" procedure. *)\n\nPRIVATE VAR fillColor := DefaultFillColor;\n\nP"
 & "ROC SetFillColor(c) IS fillColor := c END;\n\nUI SetTool(SetFillColor);"
 & "\n\nUI Param(SetFillColor, DefaultFillColor);\n\n(* Set the current fil"
 & "l color to \"c\". *)\n\nPROC FilledNode(a) IS \n  NodePath(a); \n  SAVE"
 & " PS IN PS.SetColor(fillColor); PS.Fill() END; \n  PS.Stroke() \nEND;\n\n"
 & "UI PointTool(FilledNode);\n\n(* Like \"Node\" above, but the inside of "
 & "the node is \n   filled with the current fill color. *)\n\nPRIVATE VAR "
 & "history := NIL;\n\nPROC Save() IS \n  history := ([width, eccentricity,"
 & " fillColor], history) \nEND;\n\nPROC Restore() IS \n  VAR top IN \n    "
 & "top := CAR(history); \n    width := CAR(top); \n    eccentricity := CAR"
 & "(CDR(top)); \n    fillColor := CAR(CDR(CDR(top))); \n    history := CDR"
 & "(history) \n  END \nEND;\n\nUI PointTool(Save);\n\nUI PointTool(Restore"
 & ");\n\n(* Save/restore the current node size. *)\n\n";

CONST E24 =
   "MODULE TypeLinesC;\n\n(* The procedures in this module \n   type a bloc"
 & "k of centered text \n   lines relative to a specified \n   point. Each "
 & "procedure takes a \n   reference point and a single \n   text, which is"
 & " converted to a \n   list of texts by the \n   \"TextList.FromText\" pr"
 & "ocedure. \n   One line is displayed in the \n   block per element of th"
 & "is list. \n\n   The lines in each block are \n   separated vertically b"
 & "y the \n   height of the current font plus \n   the current line skip v"
 & "alue \n   (maintained by the \"LineSkip\" \n   module). \n\n   The text"
 & " block is actually \n   translated in the appropriate \n   direction aw"
 & "ay from the \n   reference point by the current \n   horizontal and/or "
 & "vertical \n   offset values (maintained by the \n   \"Offset\" module)."
 & " For example, \n   the \"South\" procedure translates \n   the text blo"
 & "ck up by the current \n   vertical offset, and the \"NE\" \n   procedur"
 & "e translates it down by \n   the current vertical offset and \n   to th"
 & "e left by the current \n   horizontal offset. The \"Center\" \n   proce"
 & "dure ignores the current \n   offset values. *)\n\nIMPORT LineSkip, Off"
 & "set, PS, \n       R2, TextList, Type;\n\nPRIVATE PROC TypeBlockC(p, l) "
 & "IS \n  VAR asc, dec, d IN \n    asc, dec := PS.FontHeight(); \n    d :="
 & " asc + dec + LineSkip.Get(); \n    p := (CAR(p), CDR(p) - asc); \n    D"
 & "O \n      l # NIL -> \n        Type.C(p, CAR(l)); \n        p := (CAR(p"
 & "), CDR(p) - d); \n        l := CDR(l) \n    OD \n  END \nEND;\n\n/* Typ"
 & "e the centered block of text \n   lines \"l\" such that \"p\" is the \n"
 & "   northwest corner of the box\'s \n   bounding-box. */\n\nPROC North(p"
 & ", txt) IS \n  VAR l, dh IN \n    l := TextList.FromText(txt); \n    dh "
 & ":= Offset.GetVer(); \n    TypeBlockC(R2.Plus(p, (0, -dh)), \n          "
 & "     l) \n  END \nEND;\n\nPROC South(p, txt) IS \n  VAR l, w, h, dh IN "
 & "\n    l := TextList.FromText(txt); \n    w, h := TextList.Size(l); \n  "
 & "  dh := Offset.GetVer(); \n    TypeBlockC(R2.Plus(p, \n                "
 & "       (0, h + dh)), \n               l) \n  END \nEND;\n\nPROC East(p,"
 & " txt) IS \n  VAR l, w, h, dw IN \n    l";

CONST E24_0 =
   " := TextList.FromText(txt); \n    w, h := TextList.Size(l); \n    dw :="
 & " Offset.GetHor(); \n    TypeBlockC(R2.Plus(p, \n                       "
 & "(-w / 2 - dw, \n                        h / 2)), l) \n  END \nEND;\n\nP"
 & "ROC West(p, txt) IS \n  VAR l, w, h, dw IN \n    l := TextList.FromText"
 & "(txt); \n    w, h := TextList.Size(l); \n    dw := Offset.GetHor(); \n "
 & "   TypeBlockC(R2.Plus(p, \n                       (w / 2 + dw, \n      "
 & "                  h / 2)), l) \n  END \nEND;\n\nPROC Center(p, txt) IS "
 & "\n  VAR l, w, h IN \n    l := TextList.FromText(txt); \n    w, h := Tex"
 & "tList.Size(l); \n    TypeBlockC(R2.Plus(p, (0, h / 2)), \n             "
 & "  l) \n  END \nEND;\n\nPROC NW(p, txt) IS \n  VAR l, w, h, dw, dh IN \n"
 & "    l := TextList.FromText(txt); \n    w, h := TextList.Size(l); \n    "
 & "dw, dh := Offset.GetHorVer(); \n    TypeBlockC(R2.Plus(p, \n           "
 & "            (w / 2 + dw, \n                        -dh)), l) \n  END \n"
 & "END;\n\nPROC NE(p, txt) IS \n  VAR l, w, h, dw, dh IN \n    l := TextLi"
 & "st.FromText(txt); \n    w, h := TextList.Size(l); \n    dw, dh := Offse"
 & "t.GetHorVer(); \n    TypeBlockC(R2.Plus(p, \n                       (-w"
 & " / 2 - dw, \n                        -dh)), l) \n  END \nEND;\n\nPROC S"
 & "E(p, txt) IS \n  VAR l, w, h, dw, dh IN \n    l := TextList.FromText(tx"
 & "t); \n    w, h := TextList.Size(l); \n    dw, dh := Offset.GetHorVer();"
 & " \n    TypeBlockC(R2.Plus(p, \n                       (-w / 2 - dw, \n "
 & "                       h + dh)), l) \n  END \nEND;\n\nPROC SW(p, txt) I"
 & "S \n  VAR l, w, h, dw, dh IN \n    l := TextList.FromText(txt); \n    w"
 & ", h := TextList.Size(l); \n    dw, dh := Offset.GetHorVer(); \n    Type"
 & "BlockC(R2.Plus(p, \n                       (w / 2 + dw, \n             "
 & "           h + dh)), l) \n  END \nEND;\n\nUI TextTool(North);\n\nUI Tex"
 & "tTool(South);\n\nUI TextTool(East);\n\nUI TextTool(West);\n\nUI TextToo"
 & "l(Center);\n\nUI TextTool(NW);\n\nUI TextTool(NE);\n\nUI TextTool(SE);\n"
 & "\nUI TextTool(SW);\n\n(* Display the \"\\\"-separated texts \n   in \"t"
 & "\" as a centered block such \n   that \"p\" is at the location of \n   "
 & "the block\'s bounding box named \n   by the";

CONST E24_1 =
   " procedure. *)\n\n";

CONST E25 =
   "MODULE Plot;\n\n(* A module for drawing 2D graphs of plotted values. *)"
 & "\n\nIMPORT Text, Color, R2, PS, Arrow, Circle, Type;\n\nPRIVATE FUNC t "
 & "= Map1(v, scrn, grph) IS \n  (E s1, s2, g1, g2, k :: \n    scrn = (s1, "
 & "s2) AND \n    grph = (g1, g2) AND \n    k * (g2 - g1) = (v - g1) AND \n"
 & "    t = s1 + k * (s2 - s1)) \nEND;\n\nPRIVATE FUNC q = Map(g, p) IS \n "
 & " (E px, py, qx, qy, xScrn, yScrn, xGrph, yGrph :: \n    g = [xScrn, ySc"
 & "rn, xGrph, yGrph] AND \n    p = (px, py) AND \n    qx = Map1(px, xScrn,"
 & " xGrph) AND \n    qy = Map1(py, yScrn, yGrph) AND \n    q = (qx, qy)) \n"
 & "END;\n\n/* \"q\" is the point in Juno coordinates of the point \"p\" \n"
 & "   in graph \"g\"-coordinates. */\n\nPRIVATE PROC xInt, yInt := RectInt"
 & "s(c1, c2) IS \n  IF \n    VAR c1x, c1y, c2x, c2y IN \n      c1 = (c1x, "
 & "c1y) AND c2 = (c2x, c2y) -> \n        xInt := (MIN(c1x, c2x), MAX(c1x, "
 & "c2x)); \n        yInt := (MIN(c1y, c2y), MAX(c1y, c2y)) \n    END \n  F"
 & "I \nEND;\n\n/* Set \"xInt\" and \"yInt\" to the intervals in the x- and"
 & " \n   y-axes, respectively, of the rectangle oriented \n   squarely wit"
 & "h the page having \"c1\" and \"c2\" as \n   opposite corners. */\n\nPRO"
 & "C g := New(c1, c2, xGrph, yGrph) IS \n  VAR xScrn, yScrn IN \n    xScrn"
 & ", yScrn := RectInts(c1, c2); \n    g := [xScrn, yScrn, xGrph, yGrph] \n"
 & "  END \nEND;\n\n(* Return a new graph structure to be drawn in the \n  "
 & " bounding box determined by the two corner points \"c1\" \n   and \"c2\""
 & ". The values \"xGrph\" and \"yGrph\" must be \n   pairs of real numbers"
 & "; they represent the range of x- \n   and y-coordinates, respectively, "
 & "covered by the \n   resulting graph. *)\n\nPRIVATE PROC DrawAxes(g) IS "
 & "\n  PS.SetEndStyle(PS.SquareEnds); \n  IF \n    VAR \n      xScrn, yScr"
 & "n, xGrph, yGrph, minX, maxX, minY, maxY \n    IN \n      g = [xScrn, yS"
 & "crn, xGrph, yGrph] AND \n      xGrph = (minX, maxX) AND \n      yGrph ="
 & " (minY, maxY) -> \n        PS.MoveTo(Map(g, (minX, minY))); \n        P"
 & "S.LineTo(Map(g, (minX, maxY))); \n        PS.MoveTo(Map(g, (minX, minY)"
 & ")); \n        PS.LineTo(Map(g, (maxX, minY))); \n        PS.Stroke() \n"
 & "    END \n  FI \nEND;\n\n/* Draw t";

CONST E25_0 =
   "he axes of \"g\" in the current line width. This \n   procedure does no"
 & "t preserve the PS state. */\n\nPRIVATE PROC DrawTitle(g, txtTitle) IS \n"
 & "  IF \n    VAR xLo, xHi, yLo, yHi, tail IN \n      g = ((xLo, xHi), ((y"
 & "Lo, yHi), tail)) -> \n        Type.C(((xLo + xHi) / 2, yHi + 20), txtTi"
 & "tle) \n    END \n  FI \nEND;\n\n/* Draw \"txtTitle\" centered above \"g"
 & "\" in the current \n   font. */\n\nPROC Draw(g, txtTitle) IS \n  SAVE P"
 & "S IN DrawAxes(g); DrawTitle(g, txtTitle) END \nEND;\n\n(* Draw the grap"
 & "h \"g\" with title \"txtTitle\". The axes \n   are drawn in the current"
 & " line width, and the title is \n   drawn in the current font. *)\n\nPRI"
 & "VATE CONST TickSz = 5;\n\nPRIVATE PROC TickMark(g, p, tickLoc, scale) I"
 & "S \n  VAR q, asc, dec, txt IN \n    q := Map(g, p); \n    asc, dec := P"
 & "S.FontHeight(); \n    PS.MoveTo(q);\n    PS.LineTo(R2.Minus(q, tickLoc)"
 & "); \n    PS.Stroke(); \n    IF \n      CAR(tickLoc) = 0 -> \n        q "
 & ":= R2.Minus(q, R2.Times(2, tickLoc)); \n        txt := Text.FromNum(CAR"
 & "(p) * scale, 3); \n        Type.C(R2.Minus(q, (0, asc)), txt) \n    | q"
 & " := R2.Minus(q, R2.Times(3, tickLoc)); \n      txt := Text.FromNum(CDR("
 & "p) * scale, 3); \n      Type.R(R2.Minus(q, (0, asc / 2)), txt) \n    FI"
 & " \n  END \nEND;\n\nPROC DrawTickMarks(g, cnt) IS \n  DrawScaledTickMark"
 & "s(g, cnt, (1, 1)) \nEND;\n\n(* Draw labeled tick marks on the graph \"g"
 & "\". The \n   argument \"cnt\" should be a pair of reals. The range \n  "
 & " of the visible x- and y-axes are divided into \n   \"CAR(cnt)\" and \""
 & "CDR(cnt)\" sections, respectively. The \n   tick marks are drawn in the"
 & " current line width and \n   end style, and the labels are drawn in the"
 & " current \n   font. *)\n\nPROC DrawScaledTickMarks(g, cnt, scale) IS \n"
 & "  IF \n    VAR \n      xScrn, yScrn, xLo, xHi, yLo, yHi, xCnt, yCnt, \n"
 & "      xScale, yScale \n    IN \n      g = [xScrn, yScrn, (xLo, xHi), (y"
 & "Lo, yHi)] AND \n      cnt = (xCnt, yCnt) AND \n      scale = (xScale, y"
 & "Scale) -> \n        VAR delta, x IN \n          delta := (xHi - xLo) / "
 & "xCnt; \n          x := xLo; \n          DO \n            x < xHi -> \n "
 & "             TickMark(g, (x,";

CONST E25_1 =
   " yLo), (0, TickSz), xScale); \n              x := x + delta \n         "
 & " OD; \n          TickMark(g, (xHi, yLo), (0, TickSz), xScale) \n       "
 & " END; \n        VAR delta, y IN \n          delta := (yHi - yLo) / yCnt"
 & "; \n          y := yLo; \n          DO \n            y < yHi -> \n     "
 & "         TickMark(g, (xLo, y), (TickSz, 0), yScale); \n              y "
 & ":= y + delta \n          OD; \n          TickMark(g, (xLo, yHi), (TickS"
 & "z, 0), yScale) \n        END \n    END \n  FI \nEND;\n\n(* Draw labeled"
 & " tick marks on the graph \"g\". The \n   arguments \"cnt\" and \"scale\""
 & " should both be pairs of \n   reals. The range of the visible x- and y-"
 & "axes are \n   divided into \"CAR(cnt)\" and \"CDR(cnt)\" sections, \n  "
 & " respectively. The tick marks are drawn in the current \n   line width "
 & "and end style, and the labels are drawn in \n   the current font. The l"
 & "abels along the x- and y-axes \n   are scaled by the factors \"CAR(scal"
 & "e)\" and \n   \"CDR(scale)\", respectively. *)\n\nPROC Line(g, pts) IS "
 & "\n  IF \n    VAR head, tail IN \n      pts = (head, tail) -> \n        "
 & "PS.MoveTo(Map(g, head)); \n        pts := tail; \n        DO \n        "
 & "  VAR head, tail IN \n            pts = (head, tail) -> \n             "
 & " PS.LineTo(Map(g, head)); pts := tail \n          END \n        OD \n  "
 & "  END \n  FI \nEND;\n\n(* Plot the list of points \"pts\" on the graph "
 & "\"g\". \"pts\" \n   should be a list of points \"[p_0, p_1, ..., p_n]\""
 & ". \n   The points are ``plotted\'\' by constructing a path of \n   line"
 & " segments that connect successive pairs of \n   points. *)\n\nPROC Pts("
 & "g, pts, ptCl) IS \n  DO \n    VAR head, tail, p IN \n      pts = (head,"
 & " tail) -> \n        p := Map(g, head); APPLY(ptCl, p); pts := tail \n  "
 & "  END \n  OD \nEND;\n\n(* Plot the list of points \"pts\" on \"g\" usin"
 & "g the \n   closure \"ptCl\" to draw each of the points. The \"ptCl\" \n"
 & "   closure will be applied with a single argument, which \n   is the lo"
 & "cation of the point to draw. The \"DrawDotCl\" \n   procedure can be us"
 & "ed for \"ptCl\". *)\n\nPROC PtsWithErrors(g, pts, ptCl, errorCl) IS \n "
 & " DO \n    VAR tail, p, dyLo, dyHi IN \n      ";

CONST E25_2 =
   "pts = ((p, (dyLo, dyHi)), tail) -> \n        APPLY(errorCl, Map(g, R2.P"
 & "lusY(p, dyLo)), \n              Map(g, R2.PlusY(p, dyHi))); \n        A"
 & "PPLY(ptCl, Map(g, p)); \n        pts := tail \n    END \n  OD \nEND;\n\n"
 & "(* Plot the list of points \"pts\" with vertical error \n   bars on the"
 & " graph \"g\", using \"ptCl\" to render the \n   points, and \"errorCl\""
 & " to render the error bars. The \n   argument \"pts\" should be a list o"
 & "f pairs of the form \n   \"(p, (dyLo, dyHi))\". Each pair describes a p"
 & "oint to \n   plot \"p\" and the error values in the y-coordinate. \n\n "
 & "  More formally, let \"Map\" denote the mapping from data \n   coordina"
 & "tes to screen coordinates. For each pair in \n   the list \"pts\", this"
 & " procedure invokes \"ptCl(Map(p))\" \n   to draw the point, and \n   \""
 & "errorCl(Map(R2.PlusY(p,dyLo)), \n   Map(R2.PlusY(p,dyHi)))\" to draw th"
 & "e error bars. The \n   bars are drawn before the points in case \"ptCl\""
 & " draws \n   points that are hollow. *)\n\nPRIVATE PROC DrawDot(rad, p) "
 & "IS \n  Circle.Draw(p, R2.PlusX(p, rad)); PS.Fill() \nEND;\n\nPROC cl :="
 & " DrawDotCl(rad) IS \n  cl := CLOSE(DrawDot, rad) \nEND;\n\n(* Returns a"
 & " closure that plots points as round dots \n   with radius \"rad\". *)\n"
 & "\nPRIVATE PROC DrawDiamondPath(p, w) IS \n  PS.MoveTo(R2.PlusX(p, w)); "
 & "\n  PS.LineTo(R2.MinusY(p, w)); \n  PS.LineTo(R2.MinusX(p, w)); \n  PS."
 & "LineTo(R2.PlusY(p, w)); \n  PS.Close() \nEND;\n\nPRIVATE PROC DrawDiamo"
 & "nd(w, p) IS \n  DrawDiamondPath(p, w); PS.Fill() \nEND;\n\nPROC cl := D"
 & "rawDiamondCl(w) IS \n  cl := CLOSE(DrawDiamond, w / 2) \nEND;\n\n(* Ret"
 & "urns a closure that plots points as filled \n   diamonds of width \"w\""
 & ". *)\n\nPRIVATE PROC DrawHollowDiamond(w, p) IS \n  DrawDiamondPath(p, "
 & "w); \n  SAVE PS IN PS.SetColor(Color.White); PS.Fill() END; \n  PS.Stro"
 & "ke() \nEND;\n\nPROC cl := DrawHollowDiamondCl(w) IS \n  cl := CLOSE(Dra"
 & "wHollowDiamond, w / 2) \nEND;\n\n(* Returns a closure that plots points"
 & " as filled \n   diamonds of width \"w\". *)\n\nPRIVATE PROC HLine(p, w)"
 & " IS \n  PS.MoveTo(R2.MinusX(p, w)); PS.LineTo(R2.PlusX(p, w)) \nEND;\n\n"
 & "PRIVATE PROC DrawErrorBar(w, lo, hi) IS ";

CONST E25_3 =
   "\n  SAVE PS IN \n    PS.SetEndStyle(PS.ButtEnds); \n    HLine(lo, w); \n"
 & "    HLine(hi, w); \n    PS.MoveTo(lo); \n    PS.LineTo(hi); \n    PS.St"
 & "roke() \n  END \nEND;\n\nPROC cl := ErrorBarCl(xWidth) IS \n  cl := CLO"
 & "SE(DrawErrorBar, xWidth / 2) \nEND;\n\n(* Returns a closure that draws "
 & "vertical error bars in \n   the current line width with horizontal endm"
 & "arks of \n   length \"xWidth\". *)\n\n";

CONST E26 =
   "; Copyright (C) 1992, Digital Equipment Corporation                    "
 & "     \n; All rights reserved.                                          "
 & "            \n; See the file COPYRIGHT for a full description.         "
 & "                   \n;                                                 "
 & "                          \n; Last modified on Mon Jan 27 16:08:07 PST "
 & "1997 by heydon                   \n\n(Shape (Width 600 + Inf - 400) (He"
 & "ight 500 + Inf - 500)\n  (TSplit %tsplit (Which startupScreen)\n    (Ge"
 & "neric %mainChild)\n    (Filter %startupScreen Passive (Cursor \"XC_watc"
 & "h\")\n      (Macro FixedHeight BOA (w) `(Shape (Height + 0 - 0) ,w))\n "
 & "     (VBox (LabelFont (Family \"Times\") (PointSize 180))\n\tFill \n\t("
 & "FixedHeight (Pixmap \"Juno2Logo.ppm\"))\n\t(Glue 10)\n\t(FixedHeight \""
 & "Welcome to Juno-2! Initializing...\")\n\t(Glue 10)\n\t(FixedHeight (Tex"
 & "t %initModule \"\"))\n\tFill\n      )\n    ) ;; Filter\n  ) ;; TSplit\n"
 & ") ;; Shape\n";

CONST E27 =
   "MODULE BST;\n\n(* A module for creating and searching binary search tre"
 & "es. *)\n\nIMPORT List;\n\nPRIVATE CONST NoChildren = (NIL, NIL);\n\nPRI"
 & "VATE PROC tree := FromList2(l, len) IS \n  IF \n    len = 0 -> tree := "
 & "NIL \n  | len = 1 -> tree := (CAR(l), NoChildren) \n  | VAR mid, suffix"
 & ", left, right IN \n      mid := len DIV 2; \n      suffix := List.Suffi"
 & "xFrom(l, mid); \n      left := FromList2(List.Prefix(l, mid), mid); \n "
 & "     right := FromList2(CDR(suffix), len - mid - 1); \n      tree := (C"
 & "AR(suffix), (left, right)) \n    END \n  FI \nEND;\n\nPROC tree := From"
 & "List(l) IS \n  tree := FromList2(l, List.Length(l)) \nEND;\n\n(* Return"
 & " a balanced binary search tree containing the \n   elements of the list"
 & " \"l\". \"l\" should be a list of \"(key, \n   value)\" pairs such that"
 & " the successive \"key\" values are \n   non-decreasing according to som"
 & "e total order. *)\n\nPROC elt := Find(k, tree, order) IS \n  VAR root, "
 & "cmp IN \n    elt := NIL; \n    DO \n      tree # NIL -> \n        root "
 & ":= CAR(tree); \n        cmp := APPLY(order, k, CAR(root)); \n        IF"
 & " \n          cmp < 0 -> tree := CAR(CDR(tree)) \n        | cmp > 0 -> t"
 & "ree := CDR(CDR(tree)) \n        | elt := root; tree := NIL \n        FI"
 & " \n    OD \n  END \nEND;\n\n(* If there is a pair \"(key, value)\" in \""
 & "tree\" such that \n   \"APPLY(order, k, key) = 0\", return it. Otherwis"
 & "e, return \n   \"NIL\". \n\n   The closure \"order\" should define a to"
 & "tal order \"<\" on \"K \n   x Key\", where \"K\" is the domain of key v"
 & "alues passed as \n   the first argument to the \"Find\" procedure, and "
 & "\"Key\" is \n   the domain of the keys in the \"tree\". The call \n   \""
 & "APPLY(order, k, key)\" should return a value less than, \n   equal to, "
 & "or greater than 0 as \"k\" is less than, equal to, \n   or greater than"
 & " \"key\" according to \"<\". *)\n\nPRIVATE PROC res := NumOrder(k, key)"
 & " IS res := k - key END;\n\nPROC elt := FindNum(k, tree) IS \n  elt := F"
 & "ind(k, tree, NumOrder) \nEND;\n\n(* Call \"Find\" above for the order i"
 & "n which both \"k\" and the \n   keys in the \"tree\" are numbers. *)\n\n"
 & "PRIVATE PROC res := IntervalOrder(k, int) IS \n  IF";

CONST E27_0 =
   " \n    k < CAR(int) -> res := -1 | k > CAR(CDR(int)) -> res := 1 \n  | "
 & "res := 0 \n  FI \nEND;\n\nPROC elt := FindInterval(k, tree) IS \n  elt "
 & ":= Find(k, tree, IntervalOrder) \nEND;\n\n(* Call \"Find\" above for th"
 & "e order in which \"k\" is a number \n   and the keys in the \"tree\" ar"
 & "e intervals of the form \n   \"[start, end, ...]\", where \"start\" and"
 & " \"end\" are numbers, \n   and the ellipses denote an arbitrary number "
 & "of additional \n   elements (possibly zero). *)\n\n";

CONST E28 =
   "MODULE ShowLine;\n\n(* The procedures is this module \n   are like the "
 & "procedures in the \n   \"Show\" module of the same name, \n   except th"
 & "at they move the \n   current point down by the total \n   height of th"
 & "e current font plus \n   the current line skip value \n   (maintained b"
 & "y the \"LineSkip\" \n   module). \n\n   All procedures in this module \n"
 & "   require that the current point \n   is defined. *)\n\nIMPORT LineSki"
 & "p, PS, Type;\n\nPRIVATE PROC h := NetFontHeight() IS\n  VAR asc, dec IN"
 & " \n    asc, dec := PS.FontHeight(); \n    h := asc + dec \n  END \nEND;"
 & "\n\n/* Set \"h\" to the total height of\n   the current font. */\n\nPRI"
 & "VATE PROC MoveDown(p) IS \n  VAR d IN \n    d := \n      NetFontHeight("
 & ") + \n      LineSkip.Get(); \n    PS.MoveTo((CAR(p), CDR(p) - d)) \n  E"
 & "ND \nEND;\n\n/* Set the current point to the \n   point a distance of t"
 & "he total \n   current font height plus the \n   current line skip below"
 & " \"p\". */\n\nPROC L(txt) IS \n  VAR p IN \n    p := PS.CurrentPoint();"
 & " \n    PS.Type(p, txt); \n    MoveDown(p) \n  END \nEND;\n\nUI TextTool"
 & "(L);\n\n(* Types \"txt\" left-justified off \n   the current point. *)\n"
 & "\nPROC C(txt) IS \n  VAR p IN \n    p := PS.CurrentPoint(); \n    Type."
 & "C(p, txt); \n    MoveDown(p) \n  END \nEND;\n\nUI TextTool(C);\n\n(* Ty"
 & "pes \"txt\" centered about the \n   current point. *)\n\nPROC R(txt) IS"
 & " \n  VAR p IN \n    p := PS.CurrentPoint(); \n    Type.R(p, txt); \n   "
 & " MoveDown(p) \n  END \nEND;\n\nUI TextTool(R);\n\n(* Types \"txt\" righ"
 & "t-jusified off \n   the current point. *)\n\n";

CONST E29 =
   "(Rim (Pen 10)\n  (VBox\n    \"Save changes to\"\n    (HBox\n      (Text"
 & " RightAlign (Margin 0) \"\\\"\")\n      (Shape (Width + 0) (Text %saveN"
 & "ame (Margin 0) \"test\"))\n      (Text LeftAlign (Margin 0) \"\\\"?\")\n"
 & "    )\n    (Glue 10)\n    (HBox\n      Fill\n      (Button %saveChanges"
 & " \"Save\")\n      (Glue 20)\n      (Button %discardChanges \"Discard\")"
 & "\n      Fill\n    )\n  )\n)\n";

CONST E30 =
   "MODULE LineSkip;\n\nCONST DefaultSkip = 0;\n\nPRIVATE VAR lskip := Defa"
 & "ultSkip;\n\n(* This module maintains a current \n   \"line skip\" value"
 & ". The line skip \n   value is used by other modules \n   that display c"
 & "onsecutive lines \n   of text. *)\n\nPROC skip := Get() IS \n  skip := "
 & "lskip \nEND;\n\nPROC Set(skip) IS lskip := skip END;\n\nUI SetTool(Set)"
 & ";\n\n(* Get/set the current line skip \n   value. *)\n\nUI Param(Set, D"
 & "efaultSkip);\n\nUI Param(Set, 1);\n\nUI Param(Set, 2);\n\nUI Param(Set,"
 & " 3);\n\nUI Param(Set, 4);\n\nUI Param(Set, 5);\n\nUI Param(Set, 10);\n\n"
 & "PRIVATE VAR history := NIL;\n\nPROC Save() IS \n  history := (lskip, hi"
 & "story) \nEND;\n\nPROC Restore() IS \n  lskip := CAR(history); \n  histo"
 & "ry := CDR(history) \nEND;\n\nUI PointTool(Save);\n\nUI PointTool(Restor"
 & "e);\n\n(* Save/restore the current line \n   skip value. *)\n\n";

CONST E31 =
   "MODULE VPrint;\n\nIMPORT Text, R2, Unparse, PS;\n\n(* A module for prin"
 & "ting lines of text to a virtual \n   terminal. *)\n\n(* \\section{Setti"
 & "ng Module State} *)\n\nPRIVATE VAR currPt := NIL;\n\n/* The current poi"
 & "nt at which the next text should be \n   printed. */\n\nPRIVATE VAR lef"
 & "tMargin := NIL;\n\n/* The x-coordinate of the left margin along which t"
 & "ext \n   will be justified. */\n\nPRIVATE VAR lineSep := NIL;\n\n/* The"
 & " current line separation in points. It is a \n   function of the curren"
 & "t font. A value of 0 means the \n   line separation must be computed fr"
 & "om the current \n   font. */\n\nPRIVATE VAR scrollDir := NIL;\n\n/* Eit"
 & "her +1 or -1. \"scrollDir\" specifies whether \n   subsequent lines are"
 & " printed above (+1) or below (-1) \n   the current one. */\n\nPRIVATE V"
 & "AR scrollPending := NIL;\n\n/* Indicates if a scroll is pending. A non-"
 & "NIL value \n   indicates that a scroll is pending, meaning that a \n   "
 & "newline character has just been printed, but that \n   \"currPt\" has n"
 & "ot been adjusted vertically. This will \n   only be the case when \"scr"
 & "ollDir\" is -1, since only \n   when scrolling down is the vertical scr"
 & "oll amount \n   dependent on the *next* line of text to be printed. \n "
 & "  This variable is necessary to correctly handle font \n   changes betw"
 & "een lines. */\n\nCONST \n  DefaultFontFace = \"Courier\", DefaultFontSi"
 & "ze = PS.Small;\n\n(* This module maintains its own font face and font s"
 & "ize, \n   independent of that maintained by the \"PS\" module. *)\n\nPR"
 & "IVATE VAR \n  fontFace := DefaultFontFace, fontSize := DefaultFontSize;"
 & "\n\nPROC SetFontFace(nm) IS \n  fontFace := nm; lineSep := NIL \nEND;\n"
 & "\nUI SetTool(SetFontFace);\n\nUI Param(SetFontFace, DefaultFontFace);\n"
 & "\nUI Param(SetFontFace, \"Times-Roman\");\n\nUI Param(SetFontFace, \"Ti"
 & "mes-Bold\");\n\nUI Param(SetFontFace, \"Times-Italic\");\n\nUI Param(Se"
 & "tFontFace, \"Times-BoldItalic\");\n\nUI Param(SetFontFace, \"Helvetica\""
 & ");\n\nUI Param(SetFontFace, \"Helvetica-Bold\");\n\nUI Param(SetFontFac"
 & "e, \"Helvetica-Oblique\");\n\nUI Param(SetFontFace, \"Helvetica-BoldObl"
 & "ique\");\n\nUI Param(SetFontFace, \"Courier\")";

CONST E31_0 =
   ";\n\nUI Param(SetFontFace, \"Courier-Bold\");\n\nUI Param(SetFontFace, "
 & "\"Courier-Oblique\");\n\nUI Param(SetFontFace, \"Courier-BoldOblique\")"
 & ";\n\nUI Param(SetFontFace, \"Symbol\");\n\n(* Change the current font f"
 & "ace to the one named \"nm\". \n   The behavior is undefined if this pro"
 & "cedure is called \n   in the middle of an output line. *)\n\nPROC SetFo"
 & "ntSize(sz) IS \n  fontSize := sz; lineSep := NIL \nEND;\n\nUI SetTool(S"
 & "etFontSize);\n\nUI Param(SetFontSize, DefaultFontSize);\n\nUI Param(Set"
 & "FontSize, PS.Tiny);\n\nUI Param(SetFontSize, PS.Small);\n\nUI Param(Set"
 & "FontSize, PS.Medium);\n\nUI Param(SetFontSize, PS.Big);\n\nUI Param(Set"
 & "FontSize, PS.Large);\n\nUI Param(SetFontSize, PS.Huge);\n\n(* Change th"
 & "e current font size to \"sz\". The behavior is \n   undefined if this p"
 & "rocedure is called in the middle of \n   an output line. *)\n\nCONST De"
 & "faultLineSpacing = 1;\n\n(* This module maintains a current line spacin"
 & "g, which is \n   a multiple of the spacing between consecutive lines \n"
 & "   that is designed into each font. A line spacing value less \n   than"
 & " 1 makes the lines closer together, while a value\n   greater than 1 ma"
 & "kes them further apart. For example, \n   to achieve double spacing, us"
 & "e a line spacing of 2. *)\n\nPRIVATE VAR spacing := DefaultLineSpacing;"
 & "\n\n/* The current line spacing. */\n\nPROC SetLineSpacing(spc) IS spac"
 & "ing := spc END;\n\nUI SetTool(SetLineSpacing);\n\nUI Param(SetLineSpaci"
 & "ng, DefaultLineSpacing);\n\nUI Param(SetLineSpacing, 0.5);\n\nUI Param("
 & "SetLineSpacing, 0.75);\n\nUI Param(SetLineSpacing, 1);\n\nUI Param(SetL"
 & "ineSpacing, 1.5);\n\nUI Param(SetLineSpacing, 2);\n\n(* Set the current"
 & " line spacing to \"spc\". The behavior is \n   undefined if this proced"
 & "ure is called in the middle of \n   an output line. *)\n\n(* \\section{"
 & "Initialization} *)\n\nPROC StartNW(p) IS \n  currPt := p; \n  leftMargi"
 & "n := CAR(p); \n  scrollDir := -1; \n  scrollPending := 1 \nEND;\n\nUI P"
 & "ointTool(StartNW);\n\n(* Start a new virtual terminal whose northwest p"
 & "oint is \n   \"p\". Subsequent lines are printed downward. *)\n\nPROC S"
 & "tartSW(p) IS \n  currPt := p; \n  leftMargin ";

CONST E31_1 =
   ":= CAR(p); \n  scrollDir := 1; \n  scrollPending := NIL \nEND;\n\nUI Po"
 & "intTool(StartSW);\n\n(* Start a new virtual terminal whose southwest po"
 & "int is \n   \"p\". Subsequent lines are printed upward. *)\n\n(* \\sect"
 & "ion{Printing} *)\n\n(* This module maintains a current print position. "
 & "Each of\n   the following procedures prints text at the current print\n"
 & "   position and advances the print position to the end of\n   the text "
 & "just printed. When a newline character is printed,\n   the print positi"
 & "on is moved so as to simulate a carriage\n   return according to the cu"
 & "rrent font, the current line\n   spacing, and the vertical advancement "
 & "direction. *)\n\nPRIVATE PROC SetLineSep() IS \n  IF \n    lineSep = NI"
 & "L -> lineSep := PS.GetFontPtSize() | SKIP \n  FI \nEND;\n\n/* Set \"lin"
 & "eSep\" from the current font if necessary. */\n\nPRIVATE PROC Scroll() "
 & "IS \n  SetLineSep(); \n  currPt := \n    R2.PlusY(currPt, scrollDir * l"
 & "ineSep * spacing) \nEND;\n\nPRIVATE PROC ScrollIfPending() IS \n  IF sc"
 & "rollPending # NIL -> Scroll() | SKIP FI \nEND;\n\n/* If a scroll is pen"
 & "ding, adjust \"currPt\" vertically. */\n\nPRIVATE PROC NonNLString(txt)"
 & " IS \n  ScrollIfPending(); \n  PS.Type(currPt, txt); \n  currPt := R2.P"
 & "lusX(currPt, PS.StringWidth(txt)) \nEND;\n\n/* Print \"txt\" at the cur"
 & "rent point. \"txt\" is assumed not \n   to contain any newline characte"
 & "rs. */\n\nPRIVATE PROC NewLine() IS \n  currPt := (leftMargin, CDR(curr"
 & "Pt)); \n  IF \n    scrollDir < 0 -> scrollPending := 1 \n  | scrollDir "
 & "> 0 -> Scroll() \n  FI \nEND;\n\n/* Handle a newline character. */\n\nP"
 & "RIVATE CONST NL = Text.GetChar(\"\\n\", 0);\n\nPRIVATE PROC String2(txt"
 & ") IS \n  DO \n    txt # \"\" -> \n      VAR nextNL, len IN \n        ne"
 & "xtNL := Text.FindChar(txt, NL); \n        IF \n          nextNL < 0 -> "
 & "len := Text.Length(txt) \n        | len := nextNL \n        FI; \n     "
 & "   IF \n          len > 0 -> NonNLString(Text.Sub(txt, 0, len)) \n     "
 & "   | SKIP \n        FI; \n        IF \n          nextNL >= 0 -> NewLine"
 & "(); len := len + 1 | SKIP \n        FI; \n        txt := Text.Sub(txt, "
 & "len, 1e6) \n      END \n  OD \nEND;\n\n";

CONST E31_2 =
   "/* Same as \"String\" below, but this procedure assumes the \n   font h"
 & "as already been set correctly according to \n   \"fontFace\" and \"font"
 & "Size\". */\n\nPROC String(txt) IS \n  VAR nm, sz IN \n    nm, sz := PS."
 & "GetFont(); \n    PS.SetFont(fontFace, fontSize); \n    String2(txt); \n"
 & "    PS.SetFont(nm, sz) \n  END \nEND;\n\nPROC StringNL(txt) IS String(t"
 & "xt & \"\\n\") END;\n\n(* \"String\" prints \"txt\" at the current print"
 & " position as described\n   above. \"StringNL\" is like \"String\", but "
 & "it appends a newline character. *)\n\nPROC Point(p) IS String(Unparse.P"
 & "oint(p)) END;\n\nPROC PointNL(p) IS String(Unparse.Point(p) & \"\\n\") "
 & "END;\n\nUI PointTool(Point);\nUI PointTool(PointNL);\n\n(* \"Point\" pr"
 & "ints the point \"p\" as a pair of reals at the current\n   print positi"
 & "on. The precision to which the real numbers are printed\n   is controll"
 & "ed by the \"Unparse\" module. \"PrintNL\" is like \"Point\",\n   but it"
 & " appends a newline character. *) \n\nPROC Value(val) IS String(Unparse."
 & "Value(val)) END;\n\nPROC ValueNL(val) IS Value(val); String(\"\\n\") EN"
 & "D;\n\n(* \"Value\" prints the unparsed representation of \"val\" at the"
 & " current\n   print position. It uses the \"Unparse.Value\" procedure, w"
 & "hich\n   controls the precision to which any numbers in \"val\" are pri"
 & "nted; \n   that procedure may also do some automatic list breaking. \"V"
 & "alueNL\"\n   is like \"Value\", but it appends a newline character. *)\n"
;

CONST E32 =
   "MODULE PtLoc;\n\n(* Procedures for labelling points \n   with coordinat"
 & "es. *)\n\n(* It is a checked run-time error \n   if any of the procedur"
 & "es in this \n   module are supplied parameters \n   other than points. "
 & "*)\n\nIMPORT Unparse, PS;\n\nPROC Point(p) IS \n  PS.Type(p, Unparse.Po"
 & "int(p)) \nEND;\n\nUI PointTool(Point);\n\n(* Print the coordinate value"
 & " of \n   \"p\" at location \"p\". *)\n\nPROC MoveTo(p) IS \n  PS.MoveTo"
 & "(p); Point(p) \nEND;\n\nPROC LineTo(p) IS \n  PS.LineTo(p); Point(p) \n"
 & "END;\n\nPROC CurveTo(p, q, r) IS \n  PS.CurveTo(p, q, r); \n  Point(p);"
 & " \n  Point(q); \n  Point(r) \nEND;\n\nUI PointTool(MoveTo);\n\nUI Point"
 & "Tool(LineTo);\n\nUI PointTool(CurveTo);\n\n(* Execute the procedure of "
 & "the \n   same name in the \"PS\" module, \n   but print the coordinate "
 & "of each \n   argument point. *)\n\n";

CONST E33 =
   "; Copyright (C) 1992, Digital Equipment Corporation                    "
 & "     \n; All rights reserved.                                          "
 & "            \n; See the file COPYRIGHT for a full description.         "
 & "                   \n;                                                 "
 & "                          \n; Last modified on Thu Mar 28 17:44:29 PST "
 & "1996 by heydon\n\n(VTile2\n  (Rim (Pen 8)\n    (VBox\n      (FixedHeigh"
 & "t (TextL \"Defaults:\"))\n      (Space)\n      (Shape (Width2 500) (Hei"
 & "ght 190 + Inf - 150)\n        (Border\n          (TextEdit %configDefau"
 & "lt (BgColor \"White\")\n            ReadOnly (From \"DefaultConfig.sx\""
 & "))\n      ))\n  ))\n  (Rim (Pen 8)\n    (VBox\n      (FixedHeight (Text"
 & "L \"Overrides:\"))\n      (Space)\n      (Shape (Width2 500) (Height 10"
 & "0 + Inf - 60)\n        (Frame Lowered\n          (TextEdit %configOverr"
 & "ides (BgColor \"White\"))\n      ))\n      (Glue 8)\n      (HBox Fill ("
 & "Button %configOk \"  OK  \") Fill)\n  ))\n)\n";

CONST E34 =
   "MODULE Color;\n\n(* Procedures for manipulating and setting colors. *)\n"
 & "\nIMPORT Math;\n\n(* The procedures in this module manipulate color \n "
 & "  values, which are lists of 3 real numbers \n   corresponding to the l"
 & "ocation of the color in the \n   unit RGB cube. *)\n\nCONST \n  Black ="
 & " [0, 0, 0], \n  White = [1, 1, 1], \n  Red = [1, 0, 0], \n  Green = [0,"
 & " 1, 0], \n  Blue = [0, 0, 1], \n  Cyan = [0, 1, 1], \n  Magenta = [1, 0"
 & ", 1], \n  Yellow = [1, 1, 0],\n  Grey25 = FromGrey(1/4),\n  Grey50 = Fr"
 & "omGrey(1/2),\n  Grey75 = FromGrey(3/4);\n\n(* These colors are the vert"
 & "ices of the unit RGB cube. *)\n\nPROC c := FromGrey(v) IS c := [v, v, v"
 & "] END;\n\n(* Make \"c\" the grey color with value \"v\". The value \"v "
 & "= 0\" produces black,\n   and the value \"v = 1\" produces white. *)\n\n"
 & "PROC c := FromRGB(r, g, b) IS c := [r, g, b] END;\n\n(* Make \"c\" the "
 & "color with RGB values \"r\", \"g\", and \"b\". \n*)\n\nCONST\n  RedHue "
 & "= 0,\n  YellowHue = 1/6,\n  GreenHue = 1/3,\n  CyanHue = 1/2,\n  BlueHu"
 & "e = 2/3,\n  MagentaHue = 5/6;\n\n(* A color may also be specified as a "
 & "hue, saturation, \n   and value (HSV) triple. The hue \"h\" determines "
 & "the \n   pure hue or pigment or the color. The hue varies\n   around th"
 & "e color wheel as indicated by the 6 \"Hue\"\n   constants defined above"
 & ".\n\n   The saturation \"s\" is the intensity of the color. The \n   pu"
 & "re colors have \"s = 1\", while the greys have \"s = \n   0\" (in which"
 & " case the hue is irrelevant and the value \n   determines the shade of "
 & "grey). \n\n   The value \"v\" is the brightness of the color. The \n   "
 & "pure colors have \"v = 1\", while black has \"v = 0\" (in \n   which ca"
 & "se the hue and saturation are both \n   irrelevant). *)\n\nPROC c := Fr"
 & "omHSV(h, s, v) IS \n  IF \n    v = 0 -> c := Black | s = 0 -> c := From"
 & "Grey(v) \n  | IF h = 1 -> h := 0 | SKIP FI; \n    VAR i, f, p, q, t IN "
 & "\n      i := FLOOR(h * 6); \n      f := (h * 6) - i; \n      p := v * ("
 & "1 - s); \n      q := v * (1 - (s * f)); \n      t := v * (1 - (s * (1 -"
 & " f))); \n      IF \n        i < 0.5 -> c := [v, t, p] \n      | i < 1.5"
 & " -> c := [q, v, p] \n      | i < 2.5 -> c :=";

CONST E34_0 =
   " [p, v, t] \n      | i < 3.5 -> c := [p, q, v] \n      | i < 4.5 -> c :"
 & "= [t, p, v] \n      | i < 5.5 -> c := [v, p, q] \n      FI \n    END \n"
 & "  FI \nEND;\n\n(* Make \"c\" the color with HSV values \"h\", \"s\", an"
 & "d \"v\". \n*)\n\nPROC c := HueN(n) IS\n  c := (Math.Phi * n) MOD 1.0\nE"
 & "ND;\n\n(* This function computes a mapping from integers to hue values "
 & "such\n   that the hues corresponding to the integers 1, 2, ..., n are e"
 & "venly\n   distributed around the color wheel, and such that the hues\n "
 & "  corresponding to subsequent integers are sufficiently distinct to\n  "
 & " be easily distinguished. *)\n";

CONST E35 =
   "MODULE Time;\n\nPROC t := Now() IS SKIP END;\n\n(* Sets \"t\" to the nu"
 & "mber of seconds since some starting\n   point. The starting point may v"
 & "ary from one invocation\n   of the Juno application to another, but it "
 & "will be fixed\n   throughout a single invocation. *)\n";

CONST E36 =
   "MODULE Path;\n\n(* Procedures related to PostScript paths *)\n\nIMPORT "
 & "BST, List, Color, R2, Geometry, PS, Bezier, \n       Circle;\n\nPRIVATE"
 & " PROC res := TransformPts(pts, xform) IS \n  IF \n    pts = NIL -> res "
 & ":= NIL \n  | IF \n      VAR pt, tail IN \n        pts = (pt, tail) -> \n"
 & "          res := \n            (APPLY(xform, pt), \n             Transf"
 & "ormPts(tail, xform)) \n      END \n    FI \n  FI \nEND;\n\nPROC newPath"
 & " := Transform(path, xform) IS \n  IF \n    path = NIL -> newPath := NIL"
 & " \n  | IF \n      VAR op, args, tail IN \n        path = ((op, args), t"
 & "ail) -> \n          newPath := \n            ((op, TransformPts(args, x"
 & "form)), \n             Transform(tail, xform)) \n      END \n    FI \n "
 & " FI \nEND;\n\n(* Set \"newPath\" to a representation of the path \n   \""
 & "path\" whose points have been transformed \n   according to the closure"
 & " \"xform\". The argument \n   \"path\" and the result \"newPath\" are p"
 & "aths as \n   represented by the result of the \n   \"PS.CurrentPath\" p"
 & "rocedure. The transformation \n   function \"xform\" should be a closur"
 & "e that takes \n   a single point as an IN parameter, and returns \n   a"
 & " single point as an OUT parameter. *)\n\nPRIVATE PROC AnnotatePoint(pt)"
 & " IS \n  SAVE PS IN \n    PS.NewPath(); \n    Circle.DrawR(pt, 3); \n   "
 & " PS.SetColor(Color.Blue); \n    PS.Fill() \n  END \nEND;\n\nPRIVATE PRO"
 & "C AnnotateVector(from, to) IS \n  SAVE PS IN \n    PS.NewPath(); \n    "
 & "Circle.DrawR(to, 3); \n    PS.SetColor(Color.Red); \n    PS.Fill(); \n "
 & "   PS.MoveTo(from); \n    PS.LineTo(to); \n    PS.SetColor(Color.Grey50"
 & "); \n    PS.Stroke() \n  END \nEND;\n\nPROC Annotate() IS \n  VAR p, la"
 & "stP IN \n    p, lastP := PS.CurrentPath(), NIL; \n    DO \n      p # NI"
 & "L -> \n        VAR op, args IN \n          (op, args) = CAR(p) -> \n   "
 & "         IF \n              op = \"MoveTo\" OR op = \"LineTo\" -> \n   "
 & "             lastP := CAR(args); \n                AnnotatePoint(lastP)"
 & " \n            | op = \"Close\" -> lastP := NIL \n            | op = \""
 & "CurveTo\" -> \n                VAR p1, p2, p3 IN \n                  ar"
 & "gs = [p1, p2, p3] -> \n                    ";

CONST E36_0 =
   "AnnotateVector(lastP, p1); \n                    AnnotatePoint(p3); \n "
 & "                   AnnotateVector(p3, p2); \n                    lastP "
 & ":= p3 \n                END \n            FI \n        END; \n        p"
 & " := CDR(p) \n    OD \n  END \nEND;\n\nUI PointTool(Annotate);\n\n(* Ann"
 & "otates the current path. The points on the \n   path are shown as small"
 & " blue dots, and the \n   control points of any Bezier curves are shown "
 & "\n   as small red dots. Light grey lines are shown \n   between Bezier "
 & "control points and end points. *)\n\nPROC AppendToCurrent(path) IS \n  "
 & "DO \n    path # NIL -> \n      VAR op, args IN \n        (op, args) = C"
 & "AR(path) -> \n          IF \n            op = \"MoveTo\" -> PS.MoveTo(C"
 & "AR(args)) \n          | op = \"LineTo\" -> PS.LineTo(CAR(args)) \n     "
 & "     | op = \"Close\" -> PS.Close() \n          | op = \"CurveTo\" -> \n"
 & "              VAR p1, p2, p3 IN \n                args = [p1, p2, p3] -"
 & "> \n                  PS.CurveTo(p1, p2, p3) \n              END \n    "
 & "      FI \n      END; \n      path := CDR(path) \n  OD \nEND;\n\n(* App"
 & "end the path \"path\" to the current path; \n   \"path\" should be a pa"
 & "th description as returned \n   by the \"PS.CurrentPath()\" procedure. "
 & "*)\n\nPROC segs := ToSegments(p) IS \n  VAR firstP, currP, offset, end,"
 & " len IN \n    segs, offset := NIL, 0; \n    firstP, currP := NIL, NIL; "
 & "\n    DO \n      p # NIL -> \n        VAR op, args IN \n          (op, "
 & "args) = CAR(p) -> \n            IF \n              op = \"MoveTo\" -> \n"
 & "                firstP := CAR(args); \n                currP := firstP "
 & "\n            | op = \"LineTo\" -> \n                len := \n         "
 & "         Geometry.Dist(currP, CAR(args)); \n                end := offs"
 & "et + len; \n                segs, offset, currP := \n                  "
 & "(([offset, end, len], \n                    [\"Straight\", currP, CAR(a"
 & "rgs)]), \n                   segs), end, CAR(args) \n            | op ="
 & " \"CurveTo\" -> \n                VAR p1, p2, p3 IN \n                 "
 & " args = [p1, p2, p3] -> \n                    len := \n                "
 & "      Bezier.Length(currP, p1";

CONST E36_1 =
   ", p2, \n                                    p3); \n                    "
 & "end := offset + len; \n                    segs, offset, currP := \n   "
 & "                   (([offset, end, len], \n                        [\"C"
 & "urve\", currP, p1, p2, p3]), \n                       segs), end, p3 \n"
 & "                END \n            | op = \"Close\" -> \n               "
 & " len := Geometry.Dist(currP, firstP); \n                end := offset +"
 & " len; \n                segs, offset, firstP, currP := \n              "
 & "    (([offset, end, len], \n                    [\"Straight\", currP, f"
 & "irstP]), \n                   segs), end, NIL, firstP \n            FI "
 & "\n        END; \n        p := CDR(p) \n    OD \n  END; \n  segs := BST."
 & "FromList(List.Reverse(segs)) \nEND;\n\n(* Set \"segs\" to a list of seg"
 & "ments that \n   represents the straight and curved segments of \n   the"
 & " path \"p\", which should be a path as \n   returned by the \"PS.Curren"
 & "tPath()\" procedure. \n   The \"segs\" result can be passed to the \n  "
 & " \"Length\", \"AtT\", and \"TangentAtT\" procedures \n   below. See the"
 & " private view for a description \n   of how \"segs\" is represented. *)"
 & "\n\n/* The \"segs\" result is a binary search tree of \n   the form: \n"
 & "\n|    segs     ::= tree\n|    tree     ::= ( seg, ( tree, tree ) ) | N"
 & "IL\n|    seg      ::= ( interval, value )\n|    interval ::= [ start, e"
 & "nd, len ]\n|    value    ::= [ type, pt, ... ]\n|    type     ::= \"Str"
 & "aight\" | \"Curved\"\n|    pt       ::= ( x, y )\n\n   In each interval"
 & ", \"start + len = end\", and \n   \"len\" is the length of that segment"
 & ". The \n   segments are arranged in a binary search tree: \n   for all "
 & "nodes \"n\", the interval for \"n\" is at \n   least the interval of it"
 & "s left child, and at \n   most the interval of its right child. The \n "
 & "  proceudure \"BST.FromList\" is used to construct \n   \"segs\", and t"
 & "he procedure \"BST.FindInterval\" is \n   used to search for the segmen"
 & "t containing a \n   given time \"t\". \n\n   If the segment\'s \"type\""
 & " is \"Straight\", then \n   \"pts\" is a list of two points, namely, th"
 & "e \n   segment\'s start and end points. If \"type\"";

CONST E36_2 =
   " is \n   \"Curved\", then \"pts\" is a list of the four \n   points def"
 & "ining the Bezier curve for that \n   segment. */\n\nPROC len := Length("
 & "segs) IS \n  IF \n    segs = NIL -> len := 0 \n  | IF \n      VAR start"
 & ", end, len1, val, l, r IN \n        segs = (([start, end, len1], val), "
 & "(l, r)) -> \n          len := len1 + Length(l) + Length(r) \n      END "
 & "\n    FI \n  FI \nEND;\n\n(* Set \"len\" to the total length of the seg"
 & "ments \n   \"segs\". *)\n\nPROC pt := AtT(segs, t) IS \n  VAR seg IN \n"
 & "    seg := BST.FindInterval(t, segs); \n    IF \n      VAR start, end, "
 & "len, value IN \n        seg = ([start, end, len], value) -> \n         "
 & " IF \n            VAR from, to IN \n              value = [\"Straight\""
 & ", from, to] -> \n                pt := \n                  ((t - start)"
 & " / len, 0) REL \n                  (from, to) \n            END \n     "
 & "     | VAR p0, p1, p2, p3 IN \n              value = [\"Curve\", p0, p1"
 & ", p2, p3] -> \n                pt := \n                  Bezier.AtT(p0,"
 & " p1, p2, p3, \n                             (t - start) / len) \n      "
 & "      END \n          FI \n      END \n    FI \n  END \nEND;\n\n(* Set "
 & "\"pt\" to the point on the path \"segs\" at \n   time \"t\". Requires \""
 & "0 <= t <= Length(segs)\". *)\n\nPROC tangent := TangentAtT(segs, t) IS "
 & "\n  VAR seg IN \n    seg := BST.FindInterval(t, segs); \n    IF \n     "
 & " VAR from, to IN \n        CDR(seg) = [\"Straight\", from, to] -> \n   "
 & "       tangent := R2.Minus(to, from) \n      END \n    | VAR start, end"
 & ", len, p0, p1, p2, p3 IN \n        seg = \n          ([start, end, len]"
 & ", \n           [\"Curve\", p0, p1, p2, p3]) -> \n          tangent := \n"
 & "            Bezier.PrimeAtT(p0, p1, p2, p3, \n                         "
 & "   (t - start) / len) \n      END \n    FI \n  END \nEND;\n\n(* Set \"p"
 & "t\" to the tangent vector to the point on \n   the path \"segs\" at tim"
 & "e \"t\". Requires \"0 <= t \n   <= Length(segs)\". *)\n\n";

CONST E37 =
   "P4\n11 8\n\000\000\000\000\377\340\177\300?\200\037\000\016\000\004\000"
;

CONST E38 =
   "MODULE Arc;\n\n(* Procedures for drawing circular \n   arcs. *)\n\nIMPO"
 & "RT Math, PS, Circle, Geometry, Angle;\n\nPRIVATE FUNC d = ArcPoint(a, b"
 & ", c) IS \n  d ~ c AND \n  (a, b) CONG (b, d) AND \n  Geometry.Colinear("
 & "b, d, c) \nEND;\n\nPRIVATE FUNC \n  e = RightIntersect(a, b, d) IS \n  "
 & "e ~ (0.5, 0.5) REL (a, d) AND \n  Angle.Right(b, a, e) AND \n  Angle.Ri"
 & "ght(b, d, e) \nEND;\n\nPRIVATE CONST MaxCurveRatio = 0.05;\n\n/* If the"
 & " ratio of the distance \n   between endpoints to the radius of \n   cur"
 & "vature is at most \n   \"MaxCurveRatio\", then a straight \n   line is "
 & "drawn instead of a curve. */\n\nPRIVATE PROC SmallArc(b, c) IS \n  VAR "
 & "a, d IN \n    a := PS.CurrentPoint(); \n    d := ArcPoint(a, b, c); \n "
 & "   IF \n      Geometry.Dist(a, d) / \n      Geometry.Dist(a, b) < \n   "
 & "     MaxCurveRatio -> PS.LineTo(d) \n    | VAR \n        e = RightInter"
 & "sect(a, b, d), \n        f ~ Geometry.Mid(a, e), \n        g ~ Geometry"
 & ".Mid(d, e) \n      IN \n        VAR \n          h ~ Geometry.Mid(a, f),"
 & " \n          i ~ Geometry.Mid(f, g), \n          j ~ Geometry.Mid(g, d)"
 & ", \n          k ~ Geometry.Mid(h, i), \n          l ~ Geometry.Mid(i, j"
 & "), \n          m ~ Geometry.Mid(k, l) \n        IN \n          h = Geom"
 & "etry.Mid(a, f) AND \n          i = Geometry.Mid(f, g) AND \n          j"
 & " = Geometry.Mid(g, d) AND \n          k = Geometry.Mid(h, i) AND \n    "
 & "      l = Geometry.Mid(i, j) AND \n          m = Geometry.Mid(k, l) AND"
 & " \n          Geometry.Colinear(a, f, e) AND \n          Geometry.Coline"
 & "ar(d, g, e) AND \n          (a, f) CONG (d, g) AND \n          (a, b) C"
 & "ONG (b, m) -> \n            PS.CurveTo(f, g, d) \n        END \n      E"
 & "ND \n    FI\n  END \nEND;\n\nPRIVATE PROC y := PosAngle(x) IS \n  IF \n"
 & "    x < 0 -> y := x + 2 * Math.Pi \n  | y := x \n  FI \nEND;\n\nPRIVATE"
 & " CONST \n  HalfPi = Math.Pi / 2, \n  Epsilon = 0.001, \n  HalfPiEps = H"
 & "alfPi - Epsilon;\n\nPROC Draw(a, b) IS \n  VAR c, theta IN \n    c := P"
 & "S.CurrentPoint(); \n    theta := \n      PosAngle(Angle.CC(b, a, c)); \n"
 & "    DO \n      theta >= HalfPiEps -> \n        Circle.DrawQuarter(a); \n"
 & "        theta := theta - Ha";

CONST E38_0 =
   "lfPi \n    OD; \n    IF \n      theta > Epsilon -> SmallArc(a, b) \n   "
 & " | SKIP \n    FI \n  END \nEND;\n\nPROC DrawCC(a, b) IS \n  VAR c, thet"
 & "a IN \n    c := PS.CurrentPoint(); \n    theta := \n      PosAngle(Angl"
 & "e.CC(c, a, b)); \n    DO \n      theta >= HalfPiEps -> \n        Circle"
 & ".DrawQuarterCC(a); \n        theta := theta - HalfPi \n    OD; \n    IF"
 & " \n      theta > Epsilon -> SmallArc(a, b) \n    | SKIP \n    FI \n  EN"
 & "D \nEND;\n\nUI PointTool(Draw);\n\nUI PointTool(DrawCC);\n\n(* Add a cl"
 & "ockwise or \n   counter-clockwise circular arc, \n   respectively, to t"
 & "he current path. \n   In each case, the arc starts at the \n   current "
 & "point, has center \"a\", and \n   ends at a point along the ray \"ab\"."
 & " \n*)\n";

CONST E39 =
   "MODULE Rel;\n\n(* Functions for specifying \n   coordinates relative to"
 & " some \n   other coordinate system. *)\n\nIMPORT R2;\n\nFUNC q = C1(p, "
 & "a) IS \n  q = R2.Plus(p, a) \nEND;\n\nUI PointTool(C1);\n\n(* \"q\" is "
 & "\"a\" shifted by \"p\". *)\n\nFUNC q = C2(p, a, b) IS \n  q = p REL (a,"
 & " b) \nEND;\n\nUI PointTool(C2);\n\n(* For completeness, \"q\" is \"p RE"
 & "L \n   (a, b)\", namely \"q\" is the point \n   \"p\" in the coordinate"
 & " system in \n   which \"a\" is the origin and \"b\" \n   is the tip of "
 & "the unit x-vector. \n*)\n\nFUNC q = C3(p, a, b, c) IS \n  (E xVec, yVec"
 & ", px, py :: \n    p = (px, py) AND \n    xVec = \n      R2.Times(px, R2"
 & ".Minus(b, a)) AND \n    yVec = \n      R2.Times(py, R2.Minus(c, a)) AND"
 & " \n    q = \n      R2.Plus(a, R2.Plus(xVec, yVec))) \nEND;\n\nUI PointT"
 & "ool(C3);\n\n(* \"q\" is the point \"p\" in the \n   skewed coordinate s"
 & "ystem in \n   which \"a\" is the origin, \"b\" is \n   the tip of the u"
 & "nit x-vector, \n   and \"c\" is the tip of the unit \n   y-vector. *)\n"
 & "\nFUNC q = Inv(p, a, b) IS \n  (E ab, ac, ap, abLen, abLen2,\n     qx, "
 & "qy :: \n    ab = R2.Minus(b, a) AND \n    ac = (-CDR(ab), CAR(ab)) AND "
 & "\n    ap = R2.Minus(p, a) AND \n    abLen = R2.Length(ab) AND \n    abL"
 & "en2 = abLen * abLen AND \n    q = (qx, qy) AND \n    qx = R2.Dot(ap, ab"
 & ") / abLen2 AND \n    qy = R2.Dot(ap, ac) / abLen2) \nEND;\n\nUI PointTo"
 & "ol(Inv);\n\n(* This function is equivalent to \n   \"p = q REL (a, b)\""
 & ", but it can \n   be used functionally to \n   establish useful hints i"
 & "f \"p\", \n   \"a\", and \"b\" are already hinted. \n*)\n\nFUNC x = Inv"
 & "X(p, a, b) IS \n  (E ab, ap, abLen2 :: \n    ab = R2.Minus(b, a) AND \n"
 & "    ap = R2.Minus(p, a) AND \n    abLen2 = R2.Length2(ab) AND \n    x ="
 & " R2.Dot(ap, ab) / abLen2) \nEND;\n\n(* This function is equivalent to \n"
 & "   \"(E y :: p = (x, y) REL (a, b))\".\n   It can be used functionally "
 & "to \n   establish useful hints if \"p\", \n   \"a\", and \"b\" are alre"
 & "ady hinted. \n*)\n\nFUNC y = InvY(p, a, b) IS \n  (E abx, aby, ac, ap, "
 & "acLen2 :: \n    (abx, aby) = R2.Minus(b, a) AND \n    ac = (-aby, abx) "
 & "AND \n    ap = R2.Minus(p, a) AND \n    acLen2 = R2.Length2(ac) AND \n "
 & "   y ";

CONST E39_0 =
   "= R2.Dot(ap, ac) / acLen2) \nEND;\n\n(* This function is equivalent to "
 & "\n   \"(E x :: p = (x, y) REL (a, b))\".\n   It can be used functionall"
 & "y to \n   establish useful hints if \"p\", \n   \"a\", and \"b\" are al"
 & "ready hinted. \n*)\n\nPRED X(p, a, b, x) IS \n  (E y = InvY(p, a, b) ::"
 & " \n    p = (x, y) REL (a, b)) \nEND;\n\nUI PointTool(X);\n\n(* This con"
 & "straint is equivalent to\n   \"(E y :: p = (x, y) REL (a, b))\",\n   ex"
 & "cept that it picks a smart hint\n   for \"y\". *)\n\nPRED Y(p, a, b, y)"
 & " IS \n  (E x = InvX(p, a, b) :: \n    p = (x, y) REL (a, b)) \nEND;\n\n"
 & "UI PointTool(Y);\n\n(* This constraint is equivalent to\n   \"(E x :: p"
 & " = (x, y) REL (a, b))\",\n   except that it picks a smart hint\n   for "
 & "\"x\". *)\n";

CONST E40 =
   "; Copyright (C) 1992, Digital Equipment Corporation                    "
 & "     \n; All rights reserved.                                          "
 & "            \n; See the file COPYRIGHT for a full description.         "
 & "                   \n;                                                 "
 & "                          \n; Last modified on Thu May 26 17:01:53 PDT "
 & "1994 by heydon                   \n\n(Rim (Pen 5)\n  (Macro Gap () \'(G"
 & "lue 5))\n  (BrowserShape\n    (VBox (MyBrowserFont)\n      (DirMenu (Fo"
 & "r savePSBrowser))\n      (Gap)\n      (Border\n        (FileBrowser %sa"
 & "vePSBrowser\n          (BgColor \"White\")\n          (Suffixes \".ps\""
 & ")\n        )\n      )\n      (Gap)\n      (HBox\n        \"File:\"\n   "
 & "     (Glue 2)\n        (Frame Lowered\n          (Helper FirstFocus (Bg"
 & "Color \"White\") (For savePSBrowser))\n        )\n      )\n    )\n  )\n"
 & ")\n";

CONST E41 =
   "MODULE Geometry;\n\n(* Geometric predicates and functions. *)\n\nIMPORT"
 & " Math, R2;\n\nPRED Equal(a, b) IS a = b END;\n\nUI PointTool(Equal);\n\n"
 & "(* The points \"a\" and \"b\" are the same. *)\n\nFUNC p = Mid(a, b) IS"
 & " \n  p = R2.Times(0.5, R2.Plus(a, b)) \nEND;\n\nUI PointTool(Mid);\n\n("
 & "* \"p\" is the midpoint of the segment \n   \"(a, b)\". *)\n\nPRED Coli"
 & "near(a, b, c) IS \n  (a, b) PARA (a, c) \nEND;\n\nUI PointTool(Colinear"
 & ");\n\n(* The points \"a\", \"b\", and \"c\" are \n   colinear. *)\n\nFU"
 & "NC p = HorVer(h, v) IS \n  (E hx, hy, vx, vy :: \n    h = (hx, hy) AND "
 & "\n    v = (vx, vy) AND \n    p = (vx, hy)) \nEND;\n\nUI PointTool(HorVe"
 & "r);\n\n(* \"p\" is the intersection point of the \n   horizontal line t"
 & "hrough \"h\" and the \n   vertical line through \"v\". *)\n\nFUNC d2 = "
 & "Dist2(p, q) IS \n  d2 = R2.Length2(R2.Minus(p, q)) \nEND;\n\n(* \"d2\" "
 & "is the square of the distance \n   between the points \"p\" and \"q\". "
 & "*)\n\nFUNC d = Dist(p, q) IS \n  d = R2.Length(R2.Minus(p, q)) \nEND;\n"
 & "\n(* \"d\" is the distance between the points \n   \"p\" and \"q\". *)\n"
 & "\nFUNC d2 = DistX2(p, q) IS \n  (E px, py, qx, qy, dx :: \n    p = (px,"
 & " py) AND \n    q = (qx, qy) AND \n    dx = px - qx AND \n    d2 = dx * "
 & "dx) \nEND;\n\n(* \"d\" is the square of the distance \n   between the p"
 & "rojections of the points \n   \"p\" and \"q\" onto the X axis. *)\n\nFU"
 & "NC d = DistX(p, q) IS \n  d = Math.Sqrt(DistX2(p, q)) \nEND;\n\n(* \"d\""
 & " is the distance between the \n   projections of the points \"p\" and \""
 & "q\" \n   onto the X axis. *)\n\nFUNC d2 = DistY2(p, q) IS \n  (E px, py"
 & ", qx, qy, dy :: \n    p = (px, py) AND \n    q = (qx, qy) AND \n    dy "
 & "= py - qy AND \n    d2 = dy * dy) \nEND;\n\n(* \"d2\" is the square of "
 & "the distance \n   between the projections of the points \n   \"p\" and "
 & "\"q\" onto the Y axis. *)\n\nFUNC d = DistY(p, q) IS \n  d = Math.Sqrt("
 & "DistY2(p, q)) \nEND;\n\n(* \"d\" is the distance between the \n   proje"
 & "ctions of the points \"p\" and \"q\" \n   onto the Y axis. *)\n\nFUNC l"
 & "en2 = SegLength2(s) IS \n  (E p, q :: \n    s = (p, q) AND len2 = Dist2"
 & "(p, q)) \nEND;\n\n(* \"len2\" is the square of the length of \n   the s"
 & "egment \"s\", where \"s\" is a ";

CONST E41_0 =
   "pair \n   of points \"(p, q)\". *)\n\nFUNC len = SegLength(s) IS \n  (E"
 & " p, q :: \n    s = (p, q) AND len = Dist(p, q)) \nEND;\n\n(* \"len\" is"
 & " the length of the segment \n   \"s\", where \"s\" is a pair of points "
 & "\n   \"(p, q)\". *)\n\nPRED CongX(a, b, c, d) IS \n  (E ax, ay, bx, by,"
 & " cx, cy, dx, dy, s1x, \n     s2x :: \n    a = (ax, ay) AND \n    b = (b"
 & "x, by) AND \n    c = (cx, cy) AND \n    d = (dx, dy) AND \n    s1x = ax"
 & " - bx AND \n    s2x = cx - dx AND \n    s1x * s1x = s2x * s2x) \nEND;\n"
 & "\nUI PointTool(CongX);\n\n(* The projections of the segments \"ab\" \n "
 & "  and \"cd\" onto the X axis are \n   congruent. *)\n\nPRED CongY(a, b,"
 & " c, d) IS \n  (E ax, ay, bx, by, cx, cy, dx, dy, s1y, \n     s2y :: \n "
 & "   a = (ax, ay) AND \n    b = (bx, by) AND \n    c = (cx, cy) AND \n   "
 & " d = (dx, dy) AND \n    s1y = ay - by AND \n    s2y = cy - dy AND \n   "
 & " s1y * s1y = s2y * s2y) \nEND;\n\nUI PointTool(CongY);\n\n(* The projec"
 & "tions of the segments \"ab\" \n   and \"cd\" onto the Y axis are \n   c"
 & "ongruent. *)\n\nPRED CongXY(a, b, c, d) IS \n  (E ax, ay, bx, by, cx, c"
 & "y, dx, dy, s1x, \n     s2y :: \n    a = (ax, ay) AND \n    b = (bx, by)"
 & " AND \n    c = (cx, cy) AND \n    d = (dx, dy) AND \n    s1x = ax - bx "
 & "AND \n    s2y = cy - dy AND \n    s1x * s1x = s2y * s2y) \nEND;\n\nUI P"
 & "ointTool(CongXY);\n\n(* The projection of the segment \"ab\" \n   onto "
 & "the X axis is congruent to the \n   projection of the segment \"cd\" on"
 & "to \n   the Y axis. *)\n\nPRED VerSym(a, b, p) IS \n  (E x, ay, by, px,"
 & " py :: \n    a = (x, ay) AND \n    b = (x, by) AND \n    p = (px, py) A"
 & "ND \n    by - py = py - ay) \nEND;\n\nUI PointTool(VerSym);\n\n(* The p"
 & "oints \"a\" and \"b\" are vertically \n   symmetric about the horizonta"
 & "l line \n   through the point \"p\". *)\n\nPRED HorSym(a, b, p) IS \n  "
 & "(E ax, bx, y, px, py :: \n    a = (ax, y) AND \n    b = (bx, y) AND \n "
 & "   p = (px, py) AND \n    bx - px = px - ax) \nEND;\n\nUI PointTool(Hor"
 & "Sym);\n\n(* The points \"a\" and \"b\" are \n   horizontally symmetric "
 & "about the \n   vertical line through the point \"p\". *)\n\nPRED LineSy"
 & "m(a, b, p, q) IS \n  (a, p) CONG (p, b) AND \n  (a, q) CONG (q, b) \nEN"
 & "D;";

CONST E41_1 =
   "\n\nUI PointTool(LineSym);\n\n(* The points \"a\" and \"b\" are symmetr"
 & "ic \n   about the line through the points \"p\" \n   and \"q\". *)\n\n";

CONST E42 =
   "MODULE TypeLinesR;\n\n(* The procedures in this module \n   type a righ"
 & "t-justified block of \n   text lines relative to a \n   specified point"
 & ". Each procedure \n   takes a reference point and a \n   single text, w"
 & "hich is converted \n   to a list of texts by the \n   \"TextList.FromTe"
 & "xt\" procedure. \n   One line is displayed in the \n   block per elemen"
 & "t of this list. \n\n   The lines in each block are \n   separated verti"
 & "cally by the \n   height of the current font plus \n   the current line"
 & " skip value \n   (maintained by the \"LineSkip\" \n   module). \n\n   T"
 & "he text block is actually \n   translated in the appropriate \n   direc"
 & "tion away from the \n   reference point by the current \n   horizontal "
 & "and/or vertical \n   offset values (maintained by the \n   \"Offset\" m"
 & "odule). For example, \n   the \"South\" procedure translates \n   the t"
 & "ext block up by the current \n   vertical offset, and the \"NE\" \n   p"
 & "rocedure translates it down by \n   the current vertical offset and \n "
 & "  to the left by the current \n   horizontal offset. The \"Center\" \n "
 & "  procedure ignores the current \n   offset values. *)\n\nIMPORT LineSk"
 & "ip, Offset, PS, \n       R2, TextList, Type;\n\nPRIVATE PROC TypeBlockR"
 & "(p, l) IS \n  VAR asc, dec, d IN \n    asc, dec := PS.FontHeight(); \n "
 & "   d := asc + dec + LineSkip.Get(); \n    p := (CAR(p), CDR(p) - asc); "
 & "\n    DO \n      l # NIL -> \n        Type.R(p, CAR(l)); \n        p :="
 & " (CAR(p), CDR(p) - d); \n        l := CDR(l) \n    OD \n  END \nEND;\n\n"
 & "/* Type the right-justified block \n   of text lines \"l\" such that \""
 & "p\" \n   is the northwest corner of the \n   box\'s bounding-box. */\n\n"
 & "PROC North(p, txt) IS \n  VAR l, w, h, dh IN \n    l := TextList.FromTe"
 & "xt(txt); \n    w, h := TextList.Size(l); \n    dh := Offset.GetVer(); \n"
 & "    TypeBlockR(R2.Plus(p, \n                       (w / 2, -dh)), \n   "
 & "            l) \n  END \nEND;\n\nPROC South(p, txt) IS \n  VAR l, w, h,"
 & " dh IN \n    l := TextList.FromText(txt); \n    w, h := TextList.Size(l"
 & "); \n    dh := Offset.GetVer(); \n    TypeBlockR(R2.Plus(p, \n         "
 & "              (w / 2, \n        ";

CONST E42_0 =
   "                h + dh)), l) \n  END \nEND;\n\nPROC East(p, txt) IS \n "
 & " VAR l, w, h, dw IN \n    l := TextList.FromText(txt); \n    w, h := Te"
 & "xtList.Size(l); \n    dw := Offset.GetHor(); \n    TypeBlockR(R2.Plus(p"
 & ", \n                       (-dw, h / 2)), \n               l) \n  END \n"
 & "END;\n\nPROC West(p, txt) IS \n  VAR l, w, h, dw IN \n    l := TextList"
 & ".FromText(txt); \n    w, h := TextList.Size(l); \n    dw := Offset.GetH"
 & "or(); \n    TypeBlockR(R2.Plus(p, \n                       (w + dw, \n "
 & "                       h / 2)), l) \n  END \nEND;\n\nPROC Center(p, txt"
 & ") IS \n  VAR l, w, h IN \n    l := TextList.FromText(txt); \n    w, h :"
 & "= TextList.Size(l); \n    TypeBlockR(R2.Plus(p, \n                     "
 & "  (w / 2, \n                        h / 2)), l) \n  END \nEND;\n\nPROC "
 & "NW(p, txt) IS \n  VAR l, w, h, dw, dh IN \n    l := TextList.FromText(t"
 & "xt); \n    w, h := TextList.Size(l); \n    dw, dh := Offset.GetHorVer()"
 & "; \n    TypeBlockR(R2.Plus(p, \n                       (w + dw, -dh)), "
 & "\n               l) \n  END \nEND;\n\nPROC NE(p, txt) IS \n  VAR l, dw,"
 & " dh IN \n    l := TextList.FromText(txt); \n    dw, dh := Offset.GetHor"
 & "Ver(); \n    TypeBlockR(R2.Plus(p, (-dw, -dh)), \n               l) \n "
 & " END \nEND;\n\nPROC SE(p, txt) IS \n  VAR l, w, h, dw, dh IN \n    l :="
 & " TextList.FromText(txt); \n    w, h := TextList.Size(l); \n    dw, dh :"
 & "= Offset.GetHorVer(); \n    TypeBlockR(R2.Plus(p, \n                   "
 & "    (-dw, h + dh)), \n               l) \n  END \nEND;\n\nPROC SW(p, tx"
 & "t) IS \n  VAR l, w, h, dw, dh IN \n    l := TextList.FromText(txt); \n "
 & "   w, h := TextList.Size(l); \n    dw, dh := Offset.GetHorVer(); \n    "
 & "TypeBlockR(R2.Plus(p, \n                       (w + dw, \n             "
 & "           h + dh)), l) \n  END \nEND;\n\nUI TextTool(North);\n\nUI Tex"
 & "tTool(South);\n\nUI TextTool(East);\n\nUI TextTool(West);\n\nUI TextToo"
 & "l(Center);\n\nUI TextTool(NW);\n\nUI TextTool(NE);\n\nUI TextTool(SE);\n"
 & "\nUI TextTool(SW);\n\n(* Display the \"\\\"-separated texts \n   in \"t"
 & "\" as a right-justified \n   block such that \"p\" is at the \n   locat"
 & "ion of the block\'s bounding \n   box named by ";

CONST E42_1 =
   "the procedure. *)\n\n";

CONST E43 =
   "MODULE Proj3D;\n\n(* A module that computes perspective projections in "
 & "\n   3-space. *)\n\nIMPORT R2, R3;\n\n(* This procedure provides a sing"
 & "le function, \"Project\", for \n   mapping points in 3-space to points "
 & "in 2-space according \n   to a simple perspective projection. \n\n   Th"
 & "e \"Project\" function is parameterized by the point in \n   3-space to"
 & " project, the location of the camera, and a \n   point in 2-space to wh"
 & "ich the 3-space origin should be \n   mapped. In this model, the camera"
 & "\'s viewing direction is \n   the one that causes it to point at the 3-"
 & "space origin, \n   and the view plane is taken to be a fixed distance f"
 & "rom \n   the camera orthogonal to the viewing direction. The \"up\" \n "
 & "  direction of the camera is the direction of the z-axis; \n   hence, t"
 & "his mapping is undefined when the camera is \n   located on the z-axis."
 & " *)\n\nPRIVATE CONST PlaneDist = 100, Scale = 10;\n\nPRIVATE FUNC \n  Q"
 & " = ProjectToPlane(P, camDir, camLoc, viewP0) IS \n  (E lineDir = R3.Min"
 & "us(P, camLoc), \n     denom = R3.Dot(camDir, lineDir), \n     Num = R3."
 & "Dot(camDir, R3.Minus(camLoc, viewP0)), \n     t = -(Num / denom) :: \n "
 & "   Q = R3.Plus(camLoc, R3.Times(t, lineDir))) \nEND;\n\nFUNC q = Projec"
 & "t(Q, org, camLoc) IS \n  (E camDist = R3.Length(camLoc), \n     camDir "
 & "= R3.Times(1 / camDist, camLoc), \n     viewP0 = R3.Times(camDist - Pla"
 & "neDist, camDir), \n     zPt = ProjectToPlane([0, 0, 1], camDir, camLoc,"
 & " viewP0), \n     upVec = R3.Normalize(R3.Minus(zPt, viewP0)), \n     xV"
 & "ec = R3.Normalize(R3.Cross(upVec, camDir)), qx, qy, \n     Q1 = Project"
 & "ToPlane(Q, camDir, camLoc, viewP0), \n     vec = R3.Minus(Q1, viewP0) :"
 & ": \n    q = R2.Plus(org, (qx, qy)) AND \n    qx = Scale * R3.Dot(xVec, "
 & "vec) AND \n    qy = Scale * R3.Dot(upVec, vec)) \nEND;\n\n(* \"q\" is t"
 & "he perspective projection of the point \"Q\" in \n   3-space. \"org\" i"
 & "s the point in 2-space to which the point \n   \"[0,0,0]\" is mapped. \""
 & "camLoc\" is the location of the \n   camera in 3-space. *)\n\n";

CONST E44 =
   "; Copyright (C) 1992, Digital Equipment Corporation                    "
 & "     \n; All rights reserved.                                          "
 & "            \n; See the file COPYRIGHT for a full description.         "
 & "                   \n;                                                 "
 & "                          \n; Last modified on Sat May 28 18:13:26 1994"
 & " by heydon                       \n\n(Border (Pen 2)\n (VBox\n  (Insert"
 & " \"Macros.fv\")\n  (MyLabelFont)\n    (Menu \n      (Shape (Height + 0)"
 & " (ButtonLabel (HBox\n        (Text %toolboxName LeftAlign \"\")\n      "
 & "  Fill\n        (FixedWidth (Pixmap \"MenuArrow.pbm\"))\n        (Space"
 & "))))\n      (VBox\n        (MButton %help (TextL \"Help...\"))\n       "
 & " (LinkMButton (For toolboxButtons) (TextL \"Expand\"))\n        (LinkMB"
 & "utton (For noButtons) (TextL \"Collapse\"))\n        (MButton %close (T"
 & "extL \"Close\"))\n    ))\n  (MyRidge)\n  (TSplit Flex (Which toolboxBut"
 & "tons)\n    (Generic %toolboxButtons)\n    (Glue %noButtons 0 + 0 - 0)\n"
 & "  )\n))\n";

CONST E45 =
   "MODULE C;\n\n(* Defines procedures for complex arithmetic. *)\n\n(* The"
 & " procedures in this module represent a \n   complex number as a pair of"
 & " reals. However, all \n   procedures can accept either reals or pairs o"
 & "f \n   reals as arguments. \n\n   See also: \"R2\". *)\n\nPROC r := Rea"
 & "l(c) IS \n  IF PAIR(c) -> r := CAR(c) | REAL(c) -> r := c FI \nEND;\n\n"
 & "(* Set \"r\" to the real part of the complex number \n   \"c\". This is"
 & " a checked run-time error if \"c\" is \n   not a real number or a pair."
 & " *)\n\nPROC i := Imag(c) IS \n  IF PAIR(c) -> i := CDR(c) FI \nEND;\n\n"
 & "(* Set \"i\" to the imaginary part of the complex \n   number \"c\". Th"
 & "is is a checked run-time error if \n   \"c\" is not a pair. *)\n\nPRIVA"
 & "TE PROC res := ToPair(c) IS \n  IF \n    PAIR(c) -> res := c | REAL(c) "
 & "-> res := (c, 0) \n  FI \nEND;\n\n/* Set \"res\" to the complex represe"
 & "ntation of \"c\", \n   which must be either a real number or a pair. */"
 & "\n\nPROC res := Plus(c1, c2) IS \n  c1 := ToPair(c1); \n  c2 := ToPair("
 & "c2); \n  res := (CAR(c1) + CAR(c2), CDR(c1) + CDR(c2)) \nEND;\n\n(* Set"
 & " \"res\" to the complex sum of \"c1\" and \"c2\". \n*)\n\nPROC res := T"
 & "imes(c1, c2) IS \n  c1 := ToPair(c1); \n  c2 := ToPair(c2); \n  IF \n  "
 & "  VAR a1, b1, a2, b2 IN \n      c1 = (a1, b1) AND c2 = (a2, b2) -> \n  "
 & "      res := \n          (a1 * a2 - b1 * b2, a1 * b2 + b1 * a2) \n    E"
 & "ND \n  FI \nEND;\n\n(* Set \"res\" to the complex product of \"c1\" and"
 & " \n   \"c2\". *)\n\n";

CONST E46 =
   "MODULE Square;\n\n(* Procedures and predicates for arbitrarily \n   ori"
 & "ented squares. *)\n\nIMPORT Geometry, PS;\n\n(* \\section{Adjacent Corn"
 & "er Representation} *)\n\nPROC Draw(a, b) IS \n  PS.MoveTo(a); \n  PS.Li"
 & "neTo(b); \n  PS.LineTo((1, 1) REL (a, b)); \n  PS.LineTo((0, 1) REL (a,"
 & " b)); \n  PS.Close() \nEND;\n\nUI PointTool(Draw);\n\n(* Append a close"
 & "d square path with edge \"ab\" to \n   the current path. The square is "
 & "constructed \n   to the left of the ray from \"a\" to \"b\". *)\n\nFUNC"
 & " area = Area(a, b) IS \n  area = Geometry.Dist2(a, b) \nEND;\n\n(* \"ar"
 & "ea\" is the area of the square with edge \n   \"ab\". *)\n\n(* \\sectio"
 & "n{Center-Corner Representation} *)\n\nPROC DrawC(c, b) IS \n  PS.MoveTo"
 & "(b); \n  PS.LineTo((0, 1) REL (c, b)); \n  PS.LineTo((-1, 0) REL (c, b)"
 & "); \n  PS.LineTo((0, -1) REL (c, b)); \n  PS.Close() \nEND;\n\nUI Point"
 & "Tool(DrawC);\n\n(* Append a closed square path with center \"c\" \n   a"
 & "nd corner vertex \"b\" to the current path. *)\n\nFUNC area = AreaC(c, "
 & "b) IS \n  area = 2 * Geometry.Dist2(c, b) \nEND;\n\n(* \"area\" is the "
 & "area of the square with center \n   \"c\" and corner vertex \"b\". *)\n"
 & "\n";

CONST E47 =
   "\n% -------------------------------------------------------------------"
 & "----------\n% Inserted file: juno-app/src/rsrc/showerror.ps\n% Last mod"
 & "ified on Tue Dec 20 15:27:20 PST 1994 by heydon\n\n% PostScript code re"
 & "ad in to display a run-time error message in PostScript\n% output. This"
 & " code assumes that PostScript code has already been executed\n% that de"
 & "fines the identifier \"str\" as the error message string, and\n% \"xCen"
 & "ter\" and \"yCenter\" as the x- and y-coordinates of the center of\n% t"
 & "he page.\n\n% define font height and border width\n/fontheight 14 def\n"
 & "/border 8 def\n\n% drawbox\n%\n% Draw a white-filled box with size \"wi"
 & "dth\" x \"fontheight\" (plus an extra\n% strip of width \"border\" all "
 & "the way around) centered about the current\n% point. This procedure ass"
 & "umes that \"width\" has been defined.\n/drawbox {\n  /bwidth width bord"
 & "er 2 mul add def\n  /bheight fontheight border 2 mul add def\n  bwidth "
 & "2 div neg bheight 2 div neg rmoveto\n  bwidth 0 rlineto\n  0 bheight rl"
 & "ineto\n  bwidth neg 0 rlineto\n  closepath\n  gsave 1 setgray fill gres"
 & "tore\n  0 setgray 2 setlinewidth stroke\n} def\n\n% boxshow: str => <em"
 & "pty>\n%\n% Show the string \"str\" inside a white-filled box centered a"
 & "bout the current\n% point.\n/boxshow {\n  dup stringwidth pop /width ex"
 & "ch def % get length of string\n  gsave drawbox grestore              % "
 & "draw box first\n  width 2 div neg                     % delta X\n  font"
 & "height 2 div neg                % delta Y\n  rmoveto                   "
 & "          % move left/down by 1/2 str width/height\n  1 0 0 setrgbcolor"
 & " show              % show string in red\n} def\n\n% select Helvetica-Bo"
 & "ld 14 pt\n/Helvetica-Bold findfont\nfontheight scalefont\nsetfont\n\n% "
 & "show the string\nxCenter\nyCenter 11 72 mul 4 div sub\nmoveto\nstr boxs"
 & "how\n\n% end showerror.ps\n% ------------------------------------------"
 & "-----------------------------------\n";

CONST E48 =
   "MODULE Math;\n\n(* Common math functions *)\n\nCONST \n  Pi = ATAN(0, -"
 & "1), \n  ToDegrees = 180 / Pi, \n  ToRadians = Pi / 180, \n  Exp = EXP(1"
 & "), \n  Phi = (1 + Sqrt(5))/2;\n\n(* \"Exp\" is the value \"e\", or the "
 & "\n   base of natural logarithms. \n   \"Phi\" is the golden ratio. *)\n"
 & "\nFUNC z = Pow(x, y) IS \n  z = EXP(y * LN(x)) \nEND;\n\n(* \"z\" is \""
 & "x\" raised to the \"y\" \n   power. *)\n\nFUNC y = LogBase(x, base) IS "
 & "\n  y * LN(base) = LN(x) \nEND;\n\n(* \"y\" is the logarithm base \"bas"
 & "e\" \n   of \"x\". *)\n\nFUNC y = Log(x) IS \n  y = LogBase(x, 10) \nEN"
 & "D;\n\n(* \"y\" is the logarithm base 10 of \n   \"x\". *)\n\nFUNC y = S"
 & "qrt(x) IS \n  y ~ 1000 AND y * y = x \nEND;\n\n(* \"y\" is the positive"
 & " square root \n   of \"x\". This version may fail \n   for large values"
 & " of \"x\" (in \n   excess of 1e10). *)\n\nFUNC y = Sqrt2(x) IS \n  y = "
 & "Pow(x, 0.5) \nEND;\n\n(* \"y\" is the positive square root \n   of \"x\""
 & ". This version is quite \n   fast and does not use the \n   constraint "
 & "solver, but it fails \n   when \"x = 0\". *)\n\nFUNC y = Abs(x) IS \n  "
 & "y = Sqrt(x * x) \nEND;\n\n(* \"y\" is the absolute value of \n   \"x\"."
 & " *)\n\nFUNC y = Sin(x) IS y = SIN(x) END;\n\nFUNC y = Cos(x) IS y = COS"
 & "(x) END;\n\nFUNC y = Tan(x) IS \n  y = SIN(x) / COS(x) \nEND;\n\n(* \"y"
 & "\" is the sine, cosine, and \n   tangent, respectively, of \"x\" \n   r"
 & "adians. *)\n\nFUNC y = SinD(x) IS \n  y = SIN(ToRadians * x) \nEND;\n\n"
 & "FUNC y = CosD(x) IS \n  y = COS(ToRadians * x) \nEND;\n\nFUNC y = TanD("
 & "x) IS \n  (E deg :: \n    deg = ToRadians * x AND \n    y = SIN(deg) / "
 & "COS(deg)) \nEND;\n\n(* \"y\" is the sine, cosine, and \n   tangent, res"
 & "pectively, of \"x\" \n   degrees. *)\n\n";

CONST E49 =
   "P6\n# CREATOR: XV Version 3.10a  Rev: 12/29/94\n128 24\n255\n\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\316\316\316\347\234\234\347\234\234\347\234\234\347c\234\347cc\347cc\347"
 & "cc\347cc\347c\234\347\234\234\347c\234\347cc\347c\234\265\265\265\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\265\265\265\347\316\234\347c\234"
 & "\347cc\347cc\316c1\316\030c\347cc\347c\234\347\234\234\336\336\336\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\336\336\336\347\234\234\347\234\234\347\234\234\347c\234\347\234\234"
 & "\347\234\234\316\316\316\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\347\234\234"
 & "\347\234\234\347c\234\347\234\234\347\234\234\347\234\234\265\265\265\336"
 & "\336\336\377\377\377\377\265\316\347\234\234\347\234\234\347\234\234\347"
 & "\234\234\347\234\234\347\234\234\265\265\265\347\234\234\265\265\265\347"
 & "\234\234\265\265\265\347\234\234\265\265\265\336\336\336\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\336\336\336\347\234\234\347c\234\347cc\347\234\234"
 & "\347c\234\347cc\347\234\234\336\336\336\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\347\234\234\347\234"
 & "\234\347cc\275\003\013\316c1\275\003\013\316\000\000\275\003\013\316\000"
 & "\000\275\003\013\316\030c\347c\234\347\316\234\367\367\336\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\265\265\265\316\030c\316\000\000\275\003\013\316\000"
 & "\000\275\003\013\316\000\000\275\003\013\275\003\013\275\003\013\275\003"
 & "\013\316\000\000\275\003\013\316\000\000\275\003\013\275\003\013\347\234"
 & "\234\377\377\377\316\316\316\316c1\316\030c\316\000\000\275\003\013\316"
 & "\000\000\275\003\013\275\003\013\316\000\000\275\003\013\316\000\000\275"
 & "\003\013\316\000\000\316\000\000\316\030c\347cc\367\367\336\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\347cc\316\000\000\275\003\013\316\000"
 & "\000\275\003\013\316\000\000\275\003\013\316\000\000\316c1\336\336\336\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\265\265\265\316"
 & "\030c\316\000\000\275\003\013\316\000\000\275\003\013\316\000\000\275\003"
 & "\013\316c1\367\367\336\377\377\377\347\234\234\275\003\013\316\000\000\275"
 & "\003\013\316\000\000\275\003\013\316\000\000\275\003\013\275\003\013\275"
 & "\003\013\275\003\013\275\003\013\275\003\013\275\003\013\316c1\347\234\234"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\336\336\336\347cc\275\003\013\316\000\000\275\003\013\275\003\013\316\000"
 & "\000\275\003\013\275\003\013\275\003\013\367\367\336\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\265\265\265\316\030c\316\000\000"
 & "\275\003\013\275\003\013\316\000\000\275\003\013\316\000\000\275\003\013"
 & "\316\000\000\275\003\013\316\000\000\316c1\316\000\000\275\003\013\275\003"
 & "\013\347\234\234\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\347\234\234\316c1\316\000\000\275\003\013\316"
 & "\000\000\275\003\013\275\003\013\316\000\000\275\003\013\316\000\000\275"
 & "\003\013\316\000\000\275\003\013\316\000\000\275\003\013\316\000\000\316"
 & "\030c\377\377\377\336\336\336\316c1\316\030c\316\000\000\275\003\013\275"
 & "\003\013\275\003\013\316\000\000\275\003\013\275\003\013\275\003\013\316"
 & "\000\000\275\003\013\275\003\013\275\003\013\316\000\000\275\003\013\316"
 & "\030c\377\377\377\377\377\377\377\377\377\265\265\265\275\003\013\275\003"
 & "\013\316\000\000\275\003\013\316\000\000\275\003\013\316\000\000\275\003"
 & "\013\316\030c\316c1\377\377\377\377\377\377\377\377\377\377\377\377\347"
 & "\234\234\316\030c\316\000\000\275\003\013\316\000\000\275\003\013\316\000"
 & "\000\275\003\013\316\000\000\347cc\377\377\377\377\377\377\275\003\013\275"
 & "\003\013\316\000\000\275\003\013\275\003\013\275\003\013\275\003\013\316"
 & "\000\000\275\003\013\316\000\000\316\000\000\275\003\013\316\000\000\275"
 & "\003\013\316\000\000\275\003\013\347\234\234\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\316c1\275\003\013\316\000\000\275\003\013"
 & "\316\000\000\275\003\013\316\000\000\275\003\013\316\000\000\316\030c\367"
 & "\367\336\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\275"
 & "\003\013\275\003\013\275\003\013\316\000\000\275\003\013\316\000\000\275"
 & "\003\013\316\000\000\275\003\013\275\003\013\316\000\000\275\003\013\316"
 & "\000\000\275\003\013\316\000\000\275\003\013\275\003\013\347\234\234\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\336\336\336\275"
 & "\003\013\275\003\013\316\000\000\275\003\013\275\003\013\275\003\013\316"
 & "\000\000\275\003\013\316\000\000\275\003\013\316\000\000\275\003\013\316"
 & "\000\000\275\003\013\316\000\000\275\003\013\265\265\265\377\377\377\347"
 & "cc\316\000\000\275\003\013\316\000\000\275\003\013\316\000\000\275\003\013"
 & "\316\000\000\275\003\013\316\000\000\275\003\013\316\000\000\275\003\013"
 & "\316\000\000\275\003\013\316\000\000\275\003\013\316\000\000\347\234\234"
 & "\377\377\377\377\377\377\347\234\234\316\000\000\275\003\013\275\003\013"
 & "\316\000\000\275\003\013\275\003\013\316\000\000\275\003\013\316\000\000"
 & "\316\030c\336\336\336\377\377\377\377\377\377\336\336\336\275\003\013\275"
 & "\003\013\316\000\000\275\003\013\275\003\013\275\003\013\316\000\000\275"
 & "\003\013\275\003\013\265\265\265\377\377\377\377\265\316\275\003\013\275"
 & "\003\013\275\003\013\316\000\000\275\003\013\316\000\000\275\003\013\275"
 & "\003\013\316c1\275\003\013\275\003\013\316\000\000\275\003\013\316\000\000"
 & "\275\003\013\316\000\000\316\030c\336\336\336\377\377\377\377\377\377\377"
 & "\377\377\347\234\234\275\003\013\275\003\013\275\003\013\316\000\000\275"
 & "\003\013\316\000\000\275\003\013\316\000\000\275\003\013\316c1\316\316\316"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\347cc\275\003\013\316\000"
 & "\000\316\000\000\275\003\013\275\003\013\275\003\013\275\003\013\275\003"
 & "\013\275\003\013\316c1\275\003\013\275\003\013\275\003\013\275\003\013\275"
 & "\003\013\316\030c\316\000\000\316c1\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\347cc\275\003\013\316\000\000\275\003\013\316\000"
 & "\000\275\003\013\316\000\000\275\003\013\275\003\013\275\003\013\275\003"
 & "\013\275\003\013\275\003\013\275\003\013\316c1\275\003\013\275\003\013\347"
 & "\234\234\265\265\265\316\000\000\275\003\013\316\000\000\275\003\013\316"
 & "\000\000\275\003\013\347cc\336\336\336\347\234\234\265\265\265\347\234\234"
 & "\347c\234\316\000\000\275\003\013\316\000\000\275\003\013\316\000\000\275"
 & "\003\013\347cc\377\377\377\377\377\377\316c1\316\030c\275\003\013\316\000"
 & "\000\275\003\013\275\003\013\316\000\000\275\003\013\275\003\013\316\000"
 & "\000\275\003\013\347\234\234\377\377\377\336\336\336\316c1\316\030c\316"
 & "\000\000\275\003\013\275\003\013\316\000\000\275\003\013\275\003\013\316"
 & "\000\000\275\003\013\367\367\336\377\377\377\347\234\234\275\003\013\316"
 & "\000\000\275\003\013\316\000\000\275\003\013\347cc\377\265\316\347\234\234"
 & "\377\265\316\377\265\316\377\265\316\275\003\013\275\003\013\275\003\013"
 & "\316\000\000\275\003\013\316\000\000\347\316\234\377\377\377\377\377\377"
 & "\316\316\316\316\030c\316\000\000\275\003\013\316\000\000\275\003\013\275"
 & "\003\013\275\003\013\316\000\000\275\003\013\316\000\000\275\003\013\336"
 & "\336\336\377\377\377\377\377\377\377\377\377\265\265\265\275\003\013\316"
 & "\000\000\275\003\013\275\003\013\275\003\013\316\000\000\347\234\234\377"
 & "\265\316\316\316\316\316\316\316\347c\234\347\234\234\275\003\013\275\003"
 & "\013\316\000\000\275\003\013\316\000\000\316\000\000\316\030c\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\265\265\265\275\003\013\316\000\000"
 & "\275\003\013\275\003\013\275\003";

CONST E49_0 =
   "\013\316\000\000\347cc\265\265\265\347\316\234\265\265\265\377\265\316\265"
 & "\265\265\377\265\316\265\265\265\316\316\316\265\265\265\367\367\336\377"
 & "\377\377\347cc\275\003\013\275\003\013\275\003\013\316\000\000\275\003\013"
 & "\347cc\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\336\336"
 & "\336\347cc\316\000\000\275\003\013\275\003\013\275\003\013\316\000\000\347"
 & "\234\234\377\377\377\377\265\316\316\030c\316\000\000\316\000\000\275\003"
 & "\013\316\000\000\316\000\000\275\003\013\275\003\013\316\000\000\275\003"
 & "\013\316\000\000\377\265\316\377\377\377\347\234\234\316\000\000\316\000"
 & "\000\275\003\013\275\003\013\316\000\000\275\003\013\316\000\000\316\000"
 & "\000\275\003\013\347cc\377\377\377\377\377\377\316c1\316\000\000\275\003"
 & "\013\275\003\013\275\003\013\316\000\000\265\265\265\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\347c\234\316\000\000\316\000\000"
 & "\275\003\013\275\003\013\275\003\013\265\265\265\377\377\377\377\377\377"
 & "\347cc\316\000\000\275\003\013\316\000\000\275\003\013\347cc\347cc\316\000"
 & "\000\275\003\013\275\003\013\275\003\013\275\003\013\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\347cc\275\003\013\275\003\013\275\003\013\316"
 & "\000\000\316\000\000\347cc\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\347c\234\316\000\000\275\003\013\316\000\000\275"
 & "\003\013\316\030c\347cc\336\336\336\377\377\377\377\377\377\377\377\377"
 & "\347\234\234\316\000\000\275\003\013\316\000\000\275\003\013\316\000\000"
 & "\275\003\013\347\234\234\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\265\265\265\275\003\013\316\000\000\316\000\000\275\003\013\275\003\013"
 & "\275\003\013\265\265\265\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\336\336\336\316\030c\316\000\000\275\003\013\316\000\000\275"
 & "\003\013\275\003\013\347\234\234\377\377\377\347\234\234\316\000\000\275"
 & "\003\013\275\003\013\275\003\013\275\003\013\275\003\013\275\003\013\316"
 & "\000\000\275\003\013\316\000\000\275\003\013\347\234\234\265\265\265\275"
 & "\003\013\316\030c\275\003\013\275\003\013\275\003\013\275\003\013\275\003"
 & "\013\275\003\013\275\003\013\316\000\000\347\234\234\377\377\377\336\336"
 & "\336\316\030c\275\003\013\316\000\000\316\000\000\275\003\013\275\003\013"
 & "\367\367\336\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\347\234\234\275\003\013\275\003\013\316\000\000\275\003\013\275\003\013"
 & "\367\367\336\377\377\377\265\265\265\275\003\013\316\000\000\275\003\013"
 & "\275\003\013\316\000\000\347\234\234\347\234\234\275\003\013\316\000\000"
 & "\275\003\013\316\000\000\316\030c\377\265\316\377\377\377\377\377\377\336"
 & "\336\336\316\030c\316\000\000\275\003\013\316\000\000\275\003\013\275\003"
 & "\013\316\316\316\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\347cc\275\003\013\316\000\000\275\003\013\316\000\000\275"
 & "\003\013\347cc\377\377\377\377\377\377\377\377\377\377\377\377\347cc\275"
 & "\003\013\316\000\000\275\003\013\316\000\000\275\003\013\347\234\234\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\347\234\234\316"
 & "\000\000\275\003\013\275\003\013\316\000\000\316\000\000\316\030c\367\367"
 & "\336\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\265"
 & "\316\316\000\000\316\030c\316\000\000\275\003\013\316\000\000\316\000\000"
 & "\265\265\265\377\377\377\347cc\316\000\000\316\000\000\275\003\013\316\000"
 & "\000\316\000\000\347\234\234\347cc\316\030c\275\003\013\275\003\013\316"
 & "\000\000\347cc\275\003\013\275\003\013\316\000\000\275\003\013\347c\234"
 & "\316c1\275\003\013\316\000\000\316\000\000\275\003\013\275\003\013\377\265"
 & "\316\377\377\377\347\234\234\275\003\013\316\000\000\275\003\013\275\003"
 & "\013\316\000\000\347cc\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\336\336\336\347cc\316\000\000\275\003\013\275\003\013\316\000\000"
 & "\347cc\377\377\377\377\377\377\347cc\316\000\000\275\003\013\316\000\000"
 & "\275\003\013\275\003\013\377\377\377\347\234\234\275\003\013\275\003\013"
 & "\316\000\000\275\003\013\316c1\316\316\316\377\377\377\377\377\377\347\234"
 & "\234\316\000\000\275\003\013\316\000\000\275\003\013\275\003\013\275\003"
 & "\013\336\336\336\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\347cc\316\000\000\275\003\013\316\000\000\275\003\013\316"
 & "\000\000\347\234\234\377\377\377\377\377\377\377\377\377\336\336\336\275"
 & "\003\013\316\000\000\275\003\013\275\003\013\275\003\013\275\003\013\336"
 & "\336\336\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\347"
 & "cc\275\003\013\275\003\013\316\000\000\275\003\013\275\003\013\347cc\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\347"
 & "\234\234\275\003\013\316\000\000\275\003\013\275\003\013\275\003\013\275"
 & "\003\013\377\265\316\377\377\377\316\030c\316c1\275\003\013\275\003\013"
 & "\275\003\013\275\003\013\377\377\377\347cc\316\000\000\275\003\013\316\000"
 & "\000\275\003\013\275\003\013\275\003\013\275\003\013\316\000\000\347\234"
 & "\234\336\336\336\275\003\013\316\000\000\275\003\013\275\003\013\275\003"
 & "\013\347cc\377\377\377\377\377\377\316c1\316\000\000\275\003\013\275\003"
 & "\013\275\003\013\316\000\000\347c\234\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\347\316\234\275\003\013\316\000\000\275\003\013"
 & "\316\000\000\275\003\013\347cc\377\377\377\347\234\234\275\003\013\316\000"
 & "\000\275\003\013\316\000\000\275\003\013\347\234\234\377\377\377\347\234"
 & "\234\275\003\013\316\000\000\275\003\013\316\000\000\275\003\013\367\367"
 & "\336\377\377\377\377\377\377\347cc\275\003\013\275\003\013\316\000\000\275"
 & "\003\013\316\000\000\347cc\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\265\265\265\316c1\275\003\013\316\000\000\275\003"
 & "\013\275\003\013\275\003\013\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\347\234\234\275\003\013\275\003\013\275\003\013\316\000\000\316\000"
 & "\000\347cc\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\265"
 & "\265\265\275\003\013\316\000\000\275\003\013\316\000\000\275\003\013\316"
 & "\000\000\377\265\316\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\347c\234\316\000\000\275\003\013\316\000\000\275\003"
 & "\013\316\000\000\347cc\377\377\377\265\265\265\316c1\316\000\000\316\000"
 & "\000\275\003\013\316\000\000\347cc\377\377\377\347\234\234\275\003\013\316"
 & "\000\000\275\003\013\275\003\013\316\000\000\275\003\013\316\000\000\347"
 & "cc\377\377\377\347\234\234\275\003\013\275\003\013\275\003\013\316\000\000"
 & "\316\000\000\347\234\234\377\377\377\377\265\316\316\030c\275\003\013\316"
 & "\000\000\316\000\000\275\003\013\275\003\013\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\336\336\336\316\030c\316\000\000\275\003"
 & "\013\316\000\000\275\003\013\275\003\013\347\316\234\336\336\336\275\003"
 & "\013\316\000\000\275\003\013\275\003\013\275\003\013\347cc\367\367\336\377"
 & "\377\377\347c\234\316\000\000\275\003\013\316\000\000\275\003\013\316c1"
 & "\336\336\336\377\377\377\336\336\336\347cc\316\000\000\275\003\013\275\003"
 & "\013\316\000\000\275\003\013\316\316\316\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\347\234\234\275\003\013\316\000"
 & "\000\275\003\013\316\000\000\316c1\316\030c\367\367\336\377\377\377\377"
 & "\377\377\377\377\377\347cc\316\000\000\316\000\000\275\003\013\275\003\013"
 & "\275\003\013\347\234\234\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\347c\234\316\000\000\275\003\013\275\003\013\275\003\013\316"
 & "\000\000\275\003\013\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\336\336\336\347cc\316";

CONST E49_1 =
   "\000\000\275\003\013\275\003\013\316\000\000\275\003\013\347\234\234\377"
 & "\377\377\347c\234\316\000\000\275\003\013\275\003\013\316\000\000\316\030"
 & "c\347\234\234\377\377\377\265\265\265\275\003\013\316\000\000\316\000\000"
 & "\275\003\013\316\000\000\316\030c\275\003\013\377\377\377\377\377\377\347"
 & "c\234\316\000\000\275\003\013\316\000\000\275\003\013\275\003\013\347\234"
 & "\234\377\377\377\347\234\234\316\000\000\316\030c\275\003\013\316\000\000"
 & "\275\003\013\316\030c\367\367\336\377\377\377\367\367\336\377\377\377\316"
 & "\316\316\347cc\275\003\013\275\003\013\316\000\000\275\003\013\316\000\000"
 & "\347cc\377\377\377\347cc\275\003\013\316\000\000\275\003\013\316\000\000"
 & "\316\000\000\265\265\265\377\377\377\377\377\377\347\234\234\275\003\013"
 & "\275\003\013\275\003\013\275\003\013\275\003\013\367\367\336\377\377\377"
 & "\347\234\234\316\000\000\275\003\013\316\000\000\275\003\013\275\003\013"
 & "\275\003\013\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\347c\234\275\003\013\316\000\000\275\003\013\275"
 & "\003\013\316\000\000\347cc\377\377\377\377\377\377\377\377\377\377\265\316"
 & "\316c1\275\003\013\316\000\000\275\003\013\316\000\000\316c1\265\265\265"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\347cc\275\003"
 & "\013\316\000\000\316\000\000\275\003\013\275\003\013\347cc\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\265\265\265\275"
 & "\003\013\275\003\013\275\003\013\316\000\000\316c1\275\003\013\377\265\316"
 & "\377\377\377\347cc\275\003\013\316\000\000\275\003\013\316\030c\316\000"
 & "\000\377\377\377\377\377\377\367\367\336\275\003\013\275\003\013\275\003"
 & "\013\316\000\000\275\003\013\275\003\013\347\316\234\377\377\377\377\377"
 & "\377\275\003\013\275\003\013\316\000\000\275\003\013\316\000\000\275\003"
 & "\013\377\377\377\377\377\377\347cc\275\003\013\275\003\013\316\000\000\275"
 & "\003\013\316\000\000\316c1\316\030c\316c1\316\030c\316c1\275\003\013\275"
 & "\003\013\316\000\000\316\000\000\275\003\013\316\000\000\275\003\013\265"
 & "\265\265\377\265\316\316\000\000\275\003\013\316\000\000\275\003\013\275"
 & "\003\013\347\234\234\377\377\377\377\377\377\377\377\377\347\234\234\316"
 & "\000\000\275\003\013\316\000\000\275\003\013\275\003\013\336\336\336\377"
 & "\377\377\347c\234\316\000\000\275\003\013\275\003\013\316\000\000\316\000"
 & "\000\347cc\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\347cc\316\000\000\275\003\013\316\000\000\275\003\013"
 & "\275\003\013\265\265\265\377\377\377\377\377\377\377\377\377\265\265\265"
 & "\316\030c\316\000\000\275\003\013\316\000\000\275\003\013\316\030c\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\347\234\234\275\003"
 & "\013\316\000\000\275\003\013\275\003\013\275\003\013\316\000\000\265\265"
 & "\265\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\347\234\234\316\000\000\275\003\013\316\000\000\316\030c\316\000\000"
 & "\347cc\377\377\377\336\336\336\275\003\013\316\000\000\275\003\013\275\003"
 & "\013\316\000\000\347cc\377\377\377\377\377\377\336\336\336\316c1\275\003"
 & "\013\316\000\000\275\003\013\275\003\013\347\234\234\377\377\377\377\377"
 & "\377\347\234\234\316\000\000\275\003\013\316\000\000\275\003\013\275\003"
 & "\013\347cc\377\377\377\336\336\336\316\030c\316c1\316\000\000\275\003\013"
 & "\275\003\013\316\000\000\275\003\013\316\000\000\316\030c\316\000\000\275"
 & "\003\013\275\003\013\316\000\000\275\003\013\275\003\013\316\030c\275\003"
 & "\013\347\234\234\377\377\377\275\003\013\275\003\013\316\000\000\275\003"
 & "\013\316\000\000\275\003\013\265\265\265\377\265\316\377\377\377\377\265"
 & "\316\347\234\234\275\003\013\316\000\000\275\003\013\316\000\000\275\003"
 & "\013\367\367\336\377\377\377\316c1\316\000\000\316\030c\316\000\000\275"
 & "\003\013\275\003\013\347\234\234\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\347\234\234\275\003\013\316\000\000\275"
 & "\003\013\275\003\013\275\003\013\275\003\013\367\367\336\377\377\377\377"
 & "\377\377\377\377\377\347cc\275\003\013\316\000\000\275\003\013\275\003\013"
 & "\275\003\013\347\234\234\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\347\234\234\275\003\013\275\003\013\275\003\013\316\000\000"
 & "\275\003\013\275\003\013\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\316\030c\316\000\000\275\003\013\275"
 & "\003\013\316\000\000\275\003\013\347c\234\377\377\377\347\234\234\316\000"
 & "\000\275\003\013\275\003\013\316\000\000\275\003\013\347c\234\377\377\377"
 & "\377\377\377\377\377\377\316\030c\316\000\000\275\003\013\316\000\000\347"
 & "\234\234\377\377\377\377\377\377\377\377\377\347\234\234\275\003\013\275"
 & "\003\013\275\003\013\316\000\000\316\000\000\265\265\265\377\377\377\265"
 & "\265\265\316c1\316\000\000\275\003\013\316\000\000\275\003\013\275\003\013"
 & "\275\003\013\275\003\013\316\000\000\275\003\013\316\000\000\275\003\013"
 & "\316\000\000\275\003\013\316\000\000\316\000\000\347c\234\377\377\377\347"
 & "\234\234\316\000\000\275\003\013\275\003\013\275\003\013\316\000\000\275"
 & "\003\013\275\003\013\347cc\316c1\316\030c\275\003\013\316\000\000\275\003"
 & "\013\316\000\000\275\003\013\316c1\265\265\265\377\265\316\316\030c\275"
 & "\003\013\316\000\000\275\003\013\316\000\000\275\003\013\377\265\316\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\336\336\336\347"
 & "cc\316\000\000\275\003\013\316\000\000\275\003\013\316\000\000\347cc\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\316c1\316\000\000\275\003\013"
 & "\316\000\000\316\000\000\275\003\013\347\234\234\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\316c1\316\000\000\316\000\000\275\003"
 & "\013\316\000\000\275\003\013\347cc\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\347\316\234\275\003\013\275\003\013\316"
 & "\000\000\275\003\013\275\003\013\275\003\013\347\234\234\377\377\377\347"
 & "cc\275\003\013\316\000\000\275\003\013\316\000\000\275\003\013\347\316\234"
 & "\377\377\377\377\377\377\377\377\377\347cc\275\003\013\316\000\000\347c"
 & "c\377\377\377\377\377\377\377\377\377\336\336\336\347cc\316\000\000\316"
 & "\000\000\275\003\013\275\003\013\275\003\013\377\377\377\377\377\377\347"
 & "c\234\316\000\000\275\003\013\275\003\013\275\003\013\316\000\000\275\003"
 & "\013\316\000\000\275\003\013\275\003\013\316\000\000\275\003\013\316\000"
 & "\000\275\003\013\275\003\013\347cc\347\234\234\377\377\377\336\336\336\275"
 & "\003\013\275\003\013\316\000\000\316\000\000\275\003\013\275\003\013\275"
 & "\003\013\316\000\000\275\003\013\316\000\000\275\003\013\316\000\000\275"
 & "\003\013\275\003\013\275\003\013\275\003\013\316\030c\367\367\336\377\265"
 & "\316\316\000\000\275\003\013\275\003\013\316\000\000\275\003\013\347cc\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\275\003\013\275\003\013\316\000\000\275\003\013\316\030c\316\000"
 & "\000\347\234\234\377\377\377\377\377\377\377\377\377\377\377\377\275\003"
 & "\013\275\003\013\316\000\000\275\003\013\275\003\013\316\000\000\347\234"
 & "\234\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\347cc\275"
 & "\003\013\316\030c\275\003\013\275\003\013\316\000\000\347\234\234\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\347c\234"
 & "\275\003\013\316\000\000\275\003\013\275\003\013\316\000\000\316\030c\377"
 & "\377\377\377\377\377\275\003\013\275\003\013\275\003\013\316\000\000\316"
 & "\030c\316c1\377\377\377\377\377\377\377\377\377\377\377\377\347\234\234"
 & "\275\003\013\316\030c\336\336\336\377\377\377\377\377\377\377\377\377\377"
 & "\265\316\275\003\013\275\003\013\275\003\013";

CONST E49_2 =
   "\275\003\013\316\000\000\347cc\377\377\377\377\377\377\347cc\275\003\013"
 & "\316\000\000\316\000\000\275\003\013\316\000\000\347\234\234\265\265\265"
 & "\316\316\316\377\265\316\265\265\265\377\265\316\377\265\316\377\265\316"
 & "\347\234\234\377\377\377\377\377\377\377\377\377\347cc\316\000\000\275\003"
 & "\013\275\003\013\275\003\013\316\000\000\275\003\013\316\000\000\275\003"
 & "\013\316\000\000\275\003\013\316\000\000\275\003\013\316\000\000\275\003"
 & "\013\316\000\000\316\000\000\275\003\013\367\367\336\347\234\234\275\003"
 & "\013\316\000\000\275\003\013\275\003\013\275\003\013\316\030c\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\347\234\234"
 & "\275\003\013\316\000\000\275\003\013\275\003\013\316\000\000\275\003\013"
 & "\336\336\336\377\377\377\377\377\377\377\377\377\377\377\377\316\000\000"
 & "\316\000\000\275\003\013\275\003\013\316\000\000\275\003\013\316\030c\347"
 & "\234\234\367\367\336\336\336\336\377\377\377\336\336\336\377\377\377\347"
 & "\234\234\265\265\265\347c\234\265\265\265\377\377\377\347cc\275\003\013"
 & "\316\000\000\275\003\013\316\000\000\275\003\013\347c\234\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\275\003\013\275"
 & "\003\013\316\000\000\275\003\013\316\000\000\275\003\013\347\234\234\377"
 & "\377\377\265\265\265\275\003\013\275\003\013\316\000\000\275\003\013\275"
 & "\003\013\347c\234\377\377\377\377\377\377\377\377\377\377\377\377\265\265"
 & "\265\316c1\336\336\336\377\377\377\377\377\377\377\377\377\377\377\377\347"
 & "\234\234\275\003\013\275\003\013\316\000\000\316\000\000\275\003\013\347"
 & "\234\234\377\377\377\367\367\336\275\003\013\275\003\013\275\003\013\275"
 & "\003\013\316\000\000\347cc\336\336\336\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\347\234\234\275\003\013\275\003\013\316\000\000\275\003\013"
 & "\316\000\000\275\003\013\347\234\234\347\234\234\347\234\234\347\234\234"
 & "\347\234\234\347\234\234\347cc\316\000\000\275\003\013\316\000\000\275\003"
 & "\013\275\003\013\377\265\316\347\234\234\275\003\013\316\000\000\275\003"
 & "\013\316\000\000\316\000\000\347cc\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\316\316\316\275\003\013\316\000\000\275\003\013\275"
 & "\003\013\316\000\000\275\003\013\347c\234\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\275\003\013\275\003\013\316\000\000\275\003"
 & "\013\316\000\000\275\003\013\316\000\000\275\003\013\275\003\013\316c1\316"
 & "\030c\275\003\013\275\003\013\316c1\275\003\013\316\000\000\347\234\234"
 & "\377\377\377\347cc\316\000\000\275\003\013\316\000\000\275\003\013\316\000"
 & "\000\347cc\347\234\234\316\316\316\316\316\316\377\265\316\265\265\265\275"
 & "\003\013\275\003\013\316\000\000\275\003\013\316\000\000\275\003\013\275"
 & "\003\013\316\316\316\377\377\377\347cc\316\000\000\316\000\000\275\003\013"
 & "\316\000\000\316\000\000\336\336\336\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\336\336\336\347cc\275\003\013\316\000\000\275\003\013\275\003"
 & "\013\275\003\013\336\336\336\377\377\377\347\234\234\275\003\013\316\000"
 & "\000\275\003\013\316\000\000\275\003\013\347cc\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\336\336\336\316\030c\316\000\000\316\000\000\275\003"
 & "\013\275\003\013\275\003\013\377\265\316\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\347\234\234\275\003\013\275\003"
 & "\013\316\000\000\275\003\013\316c1\336\336\336\347\234\234\316\000\000\275"
 & "\003\013\275\003\013\275\003\013\316\030c\275\003\013\316c1\347\234\234"
 & "\347c\234\347\234\234\316\030c\316c1\275\003\013\275\003\013\347cc\275\003"
 & "\013\316\000\000\275\003\013\347cc\347\234\234\347\234\234\347\234\234\265"
 & "\265\265\347\234\234\316\000\000\275\003\013\275\003\013\316\000\000\275"
 & "\003\013\316\000\000\275\003\013\316\000\000\275\003\013\316\000\000\316"
 & "\000\000\275\003\013\316\000\000\275\003\013\316\000\000\275\003\013\377"
 & "\265\316\377\377\377\265\265\265\275\003\013\316\000\000\275\003\013\316"
 & "\000\000\275\003\013\316\000\000\275\003\013\275\003\013\275\003\013\275"
 & "\003\013\275\003\013\316\000\000\275\003\013\275\003\013\316\000\000\275"
 & "\003\013\316\000\000\347cc\377\377\377\377\265\316\275\003\013\275\003\013"
 & "\275\003\013\275\003\013\275\003\013\347cc\336\336\336\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\316c1\275\003\013\316\000\000\275"
 & "\003\013\316\000\000\347cc\377\377\377\377\377\377\316c1\316\030c\316\000"
 & "\000\275\003\013\275\003\013\316\000\000\347\234\234\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\347\234\234\275\003\013\275\003\013\275\003"
 & "\013\316\000\000\275\003\013\316c1\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\265\265\265\316\000\000\275"
 & "\003\013\275\003\013\316\000\000\275\003\013\377\377\377\377\377\377\275"
 & "\003\013\275\003\013\316\000\000\316\000\000\316\000\000\316\030c\316\000"
 & "\000\275\003\013\316\000\000\275\003\013\275\003\013\347c\234\347\234\234"
 & "\347cc\347cc\275\003\013\275\003\013\316\000\000\275\003\013\275\003\013"
 & "\275\003\013\316\000\000\275\003\013\316\000\000\347\234\234\275\003\013"
 & "\316\000\000\316\030c\275\003\013\275\003\013\316\000\000\275\003\013\316"
 & "\000\000\275\003\013\275\003\013\316\000\000\275\003\013\275\003\013\275"
 & "\003\013\347cc\377\377\377\377\377\377\377\265\316\347cc\275\003\013\316"
 & "\000\000\275\003\013\275\003\013\275\003\013\316\000\000\316\000\000\275"
 & "\003\013\316\000\000\275\003\013\316\000\000\275\003\013\316\000\000\275"
 & "\003\013\316\000\000\347cc\377\377\377\377\377\377\347\316\234\316c1\275"
 & "\003\013\316\000\000\275\003\013\316\000\000\347cc\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\347c\234\275\003\013\316\000\000\275"
 & "\003\013\275\003\013\275\003\013\347c\234\377\377\377\377\377\377\316\030"
 & "c\316\000\000\275\003\013\316\000\000\275\003\013\275\003\013\347\234\234"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\336\336\336\275\003\013\316\000\000"
 & "\316\000\000\275\003\013\275\003\013\275\003\013\377\265\316\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\347\234\234\275\003\013\316\000\000\275\003\013\275\003\013\275\003\013"
 & "\347\234\234\377\377\377\347cc\316\000\000\275\003\013\275\003\013\275\003"
 & "\013\316\000\000\275\003\013\316\000\000\275\003\013\347c\234\367\367\336"
 & "\265\265\265\347cc\275\003\013\316\000\000\275\003\013\316\000\000\275\003"
 & "\013\316\000\000\316\000\000\275\003\013\316\000\000\275\003\013\347cc\377"
 & "\377\377\347\234\234\316\000\000\275\003\013\316\000\000\316\000\000\275"
 & "\003\013\316\000\000\275\003\013\275\003\013\316\000\000\275\003\013\316"
 & "\000\000\275\003\013\316\000\000\347\234\234\377\377\377\377\377\377\377"
 & "\377\377\265\265\265\347cc\316\000\000\275\003\013\275\003\013\316\000\000"
 & "\275\003\013\275\003\013\316\000\000\275\003\013\275\003\013\275\003\013"
 & "\316\000\000\275\003\013\275\003\013\347cc\336\336\336\377\377\377\336\336"
 & "\336\347c\234\316\000\000\275\003\013\316\000\000\275\003\013\316\000\000"
 & "\347\234\234\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\316c1\316\000\000\275\003\013\275\003\013\316\000\000\275\003\013\347\316"
 & "\234\377\377\377\265\265\265\316\000\000\275\003\013\316\000\000\275\003"
 & "\013\316\000\000\347cc\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\316"
 & "c1\275\003\013\275\003\013\275\003\013\316\000\000\316\000\000\347c";

CONST E49_3 =
   "\234\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\347\234\234\316\000\000\275\003\013\316\000"
 & "\000\275\003\013\316c1\316\316\316\377\377\377\377\377\377\347\234\234\275"
 & "\003\013\275\003\013\316\000\000\275\003\013\275\003\013\275\003\013\347"
 & "\316\234\377\377\377\347c\234\316\000\000\275\003\013\316\000\000\275\003"
 & "\013\316\030c\275\003\013\316\000\000\275\003\013\275\003\013\316\000\000"
 & "\275\003\013\316\000\000\347\234\234\377\377\377\377\377\377\377\265\316"
 & "\347cc\347cc\347cc\347cc\275\003\013\347cc\275\003\013\347cc\347cc\347c"
 & "\234\347cc\347cc\367\367\336\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\347\234\234\347cc\347cc\347cc\347cc\275\003\013\347cc\347"
 & "cc\316c1\347cc\347cc\347c\234\367\367\336\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\347\234\234\347\234\234\347\234\234\347\234\234\347\234"
 & "\234\347c\234\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\336\336\336\377\265\316\347\234\234\265\265\265\377\265\316"
 & "\336\336\336\377\377\377\377\377\377\377\265\316\347\234\234\377\265\316"
 & "\265\265\265\347\234\234\377\265\316\336\336\336\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\336\336\336\377\265\316\347\234\234\347\316\234\265\265\265"
 & "\347\234\234\336\336\336\336\336\336\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\265\316\265\265\265\377\265\316\377\265\316\367\367\336\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\367\367\336\347\234\234\347cc\347c"
 & "c\347\234\234\316\316\316\377\377\377\347cc\275\003\013\275\003\013\347"
 & "cc\347cc\347cc\347\234\234\347cc\347c\234\347cc\347cc\347c\234\347cc\347"
 & "c\234\377\265\316\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\265\316\336\336\336\377\377\377\336\336\336\377\377\377\377\377"
 & "\377\377\377\377\367\367\336\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\336\336\336\377\377\377\377\377\377\336\336\336\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\347\234"
 & "\234\316\000\000\347\234\234\336\336\336\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\316\030c\377\265\316\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
 & "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377";

CONST E50 =
   "% Last modified on Fri Feb  4 11:42:24 PST 2000 by heydon\n\n% This is "
 & "the configuration file for the bundled modules. Each line is\n% the nam"
 & "e of a Juno module; the corresponding file is formed from the\n% module"
 & " name by appending the \".juno\" extension. The modules must be\n% list"
 & "ed in a total order consistent with the partial order incuded by\n% the"
 & " IMPORT relation.\n\n% If a module name is followed by the text \"(buil"
 & "tin)\", the scope formed\n% from that module is used to augment an exis"
 & "ting built-in scope.\n\n% See the file \"juno-src/bundled/README\" for "
 & "a description of each of\n% the bundled modules and their import depend"
 & "encies.\n\n% Level 0\nC.juno\nJunoUI.juno (builtin)\nLineSkip.juno\nLis"
 & "t.juno\nMath.juno\nOffset.juno\nPrint.juno (builtin)\nR3.juno\nRandom.j"
 & "uno (builtin)\nText.juno (builtin)\nTime.juno (builtin)\nUnit.juno (bui"
 & "ltin)\n\n% Level 1\nBST.juno\nColor.juno\nR2.juno\nUnparse.juno\n\n% Le"
 & "vel 2\nGeometry.juno\nProj3D.juno\nPS.juno (builtin)\nRel.juno\nXform2."
 & "juno\n\n% Level 3\nAngle.juno\nAnim.juno\nArrow.juno\nBezier.juno\nCirc"
 & "le.juno\nEllipse.juno\nLine.juno\nPen.juno\nPtLoc.juno\nShadow.juno\nSh"
 & "ow.juno\nSquare.juno\nTextList.juno\nType.juno\nVPrint.juno\n\n% Level "
 & "4\nArc.juno\nCurve.juno\nDash.juno\nPath.juno\nPlot.juno\nPtLabel.juno\n"
 & "Rect.juno\nShowLine.juno\nTriangle.juno\nTypeLinesC.juno\nTypeLinesL.ju"
 & "no\nTypeLinesR.juno\n\n% Level 5\nCharSet.juno\nDiGraph.juno\nOutline.j"
 & "uno\nPieChart.juno\nSlider.juno\n\n% Extras\nEOF\nDijkstra.juno\nFont.j"
 & "uno\nUserFont.juno\n";

CONST E51 =
   "MODULE R3;\n\n(* Functions on 3D real vectors. *)\n\nCONST Origin = [0,"
 & " 0, 0];\n(* \"Origin\" is the origin in 3-space. *)\n\n(* \\section{Ari"
 & "thmetic Functions} *)\n\nFUNC r = Plus(p, q) IS \n  (E px, py, pz, qx, "
 & "qy, qz :: \n    p = [px, py, pz] AND \n    q = [qx, qy, qz] AND \n    r"
 & " = [px + qx, py + qy, pz + qz]) \nEND;\n\n(* \"r\" is the vector sum \""
 & "p\" + \"q\". *)\n\nFUNC r = Minus(p, q) IS \n  (E px, py, pz, qx, qy, q"
 & "z :: \n    p = [px, py, pz] AND \n    q = [qx, qy, qz] AND \n    r = [p"
 & "x - qx, py - qy, pz - qz]) \nEND;\n\n(* \"r\" is the vector difference "
 & "\"p\" - \n   \"q\". *)\n\nFUNC p = Times(t, q) IS \n  (E qx, qy, qz :: "
 & "\n    q = [qx, qy, qz] AND \n    p = [t * qx, t * qy, t * qz]) \nEND;\n"
 & "\n(* \"p\" is the product of the scalar \"t\" \n   and the vector \"q\""
 & ". *)\n\nFUNC len2 = Length2(v) IS \n  (E vx, vy, vz :: \n    v = [vx, v"
 & "y, vz] AND \n    len2 = \n      (vx * vx) + (vy * vy) + (vz * vz)) \nEN"
 & "D;\n\n(* \"len2\" is the square of the L2 norm \n   of the vector \"v\""
 & ". *)\n\nFUNC len = Length(v) IS \n  len = Math.Sqrt(Length2(v)) \nEND;\n"
 & "\n(* \"len\" is the L2 norm of the vector \n   \"v\", namely, its Eucli"
 & "dean length. *)\n\nFUNC u = Normalize(v) IS\n  Times(Length(v), u) = v\n"
 & "END;\n\n(* \"u\" is the vector \"v\" normalized\n   to have unit length"
 & ". *)\n\nFUNC t = Dot(p, q) IS \n  (E px, py, pz, qx, qy, qz :: \n    p "
 & "= [px, py, pz] AND \n    q = [qx, qy, qz] AND \n    t = \n      (px * q"
 & "x) + (py * qy) + (pz * qz)) \nEND;\n\n(* The scalar \"t\" is the dot-pr"
 & "oduct of \n   \"p\" and \"q\". *)\n\nFUNC r = Cross(p, q) IS \n  (E px,"
 & " py, pz, qx, qy, qz :: \n    p = [px, py, pz] AND \n    q = [qx, qy, qz"
 & "] AND \n    r = \n      [(py * qz) - (qy * pz), \n       (pz * qx) - (q"
 & "z * px), \n       (px * qy) - (qx * py)]) \nEND;\n\n(* \"r\" is the cro"
 & "ss-product of \"p\" and \n   \"q\". *)\n\n(* \\section{Projection Funct"
 & "ions} *)\n\nFUNC x = X(p) IS \n  (E y, z :: p = [x, y, z]) \nEND;\n\n(*"
 & " \"x\" is the x-coordinate of the 3D \n   point \"p\". *)\n\nFUNC y = Y"
 & "(p) IS \n  (E x, z :: p = [x, y, z]) \nEND;\n\n(* \"y\" is the y-coordi"
 & "nate of the 3D \n   point \"p\". *)\n\nFUNC z = Z(p) IS \n  (E x, y :: "
 & "p = [x, y, z]) \nEND;\n\n(*";

CONST E51_0 =
   " \"z\" is the y-coordinate of the 3D \n   point \"p\". *)\n\nFUNC r = F"
 & "romR2(p) IS \n  (E px, py :: \n    p = (px, py) AND r = [px, py, 0]) \n"
 & "END;\n\n(* Convert the R2 point \"p\" to an R3 \n   point whose \"z\" c"
 & "oordinate is 0. *)\n\nFUNC r = ToR2(p) IS \n  (E px, py, pz :: \n    p "
 & "= [px, py, pz] AND r = (px, py)) \nEND;\n\n(* \"r\" is the R2 projectio"
 & "n of the R3 \n   point \"p\" onto the XY-plane. *)\n\n";

CONST E52 =
   "; Copyright (C) 1992, Digital Equipment Corporation                    "
 & "     \n; All rights reserved.                                          "
 & "            \n; See the file COPYRIGHT for a full description.         "
 & "                   \n;                                                 "
 & "                          \n; Last modified on Thu May 26 16:59:56 PDT "
 & "1994 by heydon                   \n\n(Rim (Pen 5)\n  (Macro Gap () \'(G"
 & "lue 5))\n  (BrowserShape\n    (VBox (MyBrowserFont)\n      (DirMenu (Fo"
 & "r loadBrowser))\n      (Gap)\n      (Border\n        (FileBrowser %load"
 & "Browser\n          (BgColor \"White\")\n          (Suffixes \".juno\")\n"
 & "        )\n      )\n      (Gap)\n      (HBox\n        \"File:\"\n      "
 & "  (Glue 2)\n        (Frame Lowered\n          (Helper FirstFocus (BgCol"
 & "or \"White\") (For loadBrowser))\n        )\n      )\n    )\n  )\n)\n";

CONST E53 =
   "MODULE Dash;\n\n(* A module for drawing dashed lines. *)\n\nIMPORT R2, "
 & "Geometry, PS, Arrow;\n\nCONST \n  Tiny = ([3], 1.5), \n  Small = ([5], "
 & "2.5), \n  Medium = ([10], 5), \n  Big = ([20], 10), \n  Huge = ([40], 2"
 & "0), \n  DefaultPattern = Medium;\n\n(* This modules maintains a dash pa"
 & "ttern, which is a \n   pair \"(dashlist, offset)\". These dash patterns"
 & " \n   are based on the PostScript model for dashed \n   lines. The \"da"
 & "shlist\" is a list of non-negative \n   values that specify alternating"
 & " distances of dash \n   and gap lengths. The values in the \"dashlist\""
 & " are \n   used cyclically: after reaching the end of the \n   list, the"
 & " procedures in this module start back at \n   the beginning, alternatin"
 & "g the dash parity. \n   Hence, a \"dashlist\" that contains a single \n"
 & "   element alternates drawing dashes and gaps of the \n   same size. \n"
 & "\n   The dash \"offset\" may be thought of as the \n   ``phase\'\' of t"
 & "he dash pattern relative to the \n   start of the segment or curve. It "
 & "specifies the \n   distance into the dash pattern at which the \n   pat"
 & "tern should be started. Before beginning to \n   draw a dashed segment "
 & "or curve, the procedures in \n   this module cycle through the elements"
 & " of the \n   dash pattern, adding up distances and alternating \n   das"
 & "hes and gaps as usual, but without generating \n   any output. When the"
 & "y have travelled the offset \n   distance into the dash pattern, they s"
 & "tart adding \n   segments to the path from the point in the dash \n   p"
 & "attern that has been reached. *)\n\nPRIVATE VAR \n  dashList := CAR(Def"
 & "aultPattern), \n  offset := CDR(DefaultPattern);\n\n/* \"dashList\" and"
 & " \"offset\" are the current dash list \n   and offset values. */\n\nPRI"
 & "VATE PROC res := IsNonNegList(list) IS \n  IF \n    list # NIL -> \n   "
 & "   DO \n        list # NIL -> \n          IF CAR(list) >= 0 -> list := "
 & "CDR(list) FI \n      OD \n  FI; \n  res := NIL \nEND;\n\n/* Fail if \"l"
 & "ist\" contains anything other than \n   non-negative reals. Return \"NI"
 & "L\" otherwise. */\n\nPROC SetPattern(dashpat) IS \n  IF \n    VAR list,"
 & " num IN \n      dashpat = ";

CONST E53_0 =
   "(list, num) -> \n        IF \n          num >= 0 AND IsNonNegList(list)"
 & " = NIL -> \n            dashList := list; offset := num \n        FI \n"
 & "    END \n  FI \nEND;\n\nUI SetTool(SetPattern);\n\n(* Sets the dash pa"
 & "ttern to \"dashpat\", which must be \n   a pair \"(dashlist, offset)\"."
 & " The \"dashlist\" must \n   be a non-NIL list of non-negative reals. Th"
 & "e \n   \"offset\" must be a non-negative real. *)\n\nUI Param(SetPatter"
 & "n, DefaultPattern);\n\nUI Param(SetPattern, Tiny);\n\nUI Param(SetPatte"
 & "rn, Small);\n\nUI Param(SetPattern, Medium);\n\nUI Param(SetPattern, Bi"
 & "g);\n\nUI Param(SetPattern, Huge);\n\nPROC dashpat := GetPattern() IS \n"
 & "  dashpat := (dashList, offset) \nEND;\n\n(* Set \"dashpat\" to the cur"
 & "rent dash pattern. *)\n\nPRIVATE PROC (pattern, parity):Advance(amt) IS"
 & " \n  DO \n    amt >= CAR(pattern) -> \n      amt := amt - CAR(pattern);"
 & " \n      parity := -parity; \n      pattern := CDR(pattern); \n      IF"
 & " \n        pattern = NIL -> pattern := dashList | SKIP \n      FI \n  O"
 & "D; \n  IF \n    amt > 0 -> \n      pattern := (CAR(pattern) - amt, CDR("
 & "pattern)) \n  | SKIP \n  FI \nEND;\n\n/* Let \"dashes\" denote the logi"
 & "cally infinite stream \n   of dashes represented by the initial value o"
 & "f \n   \"pattern\" concatenated with \"dash\" repeated an \n   infinite"
 & " number of times. Then set \"pattern\" and \n   \"parity\" to reflect t"
 & "he position reached by \n   advancing through \"dashes\" by the distanc"
 & "e \"amt\". \n*/\n\nPRIVATE VAR currPat, parity;\n\n/* While constructin"
 & "g a dashed path, \"currPat\" and \n   \"parity\" denote the current das"
 & "h pattern and \n   drawing parity. The \"MoveTo\" procedure resets \n  "
 & " these values according to \"dash\" and \"indent\". */\n\nPRIVATE PROC "
 & "Move(p) IS \n  PS.MoveTo(p); \n  currPat := dashList; \n  parity := 1; "
 & "\n  (currPat, parity):Advance(offset) \nEND;\n\n/* Start a new dashed p"
 & "ath at \"p\" using the current \n   dash pattern. */\n\nPRIVATE PROC Li"
 & "ne(p, q) IS \n  VAR r, dv, len, u, dist IN \n    dv := R2.Minus(q, p); "
 & "\n    len := Geometry.Dist(p, q); \n    u := R2.Times(1 / len, dv); \n "
 & "   dist := CAR(currPat); \n    DO \n      (dist < len) -> \n";

CONST E53_1 =
   "        r := R2.Plus(p, R2.Times(dist, u)); \n        IF \n          pa"
 & "rity < 0 -> PS.MoveTo(r) | PS.LineTo(r) \n        FI; \n        (currPa"
 & "t, parity):Advance(CAR(currPat)); \n        dist := dist + CAR(currPat)"
 & " \n    OD; \n    IF parity > 0 -> PS.LineTo(q) | PS.MoveTo(q) FI; \n   "
 & " VAR amt IN \n      amt := len - (dist - CAR(currPat)); \n      (currPa"
 & "t, parity):Advance(amt) \n    END \n  END \nEND;\n\n/* Extend the curre"
 & "nt path with a dashed line \n   segment from \"p\" to \"q\"; \"q\" beco"
 & "mes the current \n   point. The style of the dash is determined by the "
 & "\n   current dash pattern. It is a checked run-time \n   error for the "
 & "current point to be undefined. */\n\nPRIVATE PROC Curve(p, q, r, s) IS "
 & "\n  VAR t, amt IN \n    t := 0; \n    DO \n      t < 1 -> \n        amt"
 & " := CAR(currPat); \n        (t, amt):CurvedDash(p, q, r, s, parity); \n"
 & "        (currPat, parity):Advance(amt) \n    OD \n  END \nEND;\n\n/* Ex"
 & "tend the current path with a dashed Bezier \n   curve determined by \"p"
 & "\", \"q\", \"r\", and \"s\"; \"s\" \n   becomes the current point. The "
 & "style of the dash \n   is determined by the current dash pattern. It is"
 & " \n   a checked run-time error for the current point to \n   be undefin"
 & "ed. */\n\nPRIVATE PRED \n  Trellis(t, p, q, r, s, pq, qr, rs, pqr, qrs,"
 & " pqrs) IS \n  pq = (t, 0) REL (p, q) AND \n  qr = (t, 0) REL (q, r) AND"
 & " \n  rs = (t, 0) REL (r, s) AND \n  pqr = (t, 0) REL (pq, qr) AND \n  q"
 & "rs = (t, 0) REL (qr, rs) AND \n  pqrs = (t, 0) REL (pqr, qrs) \nEND;\n\n"
 & "PRIVATE PROC \n  (t, len):CurvedDash(p, q, r, s, parity) IS \n  IF \n  "
 & "  VAR \n      pq, qr, rs, pqr, qrs, pqrs, velocity, speed, \n      endt"
 & " \n    IN \n      Trellis(t, p, q, r, s, pq, qr, rs, pqr, qrs, \n      "
 & "        pqrs) AND \n      velocity = R2.Times(3, R2.Minus(qrs, pqr)) AN"
 & "D \n      speed = R2.Length(velocity) AND \n      endt = t + len / spee"
 & "d -> \n        IF \n          endt > 1 -> \n            len := len * (1"
 & " - t) / (endt - t); \n            endt := 1 | SKIP \n        FI; \n    "
 & "    VAR t2 IN \n          t2 := (endt - t) / (1 - t); \n          Curve"
 & "dDashBit(pqrs, qrs, rs, s";

CONST E53_2 =
   ", t2, parity) \n        END; \n        t := endt \n    END \n  FI \nEND"
 & ";\n\n/* CurvedDash draws a piece of the Bezier \n   \"[p,q,r,s]\" start"
 & "ing from \"t\" of length \"len\", \n   and advances \"t\". However, if "
 & "a piece of length \n   \"len\" would extend past \"s\", the piece is dr"
 & "awn \n   to \"s\", and \"len\" is set to the length of the \n   segment"
 & " that was drawn. */\n\nPRIVATE PROC CurvedDashBit(p, q, r, s, t, parity"
 & ") IS \n  IF \n    VAR pq, qr, rs, pqr, qrs, pqrs IN \n      Trellis(t, "
 & "p, q, r, s, pq, qr, rs, pqr, qrs, \n              pqrs) -> \n        IF"
 & " \n          parity > 0 -> PS.CurveTo(pq, pqr, pqrs) \n        | PS.Mov"
 & "eTo(pqrs) \n        FI \n    END \n  FI \nEND;\n\n/* CurvedDashBit(p,q,"
 & "r,s,t) draws the piece of \n   Bezier(p,q,r,s) from 0 to t. */\n\nPROC "
 & "Stroke() IS \n  VAR path, currPt, startPt IN \n    path := PS.CurrentPa"
 & "th(); \n    PS.NewPath(); \n    currPt, startPt := NIL, NIL; \n    DO \n"
 & "      path # NIL -> \n        IF \n          VAR op, args IN \n        "
 & "    CAR(path) = (op, args) -> \n              IF \n                op ="
 & " \"MoveTo\" -> \n                  startPt := CAR(args); \n            "
 & "      Move(startPt); \n                  currPt := startPt \n          "
 & "    | op = \"LineTo\" -> \n                  Line(currPt, CAR(args)); \n"
 & "                  currPt := CAR(args) \n              | op = \"CurveTo\""
 & " -> \n                  VAR b, c, d IN \n                    args = [b,"
 & " c, d] -> \n                      Curve(currPt, b, c, d); \n           "
 & "           currPt := d \n                  END \n              | op = \""
 & "Close\" -> \n                  Line(currPt, startPt); \n               "
 & "   currPt, startPt := NIL, NIL \n              FI \n          END \n   "
 & "     FI; \n        path := CDR(path) \n    OD; \n    PS.Stroke() \n  EN"
 & "D \nEND;\n\nUI PointTool(Stroke);\n\n(* Stroke the current path in the "
 & "current line width \n   using this module\'s current dash pattern. *)\n"
 & "\nPROC Straight1(a, b) IS \n  VAR c IN \n    c := Arrow.StraightEnd(a, "
 & "b, Arrow.HeadSize()); \n    PS.MoveTo(a); \n    PS.LineTo(c); \n    Str"
 & "oke(); \n    Arrow.Head(a, b) \n  END \nE";

CONST E53_3 =
   "ND;\n\nUI PointTool(Straight1);\n\n(* Draw a dashed directed line from "
 & "\"a\" to \"b\". The \n   arrow head size is determined using the \n   \""
 & "Arrow.HeadSize\" procedure. *)\n\nPROC Straight2(a, b) IS \n  VAR sz, c"
 & ", d IN \n    sz := Arrow.HeadSize(); \n    c := Arrow.StraightEnd(b, a,"
 & " sz); \n    d := Arrow.StraightEnd(a, b, sz); \n    Arrow.Head(b, a); \n"
 & "    PS.MoveTo(c); \n    PS.LineTo(d); \n    Stroke(); \n    Arrow.Head("
 & "a, b) \n  END \nEND;\n\nUI PointTool(Straight2);\n\n(* Draw a dashed di"
 & "rected line between \"a\" and \"b\". \n   The arrow head size is determ"
 & "ined using the \n   \"Arrow.HeadSize\" procedure. *)\n\nPROC Curved1(a,"
 & " b, c, d) IS \n  VAR e IN \n    e := Arrow.StraightEnd(c, d, Arrow.Head"
 & "Size()); \n    PS.MoveTo(a); \n    PS.CurveTo(b, c, e); \n    Stroke();"
 & " \n    Arrow.Head(c, d) \n  END \nEND;\n\nUI PointTool(Curved1);\n\n(* "
 & "Draw a dashed directed curve from \"a\" to \"d\" \n   using \"b\" and \""
 & "c\" as control points. The arrow \n   head size is determined using the"
 & " \n   \"Arrow.HeadSize\" procedure. *)\n\nPROC Curved2(a, b, c, d) IS \n"
 & "  VAR sz, e, f IN \n    sz := Arrow.HeadSize(); \n    e := Arrow.Straig"
 & "htEnd(b, a, sz); \n    f := Arrow.StraightEnd(c, d, sz); \n    Arrow.He"
 & "ad(b, a); \n    PS.MoveTo(e); \n    PS.CurveTo(b, c, f); \n    Stroke()"
 & "; \n    Arrow.Head(c, d) \n  END \nEND;\n\nUI PointTool(Curved2);\n\n(*"
 & " Draw a dashed directed curve between \"a\" and \"d\" \n   using \"b\" "
 & "and \"c\" as control points. The arrow \n   head size is determined usi"
 & "ng the \n   \"Arrow.HeadSize\" procedure. *)\n\nPRIVATE VAR history := "
 & "NIL;\n\nPROC Save() IS \n  history := ((dashList, offset), history) \nE"
 & "ND;\n\nPROC Restore() IS \n  VAR state IN \n    state := CAR(history); "
 & "\n    dashList := CAR(state); \n    offset := CDR(state); \n    history"
 & " := CDR(history) \n  END \nEND;\n\nUI PointTool(Save);\n\nUI PointTool("
 & "Restore);\n\n(* Save/restore the \"Dash\" state, namely the dash \n   p"
 & "attern and offset. *)\n\n";

CONST E54 =
   "MODULE Type;\n\n(* The procedures in this module type a \n   single lin"
 & "e of text relative to a \n   specified point. *)\n\nIMPORT PS;\n\nPROC "
 & "L(p, txt) IS PS.Type(p, txt) END;\n\nUI TextTool(L);\n\n(* Equivalent t"
 & "o \"PS.Type(p, txt)\". *)\n\nPROC C(p, txt) IS \n  VAR w IN\n    w := P"
 & "S.StringWidth(txt);\n    PS.Type((CAR(p) - w / 2, CDR(p)), txt) \n  END"
 & " \nEND;\n\nUI TextTool(C);\n\n(* Like \"PS.Type\", but \"txt\" is cente"
 & "red \n   around \"p\". *)\n\nPROC R(p, txt) IS \n  VAR w IN\n    w := P"
 & "S.StringWidth(txt);\n    PS.Type((CAR(p) - w, CDR(p)), txt) \n  END \nE"
 & "ND;\n\nUI TextTool(R);\n\n(* Like \"PS.Type\", but \"txt\" is \n   righ"
 & "t-justifed off \"p\". *)\n\n";

CONST E55 =
   "MODULE PieChart;\n\nIMPORT Color, LineSkip, List, Math;\n\nIMPORT PS, R"
 & "2, Unparse, Circle, Arc, Rect;\n\n(* A module for drawing pie charts an"
 & "d their legends. *)\n\n(* \\section{Pie Chart Colors} *)\n\nVAR Saturat"
 & "ion := 1, Brightness := 1;\n\n(* The \"Draw\" procedure below for drawi"
 & "ng pie charts chooses the \n   hue of each wedge so that subsequent hue"
 & "s are distinct. The \n   saturation and value (or brightness) of each w"
 & "edge are \n   controlled by the current values of the global variables "
 & "\n   \"Saturation\" and \"Brightness\". See the description of the \n  "
 & " procedure \"Color.FromHSV\" of the hue-saturation-value color \n   mod"
 & "el. *)\n\nPRIVATE PROC c := ColorN(i) IS \n  c := Color.FromHSV(Color.H"
 & "ueN(i), Saturation, Brightness) \nEND;\n\n(* \\section{Pie Charts} *)\n"
 & "\nPRIVATE CONST OuterLineWidth = 2, InnerLineWidth = 1;\n\n/* The outer"
 & " circumference of the pie is stroked in a line of \n   width \"OuterLin"
 & "eWidth\". The divisions between the pie slices \n   are stroked with li"
 & "nes of width \"InnerLineWidth\". */\n\nPRIVATE FUNC p = Loc(a, b, k) IS"
 & " \n  (E theta = -k * 2 * Math.Pi, q = (COS(theta), SIN(theta)) :: \n   "
 & " p = q REL (a, b)) \nEND;\n\n/* \"p\" is the point on the circumference"
 & " of the pie with center \n   \"a\" starting at \"b\" a fraction \"k\" o"
 & "f the way around the pie \n   (in the clockwise direction). */\n\nPRIVA"
 & "TE PROC DrawWedge(a, b, from, to, i) IS \n  SAVE PS IN \n    VAR p, q I"
 & "N \n      p, q := Loc(a, b, from), Loc(a, b, to); \n      SAVE PS IN \n"
 & "        PS.MoveTo(a); \n        PS.LineTo(p); \n        Arc.Draw(a, q);"
 & " \n        PS.Close(); \n        PS.SetColor(ColorN(i)); \n        PS.F"
 & "ill() \n      END; \n      PS.MoveTo(p); \n      PS.LineTo(a); \n      "
 & "PS.LineTo(q); \n      PS.SetEndStyle(PS.ButtEnds); \n      PS.SetJointS"
 & "tyle(PS.BevelJoints); \n      PS.Stroke() \n    END \n  END \nEND;\n\n/"
 & "* Draw a wedge from \"Loc(a,b,from)\" to \"Loc(a,b,to)\" filled \n   wi"
 & "th the color corresponding to index \"i\". */\n\nPRIVATE PROC sum := To"
 & "tal(data) IS \n  sum := 0; \n  DO \n    data # NIL -> sum := sum + CAR("
 & "CAR(data)); data := CDR(data) \n  OD \nE";

CONST E55_0 =
   "ND;\n\n/* Return the sum of the \"CAR\"\'s of the elements of the list "
 & "\n   \"data\". */\n\nPROC Draw(a, b, data) IS \n  SAVE PS IN \n    PS.S"
 & "etWidth(InnerLineWidth); \n    VAR sum, item, curr = 0, i = 0 IN \n    "
 & "  sum := Total(data); \n      DO \n        data # NIL -> \n          it"
 & "em := CAR(data); \n          data := CDR(data); \n          VAR new IN "
 & "\n            new := curr + (CAR(item) / sum); \n            DrawWedge("
 & "a, b, curr, new, i); \n            curr := new \n          END; \n     "
 & "     i := i + 1 \n      OD \n    END; \n    Circle.Draw(a, b); \n    PS"
 & ".SetWidth(OuterLineWidth); \n    PS.Stroke() \n  END \nEND;\n\n(* Draw "
 & "a pie chart with center \"a\" and circumference starting \n   point \"b"
 & "\" on the given \"data\". \"Data\" must be a list of \n   \"(value, nam"
 & "e)\" pairs. The \"name\" parts of the data are \n   ignored by this pro"
 & "cedure, but they are used by the \"Legend\" \n   procedure below. *)\n\n"
 & "(* \\section{Pie Chart Legends} *)\n\nPRIVATE CONST \n  LegendLineWidth"
 & " = 1, SquareScale = 0.7, LegendGap = 5;\n\nPRIVATE PROC LegendSquare(p,"
 & " ht, i) IS \n  VAR center, ht2, delta IN \n    ht2 := ht / 2; \n    del"
 & "ta := (ht2, -ht2); \n    center := R2.Plus(p, delta); \n    Rect.DrawC("
 & "center, \n               R2.Plus(center, R2.Times(SquareScale, delta)))"
 & "; \n    SAVE PS IN PS.SetColor(ColorN(i)); PS.Fill() END; \n    PS.Stro"
 & "ke() \n  END \nEND;\n\nPRIVATE PROC p:LegendItem(asc, ht, label, i) IS "
 & "\n  LegendSquare(p, ht, i); \n  PS.Type(R2.Plus(p, (ht + LegendGap, -as"
 & "c)), label); \n  p := R2.Minus(p, (0, ht + LineSkip.Get())) \nEND;\n\nP"
 & "ROC Legend(a, data, labelCl) IS \n  SAVE PS IN \n    PS.SetWidth(Legend"
 & "LineWidth); \n    VAR asc, dec, ht, vert, sum, i = 0 IN \n      asc, de"
 & "c := PS.FontHeight(); \n      ht := asc + dec; \n      vert := \n      "
 & "  List.Length(data) * (ht + LineSkip.Get()) - \n        LineSkip.Get();"
 & " \n      sum := Total(data); \n      a := R2.Plus(a, (0, vert / 2)); \n"
 & "      DO \n        data # NIL -> \n          a:LegendItem(asc, ht, APPL"
 & "Y(labelCl, CAR(data), sum), i); \n          data := CDR(data); \n      "
 & "    i := i + 1 \n      OD \n    EN";

CONST E55_1 =
   "D \n  END \nEND;\n\n(* Draw a legend for the given \"data\" located so "
 & "its west edge \n   is centered at \"a\". The \"data\" should be a list "
 & "of \"(value, \n   name)\" pairs. \n\n   The call \"APPLY(labelCl, item,"
 & " sum)\" must return the textual \n   label associated with the given \""
 & "item\" (which is a name-value \n   pair), given that \"sum\" is the sum"
 & " of the values of all the \n   items. There are predefined label closur"
 & "es defined below for \n   common cases. \n\n   The legend names are pri"
 & "nted in the current font, separated \n   by the nominal height of the f"
 & "ont plus the current \"LineSkip\" \n   value (as maintained by the \"Li"
 & "neSkip\" module). *)\n\nPROC res := OnlyLabel(item, sum) IS res := CDR("
 & "item) END;\n\n(* A label closure that returns only the name of the labe"
 & "l *)\n\nPROC res := AbsoluteLabel(item, sum) IS \n  res := CDR(item) & "
 & "\" (\" & Unparse.Value(CAR(item)) & \")\" \nEND;\n\n(* A label closure "
 & "that returns the name of the label and its \n   associated value. *)\n\n"
 & "PROC res := PercentLabel(item, sum) IS \n  res := \n    CDR(item) & \" "
 & "(\" & Unparse.Value(100 * CAR(item) / sum) & \n    \"%)\" \nEND;\n\n(* "
 & "A label closure that returns the name of the label and its \n   associa"
 & "ted percentage. *)\n\n";

CONST E56 =
   "; Copyright (C) 1992, Digital Equipment Corporation                    "
 & "     \n; All rights reserved.                                          "
 & "            \n; See the file COPYRIGHT for a full description.         "
 & "                   \n;                                                 "
 & "                          \n; Last modified on Thu Mar 28 17:28:49 PST "
 & "1996 by heydon\n\n; Macros for particular shape constraints\n;\n(Macro "
 & "Width2 BOA (w)  `(Width ,w + Inf - ,w))\n(Macro Height2 BOA (h) `(Heigh"
 & "t ,h + Inf - ,h))\n(Macro FixedHeight BOA (ch) `(Shape (Height + 0 - 0)"
 & " ,ch))\n(Macro FixedWidth BOA (ch) `(Shape (Width + 0 - 0) ,ch))\n(Macr"
 & "o FixedSize BOA (ch) `(Shape (Height + 0 - 0) (Width + 0 - 0) ,ch))\n\n"
 & "; Shape macros for particular generics\n;\n(Macro Drawing BOA (ch) `(Sh"
 & "ape (Width2 350) (Height2 0) ,ch))\n(Macro Sources BOA (ch) `(Shape (Wi"
 & "dth2 350) ,ch))\n(Macro Module  BOA (ch) `(Shape (Height2 295) ,ch))\n("
 & "Macro CCmd    BOA (ch) `(Shape (Height2 295) ,ch))\n\n; Macros for the "
 & "various \"File\" menu pop-ups\n(Macro BrowserAt BOA () \'(At 71 20 NW A"
 & "bsolute))\n(Macro BrowserShape BOA (ch) `(Shape (Height2 300) (Width2 2"
 & "00) ,ch))\n\n; MyBar, MyRidge, Space == misc spaces of fixed width\n;\n"
 & "(Macro MyBar   () \'(Bar 1))\n(Macro MyRidge () \'(Bar 1))\n(Macro Spac"
 & "e   () \'(Glue 3))\n(Macro SmallSpace () \'(Glue 1))\n\n; HTile2(ch1,ch"
 & "2) == like (HTile ch1 ch2), only puts (MyBar) on either side of\n;   th"
 & "e bar separating the children\n;\n(Macro HTile2 BOA (ch1 ch2)\n  `(HTil"
 & "e (HBox ,ch1 (MyBar)) (HBox (MyBar) ,ch2)))\n(Macro VTile2 BOA (ch1 ch2"
 & ")\n  `(VTile (VBox ,ch1 (MyBar)) (VBox (MyBar) ,ch2)))\n\n; ButtonLabel"
 & "(lbl) == \"lbl\" with space on either side\n;\n(Macro ButtonLabel BOA ("
 & "lbl)\n  `(HBox (SmallSpace) ,lbl (SmallSpace)))\n\n; MenuLabel(lbl) == "
 & "\"lbl\" followed by \"MenuArrow\"\n;\n(Macro MenuLabel BOA (lbl)\n  `(B"
 & "uttonLabel\n    (HBox\n     ,lbl\n     (SmallSpace)\n     (FixedWidth ("
 & "Pixmap \"MenuArrow.pbm\"))\n     (Space))))\n\n; TextL == left-aligned "
 & "text\n;\n(Macro TextL BOA (txt)\n  `(Text LeftAlign ,txt))\n\n; MyLabel"
 & "Font == set part";

CONST E56_0 =
   "icular LabelFont\n;\n(Macro MyLabelFont ()\n  \'(LabelFont\n     (Famil"
 & "y \"Helvetica\")\n     (WeightName \"bold\")\n     (Slant \"r\")\n     "
 & "(PointSize 100)))\n\n; MyBrowserFont == set font for file browser windo"
 & "ws\n;\n(Macro MyBrowserFont ()\n  \'(Font\n     (Family \"Helvetica\")\n"
 & "     (WeightName \"bold\")\n     (Slant \"r\")\n     (Width \"normal\")"
 & "\n     (PointSize 100)))\n\n(Macro MyBrowserLabelFont ()\n  \'(LabelFon"
 & "t\n     (Family \"Helvetica\")\n     (WeightName \"bold\")\n     (Slant"
 & " \"r\")\n     (PointSize 100)))\n\n; ZChassis look-alikes with named \""
 & "Cancel\" buttons\n;\n(Macro If BOA (bool x y)\n  (IF bool x y))\n(Macro"
 & " MyZChassis\n  ((At (0.5 0.5))\n   (CancelBox TRUE)\n   (CancelName \"\""
 & ")\n   (GrowBox TRUE)\n   Name\n   Title\n   Child)\n `(ZChild %,Name\n "
 & "   (At ,@At)\n    (MyBrowserLabelFont)\n    (Border\n      (VBox\n     "
 & "   (HBox\n          (If ,CancelBox\n            (CloseButton %,CancelNa"
 & "me\n              (Rim (Pen 2) (Pixmap \"UpArrow.pbm\")))\n            "
 & "(Glue 0)\n          )\n          (Bar)\n          (Shape (Width + Inf) "
 & "(ZMove ,Title))\n          (Bar)\n          (If ,GrowBox\n            ("
 & "ZGrow (Rim (Pen 2) (Pixmap \"Grow.pbm\")))\n            (Glue 0)\n     "
 & "     )\n        )\n        (Bar)\n        (Frame ,Child)\n      )\n    "
 & ")\n  )\n)\n";

CONST E57 =
   "MODULE Bezier;\n\n(* Bezier curve predicates and procedures. *)\n\nIMPO"
 & "RT R2, Geometry;\n\n(* A Bezier curve is defined by a univariate cubic "
 & "polynomial \n   \"F(t)\": \n\n|  F(t) = p0 + t*p1 + t^2*p2 + t^3*p3,\n\n"
 & "   where \"t\" is a scalar, and the coefficients \"p_i\" are vectors \n"
 & "   (pairs of real numbers). Here, \"*\" denotes the multiplication \n  "
 & " of a vector by a scalar, and \"+\" denotes vector addition. \n\n   Alt"
 & "ernatively, a Bezier curve \"a\", \"b\", \"c\", \"d\" may be \n   speci"
 & "fied by its two endpoints \"a\" and \"d\" and its two \n   control poin"
 & "ts \"b\" and \"c\". Since \"t = 0\" corresponds to the \n   first endpo"
 & "int \"a\", and \"F(0) = p0\", we have that \"a = p0\". \n   The \"MapRe"
 & "p\" predicate below defines the mapping between the \n   two representa"
 & "tions. *)\n\n(* MAPPING BETWEEN REPRESENTATIONS *)\n\nPRED MapRep(a, b,"
 & " c, d, p1, p2, p3) IS \n  (E ba, bc, b2, ab2, bc3, ab2c, bc3d :: \n    "
 & "ba = R2.Minus(b, a) AND \n    bc = R2.Minus(b, c) AND \n    b2 = R2.Tim"
 & "es(2, b) AND \n    ab2 = R2.Minus(a, b2) AND \n    bc3 = R2.Times(3, bc"
 & ") AND \n    ab2c = R2.Plus(ab2, c) AND \n    bc3d = R2.Plus(bc3, d) AND"
 & " \n    p1 = R2.Times(3, ba) AND \n    p2 = R2.Times(3, ab2c) AND \n    "
 & "p3 = R2.Minus(bc3d, a)) \nEND;\n\n(* The curve defined by the points \""
 & "a\", \"b\", \"c\", and \"d\" \n   corresponds to the univariate cubic p"
 & "olynomial \"F\" with \n   coefficients \"a\", \"p1\", \"p2\", and \"p3\""
 & ". *)\n\n(* COEFFICIENT REPRESENTATION *)\n\nPRIVATE FUNC r = Sum3(a, b,"
 & " c) IS \n  r = R2.Plus(a, R2.Plus(b, c)) \nEND;\n\n/* \"r\" is the vect"
 & "or sum of \"a\", \"b\", and \"c\", which are 2D \n   points. */\n\nPRIV"
 & "ATE FUNC r = Sum4(a, b, c, d) IS \n  r = R2.Plus(a, R2.Plus(b, R2.Plus("
 & "c, d))) \nEND;\n\n/* \"r\" is the vector sum of \"a\", \"b\", \"c\", an"
 & "d \"d\", which are 2D \n   points. */\n\nFUNC p = AtTFromCoeffs(p0, p1,"
 & " p2, p3, t) IS \n  (E t2, t3, s1, s2, s3 :: \n    t2 = t * t AND \n    "
 & "t3 = t * t2 AND \n    s1 = R2.Times(t, p1) AND \n    s2 = R2.Times(t2, "
 & "p2) AND \n    s3 = R2.Times(t3, p3) AND \n    p = Sum4(p0, s1, s2, s3))"
 & " \nEND;\n\n(* If \"F\" is the Bezier curve defined by the four coeffici"
 & "ents \n   \"";

CONST E57_0 =
   "p0\", \"p1\", \"p2\", and \"p3\", then \"p = F(t)\". *)\n\nFUNC p = Pri"
 & "meAtTFromCoeffs(p0, p1, p2, p3, t) IS \n  p = Sum3(p1, R2.Times(2 * t, "
 & "p2), R2.Times(3 * t * t, p3)) \nEND;\n\n(* If \"F\" is the Bezier curve"
 & " defined by the four coefficients \n   \"p0\", \"p1\", \"p2\", and \"p3"
 & "\", then \"p = F\'(t)\", where \"F\'\" \n   denotes the first derivativ"
 & "e of the polynomial \"F\" with \n   respect to \"t\". *)\n\n(* POINT RE"
 & "PRESENTATION *)\n\nFUNC p = AtT(a, b, c, d, t) IS \n  (E p1, p2, p3 :: "
 & "\n    MapRep(a, b, c, d, p1, p2, p3) AND \n    p = AtTFromCoeffs(a, p1,"
 & " p2, p3, t)) \nEND;\n\n(* If \"F\" is the Bezier curve defined by the f"
 & "our points \"a\", \n   \"b\", \"c\", and \"d\", then \"p = F(t)\". *)\n"
 & "\nFUNC p = PrimeAtT(a, b, c, d, t) IS \n  (E p1, p2, p3 :: \n    MapRep"
 & "(a, b, c, d, p1, p2, p3) AND \n    p = PrimeAtTFromCoeffs(a, p1, p2, p3"
 & ", t)) \nEND;\n\n(* If \"F\" is the Bezier curve defined by the four poi"
 & "nts \"a\", \n   \"b\", \"c\", and \"d\", then \"p = F\'(t)\", where \"F"
 & "\'\" denotes the \n   first derivative of the polynomial \"F\" with res"
 & "pect to \"t\". *)\n\nPRIVATE PROC p := EvalAtT(p0, p1, p2, p3, t) IS \n"
 & "  VAR t2, t3, s1, s2, s3 IN \n    t2 := t * t; \n    t3 := t * t2; \n  "
 & "  s1 := R2.Times(t, p1); \n    s2 := R2.Times(t2, p2); \n    s3 := R2.T"
 & "imes(t3, p3); \n    p := Sum4(p0, s1, s2, s3) \n  END \nEND;\n\nPROC cl"
 & " := Closure(a, b, c, d) IS \n  IF \n    VAR p1, p2, p3 IN \n      MapRe"
 & "p(a, b, c, d, p1, p2, p3) -> \n        cl := CLOSE(EvalAtT, a, p1, p2, "
 & "p3) \n    END \n  FI \nEND;\n\n(* Return a closure taking a single argu"
 & "ment \"t\" and returning \n   the point \"F(t)\", where \"F\" is the Be"
 & "zier curve defined by \n   the points \"a\", \"b\", \"c\", and \"d\". *"
 & ")\n\nPRIVATE FUNC t = EstimateT(p, a, b, c, d) IS \n  (E ab = (0.5, 0) "
 & "REL (a, b), bc = (0.5, 0) REL (b, c), \n     cd = (0.5, 0) REL (c, d), "
 & "abc = (0.5, 0) REL (ab, bc), \n     bcd = (0.5, 0) REL (bc, cd), \n    "
 & " abcd = (0.5, 0) REL (abc, bcd), x, y :: \n    p = (x, y) REL (abcd, bc"
 & "d) AND t = 0.5 + x / 6) \nEND;\n\nPRED On(p, a, b, c, d) IS \n  (E t ~ "
 & "EstimateT(p, a, b, c, d), ab ~ (t, 0) REL (a, b), \n     bc ~ (t, 0) RE"
 & "L (b, c), c";

CONST E57_1 =
   "d ~ (t, 0) REL (c, d), \n     abc ~ (t, 0) REL (ab, bc), bcd ~ (t, 0) R"
 & "EL (bc, cd) :: \n    ab = (t, 0) REL (a, b) AND \n    bc = (t, 0) REL ("
 & "b, c) AND \n    cd = (t, 0) REL (c, d) AND \n    abc = (t, 0) REL (ab, "
 & "bc) AND \n    bcd = (t, 0) REL (bc, cd) AND \n    p = (t, 0) REL (abc, "
 & "bcd)) \nEND;\n\nUI PointTool(On);\n\n(* The point \"p\" lies on the Bez"
 & "ier curve \"a\", \"b\", \"c\", \"d\". *)\n\nPROC p1, p2, p3, p4, p5 := "
 & "Split(a, b, c, d) IS \n  IF \n    VAR \n      ab = Geometry.Mid(a, b), "
 & "bc = Geometry.Mid(b, c), \n      cd = Geometry.Mid(c, d), abc = Geometr"
 & "y.Mid(ab, bc), \n      bcd = Geometry.Mid(bc, cd), abcd = Geometry.Mid("
 & "abc, bcd) \n    IN \n      p1, p2, p3, p4, p5 := ab, abc, abcd, bcd, cd"
 & " \n    END \n  FI \nEND;\n\n(* Set the output parameters so that \n\n| "
 & "   PS.MoveTo(a);\n|    PS.CurveTo(p1, p2, p3);\n|    PS.CurveTo(p4, p5,"
 & " d)\n\n   produces a path equivalent to \n\n|    PS.MoveTo(a);\n|    PS"
 & ".CurveTo(b, c, d).\n\n   The point \"p3\" is the midpoint of the curve "
 & "\"a\", b\", \"c\", \n   \"d\". That is, \"p3 = AtT(a, b, c, d, 0.5)\". "
 & "*)\n\nPRIVATE CONST MinDist = 8, MaxRatio = 0.004;\n\nPRIVATE PROC Ck, "
 & "Pk := LengthAux(a, b, c, d, depth, max) IS \n  VAR split = 1 IN \n    I"
 & "F \n      depth < max -> SKIP \n    | Ck, Pk := \n        Geometry.Dist"
 & "(a, d), \n        Geometry.Dist(a, b) + Geometry.Dist(b, c) + \n       "
 & " Geometry.Dist(c, d); \n      IF \n        Pk < MinDist OR (Pk - Ck) / "
 & "Pk < MaxRatio -> split := NIL \n      | SKIP \n      FI \n    FI; \n   "
 & " IF \n      split # NIL -> \n        VAR p1, p2, p3, p4, p5, Ck2, Pk2 I"
 & "N \n          p1, p2, p3, p4, p5 := Split(a, b, c, d); \n          Ck, "
 & "Pk := LengthAux(a, p1, p2, p3, depth + 1, max); \n          Ck2, Pk2 :="
 & " LengthAux(p3, p4, p5, d, depth + 1, max); \n          Ck, Pk := Ck + C"
 & "k2, Pk + Pk2 \n        END | SKIP \n    FI \n  END \nEND;\n\n/* Sets \""
 & "Ck\" and \"Pk\" to a lower- and upper-bound, respectively, \n   on the "
 & "length of the Bezier curve defined by the points \"a\", \n   \"b\", \"c"
 & "\", and \"d\". Recursion proceeds so long as the relative \n   differen"
 & "ce between the upper and lower bound is grea";

CONST E57_2 =
   "ter than \n   the constant \"Epsilon\". */\n\nPROC len := Length(a, b, "
 & "c, d) IS \n  VAR Ck, Pk IN \n    Ck, Pk := LengthAux(a, b, c, d, 0, 3);"
 & " len := (Ck + Pk) / 2 \n  END \nEND;\n\n(* Set \"len\" to an approximat"
 & "ion of the length (in points) of \n   the Bezier curve defined by the f"
 & "our points \"a\", \"b\", \"c\", \n   \"d\". *)\n\n";

CONST E58 =
   "MODULE Show;\n\n(* Procedures to display a single \n   line of text rel"
 & "ative to the \n   current point. All procedures in \n   this module req"
 & "uire that the \n   current point is defined. *)\n\nIMPORT PS;\n\nPROC L"
 & "(txt) IS \n  VAR p, w IN \n    p := PS.CurrentPoint(); \n    w := PS.St"
 & "ringWidth(txt); \n    PS.Type(p, txt); \n    PS.MoveTo((CAR(p) + w, CDR"
 & "(p))) \n  END \nEND;\n\nUI TextTool(L);\n\n(* Types \"txt\" left-justif"
 & "ied off \n   the current point, then moves \n   the current point to th"
 & "e right \n   by the width of \"txt\". *)\n\nPROC C(txt) IS \n  VAR p, w"
 & " IN \n    p := PS.CurrentPoint(); \n    w := PS.StringWidth(txt); \n   "
 & " PS.Type((CAR(p) - w / 2, CDR(p)), \n            txt) \n  END \nEND;\n\n"
 & "UI TextTool(C);\n\n(* Types \"txt\" centered about the \n   current poi"
 & "nt. This procedure \n   does not change the current \n   point. *)\n\nP"
 & "ROC R(txt) IS \n  VAR p, w IN \n    p := PS.CurrentPoint(); \n    w := "
 & "PS.StringWidth(txt); \n    p := (CAR(p) - w, CDR(p)); \n    PS.Type(p, "
 & "txt); \n    PS.MoveTo(p) \n  END \nEND;\n\nUI TextTool(R);\n\n(* Types "
 & "\"txt\" right-justified off \n   the current point, then moves \n   the"
 & " current point to the left\n   by the width of \"txt\". *)\n\n";

CONST E59 =
   "; Copyright (C) 1992, Digital Equipment Corporation                    "
 & "     \n; All rights reserved.                                          "
 & "            \n; See the file COPYRIGHT for a full description.         "
 & "                   \n;                                                 "
 & "                          \n; Last modified on Thu Jan 30 11:34:11 PST "
 & "1997 by heydon                   \n\n(Rim (Pen 5)\n  (Macro VGap () \'("
 & "Glue 5))\n  (Macro TypeinField BOA (label name tabTo (firstFocus FALSE)"
 & ")\n    `(HBox\n       (Shape (Width + 0) (Text ,label))\n       (Glue 2"
 & ")\n       (Frame Lowered (MyBrowserFont) (Shape (Width 120 + Inf)\n    "
 & "     (TypeIn %,name (TabTo ,tabTo) (BgColor \"White\")\n           (Fir"
 & "stFocus ,firstFocus))))))\n  (VBox\n    (TypeinField \"Name:\" animName"
 & " sliderPts TRUE)\n    (VGap)\n    (TypeinField \"Slider Points:\" slide"
 & "rPts animName)\n    (VGap)\n    (HBox Fill (Button %foldAsAnimOk \"  OK"
 & "  \") Fill))\n)\n";

CONST E60 =
   "MODULE Line;\n\n(* Procedures and predicates for \n   lines and line se"
 & "gments. *)\n\nIMPORT Geometry, PS;\n\n(* A line segment \"[a, b]\" is \n"
 & "   defined by its two endpoints \"a\" \n   and \"b\". *)\n\nPROC Draw(a"
 & ", b) IS \n  PS.MoveTo(a); PS.LineTo(b) \nEND;\n\nUI PointTool(Draw);\n\n"
 & "(* Add the line segment \"[a, b]\" to \n   the current path. The curren"
 & "t \n   point becomes \"b\". *)\n\nPRED On(p, a, b) IS \n  Geometry.Coli"
 & "near(a, p, b) \nEND;\n\nUI PointTool(On);\n\n(* The point \"p\" is on t"
 & "he line \n   \"[a, b]\". *)\n\n";

CONST E61 =
   "MODULE Unparse;\n\n(* Procedures for converting Juno values to texts *)"
 & "\n\nIMPORT Text;\n\nCONST DefaultNumPrec = 4;\n\nPRIVATE VAR prec := De"
 & "faultNumPrec - 1;\n\n(* This module maintains a current numeric precisi"
 & "on, \n   which is the precision it uses when unparsing \n   numbers. A "
 & "number\'s \"precision\" is defined to be its \n   number of significant"
 & " digits. *)\n\nPROC SetNumPrec(p) IS prec := p - 1 END;\n\nPROC p := Ge"
 & "tNumPrec() IS p := prec + 1 END;\n\nUI SetTool(SetNumPrec);\n\n(* Set/g"
 & "et the current numeric precision. *)\n\nUI Param(SetNumPrec, DefaultNum"
 & "Prec);\n\nUI Param(SetNumPrec, 0);\n\nUI Param(SetNumPrec, 1);\n\nUI Pa"
 & "ram(SetNumPrec, 2);\n\nUI Param(SetNumPrec, 3);\n\nUI Param(SetNumPrec,"
 & " 4);\n\nUI Param(SetNumPrec, 5);\n\nCONST DefaultBreakDepth = 0;\n\nPRI"
 & "VATE VAR breakDepth := DefaultBreakDepth;\n\n(* This module maintains a"
 & " list-breaking depth. *)\n\nPROC SetBreakDepth(d) IS breakDepth := d EN"
 & "D;\n\nPROC d := GetBreakDepth() IS d := breakDepth END;\n\nUI SetTool(S"
 & "etBreakDepth);\n\n(* Set/get the list break depth. *)\n\nUI Param(SetBr"
 & "eakDepth, DefaultBreakDepth);\n\nUI Param(SetBreakDepth, 0);\n\nUI Para"
 & "m(SetBreakDepth, 1);\n\nUI Param(SetBreakDepth, 2);\n\nUI Param(SetBrea"
 & "kDepth, 1000);\n\nPROC t := Point(p) IS \n  t := \n    \"(\" & Text.Fro"
 & "mNum(CAR(p), prec) & \", \" & \n    Text.FromNum(CDR(p), prec) & \")\" "
 & "\nEND;\n\n(* Return a textual representation of the point \"p\". It \n "
 & "  is a checked run-time error for \"p\" not to be a pair \n   of number"
 & "s. *)\n\nPROC t := Value(val) IS t := ValueToDepth(val, 0) END;\n\n(* S"
 & "et \"t\" to a textual representation of \"val\". By \n   default, \"t\""
 & " will not contain any added newline \n   characters. However, if \"val\""
 & " is a list and the \n   current list break depth is positive, then list"
 & " \n   elements nested to a depth up to the current list \n   break dept"
 & "h will be separated by newlines and enough \n   spaces so they will be "
 & "nicely formatted if rendered \n   in a fixed-width font using any of th"
 & "e procedures in \n   the \"TypeLinesL\" module. *)\n\nPRIVATE PROC t :="
 & " ValueToDepth(val, depth) IS \n  IF \n    val = ";

CONST E61_0 =
   "NIL -> t := \"NIL\" | TEXT(val) -> t := val \n  | REAL(val) -> t := Tex"
 & "t.FromNum(val, prec) \n  | PAIR(val) -> \n      IF \n        IsList(CDR"
 & "(val)) # NIL -> \n          t := ListVal(val, depth) | t := Pair(val) \n"
 & "      FI \n  FI \nEND;\n\nPRIVATE PROC res := IsList(v) IS \n  IF \n   "
 & " v = NIL -> res := 0 \n  | PAIR(v) -> res := IsList(CDR(v)) | res := NI"
 & "L \n  FI \nEND;\n\n/* Return non-NIL iff \"v\" is a list. */\n\nPRIVATE"
 & " PROC t := Pair(pr) IS \n  t := \n    \"(\" & ValueToDepth(CAR(pr), bre"
 & "akDepth) & \", \" & \n    ValueToDepth(CDR(pr), breakDepth) & \")\" \nE"
 & "ND;\n\n/* Return the textual representation of \"pr\", which is \n   kn"
 & "own to be a pair. */\n\nPRIVATE PROC t := ListVal(l, depth) IS \n  t :="
 & " \n    \"[\" & ValueToDepth(CAR(l), depth + 1) & \n    ListBody(CDR(l),"
 & " depth) & \"]\" \nEND;\n\n/* Return a textual representation of \"l\", "
 & "which is \n   known to be a list. */\n\nPRIVATE PROC t := ListBody(l, d"
 & "epth) IS \n  IF \n    l = NIL -> t := \"\" \n  | depth < breakDepth -> "
 & "\n      t := \n        \",\\n \" & Spaces(depth) & \n        ValueToDep"
 & "th(CAR(l), depth + 1) & \n        ListBody(CDR(l), depth) \n  | t := \n"
 & "      \", \" & ValueToDepth(CAR(l), depth) & \n      ListBody(CDR(l), d"
 & "epth) \n  FI \nEND;\n\nPRIVATE CONST SpacesStr = \"          \";\n\nPRI"
 & "VATE VAR spacesStrLen := Text.Length(SpacesStr);\n\nPRIVATE PROC t := S"
 & "paces(n) IS \n  t := \"\"; \n  DO \n    n > spacesStrLen -> \n      t :"
 & "= t & SpacesStr; n := n - spacesStrLen \n  OD; \n  t := t & Text.Sub(Sp"
 & "acesStr, 0, n) \nEND;\n\n/* Set \"t\" to a string of \"n\" spaces. */\n"
 & "\nPRIVATE VAR history := NIL;\n\nPROC Save() IS \n  history := ((prec, "
 & "breakDepth), history) \nEND;\n\nPROC Restore() IS \n  VAR head IN \n   "
 & " head := CAR(history); \n    prec := CAR(head); \n    breakDepth := CDR"
 & "(head) \n  END; \n  history := CDR(history) \nEND;\n\nUI PointTool(Save"
 & ");\n\nUI PointTool(Restore);\n\n(* Save/restore the current state of th"
 & "is module. *)\n\n";

CONST E62 =
   "MODULE PtLabel;\n\n(* Module for annotating points in a \n   drawing fo"
 & "r inclusion in figures. *)\n\nIMPORT R2, PS, Circle;\n\nCONST DefaultDo"
 & "tSize = 2;\n\nPRIVATE VAR dotSize := DefaultDotSize;\n\n(* This module "
 & "maintains a ``current \n   dot size\'\', which is the radius of \n   th"
 & "e dot drawn to label a point. The \n   dot size is measured in points. "
 & "*)\n\nPROC SetDotSize(sz) IS \n  dotSize := sz \nEND;\n\nUI SetTool(Set"
 & "DotSize);\n\n(* Set the current dot size to \"sz\". *)\n\nUI Param(SetD"
 & "otSize, DefaultDotSize);\n\nUI Param(SetDotSize, 0);\n\nUI Param(SetDot"
 & "Size, 0.5);\n\nUI Param(SetDotSize, 1);\n\nUI Param(SetDotSize, 1.5);\n"
 & "\nUI Param(SetDotSize, 2);\n\nUI Param(SetDotSize, 2.5);\n\nUI Param(Se"
 & "tDotSize, 3);\n\nUI Param(SetDotSize, 4);\n\nUI Param(SetDotSize, 5);\n"
 & "\nPROC sz := GetDotSize() IS \n  sz := dotSize \nEND;\n\n(* Set \"sz\" "
 & "to the current dot size. *)\n\nCONST DefaultOffset = 5;\n\n(* This modu"
 & "le maintains a label \n   offset, which is the size in points \n   of a"
 & "ny extra horizontal and \n   vertical space inserted between a \n   poi"
 & "nt and its label. *)\n\nPRIVATE VAR \n  horOffset := DefaultOffset, \n "
 & " verOffset := DefaultOffset;\n\n/* The current label offset. We \n   ma"
 & "intain both a horizontal and \n   vertical offset in case we want to \n"
 & "   generalize the interface to make a \n   distinction between them in "
 & "the \n   future. */\n\nPROC SetOffset(sz) IS \n  horOffset := sz; verOf"
 & "fset := sz \nEND;\n\nUI SetTool(SetOffset);\n\n(* Set the current label"
 & " offset to \n   \"sz\" points. *)\n\nUI Param(SetOffset, DefaultOffset)"
 & ";\n\nUI Param(SetOffset, 0);\n\nUI Param(SetOffset, 2);\n\nUI Param(Set"
 & "Offset, 4);\n\nUI Param(SetOffset, 6);\n\nUI Param(SetOffset, 8);\n\nUI"
 & " Param(SetOffset, 10);\n\nPROC sz := GetOffset() IS \n  sz := horOffset"
 & " \nEND;\n\n(* Set \"sz\" to the current label \n   offset in points. *)"
 & "\n\nPRIVATE PROC DrawDot(p) IS \n  IF \n    dotSize > 0 -> \n      Circ"
 & "le.Draw(p, \n                  R2.Plus(p, \n                          ("
 & "dotSize, 0))); \n      PS.Fill() | SKIP \n  FI \nEND;\n\n/* Draw a roun"
 & "d dot with diameter \n   \"dotSize\" at the point \"p\". This \n  ";

CONST E62_0 =
   " procedure does not preserve the \n   PostScript state. */\n\nPROC None"
 & "(p) IS \n  SAVE PS IN DrawDot(p) END \nEND;\n\n(* Draw a dot at \"p\" i"
 & "n the current \n   dot size. *)\n\nUI PointTool(None);\n\nPROC SW(p, tx"
 & "t) IS \n  SAVE PS IN \n    DrawDot(p); \n    VAR asc, dec, w IN \n     "
 & " asc, dec := PS.FontHeight(); \n      w := PS.StringWidth(txt); \n     "
 & " PS.Type(R2.Minus(p, \n                       (w + horOffset, \n       "
 & "                 asc)), txt) \n    END \n  END \nEND;\n\nPROC NW(p, txt"
 & ") IS \n  SAVE PS IN \n    DrawDot(p); \n    VAR asc, dec, w IN \n      "
 & "asc, dec := PS.FontHeight(); \n      w := PS.StringWidth(txt); \n      "
 & "PS.Type(R2.Plus(p, \n                      (-w - horOffset, \n         "
 & "              dec + verOffset)), \n              txt) \n    END \n  END"
 & " \nEND;\n\nPROC SE(p, txt) IS \n  SAVE PS IN \n    DrawDot(p); \n    VA"
 & "R asc, dec IN \n      asc, dec := PS.FontHeight(); \n      PS.Type(R2.P"
 & "lus(p, \n                      (verOffset, -asc)), \n              txt)"
 & " \n    END \n  END \nEND;\n\nPROC NE(p, txt) IS \n  SAVE PS IN \n    Dr"
 & "awDot(p); \n    VAR asc, dec IN \n      asc, dec := PS.FontHeight(); \n"
 & "      PS.Type(R2.Plus(p, \n                      (horOffset, \n        "
 & "               verOffset + dec)), \n              txt) \n    END \n  EN"
 & "D \nEND;\n\nPROC East(p, txt) IS \n  SAVE PS IN \n    DrawDot(p); \n   "
 & " VAR asc, dec IN \n      asc, dec := PS.FontHeight(); \n      PS.Type(R"
 & "2.Plus(p, \n                      (2 * horOffset, \n                   "
 & "    (dec - asc) / 2)), \n              txt) \n    END \n  END \nEND;\n\n"
 & "PROC West(p, txt) IS \n  SAVE PS IN \n    DrawDot(p); \n    VAR asc, de"
 & "c, w IN \n      w := PS.StringWidth(txt); \n      asc, dec := PS.FontHe"
 & "ight(); \n      PS.Type(R2.Plus(p, \n                      (-w - \n    "
 & "                   2 * horOffset, \n                       (dec - asc) "
 & "/ 2)), \n              txt) \n    END \n  END \nEND;\n\nPROC North(p, t"
 & "xt) IS \n  SAVE PS IN \n    DrawDot(p); \n    VAR asc, dec, w IN \n    "
 & "  w := PS.StringWidth(txt); \n      asc, dec := PS.FontHeight(); \n    "
 & "  PS.Type(R2.Plus(p, \n                  ";

CONST E62_1 =
   "    (-w / 2, \n                       dec + verOffset)), \n            "
 & "  txt) \n    END \n  END \nEND;\n\nPROC South(p, txt) IS \n  SAVE PS IN"
 & " \n    DrawDot(p); \n    VAR asc, dec, w IN \n      w := PS.StringWidth"
 & "(txt); \n      asc, dec := PS.FontHeight(); \n      PS.Type(R2.Plus(p, "
 & "\n                      (-w / 2, \n                       -asc - verOff"
 & "set)), \n              txt) \n    END \n  END \nEND;\n\nUI TextTool(SW)"
 & ";\n\nUI TextTool(NW);\n\nUI TextTool(SE);\n\nUI TextTool(NE);\n\nUI Tex"
 & "tTool(East);\n\nUI TextTool(West);\n\nUI TextTool(North);\n\nUI TextToo"
 & "l(South);\n\n(* Draw a dot at \"p\" with label \"txt\". \n   The dot is"
 & " drawn in the current dot \n   size. In each case, the name of the \n  "
 & " procedure indicates the location of \n   the label relative to the dot"
 & ". Both \n   the dot and the label are drawn in \n   the current color. "
 & "*)\n\nPRIVATE VAR history := NIL;\n\nPROC Save() IS \n  history := \n  "
 & "  ([dotSize, horOffset, verOffset], \n     history) \nEND;\n\nPROC Rest"
 & "ore() IS \n  VAR head IN \n    head := CAR(history); \n    dotSize := C"
 & "AR(head); \n    horOffset := CAR(CDR(head)); \n    verOffset := CAR(CDR"
 & "(CDR(head))) \n  END; \n  history := CDR(history) \nEND;\n\nUI PointToo"
 & "l(Save);\n\nUI PointTool(Restore);\n\n(* Save/restore the current dot s"
 & "ize and offsets. \n*)\n\n";

CONST E63 =
   "(Rim\n  (BgColor \"White\")\n  (Pen 10)\n  (VBox\n    (Pixmap \"Juno2Lo"
 & "go.ppm\")\n    (Glue 5)\n    (Text %version \"\")\n    \"By Allan Heydo"
 & "n and Greg Nelson\"\n    (Glue 5)\n    (Bar 1)\n    (Glue 5)\n    \"htt"
 & "p://www.research.digital.com/SRC/juno-2/\"\n    \"Please send comments "
 & "to gnelson@pa.dec.com\"\n    (Glue 5)\n    (Pixmap \"CompaqLogo.ppm\")\n"
 & "    (Text \"Systems Research Center\")\n  )\n)\n";

CONST E64 =
   "MODULE Circle;\n\n(* Procedures and predicates for \n   circles. *)\n\n"
 & "IMPORT Math, R2, PS;\n\n(* QUARTER CIRCLES *)\n\n(* A quarter circle is"
 & " defined by its \n   center of curvature \"a\", the \n   current point,"
 & " and a direction \n   (clockwise or counter-clockwise). *)\n\nPRIVATE C"
 & "ONST K = 0.5519149706;\n/* This constant is used to position the contro"
 & "l\n   points for drawing a quarter circle. It was\n   provided by Lyle "
 & "Ramshaw. It produces a Bezier\n   curve approximation to a true quarter"
 & " circle that\n   coincides with the circle at the endpoints and at\n   "
 & "two other points. The Bezier curve starts and ends\n   going outside th"
 & "e circle, but the midpoint of the\n   curve is inside the circle. The w"
 & "orst relative error\n   between the curve and the constant is slightly "
 & "less\n   than 2 parts in 10,000. */\n\nPROC DrawQuarter(a) IS \n  VAR b"
 & " IN \n    b := PS.CurrentPoint(); \n    IF \n      VAR \n        c = (1"
 & ", -K) REL (a, b), \n        d = (K, -1) REL (a, b), \n        e = (0, -"
 & "1) REL (a, b) \n      IN \n        PS.CurveTo(c, d, e) \n      END \n  "
 & "  FI \n  END \nEND;\n\nPROC DrawQuarterCC(a) IS \n  VAR b IN \n    b :="
 & " PS.CurrentPoint(); \n    IF \n      VAR \n        c = (1, K) REL (a, b"
 & "), \n        d = (K, 1) REL (a, b), \n        e = (0, 1) REL (a, b) \n "
 & "     IN \n        PS.CurveTo(c, d, e) \n      END \n    FI \n  END \nEN"
 & "D;\n\nUI PointTool(DrawQuarter);\nUI PointTool(DrawQuarterCC);\n\n(* Ad"
 & "d a clockwise or \n   counter-clockwise quarter-circle, \n   respective"
 & "ly, to the current path. \n   In each case, the quarter-circle \n   sta"
 & "rts at the current point and has \n   center \"a\". *)\n\n(* CIRCLES *)"
 & "\n\n(* A circle \"[a, b]\" is defined by its \n   center \"a\" and a po"
 & "int \"b\" on the \n   circle. *)\n\nPROC Draw(a, b) IS \n  IF \n    VAR"
 & " \n      c ~ (0, -1) REL (a, b), \n      d ~ (-1, 0) REL (a, b), \n    "
 & "  e ~ (0, 1) REL (a, b) \n    IN \n      PS.MoveTo(b); \n      DrawQuar"
 & "ter(a); \n      DrawQuarter(a); \n      DrawQuarter(a); \n      DrawQua"
 & "rter(a); \n      PS.Close() \n    END \n  FI \nEND;\n\nPROC DrawCC(a, b"
 & ") IS \n  IF \n    VAR \n      c ~ (0, 1) RE";

CONST E64_0 =
   "L (a, b), \n      d ~ (-1, 0) REL (a, b), \n      e ~ (0, -1) REL (a, b"
 & ") \n    IN \n      PS.MoveTo(b); \n      DrawQuarterCC(a); \n      Draw"
 & "QuarterCC(a); \n      DrawQuarterCC(a); \n      DrawQuarterCC(a); \n   "
 & "   PS.Close() \n    END \n  FI \nEND;\n\nUI PointTool(Draw);\nUI PointT"
 & "ool(DrawCC);\n\n(* Add a clockwise or\n   counter-clockwise circle \"[a"
 & ", b]\", \n   respectively, to the current path. \n   The current point "
 & "becomes \"b\". *)\n\nPROC DrawR(c, rad) IS\n  Draw(c, R2.PlusX(c, rad))"
 & "\nEND;\n\nPROC DrawCCR(c, rad) IS\n  DrawCC(c, R2.PlusX(c, rad))\nEND;\n"
 & "\n(* Add a clockwise or counter-clockwise circle,\n   respectively, wit"
 & "h center point \"c\" and a\n   radius of \"r\" points to the current pa"
 & "th. *)\n\nPRED On(p, a, b) IS \n  (a, p) CONG (a, b) \nEND;\n\nUI Point"
 & "Tool(On);\n\n(* The point \"p\" is on the circle \"[a, \n   b]\". *)\n\n"
 & "PRIVATE FUNC r2 = Dist2(a, b) IS \n  (E ax, ay, bx, by, dx, dy :: \n   "
 & " a = (ax, ay) AND \n    b = (bx, by) AND \n    dx = ax - bx AND \n    d"
 & "y = ay - by AND \n    r2 = dx * dx + dy * dy) \nEND;\n\n/* \"r2\" is th"
 & "e square of the distance \n   between the points \"a\" and \"b\". */\n\n"
 & "FUNC res = Area(a, b) IS \n  res = Math.Pi * Dist2(a, b) \nEND;\n\n(* \""
 & "res\" is the area of the circle \n   \"[a, b]\". *)\n\n";

CONST E65 =
   "MODULE TextList;\n\n(* Procedures for managing lists of \n   texts. *)\n"
 & "\nIMPORT PS, Text, LineSkip;\n\nPRIVATE CONST BigInt = 1e6;\n\nPRIVATE "
 & "VAR \n  LineBreakChar := Text.GetChar(\"\\n\", 0);\n\nPROC l := FromTex"
 & "t(t) IS \n  VAR i IN \n    i := Text.FindChar(t, LineBreakChar); \n    "
 & "IF \n      i = -1 -> l := [t] \n    | l := \n        (Text.Sub(t, 0, i)"
 & ", \n         FromText(Text.Sub(t, \n                           i + 1, \n"
 & "                           BigInt))) \n    FI \n  END \nEND;\n\n(* Sets"
 & " \"l\" to the list of \n   \'\\n\'-separated texts in \"t\". For \n   e"
 & "xample: \n\n|  FromText(\"abc\") => [\"abc\"]\n|  FromText(\"abc\\ndef\""
 & ") => [\"abc\", \"def\"]\n|  FromText(\"a\\n\\nd\\n\") => [\"a\", \"\", "
 & "\"d\", \"\"]\n\n   A checked run-time error occurs \n   if \"t\" is not"
 & " a text. *)\n\nPROC w, h := Size(l) IS \n  VAR len IN \n    len := 0; \n"
 & "    w := 0; \n    DO \n      l # NIL -> \n        w := \n          MAX("
 & "w, \n          PS.StringWidth(CAR(l))); \n        len := len + 1; \n   "
 & "     l := CDR(l) \n    OD; \n    VAR asc, dec IN \n      asc, dec := PS"
 & ".FontHeight(); \n      h := \n        len * (asc + dec) + \n        (le"
 & "n - 1) * LineSkip.Get() \n    END \n  END \nEND;\n\n(* Set \"w\" and \""
 & "h\" to the width and \n   height, respectively, of the \n   bounding bo"
 & "x of the text lines \n   \"l\" printed as by the \n   \"TypeLinesL\" pr"
 & "ocedures in the \n   current font with the current \n   line skip (as m"
 & "aintained by the \n   \"LineSkip\" module. *)\n\nPROC w, h := SizeNoSki"
 & "p(l) IS \n  SAVE LineSkip IN \n    LineSkip.Set(0); w, h := Size(l) \n "
 & " END \nEND;\n\n(* Line \"Size\" above, but uses a \n   line skip value "
 & "of 0. *)\n\n";

CONST E66 =
   "MODULE Outline;\n\nIMPORT Offset, Text, PS, R2, Circle, Show, TextList,"
 & " Type;\n\nIMPORT TypeLinesC, TypeLinesL, TypeLinesR;\n\nPRIVATE VAR nor"
 & "th, south, east, west;\n\n(* This module maintains a \"current bounding"
 & " box\", which other \n   procedures in the module use to locate the par"
 & "ts of the \n   outline. The bounding box is set by the \"Start\" proced"
 & "ure \n   below. *)\n\n/* These four numerc variables determine the curr"
 & "ent bounding box \n   for the outline. */\n\nCONST TopMDefault = 30, Le"
 & "ftMDefault = 20;\n\nPRIVATE VAR TopM := TopMDefault, LeftM := LeftMDefa"
 & "ult;\n\n(* This module maintains a top and left margin, which specify h"
 & "ow \n   much below and to the right of the northwest corner of the \n  "
 & " bounding box the current point should be positioned at the \n   start "
 & "of each outline. *)\n\nPROC SetTopM(val) IS TopM := val END;\n\nPROC Se"
 & "tLeftM(val) IS LeftM := val END;\n\nUI SetTool(SetTopM);\n\nUI SetTool("
 & "SetLeftM);\n\n(* Set the current top/left margin to \"val\". *)\n\nUI P"
 & "aram(SetTopM, TopMDefault);\n\nUI Param(SetTopM, 0);\n\nUI Param(SetTop"
 & "M, 15);\n\nUI Param(SetTopM, 30);\n\nUI Param(SetTopM, 45);\n\nUI Param"
 & "(SetLeftM, LeftMDefault);\n\nUI Param(SetLeftM, 0);\n\nUI Param(SetLeft"
 & "M, 10);\n\nUI Param(SetLeftM, 20);\n\nUI Param(SetLeftM, 30);\n\nPRIVAT"
 & "E CONST LeftMargin = 15;\n\nPROC Start(corner1, corner2) IS \n  IF \n  "
 & "  VAR x1, y1, x2, y2 IN \n      corner1 = (x1, y1) AND corner2 = (x2, y"
 & "2) -> \n        north := MAX(y1, y2); \n        south := MIN(y1, y2); \n"
 & "        east := MAX(x1, x2); \n        west := MIN(x1, x2); \n        P"
 & "S.MoveTo((west + LeftM, north - TopM)) \n    END \n  FI \nEND;\n\nUI Po"
 & "intTool(Start);\n\n(* Set the current bounding box so \"corner1\" and \""
 & "corner2\" are its \n   opposite corners and set the current point accor"
 & "ding to the \n   current top and left margin values. This procedure mus"
 & "t be \n   called before any calls to the other procedures in this modul"
 & "e. \n*)\n\nPROC Center(txt) IS \n  VAR w, h, pt IN \n    w, h := TextLi"
 & "st.Size(TextList.FromText(txt)); \n    pt := PS.CurrentPoint(); \n    T"
 & "ypeLinesC.North(((west + east) ";

CONST E66_0 =
   "/ 2, CDR(pt)), txt); \n    PS.MoveTo(R2.Plus(pt, (0, -h))) \n  END \nEN"
 & "D;\n\nUI TextTool(Center);\n\n(* Center \"txt\" horzontally in the curr"
 & "ent bounding box so its \n   north edge is horizontal with the current "
 & "point, and advance \n   the current point down by the height of the tex"
 & "t. The text is \n   rendered in the current font face and size. If \"tx"
 & "t\" contains \n   \"\\n\" characters, the lines are typeset as a block."
 & " *)\n\nPROC SkipTo(p) IS \n  VAR curr IN \n    curr := PS.CurrentPoint("
 & "); PS.MoveTo((CAR(curr), CDR(p))) \n  END \nEND;\n\nUI PointTool(SkipTo"
 & ");\n\n(* Set the current point to the point horizontal with \"p\" and \n"
 & "   vertical with the current point. *)\n\nVAR InterpointSkip := (1.1, 0"
 & ");\n\nVAR IntersubpointSkip := (0.3, 0);\n\n(* If the InterpointSkip is"
 & " \"(k, d)\", then the gap before each new \n   outermost item will be k"
 & "*fs+d, where fs is the font point size. \n   The IntersubpointSkip is i"
 & "nterpreted similarly, but applies \n   after subpoints (of any level). "
 & "*)\n\nPRIVATE CONST TabChar = Text.GetChar(\"\\t\", 0);\n\n/* TabChar ="
 & " \'\\t\'. It is the character that users type to indent \n   subitems o"
 & "f the outline. */\n\nPRIVATE CONST TabRatio = 1;\n\n/* TabRatio is the "
 & "ratio between the pointsize of the font and the \n   amount by which su"
 & "bpoints are indented. */\n\nPRIVATE PROC (i, dx, dy):ProcessIndent(txt)"
 & " IS \n  VAR lineskip = InterpointSkip IN \n    DO \n      i < Text.Leng"
 & "th(txt) AND Text.GetChar(txt, i) = TabChar -> \n        dx := dx + PS.G"
 & "etFontPtSize() * TabRatio; \n        i := i + 1; \n        lineskip := "
 & "IntersubpointSkip \n    OD; \n    dy := dy - (PS.GetFontPtSize() * CAR("
 & "lineskip) + CDR(lineskip)) \n  END \nEND;\n\nPRIVATE CONST BulletChar ="
 & " Text.GetChar(\"*\", 0);\n\n/* \"BulletChar\" is the character typed to"
 & " get a bullet on a point. \n   If the next character is \'o\', the resu"
 & "lt will be a black \n   circle. If the next character is \'-\', the res"
 & "ult will be an em \n   dash. Otherwise the next character will be the b"
 & "ullet. */\n\nPRIVATE PROC i:ProcessBullet(txt, dx, dy) IS \n  IF \n    "
 & "i + 1 < Text.Length(txt) AND ";

CONST E66_1 =
   "Text.GetChar(txt, i) = BulletChar -> \n      DrawBullet(Text.GetChar(tx"
 & "t, i + 1), dx, dy); i := i + 2 \n  | SKIP \n  FI \nEND;\n\nPRIVATE CONS"
 & "T DotChar = 183, DashChar = Text.GetChar(\"_\", 0);\n\nPRIVATE PROC Dra"
 & "wBullet(ch, dx, dy) IS \n  VAR bullet, yfudge, p, w IN \n    IF \n     "
 & " ch = Text.GetChar(\"o\", 0) -> bullet := DotChar; yfudge := 0 \n    | "
 & "ch = Text.GetChar(\"-\", 0) -> \n        bullet := DashChar; yfudge := "
 & "0.45 * PS.GetFontPtSize() \n    | bullet := ch; yfudge := 0 \n    FI; \n"
 & "    p := PS.CurrentPoint(); \n    w := PS.StringWidth(\" \"); \n    p :"
 & "= R2.Plus(p, (dx - w, dy + yfudge)); \n    DrawDot(p, bullet) \n  END \n"
 & "END;\n\nPRIVATE PROC DrawDot(p, ch) IS \n  IF \n    ch = DotChar -> \n "
 & "     VAR asc, dec, w IN \n        asc, dec := PS.FontHeight(); \n      "
 & "  w := PS.StringWidth(\"i\"); \n        FilledCirc(R2.Minus(p, (w / 2, "
 & "0.65 * asc)), asc / 8) \n      END | TypeLinesR.NE(p, Text.FromChar(ch)"
 & ") \n  FI \nEND;\n\nPRIVATE PROC FilledCirc(p, rad) IS \n  SAVE PS IN Ci"
 & "rcle.Draw(p, R2.Plus(p, (rad, 0))); PS.Fill() END \nEND;\n\nPRIVATE PRO"
 & "C (i, dx, dy):ProcessBody(txt) IS \n  VAR suffix IN \n    suffix := Tex"
 & "t.Sub(txt, i, 9999); \n    TypeLinesL.NW(R2.Plus(PS.CurrentPoint(), (dx"
 & ", dy)), suffix); \n    VAR width, height IN \n      width, height := Te"
 & "xtList.Size(TextList.FromText(suffix)); \n      dy := dy - height \n   "
 & " END \n  END \nEND;\n\nPROC Item(txt) IS \n  SAVE Offset IN \n    Offse"
 & "t.SetHorVer(0, 0); \n    VAR i = 0, dx = 0, dy = 0 IN \n      (i, dx, d"
 & "y):ProcessIndent(txt); \n      (i):ProcessBullet(txt, dx, dy); \n      "
 & "(i, dx, dy):ProcessBody(txt); \n      PS.MoveTo(R2.Plus(PS.CurrentPoint"
 & "(), (0, dy)))\n    END \n  END \nEND;\n\nUI TextTool(Item);\n\n(* Displ"
 & "ay \"txt\" as an item or sub-item. If \"txt\" begins with a \n   tab (\""
 & "\\t\") character, then the remaining characters are \n   displayed as a"
 & " sub-item. Otherwise, all of \"txt\" is displayed \n   as an item. \n\n"
 & "   If \"txt\" is displayed as an item, the current point is first \n   "
 & "moved down according to the current value of \"InterpointSkip\". \n   T"
 & "he item is then processed as de";

CONST E66_2 =
   "scribed below. \n\n   If \"txt\" is displayed as a sub-item, then the c"
 & "urrent point is \n   first moved down according to the current value of"
 & " \n   \"IntersubpointSkip\". The sub-item is then processed as \n   des"
 & "cribed below, but indented by a fixed amount. \n\n   If the leading cha"
 & "racter of an item or sub-item is an asterisk \n   (\"*\"), then the ite"
 & "m or sub-item will be bulleted. The next \n   character determines the "
 & "kind of bullet: if it is a small oh \n   (\"o\"), the bullet is a fille"
 & "d round dot; if it is a dash (\"-\"), \n   the bullet is a dash; if it "
 & "is any other character, that \n   character serves as the bullet. The b"
 & "ullet is outdented to the \n   left, so that the left edges of bulleted"
 & " and unbulleted items \n   will be aligned. \n\n   Within an item, newl"
 & "ine (\"\\n\") characters cause line breaks. \n   Each new line is left-"
 & "justified with the text of the first line \n   of the item. *)\n\nPRIVA"
 & "TE PROC (i, dx, dy):ProcessBodyCL(txt, cl) IS \n  VAR suffix IN \n    s"
 & "uffix := Text.Sub(txt, i, 9999); \n    SAVE PS IN\n      VAR asc, dec I"
 & "N\n        asc, dec := PS.FontHeight();\n        PS.MoveTo(R2.Plus(PS.C"
 & "urrentPoint(), (dx, dy-asc)))\n      END; \n      Show.L(suffix); \n   "
 & "   APPLY(cl) \n    END; \n    VAR width, height IN \n      width, heigh"
 & "t := TextList.Size(TextList.FromText(suffix)); \n      dy := dy - heigh"
 & "t \n    END \n  END \nEND;\n\nPROC ItemCL(txt, cl) IS \n  SAVE Offset I"
 & "N \n    Offset.SetHorVer(0, 0); \n    VAR i = 0, dx = 0, dy = 0 IN \n  "
 & "    (i, dx, dy):ProcessIndent(txt); \n      (i):ProcessBullet(txt, dx, "
 & "dy); \n      (i, dx, dy):ProcessBodyCL(txt, cl); \n      PS.MoveTo(R2.P"
 & "lus(PS.CurrentPoint(), (0, dy)))\n    END \n  END \nEND;\n\n(* Like \"I"
 & "tem\" above, but newlines are not recognized in \"txt\", \n   and after"
 & " \"txt\" is rendered, \"cl\" is applied with the current \n   point set"
 & " just after the rendered \"txt\". *)\n\n";

CONST E67 =
   "P6\n# CREATOR: XV Version 3.10  Rev: 12/16/94\n275 86\n255\n\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000";

CONST E67_0 =
   "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377";

CONST E67_1 =
   "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377";

CONST E67_2 =
   "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000";

CONST E67_3 =
   "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377";

CONST E67_4 =
   "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377";

CONST E67_5 =
   "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U";

CONST E67_6 =
   "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377";

CONST E67_7 =
   "U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\377\377U\377\377\000\377\377U\377\377U"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\000\000\377\000\000\377\000\000\377\000\000\377\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377";

CONST E67_8 =
   "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\000\000\377"
 & "\000\000\377\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377"
 & "U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\000\000\377\000\000\377\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\377\377\000\377\377\000\377\377U\377\377U\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\000\000\377\000\000\377\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\000\000\377\000\000\377\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\377\377\000\377\377U\377\377U\377\377U"
 & "\377\377\000\377\377U\377\377U\377\377U\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\377\377U\377\377\000\377\377U\377\377U"
 & "\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377";

CONST E67_9 =
   "\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\000\000\377\377\000\377\377U\377\377\000\377\377U"
 & "\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\000\000\377\000\000\377\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\000\000\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\000\000\377\000\000"
 & "\377\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377\000\377\377U\377\377\000\377\377U"
 & "\377\377\000\377\000\000\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\000\000\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\000\000\377\000\000"
 & "\377\000\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\000\000\377"
 & "\000\000\377\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\000\000\377\000\000\377\000\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\377\377U\377\377\000\377\377\000\377\377U\377\377U"
 & "\377\377\000\377\377\000\377\377U\000\000\377\000\000\377\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377\000\377\377\000\377\377U\377\000\000\377\000\000"
 & "\377\000\000\377\377U\377\377U\377\377\000\377\377\000\377\377\000\377\377"
 & "U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\000\000\377\000\000\377\000\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377\000\377\377\000\377\377U\377\377U"
 & "\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377"
 & "U\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\377\377U\377\377U\377\377\000\377\377U"
 & "\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\000\000\377\000\000"
 & "\377\000\000\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\000\000\377\000\000\377\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377U\377\377\000\377\000\000\377\000\000\377"
 & "\000\000\377\377\000\377\377U\377\377U\377\377U\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\000\000\377\000\000\377\377\377U\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\000\000\377\000\000\377\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377U\377\377U\377\377U\377\377\000\377\000\000\377\000\000"
 & "\377\000\000\377\377";

CONST E67_10 =
   "\000\377\377U\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377U\377\377\000\377\000\000\377\000\000\377\000\000"
 & "\377\377\000\377\377U\377\377U\377\377U\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\000\000\377\000\000\377\377\377\000\377\377U"
 & "\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\377\000\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\000\000\377\000\000\377\377\377U\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\000\000\377\000\000\377\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\377\000\377\377U\377\377\000\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377\000\377\377U\377\377\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\377\000\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\377\377U\377\377U\377\377\000\377\377\000\377\377"
 & "U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\000\000\377\000\000\377\377\377\000\377\377U\377\377U"
 & "\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\377\000\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\000\000\377\000\000\377\377\377U\377\377U\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\377\377\000\377\377\000\377\377U\377\377U\377\377\000\000\000\377\000"
 & "\000\377\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377U\377\377U\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\377\000\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377"
 & "U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
 & "\377\000\377\377U\377\377U\377";

CONST E67_11 =
   "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\000\000\377\000\000"
 & "\377\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377U\377\377\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\000\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\000\000\377\000\000\377\377\377\000"
 & "\377\377U\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\000\000\377\000\000\377\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\377\000\377\377U\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377U"
 & "\377\377\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\000\000\377\000\000\377\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\000\000\377\000\000\377\377\377U\377"
 & "\377\000\377\377U\377\377\000\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\377\377\000\377\377U\377\377\000"
 & "\377\377U\000\000\377\000\000\377\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\377U\377\377\000\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377\000\377\377U\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\000\000\377\000\000\377\000\000\377"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\000\000\377\000\000\377\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377U\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\377\000\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U";

CONST E67_12 =
   "\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\000\000"
 & "\377\000\000\377\377\377\000\377\377\000\377\377U\377\377U\377\377\000\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\377\377\000\377\377\000\377\377U\000\000\377\000\000\377\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377U\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\377\000\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\000\000\377\000\000\377\000\000\377\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\000\000\377\000\000\377\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\000\000\377\000\000\377\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\377\377U\377\377\000\000\000\377\000\000\377\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\000\000\377\000\000\377\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\000\000\377\000\000\377\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\000\000\377\000\000\377\377\377U\377\377\000\377\377U"
 & "\377\377\000\377\377U\377\377\000\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\000\000"
 & "\377\000\000\377\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\000\000\377\000\000\377\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377";

CONST E67_13 =
   "U\377\377\000\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
 & "U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\377\377U\377\377\000\377\377\000\377\377U\377\377U"
 & "\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377"
 & "U\000\000\377\000\000\377\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\000\000\377\000\000\377\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\377\377\000\000\000\377\000\000"
 & "\377\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\000\000\377\000\000\377\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "U\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\000\000\377\000\000\377\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377U\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377U\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U"
 & "\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\000\000"
 & "\377\000\000\377\000\000\377\000";

CONST E67_14 =
   "\000\377\000\000\377\000\000\377\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\000\000\377\000\000\377\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\377U\377\377\000\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\000\000\377\000\000\377\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377\000\377\377U\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U"
 & "\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\000\000\377\000\000\377\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\377\000\377\377\000\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\000\000\377\000\000\377\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\000\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\377\000\377\377\000\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\000\000\377\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377U\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\377U\377\377U\377\377U\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\000\000\377\000\000\377\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377U\377\377U\377\377U\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\377U\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\000\000\377\000\000\377\000\000"
 & "\377\000\000\377";

CONST E67_15 =
   "\000\000\377\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377U\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\377U\377\377U\377\377U\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\377\377U\377\377U\377\377\000\377\377U"
 & "\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\000\000\377\000\000\377\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\377\000\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\000\000\377\000\000\377\377\377U\377\377\000\377\377U"
 & "\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377\000\377\377U\377\377\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\000\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\377\377U\377\377\000\377\377U\377\377\000\377\377U"
 & "\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\377\000\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\000\000"
 & "\377\000\000\377\000\000\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\000\000\377"
 & "\000\000\377\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\000\000\377\000\000\377\000\000\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\000\000"
 & "\377\000\000\377\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377U\377\377U\377\377\000\377\000\000\377\000"
 & "\000\377\000\000\377\377\000\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377\000\377\377"
 & "U\377\377U\377\377\000\377\000\000\377\000\000\377\000\000\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\000\000\377"
 & "\000\000\377\000\000\377\000\000";

CONST E67_16 =
   "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\000\000\377\000\000\377\000\000\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\000\000\377\000\000"
 & "\377\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\000\000\377\000\000\377\000\000\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\000\000\377\000\000\377\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\000\000\377\000\000\377\000\000\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\000\000\377\000\000\377\000\000\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\377\377U\377\377U\377\377\000\377\377U"
 & "\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\000\000\377\377\000\377\377U"
 & "\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\000\000\377\000\000\377\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\000\000\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\000\000\377\000\000\377\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\000\000"
 & "\377\000\000\377\000\000\377\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377\000\377\377U\377\377\000\377\000\000\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\000\000\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\377\377U\377\377\000\377\377\000\377\377"
 & "U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\000\000\377\000\000\377\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377";

CONST E67_17 =
   "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377\000\377\377"
 & "U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\377\377U\377\377U\377\377\000\377\377U"
 & "\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\000\000\377\000\000\377\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\377\377U\377\377\000\377\377U\377\377\000\377\377U"
 & "\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\377\377U\377\377\000\377\377U\377\377\000\377\377U"
 & "\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\000\000\000";

CONST E67_18 =
   "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377";

CONST E67_19 =
   "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377";

CONST E67_20 =
   "\377U\377\377U\377\377\000\377\377U\377\377U\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\000"
 & "\000\377\000\000\377\000\000\377\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\000\000\377\000\000\377\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\000\000\000\000\000\000\000\000\000\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\000\000\000\000"
 & "\000\000\000\000\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377"
 & "U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\000"
 & "\000\000\000\000\000\000\000\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\000\000\377\000\000\377"
 & "\000\000\377\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377"
 & "U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\000\000\377\000\000\377\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U";

CONST E67_21 =
   "\377\377U\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\000\000\377\000\000\377\000\000\377\377\377U"
 & "\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\000\000"
 & "\377\000\000\377\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U"
 & "\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\377\377U\377\377\000\377\377U\377\377\000\377\377U"
 & "\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\000\000\377\000\000\377\000\000\377\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\000\000\377\000\000\377\000\000\377\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377";

CONST E67_22 =
   "U\377\377U\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\000\000\377\000\000\377\000\000\377\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\377\377U\377\377U\377\377\000\377\377U"
 & "\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\000"
 & "\000\377\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U"
 & "\377\377\000\377\377U\377\377\000\377\377U\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\377\377U\377\377\000\377\377\000\377";

CONST E67_23 =
   "\377U\377\377U\377\377\000\377\377\000\377\377U\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\377\377\000\377\377\000\377\377U\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377\377"
 & "U\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\377\377U\377\377\000\377\377\000\377\377U\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\377\377U\377\377\000\377\377"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U"
 & "\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000";

CONST E67_24 =
   "\000\000\000\000\000\000\000\000\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\377\377U\377\377\000\377\377U\377\377\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\377\377U\377\377\000\377\377\000\377\377U\377\377U"
 & "\377\377\000\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
 & "U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
 & "\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\377\377\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\377\377\000\377\377U\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
 & "U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377";

CONST E67_25 =
   "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\377\377U\377\377\000\377\377\000\377\377U\377\377U"
 & "\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377"
 & "U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\377\377U\377\377\000\377\377\000\377\377"
 & "U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000"
 & "\000\377\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377";

CONST E67_26 =
   "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\000\000\377\000\000\377"
 & "\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\000\000\000\000\000\000\000\000\000\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377"
 & "U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377"
 & "U\377\377U\377\377\000\377\377\000\377\377U\000\000\377\000\000\377\000"
 & "\000\377\000\000\377\000\000\377\000\000\377\000\000\377\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\000\000\000"
 & "\000\000\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377"
 & "U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\000\000\000\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\000\000\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\000\000\000\000\000\000\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\000\000\000\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\000\000"
 & "\000\000\000\000\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U";

CONST E67_27 =
   "\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377"
 & "U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\000\000"
 & "\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000\377\000\000"
 & "\377\000\000\377\000\000\377\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
 & "U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377";

CONST E67_28 =
   "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\377\377\000\377\377U\377\377U\377\377U"
 & "\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377";

CONST E67_29 =
   "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000";

CONST E67_30 =
   "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377";

CONST E67_31 =
   "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377";

CONST E67_32 =
   "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377"
 & "U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377"
 & "\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377"
 & "U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377"
 & "\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377\377"
 & "U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000\377"
 & "\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377\000"
 & "\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377\377"
 & "\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\377\377U\377"
 & "\377\000\377\377U\377\377U\377\377U\377\377\000\377\377U\377\377U\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377"
 & "U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377"
 & "\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377"
 & "\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377"
 & "\377\000\377\377U\377\377\000\377\377U\377\377\000\377\377U\377\377\000"
 & "\377\377U\377\377\000\377\377U\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000";

CONST E67_33 =
   "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377"
 & "\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377"
 & "\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377"
 & "\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000"
 & "\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000"
 & "\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377"
 & "U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377"
 & "\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377\377\000\377"
 & "\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U\377\377U\377"
 & "\377\000\377\377\000\377\377U\377\377U\377\377\000\377\377\000\377\377U"
 & "\377\377U\377\377\000\377\377\000\377\377U\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000";

CONST E67_34 =
   "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
 & "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000";

CONST E68 =
   "MODULE Anim;\n\n(* A module for drawing animations. *)\n\nIMPORT Time, "
 & "PS;\n\n(* PERMANENT OBJECTS *)\n\nPRIVATE VAR permList := NIL;\n\n(* Th"
 & "is module maintains a list of permanent \n   objects, each represented "
 & "by a \n   zero-argument closure. The list is \n   initially empty. *)\n"
 & "\nPROC ClearPerm() IS permList := NIL END;\n\n(* Make the list of perma"
 & "nent objects empty. \n*)\n\nPROC AddPerm(cl) IS \n  permList := (cl, pe"
 & "rmList) \nEND;\n\n(* Add the zero-argument closure \"cl\" to the \n   l"
 & "ist of permanent objects. *)\n\nPRIVATE PROC DrawPerm2(l) IS \n  IF \n "
 & "   l # NIL -> \n      DrawPerm2(CDR(l)); APPLY(CAR(l)) | SKIP \n  FI \n"
 & "END;\n\nPROC DrawPerm() IS DrawPerm2(permList) END;\n\n(* Draw the perm"
 & "anent objects by invoking \n   their closures in the order they were \n"
 & "   added. *)\n\n(* ANIMATION OBJECTS *)\n\n(* An {\\it animation} is a "
 & "pair \"(cl, dur)\", \n   where \"cl\" is a closure for drawing each \n "
 & "  frame of an animation, and \"dur\" is the \n   animation\'s duration."
 & " The \"Play\" procedure \n   below applies \"cl\" with a single time \n"
 & "   argument in the interval \"[0,dur]\". *)\n\nPRIVATE PROC SeqFrame(a1"
 & ", a2, t) IS \n  IF \n    t <= CDR(a1) -> APPLY(CAR(a1), t) \n  | APPLY("
 & "CAR(a2), t - CDR(a1)) \n  FI \nEND;\n\nPROC an := Seq(a1, a2) IS \n  an"
 & " := \n    (CLOSE(SeqFrame, a1, a2), \n     CDR(a1) + CDR(a2)) \nEND;\n\n"
 & "(* \"an\" is the animation that runs \"a1\" \n   followed by \"a2\"; it"
 & "s duration is the sum \n   of the durations of \"a1\" and \"a2\". *)\n\n"
 & "PRIVATE PROC CoFrame(a1, a2, t) IS \n  IF \n    t <= CDR(a1) -> APPLY(C"
 & "AR(a1), t) | SKIP \n  FI; \n  IF \n    t <= CDR(a2) -> APPLY(CAR(a2), t"
 & ") | SKIP \n  FI \nEND;\n\nPROC an := Co(a1, a2) IS \n  an := \n    (CLO"
 & "SE(CoFrame, a1, a2), \n     MAX(CDR(a1), CDR(a2))) \nEND;\n\n(* \"an\" "
 & "is the animation that runs \"a1\" and \n   \"a2\" in parallel; its dura"
 & "tion is the \n   maximum of the durations of \"a1\" and \"a2\". \n   Ea"
 & "ch animation is run for its natural \n   duration, so if one animation\'"
 & "s duration \n   is shorter than the other, it will finish \n   sooner. "
 & "No frames are displayed for the \n   shorter animation once it ";

CONST E68_0 =
   "completes. *)\n\nPRIVATE PROC ScaleFrame(an, dur, t) IS \n  APPLY(CAR(a"
 & "n), CDR(an) * (t / dur)) \nEND;\n\nPROC an := Scale(a, dur) IS \n  an :"
 & "= (CLOSE(ScaleFrame, a, dur), dur) \nEND;\n\n(* \"an\" is the animation"
 & " \"a\" scaled in time \n   to take a total of \"dur\" seconds, \n   reg"
 & "ardless of \"a\"\'s duration. *)\n\nPRIVATE PROC ExtendFrame(an, t) IS "
 & "\n  APPLY(CAR(an), MIN(t, CDR(an))) \nEND;\n\nPROC an := Extend(a, dur)"
 & " IS \n  an := (CLOSE(ExtendFrame, a), dur) \nEND;\n\n(* \"an\" is the a"
 & "nimation \"a\" with a total \n   duration of \"dur\". If \"dur\" is les"
 & "s than \n   \"Dur(a)\", then \"a\"\'s animation is \n   truncated. If \""
 & "dur\" is greater than \n   \"Dur(a)\" then \"a\" is extended by playing"
 & " \n   its last frame an extra \"dur - Dur(a)\" \n   seconds. *)\n\nPRIV"
 & "ATE PROC RepeatFrame(an, dur, t) IS \n  VAR t0 IN \n    t0 := t MOD CDR"
 & "(an); \n    IF \n      t0 = 0 AND t # 0 -> t0 := CDR(an) | SKIP \n    F"
 & "I; \n    APPLY(CAR(an), t0) \n  END \nEND;\n\nPROC an := Repeat(a, n) I"
 & "S \n  IF \n    VAR dur = n * CDR(a) IN \n      an := (CLOSE(RepeatFrame"
 & ", a, dur), dur) \n    END \n  FI \nEND;\n\n(* \"an\" is the animation \""
 & "a\" repeated \"n\" \n   times; its duration is \"n * Dur(a)\". *)\n\nPR"
 & "IVATE PROC ReverseFrame(an, t) IS \n  APPLY(CAR(an), CDR(an) - t) \nEND"
 & ";\n\nPROC an := Reverse(a) IS \n  an := (CLOSE(ReverseFrame, a), CDR(a)"
 & ") \nEND;\n\n(* \"an\" is the animation \"a\" in reverse; its \n   durat"
 & "ion is the same as \"a\"\'s duration. *)\n\nPRIVATE PROC WarpTimeFrame("
 & "an, warp, t) IS \n  APPLY(CAR(an), APPLY(warp, t)) \nEND;\n\nPROC an :="
 & " WarpTime(a, warp) IS \n  an := \n    (CLOSE(WarpTimeFrame, a, warp), C"
 & "DR(a)) \nEND;\n\n(* \"an\" is the animation whose duration is \n   \"Du"
 & "r(a)\" and whose frame at time \"t\" is \n   produced by running \"APPL"
 & "Y(CAR(a), \n   APPLY(warp, t))\". *)\n\nPRIVATE PROC NormalizeFrame(an,"
 & " t) IS \n  APPLY(CAR(an), t / CDR(an)) \nEND;\n\nPROC an := Normalize(a"
 & ") IS \n  an := (CLOSE(NormalizeFrame, a), CDR(a)) \nEND;\n\n(* \"an\" i"
 & "s the animation with duration \n   \"Dur(a)\" whose frame for time \"t\""
 & " is \n   produced by running \"APPLY(CAR(a), \n   t/Dur(a))\". Hence, \""
 & "a\"\'s closure wi";

CONST E68_1 =
   "ll be \n   invoked with values of \"t\" in the interval \n   [0, 1]. *)"
 & "\n\nPRIVATE PROC SkipFrame(t) IS SKIP END;\n\nPROC an := Skip(dur) IS \n"
 & "  an := (SkipFrame, dur) \nEND;\n\n(* \"an\" is the animation that does"
 & " nothing \n   for \"dur\" seconds. *)\n\n(* DRAWING ANIMATIONS *)\n\nCO"
 & "NST DefaultTFactor = 1;\n\n(* This module maintains a current time \n  "
 & " factor, which is the ratio between \n   animation time and real time u"
 & "sed by the \n   procedure \"Play\" below. Time factors less \n   than 1"
 & ".0 cause the animation to run faster \n   than real time. *)\n\nPRIVATE"
 & " VAR tFactor := DefaultTFactor;\n\nPROC SetTFactor(k) IS tFactor := k E"
 & "ND;\n\nUI SetTool(SetTFactor);\n\n(* Set the current time factor to \"k"
 & "\". *)\n\nUI Param(SetTFactor, DefaultTFactor);\n\nUI Param(SetTFactor,"
 & " 0.25);\n\nUI Param(SetTFactor, 0.5);\n\nUI Param(SetTFactor, 1);\n\nUI"
 & " Param(SetTFactor, 2);\n\nUI Param(SetTFactor, 5);\n\nPROC Play(an) IS "
 & "\n  IF \n    VAR t = 0, cl, dur, start, k IN \n      start := Time.Now("
 & "); \n      cl := CAR(an); \n      dur := CDR(an); \n      k := 1 / MAX("
 & "tFactor, 0.0001); \n      DrawPerm(); \n      DO \n        t < dur -> \n"
 & "          APPLY(cl, t); \n          t := k * (Time.Now() - start); \n  "
 & "        PS.ShowPage(); \n          PS.RestorePage(); \n          DrawPe"
 & "rm() \n      OD; \n      APPLY(cl, dur) \n    END \n  FI \nEND;\n\n(* D"
 & "raw the animation \"an\", i.e., invoke the \n   animation\'s closure wi"
 & "th values of \"t\" \n   starting at 0 and ending at the \n   animation\'"
 & "s duration. Before each frame, \n   \"DrawPerm\" is called to draw the "
 & "permanent \n   objects. Between frames, \"PS.ShowPage\" and \n   \"PS.R"
 & "estorePage\" are called to start a new \n   frame. The animation\'s dur"
 & "ation is scaled \n   against real time according to the current \n   ti"
 & "me factor. *)\n\n(* MISC *)\n\nPRIVATE VAR history := NIL;\n\nPROC Save"
 & "() IS \n  history := ((permList, tFactor), history) \nEND;\n\nPROC Rest"
 & "ore() IS \n  VAR new IN \n    new := CAR(history); \n    permList := CA"
 & "R(new); \n    tFactor := CDR(new) \n  END; \n  history := CDR(history) "
 & "\nEND;\n\nUI PointTool(Save);\n\nUI PointTool(Restore);\n";

CONST E68_2 =
   "\n(* Save/Restore the animation state, namely, \n   the list of permane"
 & "nt objects. *)\n\n";

CONST E69 =
   "MODULE Rect;\n\n(* Procedures and predicates for rectangles. *)\n\nIMPO"
 & "RT R2, Geometry, PS, Ellipse;\n\n(* \\section{Opposite Corner Represent"
 & "ation} *)\n\n(* The follow procedures represent a rectangle \n   orient"
 & "ed squarely with the page by two of its \n   opposite corners, \"a\" an"
 & "d \"b\". *)\n\nPROC Draw(a, b) IS \n  IF \n    VAR ax, ay, bx, by IN \n"
 & "      a = (ax, ay) AND b = (bx, by) -> \n        PS.MoveTo(a); \n      "
 & "  PS.LineTo((ax, by)); \n        PS.LineTo(b); \n        PS.LineTo((bx,"
 & " ay)); \n        PS.Close() \n    END \n  FI \nEND;\n\nUI PointTool(Dra"
 & "w);\n\n(* Append a closed rectangular path with opposite \n   corners \""
 & "a\" and \"b\" oriented squarely with the \n   page to the current path."
 & " *)\n\nPRED On(p, a, b) IS \n  (E px, py, ax, ay, bx, by :: \n    p = ("
 & "px, py) AND \n    a = (ax, ay) AND \n    b = (bx, by) AND \n    0 = \n "
 & "     (px - ax) * (px - bx) * (py - ay) * \n      (py - by)) \nEND;\n\nU"
 & "I PointTool(On);\n\n(* The point \"p\" is on the rectangle with \n   op"
 & "posite corners \"a\" and \"b\". \n\n   This constraint is actually true"
 & " if \"p\" is on \n   any of the lines obtained by extending the \n   si"
 & "des of the rectangle infinitely. However, if \n   the hint for \"p\" is"
 & " inside the circle \n   circumscribing the rectangle and is not too \n "
 & "  close to the center of the rectangle, the \n   solver will converge o"
 & "n a solution for \"p\" \n   that is actually on the rectangle. You can "
 & "use \n   the \"OnHint\" function to compute a hint for \n   \"p\" that "
 & "will converge on the actual rectangle \n   in most cases. *)\n\nPRIVATE"
 & " FUNC ecc = Ecc(wh) IS \n  (E w, h :: wh = (w, h) AND ecc = h / w) \nEN"
 & "D;\n\nPRIVATE FUNC p = OnCHint0(c, b, d) IS \n  (E wh = R2.Minus(b, c),"
 & " maj :: \n    maj = R2.Plus(c, (CAR(wh), 0)) AND \n    p ~ (0.5, 0) REL"
 & " (d, c) AND \n    Geometry.Colinear(d, p, c) AND \n    Ellipse.OnEcc(p,"
 & " c, maj, Ecc(wh))) \nEND;\n\n/* See the comment for \"OnCHint\" below. "
 & "This \n   procedure is here because it must preceed \n   \"OnHint\". */"
 & "\n\nFUNC p = OnHint(a, b, d) IS \n  (E c = Geometry.Mid(a, b) :: \n    "
 & "p = OnCHint0(c, b, d)) \nEND;\n\n(* \"p\" is a goo";

CONST E69_0 =
   "d hint for a point on the \n   intersection of the rectangle with corne"
 & "rs \"a\" \n   and \"b\" and the line through \"d\" and the \n   center "
 & "of that rectangle. *)\n\nFUNC res = Area(a, b) IS\n  res = Geometry.Dis"
 & "tX(a,b) * Geometry.DistY(a,b)\nEND;\n\n(* \"res\" is the area of the re"
 & "ctangle with \n   opposite corners \"a\" and \"b\". *)\n\n(* \\section{"
 & "Center-Corner Representation} *)\n\nPRIVATE FUNC a = OtherCorner(c, b) "
 & "IS\n  a = (-1, 0) REL (c, b)\nEND;\n\n/* \"a\" is the opposite corner o"
 & "f the rectangle\n   from the point \"b\", where \"c\" is the center\n  "
 & " of the rectangle. */\n\n(* The following procedures are like the ones "
 & "\n   above, only they represent a rectangle by its \n   center \"c\" an"
 & "d one of its corners \"b\". *)\n\nPROC DrawC(c, b) IS \n  Draw(OtherCor"
 & "ner(c, b), b)\nEND;\n\nUI PointTool(DrawC);\n\n(* Like \"Draw\" above, "
 & "but the rectangle is \n   specified by its center \"c\" and one of its "
 & "\n   corners \"b\". *)\n\nPRED OnC(p, c, b) IS \n  On(p, OtherCorner(c,"
 & " b), b)\nEND;\n\nUI PointTool(OnC);\n\n(* Like \"On\" above, but the re"
 & "ctangle is \n   specified by its center \"c\" and one of its \n   corne"
 & "rs \"b\". The current point becomes \"b\". *)\n\nFUNC p = OnCHint(c, b,"
 & " d) IS \n  p = OnCHint0(c, b, d) \nEND;\n\n(* \"p\" is a good hint for "
 & "a point on the \n   intersection of the line \"cd\" and the \n   rectan"
 & "gle with center \"c\" and corner \"b\". *)\n\nFUNC res = AreaC(c, b) IS"
 & "\n  res = Area(OtherCorner(c, b), b)\nEND;\n\n(* \"res\" is the area of"
 & " the rectangle with\n   center \"c\" and corner \"b\". *)\n\n(* \\secti"
 & "on{Pair representation} *)\n\n(* The following routines encode a rectan"
 & "gle \"r\" \n   as a pair of points denoting two of its \n   opposite co"
 & "rners. \n\n   If \"r = ((x1, y1), (x2, y2)\" and we have: \n\n|    west"
 & " = MIN(x1, x2)\n|    east = MAX(x1, x2)\n|    south = MIN(y1, y2)\n|   "
 & " north = MAX(y1, y2)\n\n   then a point \"p = (px, py)\" is in the \n  "
 & " rectangle \"r\" if: \n\n|    west <= px < east\n|    south <= py < nor"
 & "th\n\n   We impose the restriction that if a rectangle \n   contains no"
 & " points, then it must be equal to \n   \"Rect.Empty\". *)\n\nCONST Empt"
 & "y = ((0, 0), (0,";

CONST E69_1 =
   " 0));\n\n(* The empty rectangle. *)\n\nPROC res := FromCorners(a, b) IS"
 & "\n  res := (a, b)\nEND;\n\n(* \"res\" is the rectangle with opposite co"
 & "rners\n   \"a\" and \"b\". *)\n\nPROC res := FromCenterCorner(c,b) IS\n"
 & "  res := ((-1,0) REL (c,b), b)\nEND;\n\n(* \"res\" is the rectangle wit"
 & "h center \"c\" and\n   corner \"b\". *)\n\nPROC DrawR(r) IS \n  IF \n  "
 & "  VAR r1, r2 IN r = (r1, r2) -> Draw(r1, r2) END \n  FI \nEND;\n\n(* Li"
 & "ke \"Draw\" above, but the rectangle \"r\" is \n   specified by a pair "
 & "of points at opposite \n   corners of the rectangle. *)\n\nPRED OnR(p, "
 & "r) IS \n  (E r1, r2 :: r = (r1, r2) AND On(p, r1, r2)) \nEND;\n\n(* Lik"
 & "e \"On\" above, but the rectangle \"r\" is \n   specified by a pair of "
 & "points at opposite \n   corners of the rectangle. *)\n\nFUNC p = OnRHin"
 & "t(r, d) IS \n  p = OnHint(CAR(r), CDR(r), d) \nEND;\n\n(* Like \"OnHint"
 & "\" above, but the rectangle \"r\" is \n   specified by a pair of points"
 & " at opposite \n   corners of the rectangle. *)\n\nPROC p := North(r) IS"
 & " \n  IF \n    VAR x1, y1, x2, y2 IN \n      r = ((x1, y1), (x2, y2)) ->"
 & " \n        p := ((x1 + x2) / 2, MAX(y1, y2)) \n    END \n  FI \nEND;\n\n"
 & "PROC p := South(r) IS \n  IF \n    VAR x1, y1, x2, y2 IN \n      r = (("
 & "x1, y1), (x2, y2)) -> \n        p := ((x1 + x2) / 2, MIN(y1, y2)) \n   "
 & " END \n  FI \nEND;\n\nPROC p := East(r) IS \n  IF \n    VAR x1, y1, x2,"
 & " y2 IN \n      r = ((x1, y1), (x2, y2)) -> \n        p := (MAX(x1, x2),"
 & " (y1 + y2) / 2) \n    END \n  FI \nEND;\n\nPROC p := West(r) IS \n  IF "
 & "\n    VAR x1, y1, x2, y2 IN \n      r = ((x1, y1), (x2, y2)) -> \n     "
 & "   p := (MIN(x1, x2), (y1 + y2) / 2) \n    END \n  FI \nEND;\n\nFUNC p "
 & "= Center(r) IS \n  (E r1, r2 :: \n    r = (r1, r2) AND p = Geometry.Mid"
 & "(r1, r2)) \nEND;\n\nPROC p := NW(r) IS \n  IF \n    VAR x1, y1, x2, y2 "
 & "IN \n      r = ((x1, y1), (x2, y2)) -> \n        p := (MIN(x1, x2), MAX"
 & "(y1, y2)) \n    END \n  FI \nEND;\n\nPROC p := NE(r) IS \n  IF \n    VA"
 & "R x1, y1, x2, y2 IN \n      r = ((x1, y1), (x2, y2)) -> \n        p := "
 & "(MAX(x1, x2), MAX(y1, y2)) \n    END \n  FI \nEND;\n\nPROC p := SE(r) I"
 & "S \n  IF \n    VAR x1, y1, x2, y2 IN \n      r = ((x1, y1), (x2, y2)) ";

CONST E69_2 =
   "-> \n        p := (MAX(x1, x2), MIN(y1, y2)) \n    END \n  FI \nEND;\n\n"
 & "PROC p := SW(r) IS \n  IF \n    VAR x1, y1, x2, y2 IN \n      r = ((x1,"
 & " y1), (x2, y2)) -> \n        p := (MIN(x1, x2), MIN(y1, y2)) \n    END "
 & "\n  FI \nEND;\n\n(* These procedures set \"p\" to the named \n   charac"
 & "teristic point on the boundry or at the \n   center of the rectangle \""
 & "r\". *)\n\nPROC w := Width(r) IS \n  IF \n    VAR x1, y1, x2, y2 IN \n "
 & "     r = ((x1, y1), (x2, y2)) -> \n        w := ABS(x2 - x1) \n    END "
 & "\n  FI \nEND;\n\n(* \"w\" is the width of \"r\". *)\n\nPROC h := Height"
 & "(r) IS \n  IF \n    VAR x1, y1, x2, y2 IN \n      r = ((x1, y1), (x2, y"
 & "2)) -> \n        h := ABS(y2 - y1) \n    END \n  FI \nEND;\n\n(* \"h\" "
 & "is the height of \"r\". *)\n\nPROC res := Size(r) IS \n  IF \n    VAR x"
 & "1, y1, x2, y2 IN \n      r = ((x1, y1), (x2, y2)) -> \n        res := ("
 & "ABS(x2 - x1), ABS(y2 - y1)) \n    END \n  FI \nEND;\n\n(* \"res\" is a "
 & "pair \"(w, h)\", where \"w\" and \"h\" \n   are the width and height of"
 & " \"r\", respectively. \n*)\n\nPROC res := Plus(r, p) IS \n  IF \n    r "
 & "= Empty -> res := Empty \n  | VAR r1, r2 IN \n      r = (r1, r2) -> \n "
 & "       res := (R2.Plus(r1, p), R2.Plus(r2, p)) \n    END \n  FI \nEND;\n"
 & "\n(* \"res\" is the rectangle obtained by translating \n   \"r\" by the"
 & " vector \"p\". *)\n\nPROC w, e, s, n := Edges(r) IS \n  IF \n    VAR r1"
 & "x, r1y, r2x, r2y IN \n      r = ((r1x, r1y), (r2x, r2y)) -> \n        w"
 & " := MIN(r1x, r2x); \n        e := MAX(r1x, r2x); \n        s := MIN(r1y"
 & ", r2y); \n        n := MAX(r1y, r2y) \n    END \n  FI \nEND;\n\n(* Set "
 & "\"w\" and \"e\" to the x-coordinates of the\n   west and east edges of "
 & "\"r\", and \"s\" and \"n\"\n   to the y-coordinates of the south and no"
 & "rth\n   edges of \"r\". *)\n\nPROC res := Inset(r, d) IS \n  VAR w, e, "
 & "s, n IN \n    w, e, s, n := Edges(r); \n    w, s := w + d, s + d; \n   "
 & " e, n := e - d, n - d; \n    IF \n      e < w OR n < s -> res := Empty "
 & "\n    | res := ((w, s), (e, n)) \n    FI \n  END \nEND;\n\n(* \"res\" i"
 & "s the rectangle \"r\" inset by \"d\" \n   points. If \"r\" does not hav"
 & "e width and height \n   at least \"2*d\", \"res\" is set to \"Empty\". "
 & "*)\n\nPROC res := Join";

CONST E69_3 =
   "(r, s) IS \n  IF \n    r = Empty -> res := s | s = Empty -> res := r \n"
 & "  | VAR rW, rE, rS, rN, sW, sE, sS, sN IN \n      rW, rE, rS, rN := Edg"
 & "es(r); \n      sW, sE, sS, sN := Edges(s); \n      res := \n        ((M"
 & "IN(rW, sW), MIN(rS, sS)), \n         (MAX(rE, sE), MAX(rN, sN))) \n    "
 & "END \n  FI \nEND;\n\n(* \"res\" is the smallest rectangle containing \n"
 & "   both \"r\" and \"s\". *)\n\nPROC res := Meet(r, s) IS \n  IF \n    r"
 & " = Empty OR s = Empty -> res := Empty \n  | VAR \n      rW, rE, rS, rN,"
 & " sW, sE, sS, sN, resW, resE, \n      resS, resN \n    IN \n      rW, rE"
 & ", rS, rN := Edges(r); \n      sW, sE, sS, sN := Edges(s); \n      resW "
 & ":= MAX(rW, sW); \n      resE := MIN(rE, sE); \n      resS := MAX(rS, sS"
 & "); \n      resN := MIN(rN, sN); \n      IF \n        resW >= resE OR re"
 & "sS >= resN -> \n          res := Empty \n      | res := ((resW, resS), "
 & "(resE, resN)) \n      FI \n    END \n  FI \nEND;\n\n(* \"res\" is the l"
 & "argest rectangle contained in \n   both \"r\" and \"s\". *)\n\nFUNC res"
 & " = AreaR(r) IS\n  (E c1, c2 :: r = (c1, c2) AND\n    res = Area(c1, c2)"
 & ")\nEND;\n\n(* \"res\" is the area of the rectangle \"r\". *)\n";

CONST E70 =
   "; Copyright (C) 1992, Digital Equipment Corporation                    "
 & "     \n; All rights reserved.                                          "
 & "            \n; See the file COPYRIGHT for a full description.         "
 & "                   \n;                                                 "
 & "                          \n; Last modified on Thu Dec  1 10:28:20 PST "
 & "1994 by heydon                   \n\n(Rim (Pen 5)\n  (VBox\n    (HBox\n"
 & "      Fill\n      (FixedWidth (Text (Margin 0) \"The file \\\"\"))\n   "
 & "   (FixedWidth (Text (Margin 0) %overwriteFileName \"\"))\n      (Fixed"
 & "Width (Text (Margin 0) \"\\\" already exists.\"))\n      Fill\n    )\n "
 & "   \"Overwrite it?\"\n    (Glue 5)\n    (HBox\n      Fill\n      (Close"
 & "Button %saveAsOverwrite \"Overwrite\")\n      Fill\n      (CloseButton "
 & "%overwriteCancel \"Cancel\")\n      Fill\n    )\n  )\n)\n";

CONST E71 =
   "MODULE Ellipse;\n\n(* Procedures and predicates for \n   ellipses with "
 & "arbitrary \n   orientations. *)\n\nIMPORT Geometry, PS, Rel;\n\n(* ECCE"
 & "NTRICITY REPRESENTATION *)\n\n(* The following routines define an \n   "
 & "ellipse \"[a, b, e]\" by its center \n   \"a\", the tip of its major ax"
 & "is \n   \"b\", and its eccentricity \"e\" \n   (the real-valued ratio o"
 & "f the \n   length of its minor axis to the \n   length its major axis)."
 & " This \n   representation is somewhat more \n   efficient than the one "
 & "used later \n   in this module, but cannot be \n   clicked in. *)\n\nPR"
 & "IVATE PROC DrawQuarterEcc(a, r) IS \n  VAR b IN \n    b := PS.CurrentPo"
 & "int(); \n    IF \n      VAR \n        c = (0, r) REL (a, b), \n        "
 & "d \n      = (1, r * 0.5523) REL (a, b), \n        e = (0.5523, r) REL ("
 & "a, b) \n      IN \n        PS.CurveTo(d, e, c) \n      END \n    FI \n "
 & " END \nEND;\n\n/* Add a quarter ellipse with \n   eccentricity \"r\" st"
 & "arting at the \n   current point about the center \n   \"a\" to the cur"
 & "rent path. Positive \n   values of \"r\" create the curve in \n   a cou"
 & "nter-clockwise direction \n   from the current point around \n   \"a\","
 & " while negative values of \"r\" \n   create the curve in a clockwise \n"
 & "   direction around \"a\". */\n\nPRIVATE PROC DrawSemiEcc(a, e) IS \n  "
 & "DrawQuarterEcc(a, e); \n  DrawQuarterEcc(a, 1 / e) \nEND;\n\n/* Add hal"
 & "f an ellipse of \n   eccentricity \"r\" about \"a\" \n   starting from "
 & "the current point. \n   Positive values of \"r\" create the \n   curve "
 & "in a counter-clockwise \n   direction from the current point \n   aroun"
 & "d \"a\", while negative values \n   of \"r\" create the curve in a \n  "
 & " clockwise direction around \"a\". */\n\nPROC DrawEcc(a, b, e) IS \n  P"
 & "S.MoveTo(b); \n  DrawSemiEcc(a, -e); \n  DrawSemiEcc(a, -e); \n  PS.Clo"
 & "se() \nEND;\n\nPROC DrawEccCC(a, b, e) IS \n  PS.MoveTo(b); \n  DrawSem"
 & "iEcc(a, e); \n  DrawSemiEcc(a, e); \n  PS.Close() \nEND;\n\n(* Add a cl"
 & "ockwise and counter- \n   clockwise ellipse \"[a, b, e]\", \n   respect"
 & "ively, to the current \n   path. The current point becomes \n   \"b\". "
 & "*)\n\nPRED OnEcc(p, a, b, e) IS \n  (E q = Rel.Inv(p, a, b), \n";

CONST E71_0 =
   "     x = CAR(q), y = CDR(q) :: \n    x * x + (y * y) / (e * e) = 1) \nE"
 & "ND;\n\n(* The point \"p\" is on the ellipse \n   \"[a, b, e]\". *)\n\n("
 & "* THREE-POINT REPRESENTATION *)\n\n(* The following routines define an "
 & "\n   ellipse \"[a, b, c]\" by its center \n   \"a\", a point \"b\" at t"
 & "he tip of \n   one of its axes, and a point \"c\" \n   whose distance f"
 & "rom \"a\" is the \n   length of the axis perpendicular \n   to \"ab\". "
 & "*)\n\nPROC Draw(a, b, c) IS \n  VAR ab, ac IN \n    ab := Geometry.Dist"
 & "(a, b); \n    ac := Geometry.Dist(a, c); \n    DrawEcc(a, b, ac / ab) \n"
 & "  END \nEND;\n\nPROC DrawCC(a, b, c) IS \n  VAR ab, ac IN \n    ab := G"
 & "eometry.Dist(a, b); \n    ac := Geometry.Dist(a, c); \n    DrawEccCC(a,"
 & " b, ac / ab) \n  END \nEND;\n\nUI PointTool(Draw);\n\nUI PointTool(Draw"
 & "CC);\n\n(* Add a clockwise and counter- \n   clockwise ellipse \"[a, b,"
 & " c]\", \n   respectively, to the current \n   path. The current point b"
 & "ecomes \n   \"b\". *)\n\nPROC DrawSemi(a, c) IS \n  VAR b, ab, ac, e IN"
 & " \n    b := PS.CurrentPoint(); \n    ab := Geometry.Dist(a, b); \n    a"
 & "c := Geometry.Dist(a, c); \n    e := ac / ab; \n    DrawSemiEcc(a, -e) "
 & "\n  END \nEND;\n\nPROC DrawSemiCC(a, c) IS \n  VAR b, ab, ac, e IN \n  "
 & "  b := PS.CurrentPoint(); \n    ab := Geometry.Dist(a, b); \n    ac := "
 & "Geometry.Dist(a, c); \n    e := ac / ab; \n    DrawSemiEcc(a, e) \n  EN"
 & "D \nEND;\n\nUI PointTool(DrawSemi);\n\nUI PointTool(DrawSemiCC);\n\n(* "
 & "Add a clockwise or \n   counter-clockwise semi-ellipse to \n   the curr"
 & "ent path starting at the \n   current point. The semi-ellipse \n   has "
 & "center \"a\", the length of its \n   major axis is the distance from \n"
 & "   \"a\" to the current point, and the \n   length of its minor axis is"
 & " the \n   distance from \"a\" to \"c\". *)\n\nPRED On(p, a, b, c) IS \n"
 & "  (E ab, ac :: \n    ab = Geometry.Dist(a, b) AND \n    ac = Geometry.D"
 & "ist(a, c) AND \n    OnEcc(p, a, b, ac / ab)) \nEND;\n\nUI PointTool(On)"
 & ";\n\n(* The point \"p\" is on the ellipse \n   \"[a, b, c]\". *)\n\n";

CONST E72 =
   "MODULE TypeLinesL;\n\n(* The procedures in this module \n   type a bloc"
 & "k of left-justified \n   text lines relative to a \n   specified point."
 & " Each procedure \n   takes a reference point and a \n   single text, wh"
 & "ich is converted \n   to a list of texts by the \n   \"TextList.FromTex"
 & "t\" procedure. \n   One line is displayed in the \n   block per element"
 & " of this list. \n\n   The lines in each block are \n   separated vertic"
 & "ally by the \n   height of the current font plus \n   the current line "
 & "skip value \n   (maintained by the \"LineSkip\" \n   module). \n\n   Th"
 & "e text block is actually \n   translated in the appropriate \n   direct"
 & "ion away from the \n   reference point by the current \n   horizontal a"
 & "nd/or vertical \n   offset values (maintained by the \n   \"Offset\" mo"
 & "dule). For example, \n   the \"South\" procedure translates \n   the te"
 & "xt block up by the current \n   vertical offset, and the \"NE\" \n   pr"
 & "ocedure translates it down by \n   the current vertical offset and \n  "
 & " to the left by the current \n   horizontal offset. The \"Center\" \n  "
 & " procedure ignores the current \n   offset values. *)\n\nIMPORT LineSki"
 & "p, Offset, PS, \n       R2, TextList;\n\nPRIVATE PROC TypeBlockL(p, l) "
 & "IS \n  VAR asc, dec, d IN \n    asc, dec := PS.FontHeight(); \n    d :="
 & " asc + dec + LineSkip.Get(); \n    p := (CAR(p), CDR(p) - asc); \n    D"
 & "O \n      l # NIL -> \n        PS.Type(p, CAR(l)); \n        p := (CAR("
 & "p), CDR(p) - d); \n        l := CDR(l) \n    OD \n  END \nEND;\n\n/* Ty"
 & "pe the left-justified block of \n   text lines \"l\" such that \"p\" is"
 & " \n   the northwest corner of the \n   box\'s bounding-box. */\n\nPROC "
 & "North(p, txt) IS \n  VAR l, w, h, dh IN \n    l := TextList.FromText(tx"
 & "t); \n    w, h := TextList.Size(l); \n    dh := Offset.GetVer(); \n    "
 & "TypeBlockL(R2.Plus(p, \n                       (-w / 2, -dh)), \n      "
 & "         l) \n  END \nEND;\n\nPROC South(p, txt) IS \n  VAR l, w, h, dh"
 & " IN \n    l := TextList.FromText(txt); \n    w, h := TextList.Size(l); "
 & "\n    dh := Offset.GetVer(); \n    TypeBlockL(R2.Plus(p, \n            "
 & "           (-w / 2, \n             ";

CONST E72_0 =
   "           h + dh)), l) \n  END \nEND;\n\nPROC East(p, txt) IS \n  VAR "
 & "l, w, h, dw IN \n    l := TextList.FromText(txt); \n    w, h := TextLis"
 & "t.Size(l); \n    dw := Offset.GetHor(); \n    TypeBlockL(R2.Plus(p, \n "
 & "                      (-w - dw, \n                        h / 2)), l) \n"
 & "  END \nEND;\n\nPROC West(p, txt) IS \n  VAR l, w, h, dw IN \n    l := "
 & "TextList.FromText(txt); \n    w, h := TextList.Size(l); \n    dw := Off"
 & "set.GetHor(); \n    TypeBlockL(R2.Plus(p, \n                       (dw,"
 & " h / 2)), \n               l) \n  END \nEND;\n\nPROC Center(p, txt) IS "
 & "\n  VAR l, w, h IN \n    l := TextList.FromText(txt); \n    w, h := Tex"
 & "tList.Size(l); \n    TypeBlockL(R2.Plus(p, \n                       (-w"
 & " / 2, \n                        h / 2)), l) \n  END \nEND;\n\nPROC NW(p"
 & ", txt) IS \n  VAR l, dw, dh IN \n    l := TextList.FromText(txt); \n   "
 & " dw, dh := Offset.GetHorVer(); \n    TypeBlockL(R2.Plus(p, (dw, -dh)), "
 & "\n               l) \n  END \nEND;\n\nPROC NE(p, txt) IS \n  VAR l, w, "
 & "h, dw, dh IN \n    l := TextList.FromText(txt); \n    w, h := TextList."
 & "Size(l); \n    dw, dh := Offset.GetHorVer(); \n    TypeBlockL(R2.Plus(p"
 & ", \n                       (-w - dw, \n                        -dh)), l"
 & ") \n  END \nEND;\n\nPROC SE(p, txt) IS \n  VAR l, w, h, dw, dh IN \n   "
 & " l := TextList.FromText(txt); \n    w, h := TextList.Size(l); \n    dw,"
 & " dh := Offset.GetHorVer(); \n    TypeBlockL(R2.Plus(p, \n              "
 & "         (-w - dw, \n                        h + dh)), l) \n  END \nEND"
 & ";\n\nPROC SW(p, txt) IS \n  VAR l, w, h, dw, dh IN \n    l := TextList."
 & "FromText(txt); \n    w, h := TextList.Size(l); \n    dw, dh := Offset.G"
 & "etHorVer(); \n    TypeBlockL(R2.Plus(p, \n                       (dw, h"
 & " + dh)), \n               l) \n  END \nEND;\n\nUI TextTool(North);\n\nU"
 & "I TextTool(South);\n\nUI TextTool(East);\n\nUI TextTool(West);\n\nUI Te"
 & "xtTool(Center);\n\nUI TextTool(NW);\n\nUI TextTool(NE);\n\nUI TextTool("
 & "SE);\n\nUI TextTool(SW);\n\n(* Display the \"\\\"-separated texts \n   "
 & "in \"t\" as a left-justified block \n   such that \"p\" is at the locat"
 & "ion \n   of the block\'s bounding box \n   named";

CONST E72_1 =
   " by the procedure. *)\n\n";

CONST E73 =
   "MODULE Print;\n\n(* Module for printing values to the standard output. "
 & "*)\n\nPROC Val(v) IS SKIP END; /* external procedure */\n\n(* Pretty-pr"
 & "int the value \"v\" to the standard output using a\n   line width of 75"
 & " characters. Numerical values in \"v\" are\n   printed to full precisio"
 & "n. *)\n";

CONST E74 =
   "; Copyright (C) 1992, Digital Equipment Corporation                    "
 & "     \n; All rights reserved.                                          "
 & "            \n; See the file COPYRIGHT for a full description.         "
 & "                   \n;                                                 "
 & "                          \n; Last modified on Thu Aug 28 17:35:33 PDT "
 & "1997 by leifer                   \n;      modified on Wed Apr  9 22:50:"
 & "42 PDT 1997 by heydon                   \n\n(ZSplit %mainChild\n  (Inse"
 & "rt \"Macros.fv\")\n  (MyLabelFont)\n  (BgColor HSV 0 0 0.8)\n  (ZBackgr"
 & "ound\n    (Filter %background Passive (Cursor \"XC_watch\")\n      (HTi"
 & "le2\n        ;; Drawing half of UI\n        (VBox\n          ;; Menu ba"
 & "r\n          (HBox\n            (Menu (MenuLabel \"Juno-2\") (VBox\n   "
 & "           (PopMButton (For aboutWindow) (TextL \"About...\"))\n\t     "
 & " (PopMButton %config (For configWindow) (TextL \"Configure...\"))\n    "
 & "          (MButton %quit (TextL \"Quit\"))\n            ))\n           "
 & " (Menu (MenuLabel \"File\") (VBox\n              (MButton %load (TextL "
 & "\"New / Open...\"))\n              (MButton %save (TextL \"Save\"))\n  "
 & "            (PopMButton %saveAs (For saveAsWindow) (TextL \"Save As...\""
 & "))\n;              (MButton %savejava (TextL \"Save to Java\"))\n\t    "
 & "  (MButton %reload (TextL \"Reload\"))\n\t      (MButton %clearall (Tex"
 & "tL \"Clear All\"))\n              (Ridge 2)\n              (PopMButton "
 & "%module (For moduleWindow) (TextL \"Open Module...\"))\n              ("
 & "Ridge 2)\n              (MButton %print (TextL \"Print\"))\n           "
 & "   (MButton %preview (TextL \"Preview\"))\n            (MButton %savePS"
 & " (TextL \"Save PostScript\"))\n              (PopMButton %savePSas (For"
 & " savePSWindow)\n                (TextL \"Save PostScript As...\")\n    "
 & "          )\n            ))\n            (Menu (MenuLabel \"Labels\") ("
 & "Radio %labels =letters (VBox\n              (MButton (Choice %letters C"
 & "heckMark MenuStyle (TextL \"Letters\")))\n              (MButton (Choic"
 & "e %crosses CheckMark MenuStyle (TextL \"Crosses\")))\n              (MB"
 & "utton (Choice %nothing Check";

CONST E74_0 =
   "Mark MenuStyle (TextL \"None\")))\n            )))\n          (Menu (Me"
 & "nuLabel \"Redisplay\") (Radio %autoUpdate =autoRun (VBox\n             "
 & " (MButton (Choice %autoRun CheckMark MenuStyle\n              (TextL \""
 & "Auto Run\")))\n              (MButton (Choice %autoSolve CheckMark Menu"
 & "Style\n              (TextL \"Auto Solve\")))\n            )))\n       "
 & "   ; (Menu (MenuLabel \"Test\") (VBox\n          ;   (PopMButton (For s"
 & "aveAsConfirmWindow) (TextL \"Confirm...\"))\n          ; ))\n          "
 & "  Fill\n          ) ;; HBox\n          (MyRidge)\n          ;; Toolbox "
 & "and Drawing\n          (HBox\n            (Shape (Height2 0)\n         "
 & "     (Generic %toolbox)\n            )\n            (MyRidge)\n        "
 & "    (Drawing\n              (Generic %drawing)\n            )\n        "
 & "  )\n        ) ;; VBox\n        \n        ;; Code half of UI\n        ("
 & "Sources\n          (VBox\n            ;; Menu bar\n            (HBox\n "
 & "           (Button %run (ButtonLabel \"Run\"))\n              (Filter D"
 & "ormant (Button %solve (ButtonLabel \"Solve\")))\n              (Menu (M"
 & "enuLabel \"Edit\") (VBox\n                (MButton %fold (TextL \"Fold."
 & "..\"))\n                (MButton %foldAsAnim (TextL \"Fold As Animation"
 & "...\"))\n                (Ridge 2)\n                (MButton %pushCurrC"
 & "md (TextL \"Push Current Command\"))\n                (MButton %popCurr"
 & "Cmd (TextL \"Pop Current Command\"))\n              ))\n              F"
 & "ill\n              (Border (Shape (Width + 0)\n                (Text %c"
 & "urrFile\n                  RightAlign\n                  (BgColor \"Lig"
 & "htGray\")\n                  \"Untitled.juno\"\n                )\n    "
 & "          ))\n            ) ;; HBox\n            (MyRidge)\n           "
 & " ;; Module and current command editors\n            (VTile2\n          "
 & "    (Module (Generic %editor))\n  \t      (CCmd (Generic %source))\n  \t"
 & "    ) ;; VTile2\n  \t  ) ;; VBox\n  \t) ;; Sources -- end of code half "
 & "of UI\n      ) ;; HTile2\n    ) ;; Filter\n  ) ;; ZBackground\n\n  ;; P"
 & "op-up windows\n  (ZChild %stopWindow\n    (Button %stop (ButtonLabel \""
 & "Stop\"))\n  )\n  (MyZChassis %aboutWindow";

CONST E74_1 =
   "\n    (GrowBox FALSE)\n    (Title \"About Juno-2\")\n    (CancelName ab"
 & "outCancel)\n    (Child (Insert \"AboutBox.fv\"))\n  )\n  (MyZChassis %c"
 & "onfigWindow\n    (Title \"Configure\")\n    (CancelName configCancel)\n"
 & "    (Child (Insert \"Configure.fv\"))\n  )\n  (MyZChassis %loadWindow\n"
 & "    (Title \"Open File\")\n    (CancelName loadCancel)\n    (Child (Ins"
 & "ert \"LoadFile.fv\"))\n  )\n  (MyZChassis %saveAsWindow\n    (Title \"S"
 & "ave File\")\n    (CancelName saveAsCancel)\n    (Child (Insert \"SaveFi"
 & "le.fv\"))\n  )\n  (MyZChassis %saveAsConfirmWindow\n    (Title \"Save C"
 & "onfirmation\")\n    (CancelBox FALSE)\n    (GrowBox FALSE)\n    (Child "
 & "(Insert \"SaveConfirm.fv\"))\n  )\n  (MyZChassis %moduleWindow\n    (Ti"
 & "tle \"Open Module\")\n    (CancelName moduleCancel)\n    (Child (Insert"
 & " \"LoadModule.fv\"))\n  )\n  (MyZChassis %savePSWindow\n    (Title \"Sa"
 & "ve PostScript File\")\n    (CancelName savePSCancel)\n    (Child (Inser"
 & "t \"SavePS.fv\"))\n  )\n  (MyZChassis %foldWindow\n    (Title \"Fold\")"
 & "\n    (At (0.5 0.25))\n    (CancelName foldCancel)\n    (Child (Insert "
 & "\"Fold.fv\"))\n  )\n  (MyZChassis %foldAsAnimWindow\n    (Title \"Fold "
 & "As Animation\")\n    (At (0.5 0.25))\n    (CancelName foldAsAnimCancel)"
 & "\n    (Child (Insert \"FoldAsAnim.fv\"))\n  )\n  (MyZChassis %saveChang"
 & "esWindow\n    (GrowBox FALSE)\n    (Title \"Save Changes?\")\n    (At ("
 & "0.5 0.25))\n    (CancelName cancelChanges)\n    (Child (Insert \"SaveCh"
 & "anges.fv\"))\n  )\n) ;; ZSplit\n";

CONST E75 =
   "(* Copyright (C) 1992, Digital Equipment Corporation                 *)"
 & "\n(* All rights reserved.                                              "
 & "*)\n(* See the file COPYRIGHT for a full description.                  "
 & "  *)\n(*                                                               "
 & "    *)\n(* Last modified on Mon Oct 31 09:05:57 PST 1994 by heydon     "
 & "      *)\n\n(* Definitions for CLOSE and APPLY so they will have slot\n"
 & "   numbers in the top-level scope. *)\n\nPROC res := CLOSE() IS SKIP EN"
 & "D;\n\nPROC APPLY() IS SKIP END;\n\n(* Definitions for the built-in pred"
 & "icates and functions. \n   To avoid name conflicts, these names all beg"
 & "in with \"_\". *)\n\nPRED _HOR(a, b) IS \n  (E x1, x2, y :: \n    REAL("
 & "x1) AND \n    REAL(x2) AND \n    REAL(y) AND \n    a = (x1, y) AND \n  "
 & "  b = (x2, y)) \nEND;\n\nPRED _VER(a, b) IS \n  (E x, y1, y2 :: \n    R"
 & "EAL(y1) AND \n    REAL(y2) AND \n    REAL(x) AND \n    a = (x, y1) AND "
 & "\n    b = (x, y2)) \nEND;\n\nFUNC y = _UMINUS(x) IS 0 = x + y END;\n\nF"
 & "UNC z = _MINUS(x, y) IS x = y + z END;\n\nFUNC z = _DIVIDE(x, y) IS x ="
 & " y * z END;\n\nFUNC y = _CAR(x) IS (E z :: x = (y, z)) END;\n\nFUNC y ="
 & " _CDR(x) IS (E z :: x = (z, y)) END;\n\nPRIVATE FUNC len = _SegLenSq(s)"
 & " IS\n  (E a, b, ax, ay, bx, by, dx, dy ::\n    s = (a, b) AND\n    a = "
 & "(ax, ay) AND\n    b = (bx, by) AND\n    dx = bx - ax AND\n    dy = by -"
 & " ay AND\n    len = dx * dx + dy * dy)\nEND;\n\nPRED _CONG(a, b) IS\n  _"
 & "SegLenSq(a) = _SegLenSq(b)\nEND;\n\nPRIVATE FUNC v = _Delta(ab) IS\n  ("
 & "E a, b, ax, ay, bx, by, vx, vy ::\n    ab = (a, b) AND\n    a = (ax, ay"
 & ") AND\n    b = (bx, by) AND\n    v = (vx, vy) AND\n    bx = vx + ax AND"
 & "\n    by = vy + ay)\nEND;\n\nPRIVATE PRED _ParaVects(v1, v2) IS\n  (E v"
 & "1x, v1y, v2x, v2y ::\n    v1 = (v1x, v1y) AND\n    v2 = (v2x, v2y) AND\n"
 & "    v1x * v2y = v1y * v2x)\nEND;\n\nPRED _PARA(a, b) IS \n  (E ad, bd :"
 & ":\n    ad = _Delta(a) AND\n    bd = _Delta(b) AND\n    _ParaVects(ad, b"
 & "d))\nEND;\n\nFUNC q = _REL(p, ab) IS \n  (E px, py, qx, qy,\n     a, b,"
 & " ax, ay, bx, by, dx, dy,\n     xx, yy, xy, yx, dx2, dy2 :: \n    ab = ("
 & "a, b) AND \n    a = (ax, ay) ";

CONST E75_0 =
   "AND \n    b = (bx, by) AND \n    p = (px, py) AND \n    q = (qx, qy) AN"
 & "D \n    bx = dx + ax AND \n    by = dy + ay AND \n    xx = px * dx AND "
 & "\n    yy = py * dy AND \n    xy = px * dy AND \n    yx = py * dx AND \n"
 & "    xx = dx2 + yy AND \n    dy2 = xy + yx AND \n    qx = ax + dx2 AND \n"
 & "    qy = ay + dy2) \nEND;\n\n";

CONST E76 =
   "MODULE Slider;\n\nIMPORT Math, Text, Color, R2, Geometry, PS, Angle, Be"
 & "zier, \n       Circle, Type, Rect, TypeLinesC;\n\n(* A module for drawi"
 & "ng sliders and associating them with \n   constraints. *)\n\n(* A slide"
 & "r is represented by three points, \"a\", \"b\", and \"c\". \n   The poi"
 & "nts \"a\" and \"c\" determine the endpoints of the slider, \n   and the"
 & " point \"b\" determines the location of its ``thumb\'\'. \n   In partic"
 & "ular, \"a\" determines the axis of the slider and one \n   of its endpo"
 & "ints, \"c\" determines the sizes of the tick marks \n   at the end of t"
 & "he slider and one of its endpoints. The \n   projection of \"b\" onto t"
 & "he slider\'s axis is the location of \n   the slider\'s thumb. \n\n   T"
 & "he location of the thumb determine\'s the slider\'s value. The \n   val"
 & "ue is defined as the fraction of the distance the thumb is \n   from \""
 & "a\" to \"c\". Hence, when the thumb is within the bounds \n   of the sl"
 & "ider, the slider\'s value is in the interval [0, 1]. \n*)\n\n(* \\secti"
 & "on{Slider Values} *)\n\nFUNC res = Value(a, b, c) IS \n  res * (CAR(c) "
 & "- CAR(a)) = CAR(b) - CAR(a) \nEND;\n\n(* \"res\" is the value of the sl"
 & "ider determined by the points \n   \"a\", \"b\", and \"c\". *)\n\nFUNC "
 & "b = ThumbPoint(a, c, t) IS b = (t, 0) REL (a, c) END;\n\n(* \"b\" satis"
 & "fies \"t = Value(a,b,c)\". *)\n\n(* \\section{Drawing Sliders} *)\n\nCO"
 & "NST Invisible = 0, Visible = 1, DefaultVisibility = Visible;\n\n(* This"
 & " module maintains a ``current visibility\'\', which \n   determines whe"
 & "ther the \"Draw\" procedure draws anything or \n   not. *)\n\nPRIVATE V"
 & "AR visibility := DefaultVisibility;\n\nPROC SetVisibility(vis) IS visib"
 & "ility := vis END;\n\nUI SetTool(SetVisibility);\n\n(* Set the current v"
 & "isibility to \"vis\", which should be either \n   \"Invisible\" or \"Vi"
 & "sible\". *)\n\nUI Param(SetVisibility, DefaultVisibility);\n\nUI Param("
 & "SetVisibility, Invisible);\n\nUI Param(SetVisibility, Visible);\n\nCONS"
 & "T HideValue = 0, ShowValue = 1, DefaultValueVis = ShowValue;\n\n(* This"
 & " module maintains a current ``value visibility\'\', which \n   controls"
 & " whether the \"Draw\" procedure shows the slider\'s \n   value";

CONST E76_0 =
   ". *)\n\nPRIVATE VAR valueVis := DefaultValueVis;\n\nPROC SetValueVis(vi"
 & "s) IS valueVis := vis END;\n\nUI SetTool(SetValueVis);\n\n(* Set the cu"
 & "rrent value visibility to \"vis\", which should be \n   either \"HideVa"
 & "lue\" or \"ShowValue\". *)\n\nUI Param(SetValueVis, DefaultValueVis);\n"
 & "\nUI Param(SetValueVis, HideValue);\n\nUI Param(SetValueVis, ShowValue)"
 & ";\n\nPRIVATE CONST Gap = 5, ThumbW = 5;\n\nPRIVATE PROC DrawTrackHor(a,"
 & " b) IS \n  VAR c, d, e, f IN \n    c := Geometry.HorVer(a, b); \n    d "
 & ":= Geometry.HorVer(b, a); \n    e := (-1, -0) REL (a, d); \n    f := (-"
 & "1, -0) REL (c, b); \n    SAVE PS IN \n      PS.SetEndStyle(PS.SquareEnd"
 & "s); \n      PS.MoveTo(a); \n      PS.LineTo(c); \n      PS.MoveTo(d); \n"
 & "      PS.LineTo(e); \n      PS.MoveTo(b); \n      PS.LineTo(f); \n     "
 & " PS.Stroke() \n    END \n  END \nEND;\n\nPRIVATE PROC DrawThumbHor0(a, "
 & "b) IS \n  VAR c IN \n    c := R2.PlusX(b, ThumbW / 2); \n    Rect.DrawC"
 & "(a, c); \n    SAVE PS IN PS.SetColor(Color.Grey75); PS.Fill() END; \n  "
 & "  PS.Stroke() \n  END \nEND;\n\nPRIVATE PROC DrawThumbHor(a, b, c) IS \n"
 & "  VAR d, e IN \n    d := Geometry.HorVer(a, b); \n    e := Geometry.Hor"
 & "Ver(c, b); \n    DrawThumbHor0(d, e) \n  END \nEND;\n\nPRIVATE CONST De"
 & "cimal = Text.GetChar(\".\", 0);\n\nPRIVATE PROC DrawValue(a, b, c) IS \n"
 & "  VAR d, e, val, dotPos, str IN \n    d := Geometry.HorVer(c, a); \n   "
 & " e := Geometry.Mid(d, c); \n    val := Text.FromNum(Value(a, b, c), 1);"
 & " \n    dotPos := Text.FindChar(val, Decimal); \n    IF \n      dotPos ="
 & " -1 -> val := val & \".00\" \n    | DO Text.Length(val) - dotPos <= 2 -"
 & "> val := val & \"0\" OD \n    FI; \n    str := \"Value = \" & val; \n  "
 & "  IF \n      CDR(c) > CDR(a) -> \n        Type.C(R2.PlusY(d, Gap), \"0\""
 & "); \n        Type.C(R2.PlusY(c, Gap), \"1\"); \n        Type.C(R2.PlusY"
 & "(e, Gap), str) \n    | TypeLinesC.North(d, \"0\"); \n      TypeLinesC.N"
 & "orth(c, \"1\"); \n      TypeLinesC.North(e, str) \n    FI \n  END \nEND"
 & ";\n\nPROC Draw(a, b, c) IS \n  IF \n    visibility = Visible -> \n     "
 & " SAVE PS IN \n        PS.SetWidth(1.5); \n        DrawTrackHor(a, c); \n"
 & "        DrawThumbHor(a, b, c); \n        IF v";

CONST E76_1 =
   "alueVis = ShowValue -> DrawValue(a, b, c) | SKIP FI \n      END | SKIP "
 & "\n  FI \nEND;\n\nUI PointTool(Draw);\n\n(* If the current visibility is"
 & " \"Visible\", draw a horizontal \n   slider with endpoints \"a\" and \""
 & "c\", and thumb position \"b\". \n   The horizontal axis of the slider p"
 & "asses through \"a\", and its \n   vertical extent is determined by the "
 & "vertical position of \n   \"c\". The point \"b\" controls the horizonta"
 & "l position of the \n   slider\'s thumb. \n\n   If the current value vis"
 & "ibility is \"ShowValue\", the slider is \n   annotated with its current"
 & " value, rendered in the current \n   font. The value is printed above o"
 & "r below the slider\'s thumb \n   as \"c\" is above or below the slider\'"
 & "s axis. *)\n\n(* \\section{Constraining Sliders} \n\n   The following p"
 & "redicates all constrain a point \"p\" to lie \n   along a geometric sha"
 & "pe such as a line or circle according to \n   the value of a slider \"a"
 & "\", \"b\", \"c\". In all of these \n   predicates, the slider points \""
 & "a\", \"b\", \"c\" are the first \n   three arguments, and the constrain"
 & "ed point \"p\" is the last \n   argument (with the exception of the \"O"
 & "nLine\" constraint). *)\n\nPRED OnLine(a, b, c, l0, p, l1) IS \n  (E t "
 & "= Value(a, b, c) :: p = (t, 0) REL (l0, l1)) \nEND;\n\nUI PointTool(OnL"
 & "ine);\n\n(* Constrains the point \"p\" to be the point on the segment w"
 & "ith \n   endpoints \"l0\" and \"l1\" whose relative position along that"
 & " \n   segment is the value of the slider \"a\", \"b\", \"c\". *)\n\nPRE"
 & "D OnCurve(a, b, c, b0, b1, b2, b3, p) IS \n  (E t = Value(a, b, c) :: p"
 & " = Bezier.AtT(b0, b1, b2, b3, t)) \nEND;\n\nUI PointTool(OnCurve);\n\n("
 & "* Constrains the point \"p\" to be the point on the Bezier curve \n   d"
 & "etermined by \"b0\", \"b1\", \"b2\", and \"b3\" whose relative \n   pos"
 & "ition along that curve is the value of the slider \"a\", \n   \"b\", \""
 & "c\". *)\n\nPRIVATE PRED OnCircle0(a, b, c, c0, c1, p, k) IS \n  (E t = "
 & "k * Value(a, b, c) :: p = (COS(t), SIN(t)) REL (c0, c1)) \nEND;\n\nPRED"
 & " OnCircle(a, b, c, c0, c1, p) IS \n  OnCircle0(a, b, c, c0, c1, p, -2 *"
 & " Math.Pi) \nEND;\n\nPRED OnCircleCC(a, b, c, c0, c1, p) IS \n  OnC";

CONST E76_2 =
   "ircle0(a, b, c, c0, c1, p, 2 * Math.Pi) \nEND;\n\nUI PointTool(OnCircle"
 & ");\n\nUI PointTool(OnCircleCC);\n\n(* The point \"p\" is on the circle "
 & "with center \"c0\" and radius \n   point \"c1\". Its position around th"
 & "e circle measured in the \n   clockwise and counter-clockwise direction"
 & ", respectfully, from \n   \"c1\" is proportional to the value of the sl"
 & "ider \"a\", \"b\", \n   \"c\". *)\n\nPRED OnSemi(a, b, c, c0, c1, p) IS"
 & " \n  OnCircle0(a, b, c, c0, c1, p, -Math.Pi) \nEND;\n\nPRED OnSemiCC(a,"
 & " b, c, c0, c1, p) IS \n  OnCircle0(a, b, c, c0, c1, p, Math.Pi) \nEND;\n"
 & "\nUI PointTool(OnSemi);\n\nUI PointTool(OnSemiCC);\n\n(* The point \"p\""
 & " is on the semi-circle with center \"c0\" and \n   radius point \"c1\"."
 & " Its position around the semi-circle \n   measured in the clockwise and"
 & " counter-clockwise direction, \n   respectfully, from \"c1\" is proport"
 & "ional to the value of the \n   slider \"a\", \"b\", \"c\". *)\n\nPRED O"
 & "nQuarter(a, b, c, c0, c1, p) IS \n  OnCircle0(a, b, c, c0, c1, p, -Math"
 & ".Pi / 2) \nEND;\n\nPRED OnQuarterCC(a, b, c, c0, c1, p) IS \n  OnCircle"
 & "0(a, b, c, c0, c1, p, Math.Pi / 2) \nEND;\n\nUI PointTool(OnQuarter);\n"
 & "\nUI PointTool(OnQuarterCC);\n\n(* The point \"p\" is on the quarter-ci"
 & "rcle with center \"c0\" and \n   radius point \"c1\". Its position arou"
 & "nd the quarter-circle \n   measured in the clockwise and counter-clockw"
 & "ise direction, \n   respectfully, from \"c1\" is proportional to the va"
 & "lue of the \n   slider \"a\", \"b\", \"c\". *)\n\nPRED OnArc(a, b, c, a"
 & "1, a2, a3, p) IS \n  OnCircle0(a, b, c, a2, a1, p, Angle.CC(a1, a2, a3)"
 & ") \nEND;\n\nUI PointTool(OnArc);\n\n(* The point \"p\" is on the direct"
 & "ed circular arc with center \n   \"a2\", starting at \"a1\" and ending "
 & "at the line through \"a1\" \n   and \"a3\". The position of \"p\" along"
 & " the arc is proportional \n   to the value of the slider \"a\", \"b\", "
 & "\"c\". *)\n\nPRED AtAngle1(a, b, c, p, q, max) IS \n  (E t = Value(a, b"
 & ", c), delta = R2.Minus(q, p), dx, dy :: \n    delta = (dx, dy) AND t * "
 & "max = ATAN(dy, dx)) \nEND;\n\n(* The ray \"pq\" forms an angle in the i"
 & "nterval \"[0, max]\" to the \n   horizontal. The angle in that interv";

CONST E76_3 =
   "al is proportional to the \n   value of the slider \"a\", \"b\", \"c\"."
 & " *)\n\nPRED AtAngle2(a, b, c, p, q, min, max) IS \n  (E t = Value(a, b,"
 & " c), t2 = t * (max - min) + min, \n     delta = R2.Minus(q, p), dx, dy "
 & ":: \n    delta = (dx, dy) AND t2 = ATAN(dy, dx)) \nEND;\n\n(* The ray \""
 & "pq\" forms an angle in the interval \"[min, max]\" to \n   the horizont"
 & "al. The angle in that interval is proportional to \n   the value of the"
 & " slider \"a\", \"b\", \"c\". *)\n\n(* \\section{Saving/Restoring State}"
 & " *)\n\nPRIVATE VAR history := NIL;\n\nPROC Save() IS history := ((visib"
 & "ility, valueVis), history) END;\n\nPROC Restore() IS \n  VAR head IN \n"
 & "    head := CAR(history); \n    visibility := CAR(head); \n    valueVis"
 & " := CDR(head) \n  END; \n  history := CDR(history) \nEND;\n\nUI PointTo"
 & "ol(Save);\n\nUI PointTool(Restore);\n\n(* Save/restore the current modu"
 & "le state. *)\n\n";

CONST E77 =
   "% Inserted file: juno-app/src/rsrc/prologue.ps\n% Last modified on Mon "
 & "Oct  9 14:16:28 PDT 1995 by heydon\n\n% The following procedures are us"
 & "ed to lazily redefine fonts to have\n% an ISOLatin1 encoding. This file"
 & " should be inserted in the Prologue\n% section of the PostScript file t"
 & "hat adheres to the DSC.\n\n% Of these procedures, the only one that sho"
 & "uld be used in the body of\n% a document is \"FindFontISO\", which look"
 & "s up the ISOLatin1-encoded\n% version of a font, and lazily creates the"
 & " ISOLatin1-encoded version\n% if it was not defined in the \"FontDirect"
 & "ory\".\n\n% ISOLatin1\n%\n% This defines the ISOLatin1 encoding vector,"
 & " which is defined under\n% the name \"ISOLatin1Encoding\" in Level-2 Po"
 & "stScript, but is defined\n% here for Level-1 compatibility. See Appendi"
 & "ces E.5 and E.7 of the\n% \"PostScript Language Reference Manual\", Sec"
 & "ond Edition.\n%\n/ISOLatin1 [\n/.notdef /.notdef /.notdef /.notdef /.no"
 & "tdef /.notdef /.notdef /.notdef\n/.notdef /.notdef /.notdef /.notdef /."
 & "notdef /.notdef /.notdef /.notdef\n/.notdef /.notdef /.notdef /.notdef "
 & "/.notdef /.notdef /.notdef /.notdef\n/.notdef /.notdef /.notdef /.notde"
 & "f /.notdef /.notdef /.notdef /.notdef\n/space /exclam /quotedbl /number"
 & "sign /dollar /percent /ampersand /quoteright\n/parenleft /parenright /a"
 & "sterisk /plus /comma /minus /period /slash\n/zero /one /two /three /fou"
 & "r /five /six /seven\n/eight /nine /colon /semicolon /less /equal /great"
 & "er /question\n/at /A /B /C /D /E /F /G\n/H /I /J /K /L /M /N /O\n/P /Q "
 & "/R /S /T /U /V /W\n/X /Y /Z /bracketleft /backslash /bracketright /asci"
 & "icircum /underscore\n/quoteleft /a /b /c /d /e /f /g\n/h /i /j /k /l /m"
 & " /n /o\n/p /q /r /s /t /u /v /w\n/x /y /z /braceleft /bar /braceright /"
 & "asciitilde /.notdef\n/.notdef /.notdef /.notdef /.notdef /.notdef /.not"
 & "def /.notdef /.notdef\n/.notdef /.notdef /.notdef /.notdef /.notdef /.n"
 & "otdef /.notdef /.notdef\n/dotlessi /grave /acute /circumflex /tilde /ma"
 & "cron /breve /dotaccent\n/dieresis /.notdef /ring /cedilla /.notdef /hun"
 & "garumlaut /ogonek /caron\n/space /exclamdown /cent /sterling";

CONST E77_0 =
   " /currency /yen /brokenbar /section\n/dieresis /copyright /ordfeminine "
 & "/guillemotleft /logicalnot /hyphen\n  /registered /macron\n/degree /plu"
 & "sminus /twosuperior /threesuperior /acute /mu /paragraph\n  /periodcent"
 & "ered\n/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /"
 & "onehalf\n  /threequarters /questiondown\n/Agrave /Aacute /Acircumflex /"
 & "Atilde /Adieresis /Aring /AE /Ccedilla\n/Egrave /Eacute /Ecircumflex /E"
 & "dieresis /Igrave /Iacute /Icircumflex /Idieresis\n/Eth /Ntilde /Ograve "
 & "/Oacute /Ocircumflex /Otilde /Odieresis /multiply\n/Oslash /Ugrave /Uac"
 & "ute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls\n/agrave /aacute"
 & " /acircumflex /atilde /adieresis /aring /ae /ccedilla\n/egrave /eacute "
 & "/ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis\n/eth /"
 & "ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide\n/oslash"
 & " /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis \n] "
 & "def\n\n% name AppendISO name\n%\n% The result name is the same as the a"
 & "rgument name, but with the\n% string \"-ISO\" appended.\n%\n/AppendISO "
 & "{\n  1 dict begin\n    dup /bigstr exch length 4 add string def\n    du"
 & "p bigstr cvs pop\n    bigstr exch length (-ISO) putinterval\n    bigstr"
 & " cvn\n  end\n} def\n\n% fontname MakeISOLatin1Font -\n%\n% Looks up the"
 & " font \"fontname\", creates a new font identical to it but\n% with the "
 & "ISOLatin1 encoding, and binds the font to the name \"fontname\"\n% conc"
 & "atenated with the string \"-ISO\".\n%\n/MakeISOLatin1Font {\ndup findfo"
 & "nt\ndup length dict begin\n  {1 index /FID ne {def} {pop pop} ifelse} f"
 & "orall\n  /Encoding ISOLatin1 def\n  currentdict\nend\nexch AppendISO ex"
 & "ch\ndefinefont pop\n} def\n\n% fontname FindFontISO font\n%\n% Looks up"
 & " the font with the name \"fontname\" concatenated with the\n% string \""
 & "-ISO\". If that font is not found, it is created from the\n% font named"
 & " \"fontname\" using the \"MakeISOLatin1Font\" operator above.\n% If \"f"
 & "ontname\" is \"Symbol\", then this is equivalent to \"findfont\",\n% si"
 & "nce the Symbol font on X uses the standard encoding.\n%\n/FindFontISO {"
 & "\n  dup /Symbol ne\n ";

CONST E77_1 =
   " { dup FontDirectory exch AppendISO known not\n    { dup MakeISOLatin1F"
 & "ont } if\n    AppendISO\n  } if\n  findfont\n} def\n\n% end prologue.ps"
 & "\n";

CONST E78 =
   "MODULE List;\n\n(* Procedures for manipulating lists *)\n\n(* A value \""
 & "l\" is a list if \"l\" is either NIL or a \n   pair whose CDR is a list"
 & ". A value \"l\" is a proper \n   list if \"l\" is a list other than NIL"
 & ". *)\n\nPROC res := Member(x, l) IS \n  DO l # NIL AND x # CAR(l) -> l "
 & ":= CDR(l) OD; \n  IF l = NIL -> res := NIL | res := x FI \nEND;\n\n(* R"
 & "eturns \"x\" if \"x\" appears as a top-level element \n   of the list \""
 & "l\", and \"NIL\" otherwise. *)\n\nPROC res := Length(l) IS \n  res := 0"
 & "; \n  DO l # NIL -> res := res + 1; l := CDR(l) OD \nEND;\n\n(* Return "
 & "the number of elements of \"l\". If \"l\" is \n   NIL, return 0. A chec"
 & "ked run-time error occurs if \n   \"l\" is not a list. *)\n\nPROC res :"
 & "= Nth(l, n) IS \n  IF \n    n >= 0 -> \n      DO n > 0 -> n := n - 1; l"
 & " := CDR(l) OD; \n      res := CAR(l) \n  FI \nEND;\n\n(* Return the \"n"
 & "\"th element of \"l\", where the first \n   element is numbered zero. A"
 & " checked run-time error \n   occurs if \"l\" is not a proper list or if"
 & " \"n\" is not \n   in the range [0, Length(l)). *)\n\nPROC res := Last("
 & "l) IS \n  DO CDR(l) # NIL -> l := CDR(l) OD; res := CAR(l) \nEND;\n\n(*"
 & " Return the last element of \"l\". A checked run-time \n   error occurs"
 & " if \"l\" is not a proper list. *)\n\nPROC res := Prefix(l, num) IS \n "
 & " IF \n    num <= 0 OR l = NIL -> res := NIL \n  | res := (CAR(l), Prefi"
 & "x(CDR(l), num - 1)) \n  FI \nEND;\n\n(* Return a list of the first \"nu"
 & "m\" elements of \"l\". \n   If \"num <= 0\", return \"NIL\". If \"num >"
 & "= Length(l)\", \n   return (a copy of) \"l\". *)\n\nPROC res := Suffix("
 & "l, num) IS \n  res := SuffixFrom(l, Length(l) - num) \nEND;\n\n(* Retur"
 & "n a list of the last \"num\" elements of \"l\". If \n   \"num <= 0\", r"
 & "eturn \"NIL\". If \"num >= Length(l)\", \n   return \"l\". *)\n\nPROC r"
 & "es := SuffixFrom(l, i) IS \n  DO i > 0 AND l # NIL -> i := i - 1; l := "
 & "CDR(l) OD; \n  res := l \nEND;\n\n(* Return the longest suffix of \"l\""
 & " that does not \n   include its first \"i\" elements. If \"i <= 0\", re"
 & "turn \n   \"l\". If \"i >= Length(l)\", return \"NIL\". *)\n\nPROC res "
 & ":= Reverse(l) IS \n  res := NIL; \n  DO \n    VAR u, v IN \n      l = ("
 & "u, v) -> res :=";

CONST E78_0 =
   " (u, res); l := v \n    END \n  OD \nEND;\n\n(* Return the list contain"
 & "ing the elements of \"l\" in \n   reverse order. If \"l\" is not a pair"
 & ", return NIL. *)\n\nPROC res := Sum(l) IS \n  res := 0; \n  DO l # NIL "
 & "-> res := res + CAR(l); l := CDR(l) OD \nEND;\n\n(* Return the sum of t"
 & "he elements of \"l\". If \"l\" is \n   NIL, return 0. A checked run-tim"
 & "e error occurs if \n   \"l\" is not a list of numbers. *)\n\n";

BEGIN
END JunoBundle.