pom.xml0000644000175000017500000000226010635744456011431 0ustar user01user01 vectorgraphics org.freehep 2.1.1 4.0.0 org.freehep freehep-graphicsio-ps FreeHEP PS Driver FreeHEP (Encapsulated) PostScript Driver freehep-maven Maven FreeHEP http://java.freehep.org/maven2 org.freehep freehep-graphicsio 2.1.1 org.freehep freehep-graphicsio-tests 2.1.1 junit junit src/0000700000175000017500000000000011343126134010651 5ustar user01user01src/main/0000700000175000017500000000000011343126134011575 5ustar user01user01src/main/java/0000700000175000017500000000000011343126134012516 5ustar user01user01src/main/java/org/0000700000175000017500000000000011343126132013303 5ustar user01user01src/main/java/org/freehep/0000700000175000017500000000000011343126132014721 5ustar user01user01src/main/java/org/freehep/graphicsio/0000700000175000017500000000000011343126132017051 5ustar user01user01src/main/java/org/freehep/graphicsio/ps/0000700000175000017500000000000011343126134017475 5ustar user01user01src/main/java/org/freehep/graphicsio/ps/PSFontTable.java0000644000175000017500000002266410562070146022510 0ustar user01user01// Copyright 2001-2005, FreeHEP. package org.freehep.graphicsio.ps; import java.awt.Font; import java.awt.font.FontRenderContext; import java.awt.font.TextAttribute; import java.io.IOException; import java.io.OutputStream; import java.io.PrintStream; import java.util.HashSet; import java.util.Map; import java.util.Properties; import org.freehep.graphics2d.font.CharTable; import org.freehep.graphics2d.font.FontUtilities; import org.freehep.graphics2d.font.Lookup; import org.freehep.graphicsio.FontConstants; import org.freehep.graphicsio.font.FontEmbedderType1; import org.freehep.graphicsio.font.FontIncluder; import org.freehep.graphicsio.font.FontTable; /** * FontTable for PS files. The fonts name is used as a reference for the font. * When the font is first used, it is embedded to the file if it is not a * standard font. If it is unknown it is not substituted. * * @author Simon Fischer * @version $Id: PSFontTable.java 10516 2007-02-06 21:11:19Z duns $ */ public class PSFontTable extends FontTable { private OutputStream out; private FontRenderContext context; public PSFontTable(OutputStream out, FontRenderContext context) { super(); this.out = out; this.context = context; } public CharTable getEncodingTable() { return Lookup.getInstance().getTable("STDLatin"); } protected void firstRequest(Entry e, boolean embed, String embedAs) throws IOException { FontIncluder fontIncluder = null; e.setWritten(true); // There are NO standard fonts in PS. // if (isStandardFont(e.getFont())) return; out.flush(); if (embed) { if (embedAs.equals(FontConstants.EMBED_FONTS_TYPE3)) { fontIncluder = new PSFontEmbedder(context, new PrintStream(out)); } else if (embedAs.equals(FontConstants.EMBED_FONTS_TYPE1)) { fontIncluder = new FontEmbedderType1(context, out, true); } else { System.err .println("PSFontTable: not a valid value for embedAs: " + embedAs); } } else { // FIXME: set the best standard font // e.setReference(standardfontName) return; } fontIncluder .includeFont(e.getFont(), e.getEncoding(), e.getReference()); out.flush(); } /** * Java font names -> PS Font names, used by {@link #normalize(java.util.Map)} */ private static final Properties replaceFonts = new Properties(); static { replaceFonts.setProperty("timesroman", "Times"); replaceFonts.setProperty("dialog", "Helvetica"); replaceFonts.setProperty("dialoginput", "Courier-New"); // FIXME: works well on windows, others? replaceFonts.setProperty("serif", "Times"); replaceFonts.setProperty("sansserif", "Helvetica"); // FIXME: works well on windows, others? replaceFonts.setProperty("monospaced", "Courier-New"); replaceFonts.setProperty("typewriter", "Courier-New"); } /** * fonts that have no TextAttribute.WEIGHT and TextAttribute.POSTURE, * used by {@link #createFontReference(java.awt.Font)} */ private static final HashSet ignoreAtributes = new HashSet(); static { ignoreAtributes.add("Symbol"); ignoreAtributes.add("ZapfDingbats"); } /** * removes any transformation and superscript, changes the names * to PS font name * * @param font * @return derived font */ protected Font substituteFont(Font font) { Map attributes = FontUtilities.getAttributes(font); // change names // normalize(attributes); // remove transformations attributes.remove(TextAttribute.TRANSFORM); attributes.remove(TextAttribute.SUPERSCRIPT); return new Font(attributes); } /** * Uses the font name as a reference. Whitespace is stripped. The font style * (italic/bold) is added as a suffix delimited by a dash. * Uses {@link #normalize(java.util.Map)} */ protected String createFontReference(Font font) { Map /**/ attributes = FontUtilities.getAttributes(font); normalize(attributes); // replace the name StringBuffer result = new StringBuffer(); // insert family at the end because oft the "-" between // name and TextAttribute String family = (String) attributes.get(TextAttribute.FAMILY); // weight Object weight = ignoreAtributes.contains(family) ? null : attributes.get(TextAttribute.WEIGHT); if (TextAttribute.WEIGHT_BOLD.equals(weight)) { result.append("Bold"); } else if (TextAttribute.WEIGHT_DEMIBOLD.equals(weight)) { result.append("DemiBold"); } else if (TextAttribute.WEIGHT_DEMILIGHT.equals(weight)) { result.append("DemiLight"); } else if (TextAttribute.WEIGHT_EXTRA_LIGHT.equals(weight)) { result.append("ExtraLight"); } else if (TextAttribute.WEIGHT_EXTRABOLD.equals(weight)) { result.append("ExtraBold"); } else if (TextAttribute.WEIGHT_HEAVY.equals(weight)) { result.append("Heavy"); } else if (TextAttribute.WEIGHT_LIGHT.equals(weight)) { result.append("Light"); } else if (TextAttribute.WEIGHT_MEDIUM.equals(weight)) { result.append("Medium"); } else if (TextAttribute.WEIGHT_REGULAR.equals(weight)) { // result.append("WRegular"); } else if (TextAttribute.WEIGHT_SEMIBOLD.equals(weight)) { result.append("SemiBold"); } else if (TextAttribute.WEIGHT_ULTRABOLD.equals(weight)) { result.append("UltraBold"); } // italic Object posture = ignoreAtributes.contains(family) ? null : attributes.get(TextAttribute.POSTURE); if (TextAttribute.POSTURE_OBLIQUE.equals(posture)) { if (family.equals("Times")) { result.append("Italic"); } else { result.append("Oblique"); } } else if (TextAttribute.POSTURE_REGULAR.equals(posture)) { // result.append("IRegular"); } // Times -> Times-Roman if (family.equals("Times") && result.length() == 0) { result.append("Roman"); } // underline is not a specific font // Object ul = font.getAttributes().get(TextAttribute.UNDERLINE); // if (TextAttribute.UNDERLINE_LOW_DASHED.equals(ul)) { // result.append("UnderlineLowDashed"); // } else if (TextAttribute.UNDERLINE_LOW_DOTTED.equals(ul)) { // result.append("UnderlineLowDotted"); // } else if (TextAttribute.UNDERLINE_LOW_GRAY.equals(ul)) { // result.append("UnderlineLowGray"); // } else if (TextAttribute.UNDERLINE_LOW_ONE_PIXEL.equals(ul)) { // result.append("UnderlineLowOnePixel"); // } else if (TextAttribute.UNDERLINE_ON.equals(ul)) { // result.append("Underline"); // } // strike through is not a specific font // if (font.getAttributes().get(TextAttribute.STRIKETHROUGH) != null) { // result.append("StrikeThrough"); // } // width is not a specific font // Object width = font.getAttributes().get(TextAttribute.WIDTH); // if (TextAttribute.WIDTH_CONDENSED.equals(width)) { // result.append("Condensed"); // } else if (TextAttribute.WIDTH_EXTENDED.equals(width)) { // result.append("Extended"); // } else if (TextAttribute.WIDTH_REGULAR.equals(width)) { // // result.append("WRegular"); // } else if (TextAttribute.WIDTH_SEMI_CONDENSED.equals(width)) { // result.append("SemiCondensed"); // } else if (TextAttribute.WIDTH_SEMI_EXTENDED.equals(width)) { // result.append("SemiExtended"); // } // insert "name-" at the beginning or return plain "name" if (result.length() > 0) { result.insert(0, "-"); result.insert(0, attributes.get(TextAttribute.FAMILY)); } else { result.append(attributes.get(TextAttribute.FAMILY)); } return result.toString(); } /** * Replaces TextAttribute.FAMILY by values of replaceFonts. * Whitespace is family name stripped. When a * font created using the result of this method the transformation would be: * * java.awt.Font[family=SansSerif,name=SansSerif,style=plain,size=30]
* will result to:
* java.awt.Font[family=SansSerif,name=Helvetica,style=plain,size=30]

* * Uses {@link FontTable#normalize(java.util.Map)} first. * * @param attributes with font name to change */ public static void normalize(Map /**/ attributes) { // dialog.bold -> Dialog with TextAttribute.WEIGHT_BOLD FontTable.normalize(attributes); // get replaced font family name (Yes it's right, not the name!) String family = replaceFonts.getProperty( ((String) attributes.get(TextAttribute.FAMILY)).toLowerCase()); if (family == null) { family = (String) attributes.get(TextAttribute.FAMILY); } // remove spaces family = family.replaceAll(" ", ""); // store family attributes.put(TextAttribute.FAMILY, family); } } src/main/java/org/freehep/graphicsio/ps/AbstractPSExportFileType.java0000644000175000017500000000772510633527176025253 0ustar user01user01// Copyright 2003-2007, FreeHEP. package org.freehep.graphicsio.ps; import java.awt.Component; import java.awt.Dimension; import java.io.IOException; import java.io.OutputStream; import java.util.Properties; import javax.swing.JLabel; import javax.swing.JPanel; import org.freehep.graphics2d.VectorGraphics; import org.freehep.graphicsio.ImageConstants; import org.freehep.graphicsio.InfoConstants; import org.freehep.graphicsio.AbstractVectorGraphicsIO; import org.freehep.graphicsio.exportchooser.AbstractExportFileType; import org.freehep.graphicsio.exportchooser.BackgroundPanel; import org.freehep.graphicsio.exportchooser.FontPanel; import org.freehep.graphicsio.exportchooser.ImageTypePanel; import org.freehep.graphicsio.exportchooser.InfoPanel; import org.freehep.graphicsio.exportchooser.OptionCheckBox; import org.freehep.graphicsio.exportchooser.OptionComboBox; import org.freehep.graphicsio.exportchooser.OptionPanel; import org.freehep.graphicsio.exportchooser.PageLayoutPanel; import org.freehep.graphicsio.exportchooser.PageMarginPanel; import org.freehep.swing.layout.TableLayout; import org.freehep.util.UserProperties; /** * * @author Charles Loomis, Simon Fischer * @version $Id: AbstractPSExportFileType.java 12753 2007-06-12 22:32:31Z duns $ */ public abstract class AbstractPSExportFileType extends AbstractExportFileType { protected static final String bitsList[] = { "1", "2", "4", "8" }; protected OptionPanel preview; protected OptionCheckBox previewCheckBox; public boolean hasOptionPanel() { return true; } public String[] getMIMETypes() { return new String[] { "application/postscript" }; } public JPanel createOptionPanel(Properties user) { UserProperties options = new UserProperties(user, PSGraphics2D .getDefaultProperties()); preview = new OptionPanel("Preview Image"); previewCheckBox = new OptionCheckBox(options, PSGraphics2D.PREVIEW, "Include preview"); preview.add(TableLayout.FULL, previewCheckBox); final JLabel previewLabel = new JLabel("Bits per sample"); preview.add(TableLayout.LEFT, previewLabel); previewCheckBox.enables(previewLabel); final OptionComboBox previewComboBox = new OptionComboBox(options, PSGraphics2D.PREVIEW_BITS, bitsList); preview.add(TableLayout.RIGHT, previewComboBox); previewCheckBox.enables(previewComboBox); preview.setVisible(false); // rootKeys for FontProperties String rootKey = PSGraphics2D.class.getName(); String abstractRootKey = AbstractVectorGraphicsIO.class.getName(); JPanel infoPanel = new InfoPanel(options, rootKey, new String[] { InfoConstants.FOR, InfoConstants.TITLE }); // TableLayout.LEFT Panel JPanel leftPanel = new OptionPanel(); leftPanel .add(TableLayout.COLUMN, new PageLayoutPanel(options, rootKey)); leftPanel .add(TableLayout.COLUMN, new PageMarginPanel(options, rootKey)); leftPanel.add(TableLayout.COLUMN_FILL, new JLabel()); // TableLayout.RIGHT Panel JPanel rightPanel = new OptionPanel(); rightPanel.add(TableLayout.COLUMN, new BackgroundPanel(options, rootKey, false)); rightPanel.add(TableLayout.COLUMN, preview); rightPanel.add(TableLayout.COLUMN, new ImageTypePanel(options, rootKey, new String[] { ImageConstants.SMALLEST, ImageConstants.ZLIB, ImageConstants.JPG })); rightPanel.add(TableLayout.COLUMN, new FontPanel(options, rootKey, abstractRootKey)); rightPanel.add(TableLayout.COLUMN_FILL, new JLabel()); // Make the full panel. OptionPanel optionsPanel = new OptionPanel(); optionsPanel.add("0 0 [5 5 5 5] wt", leftPanel); optionsPanel.add("1 0 [5 5 5 5] wt", rightPanel); optionsPanel.add("0 1 2 1 [5 5 5 5] wt", infoPanel); optionsPanel.add(TableLayout.COLUMN_FILL, new JLabel()); return optionsPanel; } public VectorGraphics getGraphics(OutputStream os, Component target) throws IOException { return new PSGraphics2D(os, target); } public VectorGraphics getGraphics(OutputStream os, Dimension dimension) throws IOException { return new PSGraphics2D(os, dimension); } } src/main/java/org/freehep/graphicsio/ps/PSFontEmbedder.java0000644000175000017500000001656310466645574023211 0ustar user01user01// Copyright 2001-2005 FreeHEP package org.freehep.graphicsio.ps; import java.awt.Shape; import java.awt.font.FontRenderContext; import java.awt.font.GlyphMetrics; import java.awt.geom.PathIterator; import java.awt.geom.Rectangle2D; import java.io.IOException; import java.io.PrintStream; import org.freehep.graphics2d.font.CharTable; import org.freehep.graphicsio.font.FontEmbedder; /** * Type 3 Font Embedder class for Postscript. * * @author Sami Kama * @version $Id: PSFontEmbedder.java 8584 2006-08-10 23:06:37Z duns $ */ public class PSFontEmbedder extends FontEmbedder { protected int dictSize = 9; protected PrintStream os; private PSPathConstructor pc; public PSFontEmbedder(FontRenderContext context, PrintStream os) { super(context); this.os = os; pc = new PSPathConstructor(os, false, true); } /** * Writes Glyph definition of given glyph. */ protected void writeGlyph(String unicodeName, Shape glyph, GlyphMetrics glyphMetrics) throws IOException { double[] points = new double[6]; double[] lastMove = new double[2]; double[] lastPoint = new double[2]; double[] controlPoint = new double[4]; PathIterator pIter = glyph.getPathIterator(null); os.println("\t/" + unicodeName); os.println("\t\t{"); while (!pIter.isDone()) { switch (pIter.currentSegment(points)) { case PathIterator.SEG_MOVETO: pc.move(points[0], points[1]); lastMove[0] = lastPoint[0] = points[0]; lastMove[1] = lastPoint[1] = points[1]; break; case PathIterator.SEG_LINETO: pc.line(points[0], points[1]); lastPoint[0] = points[0]; lastPoint[1] = points[1]; break; case PathIterator.SEG_QUADTO: controlPoint[0] = points[0] + (lastPoint[0] - points[0]) / 3.; controlPoint[1] = points[1] + (lastPoint[1] - points[1]) / 3.; controlPoint[2] = points[0] + (points[2] - points[0]) / 3.; controlPoint[3] = points[1] + (points[3] - points[1]) / 3.; pc.cubic(controlPoint[0], controlPoint[1], controlPoint[2], controlPoint[3], points[2], points[3]); lastPoint[0] = points[2]; lastPoint[1] = points[3]; break; case PathIterator.SEG_CUBICTO: pc.cubic(points[0], points[1], points[2], points[3], points[4], points[5]); lastPoint[0] = points[4]; lastPoint[1] = points[5]; break; case PathIterator.SEG_CLOSE: pc.closePath(lastMove[0], lastMove[1]); lastPoint[0] = 0.; lastPoint[1] = 0.; break; } pIter.next(); } // System.out.println("done once"); os.println("fill"); os.println("\t\t} def"); os.println(); } /** writes metric dictionary for the font. */ protected void writeWidths(double[] widths) throws IOException { os.println("\t/Metrics " + (getNODefinedChars() + 1) + " dict def"); os.println("\t\tMetrics begin"); os.println("\t\t/" + NOTDEF + " " + (int) getUndefinedWidth() + " def"); for (int i = 1; i < 256; i++) { if (getCharName(i) != null) { os.println("\t\t/" + getCharName(i) + " " + widths[i] + " def"); } } os.println("\tend"); } /** writes encoding array. */ protected void writeEncoding(CharTable charTable) throws IOException { os.println("\t/Encoding 256 array def"); os.println("\t\t\t0 1 255 {Encoding exch /.notdef put}for"); for (int i = 1; i < 256; i++) { String name = charTable.toName(i); if (name != null) { os.println("\t\tEncoding " + i + " /" + name + " put"); } } } /** Writes initial parts of the font dictionary. */ protected void openIncludeFont() throws IOException { Rectangle2D boundingBox = getFontBBox(); double llx = boundingBox.getX(); double lly = -boundingBox.getY() - boundingBox.getHeight(); double urx = boundingBox.getX() + boundingBox.getWidth(); double ury = -boundingBox.getY(); os.println("9 dict begin"); os.println("/FontType 3 def"); os.println("/FontMatrix [" + (1 / FONT_SIZE) + " 0 0 " + (1 / FONT_SIZE) + " 0 0]def"); os.println("/FontBBox [" + (int) llx + " " + (int) lly + " " + (int) urx + " " + (int) ury + " ] def"); // os.println("\t /"+getFontName()+" "+(getNODefinedChars()+1)+" dict // def"); } /** Closes font dictionary. */ protected void closeIncludeFont() throws IOException { this.writeBuildProcs(); } /* * Writes BuildGlyph and BuildChar procedures of font. */ protected void writeBuildProcs() throws IOException { Rectangle2D boundingBox = getFontBBox(); double llx = boundingBox.getX(); double lly = -boundingBox.getY() - boundingBox.getHeight(); double urx = boundingBox.getX() + boundingBox.getWidth(); double ury = -boundingBox.getY(); os.println("\t/BuildGlyph"); os.println("\t\t{ 2 copy exch /Metrics get exch "); os.println("\t\t\t2 copy known {get}{pop pop " + getUndefinedWidth() + "} ifelse"); os.println("\t\t\t0"); os.println("\t\t\t" + (int) llx + " " + (int) lly + " " + (int) urx + " " + (int) ury); os.println("\t\t\tsetcachedevice"); // ????? os.println("\t\t\texch /"+getFontName()+" get exch"); os.println("\t\t\texch /CharProcs get exch"); os.println("\t\t\t2 copy known not"); os.println("\t\t\t\t\t{pop /.notdef}"); os.println("\t\t\t\tif"); os.println("\t\t\tget exec"); os.println("\t\t} bind def"); os.println(); os.println("\t/BuildChar"); os.println("\t\t{ 1 index /Encoding get exch get"); os.println("\t\t 1 index /BuildGlyph get exec"); os.println("\t } bind def"); } /** * Writes necessary commands to find Glyphs dictionary from font * dictionary and puts it on the stack, opens dictionary to write glyph * definitions. */ protected void openGlyphs() throws IOException { // ??????? os.println("\t/"+getFontName()+" "+(getNODefinedChars()+1)+" // dict def"); os.println("\t/CharProcs " + (getNODefinedChars() + 1) + " dict def"); os.println("\tCharProcs begin"); // os.print("dup /"+getFontName()+" get begin"); os.println("\t\t\t%define Glyph dictionary and start filling"); } /** Closes Glyphs dictionary. */ protected void closeGlyphs() throws IOException { os.print("\tend"); os.println("\t\t\t\t% close glyph dict. "); } /** Closes font dictionary. */ protected void closeEmbedFont() throws IOException { os.print("\tcurrentdict"); os.println("\t\t\t% actually put dict on the stack"); os.print("\tend"); os.println("\t\t\t% close the dictionary now"); os.println("\t/" + getFontName() + " exch definefont pop"); os.flush(); } } src/main/java/org/freehep/graphicsio/ps/EPSIEncoder.java0000644000175000017500000001760610466645574022447 0ustar user01user01// Copyright 2000, CERN, Geneva, Switzerland and University of Santa Cruz, California, U.S.A. package org.freehep.graphicsio.ps; import java.awt.Image; import java.awt.image.ImageProducer; import java.io.DataOutputStream; import java.io.IOException; import java.io.OutputStream; import org.freehep.graphicsio.ImageEncoder; /** * * @author Charles Loomis * @version $Id: EPSIEncoder.java 8584 2006-08-10 23:06:37Z duns $ */ public class EPSIEncoder extends ImageEncoder { // Number of bits per byte. final static int maxBitsPerByte = 8; // Number of bytes per scan line (maximum here is 254). final static int maxBytesPerScan = 128; // The number of bits to use to represent the grayscale. private int grayscaleBits; // Boolean which gives the orientation of the image. private boolean portrait; // The width and height of the image. int width, height; // The array to hold the pixels. byte[][] grayPixels; // An array which hold enough bytes for one scan line. Scanline scanline; // Private conversion of bytes to hex digits. private static char[] hexDigit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; // Masks to strip off last n bits. final private static byte[] lowBitMask = { (byte) 0, (byte) 1, (byte) 3, (byte) 7, (byte) 15, (byte) 31, (byte) 63, (byte) 127, (byte) 255 }; /** * Constructor from Image with number of grayscale bits to use. * * @param img The image to encode. * @param out The stream to write the GIF to. * @param grayscaleBits Number of grayscale bits to use. * @param portrait Flag indicating a portrait orientation. */ public EPSIEncoder(Image img, OutputStream out, int grayscaleBits, boolean portrait) throws IOException { super(img, new DataOutputStream(out)); this.grayscaleBits = grayscaleBits; this.portrait = portrait; } /** * Constructor from ImageProducer with number of grayscale bits to use. * * @param prod The ImageProducer to encode. * @param out The stream to write the GIF to. * @param grayscaleBits Number of grayscale bits to use. * @param portrait Flag indicating a portrait orientation. */ public EPSIEncoder(ImageProducer prod, OutputStream out, int grayscaleBits, boolean portrait) throws IOException { super(prod, new DataOutputStream(out)); this.grayscaleBits = grayscaleBits; this.portrait = portrait; } protected void encodeStart(int width, int height) throws IOException { this.width = width; this.height = height; grayPixels = new byte[height][width]; // Use the appropriate width and height depending on the orientation. int w, h; if (portrait) { w = width; h = height; } else { w = height; h = width; } // Calculate the number of lines in the image. int bitsPerScan = w * grayscaleBits; int bytesPerScan = (bitsPerScan / maxBitsPerByte) + ((bitsPerScan % maxBitsPerByte == 0) ? 0 : 1); int linesPerScan = (bytesPerScan / maxBytesPerScan) + ((bytesPerScan % maxBytesPerScan == 0) ? 0 : 1); int lines = linesPerScan * h; // Make a byte array which holds the information for one scan line. scanline = new Scanline(bytesPerScan, grayscaleBits); // Write out the header. putString("%%BeginPreview " + width + " " + height + " " + grayscaleBits + " " + lines + "\n"); } protected void encodePixels(int x, int y, int w, int h, int[] rgbPixels, int off, int scansize) throws IOException { // Save the pixels as a grayscale value. for (int row = 0; row < h; ++row) { for (int column = 0; column < w; column++) { grayPixels[y + row][column] = toGrayscale(rgbPixels[row * scansize + off + column]); } } } // Convert a value given as AARRGGBB to a single grayscale value. private byte toGrayscale(int argb) { int mask = 0xFF; double blue = ((double) ((argb >> 0) & mask)) / 255.; double green = ((double) ((argb >> 8) & mask)) / 255.; double red = ((double) ((argb >> 16) & mask)) / 255.; return (byte) (255. * Math.max(0., (1. - (0.3 * red + 0.59 * green + 0.11 * blue)))); } protected void encodeDone() throws IOException { if (portrait) { for (int row = height - 1; row >= 0; row--) { scanline.reset(); for (int col = 0; col < width; col++) { byte gray = grayPixels[row][col]; scanline.add(gray); } scanline.put(); } } else { for (int col = width - 1; col >= 0; col--) { scanline.reset(); for (int row = height - 1; row >= 0; row--) { byte gray = grayPixels[row][col]; scanline.add(gray); } scanline.put(); } } // Write out the trailer. putString("%%EndPreview\n"); } // Write a string to the file. void putString(String s) throws IOException { out.write(s.getBytes()); } // Write out a character to the file. void putChar(char c) throws IOException { out.write(c); } // Write out a byte to the GIF file void putByte(byte b) throws IOException { int highNibble = (b >> 4) & 0xF; int lowNibble = b & 0xF; out.write(hexDigit[highNibble]); out.write(hexDigit[lowNibble]); } // This class handles packing the scan data into a hexadecimal byte array. // This only works if the number of bits is 1, 2, 4, or 8. private class Scanline { private byte[] line; private int nbits; private int currentByte; private int currentOffset; public Scanline(int size, int nbits) { line = new byte[size]; this.nbits = nbits; reset(); } // Reset the scan line. Always zero the last byte in case the // scan line isn't fully used by the image. public void reset() { currentByte = 0; currentOffset = 0; for (int i = 0; i < line.length; i++) { line[i] = 0; } } public void add(byte b) { // Put the most significant bits in the lowest bits. b >>= (maxBitsPerByte - nbits); b &= lowBitMask[nbits]; // OR in the information. line[currentByte] |= b; // Update the offsets. if (maxBitsPerByte - nbits - currentOffset == 0) { // We're reached the end of a byte, just reset the counters. currentOffset = 0; currentByte++; } else { // Increment the offset and shift the word for the next // bits of information. currentOffset += nbits; line[currentByte] <<= nbits; } } public void put() throws IOException { // Check the last byte. If currentOffset isn't zero then // the last byte hasn't been fully shifted into place. // Do it now! while (maxBitsPerByte - nbits - currentOffset > 0) { line[line.length - 1] <<= nbits; currentOffset += nbits; } for (int i = 0; i < line.length; i++) { if (i % maxBytesPerScan == 0) { if (i != 0) putChar('\n'); putChar('%'); } putByte(line[i]); } putChar('\n'); } } } src/main/java/org/freehep/graphicsio/ps/package.html0000644000175000017500000000231410470455440021775 0ustar user01user01

PS, EPS (PostScript and Encapsulated PostScript) Output Format.

Allows writing of single page encapsulated or multi page postscript format using

The following Limitations exist:

@status Stable.

src/main/java/org/freehep/graphicsio/ps/ColorMap.java0000644000175000017500000006215110466645574022116 0ustar user01user01// Copyright 2000, CERN, Geneva, Switzerland and University of Santa Cruz, California, U.S.A. package org.freehep.graphicsio.ps; import java.awt.Color; /** * * @author Charles Loomis * @version $Id: ColorMap.java 8584 2006-08-10 23:06:37Z duns $ */ public class ColorMap { final public static int red = 0; final public static int green = 1; final public static int blue = 2; final public static int cyan = 3; final public static int magenta = 4; final public static int yellow = 5; final public static int orange = 6; final public static int pink = 7; final public static int white = 8; final public static int lightGray = 9; final public static int gray = 10; final public static int darkGray = 11; final public static int black = 12; final public static int redAsGray = 13; final public static int greenAsGray = 14; final public static int blueAsGray = 15; final public static int cyanAsGray = 16; final public static int magentaAsGray = 17; final public static int yellowAsGray = 18; final public static int orangeAsGray = 19; final public static int pinkAsGray = 20; final public static int whiteAsGray = 21; final public static int lightGrayAsGray = 22; final public static int grayAsGray = 23; final public static int darkGrayAsGray = 24; final public static int blackAsGray = 25; final public static int redInvisible = 26; final public static int greenInvisible = 27; final public static int blueInvisible = 28; final public static int cyanInvisible = 29; final public static int magentaInvisible = 30; final public static int yellowInvisible = 31; final public static int orangeInvisible = 32; final public static int pinkInvisible = 33; final public static int whiteInvisible = 34; final public static int lightGrayInvisible = 35; final public static int grayInvisible = 36; final public static int darkGrayInvisible = 37; final public static int blackInvisible = 38; final public static String[] psColorTag = { "Cr", "Cg", "Cb", "Cc", "Cm", "Cy", "Co", "Cp", "Cw", "Cgrl", "Cgr", "Cgrd", "Ck", "CGr", "CGg", "CGb", "CGc", "CGm", "CGy", "CGo", "CGp", "CGw", "CGgrl", "CGgr", "CGgrd", "CGk", "CIr", "CIg", "CIb", "CIc", "CIm", "CIy", "CIo", "CIp", "CIw", "CIgrl", "CIgr", "CIgrd", "CIk" }; // The "foreground" colors. They remain true colors within the // display and print color maps. In the grayscale and b&w color // maps these always appear as black. final protected static MappedColor displayRed = new MappedColor(255, 0, 0, red); final protected static MappedColor printRed = new MappedColor(255, 84, 84, red); final protected static MappedColor grayRed = new MappedColor(0, 0, 0, red); final protected static MappedColor bwRed = new MappedColor(0, 0, 0, red); final protected static MappedColor displayGreen = new MappedColor(0, 255, 0, green); final protected static MappedColor printGreen = new MappedColor(84, 255, 84, green); final protected static MappedColor grayGreen = new MappedColor(0, 0, 0, green); final protected static MappedColor bwGreen = new MappedColor(0, 0, 0, green); final protected static MappedColor displayBlue = new MappedColor(0, 0, 255, blue); final protected static MappedColor printBlue = new MappedColor(84, 84, 255, blue); final protected static MappedColor grayBlue = new MappedColor(0, 0, 0, blue); final protected static MappedColor bwBlue = new MappedColor(0, 0, 0, blue); final protected static MappedColor displayCyan = new MappedColor(0, 255, 255, cyan); final protected static MappedColor printCyan = new MappedColor(0, 255, 255, cyan); final protected static MappedColor grayCyan = new MappedColor(0, 0, 0, cyan); final protected static MappedColor bwCyan = new MappedColor(0, 0, 0, cyan); final protected static MappedColor displayMagenta = new MappedColor(255, 0, 255, magenta); final protected static MappedColor printMagenta = new MappedColor(255, 0, 255, magenta); final protected static MappedColor grayMagenta = new MappedColor(0, 0, 0, magenta); final protected static MappedColor bwMagenta = new MappedColor(0, 0, 0, magenta); final protected static MappedColor displayYellow = new MappedColor(255, 255, 0, yellow); final protected static MappedColor printYellow = new MappedColor(255, 255, 0, yellow); final protected static MappedColor grayYellow = new MappedColor(0, 0, 0, yellow); final protected static MappedColor bwYellow = new MappedColor(0, 0, 0, yellow); final protected static MappedColor displayOrange = new MappedColor(255, 200, 0, orange); final protected static MappedColor printOrange = new MappedColor(255, 200, 0, orange); final protected static MappedColor grayOrange = new MappedColor(0, 0, 0, orange); final protected static MappedColor bwOrange = new MappedColor(0, 0, 0, orange); final protected static MappedColor displayPink = new MappedColor(255, 175, 175, pink); final protected static MappedColor printPink = new MappedColor(255, 175, 175, pink); final protected static MappedColor grayPink = new MappedColor(0, 0, 0, pink); final protected static MappedColor bwPink = new MappedColor(0, 0, 0, pink); final protected static MappedColor displayWhite = new MappedColor(255, 255, 255, white); final protected static MappedColor printWhite = new MappedColor(255, 255, 255, white); final protected static MappedColor grayWhite = new MappedColor(0, 0, 0, white); final protected static MappedColor bwWhite = new MappedColor(0, 0, 0, white); final protected static MappedColor displayLightGray = new MappedColor(192, 192, 192, lightGray); final protected static MappedColor printLightGray = new MappedColor(192, 192, 192, lightGray); final protected static MappedColor grayLightGray = new MappedColor(0, 0, 0, lightGray); final protected static MappedColor bwLightGray = new MappedColor(0, 0, 0, lightGray); final protected static MappedColor displayGray = new MappedColor(128, 128, 128, gray); final protected static MappedColor printGray = new MappedColor(128, 128, 128, gray); final protected static MappedColor grayGray = new MappedColor(0, 0, 0, gray); final protected static MappedColor bwGray = new MappedColor(0, 0, 0, gray); final protected static MappedColor displayDarkGray = new MappedColor(64, 64, 64, darkGray); final protected static MappedColor printDarkGray = new MappedColor(64, 64, 64, darkGray); final protected static MappedColor grayDarkGray = new MappedColor(0, 0, 0, darkGray); final protected static MappedColor bwDarkGray = new MappedColor(0, 0, 0, darkGray); final protected static MappedColor displayBlack = new MappedColor(0, 0, 0, black); final protected static MappedColor printBlack = new MappedColor(0, 0, 0, black); final protected static MappedColor grayBlack = new MappedColor(0, 0, 0, black); final protected static MappedColor bwBlack = new MappedColor(0, 0, 0, black); // The "fill" colors. These retain their colors under the display // and print color maps. Under the grayscale color map, these // become light shades of gray. These become white under the b&w // color map. final protected static MappedColor displayRedAsGray = new MappedColor(255, 0, 0, redAsGray); final protected static MappedColor printRedAsGray = new MappedColor(255, 84, 84, redAsGray); final protected static MappedColor grayRedAsGray = new MappedColor(192, 192, 192, redAsGray); final protected static MappedColor bwRedAsGray = new MappedColor(255, 255, 255, redAsGray); final protected static MappedColor displayGreenAsGray = new MappedColor(0, 255, 0, greenAsGray); final protected static MappedColor printGreenAsGray = new MappedColor(84, 255, 84, greenAsGray); final protected static MappedColor grayGreenAsGray = new MappedColor(255, 255, 255, greenAsGray); final protected static MappedColor bwGreenAsGray = new MappedColor(255, 255, 255, greenAsGray); final protected static MappedColor displayBlueAsGray = new MappedColor(0, 0, 255, blueAsGray); final protected static MappedColor printBlueAsGray = new MappedColor(84, 84, 255, blueAsGray); final protected static MappedColor grayBlueAsGray = new MappedColor(128, 128, 128, blueAsGray); final protected static MappedColor bwBlueAsGray = new MappedColor(255, 255, 255, blueAsGray); final protected static MappedColor displayCyanAsGray = new MappedColor(0, 255, 255, cyanAsGray); final protected static MappedColor printCyanAsGray = new MappedColor(0, 255, 255, cyanAsGray); final protected static MappedColor grayCyanAsGray = new MappedColor(192, 192, 192, cyanAsGray); final protected static MappedColor bwCyanAsGray = new MappedColor(255, 255, 255, cyanAsGray); final protected static MappedColor displayMagentaAsGray = new MappedColor( 255, 0, 255, magentaAsGray); final protected static MappedColor printMagentaAsGray = new MappedColor( 255, 0, 255, magentaAsGray); final protected static MappedColor grayMagentaAsGray = new MappedColor(128, 128, 128, magentaAsGray); final protected static MappedColor bwMagentaAsGray = new MappedColor(255, 255, 255, magentaAsGray); final protected static MappedColor displayYellowAsGray = new MappedColor( 255, 255, 0, yellowAsGray); final protected static MappedColor printYellowAsGray = new MappedColor(255, 255, 0, yellowAsGray); final protected static MappedColor grayYellowAsGray = new MappedColor(255, 255, 255, yellowAsGray); final protected static MappedColor bwYellowAsGray = new MappedColor(255, 255, 255, yellowAsGray); final protected static MappedColor displayOrangeAsGray = new MappedColor( 255, 200, 0, orangeAsGray); final protected static MappedColor printOrangeAsGray = new MappedColor(255, 200, 0, orangeAsGray); final protected static MappedColor grayOrangeAsGray = new MappedColor(192, 192, 192, orangeAsGray); final protected static MappedColor bwOrangeAsGray = new MappedColor(255, 255, 255, orangeAsGray); final protected static MappedColor displayPinkAsGray = new MappedColor(255, 175, 175, pinkAsGray); final protected static MappedColor printPinkAsGray = new MappedColor(255, 175, 175, pinkAsGray); final protected static MappedColor grayPinkAsGray = new MappedColor(255, 255, 255, pinkAsGray); final protected static MappedColor bwPinkAsGray = new MappedColor(255, 255, 255, pinkAsGray); final protected static MappedColor displayWhiteAsGray = new MappedColor( 255, 255, 255, whiteAsGray); final protected static MappedColor printWhiteAsGray = new MappedColor(255, 255, 255, whiteAsGray); final protected static MappedColor grayWhiteAsGray = new MappedColor(0, 0, 0, whiteAsGray); final protected static MappedColor bwWhiteAsGray = new MappedColor(0, 0, 0, whiteAsGray); final protected static MappedColor displayLightGrayAsGray = new MappedColor( 192, 192, 192, lightGrayAsGray); final protected static MappedColor printLightGrayAsGray = new MappedColor( 192, 192, 192, lightGrayAsGray); final protected static MappedColor grayLightGrayAsGray = new MappedColor( 64, 64, 64, lightGrayAsGray); final protected static MappedColor bwLightGrayAsGray = new MappedColor(255, 255, 255, lightGrayAsGray); final protected static MappedColor displayGrayAsGray = new MappedColor(128, 128, 128, grayAsGray); final protected static MappedColor printGrayAsGray = new MappedColor(128, 128, 128, grayAsGray); final protected static MappedColor grayGrayAsGray = new MappedColor(128, 128, 128, grayAsGray); final protected static MappedColor bwGrayAsGray = new MappedColor(255, 255, 255, grayAsGray); final protected static MappedColor displayDarkGrayAsGray = new MappedColor( 64, 64, 64, darkGrayAsGray); final protected static MappedColor printDarkGrayAsGray = new MappedColor( 64, 64, 64, darkGrayAsGray); final protected static MappedColor grayDarkGrayAsGray = new MappedColor( 192, 192, 192, darkGrayAsGray); final protected static MappedColor bwDarkGrayAsGray = new MappedColor(255, 255, 255, darkGrayAsGray); final protected static MappedColor displayBlackAsGray = new MappedColor(0, 0, 0, blackAsGray); final protected static MappedColor printBlackAsGray = new MappedColor(0, 0, 0, blackAsGray); final protected static MappedColor grayBlackAsGray = new MappedColor(255, 255, 255, blackAsGray); final protected static MappedColor bwBlackAsGray = new MappedColor(255, 255, 255, blackAsGray); // The "background" colors. These retain their colors under the // display and print color maps. Under the grayscale color map // and the b&w color map these are white. final protected static MappedColor displayRedInvisible = new MappedColor( 255, 0, 0, redInvisible); final protected static MappedColor printRedInvisible = new MappedColor(255, 84, 84, redInvisible); final protected static MappedColor grayRedInvisible = new MappedColor(255, 255, 255, redInvisible); final protected static MappedColor bwRedInvisible = new MappedColor(255, 255, 255, redInvisible); final protected static MappedColor displayGreenInvisible = new MappedColor( 0, 255, 0, greenInvisible); final protected static MappedColor printGreenInvisible = new MappedColor( 84, 255, 84, greenInvisible); final protected static MappedColor grayGreenInvisible = new MappedColor( 255, 255, 255, greenInvisible); final protected static MappedColor bwGreenInvisible = new MappedColor(255, 255, 255, greenInvisible); final protected static MappedColor displayBlueInvisible = new MappedColor( 0, 0, 255, blueInvisible); final protected static MappedColor printBlueInvisible = new MappedColor(84, 84, 255, blueInvisible); final protected static MappedColor grayBlueInvisible = new MappedColor(255, 255, 255, blueInvisible); final protected static MappedColor bwBlueInvisible = new MappedColor(255, 255, 255, blueInvisible); final protected static MappedColor displayCyanInvisible = new MappedColor( 0, 255, 255, cyanInvisible); final protected static MappedColor printCyanInvisible = new MappedColor(0, 255, 255, cyanInvisible); final protected static MappedColor grayCyanInvisible = new MappedColor(255, 255, 255, cyanInvisible); final protected static MappedColor bwCyanInvisible = new MappedColor(255, 255, 255, cyanInvisible); final protected static MappedColor displayMagentaInvisible = new MappedColor( 255, 0, 255, magentaInvisible); final protected static MappedColor printMagentaInvisible = new MappedColor( 255, 0, 255, magentaInvisible); final protected static MappedColor grayMagentaInvisible = new MappedColor( 255, 255, 255, magentaInvisible); final protected static MappedColor bwMagentaInvisible = new MappedColor( 255, 255, 255, magentaInvisible); final protected static MappedColor displayYellowInvisible = new MappedColor( 255, 255, 0, yellowInvisible); final protected static MappedColor printYellowInvisible = new MappedColor( 255, 255, 0, yellowInvisible); final protected static MappedColor grayYellowInvisible = new MappedColor( 255, 255, 255, yellowInvisible); final protected static MappedColor bwYellowInvisible = new MappedColor(255, 255, 255, yellowInvisible); final protected static MappedColor displayOrangeInvisible = new MappedColor( 255, 200, 0, orangeInvisible); final protected static MappedColor printOrangeInvisible = new MappedColor( 255, 200, 0, orangeInvisible); final protected static MappedColor grayOrangeInvisible = new MappedColor( 255, 255, 255, orangeInvisible); final protected static MappedColor bwOrangeInvisible = new MappedColor(255, 255, 255, orangeInvisible); final protected static MappedColor displayPinkInvisible = new MappedColor( 255, 175, 175, pinkInvisible); final protected static MappedColor printPinkInvisible = new MappedColor( 255, 175, 175, pinkInvisible); final protected static MappedColor grayPinkInvisible = new MappedColor(255, 255, 255, pinkInvisible); final protected static MappedColor bwPinkInvisible = new MappedColor(255, 255, 255, pinkInvisible); final protected static MappedColor displayWhiteInvisible = new MappedColor( 255, 255, 255, whiteInvisible); final protected static MappedColor printWhiteInvisible = new MappedColor( 255, 255, 255, whiteInvisible); final protected static MappedColor grayWhiteInvisible = new MappedColor( 255, 255, 255, whiteInvisible); final protected static MappedColor bwWhiteInvisible = new MappedColor(255, 255, 255, whiteInvisible); final protected static MappedColor displayLightGrayInvisible = new MappedColor( 192, 192, 192, lightGrayInvisible); final protected static MappedColor printLightGrayInvisible = new MappedColor( 192, 192, 192, lightGrayInvisible); final protected static MappedColor grayLightGrayInvisible = new MappedColor( 255, 255, 255, lightGrayInvisible); final protected static MappedColor bwLightGrayInvisible = new MappedColor( 255, 255, 255, lightGrayInvisible); final protected static MappedColor displayGrayInvisible = new MappedColor( 128, 128, 128, grayInvisible); final protected static MappedColor printGrayInvisible = new MappedColor( 128, 128, 128, grayInvisible); final protected static MappedColor grayGrayInvisible = new MappedColor(255, 255, 255, grayInvisible); final protected static MappedColor bwGrayInvisible = new MappedColor(255, 255, 255, grayInvisible); final protected static MappedColor displayDarkGrayInvisible = new MappedColor( 64, 64, 64, darkGrayInvisible); final protected static MappedColor printDarkGrayInvisible = new MappedColor( 64, 64, 64, darkGrayInvisible); final protected static MappedColor grayDarkGrayInvisible = new MappedColor( 255, 255, 255, darkGrayInvisible); final protected static MappedColor bwDarkGrayInvisible = new MappedColor( 255, 255, 255, darkGrayInvisible); final protected static MappedColor displayBlackInvisible = new MappedColor( 0, 0, 0, blackInvisible); final protected static MappedColor printBlackInvisible = new MappedColor(0, 0, 0, blackInvisible); final protected static MappedColor grayBlackInvisible = new MappedColor( 255, 255, 255, blackInvisible); final protected static MappedColor bwBlackInvisible = new MappedColor(255, 255, 255, blackInvisible); // Now define the display color map. final protected static MappedColor[] displayMap = { displayRed, displayGreen, displayBlue, displayCyan, displayMagenta, displayYellow, displayOrange, displayPink, displayWhite, displayLightGray, displayGray, displayDarkGray, displayBlack, displayRedAsGray, displayGreenAsGray, displayBlueAsGray, displayCyanAsGray, displayMagentaAsGray, displayYellowAsGray, displayOrangeAsGray, displayPinkAsGray, displayWhiteAsGray, displayLightGrayAsGray, displayGrayAsGray, displayDarkGrayAsGray, displayBlackAsGray, displayRedInvisible, displayGreenInvisible, displayBlueInvisible, displayCyanInvisible, displayMagentaInvisible, displayYellowInvisible, displayOrangeInvisible, displayPinkInvisible, displayWhiteInvisible, displayLightGrayInvisible, displayGrayInvisible, displayDarkGrayInvisible, displayBlackInvisible }; // Now define the print color map. final protected static MappedColor[] printMap = { printRed, printGreen, printBlue, printCyan, printMagenta, printYellow, printOrange, printPink, printWhite, printLightGray, printGray, printDarkGray, printBlack, printRedAsGray, printGreenAsGray, printBlueAsGray, printCyanAsGray, printMagentaAsGray, printYellowAsGray, printOrangeAsGray, printPinkAsGray, printWhiteAsGray, printLightGrayAsGray, printGrayAsGray, printDarkGrayAsGray, printBlackAsGray, printRedInvisible, printGreenInvisible, printBlueInvisible, printCyanInvisible, printMagentaInvisible, printYellowInvisible, printOrangeInvisible, printPinkInvisible, printWhiteInvisible, printLightGrayInvisible, printGrayInvisible, printDarkGrayInvisible, printBlackInvisible }; // Now define the grayscale color map. final protected static MappedColor[] grayMap = { grayRed, grayGreen, grayBlue, grayCyan, grayMagenta, grayYellow, grayOrange, grayPink, grayWhite, grayLightGray, grayGray, grayDarkGray, grayBlack, grayRedAsGray, grayGreenAsGray, grayBlueAsGray, grayCyanAsGray, grayMagentaAsGray, grayYellowAsGray, grayOrangeAsGray, grayPinkAsGray, grayWhiteAsGray, grayLightGrayAsGray, grayGrayAsGray, grayDarkGrayAsGray, grayBlackAsGray, grayRedInvisible, grayGreenInvisible, grayBlueInvisible, grayCyanInvisible, grayMagentaInvisible, grayYellowInvisible, grayOrangeInvisible, grayPinkInvisible, grayWhiteInvisible, grayLightGrayInvisible, grayGrayInvisible, grayDarkGrayInvisible, grayBlackInvisible }; // Now define the black&white color map. final protected static MappedColor[] bwMap = { bwRed, bwGreen, bwBlue, bwCyan, bwMagenta, bwYellow, bwOrange, bwPink, bwWhite, bwLightGray, bwGray, bwDarkGray, bwBlack, bwRedAsGray, bwGreenAsGray, bwBlueAsGray, bwCyanAsGray, bwMagentaAsGray, bwYellowAsGray, bwOrangeAsGray, bwPinkAsGray, bwWhiteAsGray, bwLightGrayAsGray, bwGrayAsGray, bwDarkGrayAsGray, bwBlackAsGray, bwRedInvisible, bwGreenInvisible, bwBlueInvisible, bwCyanInvisible, bwMagentaInvisible, bwYellowInvisible, bwOrangeInvisible, bwPinkInvisible, bwWhiteInvisible, bwLightGrayInvisible, bwGrayInvisible, bwDarkGrayInvisible, bwBlackInvisible }; // The current map references one of the above color maps. protected MappedColor[] currentColorMap; /** * Constructor takes no arguments. The display color map is the default. */ public ColorMap() { currentColorMap = displayMap; } /** * Change to the display color map. */ public void useDisplayColorMap() { currentColorMap = displayMap; } /** * Change to the print color map. */ public void usePrintColorMap() { currentColorMap = printMap; } /** * Change to the grayscale color map. */ public void useGrayscaleColorMap() { currentColorMap = grayMap; } /** * Change to the black&white color map. */ public void useBlackAndWhiteColorMap() { currentColorMap = bwMap; } /** * Retrieve a mapped color from the color map. */ public MappedColor getMappedColor(int colorIndex) { if (colorIndex < 0 && colorIndex > 38) { return null; } else { return currentColorMap[colorIndex]; } } /** * Retrieve a mapped color as a Java Color from the color map. */ public Color getColor(int colorIndex) { if (colorIndex < 0 && colorIndex > 38) { return null; } else { return (Color) currentColorMap[colorIndex]; } } /** * Get a terse tag which describes which color a particular color index * represents. */ public static String getTag(int colorIndex) { if (colorIndex < 0 && colorIndex > 38) { return null; } else { return psColorTag[colorIndex]; } } } src/main/java/org/freehep/graphicsio/ps/PSExportFileType.java0000644000175000017500000000100210633527176023545 0ustar user01user01// Copyright 2003-2007, FreeHEP. package org.freehep.graphicsio.ps; /** * @author Mark Donszelmann * @author Charles Loomis, Simon Fischer * @version $Id: PSExportFileType.java 12753 2007-06-12 22:32:31Z duns $ */ public class PSExportFileType extends AbstractPSExportFileType { public String getDescription() { return "PostScript"; } public String[] getExtensions() { return new String[] { "ps" }; } public boolean isMultipageCapable() { return true; } } src/main/java/org/freehep/graphicsio/ps/PSStringStyler.java0000644000175000017500000002331210466645574023312 0ustar user01user01package org.freehep.graphicsio.ps; import java.awt.font.TextAttribute; import java.util.Map; import org.freehep.graphics2d.GenericTagHandler; import org.freehep.util.ScientificFormat; import org.freehep.util.Value; /** * Class to create a "cfont" tag in PS. Use {@link PSStringStyler#getStyledString(java.util.Map, String)} * to operate. * * @author Charles Loomis * @author Steffen Greiffenberg * @version $Id: PSStringStyler.java 8584 2006-08-10 23:06:37Z duns $ */ public class PSStringStyler { /** * The value 5 / 6 was found by try and error, e.g. * a font size of 300 has a valid cfont size of 250. * Not clear why. */ private static final float FONTSIZE_CORRECTION = 5.0f / 6.0f; // Constant strings for the styles. // private final String UNSTYLED_FLAG = "\\340\\000"; private static final String BOLD_CHAR = "\\340\\001"; private static final String ITALIC_CHAR = "\\340\\002"; private static final String BOLD_ITALIC_CHAR = "\\340\\003"; // Constant strings for the ornaments (underlining, etc.) // superscript is done by transformation // private final String SUPERSUBSCRIPT_FLAG = "\\360\\000"; private static final String STRIKEOUT_FLAG = "\\360\\001"; private static final String UNDERLINE_FLAG = "\\360\\002"; private static final String DASHED_UNDERLINE_FLAG = "\\360\\003"; private static final String DOTTED_UNDERLINE_FLAG = "\\360\\004"; private static final String GRAY_UNDERLINE_FLAG = "\\360\\005"; private static final String THICK_UNDERLINE_FLAG = "\\360\\006"; private static final String OVERLINE_FLAG = "\\360\\007"; // Constant strings giving the begin-group and end-group markers. private static final String BEGIN_GROUP = "\\360\\376"; private static final String END_GROUP = "\\360\\377"; /** * Must override the parse method because the PostScript string must be * initialized and terminated. */ public static String getStyledString(Map /**/ attributes, String string) { StringBuffer result = new StringBuffer(); Float size = (Float) attributes.get(TextAttribute.SIZE); // FIXME: The lines are taken from PSTagHandler, but // they produced a to large text output. result.append(new ScientificFormat(6, 9, false).format(size.floatValue() * FONTSIZE_CORRECTION)); result.append(" "); // cfont tag result.append("cfont"); // replace font name String fontName = ((String)attributes.get(TextAttribute.FAMILY)).toLowerCase(); if (fontName.indexOf("helvetica") != -1) { result.append("H"); } else if (fontName.indexOf("dialog") != -1) { result.append("H"); } else if (fontName.indexOf("dialoginput") != -1) { result.append("H"); } else if (fontName.indexOf("sansserif") != -1) { result.append("H"); } else if (fontName.indexOf("times") != -1) { result.append("T"); } else if (fontName.indexOf("serif") != -1) { result.append("T"); } else if (fontName.indexOf("courier") != -1) { result.append("C"); } else if (fontName.indexOf("monospaced") != -1) { result.append("C"); } else if (fontName.indexOf("typewriter") != -1) { result.append("C"); } else { result.append("H"); } // weight Object weight = attributes.get(TextAttribute.WEIGHT); if (TextAttribute.WEIGHT_BOLD.equals(weight)) { result.append("B"); } // posture Object posture = attributes.get(TextAttribute.POSTURE); if (TextAttribute.POSTURE_OBLIQUE.equals(posture)) { result.append("I"); } // open the brackets for text string result.append("\n("); // count BEGIN_GROUP for writing END_GROUP Value openGroups = new Value(); openGroups.set(0); result.append(getOpenTag(attributes, openGroups)); result.append(getUnicodes(string)); result.append(getCloseTag(openGroups)); result.append(")"); return result.toString(); } /** * Converts str into unicodes * * @return list of unicodes for str */ public static String getUnicodes(String str) { // Copy string to temporary string buffer. StringBuffer codedString = new StringBuffer(); for (int i = 0; i < str.length(); i++) { int chr = (int) str.charAt(i); int cvalue = (chr & 0x000000ff); int fvalue = (chr & 0x0000ff00) >>> 8; String cbyte = Integer.toOctalString(cvalue); String fbyte = Integer.toOctalString(fvalue); // Put in the font byte first. codedString.append('\\'); for (int j = 0; j < (3 - fbyte.length()); j++) { codedString.append('0'); } codedString.append(fbyte); // Now the character itself. Write as octal codes // non-printable characters, the backslash, parentheses, // and the percent. if (cvalue < 32 || cvalue > 126 || cvalue == '\\' || cvalue == '%' || cvalue == '(' || cvalue == ')') { codedString.append('\\'); for (int j = 0; j < (3 - cbyte.length()); j++) { codedString.append('0'); } codedString.append(cbyte); } else { codedString.append((char) cvalue); } } return codedString.toString(); } /** * @param str string to convert * @return str with replaced (, ), \, % */ public static String getEscaped(String str) { // Then protect against unbalanced parentheses in the string. // Copy string to temporary string buffer. StringBuffer result = new StringBuffer(); result.append("("); // Loop over all characters in the string and escape the // parentheses. for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (c == '(' || c == ')' || c == '\\' || c == '%') { result.append('\\'); result.append(c); } else if (c == 0) { result.append('?'); } else { result.append(c); } } result.append(")"); return result.toString(); } /** * handles various instances of {@link TextAttribute} * * @param attributes font to translate in PS tags */ private static String getOpenTag(Map/* Map*/ attributes, Value open) { int openGroups = open.getInt(); StringBuffer result = new StringBuffer(); // weight Object weight = attributes.get(TextAttribute.WEIGHT); // italic Object posture = attributes.get(TextAttribute.POSTURE); // bold and italic? if (weight != null && !TextAttribute.WEIGHT_REGULAR.equals(weight)) { if (TextAttribute.POSTURE_OBLIQUE.equals(posture)) { result.append(BOLD_ITALIC_CHAR); } else { result.append(BOLD_CHAR); } openGroups ++; result.append(BEGIN_GROUP); } else // simple italic? if (TextAttribute.POSTURE_OBLIQUE.equals(posture)) { result.append(ITALIC_CHAR); openGroups ++; result.append(BEGIN_GROUP); } // superScript is done by font.getTransform() // Object superScript = attributes.get(TextAttribute.SUPERSCRIPT); // underline Object underline = attributes.get(TextAttribute.UNDERLINE); if (TextAttribute.UNDERLINE_LOW_DASHED.equals(underline)) { result.append(DASHED_UNDERLINE_FLAG); openGroups ++; result.append(BEGIN_GROUP); } else if (TextAttribute.UNDERLINE_ON.equals(underline)) { result.append(UNDERLINE_FLAG); openGroups ++; result.append(BEGIN_GROUP); } else if (TextAttribute.UNDERLINE_LOW_DOTTED.equals(underline)) { result.append(DOTTED_UNDERLINE_FLAG); openGroups ++; result.append(BEGIN_GROUP); } else if (TextAttribute.UNDERLINE_LOW_TWO_PIXEL.equals(underline)) { result.append(THICK_UNDERLINE_FLAG); openGroups ++; result.append(BEGIN_GROUP); } else if (TextAttribute.UNDERLINE_LOW_GRAY.equals(underline)) { result.append(GRAY_UNDERLINE_FLAG); openGroups ++; result.append(BEGIN_GROUP); } else if (TextAttribute.UNDERLINE_LOW_DASHED.equals(underline)) { result.append(DASHED_UNDERLINE_FLAG); openGroups ++; result.append(BEGIN_GROUP); } else if (GenericTagHandler.UNDERLINE_OVERLINE.equals(underline)) { result.append(OVERLINE_FLAG); result.append(BEGIN_GROUP); } // strike through Object strike = attributes.get(TextAttribute.STRIKETHROUGH); if (TextAttribute.STRIKETHROUGH_ON.equals(strike)) { result.append(STRIKEOUT_FLAG); openGroups ++; result.append(BEGIN_GROUP); } // set the counter open.set(openGroups); return result.toString(); } /** * @return string for closing all BEGIN_GROUP's */ private static String getCloseTag(Value open) { StringBuffer result = new StringBuffer(); for (int i = 0; i < open.getInt(); i++) { result.append(END_GROUP); } // not needed but to leave the counter in correct state open.set(0); return result.toString(); } } src/main/java/org/freehep/graphicsio/ps/PSGraphics2D.java0000644000175000017500000010453410633527176022566 0ustar user01user01// Copyright 2000-2007 FreeHEP package org.freehep.graphicsio.ps; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.Font; import java.awt.GradientPaint; import java.awt.Graphics; import java.awt.GraphicsConfiguration; import java.awt.Insets; import java.awt.Paint; import java.awt.Rectangle; import java.awt.Shape; import java.awt.TexturePaint; import java.awt.geom.AffineTransform; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.awt.image.RenderedImage; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.io.PrintStream; import java.text.DateFormat; import java.util.Date; import java.util.Map; import java.util.Properties; import org.freehep.graphics2d.TagString; import org.freehep.graphics2d.font.FontUtilities; import org.freehep.graphicsio.AbstractVectorGraphicsIO; import org.freehep.graphicsio.FontConstants; import org.freehep.graphicsio.ImageConstants; import org.freehep.graphicsio.ImageGraphics2D; import org.freehep.graphicsio.InfoConstants; import org.freehep.graphicsio.MultiPageDocument; import org.freehep.graphicsio.PageConstants; import org.freehep.util.ScientificFormat; import org.freehep.util.UserProperties; import org.freehep.util.images.ImageUtilities; /** * @author Charles Loomis * @author Mark Donszelmann * @version $Id: PSGraphics2D.java 12753 2007-06-12 22:32:31Z duns $ */ public class PSGraphics2D extends AbstractVectorGraphicsIO implements MultiPageDocument, FontUtilities.ShowString { private static final String rootKey = PSGraphics2D.class.getName(); public static final String BACKGROUND = rootKey + "." + PageConstants.BACKGROUND; public static final String BACKGROUND_COLOR = rootKey + "." + PageConstants.BACKGROUND_COLOR; public static final String PAGE_SIZE = rootKey + "." + PageConstants.PAGE_SIZE; public static final String CUSTOM_PAGE_SIZE = rootKey + "." + PageConstants.CUSTOM_PAGE_SIZE; public static final String PAGE_MARGINS = rootKey + "." + PageConstants.PAGE_MARGINS; public static final String ORIENTATION = rootKey + "." + PageConstants.ORIENTATION; public static final String FIT_TO_PAGE = rootKey + "." + PageConstants.FIT_TO_PAGE; public static final String EMBED_FONTS = rootKey + "." + FontConstants.EMBED_FONTS; public static final String EMBED_FONTS_AS = rootKey + "." + FontConstants.EMBED_FONTS_AS; public static final String FOR = rootKey + "." + InfoConstants.FOR; public static final String TITLE = rootKey + "." + InfoConstants.TITLE; public static final String PREVIEW = rootKey + ".Preview"; public static final String PREVIEW_BITS = rootKey + ".PreviewBits"; public static final String WRITE_IMAGES_AS = rootKey + "." + ImageConstants.WRITE_IMAGES_AS; private static final UserProperties defaultProperties = new UserProperties(); static { defaultProperties.setProperty(BACKGROUND, false); defaultProperties.setProperty(BACKGROUND_COLOR, Color.GRAY); defaultProperties.setProperty(PAGE_SIZE, PageConstants.INTERNATIONAL); defaultProperties.setProperty(PAGE_MARGINS, PageConstants .getMargins(PageConstants.SMALL)); defaultProperties.setProperty(ORIENTATION, PageConstants.PORTRAIT); defaultProperties.setProperty(FIT_TO_PAGE, true); defaultProperties.setProperty(EMBED_FONTS, false); defaultProperties.setProperty(TEXT_AS_SHAPES, false); defaultProperties.setProperty(EMBED_FONTS_AS, FontConstants.EMBED_FONTS_TYPE3); defaultProperties.setProperty(FOR, ""); defaultProperties.setProperty(TITLE, ""); defaultProperties.setProperty(PREVIEW, false); defaultProperties.setProperty(PREVIEW_BITS, 8); defaultProperties.setProperty(WRITE_IMAGES_AS, ImageConstants.SMALLEST); defaultProperties.setProperty(CLIP, true); defaultProperties.setProperty(TEXT_AS_SHAPES, true); } public static Properties getDefaultProperties() { return defaultProperties; } public static final String version = "$Revision: 12753 $"; public static final int LEVEL_2 = 2; public static final int LEVEL_3 = 3; // remember which fonts are used private PSFontTable fontTable; // The private writer used for this file. protected OutputStream ros; protected PrintStream os; private boolean multiPage; private int currentPage; private int postscriptLevel = LEVEL_3; /* * ================================================================================ | * 1. Constructors & Factory Methods * ================================================================================ */ public PSGraphics2D(File file, Dimension size) throws FileNotFoundException { this(new FileOutputStream(file), size); } public PSGraphics2D(File file, Component component) throws FileNotFoundException { this(new FileOutputStream(file), component); } public PSGraphics2D(OutputStream os, Dimension size) { super(size, false); init(os); } public PSGraphics2D(OutputStream os, Component component) { super(component, false); init(os); } private void init(OutputStream os) { ros = new BufferedOutputStream(os); initProperties(defaultProperties); fontTable = new PSFontTable(ros, getFontRenderContext()); this.multiPage = false; this.currentPage = 0; } /** * This protected method is used by the create() methods to create a clone * of the given graphics object. * * @param graphics Parent graphics to take attributes from * @param doRestoreOnDispose if true writeGraphicsRestore() is called on dispose() */ protected PSGraphics2D(PSGraphics2D graphics, boolean doRestoreOnDispose) { super(graphics, doRestoreOnDispose); // Now initialize the new object. ros = graphics.ros; os = graphics.os; fontTable = graphics.fontTable; multiPage = graphics.multiPage; currentPage = graphics.currentPage; } /* * ================================================================================ | * 2. Document Settings * ================================================================================ */ public void setMultiPage(boolean multiPage) { this.multiPage = multiPage; } public boolean isMultiPage() { return multiPage; } /** * Set the clipping enabled flag. This will affect all output operations * after this call completes. * * @param enabled true enables clipping */ public static void setClipEnabled(boolean enabled) { defaultProperties.setProperty(CLIP, enabled); } /** * Get the bounding box for this page. * * @return pageSize - margins */ private Rectangle getBoundingBox() { // determine page size Dimension pageSize = getPageSize(); // Our PS Header has internal page orientation mode, all sizes given in // portrait Insets margins = getPropertyInsets(PAGE_MARGINS); boolean isPortrait = getProperty(ORIENTATION).equals( PageConstants.PORTRAIT); // Available width and height. double awidth = (pageSize.width - margins.left - margins.right); double aheight = (pageSize.height - margins.top - margins.bottom); // Image width and height (adjusted for portrait or landscape) Dimension size = getSize(); double iwidth = (isPortrait ? size.width : size.height); double iheight = (isPortrait ? size.height : size.width); // Choose the minimum scale factor. double sf = Math.min(awidth / iwidth, aheight / iheight); if (!isProperty(FIT_TO_PAGE)) { sf = Math.min(sf, 1.); } // Lower left corner. double x0 = awidth / 2. + margins.left - sf * iwidth / 2.; double y0 = aheight / 2. + margins.bottom - sf * iheight / 2.; // Upper right corner. double x1 = x0 + sf * iwidth; double y1 = y0 + sf * iheight; int llx = (int) x0; int lly = (int) y0; int urx = (int) Math.ceil(x1); int ury = (int) Math.ceil(y1); // Convert these back to integer values. return new Rectangle(llx, lly, urx - llx, ury - lly); } /* * ================================================================================ | * 3. Header, Trailer, Multipage & Comments * ================================================================================ */ /* 3.1 Header & Trailer */ /** * Write out the header of this EPS file. */ public void writeHeader() throws IOException { os = new PrintStream(ros, true); if (!isMultiPage()) { Dimension size = getSize(); // moved to openPage for multiPage resetClip(new Rectangle(0, 0, size.width, size.height)); } os.println("%!PS-Adobe-3.0" + (isMultiPage() ? "" : " EPSF-3.0")); if (!isMultiPage()) { Rectangle bbox = getBoundingBox(); os.println("%%BoundingBox: " + bbox.x + " " + bbox.y + " " + (bbox.x + bbox.width) + " " + (bbox.y + bbox.height)); } String producer = getClass().getName(); if (!isDeviceIndependent()) { producer += " " + version.substring(1, version.length() - 1); } os.println("%%Creator: " + getCreator()); os.println("%%Producer: " + producer); os.println("%%For: " + getProperty(FOR)); os.println("%%Title: " + getProperty(TITLE)); if (!isDeviceIndependent()) { os.println("%%CreationDate: " + DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL).format(new Date())); } os.println("%%LanguageLevel: " + postscriptLevel); os.println("%%EndComments"); // write preview if possible if (isProperty(PREVIEW) && (getComponent() != null)) { Rectangle size = getComponent().getBounds(); BufferedImage image = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_ARGB); Graphics imageGraphics = image.getGraphics(); getComponent().print(imageGraphics); EPSIEncoder encoder = new EPSIEncoder(image, ros, getPropertyInt(PREVIEW_BITS), getProperty(ORIENTATION) .equals(PageConstants.PORTRAIT)); encoder.encode(); } writeProlog(); } private void writeProlog() { // The prolog is kept in a file PSProlog.txt in the same area // as this class definition. It is simply copied into the // output file. os.println("%%BeginProlog"); copyResourceTo(this, "PSProlog.txt", os); os.println("%%EndProlog"); os.println(); if (!isMultiPage()) openPage(getSize(), null, getComponent()); } public void writeBackground() throws IOException { // since PS is non-transparent, write current background if (isProperty(BACKGROUND)) { setBackground(getPropertyColor(BACKGROUND_COLOR)); clearRect(0.0, 0.0, getSize().width, getSize().height); } else { setBackground(getComponent() != null ? getComponent() .getBackground() : Color.WHITE); clearRect(0.0, 0.0, getSize().width, getSize().height); } } public void writeTrailer() throws IOException { if (!isMultiPage()) closePage(); os.println(); os.println("%%Trailer"); if (isMultiPage()) os.println("%%Pages: " + currentPage); os.println("%%EOF"); } public void closeStream() throws IOException { ros.close(); os.close(); } /* 3.2 MultipageDocument methods */ public void openPage(Component component) throws IOException { openPage(component.getSize(), component.getName(), component); } public void openPage(Dimension size, String title) throws IOException { openPage(size, title, null); } /** * Reads the PAGE_SIZE Property. If A4 .. A0 is found, * PageConstants will determine the size. If CUSTOM_PAGE_SIZE * is found, CUSTOM_PAGE_SIZE is used as a Property key for * a dimension object. * * @return Size of page */ private Dimension getPageSize() { // A4 ... A0 or PageConstants.CUSTOM_PAGE_SIZE expected // if PageConstants.CUSTOM_PAGE_SIZE is found, // PageConstants.CUSTOM_PAGE_SIZE is used as Key too String pageSizeProperty = getProperty(PAGE_SIZE); // determine page size Dimension result = CUSTOM_PAGE_SIZE.equals(pageSizeProperty) ? getPropertyDimension(CUSTOM_PAGE_SIZE) : PageConstants.getSize(getProperty(PAGE_SIZE)); // set a default value if (result == null) { result = PageConstants.getSize(PageConstants.A4); } return result; } private void openPage(Dimension size, String title, Component component) { if (size == null) { size = component.getSize(); } currentPage++; resetClip(new Rectangle(0, 0, size.width, size.height)); // Our PS Header has internal page orientation mode, all sizes given in // portrait Dimension pageSize = getPageSize(); Insets margins = getPropertyInsets(PAGE_MARGINS); title = (title == null) ? "" + currentPage : "(" + title + ")"; if (isMultiPage()) os.println("%%Page: " + title + " " + currentPage); os.println(isMultiPage() ? "%%BeginPageSetup" : "%%BeginSetup"); os.println("save"); os.println("procDict begin"); os.println("printColorMap begin"); os.println(pageSize.width + " " + pageSize.height + " setpagesize"); os.println(margins.left + " " + margins.bottom + " " + margins.top + " " + margins.right + " setmargins"); os.println("0 0 setorigin"); os.println(size.width + " " + size.height + " setsize"); os.println(isProperty(FIT_TO_PAGE) ? "fittopage" : "naturalsize"); os.println(getProperty(ORIENTATION).equals(PageConstants.PORTRAIT) ? "portrait" : "landscape"); os.println("imagescale"); os.println("cliptobounds"); os.println("setbasematrix"); os.println("/Helvetica 10 sf"); os.println("defaultGraphicsState"); os.println(isMultiPage() ? "%%EndPageSetup" : "%%EndSetup"); os.println(); try { writeGraphicsState(); writeBackground(); } catch (Exception e) { handleException(e); } } public void closePage() { // os.println("% procDict and colorMap dictionaries"); os.println("end end restore showpage"); if (isMultiPage()) os.println("%%PageTrailer"); } public void setHeader(Font font, TagString left, TagString center, TagString right, int underlineThickness) { } public void setFooter(Font font, TagString left, TagString center, TagString right, int underlineThickness) { } /* * ================================================================================ | * 4. Create & Dispose * ================================================================================ */ public Graphics create() { try { writeGraphicsSave(); } catch (IOException e) { handleException(e); } return new PSGraphics2D(this, true); } public Graphics create(double x, double y, double width, double height) { try { writeGraphicsSave(); } catch (IOException e) { handleException(e); } PSGraphics2D graphics = new PSGraphics2D(this, true); graphics.translate(x, y); graphics.clipRect(0, 0, width, height); return graphics; } /** * Embed a gsave in the PostScript file. */ protected void writeGraphicsSave() throws IOException { os.println("q"); } /** * Embed a grestore in the PostScript file. */ protected void writeGraphicsRestore() throws IOException { os.println("Q"); } /* * ================================================================================ | * 5. Drawing Methods * ================================================================================ */ /* 5.1.4. shapes */ public void draw(Shape shape) { try { if (getStroke() instanceof BasicStroke) { writePath(shape); os.println("S"); } else { boolean eofill = writePath(getStroke().createStrokedShape(shape)); os.println(((eofill) ? "f*" : "f")); } } catch (IOException e) { handleException(e); } } public void fill(Shape shape) { try { if (getPaint() instanceof Color || (getPaint() instanceof GradientPaint && postscriptLevel >= LEVEL_3)) { boolean eofill = writePath(shape); os.println(((eofill) ? "f*" : "f")); } else { // setting the color seems to be needed by PS writePaint(Color.black); fill(shape, getPaint()); } } catch (IOException e) { handleException(e); } } public void fillAndDraw(Shape shape, Color fillColor) { try { if (getPaint() instanceof Color || (getPaint() instanceof GradientPaint && postscriptLevel >= LEVEL_3)) { setPSColor(fillColor, true); boolean eofill = writePath(shape); os.println(((eofill) ? "B*" : "B")); } else { // setting the color seems to be needed by PS writePaint(Color.black); fill(shape, getPaint()); } } catch (IOException e) { handleException(e); } } /* 5.2 Images */ public void copyArea(int x, int y, int width, int height, int dx, int dy) { writeWarning(getClass() + ": copyArea(int, int, int, int, int, int) not implemented."); } protected void writeImage(RenderedImage image, AffineTransform xform, Color bkg) throws IOException { // save complete gstate, not only color space writeGraphicsSave(); // FIXME FVG-31 if (bkg == null) { bkg = getBackground(); } image = ImageUtilities.createRenderedImage(image, bkg); // Write out the PostScript code to start an image // definition. int imageWidth = image.getWidth(); int imageHeight = image.getHeight(); AffineTransform imageTransform = new AffineTransform( imageWidth, 0.0, 0.0, imageHeight, 0.0, 0.0); xform.concatenate(imageTransform); writeTransform(xform); os.println("<<"); os.println("/ImageType 1"); os.println("/Width " + imageWidth + " /Height " + imageHeight); os.println("/BitsPerComponent 8"); os.println("/Decode [0 1 0 1 0 1]"); os.println("/ImageMatrix [" + imageWidth + " 0 0 " + imageHeight + " 0 0]"); // read image format String writeAs = getProperty(WRITE_IMAGES_AS); // used for creating // /DataSource currentfile /ASCII85Decode filter /"encode"Decode filter // >> image "imageBytes" String encode; byte[] imageBytes; // write as RAW with ZIP compression if (ImageConstants.ZLIB.equalsIgnoreCase(writeAs)) { encode = ImageConstants.ENCODING_FLATE; imageBytes = ImageGraphics2D.toByteArray( image, ImageConstants.RAW, ImageConstants.ENCODING_FLATE_ASCII85, ImageGraphics2D.getRAWProperties(bkg, ImageConstants.COLOR_MODEL_RGB)); } // write as JPEG else if (ImageConstants.JPG.equalsIgnoreCase(writeAs)) { encode = ImageConstants.ENCODING_DCT; imageBytes = ImageGraphics2D.toByteArray( image, ImageConstants.JPG, ImageConstants.ENCODING_ASCII85, null); } // write SMALLEST (JPEG or RAW) else { // zip-compressed raw image byte[] flateBytes = ImageGraphics2D.toByteArray( image, ImageConstants.RAW, ImageConstants.ENCODING_FLATE_ASCII85, ImageGraphics2D.getRAWProperties(bkg, ImageConstants.COLOR_MODEL_RGB)); // jpeg image DCT encoded byte[] jpgBytes = ImageGraphics2D.toByteArray( image, ImageConstants.JPG, ImageConstants.ENCODING_ASCII85, null); // define encoding and imagebytes if (jpgBytes.length < 0.5 * flateBytes.length) { encode = ImageConstants.ENCODING_DCT; imageBytes = jpgBytes; } else { encode = ImageConstants.ENCODING_FLATE; imageBytes = flateBytes; } } os.println("/DataSource currentfile " + "/ASCII85Decode filter " + "/" + encode + "Decode filter "); os.println(">> image"); os.write(imageBytes); os.println(""); writeGraphicsRestore(); } /* 5.3. Strings */ protected void writeString(String str, double x, double y) throws IOException { showCharacterCodes(str, x, y); } /* * ================================================================================ | * 6. Transformations * ================================================================================ */ protected void writeTransform(AffineTransform tx) throws IOException { os.println("[ " + fixedPrecision(tx.getScaleX()) + " " + fixedPrecision(tx.getShearY()) + " " + fixedPrecision(tx.getShearX()) + " " + fixedPrecision(tx.getScaleY()) + " " + fixedPrecision(tx.getTranslateX()) + " " + fixedPrecision(tx.getTranslateY()) + " ] concat"); } protected void writeSetTransform(AffineTransform tx) throws IOException { os.println("[ " + fixedPrecision(tx.getScaleX()) + " " + fixedPrecision(tx.getShearY()) + " " + fixedPrecision(tx.getShearX()) + " " + fixedPrecision(tx.getScaleY()) + " " + fixedPrecision(tx.getTranslateX()) + " " + fixedPrecision(tx.getTranslateY()) + " ] defaultmatrix matrix concatmatrix setmatrix"); } /* * ================================================================================ | * 7. Clipping * ================================================================================ */ protected void writeClip(Shape s) throws IOException { if (s == null || !isProperty(CLIP)) { return; } if (s instanceof Rectangle) { os.println( ((Rectangle)s).x+" "+ ((Rectangle)s).y+" "+ ((Rectangle)s).width+" "+ ((Rectangle)s).height+" rc"); } else if (s instanceof Rectangle2D) { os.println( fixedPrecision(((Rectangle2D)s).getX())+" "+ fixedPrecision(((Rectangle2D)s).getY())+" "+ fixedPrecision(((Rectangle2D)s).getWidth())+" "+ fixedPrecision(((Rectangle2D)s).getHeight())+" rc"); } else { boolean eofill = writePath(s); os.println(((eofill) ? "W*" : "W")); } } protected void writeSetClip(Shape s) throws IOException { os.println("cliprestore"); writeClip(s); } /** * Write the path of the current shape to the output file. Return a boolean * indicating whether or not the even-odd rule for filling should be used. * * @return path by PSPathConstructor * @param s Shape to convert * @throws java.io.IOException thrown by created path */ private boolean writePath(Shape s) throws IOException { os.println("newpath"); PSPathConstructor path = new PSPathConstructor(os, true, false); return path.addPath(s); } /* * ================================================================================ | * 8. Graphics State * ================================================================================ */ /* 8.1. stroke/linewidth */ protected void writeWidth(float width) throws IOException { os.println(fixedPrecision(width) + " w"); } protected void writeCap(int cap) throws IOException { switch (cap) { default: case BasicStroke.CAP_BUTT: os.println("0 J"); break; case BasicStroke.CAP_ROUND: os.println("1 J"); break; case BasicStroke.CAP_SQUARE: os.println("2 J"); break; } } protected void writeJoin(int join) throws IOException { switch (join) { default: case BasicStroke.JOIN_MITER: os.println("0 j"); break; case BasicStroke.JOIN_ROUND: os.println("1 j"); break; case BasicStroke.JOIN_BEVEL: os.println("2 j"); break; } } protected void writeMiterLimit(float limit) throws IOException { os.println(fixedPrecision(limit) + " M"); } protected void writeDash(float[] dash, float phase) throws IOException { os.print("[ "); for (int i = 0; i < dash.length; i++) { os.print(fixedPrecision(dash[i]) + " "); } os.println("] " + fixedPrecision(phase) + " d"); } /* 8.2. paint/color */ public void setPaintMode() { writeWarning(getClass() + ": setPaintMode() not implemented."); } public void setXORMode(Color c1) { writeWarning(getClass() + ": setXORMode(Color) not implemented."); } protected void writePaint(Color c) throws IOException { setPSColor(c, false); } protected void writePaint(GradientPaint paint) throws IOException { if (postscriptLevel >= LEVEL_3) { float[] rgb1 = paint.getColor1().getRGBColorComponents(null); float[] rgb2 = paint.getColor2().getRGBColorComponents(null); Point2D p1 = paint.getPoint1(); Point2D p2 = paint.getPoint2(); os.println("<< /PatternType 2"); os.println(" /Shading"); os.println(" << /ShadingType 2"); os.println(" /ColorSpace /DeviceRGB"); os.println(" /Coords [" + p1.getX() + " " + p1.getY() + " " + p2.getX() + " " + p2.getY() + "]"); os.println(" /Function"); os.println(" << /FunctionType 2"); os.println(" /Domain [0 1]"); os.println(" /Range [0 1 0 1 0 1]"); os.println(" /C0 [" + rgb1[0] + " " + rgb1[1] + " " + rgb1[2] + "]"); os.println(" /C1 [" + rgb2[0] + " " + rgb2[1] + " " + rgb2[2] + "]"); os.println(" /N 1"); os.println(" >>"); os.println(" /Extend [true true]"); os.println(" >>"); os.println(">>"); os.println("matrix makepattern setpattern"); } } protected void writePaint(TexturePaint paint) throws IOException { // written when filled } protected void writePaint(Paint p) throws IOException { // written when filled } /* 8.3. */ protected void writeFont(Font font) { // written when needed } /* * ================================================================================ | * 9. Auxiliary * ================================================================================ */ public GraphicsConfiguration getDeviceConfiguration() { writeWarning(getClass() + ": getDeviceConfiguration() not implemented."); return null; } /** * Embed a PostScript comment into the output file. */ public void writeComment(String s) throws IOException { os.println("% " + s); } public String toString() { return "PSGraphics2D"; } /* * ================================================================================ | * 10. Private/Utility * ================================================================================ */ /** * Write the string str the the stream. Method is used by * {@link FontUtilities#showString(java.awt.Font, String, * org.freehep.graphics2d.font.CharTable, * org.freehep.graphics2d.font.FontUtilities.ShowString)} or * {@link #showCharacterCodes(String, double, double)} depending on the * settings font embedding. * * @param font font to use * @param str string to draw */ public void showString(Font font, String str) { StringBuffer result = new StringBuffer(); Map /**/ attributes = FontUtilities.getAttributes(font); PSFontTable.normalize(attributes); // write font name String fontName = fontTable.fontReference( font, isProperty(EMBED_FONTS), getProperty(EMBED_FONTS_AS)); result.append("/"); result.append(fontName); result.append(" findfont "); result.append(font.getSize()); result.append(" scalefont setfont"); // use embeded fonts or draw string directly if (isProperty(EMBED_FONTS)) { // write string directly result.append("\n"); result.append(PSStringStyler.getEscaped(str)); result.append(" show"); } else { // write string as styled unicode char sequence result.append(" "); result.append(PSStringStyler.getStyledString(attributes, str)); result.append(" recshow"); } // write the result os.println(result.toString()); } /** * Draws str to the stream. Uses the font transformation and depending on * {@link PSGraphics2D#EMBED_FONTS} the method {@link #showString(java.awt.Font, String)} * or {@link FontUtilities#showString(java.awt.Font, String, org.freehep.graphics2d.font.CharTable, * org.freehep.graphics2d.font.FontUtilities.ShowString)} ; * * @param str string to draw * @param x coordinate for drawing * @param y coordinate for drawing * @throws java.io.IOException thrown by write operations */ private void showCharacterCodes(String str, double x, double y) throws IOException { // push a copy of the current graphics state on the graphics state stack writeGraphicsSave(); // move to string position. This is done by transformation because // after a "moveto" command all translations by a transformation // are ignored and font transformation should be used after the // general one. AffineTransform at = new AffineTransform(1, 0, 0, 1, x, y); // aplly font transformation, e.g. vertical offset and scaling // for TextAttribut.SUPERSUBSCRIPT at.concatenate(getFont().getTransform()); // flip vertically at.scale(1, -1); // write transformation writeTransform(at); // move to drawing position, nedded to open a drawing path os.println(fixedPrecision(0) + " " + fixedPrecision(0) + " moveto"); // embed font or draw string directly if (isProperty(EMBED_FONTS)) { // use embedded font encodings for unicode to PS FontUtilities.showString( getFont(), str, fontTable.getEncodingTable(), this); } else { // use PS header for unicode to composite font encoding showString(getFont(), str); } // reset the current graphics state from the one on the top // of the graphics state stack and pop the graphics state stack writeGraphicsRestore(); } /** * A utility function which actually sets the color in the PS. We use the * stroke color as the PS current color and a special saved variable for the * fill color. * * @param c Color * @param fillColor true writes a color for fillings */ private void setPSColor(Color c, boolean fillColor) { if (c != null) { if (c instanceof MappedColor) { MappedColor mc = (MappedColor) c; if (!fillColor) { if (mc.getBrightness() == 0) { os.println(mc.getColorTag() + " vg&C"); } else { os.println(mc.getColorTag() + " " + mc.getBrightness() + " darken vg&C"); } } else { if (mc.getBrightness() == 0) { os.println(mc.getColorTag() + " vg&DFC"); } else { os.println(mc.getColorTag() + " " + mc.getBrightness() + " darken vg&DFC"); } } } else { Color pc = getPrintColor(c); double red = ((double) pc.getRed()) / 255.; double green = ((double) pc.getGreen()) / 255.; double blue = ((double) pc.getBlue()) / 255.; os.print(fixedPrecision(red) + " " + fixedPrecision(green) + " " + fixedPrecision(blue) + " "); os.println(((fillColor) ? "rg" : "RG")); } } } private ScientificFormat scientific = new ScientificFormat(6, 9, false); public String fixedPrecision(double d) { return scientific.format(d); } } src/main/java/org/freehep/graphicsio/ps/MappedColor.java0000644000175000017500000000457310466645574022613 0ustar user01user01// Copyright 2000, CERN, Geneva, Switzerland and University of Santa Cruz, California, U.S.A. package org.freehep.graphicsio.ps; import java.awt.Color; /** * * @author Charles Loomis * @version $Id: MappedColor.java 8584 2006-08-10 23:06:37Z duns $ */ public class MappedColor extends java.awt.Color { /** * Index of the color in the color map. */ protected int colorIndex; /** * Value of the brightness/darkness of this color. Larger values indicate * darker colors and vice versa. */ protected int brightness; /** * Constructor takes the RGB color components and the color index. */ public MappedColor(int r, int g, int b, int colorIndex) { // Call the Color constructor. super(r, g, b); // Set the color index and brightness. this.colorIndex = colorIndex; brightness = 0; } /** * Constructor takes the RGB color components, the color index, and the * brightness. */ public MappedColor(int r, int g, int b, int colorIndex, int brightness) { // Call the Color constructor. super(r, g, b); // Set the color index and brightness. this.colorIndex = colorIndex; this.brightness = brightness; } /** * Make a brightened color based on this color. */ public Color brighter() { int r = getRed() * 10 / 7; int g = getGreen() * 10 / 7; int b = getBlue() * 10 / 7; r = (int) Math.max(0, Math.min(255, r)); g = (int) Math.max(0, Math.min(255, g)); b = (int) Math.max(0, Math.min(255, b)); return (Color) new MappedColor(r, g, b, colorIndex, brightness - 1); } /** * Make a darkened color based on this color. */ public Color darker() { int r = getRed() * 7 / 10; int g = getGreen() * 7 / 10; int b = getBlue() * 7 / 10; r = (int) Math.max(0, Math.min(255, r)); g = (int) Math.max(0, Math.min(255, g)); b = (int) Math.max(0, Math.min(255, b)); return (Color) new MappedColor(r, g, b, colorIndex, brightness - 1); } /** * Get the brightness of this color. */ public int getBrightness() { return brightness; } /** * Get the tag associated with this color. */ public String getColorTag() { return ColorMap.getTag(colorIndex); } } src/main/java/org/freehep/graphicsio/ps/EPSExportFileType.java0000644000175000017500000000153110633527176023661 0ustar user01user01// Copyright 2000-2007, FreeHEP. package org.freehep.graphicsio.ps; import java.util.Properties; import javax.swing.JPanel; import org.freehep.util.UserProperties; /** * * @author Mark Donszelmann * @author Charles Loomis * @version $Id: EPSExportFileType.java 12753 2007-06-12 22:32:31Z duns $ */ public class EPSExportFileType extends AbstractPSExportFileType { public String getDescription() { return "Encapsulated PostScript"; } public String[] getExtensions() { return new String[] { "eps", "epi", "epsi", "epsf" }; } public JPanel createOptionPanel(Properties user) { UserProperties options = new UserProperties(user, PSGraphics2D .getDefaultProperties()); JPanel panel = super.createOptionPanel(options); preview.setVisible(true); return panel; } } src/main/java/org/freehep/graphicsio/ps/PSPathConstructor.java0000644000175000017500000000417410466645574024010 0ustar user01user01// Copyright 2001-2004 FreeHEP. package org.freehep.graphicsio.ps; import java.io.IOException; import java.io.PrintStream; import org.freehep.graphicsio.QuadToCubicPathConstructor; import org.freehep.util.ScientificFormat; /** * @author Mark Donszelmann * @version $Id: PSPathConstructor.java 8584 2006-08-10 23:06:37Z duns $ */ public class PSPathConstructor extends QuadToCubicPathConstructor { private PrintStream os; private boolean intPrecision; private String moveto, lineto, curveto, close; private ScientificFormat scientific = new ScientificFormat(6, 9, false); public PSPathConstructor(PrintStream os, boolean useProlog, boolean intPrecision) { super(); this.os = os; this.intPrecision = intPrecision; if (useProlog) { moveto = "m"; lineto = "l"; curveto = "c"; close = "h"; } else { moveto = "moveto"; lineto = "lineto"; curveto = "curveto"; close = "closepath"; } } public void move(double x, double y) throws IOException { os.println(fixedPrecision(x) + " " + fixedPrecision(y) + " " + moveto); super.move(x, y); } public void line(double x, double y) throws IOException { os.println(fixedPrecision(x) + " " + fixedPrecision(y) + " " + lineto); super.line(x, y); } public void cubic(double x1, double y1, double x2, double y2, double x3, double y3) throws IOException { os.println(fixedPrecision(x1) + " " + fixedPrecision(y1) + " " + fixedPrecision(x2) + " " + fixedPrecision(y2) + " " + fixedPrecision(x3) + " " + fixedPrecision(y3) + " " + " " + curveto); super.cubic(x1, y1, x2, y2, x3, y3); } public void closePath(double x0, double y0) throws IOException { os.println(close); super.closePath(x0, y0); } protected String fixedPrecision(double d) { if (intPrecision) { return Integer.toString((int) d); } else { return scientific.format(d); } } } src/main/java/overview.html0000644000175000017500000000012710535662416015276 0ustar user01user01 This is the API specification of the FreeHEP VectorGraphics package. src/main/resources/0000700000175000017500000000000011343126134013607 5ustar user01user01src/main/resources/org/0000700000175000017500000000000011343126134014376 5ustar user01user01src/main/resources/org/freehep/0000700000175000017500000000000011343126134016014 5ustar user01user01src/main/resources/org/freehep/graphicsio/0000700000175000017500000000000011343126134020144 5ustar user01user01src/main/resources/org/freehep/graphicsio/ps/0000700000175000017500000000000011343126134020566 5ustar user01user01src/main/resources/org/freehep/graphicsio/ps/PSProlog.txt0000644000175000017500000007320210550657000023052 0ustar user01user01100 dict dup begin % % File: org/freehep/graphicsio.ps/PSProlog.txt % Author: Charles Loomis % % Redefinitions which save some space in the output file. These are also % the same as the PDF operators. /q {gsave} def /Q {grestore} def /n {newpath} def /m {moveto} def /l {lineto} def /c {curveto} def /h {closepath} def /re {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath} def /f {fill} def /f* {eofill} def /F {gsave vg&FC fill grestore} def /F* {gsave vg&FC eofill grestore} def /s {closepath stroke} def /S {stroke} def /b {closepath gsave vg&FC fill grestore gsave stroke grestore newpath} def /B {gsave vg&FC fill grestore gsave stroke grestore newpath} def /b* {closepath gsave vg&FC eofill grestore gsave stroke grestore newpath} def /B* {gsave vg&FC eofill grestore gsave stroke grestore newpath} def /g {1 array astore /vg&fcolor exch def} def /G {setgray} def /k {4 array astore /vg&fcolor exch def} def /K {setcmykcolor} def /rg {3 array astore /vg&fcolor exch def} def /RG {setrgbcolor} def % Initialize the fill color. 0 0 0 rg /vg&FC {mark vg&fcolor aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /vg&DFC {/vg&fcolor exch def} def /vg&C {mark exch aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /w {setlinewidth} def /j {setlinejoin} def /J {setlinecap} def /M {setmiterlimit} def /d {setdash} def /i {setflat} def /W {clip} def /W* {eoclip} def % Setup the default graphics state. % (black; 1 pt. linewidth; miter join; butt-ends; solid) /defaultGraphicsState {0 g 1 w 0 j 0 J [] 0 d} def % Emulation of the rectangle operators for PostScript implementations % which do not implement all Level 2 features. This is an INCOMPLETE % emulation; only the "x y width height rect..." form is emulated. /*rf {gsave newpath re fill grestore} def /*rs {gsave newpath re stroke grestore} def /*rc {newpath re clip} def /rf /rectfill where {pop /rectfill}{/*rf} ifelse load def /rs /rectstroke where {pop /rectstroke}{/*rs} ifelse load def /rc /rectclip where {pop /rectclip}{/*rc} ifelse load def % Emulation of the selectfont operator. This includes a 20% increase in % the fontsize which is necessary to get sizes similar to the Java fonts. /*sf {exch findfont exch dup type /arraytype eq {makefont}{scalefont} ifelse setfont} bind def /sf /selectfont where {pop {1.2 mul selectfont}}{{1.2 mul *sf}} ifelse def % Special version of stroke which allows the dash pattern to continue % across path segments. (This may be needed for PostScript although % modern printers seem to do this correctly.) /vg&stroke { currentdash pop length 0 eq {stroke} { currentdash /vg&doffset exch def pop flattenpath {m vg&resetdash} {2 copy currentpoint 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt 3 1 roll l currentdash 3 -1 roll add setdash} {} {h vg&resetdash} pathforall stroke vg&resetdash } ifelse } def /vg&resetdash {currentdash pop vg&doffset setdash} def % Initialize variables for safety. /delta 0 def /xv 0 def /yv 0 def /width 0 def /height 0 def % Initialize to portrait INTERNATIONAL (Letter-height, A4-width) page. /pw 595 def /ph 791 def /po true def /ftp false def % Initialize margins to 20 points. /ml 20 def /mr 20 def /mt 20 def /mb 20 def % Temporary matrices. /smatrix 0 def /nmatrix 0 def % set page size (usage: setpagesize) /setpagesize {/ph exch def /pw exch def} def % set page orientation (usage: portrait or landscape) /portrait {/po true def} def /landscape {/po false def} def % force natural size for image (usage: naturalsize) /naturalsize {/ftp false def} def % resize image to fill page (usage: fittopage) /fittopage {/ftp true def} def % set margins of the page (usage: setmargins) /setmargins {/mr exch def /mt exch def /mb exch def /ml exch def} def % set the graphic's size (usage: setsize) /setsize {/gh exch def /gw exch def} def % set the graphic's origin (usage: setorigin) /setorigin {/gy exch def /gx exch def} def % calculate image center /imagecenter {pw ml sub mr sub 2 div ml add ph mt sub mb sub 2 div mb add} def % calculate the necessary scaling /imagescale {po {gw}{gh} ifelse pw ml sub mr sub div po {gh}{gw} ifelse ph mt sub mb sub div 2 copy lt {exch} if pop ftp not {1 2 copy lt {exch} if pop} if 1 exch div /sfactor exch def /gw gw sfactor mul def /gh gh sfactor mul def} def % calculate image origin /imageorigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div po {add}{sub} ifelse} def % calculate the clipping origin /cliporigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub floor ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div sub floor} def % Set the clipping region to the bounding box. /cliptobounds {cliporigin po {gw}{gh} ifelse 1 add po {gh}{gw} ifelse 1 add rc} def % set the base transformation matrix (usage: setbasematrix) /setbasematrix {imageorigin translate po {0}{90} ifelse rotate sfactor sfactor neg scale /defaultmatrix matrix currentmatrix def} def % The lower-right bias in drawing 1 pt. wide lines. /bias {q 0.5 0.5 translate} def /unbias {Q} def % Define the composite fonts used to print Unicode strings. % Undefine particular values in an encoding array. /vg&undef { {exch dup 3 -1 roll /.notdef put} forall } def /vg&redef { {3 -1 roll dup 4 2 roll put} forall } def % usage: key encoding basefontname vg&newbasefont font /vg&newbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def currentdict end definefont } def % usage: key encoding basefontname vg&newskewedbasefont font /vg&newskewedbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def exch FontMatrix exch matrix concatmatrix /FontMatrix exch def currentdict end definefont } def % usage: basekey suffix vg&nconcat name /vg&nconcat { 2 {dup length string cvs exch} repeat dup length 3 -1 roll dup length 3 -1 roll add string dup 0 4 -1 roll dup length 5 1 roll putinterval dup 4 -2 roll exch putinterval cvn } def %usage: fontname vg&skewmatrix matrix /vg&skewmatrix { findfont dup /FontInfo known { /FontInfo get dup /ItalicAngle known { [ 1 0 4 -1 roll /ItalicAngle get neg dup sin exch cos div 1 0 0 ] } {pop matrix} ifelse } {pop matrix} ifelse } def % usage: newfontname basefontname vg&newcompositefont -- /vg&newcompositefont { /vg&fstyle exch def /vg&bfont exch def /vg&fname exch def << /FontStyleBits vg&fstyle /FontType 0 /FontMatrix matrix /FontName vg&fname /FMapType 2 /Encoding [ 0 1 255 {pop 6} for ] dup 16#00 0 put % Latin dup 16#03 1 put % Greek dup 16#20 2 put % Punctuation dup 16#21 3 put % Arrows dup 16#22 4 put % MathOps dup 16#27 5 put % Dingbats /FDepVector [ vg&bfont /-UC-Latin vg&nconcat UCLatinEncoding vg&bfont vg&newbasefont vg&bfont vg&skewmatrix vg&bfont /-UC-Greek vg&nconcat UCGreekEncoding /Symbol vg&newskewedbasefont vg&bfont /-UC-Punctuation vg&nconcat UCPunctuationEncoding vg&bfont vg&newbasefont /Arrows-UC findfont /MathOps-UC findfont /Dingbats-UC findfont /Undefined-UC findfont ] >> vg&fname exch definefont pop } def % Null encoding vector (all elements set to .notdef) /NullEncoding [ 256 {/.notdef} repeat ] def % Unicode Latin encoding (unicode codes \u0000-\u00ff) /UCLatinEncoding ISOLatin1Encoding dup length array copy dup 16#60 /grave put [ 16#90 16#91 16#92 16#93 16#94 16#95 16#96 16#97 16#98 16#9a 16#9b 16#9d 16#9e 16#9f ] vg&undef def % Unicode Greek encoding (unicode codes \u0370-\u03ff) /UCGreekEncoding NullEncoding dup length array copy << 16#91 /Alpha 16#92 /Beta 16#93 /Gamma 16#94 /Delta 16#95 /Epsilon 16#96 /Zeta 16#97 /Eta 16#98 /Theta 16#99 /Iota 16#9a /Kappa 16#9b /Lambda 16#9c /Mu 16#9d /Nu 16#9e /Xi 16#9f /Omicron 16#a0 /Pi 16#a1 /Rho 16#a3 /Sigma 16#a4 /Tau 16#a5 /Upsilon 16#a6 /Phi 16#a7 /Chi 16#a8 /Psi 16#a9 /Omega 16#b1 /alpha 16#b2 /beta 16#b3 /gamma 16#b4 /delta 16#b5 /epsilon 16#b6 /zeta 16#b7 /eta 16#b8 /theta 16#b9 /iota 16#ba /kappa 16#bb /lambda 16#bc /mu 16#bd /nu 16#be /xi 16#bf /omicron 16#c0 /pi 16#c1 /rho 16#c2 /sigma1 16#c3 /sigma 16#c4 /tau 16#c5 /upsilon 16#c6 /phi1 16#c7 /chi 16#c8 /psi 16#c9 /omega 16#7e /semicolon 16#87 /dotmath 16#d1 /theta1 16#d2 /Upsilon1 16#d5 /phi 16#d6 /omega1 >> vg&redef def % Unicode punctuation encoding (unicode codes \u2000-\u206f) /UCPunctuationEncoding NullEncoding dup length array copy << 16#10 /hyphen 16#11 /hyphen 16#12 /endash 16#13 /emdash 16#18 /quoteleft 16#19 /quoteright 16#1a /quotesinglbase 16#1b /quotesingle 16#1c /quotedblleft 16#1d /quotedblright 16#1e /quotedblbase 16#1f /quotedbl 16#20 /dagger 16#21 /daggerdbl 16#22 /bullet 16#24 /period 16#26 /ellipsis 16#27 /periodcentered 16#30 /perthousand 16#44 /fraction 16#70 /zerosuperior 16#74 /foursuperior 16#75 /fivesuperior 16#76 /sixsuperior 16#77 /sevensuperior 16#78 /eightsuperior 16#79 /ninesuperior 16#7b /hyphensuperior 16#7d /parenleftsuperior 16#7e /parenrightsuperior 16#80 /zeroinferior 16#84 /fourinferior 16#85 /fiveinferior 16#81 /oneinferior 16#82 /twoinferior 16#83 /threeinferior 16#86 /sixinferior 16#87 /seveninferior 16#88 /eightinferior 16#89 /nineinferior 16#8b /hypheninferior 16#8d /parenleftinferior 16#8e /parenrightinferior >> vg&redef def % Unicode mathematical operators encoding (unicode codes \u2200-\u22ff) /UCMathOpsEncoding NullEncoding dup length array copy << 16#00 /universal 16#02 /partialdiff 16#03 /existential 16#05 /emptyset 16#06 /Delta 16#07 /gradient 16#08 /element 16#09 /notelement 16#0b /suchthat 16#0f /product 16#11 /summation 16#12 /minus 16#15 /fraction 16#17 /asteriskmath 16#19 /bullet 16#1a /radical 16#1d /proportional 16#1e /infinity 16#20 /angle 16#23 /bar 16#27 /logicaland 16#28 /logicalor 16#29 /intersection 16#2a /union 16#2b /integral 16#34 /therefore 16#36 /colon 16#3c /similar 16#45 /congruent 16#48 /approxequal 16#60 /notequal 16#61 /equivalence 16#64 /lessequal 16#65 /greaterequal 16#82 /propersubset 16#83 /propersuperset 16#86 /reflexsubset 16#87 /reflexsuperset 16#95 /circleplus 16#97 /circlemultiply 16#a5 /perpendicular 16#03 /existential 16#c0 /logicaland 16#c1 /logicalor 16#c2 /intersection 16#c3 /union 16#c4 /diamond 16#c5 /dotmath >> vg&redef def % Unicode arrows encoding (unicode codes \u2190-\u21ff) % Also includes those "Letterlike" unicode characters % which are available in the symbol font. (unicode codes \u2100-\u214f) /UCArrowsEncoding NullEncoding dup length array copy << 16#11 /Ifraktur 16#1c /Rfraktur 16#22 /trademarkserif 16#35 /aleph 16#90 /arrowleft 16#91 /arrowup 16#92 /arrowright 16#93 /arrowdown 16#94 /arrowboth 16#d0 /arrowdblleft 16#d1 /arrowdblup 16#d2 /arrowdblright 16#d3 /arrowdbldown 16#d4 /arrowdblboth >> vg&redef def /ZapfDingbats findfont /Encoding get dup length array copy /UCDingbatsEncoding exch def 16#20 1 16#7f { dup 16#20 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for 16#a0 1 16#ff { dup 16#40 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for UCDingbatsEncoding [ 16#c0 1 16#ff {} for ] vg&undef [ 16#00 16#05 16#0a 16#0b 16#28 16#4c 16#4e 16#53 16#54 16#55 16#57 16#5f 16#60 16#68 16#69 16#6a 16#6b 16#6c 16#6d 16#6e 16#6f 16#70 16#71 16#72 16#73 16#74 16#75 16#95 16#96 16#97 16#b0 16#bf ] vg&undef pop % Define the base fonts which don't change. /Undefined-UC NullEncoding /Helvetica vg&newbasefont pop /MathOps-UC UCMathOpsEncoding /Symbol vg&newbasefont pop /Arrows-UC UCArrowsEncoding /Symbol vg&newbasefont pop /Dingbats-UC UCDingbatsEncoding /ZapfDingbats vg&newbasefont pop % Make the SansSerif composite fonts. /SansSerif /Helvetica 16#00 vg&newcompositefont /SansSerif-Bold /Helvetica-Bold 16#01 vg&newcompositefont /SansSerif-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /SansSerif-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Serif composite fonts. /Serif /Times-Roman 16#00 vg&newcompositefont /Serif-Bold /Times-Bold 16#01 vg&newcompositefont /Serif-Italic /Times-Italic 16#02 vg&newcompositefont /Serif-BoldItalic /Times-BoldItalic 16#03 vg&newcompositefont % Make the Monospaced composite fonts. /Monospaced /Courier 16#00 vg&newcompositefont /Monospaced-Bold /Courier-Bold 16#01 vg&newcompositefont /Monospaced-Italic /Courier-Oblique 16#02 vg&newcompositefont /Monospaced-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont % Make the Dialog composite fonts. /Dialog /Helvetica 16#00 vg&newcompositefont /Dialog-Bold /Helvetica-Bold 16#01 vg&newcompositefont /Dialog-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /Dialog-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the DialogInput composite fonts. /DialogInput /Courier 16#00 vg&newcompositefont /DialogInput-Bold /Courier-Bold 16#01 vg&newcompositefont /DialogInput-Italic /Courier-Oblique 16#02 vg&newcompositefont /DialogInput-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont % Make the Typewriter composite fonts (JDK 1.1 only). /Typewriter /Courier 16#00 vg&newcompositefont /Typewriter-Bold /Courier-Bold 16#01 vg&newcompositefont /Typewriter-Italic /Courier-Oblique 16#02 vg&newcompositefont /Typewriter-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont /cfontH { dup /fontsize exch def /SansSerif exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHB { dup /fontsize exch def /SansSerif-Bold exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHI { dup /fontsize exch def /SansSerif-Italic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHBI { dup /fontsize exch def /SansSerif-BoldItalic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontT { dup /fontsize exch def /Serif exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTB { dup /fontsize exch def /Serif-Bold exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTI { dup /fontsize exch def /Serif-Italic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTBI { dup /fontsize exch def /Serif-BoldItalic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontC { dup /fontsize exch def /Typewriter exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCB { dup /fontsize exch def /Typewriter-Bold exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCI { dup /fontsize exch def /Typewriter-Italic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCBI { dup /fontsize exch def /Typewriter-BoldItalic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def % Darken or lighten the current color. /darken {0.7 exch exp 3 copy q 4 -1 roll vg&C currentrgbcolor 3 {4 -2 roll mul} repeat 3 array astore Q} def /displayColorMap << /Cr [1.00 0.00 0.00] /Cg [0.00 1.00 0.00] /Cb [0.00 0.00 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.00 0.00] /CGg [0.00 1.00 0.00] /CGb [0.00 0.00 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.00 0.00] /CIg [0.00 1.00 0.00] /CIb [0.00 0.00 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /printColorMap << /Cr [1.00 0.33 0.33] /Cg [0.33 1.00 0.33] /Cb [0.33 0.33 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.33 0.33] /CGg [0.33 1.00 0.33] /CGb [0.33 0.33 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.33 0.33] /CIg [0.33 1.00 0.33] /CIb [0.33 0.33 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /grayColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [0.75] /CGg [1 ] /CGb [0.50] /CGc [0.75] /CGm [0.50] /CGy [1 ] /CGo [0.75] /CGp [1 ] /CGw [0 ] /CGgrl [0.25] /CGgr [0.50] /CGgrd [0.75] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def /bwColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [1 ] /CGg [1 ] /CGb [1 ] /CGc [1 ] /CGm [1 ] /CGy [1 ] /CGo [1 ] /CGp [1 ] /CGw [0 ] /CGgrl [1 ] /CGgr [1 ] /CGgrd [1 ] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def % % The following routines handle the alignment of and printing of % tagged strings. % % Predefine the bounding box values. /bbllx 0 def /bblly 0 def /bburx 0 def /bbury 0 def % This routine pops the first unicode character off of a string and returns % the remainder of the string, the character code of first character, % and a "true" if the string was non-zero length. % popfirst % popfirst /popfirst { dup length 1 gt {dup 0 get /vg&fbyte exch def dup 1 get /vg&cbyte exch def dup length 2 sub 2 exch getinterval true} {pop false} ifelse } def % This routine shows a single unicode character given the font and % character codes. % unicharshow -- /unicharshow { 2 string dup 0 5 -1 roll put dup 1 4 -1 roll put internalshow } def % This is an internal routine to alternate between determining the % bounding box for stringsize and showing the string for recshow. % internalshow -- /internalshow {show} def % This is an internal routine to alternate between determining the % bounding box for stringsize and stroking various ornaments. % internalstroke -- /internalstroke {S} def % Sets up internalshow to use the null device to determine string size. % -- nullinternalshow -- /nullinternalshow {/internalshow {false charpath flattenpath pathbbox updatebbox} def} def % Sets up internalstroke to use the null device to determine string size. % -- nullinternalstroke -- /nullinternalstroke { /internalstroke {flattenpath pathbbox updatebbox} def} def % This routine tests to see if the character code matches the first % character of a string. % testchar /testchar {exch dup 3 -1 roll 0 get eq} def % Raise the text baseline for superscripts. % -- raise -- /raise { 0 fontsize 2 div rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-raise the text baseline for superscripts. % -- unraise -- /unraise { /fontsize fontsize 1.5 mul def 0 fontsize 2 div neg rmoveto } def % Lower the text baseline for subscripts. % -- lower -- /lower { 0 fontsize 3 div neg rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-lower the text baseline for subscripts. % -- unlower -- /unlower { /fontsize fontsize 1.5 mul def 0 fontsize 3 div rmoveto } def % Compare the top two elements on the stack and leave only the % larger one. /maxval {2 copy gt {pop} {exch pop} ifelse} def % Tokenize a string. Do not use the usual PostScript token because % parentheses will not be interpreted correctly because of rescanning % of the string. /vg&token {/vg&string exch def /vg&index -1 def /vg&level 0 def 0 2 vg&string length 2 sub { dup dup 1 add exch vg&string exch get 8 bitshift vg&string 3 -1 roll get or dup 16#f0fe eq {pop 1}{16#f0ff eq {-1}{0} ifelse} ifelse /vg&level exch vg&level add def vg&level 0 eq {/vg&index exch def exit} if pop } for vg&index 0 ge { vg&string vg&index 2 add dup vg&string length exch sub getinterval vg&index 2 gt {vg&string 2 vg&index 2 sub getinterval}{()} ifelse true} {false} ifelse } bind def % Recursively show an unicode string. % recshow -- /recshow { popfirst { % Test to see if this is a string attribute. vg&fbyte 16#f0 and 16#e0 eq { q % Font style. currentfont dup /FontStyleBits known {/FontStyleBits get}{pop 0} ifelse vg&cbyte or vg&fontstyles exch get fontsize exch exec vg&token pop recshow currentpoint Q m recshow } { vg&fbyte 16#F8 and 16#F0 eq { % Superscript and/or subscript. vg&cbyte 16#00 eq { vg&token pop exch vg&token pop 3 -1 roll q raise recshow unraise currentpoint pop Q exch q lower recshow unlower currentpoint pop Q maxval currentpoint exch pop m recshow } if % Strikeout. vg&cbyte 16#01 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll fontsize 3 div add moveto fontsize 3 div add lineto internalstroke Q recshow} if % Underline. vg&cbyte 16#02 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dashed underline. vg&cbyte 16#03 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J [ vg&uthick 5 mul vg&uthick 2 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dotted underline. vg&cbyte 16#04 eq { vg&token pop currentpoint 3 -1 roll recshow q 1 J [ 0 vg&uthick 3 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Thick underline. vg&cbyte 16#05 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Gray thick underline. vg&cbyte 16#06 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w 0.5 setgray currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Overbar. vg&cbyte 16#07 eq { vg&token pop dup stringsize relative 4 1 roll pop pop exch 3 -1 roll recshow q 0 J vg&underline vg&uthick w vg&uoffset neg add dup currentpoint pop exch m l internalstroke Q recshow} if } { vg&fbyte vg&cbyte unicharshow recshow } ifelse } ifelse } if } def % Get the underline position and thickness from the current font. /vg&underline { currentfont dup /FontType get 0 eq {/FDepVector get 0 get} if dup dup /FontInfo known { /FontInfo get dup dup /UnderlinePosition known { /UnderlinePosition get /vg&uoffset exch def } { pop /vg&uoffset 0 def } ifelse dup /UnderlineThickness known { /UnderlineThickness get /vg&uthick exch def } { pop /vg&uthick 0 def } ifelse } { pop /vg&uoffset 0 def /vg&uthick 0 def } ifelse /FontMatrix get currentfont dup /FontType get 0 eq {/FontMatrix get matrix concatmatrix}{pop} ifelse dup 0 vg&uoffset 3 -1 roll transform /vg&uoffset exch def pop 0 vg&uthick 3 -1 roll transform /vg&uthick exch def pop } def % Make a frame with the coordinates on the stack. % frame -- /frame {4 copy m 3 1 roll exch l 4 -2 roll l l h} def % Resets the accumulated bounding box to a degenerate box at the % current point. % -- resetbbox -- /resetbbox { currentpoint 2 copy /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Update the accumulated bounding box. % updatebbox -- /updatebbox { dup bbury gt {/bbury exch def} {pop} ifelse dup bburx gt {/bburx exch def} {pop} ifelse dup bblly lt {/bblly exch def} {pop} ifelse dup bbllx lt {/bbllx exch def} {pop} ifelse } def % Set the bounding box to the values on the stack. % updatebbox -- /restorebbox { /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Push the accumulated bounding box onto the stack. % -- pushbbox /pushbbox {bbllx bblly bburx bbury} def % Make the relative bounding box relative to the currentpoint. % inflate /inflate { 2 {fontsize 0.2 mul add 4 1 roll} repeat 2 {fontsize 0.2 mul sub 4 1 roll} repeat } def % Make the relative bounding box relative to the currentpoint. % relative /relative { currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll } def % Returns the size of a string appropriate for recshow. % stringsize /stringsize { pushbbox /internalshow load /internalstroke load 7 -1 roll q nulldevice 0 0 m nullinternalshow nullinternalstroke resetbbox recshow /internalstroke exch def /internalshow exch def pushbbox 8 -4 roll restorebbox Q } def % Calculate values for string positioning. /calcval {4 copy 3 -1 roll sub /widy exch def sub neg /widx exch def pop pop /dy exch def /dx exch def} def % Utilities to position a string. % First letter (U=upper, C=center, B=baseline, L=lower) % Second letter (L=left, C=center, R=right) /align [ {calcval dx neg widy dy add neg rmoveto} % UL {calcval dx neg widy 2 div dy add neg rmoveto} % CL {calcval dx neg 0 rmoveto} % BL {calcval dx neg dy neg rmoveto} % LL {calcval widx dx add neg widy dy add neg rmoveto} % UR {calcval widx dx add neg widy 2 div dy add neg rmoveto} % CR {calcval widx dx add neg 0 rmoveto} % BR {calcval widx dx add neg dy neg rmoveto} % LR {calcval widx 2 div dx add neg widy dy add neg rmoveto} % UC {calcval widx 2 div dx add neg widy 2 div dy add neg rmoveto} % CC {calcval widx 2 div dx add neg 0 rmoveto} % BC {calcval widx 2 div dx add neg dy neg rmoveto} % LC ] def /vg&str {m q 1 -1 scale dup stringsize 4 copy align 11 -1 roll get exec q inflate relative frame exch exec Q recshow Q} def end /procDict exch def src/main/resources/META-INF/0000700000175000017500000000000011343126134014747 5ustar user01user01src/main/resources/META-INF/services/0000700000175000017500000000000011343126134016572 5ustar user01user01src/main/resources/META-INF/services/org.freehep.util.export.ExportFileType0000644000175000017500000000012710470455440026156 0ustar user01user01org.freehep.graphicsio.ps.EPSExportFileType org.freehep.graphicsio.ps.PSExportFileType src/site/0000700000175000017500000000000011343226333011617 5ustar user01user01src/site/apt/0000700000175000017500000000000011343126134012401 5ustar user01user01src/site/site.xml0000644000175000017500000000173410535764056013337 0ustar user01user01 FreeHEP GraphicsIO PS http://java.freehep.org/mvn/freehep-graphicsio-ps FreeHEP http://java.freehep.org/images/sm-freehep.gif http://java.freehep.org/ src/test/0000700000175000017500000000000011343126124011627 5ustar user01user01src/test/java/0000700000175000017500000000000011343126122012546 5ustar user01user01src/test/java/org/0000700000175000017500000000000011343126122013335 5ustar user01user01src/test/java/org/freehep/0000700000175000017500000000000011343126122014753 5ustar user01user01src/test/java/org/freehep/graphicsio/0000700000175000017500000000000011343126122017103 5ustar user01user01src/test/java/org/freehep/graphicsio/ps/0000700000175000017500000000000011343126122017525 5ustar user01user01src/test/java/org/freehep/graphicsio/ps/test/0000700000175000017500000000000011343126124020506 5ustar user01user01src/test/java/org/freehep/graphicsio/ps/test/ScrollTest.java0000644000175000017500000000613110466645574023506 0ustar user01user01package org.freehep.graphicsio.ps.test; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.io.File; import java.io.FileOutputStream; import java.util.Properties; import javax.swing.BorderFactory; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollBar; import javax.swing.JScrollPane; import org.freehep.graphicsio.ps.EPSExportFileType; import org.freehep.util.export.ExportFileType; public class ScrollTest { public static void main(String[] args) { JFrame frame = new JFrame(); JPanel jcomponent = new TestPanel(); jcomponent.setLayout(new BoxLayout(jcomponent, BoxLayout.X_AXIS)); JScrollPane scroll = new JScrollPane(jcomponent); frame.setContentPane(scroll); scroll.setPreferredSize(new Dimension(300, 50)); // Make a long row of buttons. int xmax = 32; for (int x = 0; x < xmax; x++) { JPanel button = new TestSubPanel("Test:" + x); jcomponent.add(button); } // Make the frame visible. frame.pack(); frame.setVisible(true); // Reset the scroll bar to the middle of the row. JScrollBar bar = scroll.getHorizontalScrollBar(); int max = bar.getMaximum(); int min = bar.getMinimum(); bar.setValue((max + min) / 2); ExportFileType epsOut = new EPSExportFileType(); try { File file; FileOutputStream fos; System.out.println("\nPrinting image...\n"); file = new File("ScrollTest.eps"); fos = new FileOutputStream(file); epsOut.exportToFile(fos, scroll, frame, new Properties(), null); fos.close(); System.out.println(); System.out.println("An image of the frame should have been "); System.out.println("produced (ScrollTest.eps). If this image "); System.out.println("is not correct, then check the clipping"); System.out.println("rectangles in the graphics code."); System.out.println(); } catch (Exception e) { e.printStackTrace(); } } static class TestSubPanel extends JPanel { private String label = null; public TestSubPanel(String label) { super(new BorderLayout(), false); this.label = label; setBorder(BorderFactory.createLineBorder(Color.black, 1)); JButton button = new JButton(label); add(button, "North"); } public String getLabel() { return label; } public void paintComponent(Graphics g) { System.out.println("Draw subpanel: " + label + " " + g.getClip()); super.paintComponent(g); } } static class TestPanel extends JPanel { public TestPanel() { } public void paintComponent(Graphics g) { System.out.println("Draw panel: " + g.getClip()); super.paintComponent(g); } } } src/test/java/org/freehep/graphicsio/ps/test/PSTestSuite.java0000644000175000017500000000141110633527176023571 0ustar user01user01// Copyright 2005, FreeHEP. package org.freehep.graphicsio.ps.test; import org.freehep.graphicsio.test.TestSuite; /** * @author Mark Donszelmann * @version $Id: PSTestSuite.java 12753 2007-06-12 22:32:31Z duns $ */ public class PSTestSuite extends TestSuite { /* protected void addTests(String category, String fmt, String dir, String ext, boolean compare, Properties properties) { super.addTests(category, fmt, dir, ext, compare, properties); addTest(new TestCase( "org.freehep.graphicsio.ps.test.PSTestPreviewThumbnail", category, fmt, dir, ext, compare, null)); } */ public static TestSuite suite() { PSTestSuite suite = new PSTestSuite(); suite.addTests("PS"); return suite; } } src/test/java/org/freehep/graphicsio/ps/test/OffsetBug.java0000644000175000017500000000715010466645574023276 0ustar user01user01package org.freehep.graphicsio.ps.test; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Graphics; import java.awt.GridLayout; import java.io.File; import java.io.FileOutputStream; import java.util.Properties; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import org.freehep.graphicsio.ps.EPSExportFileType; import org.freehep.util.export.ExportFileType; public class OffsetBug { public static void main(String[] args) { JFrame frame = new JFrame(); JPanel panel = new JPanel(new GridLayout(2, 2)); frame.getContentPane().add(panel); JPanel first = new SubPanel("First", Color.red); panel.add(first); JPanel second = new SubPanel("Second", Color.green); panel.add(second); JPanel third = new SubPanel("Third", Color.yellow); panel.add(third); JPanel fourth = new SubPanel("Fourth", Color.cyan); panel.add(fourth); frame.pack(); frame.setVisible(true); ExportFileType epsOut = new EPSExportFileType(); try { File file; FileOutputStream fos; System.out.println("\nPrinting first...\n"); file = new File("first.eps"); fos = new FileOutputStream(file); epsOut.exportToFile(fos, first, frame, new Properties(), null); fos.close(); System.out.println("\nPrinting second...\n"); file = new File("second.eps"); fos = new FileOutputStream(file); epsOut.exportToFile(fos, second, frame, new Properties(), null); fos.close(); System.out.println(); System.out.println("Two EPS files should have been generated:"); System.out.println("first.eps and second.eps. These should "); System.out.println("contain images of the first and second"); System.out.println("buttons properly scaled and clipped."); System.out.println(""); System.out.println("If second.eps is not correct, then check "); System.out.println("the clipping bounds which are initially "); System.out.println("given to the printing component."); System.out.println(); } catch (Exception e) { e.printStackTrace(); } } static private class SubPanel extends JPanel { String label; public SubPanel(String label, Color color) { super(new BorderLayout()); this.label = label; setOpaque(true); setBackground(color); setBorder(BorderFactory.createLineBorder(Color.black, 1)); JButton button = new TalkativeButton(label); add(button, BorderLayout.CENTER); } public void paintComponent(Graphics g) { System.out.println("paintComponent called: " + label); super.paintComponent(g); System.out.println("graphics class: " + g.getClass()); System.out.println("Container clip: " + g.getClipBounds()); System.out.println("Container bounds: " + getBounds()); } public void paintChildren(Graphics g) { System.out.println("clip (child.) " + g.getClipBounds()); super.paintChildren(g); } } static private class TalkativeButton extends JButton { public TalkativeButton(String label) { super(label); } public void paintComponent(Graphics g) { System.out.println("button: " + getText()); super.paintComponent(g); } } } src/test/java/org/freehep/graphicsio/ps/test/TestPSFontEmbedder.java0000644000175000017500000000424510343614466025043 0ustar user01user01// Copyright 2001-2005 FreeHEP package org.freehep.graphicsio.ps.test; import java.awt.Font; import java.awt.font.FontRenderContext; import java.awt.geom.AffineTransform; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintStream; import org.freehep.graphics2d.font.CharTable; import org.freehep.graphics2d.font.Lookup; import org.freehep.graphicsio.font.FontIncluder; import org.freehep.graphicsio.ps.PSFontEmbedder; /** * TestClass for PSFontEmbedder. * * @author Sami Kama * @version $Id: TestPSFontEmbedder.java,v 1.3 2002/07/20 00:39:25 tonyj Exp $ */ public class TestPSFontEmbedder { protected PrintStream os; public void openFile() throws IOException { this.os = new PrintStream(new FileOutputStream("FontEmbedderPSTest.ps")); } public void writeFont() throws IOException { CharTable table = Lookup.getInstance().getTable("STDLatin"); // System.out.println(table); AffineTransform aff = new AffineTransform(1, 0, 0, -1, 0, 0); FontRenderContext context = new FontRenderContext(aff, false, false); // System.out.println(context); // Font f = new Font("Lucida Sans Unicode", Font.PLAIN, 1000); Font f = new Font("Arial", Font.PLAIN, 1000); // System.out.println(f); FontIncluder fe = new PSFontEmbedder(context, os); // System.out.println(fe.getUnicode()); // System.out.println("start include font"); // ??????? fe.includeFont(f, table, "STDLatin"); fe.includeFont(f, table, "ExampleFont"); // System.out.println(fe.getNODefinedChars()); } public void closeFile() throws IOException { // ??????? os.println("\t/ExampleFont exch definefont pop"); os.println("/ExampleFont findfont 26 scalefont setfont"); os.println("66 72 moveto"); os.println("(ABC abc) show"); os.flush(); os.close(); } public static void main(String[] args) throws IOException { TestPSFontEmbedder test = new TestPSFontEmbedder(); test.openFile(); test.writeFont(); test.closeFile(); } } src/test/java/org/freehep/graphicsio/ps/test/PSTestPreviewThumbnail.java0000644000175000017500000000163410466645574026003 0ustar user01user01// Copyright 2005, FreeHEP. package org.freehep.graphicsio.ps.test; import java.util.Properties; import org.freehep.graphicsio.ps.PSGraphics2D; import org.freehep.graphicsio.test.TestPreviewThumbnail; import org.freehep.util.UserProperties; /** * @author Mark Donszelmann * @version $Id: PSTestPreviewThumbnail.java 8584 2006-08-10 23:06:37Z duns $ */ public class PSTestPreviewThumbnail extends TestPreviewThumbnail { public PSTestPreviewThumbnail(String[] args) throws Exception { super(args); } public void runTest(Properties options) throws Exception { UserProperties user = (options == null) ? new UserProperties() : new UserProperties(options); user.setProperty(PSGraphics2D.PREVIEW, true); super.runTest(user); } public static void main(String[] args) throws Exception { new PSTestPreviewThumbnail(args).runTest(); } } src/test/java/org/freehep/graphicsio/ps/test/TestPSFont.java0000644000175000017500000000310510343614466023405 0ustar user01user01// Copyright 2005, FreeHEP. package org.freehep.graphicsio.ps.test; import java.awt.Font; import java.awt.font.FontRenderContext; import java.awt.geom.AffineTransform; import java.io.FileOutputStream; import java.io.PrintStream; import org.freehep.graphics2d.font.Lookup; import org.freehep.graphicsio.font.FontEmbedder; import org.freehep.graphicsio.font.FontEmbedderType1; public class TestPSFont { public static void main(String[] argv) { try { PrintStream out = new PrintStream(new FileOutputStream( "fonttest.ps")); Font font = new Font("Monotype Corsiva", Font.PLAIN, 1000); FontRenderContext context = new FontRenderContext( new AffineTransform(1, 0, 0, -1, 0, 0), true, true); FontEmbedder fe = new FontEmbedderType1(context, out, false); fe.includeFont(font, Lookup.getInstance().getTable("STDLatin"), "ExampleFont"); out.println(); for (int i = 0; i < 16; i++) out.println("00000000000000000000000000000000"); out.println("cleartomark"); out.println("/ExampleFont findfont 26 scalefont setfont"); out.println("66 72 moveto"); out.println("(dede) show"); out.println("/ExampleFont findfont 77 scalefont setfont"); out.println("56 126 moveto"); out.println("([afbycpd]) show"); out.close(); } catch (Exception e) { e.printStackTrace(); } } } src/test/java/org/freehep/graphicsio/ps/test/TestColorMap.java0000644000175000017500000001475410343614466023764 0ustar user01user01// Copyright 2000, CERN, Geneva, Switzerland and University of Santa Cruz, California, U.S.A. package org.freehep.graphicsio.ps.test; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.Dimension; import java.awt.Graphics; import java.awt.GridLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.BorderFactory; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.WindowConstants; import javax.swing.border.Border; import org.freehep.graphicsio.ps.ColorMap; import org.freehep.util.export.ExportDialog; /** * * @author Charles Loomis * @version $Id: TestColorMap.java,v 1.8 2002/07/26 06:44:21 duns Exp $ */ public class TestColorMap extends JFrame implements ActionListener { // Create the color map to use. ColorMap colorMap = new ColorMap(); // Export Dialog. ExportDialog dialog; // The main panel. JPanel panel; // Fill this panel with nine panels of different colors. public TestColorMap() { // Title this frame. super("Color Map Test"); // Make this exit when the close button is clicked. setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { quit(); } }); // Create the Export dialog. dialog = new ExportDialog(); // Make a menu bar and menu. JMenuBar menuBar = new JMenuBar(); JMenu file = new JMenu("File"); // Add a menu item which will bring up this dialog. JMenuItem export = new JMenuItem("Export..."); export.addActionListener(this); file.add(export); // Quit menu item. JMenuItem quit = new JMenuItem("Quit"); quit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { quit(); } }); file.add(quit); // Add this to the frame. menuBar.add(file); setJMenuBar(menuBar); // Get the content pane. Container content = this.getContentPane(); // Set the layout of this panel. content.setLayout(new BorderLayout()); // Create a combo box with the four color maps in it. String[] chooserTest = { "Display", "Print", "Grayscale", "Black&White" }; JComboBox chooser = new JComboBox(chooserTest); chooser.addActionListener(this); // Add this to the top of this container. content.add(chooser, BorderLayout.NORTH); // Create a border of white surrounded by black. Border border = BorderFactory.createCompoundBorder(BorderFactory .createMatteBorder(1, 1, 1, 1, Color.white), BorderFactory .createMatteBorder(2, 2, 2, 2, Color.black)); // Create a subpanel with grid layout to hold the colored tiles. panel = new JPanel(); panel.setLayout(new GridLayout(13, 3)); // Add tiles of colors to this panel. for (int i = 0; i < 13; i++) { TestPanel test; test = new TestPanel(colorMap, i); test.setBorder(border); panel.add(test); test = new TestPanel(colorMap, i + 13); test.setBorder(border); panel.add(test); test = new TestPanel(colorMap, i + 26); test.setBorder(border); panel.add(test); } // Add this panel to this container. content.add(panel, BorderLayout.CENTER); } /** * This method brings up a dialog box to ask if the user really wants to * quit. If the answer is yes, the application is stopped. */ public void quit() { // Create a dialog box to ask if the user really wants to quit. int n = JOptionPane.showConfirmDialog(this, "Do you really want to quit?", "Confirm Quit", JOptionPane.YES_NO_OPTION); if (n == JOptionPane.YES_OPTION) { System.exit(0); } } // Action performed method used to change color map. public void actionPerformed(ActionEvent e) { Object source = e.getSource(); if (source instanceof JComboBox) { JComboBox cb = (JComboBox) e.getSource(); String tag = (String) cb.getSelectedItem(); if (tag == "Display") { colorMap.useDisplayColorMap(); } else if (tag == "Print") { colorMap.usePrintColorMap(); } else if (tag == "Grayscale") { colorMap.useGrayscaleColorMap(); } else if (tag == "Black&White") { colorMap.useBlackAndWhiteColorMap(); } this.repaint(); } else if (source instanceof JMenuItem) { dialog.showExportDialog(this, "Export...", panel, "untitled"); } } // Class panel which just paints a given background color. class TestPanel extends JPanel { private ColorMap colorMap; private int bkgColorIndex; public TestPanel(ColorMap colorMap, int bkgColorIndex) { this.colorMap = colorMap; this.bkgColorIndex = bkgColorIndex; } public void paintComponent(Graphics g) { if (g != null) { Dimension dim = getSize(); Insets insets = getInsets(); Color bkgColor = colorMap.getColor(bkgColorIndex); g.setColor(bkgColor); g .fillRect(insets.left, insets.top, dim.width - insets.left - insets.right, dim.height - insets.top - insets.bottom); } } } public static void main(String[] args) { // Create a new instance of this class and add it to the frame. TestColorMap test = new TestColorMap(); // Give the frame a size and make it visible. test.pack(); test.setSize(new Dimension(350, 700)); test.setVisible(true); } } src/test/resources/0000700000175000017500000000000011343126124013641 5ustar user01user01src/test/resources/ps/0000700000175000017500000000000011343126132014262 5ustar user01user01src/test/resources/ps/TestPaint.ps0000644000175000017500000011754110344614150016566 0ustar user01user01%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 20 118 575 673 %%Creator: FreeHEP Graphics2D Driver %%Producer: org.freehep.graphicsio.ps.PSGraphics2D %%For: %%Title: %%LanguageLevel: 3 %%EndComments %%BeginProlog 100 dict dup begin % % File: org/freehep/graphicsio.ps/PSProlog.txt % Author: Charles Loomis % % Redefinitions which save some space in the output file. These are also % the same as the PDF operators. /q {gsave} def /Q {grestore} def /n {newpath} def /m {moveto} def /l {lineto} def /c {curveto} def /h {closepath} def /re {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath} def /f {fill} def /f* {eofill} def /F {gsave vg&FC fill grestore} def /F* {gsave vg&FC eofill grestore} def /s {closepath stroke} def /S {stroke} def /b {closepath gsave vg&FC fill grestore gsave stroke grestore newpath} def /B {gsave vg&FC fill grestore gsave stroke grestore newpath} def /b* {closepath gsave vg&FC eofill grestore gsave stroke grestore newpath} def /B* {gsave vg&FC eofill grestore gsave stroke grestore newpath} def /g {1 array astore /vg&fcolor exch def} def /G {setgray} def /k {4 array astore /vg&fcolor exch def} def /K {setcmykcolor} def /rg {3 array astore /vg&fcolor exch def} def /RG {setrgbcolor} def % Initialize the fill color. 0 0 0 rg /vg&FC {mark vg&fcolor aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /vg&DFC {/vg&fcolor exch def} def /vg&C {mark exch aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /w {setlinewidth} def /j {setlinejoin} def /J {setlinecap} def /M {setmiterlimit} def /d {setdash} def /i {setflat} def /W {clip} def /W* {eoclip} def % Setup the default graphics state. % (black; 1 pt. linewidth; miter join; butt-ends; solid) /defaultGraphicsState {0 g 1 w 0 j 0 J [] 0 d} def % Emulation of the rectangle operators for PostScript implementations % which do not implement all Level 2 features. This is an INCOMPLETE % emulation; only the "x y width height rect..." form is emulated. /*rf {gsave newpath re fill grestore} def /*rs {gsave newpath re stroke grestore} def /*rc {newpath re clip} def /rf /rectfill where {pop /rectfill}{/*rf} ifelse load def /rs /rectstroke where {pop /rectstroke}{/*rs} ifelse load def /rc /rectclip where {pop /rectclip}{/*rc} ifelse load def % Emulation of the selectfont operator. This includes a 20% increase in % the fontsize which is necessary to get sizes similar to the Java fonts. /*sf {exch findfont exch dup type /arraytype eq {makefont}{scalefont} ifelse setfont} bind def /sf /selectfont where {pop {1.2 mul selectfont}}{{1.2 mul *sf}} ifelse def % Special version of stroke which allows the dash pattern to continue % across path segments. (This may be needed for PostScript although % modern printers seem to do this correctly.) /vg&stroke { currentdash pop length 0 eq {stroke} { currentdash /vg&doffset exch def pop flattenpath {m vg&resetdash} {2 copy currentpoint 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt 3 1 roll l currentdash 3 -1 roll add setdash} {} {h vg&resetdash} pathforall stroke vg&resetdash } ifelse } def /vg&resetdash {currentdash pop vg&doffset setdash} def % Initialize variables for safety. /delta 0 def /xv 0 def /yv 0 def /width 0 def /height 0 def % Initialize to portrait INTERNATIONAL (Letter-height, A4-width) page. /pw 595 def /ph 791 def /po true def /ftp false def % Initialize margins to 20 points. /ml 20 def /mr 20 def /mt 20 def /mb 20 def % Temporary matrices. /smatrix 0 def /nmatrix 0 def % set page size (usage: setpagesize) /setpagesize {/ph exch def /pw exch def} def % set page orientation (usage: portrait or landscape) /portrait {/po true def} def /landscape {/po false def} def % force natural size for image (usage: naturalsize) /naturalsize {/ftp false def} def % resize image to fill page (usage: fittopage) /fittopage {/ftp true def} def % set margins of the page (usage: setmargins) /setmargins {/mr exch def /mt exch def /mb exch def /ml exch def} def % set the graphic's size (usage: setsize) /setsize {/gh exch def /gw exch def} def % set the graphic's origin (usage: setorigin) /setorigin {/gy exch def /gx exch def} def % calculate image center /imagecenter {pw ml sub mr sub 2 div ml add ph mt sub mb sub 2 div mb add} def % calculate the necessary scaling /imagescale {po {gw}{gh} ifelse pw ml sub mr sub div po {gh}{gw} ifelse ph mt sub mb sub div 2 copy lt {exch} if pop ftp not {1 2 copy lt {exch} if pop} if 1 exch div /sfactor exch def /gw gw sfactor mul def /gh gh sfactor mul def} def % calculate image origin /imageorigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div po {add}{sub} ifelse} def % calculate the clipping origin /cliporigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub floor ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div sub floor} def % Set the clipping region to the bounding box. /cliptobounds {cliporigin po {gw}{gh} ifelse 1 add po {gh}{gw} ifelse 1 add rc} def % set the base transformation matrix (usage: setbasematrix) /setbasematrix {imageorigin translate po {0}{90} ifelse rotate sfactor sfactor neg scale /defaultmatrix matrix currentmatrix def} def % The lower-right bias in drawing 1 pt. wide lines. /bias {q 0.5 0.5 translate} def /unbias {Q} def % Draw a line. (x0 y0 x1 y1 line) /L {bias n m l S unbias} def % Polyline primitive. /polyline {n m 1 exch 1 exch {pop currentfile token pop currentfile token pop l} for } def % Draw a polyline (n x0 y0 OPL x1 y1 x2 y2 ... ... xn yn) /OPL {bias polyline S unbias} def % Draw a closed polyline (n x0 y0 CPL x1 y1 x2 y2 ... ... xn yn) /CPL {bias polyline s unbias} def % Draw a filled polyline (n x0 y0 FPL x1 y1 x2 y2 ... ... xn yn) /FPL {polyline h f*} def % Draw an oval. (x y w h OVL) /OVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width currentlinewidth sub 2 div height currentlinewidth sub 2 div neg scale n 0 0 1 5 -2 roll arc smatrix setmatrix S} def % Draw a filled oval. (x y w h FOVL) /FOVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width 2 div height 2 div neg scale n 0 0 m 0 0 1 5 -2 roll arc h smatrix setmatrix f} def % Draw a rounded rectangle. (x y w h arcwidth archeight RREC) /RREC {matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix s} def % Draw a filled rounded rectangle. (x y w h arcwidth archeight FRREC) /FRREC{matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix h f} def % Draw a string. (string x y STR) /STR {q m 1 -1 scale recshow Q} def % Define basic plot symbols. /xys {/siz exch def /yv exch def /xv exch def} def /hline {xys n xv siz 2. div sub yv m siz 0 rlineto S} def /vline {xys n xv yv siz 2. div sub m 0 siz rlineto S} def /plus {xys n xv yv siz 2. div sub m 0 siz rlineto xv siz 2. div sub yv m siz 0 rlineto S} def /dot {n 2. div 0 360 arc s} def /fdot {n 2. div 0 360 arc h f} def /box {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rs} def /fbox {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rf} def /tridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto s} def /ftridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto h f} def % Symbols defined in terms of the others. /star {3 copy cross plus} def /cross {xys q xv yv translate 45 rotate 0 0 siz plus Q} def /diamond {xys q xv yv translate 45 rotate 0 0 siz box Q} def /fdiamond {xys q xv yv translate 45 rotate 0 0 siz fbox Q} def /triup {xys q xv yv translate 180 rotate 0 0 siz tridn Q} def /ftriup {xys q xv yv translate 180 rotate 0 0 siz ftridn Q} def % Define the composite fonts used to print Unicode strings. % Undefine particular values in an encoding array. /vg&undef { {exch dup 3 -1 roll /.notdef put} forall } def /vg&redef { {3 -1 roll dup 4 2 roll put} forall } def % usage: key encoding basefontname vg&newbasefont font /vg&newbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def currentdict end definefont } def % usage: key encoding basefontname vg&newskewedbasefont font /vg&newskewedbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def exch FontMatrix exch matrix concatmatrix /FontMatrix exch def currentdict end definefont } def % usage: basekey suffix vg&nconcat name /vg&nconcat { 2 {dup length string cvs exch} repeat dup length 3 -1 roll dup length 3 -1 roll add string dup 0 4 -1 roll dup length 5 1 roll putinterval dup 4 -2 roll exch putinterval cvn } def %usage: fontname vg&skewmatrix matrix /vg&skewmatrix { findfont dup /FontInfo known { /FontInfo get dup /ItalicAngle known { [ 1 0 4 -1 roll /ItalicAngle get neg dup sin exch cos div 1 0 0 ] } {pop matrix} ifelse } {pop matrix} ifelse } def % usage: newfontname basefontname vg&newcompositefont -- /vg&newcompositefont { /vg&fstyle exch def /vg&bfont exch def /vg&fname exch def << /FontStyleBits vg&fstyle /FontType 0 /FontMatrix matrix /FontName vg&fname /FMapType 2 /Encoding [ 0 1 255 {pop 6} for ] dup 16#00 0 put % Latin dup 16#03 1 put % Greek dup 16#20 2 put % Punctuation dup 16#21 3 put % Arrows dup 16#22 4 put % MathOps dup 16#27 5 put % Dingbats /FDepVector [ vg&bfont /-UC-Latin vg&nconcat UCLatinEncoding vg&bfont vg&newbasefont vg&bfont vg&skewmatrix vg&bfont /-UC-Greek vg&nconcat UCGreekEncoding /Symbol vg&newskewedbasefont vg&bfont /-UC-Punctuation vg&nconcat UCPunctuationEncoding vg&bfont vg&newbasefont /Arrows-UC findfont /MathOps-UC findfont /Dingbats-UC findfont /Undefined-UC findfont ] >> vg&fname exch definefont pop } def % Null encoding vector (all elements set to .notdef) /NullEncoding [ 256 {/.notdef} repeat ] def % Unicode Latin encoding (unicode codes \u0000-\u00ff) /UCLatinEncoding ISOLatin1Encoding dup length array copy dup 16#60 /grave put [ 16#90 16#91 16#92 16#93 16#94 16#95 16#96 16#97 16#98 16#9a 16#9b 16#9d 16#9e 16#9f ] vg&undef def % Unicode Greek encoding (unicode codes \u0370-\u03ff) /UCGreekEncoding NullEncoding dup length array copy << 16#91 /Alpha 16#92 /Beta 16#93 /Gamma 16#94 /Delta 16#95 /Epsilon 16#96 /Zeta 16#97 /Eta 16#98 /Theta 16#99 /Iota 16#9a /Kappa 16#9b /Lambda 16#9c /Mu 16#9d /Nu 16#9e /Xi 16#9f /Omicron 16#a0 /Pi 16#a1 /Rho 16#a3 /Sigma 16#a4 /Tau 16#a5 /Upsilon 16#a6 /Phi 16#a7 /Chi 16#a8 /Psi 16#a9 /Omega 16#b1 /alpha 16#b2 /beta 16#b3 /gamma 16#b4 /delta 16#b5 /epsilon 16#b6 /zeta 16#b7 /eta 16#b8 /theta 16#b9 /iota 16#ba /kappa 16#bb /lambda 16#bc /mu 16#bd /nu 16#be /xi 16#bf /omicron 16#c0 /pi 16#c1 /rho 16#c2 /sigma1 16#c3 /sigma 16#c4 /tau 16#c5 /upsilon 16#c6 /phi1 16#c7 /chi 16#c8 /psi 16#c9 /omega 16#7e /semicolon 16#87 /dotmath 16#d1 /theta1 16#d2 /Upsilon1 16#d5 /phi 16#d6 /omega1 >> vg&redef def % Unicode punctuation encoding (unicode codes \u2000-\u206f) /UCPunctuationEncoding NullEncoding dup length array copy << 16#10 /hyphen 16#11 /hyphen 16#12 /endash 16#13 /emdash 16#18 /quoteleft 16#19 /quoteright 16#1a /quotesinglbase 16#1b /quotesingle 16#1c /quotedblleft 16#1d /quotedblright 16#1e /quotedblbase 16#1f /quotedbl 16#20 /dagger 16#21 /daggerdbl 16#22 /bullet 16#24 /period 16#26 /ellipsis 16#27 /periodcentered 16#30 /perthousand 16#44 /fraction 16#70 /zerosuperior 16#74 /foursuperior 16#75 /fivesuperior 16#76 /sixsuperior 16#77 /sevensuperior 16#78 /eightsuperior 16#79 /ninesuperior 16#7b /hyphensuperior 16#7d /parenleftsuperior 16#7e /parenrightsuperior 16#80 /zeroinferior 16#84 /fourinferior 16#85 /fiveinferior 16#81 /oneinferior 16#82 /twoinferior 16#83 /threeinferior 16#86 /sixinferior 16#87 /seveninferior 16#88 /eightinferior 16#89 /nineinferior 16#8b /hypheninferior 16#8d /parenleftinferior 16#8e /parenrightinferior >> vg&redef def % Unicode mathematical operators encoding (unicode codes \u2200-\u22ff) /UCMathOpsEncoding NullEncoding dup length array copy << 16#00 /universal 16#02 /partialdiff 16#03 /existential 16#05 /emptyset 16#06 /Delta 16#07 /gradient 16#08 /element 16#09 /notelement 16#0b /suchthat 16#0f /product 16#11 /summation 16#12 /minus 16#15 /fraction 16#17 /asteriskmath 16#19 /bullet 16#1a /radical 16#1d /proportional 16#1e /infinity 16#20 /angle 16#23 /bar 16#27 /logicaland 16#28 /logicalor 16#29 /intersection 16#2a /union 16#2b /integral 16#34 /therefore 16#36 /colon 16#3c /similar 16#45 /congruent 16#48 /approxequal 16#60 /notequal 16#61 /equivalence 16#64 /lessequal 16#65 /greaterequal 16#82 /propersubset 16#83 /propersuperset 16#86 /reflexsubset 16#87 /reflexsuperset 16#95 /circleplus 16#97 /circlemultiply 16#a5 /perpendicular 16#03 /existential 16#c0 /logicaland 16#c1 /logicalor 16#c2 /intersection 16#c3 /union 16#c4 /diamond 16#c5 /dotmath >> vg&redef def % Unicode arrows encoding (unicode codes \u2190-\u21ff) % Also includes those "Letterlike" unicode characters % which are available in the symbol font. (unicode codes \u2100-\u214f) /UCArrowsEncoding NullEncoding dup length array copy << 16#11 /Ifraktur 16#1c /Rfraktur 16#22 /trademarkserif 16#35 /aleph 16#90 /arrowleft 16#91 /arrowup 16#92 /arrowright 16#93 /arrowdown 16#94 /arrowboth 16#d0 /arrowdblleft 16#d1 /arrowdblup 16#d2 /arrowdblright 16#d3 /arrowdbldown 16#d4 /arrowdblboth >> vg&redef def /ZapfDingbats findfont /Encoding get dup length array copy /UCDingbatsEncoding exch def 16#20 1 16#7f { dup 16#20 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for 16#a0 1 16#ff { dup 16#40 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for UCDingbatsEncoding [ 16#c0 1 16#ff {} for ] vg&undef [ 16#00 16#05 16#0a 16#0b 16#28 16#4c 16#4e 16#53 16#54 16#55 16#57 16#5f 16#60 16#68 16#69 16#6a 16#6b 16#6c 16#6d 16#6e 16#6f 16#70 16#71 16#72 16#73 16#74 16#75 16#95 16#96 16#97 16#b0 16#bf ] vg&undef pop % Define the base fonts which don't change. /Undefined-UC NullEncoding /Helvetica vg&newbasefont pop /MathOps-UC UCMathOpsEncoding /Symbol vg&newbasefont pop /Arrows-UC UCArrowsEncoding /Symbol vg&newbasefont pop /Dingbats-UC UCDingbatsEncoding /ZapfDingbats vg&newbasefont pop % Make the SansSerif composite fonts. /SansSerif /Helvetica 16#00 vg&newcompositefont /SansSerif-Bold /Helvetica-Bold 16#01 vg&newcompositefont /SansSerif-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /SansSerif-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Serif composite fonts. /Serif /Times-Roman 16#00 vg&newcompositefont /Serif-Bold /Times-Bold 16#01 vg&newcompositefont /Serif-Italic /Times-Italic 16#02 vg&newcompositefont /Serif-BoldItalic /Times-BoldItalic 16#03 vg&newcompositefont % Make the Monospaced composite fonts. /Monospaced /Courier 16#00 vg&newcompositefont /Monospaced-Bold /Courier-Bold 16#01 vg&newcompositefont /Monospaced-Italic /Courier-Oblique 16#02 vg&newcompositefont /Monospaced-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont % Make the Dialog composite fonts. /Dialog /Helvetica 16#00 vg&newcompositefont /Dialog-Bold /Helvetica-Bold 16#01 vg&newcompositefont /Dialog-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /Dialog-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the DialogInput composite fonts. /DialogInput /Helvetica 16#00 vg&newcompositefont /DialogInput-Bold /Helvetica-Bold 16#01 vg&newcompositefont /DialogInput-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /DialogInput-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Typewriter composite fonts (JDK 1.1 only). /Typewriter /Courier 16#00 vg&newcompositefont /Typewriter-Bold /Courier-Bold 16#01 vg&newcompositefont /Typewriter-Italic /Courier-Oblique 16#02 vg&newcompositefont /Typewriter-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont /cfontH { dup /fontsize exch def /SansSerif exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHB { dup /fontsize exch def /SansSerif-Bold exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHI { dup /fontsize exch def /SansSerif-Italic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHBI { dup /fontsize exch def /SansSerif-BoldItalic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontT { dup /fontsize exch def /Serif exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTB { dup /fontsize exch def /Serif-Bold exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTI { dup /fontsize exch def /Serif-Italic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTBI { dup /fontsize exch def /Serif-BoldItalic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontC { dup /fontsize exch def /Typewriter exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCB { dup /fontsize exch def /Typewriter-Bold exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCI { dup /fontsize exch def /Typewriter-Italic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCBI { dup /fontsize exch def /Typewriter-BoldItalic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def % Darken or lighten the current color. /darken {0.7 exch exp 3 copy q 4 -1 roll vg&C currentrgbcolor 3 {4 -2 roll mul} repeat 3 array astore Q} def /displayColorMap << /Cr [1.00 0.00 0.00] /Cg [0.00 1.00 0.00] /Cb [0.00 0.00 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.00 0.00] /CGg [0.00 1.00 0.00] /CGb [0.00 0.00 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.00 0.00] /CIg [0.00 1.00 0.00] /CIb [0.00 0.00 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /printColorMap << /Cr [1.00 0.33 0.33] /Cg [0.33 1.00 0.33] /Cb [0.33 0.33 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.33 0.33] /CGg [0.33 1.00 0.33] /CGb [0.33 0.33 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.33 0.33] /CIg [0.33 1.00 0.33] /CIb [0.33 0.33 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /grayColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [0.75] /CGg [1 ] /CGb [0.50] /CGc [0.75] /CGm [0.50] /CGy [1 ] /CGo [0.75] /CGp [1 ] /CGw [0 ] /CGgrl [0.25] /CGgr [0.50] /CGgrd [0.75] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def /bwColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [1 ] /CGg [1 ] /CGb [1 ] /CGc [1 ] /CGm [1 ] /CGy [1 ] /CGo [1 ] /CGp [1 ] /CGw [0 ] /CGgrl [1 ] /CGgr [1 ] /CGgrd [1 ] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def % % The following routines handle the alignment of and printing of % tagged strings. % % Predefine the bounding box values. /bbllx 0 def /bblly 0 def /bburx 0 def /bbury 0 def % This routine pops the first unicode character off of a string and returns % the remainder of the string, the character code of first character, % and a "true" if the string was non-zero length. % popfirst % popfirst /popfirst { dup length 1 gt {dup 0 get /vg&fbyte exch def dup 1 get /vg&cbyte exch def dup length 2 sub 2 exch getinterval true} {pop false} ifelse } def % This routine shows a single unicode character given the font and % character codes. % unicharshow -- /unicharshow { 2 string dup 0 5 -1 roll put dup 1 4 -1 roll put internalshow } def % This is an internal routine to alternate between determining the % bounding box for stringsize and showing the string for recshow. % internalshow -- /internalshow {show} def % This is an internal routine to alternate between determining the % bounding box for stringsize and stroking various ornaments. % internalstroke -- /internalstroke {S} def % Sets up internalshow to use the null device to determine string size. % -- nullinternalshow -- /nullinternalshow {/internalshow {false charpath flattenpath pathbbox updatebbox} def} def % Sets up internalstroke to use the null device to determine string size. % -- nullinternalstroke -- /nullinternalstroke { /internalstroke {flattenpath pathbbox updatebbox} def} def % This routine tests to see if the character code matches the first % character of a string. % testchar /testchar {exch dup 3 -1 roll 0 get eq} def % Raise the text baseline for superscripts. % -- raise -- /raise { 0 fontsize 2 div rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-raise the text baseline for superscripts. % -- unraise -- /unraise { /fontsize fontsize 1.5 mul def 0 fontsize 2 div neg rmoveto } def % Lower the text baseline for subscripts. % -- lower -- /lower { 0 fontsize 3 div neg rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-lower the text baseline for subscripts. % -- unlower -- /unlower { /fontsize fontsize 1.5 mul def 0 fontsize 3 div rmoveto } def % Compare the top two elements on the stack and leave only the % larger one. /maxval {2 copy gt {pop} {exch pop} ifelse} def % Tokenize a string. Do not use the usual PostScript token because % parentheses will not be interpreted correctly because of rescanning % of the string. /vg&token {/vg&string exch def /vg&index -1 def /vg&level 0 def 0 2 vg&string length 2 sub { dup dup 1 add exch vg&string exch get 8 bitshift vg&string 3 -1 roll get or dup 16#f0fe eq {pop 1}{16#f0ff eq {-1}{0} ifelse} ifelse /vg&level exch vg&level add def vg&level 0 eq {/vg&index exch def exit} if pop } for vg&index 0 ge { vg&string vg&index 2 add dup vg&string length exch sub getinterval vg&index 2 gt {vg&string 2 vg&index 2 sub getinterval}{()} ifelse true} {false} ifelse } bind def % Recursively show an unicode string. % recshow -- /recshow { popfirst { % Test to see if this is a string attribute. vg&fbyte 16#f0 and 16#e0 eq { q % Font style. currentfont dup /FontStyleBits known {/FontStyleBits get}{pop 0} ifelse vg&cbyte or vg&fontstyles exch get fontsize exch exec vg&token pop recshow currentpoint Q m recshow } { vg&fbyte 16#F8 and 16#F0 eq { % Superscript and/or subscript. vg&cbyte 16#00 eq { vg&token pop exch vg&token pop 3 -1 roll q raise recshow unraise currentpoint pop Q exch q lower recshow unlower currentpoint pop Q maxval currentpoint exch pop m recshow } if % Strikeout. vg&cbyte 16#01 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll fontsize 3 div add moveto fontsize 3 div add lineto internalstroke Q recshow} if % Underline. vg&cbyte 16#02 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dashed underline. vg&cbyte 16#03 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J [ vg&uthick 5 mul vg&uthick 2 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dotted underline. vg&cbyte 16#04 eq { vg&token pop currentpoint 3 -1 roll recshow q 1 J [ 0 vg&uthick 3 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Thick underline. vg&cbyte 16#05 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Gray thick underline. vg&cbyte 16#06 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w 0.5 setgray currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Overbar. vg&cbyte 16#07 eq { vg&token pop dup stringsize relative 4 1 roll pop pop exch 3 -1 roll recshow q 0 J vg&underline vg&uthick w vg&uoffset neg add dup currentpoint pop exch m l internalstroke Q recshow} if } { vg&fbyte vg&cbyte unicharshow recshow } ifelse } ifelse } if } def % Get the underline position and thickness from the current font. /vg&underline { currentfont dup /FontType get 0 eq {/FDepVector get 0 get} if dup dup /FontInfo known { /FontInfo get dup dup /UnderlinePosition known { /UnderlinePosition get /vg&uoffset exch def } { pop /vg&uoffset 0 def } ifelse dup /UnderlineThickness known { /UnderlineThickness get /vg&uthick exch def } { pop /vg&uthick 0 def } ifelse } { pop /vg&uoffset 0 def /vg&uthick 0 def } ifelse /FontMatrix get currentfont dup /FontType get 0 eq {/FontMatrix get matrix concatmatrix}{pop} ifelse dup 0 vg&uoffset 3 -1 roll transform /vg&uoffset exch def pop 0 vg&uthick 3 -1 roll transform /vg&uthick exch def pop } def % Make a frame with the coordinates on the stack. % frame -- /frame {4 copy m 3 1 roll exch l 4 -2 roll l l h} def % Resets the accumulated bounding box to a degenerate box at the % current point. % -- resetbbox -- /resetbbox { currentpoint 2 copy /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Update the accumulated bounding box. % updatebbox -- /updatebbox { dup bbury gt {/bbury exch def} {pop} ifelse dup bburx gt {/bburx exch def} {pop} ifelse dup bblly lt {/bblly exch def} {pop} ifelse dup bbllx lt {/bbllx exch def} {pop} ifelse } def % Set the bounding box to the values on the stack. % updatebbox -- /restorebbox { /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Push the accumulated bounding box onto the stack. % -- pushbbox /pushbbox {bbllx bblly bburx bbury} def % Make the relative bounding box relative to the currentpoint. % inflate /inflate { 2 {fontsize 0.2 mul add 4 1 roll} repeat 2 {fontsize 0.2 mul sub 4 1 roll} repeat } def % Make the relative bounding box relative to the currentpoint. % relative /relative { currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll } def % Returns the size of a string appropriate for recshow. % stringsize /stringsize { pushbbox /internalshow load /internalstroke load 7 -1 roll q nulldevice 0 0 m nullinternalshow nullinternalstroke resetbbox recshow /internalstroke exch def /internalshow exch def pushbbox 8 -4 roll restorebbox Q } def % Calculate values for string positioning. /calcval {4 copy 3 -1 roll sub /widy exch def sub neg /widx exch def pop pop /dy exch def /dx exch def} def % Utilities to position a string. % First letter (U=upper, C=center, B=baseline, L=lower) % Second letter (L=left, C=center, R=right) /align [ {calcval dx neg widy dy add neg rmoveto} % UL {calcval dx neg widy 2 div dy add neg rmoveto} % CL {calcval dx neg 0 rmoveto} % BL {calcval dx neg dy neg rmoveto} % LL {calcval widx dx add neg widy dy add neg rmoveto} % UR {calcval widx dx add neg widy 2 div dy add neg rmoveto} % CR {calcval widx dx add neg 0 rmoveto} % BR {calcval widx dx add neg dy neg rmoveto} % LR {calcval widx 2 div dx add neg widy dy add neg rmoveto} % UC {calcval widx 2 div dx add neg widy 2 div dy add neg rmoveto} % CC {calcval widx 2 div dx add neg 0 rmoveto} % BC {calcval widx 2 div dx add neg dy neg rmoveto} % LC ] def /vg&str {m q 1 -1 scale dup stringsize 4 copy align 11 -1 roll get exec q inflate relative frame exch exec Q recshow Q} def end /procDict exch def %%EndProlog %%BeginSetup save procDict begin printColorMap begin 595 791 setpagesize 20 20 20 20 setmargins 0 0 setorigin 600 600 setsize fittopage portrait imagescale cliptobounds setbasematrix /Helvetica 10 sf defaultGraphicsState %%EndSetup 0.00000 0.00000 0.00000 RG [ 1.00000 0.00000 0.00000 1.00000 0.00000 0.00000 ] defaultmatrix matrix concatmatrix setmatrix 1.00000 w 2 J 0 j 10.0000 M [ ] 0.00000 d .800000 .800000 .800000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG q 0 0 600 600 rc 1.00000 1.00000 1.00000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG bias 0.00000 200.000 180.000 180.000 rs unbias << /PatternType 1 /PaintType 1 /TilingType 1 /BBox [0 0 32 32] /XStep 32.0 /YStep 32.0 /PaintProc { begin /DeviceRGB setcolorspace 0 0 translate 32 32 scale << /ImageType 1 /Width 32 /Height 32 /BitsPerComponent 8 /Decode [0 1 0 1 0 1] /ImageMatrix [32 0 0 32 0 0] /DataSource ( Z Z Z Z Z Z Z Z Z ZZ ZZ ZZ ZZ ZZ ZZ ZZ Z) >> image end } bind >> matrix makepattern setpattern 0.00000 200.000 180.000 180.000 rf 0.00000 0.00000 0.00000 RG bias 200.000 200.000 180.000 180.000 rs unbias << /PatternType 1 /PaintType 1 /TilingType 1 /BBox [0 0 32 32] /XStep 16.0 /YStep 16.0 /PaintProc { begin /DeviceRGB setcolorspace 0 0 translate 32 32 scale << /ImageType 1 /Width 32 /Height 32 /BitsPerComponent 8 /Decode [0 1 0 1 0 1] /ImageMatrix [32 0 0 32 0 0] /DataSource ( Z Z Z Z Z Z Z Z Z ZZ ZZ ZZ ZZ ZZ ZZ ZZ Z) >> image end } bind >> matrix makepattern setpattern 200.000 200.000 180.000 180.000 rf 0.00000 0.00000 0.00000 RG bias 400.000 200.000 180.000 180.000 rs unbias << /PatternType 1 /PaintType 1 /TilingType 1 /BBox [0 0 32 32] /XStep 32.0 /YStep 32.0 /PaintProc { begin /DeviceRGB setcolorspace 0 0 translate 32 32 scale << /ImageType 1 /Width 32 /Height 32 /BitsPerComponent 8 /Decode [0 1 0 1 0 1] /ImageMatrix [32 0 0 32 0 0] /DataSource ( Z Z Z Z Z Z Z Z Z ZZ ZZ ZZ ZZ ZZ ZZ ZZ Z) >> image end } bind >> matrix makepattern setpattern 400.000 200.000 180.000 180.000 rf << /PatternType 2 /Shading << /ShadingType 2 /ColorSpace /DeviceRGB /Coords [0.0 400.0 180.0 580.0] /Function << /FunctionType 2 /Domain [0 1] /Range [0 1 0 1 0 1] /C0 [1.0 0.0 0.0] /C1 [0.0 0.0 1.0] /N 1 >> /Extend [true true] >> >> matrix makepattern setpattern 0.00000 400.000 180.000 180.000 rf << /PatternType 2 /Shading << /ShadingType 2 /ColorSpace /DeviceRGB /Coords [250.0 450.0 320.0 520.0] /Function << /FunctionType 2 /Domain [0 1] /Range [0 1 0 1 0 1] /C0 [0.0 1.0 0.0] /C1 [1.0 0.0 1.0] /N 1 >> /Extend [true true] >> >> matrix makepattern setpattern 200.000 400.000 180.000 180.000 rf << /PatternType 2 /Shading << /ShadingType 2 /ColorSpace /DeviceRGB /Coords [400.0 400.0 440.0 440.0] /Function << /FunctionType 2 /Domain [0 1] /Range [0 1 0 1 0 1] /C0 [1.0 0.0 0.0] /C1 [1.0 1.0 0.0] /N 1 >> /Extend [true true] >> >> matrix makepattern setpattern 400.000 400.000 180.000 180.000 rf q [ 1.0 .500000 .500000 1.0 0.0 0.0 ] concat << /PatternType 2 /Shading << /ShadingType 2 /ColorSpace /DeviceRGB /Coords [0.0 0.0 120.0 120.0] /Function << /FunctionType 2 /Domain [0 1] /Range [0 1 0 1 0 1] /C0 [1.0 0.0 0.0] /C1 [0.0 0.0 1.0] /N 1 >> /Extend [true true] >> >> matrix makepattern setpattern 0.00000 0.00000 120.000 120.000 rf << /PatternType 1 /PaintType 1 /TilingType 1 /BBox [0 0 32 32] /XStep 32.0 /YStep 32.0 /PaintProc { begin /DeviceRGB setcolorspace 0 0 translate 32 32 scale << /ImageType 1 /Width 32 /Height 32 /BitsPerComponent 8 /Decode [0 1 0 1 0 1] /ImageMatrix [32 0 0 32 0 0] /DataSource ( Z Z Z Z Z Z Z Z Z ZZ ZZ ZZ ZZ ZZ ZZ ZZ Z) >> image end } bind >> matrix makepattern setpattern 200.000 -100.000 120.000 120.000 rf Q Q end end restore showpage %%Trailer %%EOF src/test/resources/ps/TestImages.ps0000644000175000017500000030507110344614150016715 0ustar user01user01%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 20 118 575 673 %%Creator: FreeHEP Graphics2D Driver %%Producer: org.freehep.graphicsio.ps.PSGraphics2D %%For: %%Title: %%LanguageLevel: 3 %%EndComments %%BeginProlog 100 dict dup begin % % File: org/freehep/graphicsio.ps/PSProlog.txt % Author: Charles Loomis % % Redefinitions which save some space in the output file. These are also % the same as the PDF operators. /q {gsave} def /Q {grestore} def /n {newpath} def /m {moveto} def /l {lineto} def /c {curveto} def /h {closepath} def /re {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath} def /f {fill} def /f* {eofill} def /F {gsave vg&FC fill grestore} def /F* {gsave vg&FC eofill grestore} def /s {closepath stroke} def /S {stroke} def /b {closepath gsave vg&FC fill grestore gsave stroke grestore newpath} def /B {gsave vg&FC fill grestore gsave stroke grestore newpath} def /b* {closepath gsave vg&FC eofill grestore gsave stroke grestore newpath} def /B* {gsave vg&FC eofill grestore gsave stroke grestore newpath} def /g {1 array astore /vg&fcolor exch def} def /G {setgray} def /k {4 array astore /vg&fcolor exch def} def /K {setcmykcolor} def /rg {3 array astore /vg&fcolor exch def} def /RG {setrgbcolor} def % Initialize the fill color. 0 0 0 rg /vg&FC {mark vg&fcolor aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /vg&DFC {/vg&fcolor exch def} def /vg&C {mark exch aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /w {setlinewidth} def /j {setlinejoin} def /J {setlinecap} def /M {setmiterlimit} def /d {setdash} def /i {setflat} def /W {clip} def /W* {eoclip} def % Setup the default graphics state. % (black; 1 pt. linewidth; miter join; butt-ends; solid) /defaultGraphicsState {0 g 1 w 0 j 0 J [] 0 d} def % Emulation of the rectangle operators for PostScript implementations % which do not implement all Level 2 features. This is an INCOMPLETE % emulation; only the "x y width height rect..." form is emulated. /*rf {gsave newpath re fill grestore} def /*rs {gsave newpath re stroke grestore} def /*rc {newpath re clip} def /rf /rectfill where {pop /rectfill}{/*rf} ifelse load def /rs /rectstroke where {pop /rectstroke}{/*rs} ifelse load def /rc /rectclip where {pop /rectclip}{/*rc} ifelse load def % Emulation of the selectfont operator. This includes a 20% increase in % the fontsize which is necessary to get sizes similar to the Java fonts. /*sf {exch findfont exch dup type /arraytype eq {makefont}{scalefont} ifelse setfont} bind def /sf /selectfont where {pop {1.2 mul selectfont}}{{1.2 mul *sf}} ifelse def % Special version of stroke which allows the dash pattern to continue % across path segments. (This may be needed for PostScript although % modern printers seem to do this correctly.) /vg&stroke { currentdash pop length 0 eq {stroke} { currentdash /vg&doffset exch def pop flattenpath {m vg&resetdash} {2 copy currentpoint 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt 3 1 roll l currentdash 3 -1 roll add setdash} {} {h vg&resetdash} pathforall stroke vg&resetdash } ifelse } def /vg&resetdash {currentdash pop vg&doffset setdash} def % Initialize variables for safety. /delta 0 def /xv 0 def /yv 0 def /width 0 def /height 0 def % Initialize to portrait INTERNATIONAL (Letter-height, A4-width) page. /pw 595 def /ph 791 def /po true def /ftp false def % Initialize margins to 20 points. /ml 20 def /mr 20 def /mt 20 def /mb 20 def % Temporary matrices. /smatrix 0 def /nmatrix 0 def % set page size (usage: setpagesize) /setpagesize {/ph exch def /pw exch def} def % set page orientation (usage: portrait or landscape) /portrait {/po true def} def /landscape {/po false def} def % force natural size for image (usage: naturalsize) /naturalsize {/ftp false def} def % resize image to fill page (usage: fittopage) /fittopage {/ftp true def} def % set margins of the page (usage: setmargins) /setmargins {/mr exch def /mt exch def /mb exch def /ml exch def} def % set the graphic's size (usage: setsize) /setsize {/gh exch def /gw exch def} def % set the graphic's origin (usage: setorigin) /setorigin {/gy exch def /gx exch def} def % calculate image center /imagecenter {pw ml sub mr sub 2 div ml add ph mt sub mb sub 2 div mb add} def % calculate the necessary scaling /imagescale {po {gw}{gh} ifelse pw ml sub mr sub div po {gh}{gw} ifelse ph mt sub mb sub div 2 copy lt {exch} if pop ftp not {1 2 copy lt {exch} if pop} if 1 exch div /sfactor exch def /gw gw sfactor mul def /gh gh sfactor mul def} def % calculate image origin /imageorigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div po {add}{sub} ifelse} def % calculate the clipping origin /cliporigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub floor ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div sub floor} def % Set the clipping region to the bounding box. /cliptobounds {cliporigin po {gw}{gh} ifelse 1 add po {gh}{gw} ifelse 1 add rc} def % set the base transformation matrix (usage: setbasematrix) /setbasematrix {imageorigin translate po {0}{90} ifelse rotate sfactor sfactor neg scale /defaultmatrix matrix currentmatrix def} def % The lower-right bias in drawing 1 pt. wide lines. /bias {q 0.5 0.5 translate} def /unbias {Q} def % Draw a line. (x0 y0 x1 y1 line) /L {bias n m l S unbias} def % Polyline primitive. /polyline {n m 1 exch 1 exch {pop currentfile token pop currentfile token pop l} for } def % Draw a polyline (n x0 y0 OPL x1 y1 x2 y2 ... ... xn yn) /OPL {bias polyline S unbias} def % Draw a closed polyline (n x0 y0 CPL x1 y1 x2 y2 ... ... xn yn) /CPL {bias polyline s unbias} def % Draw a filled polyline (n x0 y0 FPL x1 y1 x2 y2 ... ... xn yn) /FPL {polyline h f*} def % Draw an oval. (x y w h OVL) /OVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width currentlinewidth sub 2 div height currentlinewidth sub 2 div neg scale n 0 0 1 5 -2 roll arc smatrix setmatrix S} def % Draw a filled oval. (x y w h FOVL) /FOVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width 2 div height 2 div neg scale n 0 0 m 0 0 1 5 -2 roll arc h smatrix setmatrix f} def % Draw a rounded rectangle. (x y w h arcwidth archeight RREC) /RREC {matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix s} def % Draw a filled rounded rectangle. (x y w h arcwidth archeight FRREC) /FRREC{matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix h f} def % Draw a string. (string x y STR) /STR {q m 1 -1 scale recshow Q} def % Define basic plot symbols. /xys {/siz exch def /yv exch def /xv exch def} def /hline {xys n xv siz 2. div sub yv m siz 0 rlineto S} def /vline {xys n xv yv siz 2. div sub m 0 siz rlineto S} def /plus {xys n xv yv siz 2. div sub m 0 siz rlineto xv siz 2. div sub yv m siz 0 rlineto S} def /dot {n 2. div 0 360 arc s} def /fdot {n 2. div 0 360 arc h f} def /box {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rs} def /fbox {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rf} def /tridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto s} def /ftridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto h f} def % Symbols defined in terms of the others. /star {3 copy cross plus} def /cross {xys q xv yv translate 45 rotate 0 0 siz plus Q} def /diamond {xys q xv yv translate 45 rotate 0 0 siz box Q} def /fdiamond {xys q xv yv translate 45 rotate 0 0 siz fbox Q} def /triup {xys q xv yv translate 180 rotate 0 0 siz tridn Q} def /ftriup {xys q xv yv translate 180 rotate 0 0 siz ftridn Q} def % Define the composite fonts used to print Unicode strings. % Undefine particular values in an encoding array. /vg&undef { {exch dup 3 -1 roll /.notdef put} forall } def /vg&redef { {3 -1 roll dup 4 2 roll put} forall } def % usage: key encoding basefontname vg&newbasefont font /vg&newbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def currentdict end definefont } def % usage: key encoding basefontname vg&newskewedbasefont font /vg&newskewedbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def exch FontMatrix exch matrix concatmatrix /FontMatrix exch def currentdict end definefont } def % usage: basekey suffix vg&nconcat name /vg&nconcat { 2 {dup length string cvs exch} repeat dup length 3 -1 roll dup length 3 -1 roll add string dup 0 4 -1 roll dup length 5 1 roll putinterval dup 4 -2 roll exch putinterval cvn } def %usage: fontname vg&skewmatrix matrix /vg&skewmatrix { findfont dup /FontInfo known { /FontInfo get dup /ItalicAngle known { [ 1 0 4 -1 roll /ItalicAngle get neg dup sin exch cos div 1 0 0 ] } {pop matrix} ifelse } {pop matrix} ifelse } def % usage: newfontname basefontname vg&newcompositefont -- /vg&newcompositefont { /vg&fstyle exch def /vg&bfont exch def /vg&fname exch def << /FontStyleBits vg&fstyle /FontType 0 /FontMatrix matrix /FontName vg&fname /FMapType 2 /Encoding [ 0 1 255 {pop 6} for ] dup 16#00 0 put % Latin dup 16#03 1 put % Greek dup 16#20 2 put % Punctuation dup 16#21 3 put % Arrows dup 16#22 4 put % MathOps dup 16#27 5 put % Dingbats /FDepVector [ vg&bfont /-UC-Latin vg&nconcat UCLatinEncoding vg&bfont vg&newbasefont vg&bfont vg&skewmatrix vg&bfont /-UC-Greek vg&nconcat UCGreekEncoding /Symbol vg&newskewedbasefont vg&bfont /-UC-Punctuation vg&nconcat UCPunctuationEncoding vg&bfont vg&newbasefont /Arrows-UC findfont /MathOps-UC findfont /Dingbats-UC findfont /Undefined-UC findfont ] >> vg&fname exch definefont pop } def % Null encoding vector (all elements set to .notdef) /NullEncoding [ 256 {/.notdef} repeat ] def % Unicode Latin encoding (unicode codes \u0000-\u00ff) /UCLatinEncoding ISOLatin1Encoding dup length array copy dup 16#60 /grave put [ 16#90 16#91 16#92 16#93 16#94 16#95 16#96 16#97 16#98 16#9a 16#9b 16#9d 16#9e 16#9f ] vg&undef def % Unicode Greek encoding (unicode codes \u0370-\u03ff) /UCGreekEncoding NullEncoding dup length array copy << 16#91 /Alpha 16#92 /Beta 16#93 /Gamma 16#94 /Delta 16#95 /Epsilon 16#96 /Zeta 16#97 /Eta 16#98 /Theta 16#99 /Iota 16#9a /Kappa 16#9b /Lambda 16#9c /Mu 16#9d /Nu 16#9e /Xi 16#9f /Omicron 16#a0 /Pi 16#a1 /Rho 16#a3 /Sigma 16#a4 /Tau 16#a5 /Upsilon 16#a6 /Phi 16#a7 /Chi 16#a8 /Psi 16#a9 /Omega 16#b1 /alpha 16#b2 /beta 16#b3 /gamma 16#b4 /delta 16#b5 /epsilon 16#b6 /zeta 16#b7 /eta 16#b8 /theta 16#b9 /iota 16#ba /kappa 16#bb /lambda 16#bc /mu 16#bd /nu 16#be /xi 16#bf /omicron 16#c0 /pi 16#c1 /rho 16#c2 /sigma1 16#c3 /sigma 16#c4 /tau 16#c5 /upsilon 16#c6 /phi1 16#c7 /chi 16#c8 /psi 16#c9 /omega 16#7e /semicolon 16#87 /dotmath 16#d1 /theta1 16#d2 /Upsilon1 16#d5 /phi 16#d6 /omega1 >> vg&redef def % Unicode punctuation encoding (unicode codes \u2000-\u206f) /UCPunctuationEncoding NullEncoding dup length array copy << 16#10 /hyphen 16#11 /hyphen 16#12 /endash 16#13 /emdash 16#18 /quoteleft 16#19 /quoteright 16#1a /quotesinglbase 16#1b /quotesingle 16#1c /quotedblleft 16#1d /quotedblright 16#1e /quotedblbase 16#1f /quotedbl 16#20 /dagger 16#21 /daggerdbl 16#22 /bullet 16#24 /period 16#26 /ellipsis 16#27 /periodcentered 16#30 /perthousand 16#44 /fraction 16#70 /zerosuperior 16#74 /foursuperior 16#75 /fivesuperior 16#76 /sixsuperior 16#77 /sevensuperior 16#78 /eightsuperior 16#79 /ninesuperior 16#7b /hyphensuperior 16#7d /parenleftsuperior 16#7e /parenrightsuperior 16#80 /zeroinferior 16#84 /fourinferior 16#85 /fiveinferior 16#81 /oneinferior 16#82 /twoinferior 16#83 /threeinferior 16#86 /sixinferior 16#87 /seveninferior 16#88 /eightinferior 16#89 /nineinferior 16#8b /hypheninferior 16#8d /parenleftinferior 16#8e /parenrightinferior >> vg&redef def % Unicode mathematical operators encoding (unicode codes \u2200-\u22ff) /UCMathOpsEncoding NullEncoding dup length array copy << 16#00 /universal 16#02 /partialdiff 16#03 /existential 16#05 /emptyset 16#06 /Delta 16#07 /gradient 16#08 /element 16#09 /notelement 16#0b /suchthat 16#0f /product 16#11 /summation 16#12 /minus 16#15 /fraction 16#17 /asteriskmath 16#19 /bullet 16#1a /radical 16#1d /proportional 16#1e /infinity 16#20 /angle 16#23 /bar 16#27 /logicaland 16#28 /logicalor 16#29 /intersection 16#2a /union 16#2b /integral 16#34 /therefore 16#36 /colon 16#3c /similar 16#45 /congruent 16#48 /approxequal 16#60 /notequal 16#61 /equivalence 16#64 /lessequal 16#65 /greaterequal 16#82 /propersubset 16#83 /propersuperset 16#86 /reflexsubset 16#87 /reflexsuperset 16#95 /circleplus 16#97 /circlemultiply 16#a5 /perpendicular 16#03 /existential 16#c0 /logicaland 16#c1 /logicalor 16#c2 /intersection 16#c3 /union 16#c4 /diamond 16#c5 /dotmath >> vg&redef def % Unicode arrows encoding (unicode codes \u2190-\u21ff) % Also includes those "Letterlike" unicode characters % which are available in the symbol font. (unicode codes \u2100-\u214f) /UCArrowsEncoding NullEncoding dup length array copy << 16#11 /Ifraktur 16#1c /Rfraktur 16#22 /trademarkserif 16#35 /aleph 16#90 /arrowleft 16#91 /arrowup 16#92 /arrowright 16#93 /arrowdown 16#94 /arrowboth 16#d0 /arrowdblleft 16#d1 /arrowdblup 16#d2 /arrowdblright 16#d3 /arrowdbldown 16#d4 /arrowdblboth >> vg&redef def /ZapfDingbats findfont /Encoding get dup length array copy /UCDingbatsEncoding exch def 16#20 1 16#7f { dup 16#20 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for 16#a0 1 16#ff { dup 16#40 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for UCDingbatsEncoding [ 16#c0 1 16#ff {} for ] vg&undef [ 16#00 16#05 16#0a 16#0b 16#28 16#4c 16#4e 16#53 16#54 16#55 16#57 16#5f 16#60 16#68 16#69 16#6a 16#6b 16#6c 16#6d 16#6e 16#6f 16#70 16#71 16#72 16#73 16#74 16#75 16#95 16#96 16#97 16#b0 16#bf ] vg&undef pop % Define the base fonts which don't change. /Undefined-UC NullEncoding /Helvetica vg&newbasefont pop /MathOps-UC UCMathOpsEncoding /Symbol vg&newbasefont pop /Arrows-UC UCArrowsEncoding /Symbol vg&newbasefont pop /Dingbats-UC UCDingbatsEncoding /ZapfDingbats vg&newbasefont pop % Make the SansSerif composite fonts. /SansSerif /Helvetica 16#00 vg&newcompositefont /SansSerif-Bold /Helvetica-Bold 16#01 vg&newcompositefont /SansSerif-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /SansSerif-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Serif composite fonts. /Serif /Times-Roman 16#00 vg&newcompositefont /Serif-Bold /Times-Bold 16#01 vg&newcompositefont /Serif-Italic /Times-Italic 16#02 vg&newcompositefont /Serif-BoldItalic /Times-BoldItalic 16#03 vg&newcompositefont % Make the Monospaced composite fonts. /Monospaced /Courier 16#00 vg&newcompositefont /Monospaced-Bold /Courier-Bold 16#01 vg&newcompositefont /Monospaced-Italic /Courier-Oblique 16#02 vg&newcompositefont /Monospaced-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont % Make the Dialog composite fonts. /Dialog /Helvetica 16#00 vg&newcompositefont /Dialog-Bold /Helvetica-Bold 16#01 vg&newcompositefont /Dialog-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /Dialog-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the DialogInput composite fonts. /DialogInput /Helvetica 16#00 vg&newcompositefont /DialogInput-Bold /Helvetica-Bold 16#01 vg&newcompositefont /DialogInput-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /DialogInput-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Typewriter composite fonts (JDK 1.1 only). /Typewriter /Courier 16#00 vg&newcompositefont /Typewriter-Bold /Courier-Bold 16#01 vg&newcompositefont /Typewriter-Italic /Courier-Oblique 16#02 vg&newcompositefont /Typewriter-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont /cfontH { dup /fontsize exch def /SansSerif exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHB { dup /fontsize exch def /SansSerif-Bold exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHI { dup /fontsize exch def /SansSerif-Italic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHBI { dup /fontsize exch def /SansSerif-BoldItalic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontT { dup /fontsize exch def /Serif exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTB { dup /fontsize exch def /Serif-Bold exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTI { dup /fontsize exch def /Serif-Italic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTBI { dup /fontsize exch def /Serif-BoldItalic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontC { dup /fontsize exch def /Typewriter exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCB { dup /fontsize exch def /Typewriter-Bold exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCI { dup /fontsize exch def /Typewriter-Italic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCBI { dup /fontsize exch def /Typewriter-BoldItalic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def % Darken or lighten the current color. /darken {0.7 exch exp 3 copy q 4 -1 roll vg&C currentrgbcolor 3 {4 -2 roll mul} repeat 3 array astore Q} def /displayColorMap << /Cr [1.00 0.00 0.00] /Cg [0.00 1.00 0.00] /Cb [0.00 0.00 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.00 0.00] /CGg [0.00 1.00 0.00] /CGb [0.00 0.00 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.00 0.00] /CIg [0.00 1.00 0.00] /CIb [0.00 0.00 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /printColorMap << /Cr [1.00 0.33 0.33] /Cg [0.33 1.00 0.33] /Cb [0.33 0.33 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.33 0.33] /CGg [0.33 1.00 0.33] /CGb [0.33 0.33 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.33 0.33] /CIg [0.33 1.00 0.33] /CIb [0.33 0.33 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /grayColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [0.75] /CGg [1 ] /CGb [0.50] /CGc [0.75] /CGm [0.50] /CGy [1 ] /CGo [0.75] /CGp [1 ] /CGw [0 ] /CGgrl [0.25] /CGgr [0.50] /CGgrd [0.75] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def /bwColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [1 ] /CGg [1 ] /CGb [1 ] /CGc [1 ] /CGm [1 ] /CGy [1 ] /CGo [1 ] /CGp [1 ] /CGw [0 ] /CGgrl [1 ] /CGgr [1 ] /CGgrd [1 ] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def % % The following routines handle the alignment of and printing of % tagged strings. % % Predefine the bounding box values. /bbllx 0 def /bblly 0 def /bburx 0 def /bbury 0 def % This routine pops the first unicode character off of a string and returns % the remainder of the string, the character code of first character, % and a "true" if the string was non-zero length. % popfirst % popfirst /popfirst { dup length 1 gt {dup 0 get /vg&fbyte exch def dup 1 get /vg&cbyte exch def dup length 2 sub 2 exch getinterval true} {pop false} ifelse } def % This routine shows a single unicode character given the font and % character codes. % unicharshow -- /unicharshow { 2 string dup 0 5 -1 roll put dup 1 4 -1 roll put internalshow } def % This is an internal routine to alternate between determining the % bounding box for stringsize and showing the string for recshow. % internalshow -- /internalshow {show} def % This is an internal routine to alternate between determining the % bounding box for stringsize and stroking various ornaments. % internalstroke -- /internalstroke {S} def % Sets up internalshow to use the null device to determine string size. % -- nullinternalshow -- /nullinternalshow {/internalshow {false charpath flattenpath pathbbox updatebbox} def} def % Sets up internalstroke to use the null device to determine string size. % -- nullinternalstroke -- /nullinternalstroke { /internalstroke {flattenpath pathbbox updatebbox} def} def % This routine tests to see if the character code matches the first % character of a string. % testchar /testchar {exch dup 3 -1 roll 0 get eq} def % Raise the text baseline for superscripts. % -- raise -- /raise { 0 fontsize 2 div rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-raise the text baseline for superscripts. % -- unraise -- /unraise { /fontsize fontsize 1.5 mul def 0 fontsize 2 div neg rmoveto } def % Lower the text baseline for subscripts. % -- lower -- /lower { 0 fontsize 3 div neg rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-lower the text baseline for subscripts. % -- unlower -- /unlower { /fontsize fontsize 1.5 mul def 0 fontsize 3 div rmoveto } def % Compare the top two elements on the stack and leave only the % larger one. /maxval {2 copy gt {pop} {exch pop} ifelse} def % Tokenize a string. Do not use the usual PostScript token because % parentheses will not be interpreted correctly because of rescanning % of the string. /vg&token {/vg&string exch def /vg&index -1 def /vg&level 0 def 0 2 vg&string length 2 sub { dup dup 1 add exch vg&string exch get 8 bitshift vg&string 3 -1 roll get or dup 16#f0fe eq {pop 1}{16#f0ff eq {-1}{0} ifelse} ifelse /vg&level exch vg&level add def vg&level 0 eq {/vg&index exch def exit} if pop } for vg&index 0 ge { vg&string vg&index 2 add dup vg&string length exch sub getinterval vg&index 2 gt {vg&string 2 vg&index 2 sub getinterval}{()} ifelse true} {false} ifelse } bind def % Recursively show an unicode string. % recshow -- /recshow { popfirst { % Test to see if this is a string attribute. vg&fbyte 16#f0 and 16#e0 eq { q % Font style. currentfont dup /FontStyleBits known {/FontStyleBits get}{pop 0} ifelse vg&cbyte or vg&fontstyles exch get fontsize exch exec vg&token pop recshow currentpoint Q m recshow } { vg&fbyte 16#F8 and 16#F0 eq { % Superscript and/or subscript. vg&cbyte 16#00 eq { vg&token pop exch vg&token pop 3 -1 roll q raise recshow unraise currentpoint pop Q exch q lower recshow unlower currentpoint pop Q maxval currentpoint exch pop m recshow } if % Strikeout. vg&cbyte 16#01 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll fontsize 3 div add moveto fontsize 3 div add lineto internalstroke Q recshow} if % Underline. vg&cbyte 16#02 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dashed underline. vg&cbyte 16#03 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J [ vg&uthick 5 mul vg&uthick 2 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dotted underline. vg&cbyte 16#04 eq { vg&token pop currentpoint 3 -1 roll recshow q 1 J [ 0 vg&uthick 3 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Thick underline. vg&cbyte 16#05 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Gray thick underline. vg&cbyte 16#06 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w 0.5 setgray currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Overbar. vg&cbyte 16#07 eq { vg&token pop dup stringsize relative 4 1 roll pop pop exch 3 -1 roll recshow q 0 J vg&underline vg&uthick w vg&uoffset neg add dup currentpoint pop exch m l internalstroke Q recshow} if } { vg&fbyte vg&cbyte unicharshow recshow } ifelse } ifelse } if } def % Get the underline position and thickness from the current font. /vg&underline { currentfont dup /FontType get 0 eq {/FDepVector get 0 get} if dup dup /FontInfo known { /FontInfo get dup dup /UnderlinePosition known { /UnderlinePosition get /vg&uoffset exch def } { pop /vg&uoffset 0 def } ifelse dup /UnderlineThickness known { /UnderlineThickness get /vg&uthick exch def } { pop /vg&uthick 0 def } ifelse } { pop /vg&uoffset 0 def /vg&uthick 0 def } ifelse /FontMatrix get currentfont dup /FontType get 0 eq {/FontMatrix get matrix concatmatrix}{pop} ifelse dup 0 vg&uoffset 3 -1 roll transform /vg&uoffset exch def pop 0 vg&uthick 3 -1 roll transform /vg&uthick exch def pop } def % Make a frame with the coordinates on the stack. % frame -- /frame {4 copy m 3 1 roll exch l 4 -2 roll l l h} def % Resets the accumulated bounding box to a degenerate box at the % current point. % -- resetbbox -- /resetbbox { currentpoint 2 copy /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Update the accumulated bounding box. % updatebbox -- /updatebbox { dup bbury gt {/bbury exch def} {pop} ifelse dup bburx gt {/bburx exch def} {pop} ifelse dup bblly lt {/bblly exch def} {pop} ifelse dup bbllx lt {/bbllx exch def} {pop} ifelse } def % Set the bounding box to the values on the stack. % updatebbox -- /restorebbox { /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Push the accumulated bounding box onto the stack. % -- pushbbox /pushbbox {bbllx bblly bburx bbury} def % Make the relative bounding box relative to the currentpoint. % inflate /inflate { 2 {fontsize 0.2 mul add 4 1 roll} repeat 2 {fontsize 0.2 mul sub 4 1 roll} repeat } def % Make the relative bounding box relative to the currentpoint. % relative /relative { currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll } def % Returns the size of a string appropriate for recshow. % stringsize /stringsize { pushbbox /internalshow load /internalstroke load 7 -1 roll q nulldevice 0 0 m nullinternalshow nullinternalstroke resetbbox recshow /internalstroke exch def /internalshow exch def pushbbox 8 -4 roll restorebbox Q } def % Calculate values for string positioning. /calcval {4 copy 3 -1 roll sub /widy exch def sub neg /widx exch def pop pop /dy exch def /dx exch def} def % Utilities to position a string. % First letter (U=upper, C=center, B=baseline, L=lower) % Second letter (L=left, C=center, R=right) /align [ {calcval dx neg widy dy add neg rmoveto} % UL {calcval dx neg widy 2 div dy add neg rmoveto} % CL {calcval dx neg 0 rmoveto} % BL {calcval dx neg dy neg rmoveto} % LL {calcval widx dx add neg widy dy add neg rmoveto} % UR {calcval widx dx add neg widy 2 div dy add neg rmoveto} % CR {calcval widx dx add neg 0 rmoveto} % BR {calcval widx dx add neg dy neg rmoveto} % LR {calcval widx 2 div dx add neg widy dy add neg rmoveto} % UC {calcval widx 2 div dx add neg widy 2 div dy add neg rmoveto} % CC {calcval widx 2 div dx add neg 0 rmoveto} % BC {calcval widx 2 div dx add neg dy neg rmoveto} % LC ] def /vg&str {m q 1 -1 scale dup stringsize 4 copy align 11 -1 roll get exec q inflate relative frame exch exec Q recshow Q} def end /procDict exch def %%EndProlog %%BeginSetup save procDict begin printColorMap begin 595 791 setpagesize 20 20 20 20 setmargins 0 0 setorigin 600 600 setsize fittopage portrait imagescale cliptobounds setbasematrix /Helvetica 10 sf defaultGraphicsState %%EndSetup 0.00000 0.00000 0.00000 RG [ 1.00000 0.00000 0.00000 1.00000 0.00000 0.00000 ] defaultmatrix matrix concatmatrix setmatrix 1.00000 w 2 J 0 j 10.0000 M [ ] 0.00000 d 1.00000 .784314 0.00000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG q 0 0 600 600 rc 1.00000 .784314 0.00000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG gsave /DeviceRGB setcolorspace [ 256.000 0.00000 0.00000 256.000 0.00000 0.00000 ] concat << /ImageType 1 /Width 256 /Height 256 /BitsPerComponent 8 /Decode [0 1 0 1 0 1] /ImageMatrix [256 0 0 256 0 0] /DataSource currentfile /ASCII85Decode filter /FlateDecode filter >> image Gb"/,4c:=PZL&b*OE#QI[>Z75).H]8#T8V86O[I\@1=C"&47BI0ugN?&Bcp`%iN8?L)=GX9,h?&+et#T AB7k?`Y^J&TjRA*DGEVj7RT^WAS$;F>N_(^rD>L(ldj1AOcbc'-RSlozzzzzzzz!#uqqDuP`JZIf6XUT D"Vs!VY8i'5AQ$i#dgjt\7_^\SV(36lf>OoJ(aI2pjaFF(b+r*R<"JE(C*Ap9W*s0j]ci&KWA+oc*N?c )PfisLk0YLE)m$"!jr.m0\X"oiR)qP3lPDiAQS"l0d+Ii OO?W&oT6QH&s0gB.FS,/:T^diSTu9(^P]n/jVFjH(J[%id)\oj@?C\_@Jl23Ge+kWa$fnG*Ul#<6T\r. k4]*'H(U5N"cQ(]V&=kGHJZM@T9!rdb#6%_g`p0.O`mqX:taiut9!W@>XbrD)?JkUj8o;3lg]Zp7s$6UF(q$a)Pl4EB+/]!HMEglc9[I#rZdj3U3>CNR`8\NCJ* ?p;U(M7u"o;7dZCgseV'4ae#QKhn_tDnGns=:mT=FkBkl5X4T`0"b5BW"c=#7fBG>h6c]XM^Qr'/R.25 &T!;`nf^F(DU6eIM4Ajacs['S#=2+>C`LA.CXq)=K0Z34Cug+8c@#7=2$+P4d]HJ*9,40i4S\W;i9O5P PbZ./k$pN#&AlW<3&$!Q164GRa\^T1AD2]_4S^+7Q!"g"/Y!rBDE`jH1KcVuN`&eb3a.)<>:^pG`m?f) CI('77%i-bl6HRE `97-PgCq_uJ3O$dY%a?>"#WnE%qC#+]T0='Ta$@](\)dq@nEdNE'Ps8:huC,+fL$C/tF;J5jKai>O1D> >qk7@_=Kqp,4UoRG-ZIt?O"$DoJqcIMloQm\er1L/F?OY`6_hc0TRd9."PImuC)m(bh;Zbg%8:7WrULs 3jTgiA\)@_/.+02TJ2H3*lGA[>Ek^.@sDd#PaLBq@OOq&_.$kBuDZs!N=GCI<8^k<%XLnR%e.]MA^jYH OF`T:p(obc/YO#\@)Za3+?F.HN!_jNUZ.cTPpr]&o4)h6k3b]p;(]RLf@h(n'gU9[bC[,XopBAimCfWD "7h[r0_oB(HCcs(=g^b>IGY+?guEk-El'/!OpIPlRU8j*uk?6iRsYr.j9f;Tc?V]r"'dSXR`TZ(gbq=9 &/HeJ/,`%iDHBj#oo=%E%M"hY>]&63!:+@U5u^OsAL^D#@@.l($1Om/L63H:cS1cYa0]s&'QJ)TiUoLA i8753GMdAGe*]\YAUY,c*<`s$K2*rmsbj>Y>fiRof?uT`<2$088q=BhIF#XI`l?^/b>6[6aiU68+&O%n 0^JVL2BXA#$mO0V0bWfP/5bD=BbL]Hs8es"cCDj=TWEao2r.jX YDW\C]$`>/n>65*l#\Ju^sJ6N?5#&0h.uS3:5Yk?(u_DIg$MVQuG.2P[GFDcZ(gJX>]@C@-MQeTre1od iubVW/ch[Bu7tqD+Q9_(($FrEfhVWDKH'F?&isNISXOp!>hLJ*4Ptb(0I5,/2h0Dc 7S"2bO(N/XlJareKOBjo;C+pJ'>L<8TInDqU9Q&BYTD&^^Q15[\p]HoQkta_u>'D:Jp^hm+D5b=^5.65 O@KD? 'O`(=Q,u@3UP(sb[(;JT,/dJ\q j[S@_OaLM#"Ui"PMt55j/9]GSJMj^M3`JZM@PqJl(=]qF21qA+RUnhtdeTs)T@-D,9oKIhm6Za*ZN)DT Vp3O[&d5/FE\Xpi5q5Nrm2nkD%>VB(0m?V]O74hI4,N\hAa.kC*KI"8Y5FmVMk;AH.UN?[%(AD+EOX:Z qj`r:ponPFDNcB_fDU^?#;h\U`mVD=I>sJ#S/&PQ))SRM((@pK><31F3+i\a5gH&*!Uk)*bt@EpS9Gr: dlI'P[ScgI5F4&_P)%T>:7:o.O)[GSftDQqor"1Zs'.d/Rh,1prHo,/;HR=9#,s-T)%6?,5rZ$5X6ks1 >^$OP<8YIM)0G'Bh20K\l)h@/a0\"g2&";u+f6L$>3;m/IAWN_N5sl2m#Us,WrT1^!sDToJoK&B[k2ZA>IkE68T>l7#,\5N8)d/G_W3<]:&'g_PMs/,a)c@6#tA,jjso3]?6o__d:6! qS#5G\+ep=G3^nn6!h_9_X"d&I'#ppm]A^k]?+Hsf07p4/h9j+3R>b(H)Z_XmB?m/g(Zs501Fo.KNr)? jU1s/E7&GKg(?I%`"[^YXA8AeWktSG_hX0tVsDI`''BS9Q0,rf;_er-)Z4J&&Y2=bcos(MIUab7Fs-Il %(TgHVPA`+'k0&L:nZ+,0KF/oYNI!R:WpB)Ikl$g"9mOSKseiILr@$jbr2jOa!1Y5aOrP@%bu5I6kE_Z &`i?fD%<`fjcp!aB7Ejbj*#pEK6:oRci7?GOKdg--R,T4b59gukFk70iAaE7oqHjiqm0W^j91&[O'Hgrg.K,<>!G;7jjT 9i_k.d_l@f:Mk_LBQ<,aNu&rmCWS"$sg'(]==0\fCjTeIW:P%GrQGmWbK,oY2/4q0hfuYk6gXs%7qE)9 1!J@fFQA5CZ>Ys4ZUR:>fno,lXuNjc@J)c[S[Ls'9I=F8NuoJ)1Q&dU)-e'a3Wr0(>2q(\$%+KDrpNmt F$j`F!E[.mkG(r9%,6s'k-&_$\!ouIj0A0`K 0@&\j-gV)?Qoh0_BiS6;(4r%q#5YrmMDi#bSDP[/U)uk.crHj(s:oqnMq&=6I`pCFfCDN;q6@6Ms4B_q t!7?eIZ`r:csAJVa=N%0<^5LGtTYs'6uN>5qO;%mBkU`Y:ZH!FkX.oD]BtN?Ni@L$.t:K)[+q>lSLD#a %>['F9:4qL\;l5WBO73+uBs5`05TKe8l$qk3@'T\MFb +`79?_d?p/cG86h_5/-VOL*%KXrVJZTC@J&`1OY5e55q9;ceP@+3:eG>Mjrt5)\i]jjLhmrb[KKX#/?P l"1B,+NrtP"LgA./fIl $lEFoc<`J#iK3SGBGikM]Y-q$aRTL&c)j8,c:J"V<:_:&^#J%/h:)<6ftkIVo!Z3Fc?Fe"6L;_Z05GG( JMgJ"E_9B0QMIAcM4d,?/I[pt;2>dh(Gm4iH>%q*-n,q><1Js0[R]f`+=-b5!-t^S*\/e,CG!$)!@Z5M ,m1`BTIakG=ID7r/4a/l9:XlOC1M=T$Jeim78s4tC(L?k3:8#pdT!.j>&k5Hp]ss$1qIH.2c?qd78W80 ._K0)kj3pAapb^I/?tnGhf;^TX@a&?Z!'aA8r<_>2t@!SfC/9$MiM>0_U\q>JOK5aOs#XfiX7`ZGM"NE=#\@h$s7'Y?r6.)$n5ot]"_.#FM>u'`^Y&R\j53%(^#2h*!g 37V(T=(Jd/W(le8ESd$Lf3(a1pjj0YQJ45;0+_?a&*M5e''4/c2/@Ia-dm_1+WDeO '?"Iji4,,Q'bng=_QPkWap=A,eXO2uWcHr9""QcMTm@s5W:W9e?JRs3K"Hrq"ku"h;4af>%;e!oX'-^' (O8^o@*)XoFphd/PE]hph[QZ/nbmDu:PY^f']pSbjLMQ2oA/YGBhr,(EM\58S)70:rE$q=!&WnW,[0?A Um*HQ;p<%fs='R_OWJ5?EaB@dtu1s%c@?LHe<(Itk=On,KXEJ+EUqnf+'J:K?u3cMd4crX i!=VZ5+M!h_/R^'fPp+VL9Z^83,`]`j?*!OVkq`;c&"Du)[[-bn%.)>Sap#=%ga[ikYonji#\Qj#HT5h l=QrgWLdmJIPK+?g-OrQe(7aYnW3'_+D8n^km4pq`Es3_R7gSGst@s+`K):@%qUQ![Gg#I46Rofn`A+Z o_Ghp)(kI.F>8^gd>qbnOR+VSKgr*/[\17>kM]rla^/\#o!)qu8^;Jr#s^;>^MPJRn\JepkVf/qO&i&F f/#QKQ`(s3:ICHN%]W5c:#gBDt[Ir0GM*^Pf^S(&TNl?"G0Eup&#3_bCF#cIIF,s*;cIs',GOph"TRq:E"RgKD>DHjMc^s-I>Hh- >c_s5=Ear@`QQY?:hT.A1hQ"#ke$=!0N,!#?oCcMoO5IruORLVO]r&p?1l?QZi@d`EuRD`>4!>H/n#$)]o%K0TQ1ok5XPKro$7mI6U&i0p`%L#1\n@PIR :_UN2Hm[:ITXGn,G/,5GXTqc,F%&$=N<%[GjE7p.qUd8+6KSA\SC6"@'9m:YYp@50a4uMZ;;o^XNG,0R F)Ps10>h:SiRW?I244/ATbbs5eGerl<.\YN,XWqd2F7eE3t'p&90?rlb7)H3os7IWO(ia!:Tjm/I[e*u=Ku%. M6nH[5=GSc\]_5G+dY5krJ$C&ar7s1Ls>r\B[%o?G&$CYu\ca'Sc\p:p>$O%oTekl5.3OlT58 +"#ri>Ts8[ITtKZjsWrBCbZV-e]JW."]4aFEUd!CHMY/HD@&kP"r$p&>9sVmut#q#B#6E4#5g=oW?aRJ s`^s//7tn6>&g!:Be$r&=SHf)A/hao/uR&5Wr?nV/E@9>l=Kq4Gq1?ZS@Bkl::J'L8QIrnkhIpuKHpT7 $[0]DcB^s-jMuT_UYKZ`sI./tceji/nO\p5:3s0)kH+$g@Uqcn:uMr$OFm?ZZV\s8gs1`.6IjFR!Ng>4YB79jY5P)aQJ(+3hFSpcTs4MFA5(0F&IqQ0*IlrW=C]GtcDD1>)WB8Ee%m=^$%Or?so7KelIK/`beuRE`>c?7;p1eY7K0).eYnI$05N 3>!^UD@e/Qr'//cjF=Cmr;Iutn#ialZL@V1pq II?5O%&/qY%X4rYMrDb&*0Ws84D@]!%7#')S^ket`9-V.Ho C0V3WJJ_>K,@@\]:3I$dMlts4=.JqJr==iT)*%ruiK+Y6t1<3-tPLVkrO*IVf7\Wn:kiW[bXWnaZYCrB L;W]nhgH0>@r"'b7n$eA(kZ^%4/JhU+/^Q2]rgV6[7*L&],?]WA,akBAg/s'IQk%JKf=`42?cR/2KMD< plForY7Gq)PQ<3;t#5rekNL=V:YPYASg-^\[H.tICX`=G(7Hk:JeH4E#s8/hotT,'U7b=C%fQE':O\V;>%)EepReko Z>mUDKR;Pe$TO'XN:?.'o.-mKP/tOm,*Q&Jq0fohg0UrXOYX7H&Jb8)4QQ'^.d(Tp5'oGBb5C;HIfKHKzzz!!%c6rrIj(\%;~> grestore gsave /DeviceRGB setcolorspace [ 75.0000 0.00000 0.00000 150.000 225.000 150.000 ] concat << /ImageType 1 /Width 256 /Height 256 /BitsPerComponent 8 /Decode [0 1 0 1 0 1] /ImageMatrix [256 0 0 256 0 0] /DataSource currentfile /ASCII85Decode filter /FlateDecode filter >> image Gb"/,4c:=PZL&b*OE#QI[>Z75).H]8#T8V86O[I\@1=C"&47BI0ugN?&Bcp`%iN8?L)=GX9,h?&+et#T AB7k?`Y^J&TjRA*DGEVj7RT^WAS$;F>N_(^rD>L(ldj1AOcbc'-RSlozzzzzzzz!#uqqDuP`JZIf6XUT D"Vs!VY8i'5AQ$i#dgjt\7_^\SV(36lf>OoJ(aI2pjaFF(b+r*R<"JE(C*Ap9W*s0j]ci&KWA+oc*N?c )PfisLk0YLE)m$"!jr.m0\X"oiR)qP3lPDiAQS"l0d+Ii OO?W&oT6QH&s0gB.FS,/:T^diSTu9(^P]n/jVFjH(J[%id)\oj@?C\_@Jl23Ge+kWa$fnG*Ul#<6T\r. k4]*'H(U5N"cQ(]V&=kGHJZM@T9!rdb#6%_g`p0.O`mqX:taiut9!W@>XbrD)?JkUj8o;3lg]Zp7s$6UF(q$a)Pl4EB+/]!HMEglc9[I#rZdj3U3>CNR`8\NCJ* ?p;U(M7u"o;7dZCgseV'4ae#QKhn_tDnGns=:mT=FkBkl5X4T`0"b5BW"c=#7fBG>h6c]XM^Qr'/R.25 &T!;`nf^F(DU6eIM4Ajacs['S#=2+>C`LA.CXq)=K0Z34Cug+8c@#7=2$+P4d]HJ*9,40i4S\W;i9O5P PbZ./k$pN#&AlW<3&$!Q164GRa\^T1AD2]_4S^+7Q!"g"/Y!rBDE`jH1KcVuN`&eb3a.)<>:^pG`m?f) CI('77%i-bl6HRE `97-PgCq_uJ3O$dY%a?>"#WnE%qC#+]T0='Ta$@](\)dq@nEdNE'Ps8:huC,+fL$C/tF;J5jKai>O1D> >qk7@_=Kqp,4UoRG-ZIt?O"$DoJqcIMloQm\er1L/F?OY`6_hc0TRd9."PImuC)m(bh;Zbg%8:7WrULs 3jTgiA\)@_/.+02TJ2H3*lGA[>Ek^.@sDd#PaLBq@OOq&_.$kBuDZs!N=GCI<8^k<%XLnR%e.]MA^jYH OF`T:p(obc/YO#\@)Za3+?F.HN!_jNUZ.cTPpr]&o4)h6k3b]p;(]RLf@h(n'gU9[bC[,XopBAimCfWD "7h[r0_oB(HCcs(=g^b>IGY+?guEk-El'/!OpIPlRU8j*uk?6iRsYr.j9f;Tc?V]r"'dSXR`TZ(gbq=9 &/HeJ/,`%iDHBj#oo=%E%M"hY>]&63!:+@U5u^OsAL^D#@@.l($1Om/L63H:cS1cYa0]s&'QJ)TiUoLA i8753GMdAGe*]\YAUY,c*<`s$K2*rmsbj>Y>fiRof?uT`<2$088q=BhIF#XI`l?^/b>6[6aiU68+&O%n 0^JVL2BXA#$mO0V0bWfP/5bD=BbL]Hs8es"cCDj=TWEao2r.jX YDW\C]$`>/n>65*l#\Ju^sJ6N?5#&0h.uS3:5Yk?(u_DIg$MVQuG.2P[GFDcZ(gJX>]@C@-MQeTre1od iubVW/ch[Bu7tqD+Q9_(($FrEfhVWDKH'F?&isNISXOp!>hLJ*4Ptb(0I5,/2h0Dc 7S"2bO(N/XlJareKOBjo;C+pJ'>L<8TInDqU9Q&BYTD&^^Q15[\p]HoQkta_u>'D:Jp^hm+D5b=^5.65 O@KD? 'O`(=Q,u@3UP(sb[(;JT,/dJ\q j[S@_OaLM#"Ui"PMt55j/9]GSJMj^M3`JZM@PqJl(=]qF21qA+RUnhtdeTs)T@-D,9oKIhm6Za*ZN)DT Vp3O[&d5/FE\Xpi5q5Nrm2nkD%>VB(0m?V]O74hI4,N\hAa.kC*KI"8Y5FmVMk;AH.UN?[%(AD+EOX:Z qj`r:ponPFDNcB_fDU^?#;h\U`mVD=I>sJ#S/&PQ))SRM((@pK><31F3+i\a5gH&*!Uk)*bt@EpS9Gr: dlI'P[ScgI5F4&_P)%T>:7:o.O)[GSftDQqor"1Zs'.d/Rh,1prHo,/;HR=9#,s-T)%6?,5rZ$5X6ks1 >^$OP<8YIM)0G'Bh20K\l)h@/a0\"g2&";u+f6L$>3;m/IAWN_N5sl2m#Us,WrT1^!sDToJoK&B[k2ZA>IkE68T>l7#,\5N8)d/G_W3<]:&'g_PMs/,a)c@6#tA,jjso3]?6o__d:6! qS#5G\+ep=G3^nn6!h_9_X"d&I'#ppm]A^k]?+Hsf07p4/h9j+3R>b(H)Z_XmB?m/g(Zs501Fo.KNr)? jU1s/E7&GKg(?I%`"[^YXA8AeWktSG_hX0tVsDI`''BS9Q0,rf;_er-)Z4J&&Y2=bcos(MIUab7Fs-Il %(TgHVPA`+'k0&L:nZ+,0KF/oYNI!R:WpB)Ikl$g"9mOSKseiILr@$jbr2jOa!1Y5aOrP@%bu5I6kE_Z &`i?fD%<`fjcp!aB7Ejbj*#pEK6:oRci7?GOKdg--R,T4b59gukFk70iAaE7oqHjiqm0W^j91&[O'Hgrg.K,<>!G;7jjT 9i_k.d_l@f:Mk_LBQ<,aNu&rmCWS"$sg'(]==0\fCjTeIW:P%GrQGmWbK,oY2/4q0hfuYk6gXs%7qE)9 1!J@fFQA5CZ>Ys4ZUR:>fno,lXuNjc@J)c[S[Ls'9I=F8NuoJ)1Q&dU)-e'a3Wr0(>2q(\$%+KDrpNmt F$j`F!E[.mkG(r9%,6s'k-&_$\!ouIj0A0`K 0@&\j-gV)?Qoh0_BiS6;(4r%q#5YrmMDi#bSDP[/U)uk.crHj(s:oqnMq&=6I`pCFfCDN;q6@6Ms4B_q t!7?eIZ`r:csAJVa=N%0<^5LGtTYs'6uN>5qO;%mBkU`Y:ZH!FkX.oD]BtN?Ni@L$.t:K)[+q>lSLD#a %>['F9:4qL\;l5WBO73+uBs5`05TKe8l$qk3@'T\MFb +`79?_d?p/cG86h_5/-VOL*%KXrVJZTC@J&`1OY5e55q9;ceP@+3:eG>Mjrt5)\i]jjLhmrb[KKX#/?P l"1B,+NrtP"LgA./fIl $lEFoc<`J#iK3SGBGikM]Y-q$aRTL&c)j8,c:J"V<:_:&^#J%/h:)<6ftkIVo!Z3Fc?Fe"6L;_Z05GG( JMgJ"E_9B0QMIAcM4d,?/I[pt;2>dh(Gm4iH>%q*-n,q><1Js0[R]f`+=-b5!-t^S*\/e,CG!$)!@Z5M ,m1`BTIakG=ID7r/4a/l9:XlOC1M=T$Jeim78s4tC(L?k3:8#pdT!.j>&k5Hp]ss$1qIH.2c?qd78W80 ._K0)kj3pAapb^I/?tnGhf;^TX@a&?Z!'aA8r<_>2t@!SfC/9$MiM>0_U\q>JOK5aOs#XfiX7`ZGM"NE=#\@h$s7'Y?r6.)$n5ot]"_.#FM>u'`^Y&R\j53%(^#2h*!g 37V(T=(Jd/W(le8ESd$Lf3(a1pjj0YQJ45;0+_?a&*M5e''4/c2/@Ia-dm_1+WDeO '?"Iji4,,Q'bng=_QPkWap=A,eXO2uWcHr9""QcMTm@s5W:W9e?JRs3K"Hrq"ku"h;4af>%;e!oX'-^' (O8^o@*)XoFphd/PE]hph[QZ/nbmDu:PY^f']pSbjLMQ2oA/YGBhr,(EM\58S)70:rE$q=!&WnW,[0?A Um*HQ;p<%fs='R_OWJ5?EaB@dtu1s%c@?LHe<(Itk=On,KXEJ+EUqnf+'J:K?u3cMd4crX i!=VZ5+M!h_/R^'fPp+VL9Z^83,`]`j?*!OVkq`;c&"Du)[[-bn%.)>Sap#=%ga[ikYonji#\Qj#HT5h l=QrgWLdmJIPK+?g-OrQe(7aYnW3'_+D8n^km4pq`Es3_R7gSGst@s+`K):@%qUQ![Gg#I46Rofn`A+Z o_Ghp)(kI.F>8^gd>qbnOR+VSKgr*/[\17>kM]rla^/\#o!)qu8^;Jr#s^;>^MPJRn\JepkVf/qO&i&F f/#QKQ`(s3:ICHN%]W5c:#gBDt[Ir0GM*^Pf^S(&TNl?"G0Eup&#3_bCF#cIIF,s*;cIs',GOph"TRq:E"RgKD>DHjMc^s-I>Hh- >c_s5=Ear@`QQY?:hT.A1hQ"#ke$=!0N,!#?oCcMoO5IruORLVO]r&p?1l?QZi@d`EuRD`>4!>H/n#$)]o%K0TQ1ok5XPKro$7mI6U&i0p`%L#1\n@PIR :_UN2Hm[:ITXGn,G/,5GXTqc,F%&$=N<%[GjE7p.qUd8+6KSA\SC6"@'9m:YYp@50a4uMZ;;o^XNG,0R F)Ps10>h:SiRW?I244/ATbbs5eGerl<.\YN,XWqd2F7eE3t'p&90?rlb7)H3os7IWO(ia!:Tjm/I[e*u=Ku%. M6nH[5=GSc\]_5G+dY5krJ$C&ar7s1Ls>r\B[%o?G&$CYu\ca'Sc\p:p>$O%oTekl5.3OlT58 +"#ri>Ts8[ITtKZjsWrBCbZV-e]JW."]4aFEUd!CHMY/HD@&kP"r$p&>9sVmut#q#B#6E4#5g=oW?aRJ s`^s//7tn6>&g!:Be$r&=SHf)A/hao/uR&5Wr?nV/E@9>l=Kq4Gq1?ZS@Bkl::J'L8QIrnkhIpuKHpT7 $[0]DcB^s-jMuT_UYKZ`sI./tceji/nO\p5:3s0)kH+$g@Uqcn:uMr$OFm?ZZV\s8gs1`.6IjFR!Ng>4YB79jY5P)aQJ(+3hFSpcTs4MFA5(0F&IqQ0*IlrW=C]GtcDD1>)WB8Ee%m=^$%Or?so7KelIK/`beuRE`>c?7;p1eY7K0).eYnI$05N 3>!^UD@e/Qr'//cjF=Cmr;Iutn#ialZL@V1pq II?5O%&/qY%X4rYMrDb&*0Ws84D@]!%7#')S^ket`9-V.Ho C0V3WJJ_>K,@@\]:3I$dMlts4=.JqJr==iT)*%ruiK+Y6t1<3-tPLVkrO*IVf7\Wn:kiW[bXWnaZYCrB L;W]nhgH0>@r"'b7n$eA(kZ^%4/JhU+/^Q2]rgV6[7*L&],?]WA,akBAg/s'IQk%JKf=`42?cR/2KMD< plForY7Gq)PQ<3;t#5rekNL=V:YPYASg-^\[H.tICX`=G(7Hk:JeH4E#s8/hotT,'U7b=C%fQE':O\V;>%)EepReko Z>mUDKR;Pe$TO'XN:?.'o.-mKP/tOm,*Q&Jq0fohg0UrXOYX7H&Jb8)4QQ'^.d(Tp5'oGBb5C;HIfKHKzzz!!%c6rrIj(\%;~> grestore gsave /DeviceRGB setcolorspace [ 112.000 0.00000 0.00000 225.000 300.000 0.00000 ] concat << /ImageType 1 /Width 128 /Height 128 /BitsPerComponent 8 /Decode [0 1 0 1 0 1] /ImageMatrix [128 0 0 128 0 0] /DataSource currentfile /ASCII85Decode filter /FlateDecode filter >> image Gb"/,4_l$?(A3_k'K!]s_Zl#r+H-CI'F:DJ(^J&s@#P1r'J.,;0IRK"#L/pW$kA4n+;P-t-udOa!X/oN 9JD#bs,nu.Fko7MSpOhXW\18Tj15pnO/H:4II;CDh65FOn(t2#kI$qsY5JI+P/!93>N#ZgrMQDLs0_Q! iFe07?JE6OYMmO#^.\,VH[MJKZgaM+5%b,m)#V@fnfl)db(J8Y6HDW(gTEX0r\(TRfR`tuhu0jrQX/A` HmP.bM`e+fcK3c.IbU4=7ie0PJ'rnZ4Yj,UF86o'Ur1[V4k6-ie^W:!BFLuL;hPQRrO,Kb1;(YrCTnQ.5_6!HnsOMtuU31kJ:2r:^+pnO+,+/sPkQZ`:Dh/p8qLYT7Z?35P[o]DaXK&WE3<_MA* ^um*>6N5LIs$llPZuP'<2>mK'innDiptqFL(@F@,T$tm'>Js]b.F5fa'`W's=[DRr`ML4f\pHgu+7b0) ^Y9std?I^dn'%N4I)HU".#(_:L%j![UIqf:EUpA!(CVBUOq2:!$U&Zh&t=pWI`,=teGgu>p9dU:A?ao">7@Q5QhqA2 FXkg(T_10I0j$@R^`RBs_$1kFY1p#)YO;)@d=L*CqITXtQUbPh]i`r7djXh+33<:B1q.]5JBaqd_=1']!#^d(4)16SCj#$bWn6_N4+MSHaY:K^3r!td^ jS3?hj<(:"#ZMr_Iu/$f?jRtON=2V:s&K$W-KI^2YP>a+j6jYds"s`N^Af,Lj8IS!Tnd@\7l`f5s7%qJ r(Om6Dpq_5aF=nrWTSl6g'(RI\ejiNH+C@]n4i!839u/42Z@p/@!'4(=p:o#^GPdOJb\-@U(R1h7o)lL M>eap(N?o;0Z\`MqcW?8/VFK/NKj6Ci.BbdraQ4;lb>#;.0&-""6tpt6!/3T5fh:nmtUc"Jht^VN;jU1 ?hnW-Y?k=MrlQqPJC"*Go)Djsq&94ho7A'Zs1&)tph-+7^?U;)BMg5S8)Gr:J)c5Y1G8b(Xo9aJ\.H4X ;5O**r!i/4(:[b]X8^_X\+oCsnRkgKF7k%BPs?^Jreh/Kp>Q.a#l.V5ar.;\6Y=lYWIi7C^XSTj0br?d=.0^:N62i.?@U/,W2bT.<3Ho'>\X[KM0ScS=\!fm1UPr)EFb AdO"Y=8**%2U>][r`^1MSEQ%aID)mM@YRC/,0k5f5MNB']Lc#O"3D]Hn#'+"9e3bJ!g8>B`H>5:Sn<5r@cC0)Dg:F ?N!U;?[O$iL[)i0o%t_kEVA;UpA;$:rs"RWq&^=n>/ieP(1JMTc9jCNX?Y8J$fVa2sTfE9i `*^X$mZAUers6Daj)Wk7DnGm9p=*r[74`D?5I]O,Lb.T>a=(?#Th]Y498`IpVmn ke-o*:\Emu#q47%#m@!""n4F^"mZfBQQ8up-h/S$?F^"Rr.Y%`e9[29+"%5*'E=EaIoLpEpuf_fs"Q)* $ph/oFTVCAoq1^6#QAYYA[VSg$'aek$GPLQYT(elrSda6BgHeq/7aTVdAu\(cDF/Jt@8aYF2Rur%\!< k*s\H'n"uTP!>`A)=ZJW+2N0umu?p'>5u^jhaWHQM1=C9qWAOF!m]@Ns8&;g@/Q'70Q4d)rNe<[+/R,` f1c+5(0FQ9D!XBPU]Br_Q'E@gq2+B$Vptac>sS,@o/ZU[bWc^8;0G"aO+ofD&s8G2.>s(`SW5LTRX57<%Hs*I63YFD`S^FMU_"^`(Qi-G>[3EPPV7tA+GQ&?Sd)(qOd?9l+FOJ08k=RriCbI,Pef_'tE7eT0M<0-SpJ?cJJgLOPPDs(Zf:VZP\,0b.cTM6RJ=i^V&'B8u!_nP: ULa?)MEg^@9D.I'o.q]j:%Hgmrh%.o^@H(;&)]Oohea;2D!\pCrg50g)h5FJJ@`NZMkPi\T_\7K;daKo i=aN:MlH`Wrk%]58c:r5cWG?(nsdc4oAAm9)&KOVkP=T7^E!0=&-u>./"]&#V8k7g&j@f2ReGo-/p.#'8djda(r&c\+ k8O76osYh=5Ak_.VlTjcr"\\8mKgDl]T)NT>^VIls!OcR]],">J!nIZ=YbAf`;b_jAMAVn(8&eIO6`&+ R`^\ls6^N@kJ*#TheR"#AOT@tUs0)75F#'1CIpN#VGCfXY!r(.C;Z*s&Jo+kYs7-FP(EZJ*1.RE]7t?R%nbg-nIX)8W.Y/N: 0tRE-^4?(+VSrM$QN,qA*k'oMko>0Wd'EYiDQV7d;pYY34konOu\E=LD5?RqbrAfSi#Nd+O[/Qit0;cN`YO^7& r\mL.U"9He`Q.%`7D9fIp<'Cn86;H >6gdL#s+^Yk2RQGIldB]?Og6@1Ao2O:T=A-bW-o_'E#AXcQ2/?eP-"d*I`fB?oRo+C]SGRf;jCUqU6;] E<#7[X9E!h%s@g7a$63E.F>$mchVLirhCq$UCh/QKg&7U!LNi^_fo5_aisd+rSQ.T%XtAPopkpJ-ND'[ LJqU9Hl("V1TS;Ss+9iDNV[#RJ*mK=5<).eK)Xe]3WE[9^Ds*27pibNT^V4Ak9MHAVu5H%&s,&%R+)(Q kO3L-B_)&!9Rh9paNoA(`D[?DiIC5ZErLD(1r%i)B5IQna5/QAnag+_ruD&_`rFo)TD*>?EA%#4o5Eas r#XC\U\_`P"PCXW'<`D#qTnc*R!`WJ`O(&ke,jfG+*S$5#%(HJ<[.P7qIdPBQ1)J#qS/p&':f)CqCg!@ mXK6Sq9GJEK)'&#ngga?b`a]hs0&Aq;)MSm"MD;=dX]Lp&D^As488WkP9mQb5Ve0^Kge$8OjmOr_LTgq(L!"=kU?sZ2aFFU\O?Cj8/\? R6T"K!CQa3$_S)ZeGi)urg3E/D8DV7*tmP.o:*jO(]VaD7VaQh25UB-s#'S`nYaugSH&@deGkM#TV_j3 K#;LmrR73Lj[!J8U]ZS:#D?W `?ujZb^Y!=Pj:Q3l&YjPrSO/1`8?'S\Dsg"AUX]TAH(%@s5hg]=StnSU\,]brufB9)lHoGr; grestore gsave /DeviceRGB setcolorspace [ -75.0000 0.00000 0.00000 -300.000 525.000 300.000 ] concat << /ImageType 1 /Width 256 /Height 256 /BitsPerComponent 8 /Decode [0 1 0 1 0 1] /ImageMatrix [256 0 0 256 0 0] /DataSource currentfile /ASCII85Decode filter /FlateDecode filter >> image Gb"/,4c:=PZL&b*OE#QI[>Z75).H]8#T8V86O[I\@1=C"&47BI0ugN?&Bcp`%iN8?L)=GX9,h?&+et#T AB7k?`Y^J&TjRA*DGEVj7RT^WAS$;F>N_(^rD>L(ldj1AOcbc'-RSlozzzzzzzz!#uqqDuP`JZIf6XUT D"Vs!VY8i'5AQ$i#dgjt\7_^\SV(36lf>OoJ(aI2pjaFF(b+r*R<"JE(C*Ap9W*s0j]ci&KWA+oc*N?c )PfisLk0YLE)m$"!jr.m0\X"oiR)qP3lPDiAQS"l0d+Ii OO?W&oT6QH&s0gB.FS,/:T^diSTu9(^P]n/jVFjH(J[%id)\oj@?C\_@Jl23Ge+kWa$fnG*Ul#<6T\r. k4]*'H(U5N"cQ(]V&=kGHJZM@T9!rdb#6%_g`p0.O`mqX:taiut9!W@>XbrD)?JkUj8o;3lg]Zp7s$6UF(q$a)Pl4EB+/]!HMEglc9[I#rZdj3U3>CNR`8\NCJ* ?p;U(M7u"o;7dZCgseV'4ae#QKhn_tDnGns=:mT=FkBkl5X4T`0"b5BW"c=#7fBG>h6c]XM^Qr'/R.25 &T!;`nf^F(DU6eIM4Ajacs['S#=2+>C`LA.CXq)=K0Z34Cug+8c@#7=2$+P4d]HJ*9,40i4S\W;i9O5P PbZ./k$pN#&AlW<3&$!Q164GRa\^T1AD2]_4S^+7Q!"g"/Y!rBDE`jH1KcVuN`&eb3a.)<>:^pG`m?f) CI('77%i-bl6HRE `97-PgCq_uJ3O$dY%a?>"#WnE%qC#+]T0='Ta$@](\)dq@nEdNE'Ps8:huC,+fL$C/tF;J5jKai>O1D> >qk7@_=Kqp,4UoRG-ZIt?O"$DoJqcIMloQm\er1L/F?OY`6_hc0TRd9."PImuC)m(bh;Zbg%8:7WrULs 3jTgiA\)@_/.+02TJ2H3*lGA[>Ek^.@sDd#PaLBq@OOq&_.$kBuDZs!N=GCI<8^k<%XLnR%e.]MA^jYH OF`T:p(obc/YO#\@)Za3+?F.HN!_jNUZ.cTPpr]&o4)h6k3b]p;(]RLf@h(n'gU9[bC[,XopBAimCfWD "7h[r0_oB(HCcs(=g^b>IGY+?guEk-El'/!OpIPlRU8j*uk?6iRsYr.j9f;Tc?V]r"'dSXR`TZ(gbq=9 &/HeJ/,`%iDHBj#oo=%E%M"hY>]&63!:+@U5u^OsAL^D#@@.l($1Om/L63H:cS1cYa0]s&'QJ)TiUoLA i8753GMdAGe*]\YAUY,c*<`s$K2*rmsbj>Y>fiRof?uT`<2$088q=BhIF#XI`l?^/b>6[6aiU68+&O%n 0^JVL2BXA#$mO0V0bWfP/5bD=BbL]Hs8es"cCDj=TWEao2r.jX YDW\C]$`>/n>65*l#\Ju^sJ6N?5#&0h.uS3:5Yk?(u_DIg$MVQuG.2P[GFDcZ(gJX>]@C@-MQeTre1od iubVW/ch[Bu7tqD+Q9_(($FrEfhVWDKH'F?&isNISXOp!>hLJ*4Ptb(0I5,/2h0Dc 7S"2bO(N/XlJareKOBjo;C+pJ'>L<8TInDqU9Q&BYTD&^^Q15[\p]HoQkta_u>'D:Jp^hm+D5b=^5.65 O@KD? 'O`(=Q,u@3UP(sb[(;JT,/dJ\q j[S@_OaLM#"Ui"PMt55j/9]GSJMj^M3`JZM@PqJl(=]qF21qA+RUnhtdeTs)T@-D,9oKIhm6Za*ZN)DT Vp3O[&d5/FE\Xpi5q5Nrm2nkD%>VB(0m?V]O74hI4,N\hAa.kC*KI"8Y5FmVMk;AH.UN?[%(AD+EOX:Z qj`r:ponPFDNcB_fDU^?#;h\U`mVD=I>sJ#S/&PQ))SRM((@pK><31F3+i\a5gH&*!Uk)*bt@EpS9Gr: dlI'P[ScgI5F4&_P)%T>:7:o.O)[GSftDQqor"1Zs'.d/Rh,1prHo,/;HR=9#,s-T)%6?,5rZ$5X6ks1 >^$OP<8YIM)0G'Bh20K\l)h@/a0\"g2&";u+f6L$>3;m/IAWN_N5sl2m#Us,WrT1^!sDToJoK&B[k2ZA>IkE68T>l7#,\5N8)d/G_W3<]:&'g_PMs/,a)c@6#tA,jjso3]?6o__d:6! qS#5G\+ep=G3^nn6!h_9_X"d&I'#ppm]A^k]?+Hsf07p4/h9j+3R>b(H)Z_XmB?m/g(Zs501Fo.KNr)? jU1s/E7&GKg(?I%`"[^YXA8AeWktSG_hX0tVsDI`''BS9Q0,rf;_er-)Z4J&&Y2=bcos(MIUab7Fs-Il %(TgHVPA`+'k0&L:nZ+,0KF/oYNI!R:WpB)Ikl$g"9mOSKseiILr@$jbr2jOa!1Y5aOrP@%bu5I6kE_Z &`i?fD%<`fjcp!aB7Ejbj*#pEK6:oRci7?GOKdg--R,T4b59gukFk70iAaE7oqHjiqm0W^j91&[O'Hgrg.K,<>!G;7jjT 9i_k.d_l@f:Mk_LBQ<,aNu&rmCWS"$sg'(]==0\fCjTeIW:P%GrQGmWbK,oY2/4q0hfuYk6gXs%7qE)9 1!J@fFQA5CZ>Ys4ZUR:>fno,lXuNjc@J)c[S[Ls'9I=F8NuoJ)1Q&dU)-e'a3Wr0(>2q(\$%+KDrpNmt F$j`F!E[.mkG(r9%,6s'k-&_$\!ouIj0A0`K 0@&\j-gV)?Qoh0_BiS6;(4r%q#5YrmMDi#bSDP[/U)uk.crHj(s:oqnMq&=6I`pCFfCDN;q6@6Ms4B_q t!7?eIZ`r:csAJVa=N%0<^5LGtTYs'6uN>5qO;%mBkU`Y:ZH!FkX.oD]BtN?Ni@L$.t:K)[+q>lSLD#a %>['F9:4qL\;l5WBO73+uBs5`05TKe8l$qk3@'T\MFb +`79?_d?p/cG86h_5/-VOL*%KXrVJZTC@J&`1OY5e55q9;ceP@+3:eG>Mjrt5)\i]jjLhmrb[KKX#/?P l"1B,+NrtP"LgA./fIl $lEFoc<`J#iK3SGBGikM]Y-q$aRTL&c)j8,c:J"V<:_:&^#J%/h:)<6ftkIVo!Z3Fc?Fe"6L;_Z05GG( JMgJ"E_9B0QMIAcM4d,?/I[pt;2>dh(Gm4iH>%q*-n,q><1Js0[R]f`+=-b5!-t^S*\/e,CG!$)!@Z5M ,m1`BTIakG=ID7r/4a/l9:XlOC1M=T$Jeim78s4tC(L?k3:8#pdT!.j>&k5Hp]ss$1qIH.2c?qd78W80 ._K0)kj3pAapb^I/?tnGhf;^TX@a&?Z!'aA8r<_>2t@!SfC/9$MiM>0_U\q>JOK5aOs#XfiX7`ZGM"NE=#\@h$s7'Y?r6.)$n5ot]"_.#FM>u'`^Y&R\j53%(^#2h*!g 37V(T=(Jd/W(le8ESd$Lf3(a1pjj0YQJ45;0+_?a&*M5e''4/c2/@Ia-dm_1+WDeO '?"Iji4,,Q'bng=_QPkWap=A,eXO2uWcHr9""QcMTm@s5W:W9e?JRs3K"Hrq"ku"h;4af>%;e!oX'-^' (O8^o@*)XoFphd/PE]hph[QZ/nbmDu:PY^f']pSbjLMQ2oA/YGBhr,(EM\58S)70:rE$q=!&WnW,[0?A Um*HQ;p<%fs='R_OWJ5?EaB@dtu1s%c@?LHe<(Itk=On,KXEJ+EUqnf+'J:K?u3cMd4crX i!=VZ5+M!h_/R^'fPp+VL9Z^83,`]`j?*!OVkq`;c&"Du)[[-bn%.)>Sap#=%ga[ikYonji#\Qj#HT5h l=QrgWLdmJIPK+?g-OrQe(7aYnW3'_+D8n^km4pq`Es3_R7gSGst@s+`K):@%qUQ![Gg#I46Rofn`A+Z o_Ghp)(kI.F>8^gd>qbnOR+VSKgr*/[\17>kM]rla^/\#o!)qu8^;Jr#s^;>^MPJRn\JepkVf/qO&i&F f/#QKQ`(s3:ICHN%]W5c:#gBDt[Ir0GM*^Pf^S(&TNl?"G0Eup&#3_bCF#cIIF,s*;cIs',GOph"TRq:E"RgKD>DHjMc^s-I>Hh- >c_s5=Ear@`QQY?:hT.A1hQ"#ke$=!0N,!#?oCcMoO5IruORLVO]r&p?1l?QZi@d`EuRD`>4!>H/n#$)]o%K0TQ1ok5XPKro$7mI6U&i0p`%L#1\n@PIR :_UN2Hm[:ITXGn,G/,5GXTqc,F%&$=N<%[GjE7p.qUd8+6KSA\SC6"@'9m:YYp@50a4uMZ;;o^XNG,0R F)Ps10>h:SiRW?I244/ATbbs5eGerl<.\YN,XWqd2F7eE3t'p&90?rlb7)H3os7IWO(ia!:Tjm/I[e*u=Ku%. M6nH[5=GSc\]_5G+dY5krJ$C&ar7s1Ls>r\B[%o?G&$CYu\ca'Sc\p:p>$O%oTekl5.3OlT58 +"#ri>Ts8[ITtKZjsWrBCbZV-e]JW."]4aFEUd!CHMY/HD@&kP"r$p&>9sVmut#q#B#6E4#5g=oW?aRJ s`^s//7tn6>&g!:Be$r&=SHf)A/hao/uR&5Wr?nV/E@9>l=Kq4Gq1?ZS@Bkl::J'L8QIrnkhIpuKHpT7 $[0]DcB^s-jMuT_UYKZ`sI./tceji/nO\p5:3s0)kH+$g@Uqcn:uMr$OFm?ZZV\s8gs1`.6IjFR!Ng>4YB79jY5P)aQJ(+3hFSpcTs4MFA5(0F&IqQ0*IlrW=C]GtcDD1>)WB8Ee%m=^$%Or?so7KelIK/`beuRE`>c?7;p1eY7K0).eYnI$05N 3>!^UD@e/Qr'//cjF=Cmr;Iutn#ialZL@V1pq II?5O%&/qY%X4rYMrDb&*0Ws84D@]!%7#')S^ket`9-V.Ho C0V3WJJ_>K,@@\]:3I$dMlts4=.JqJr==iT)*%ruiK+Y6t1<3-tPLVkrO*IVf7\Wn:kiW[bXWnaZYCrB L;W]nhgH0>@r"'b7n$eA(kZ^%4/JhU+/^Q2]rgV6[7*L&],?]WA,akBAg/s'IQk%JKf=`42?cR/2KMD< plForY7Gq)PQ<3;t#5rekNL=V:YPYASg-^\[H.tICX`=G(7Hk:JeH4E#s8/hotT,'U7b=C%fQE':O\V;>%)EepReko Z>mUDKR;Pe$TO'XN:?.'o.-mKP/tOm,*Q&Jq0fohg0UrXOYX7H&Jb8)4QQ'^.d(Tp5'oGBb5C;HIfKHKzzz!!%c6rrIj(\%;~> grestore gsave /DeviceRGB setcolorspace [ 256.000 0.00000 0.00000 256.000 0.00000 300.000 ] concat << /ImageType 1 /Width 256 /Height 256 /BitsPerComponent 8 /Decode [0 1 0 1 0 1] /ImageMatrix [256 0 0 256 0 0] /DataSource currentfile /ASCII85Decode filter /FlateDecode filter >> image Gb"/,4c::_ZJ?VoBVTf7CDgV!A;FZR6-*_-)e'XO$u6,'L)AWhLbY2aL02SH*\rI]$o,h:Q8Y1#L5\%E BHAq[O>2KKBBYE+bH3iD*B,0[jNYo<+-h-0OHe6t=o!'sgph>K,5;-7LHPV;zzzzzzzz!6`6GRstLTC] XM;CBjPEX;Tq\Y\&Fc^mZu)s1e=^CpBOO4!FXeE;A.hF6crE#lL=4*Pcj+>LOS3jStP`!jJ55l]?TQrm 0Oe@(X:Xq9SU,5DNHom0^>%ItI^Q/q.U8o1S:3[]A2P&,:7:rf8N-i;\t5\_>;0f=#`OcMub\^CYnYs&)^N[P i]F#9hdHr;X;Nht%*Q(P_qcmlU@:GQ.>Sr!3)5D"Q5,mdR.Jd=80nfG&5G_9b+a(&rjaY5t0r24[5HF, k(23c*,e<":nf:%=#mr:"nq]45>J*"k57is4_\J%6U ,e5J+bT-F*>ik-@X1g@,];":CPt1r2]V35)Pml82ksOrm)$?f(/S(InVGKr(l8ooKT<10 [/:`?kDts)I[\c2N1t_.aTW?](C]pOC0;3Mi8)7njaZ6V78Gjc:=>a+=4c#Y0IELRA*tMu7[3B/)kdSp Z;d/lF6tO4+pL)O^ZQIk@.d%d8g]WsA%5H_8dYLF<+[h8D=Gq9]-R@*2ZFWpT^,Hn52SrBp4VKD=cic0 Wd'D4o*5Nc,1j'4BqlT9Sng>NF%.YYQi`h"o+hY19qN/\RB:pmM`l*uUL*kY0SV7jLOK5j!@WJ5S=Cls .,%8t!pCNqgqRaHr[A&OCe5m*'%UD-&-65"-*G\iKe=PSs<^6f^HG8!HoSFg.;ERdV6,RkPV"rlaSVgK Rqpd/SXq\hr2`1s_lqEQ35%MqmL$JGsb>5l-BB7<5%GGBWrn[WG:/5O-!qLfVq\gp7qdr',Bt@1DEFbL $9a_l#V2)NFdQNa0s,n'f]&rr4^IKDq3PI9]AZ4.fj4l[o,^#H\][f;13ms),mAm),/N!Tup!VK$-QJYZ.P/bs!lhm4WoJ&03iIZ8e4"U7e)i@6N:\MJK@+nUUAY;r'TR-;+5rIgMM`FO+ ss_;sJ%5,?,/aAY0`^rlnpW+T;Je%>'I+e/8#m*"2=)A=\caf(nZ_eb];2,<-3,]o!O#%ibuRe?#JHr< J>a6\ta`q@=PP\53]X=N#]>fjY6Wha@Ep,=,pr;Hps:#Nc5gQE@7`n"Kcsr:!kN2@Ll1Hg![J1ON5G&1 #!mr>bGOQk-\LIi9Hfn,+0b5JZ=sRBth^U`iX;8aW-lo`9g\@BW-]cJ'rH7[h/IUeB1#fgis& >pV?RbgB)OgINreKmLk5XblpD(+oe[LM5>INW8!Z!IZ5lZlHJaJ$X@2m#(Djl4MC4uA#fatB!W%9-[5k T\q+$PI^M90[8>5#k\^cCkFrtl1GnXg[C\2U5Z"?i0$T([Y_WZ eHoCdD1>X!ZrkL6-*Qo/?g9s*X=\k19qcpmh@Mr1>%'Bs1#-dXTMkmJlNfSN"C@ISTd)$!a#`#[@-ZB1 %4L56m]qrdK$`4itDRs1j";!UU&]a$ThCIkLWW_j6FW4$k4l,l?g'Roa/;*[,@g_"kO*.G'jA.]RD*Th-N>6t+%rWr5Es!_o*o8b$kB8lcB"J4+t_#9m5!a>Nt&FbmPs1 YT1Ipg"Os%\8ukd,GWI/UfZ6\*;YMF\K!k@pOli]gosd%8Fp8cBk3:R(Gq>Th)eGJsMh"Td'Ohq!^uHm 5eQj$/+d.HXte'6k>bT9rCr_Oa[h&a96SW(sa`I3QGPIolY]r$O?)e0\SA5=Gj6SGul3%M\WaMdODMdf m=A*MIZ^"Qj(C-?*7ST5\#h_YDF\rr37s^nrGCRD@iBro<3,%0;%UkA:,:L&_taJ"_Le3rZHqikLJZ+L i5`Sc98U\R\&-(Ooipf8BU;onQ,o+mAsQQP7%1^jji51$?<'s)Iu"p\D#NIsV)EUS':#r#aAb?2`*-3: ge'XPi8d'PQ!Gmeg?NgAdKg&>]>knR!p&(0Bs-(C^=8;gAXl,90s7uRo`.,5cjHiPJbC $!gn_a6`6N;`S]K]L!'7]9H&HDPk0S8.Js+e+;T`"PP'g-"RE7WS>Y@V)3s#^nn9I7HArr:89!So("s' PmRqnWC:'_@Of5LKI_;LXWl*u=eSZ3Y?/ao#?BIm(2k5MZ:j6\$'S2hqCVq7djMpu7VX"Xd<8 o"p+375FJ1:J;r%eZ\h)#QAKV:m:k^V9L^W2T=:C7!O;h1)?V"?m?"do*MOR/`?KMtPsJ9DbDJOB ;Q2s$uZF$j6n:?h")rRsG@M;+!V$8e8rqn)$s(e7Ag4 ?GQOnc\oPs6IB4T@:0s*(a>ci"qmr4*ONUqP.T;Q!gjT1n0=#nug[ItRa@ipW^/kf$nEr[UniGlHl,q> Xpd]2c\>CAUI/!R1/=[dQPkoAKfCs.p$$qL9G[!Q+OtD$;"k'*p#ci"5o+K)B%Mr/[`U;ZE<`YF,Ga94 23D/5c?IM)To#RH)Zq*/'_Io,`Da8'^I@!)>`?iOkGq0cc7^QJ+0Ca%k(<$)U4rs-^H1$64mPRBnW+(tq1s5 3j0\bP&piii#>Q2JuaraSV&`"4&K?Wd5]aDVIf]G@+%57%7PpiHD3+Wt=pKM`itI]rtjs7o:^5NM`qmD moaioDaV&V0is3FUnEkTM)1s)@LPi]hni;n'FqVZ:`96_saA-,=!g2_or1rCb@^M>#PEr^68i^dh&tb7 4R"s.3jB`;cDTr`oK<@H9@;!D\(as&&)h1B0l.^W?H)rdSGVQUlJMcG+=IaSuQNP5W;lJae/,iXdN!s3 N1`Yr7/o6Oj.Ds8HYHqEK?50^$3KC>,.%rhf[eVu;*$s3j[@hm*jp4rgO!kO1bD1pV^Z'R48%IU:e!T? -j.T]2Rcfatqni)A#H!:c]\Vb6lj#[a!t&H=`hREU0Mo05\CZOVG]p"rGlZU7"3mGFr=%qg>2s*8_*,+ h0pfashTs![lgVZ7nDWl\UEMP:&]q+o/:SKG]d1BC6tMZ8V0cVln.HC+YWY4A4`'VL]j^LMgk;$-6n3s DK)^e]<5`BT60En^-\DbC%&%0>tu9CY6&ImnM6VW0n\&jVr]J$/gDb($)ZcRZ'rO!k%e+])MCop5DrJN(TeG9.,ipREBplAe^,uWYhr*S(R^5bl0>6 !]PT3D7^n@r92\7>NGRf@i@K)^/fqh^_+OWa`$hin)Wo-aS<@6G/-k9p$hVp+P[jSqt8s(_MuDdr['4$ jh(mm"ODPFm+D!7-?A.hIVG:B%0bq*k7?c@>_!=i&/2"XD5;0+tYLdS7+@;`fQN'`2^Lm%ti4kl]l61]L5G8$t7/Wt/Guiu:qG6,>q#:j"c1jLN^K LTnf`-`tJ,K;TWJ(Gi\SBCl]qTm7orLX2l:&Y)=pA>4%kMIZg9B CX]ej&:J!MoU"8[h3#rhT+7/l_d&T*9oDn("!(8">(4`1OY)NrR"P!,_l:T-O:655_=_:Oj8`;C,^3rr 4tF!\+(,aKPJjMYPLjQ2g4#Ir,k8T2>R\jq%URotQj9s/3uBd!sLJdSjNc!_SRsqEI"?q>=1M\`h%a9?d-JrmJNIQcYq213U)%O5:Jf5s& 1c^R*LcMs$XnWS1]V0s4]pI8Bu^-/V)OS8*'^*Xab1ur;V28s)Z)4J3*]*okfm-kk-Ums4m8HI_>FpL4 JP7+0tYPc[QT[J4T^ddeV4Gs#D;&e)rh(nK6NWVt`J$^JXoUWg\Dqf"Z##7q=oQnP=34J5!b+(Bu0P,`9@NV'TMT!lfuqWdbWVs5 a3Ln^#4s0D'`\rpSn.B:ef4`*['SB`/aR!655Ls6o9g3WIXG*t\S6UB&pGSE?HFq!4'`s5AmN:B/49C\ $dB!>c(An)=<@jo=f>:KmQ?jaS-Es'5S&r?&?BTD[7+s2cY'C'lNW^[@s!4#R9!`U6RX!\R[S$M.Wms' O<^0Dtj>3"$o?r^?PmbQX1*Dd*1's#C>`f0d>3JH#:-gO"d_7roknRW*hfq"n'!k5-7F'F6nueb-\VQtL47Ij 7$^>t+QR7f6UE!Mn`TNYb[[#pTAts+Kj]ae(]ea"75Ooe/W,cP$0u&hcJ76U4TKq[8\hE0gX;F7l0EJ" H3.s'#FE^"qHYs-iq:4U_%B0*17fIqe&3m=biEmsi2Rs2)s.`VQcU!NhP-\-qB1!m,]kY],/8s*q6!'rIsr.3:FZKXf"X0j!.+X6HN35&QN *Un?;g;8T)VC]cNO^UYl5/o.0#(b^O-@_g<+eair@d@b!%oNIh@JL0X22U[".c"J(+?\Ac:Y7o)8$Vr; UI/f?o)qr)OWKOT&TiD'(1tg$8TUkC9@r5D8r$s%D=BS,^fi!42KA!h.:3fB^1^!^jI\"R(>IlG*Ai4.cK4o`*P=s/,h"K0QC2l[)q;0% PMtr'rC@o>tprqX8Caho#I9!+3[(:sAnL3Vf;TrngiZbC;3PJWZm\Hm.AH-/S[m.MdMO$YBdn2g,&]D' B-Ef)Gu>!bCsgo_a3UTFVG,56Uc@ml,OkO.HFJrBHpP]0Q/9s/GupYQ%oSMSIBtcb0&)HL3eTr7L>M_Z /6Xs.RQLL].g=;_&[0,_&Sh2t77Mk:6KlQ2bd:!a*BjG#gZ2pA]:8:VQTmoe3'+pKEg^S&$1f#T2MT62 u]B%g9/ucfY'W^]*&grtWX?M>)K;oe3-@])G@C5C]s7?a9UVilti0r1CU?0=1XhS7dNMcNkle:jG?es. ;p_Dliuhnc)SgJ)UEpotS'G]'0/=8g(0\af\2s" mAV7/WZ/"@n`lcMDIechPfiqEH;FPM[:F!3#lunDB1S>4mr0AGpEr"]V9_]]IDq')A/3s(A\;CT8``r? !-2!pGm1s#^/iTAIQePOH8-f>$\MIl$")1gg!,(B/e5"B:?^4S+-ZI^'$k`IHTS!WAVt3Wt\ps5^?X7C Rg:hgaUts,3ejjX^GR&cgJ^s,+MiOi78H=ot:eq#Qrm(W@lX-XjcftARk4a@nboc`\nEgDFJjo.C]/YZ>?_tQoAO0+@Ws.G]cN fHK0-^D;4273Rs2=fLSr"4b6N;8P(Lm5Z^&0^5"XNR:E;(.+))=DVqEI>pG9FYg"f.(6c2"R'!f?pVWV ,0DrP)5/Ih_pfhZ%`;r1D)LV@VnjS<<(6Ur5L"s76,d3r^Q=IM^')6iOjRs,]hqKE!b'Xigk>s!Wuo!h J$EdsV1^RK'%QIhDLMr#a>d+Y\E:)q>^[ru<9]rm,3TMp?f.f71\nMn8:9*s.$1,i8Pbq5riekl1_2<< "J,+*IL:lT\B;?41!ScV6N;Ufi&mn48/_>T?m)i9s&:?PrX@N:P=B!tXF>hk`?Q&GjSc *W.hY8Ub0L&r.rkJ7tkC@FLh`4jjX3(126b3&ITSX@3)ZYI&V-rmM-3EV.:ae *VtD/[;d=HEIE0I5g1&&`ttg^7A"c8F`(YerX\jT!s+he,J)0lk@mPQ+"S"oM/)nbSkR9?mM7UNQ?46' LPPW,BAa4T6utroWrr[&Vg@W.kKZ`?V+Q0_^T>+A(Dfr;b5Zid?s/W!2#H SS3NW2\$@t?W_7;iFXIfL=:s7$&>J^?^V$-UftE&Y",caH'2s1e[i>Q91d_#FZ9?uc>C`92/.+`ND(r: Cf&s0)Qt""#C7J,KUQLe@)].c/&7+':4QlGZ9haU)3Qs5srX_fh[qB3Fdms++[rE0IoU#n6dQekuG*R( j(.#64`(zzz!2)RU+.N^k$3~> grestore gsave /DeviceRGB setcolorspace [ 75.0000 0.00000 0.00000 150.000 225.000 450.000 ] concat << /ImageType 1 /Width 256 /Height 256 /BitsPerComponent 8 /Decode [0 1 0 1 0 1] /ImageMatrix [256 0 0 256 0 0] /DataSource currentfile /ASCII85Decode filter /FlateDecode filter >> image Gb"/,4c::_ZJ?VoBVTf7CDgV!A;FZR6-*_-)e'XO$u6,'L)AWhLbY2aL02SH*\rI]$o,h:Q8Y1#L5\%E BHAq[O>2KKBBYE+bH3iD*B,0[jNYo<+-h-0OHe6t=o!'sgph>K,5;-7LHPV;zzzzzzzz!6`6GRstLTC] XM;CBjPEX;Tq\Y\&Fc^mZu)s1e=^CpBOO4!FXeE;A.hF6crE#lL=4*Pcj+>LOS3jStP`!jJ55l]?TQrm 0Oe@(X:Xq9SU,5DNHom0^>%ItI^Q/q.U8o1S:3[]A2P&,:7:rf8N-i;\t5\_>;0f=#`OcMub\^CYnYs&)^N[P i]F#9hdHr;X;Nht%*Q(P_qcmlU@:GQ.>Sr!3)5D"Q5,mdR.Jd=80nfG&5G_9b+a(&rjaY5t0r24[5HF, k(23c*,e<":nf:%=#mr:"nq]45>J*"k57is4_\J%6U ,e5J+bT-F*>ik-@X1g@,];":CPt1r2]V35)Pml82ksOrm)$?f(/S(InVGKr(l8ooKT<10 [/:`?kDts)I[\c2N1t_.aTW?](C]pOC0;3Mi8)7njaZ6V78Gjc:=>a+=4c#Y0IELRA*tMu7[3B/)kdSp Z;d/lF6tO4+pL)O^ZQIk@.d%d8g]WsA%5H_8dYLF<+[h8D=Gq9]-R@*2ZFWpT^,Hn52SrBp4VKD=cic0 Wd'D4o*5Nc,1j'4BqlT9Sng>NF%.YYQi`h"o+hY19qN/\RB:pmM`l*uUL*kY0SV7jLOK5j!@WJ5S=Cls .,%8t!pCNqgqRaHr[A&OCe5m*'%UD-&-65"-*G\iKe=PSs<^6f^HG8!HoSFg.;ERdV6,RkPV"rlaSVgK Rqpd/SXq\hr2`1s_lqEQ35%MqmL$JGsb>5l-BB7<5%GGBWrn[WG:/5O-!qLfVq\gp7qdr',Bt@1DEFbL $9a_l#V2)NFdQNa0s,n'f]&rr4^IKDq3PI9]AZ4.fj4l[o,^#H\][f;13ms),mAm),/N!Tup!VK$-QJYZ.P/bs!lhm4WoJ&03iIZ8e4"U7e)i@6N:\MJK@+nUUAY;r'TR-;+5rIgMM`FO+ ss_;sJ%5,?,/aAY0`^rlnpW+T;Je%>'I+e/8#m*"2=)A=\caf(nZ_eb];2,<-3,]o!O#%ibuRe?#JHr< J>a6\ta`q@=PP\53]X=N#]>fjY6Wha@Ep,=,pr;Hps:#Nc5gQE@7`n"Kcsr:!kN2@Ll1Hg![J1ON5G&1 #!mr>bGOQk-\LIi9Hfn,+0b5JZ=sRBth^U`iX;8aW-lo`9g\@BW-]cJ'rH7[h/IUeB1#fgis& >pV?RbgB)OgINreKmLk5XblpD(+oe[LM5>INW8!Z!IZ5lZlHJaJ$X@2m#(Djl4MC4uA#fatB!W%9-[5k T\q+$PI^M90[8>5#k\^cCkFrtl1GnXg[C\2U5Z"?i0$T([Y_WZ eHoCdD1>X!ZrkL6-*Qo/?g9s*X=\k19qcpmh@Mr1>%'Bs1#-dXTMkmJlNfSN"C@ISTd)$!a#`#[@-ZB1 %4L56m]qrdK$`4itDRs1j";!UU&]a$ThCIkLWW_j6FW4$k4l,l?g'Roa/;*[,@g_"kO*.G'jA.]RD*Th-N>6t+%rWr5Es!_o*o8b$kB8lcB"J4+t_#9m5!a>Nt&FbmPs1 YT1Ipg"Os%\8ukd,GWI/UfZ6\*;YMF\K!k@pOli]gosd%8Fp8cBk3:R(Gq>Th)eGJsMh"Td'Ohq!^uHm 5eQj$/+d.HXte'6k>bT9rCr_Oa[h&a96SW(sa`I3QGPIolY]r$O?)e0\SA5=Gj6SGul3%M\WaMdODMdf m=A*MIZ^"Qj(C-?*7ST5\#h_YDF\rr37s^nrGCRD@iBro<3,%0;%UkA:,:L&_taJ"_Le3rZHqikLJZ+L i5`Sc98U\R\&-(Ooipf8BU;onQ,o+mAsQQP7%1^jji51$?<'s)Iu"p\D#NIsV)EUS':#r#aAb?2`*-3: ge'XPi8d'PQ!Gmeg?NgAdKg&>]>knR!p&(0Bs-(C^=8;gAXl,90s7uRo`.,5cjHiPJbC $!gn_a6`6N;`S]K]L!'7]9H&HDPk0S8.Js+e+;T`"PP'g-"RE7WS>Y@V)3s#^nn9I7HArr:89!So("s' PmRqnWC:'_@Of5LKI_;LXWl*u=eSZ3Y?/ao#?BIm(2k5MZ:j6\$'S2hqCVq7djMpu7VX"Xd<8 o"p+375FJ1:J;r%eZ\h)#QAKV:m:k^V9L^W2T=:C7!O;h1)?V"?m?"do*MOR/`?KMtPsJ9DbDJOB ;Q2s$uZF$j6n:?h")rRsG@M;+!V$8e8rqn)$s(e7Ag4 ?GQOnc\oPs6IB4T@:0s*(a>ci"qmr4*ONUqP.T;Q!gjT1n0=#nug[ItRa@ipW^/kf$nEr[UniGlHl,q> Xpd]2c\>CAUI/!R1/=[dQPkoAKfCs.p$$qL9G[!Q+OtD$;"k'*p#ci"5o+K)B%Mr/[`U;ZE<`YF,Ga94 23D/5c?IM)To#RH)Zq*/'_Io,`Da8'^I@!)>`?iOkGq0cc7^QJ+0Ca%k(<$)U4rs-^H1$64mPRBnW+(tq1s5 3j0\bP&piii#>Q2JuaraSV&`"4&K?Wd5]aDVIf]G@+%57%7PpiHD3+Wt=pKM`itI]rtjs7o:^5NM`qmD moaioDaV&V0is3FUnEkTM)1s)@LPi]hni;n'FqVZ:`96_saA-,=!g2_or1rCb@^M>#PEr^68i^dh&tb7 4R"s.3jB`;cDTr`oK<@H9@;!D\(as&&)h1B0l.^W?H)rdSGVQUlJMcG+=IaSuQNP5W;lJae/,iXdN!s3 N1`Yr7/o6Oj.Ds8HYHqEK?50^$3KC>,.%rhf[eVu;*$s3j[@hm*jp4rgO!kO1bD1pV^Z'R48%IU:e!T? -j.T]2Rcfatqni)A#H!:c]\Vb6lj#[a!t&H=`hREU0Mo05\CZOVG]p"rGlZU7"3mGFr=%qg>2s*8_*,+ h0pfashTs![lgVZ7nDWl\UEMP:&]q+o/:SKG]d1BC6tMZ8V0cVln.HC+YWY4A4`'VL]j^LMgk;$-6n3s DK)^e]<5`BT60En^-\DbC%&%0>tu9CY6&ImnM6VW0n\&jVr]J$/gDb($)ZcRZ'rO!k%e+])MCop5DrJN(TeG9.,ipREBplAe^,uWYhr*S(R^5bl0>6 !]PT3D7^n@r92\7>NGRf@i@K)^/fqh^_+OWa`$hin)Wo-aS<@6G/-k9p$hVp+P[jSqt8s(_MuDdr['4$ jh(mm"ODPFm+D!7-?A.hIVG:B%0bq*k7?c@>_!=i&/2"XD5;0+tYLdS7+@;`fQN'`2^Lm%ti4kl]l61]L5G8$t7/Wt/Guiu:qG6,>q#:j"c1jLN^K LTnf`-`tJ,K;TWJ(Gi\SBCl]qTm7orLX2l:&Y)=pA>4%kMIZg9B CX]ej&:J!MoU"8[h3#rhT+7/l_d&T*9oDn("!(8">(4`1OY)NrR"P!,_l:T-O:655_=_:Oj8`;C,^3rr 4tF!\+(,aKPJjMYPLjQ2g4#Ir,k8T2>R\jq%URotQj9s/3uBd!sLJdSjNc!_SRsqEI"?q>=1M\`h%a9?d-JrmJNIQcYq213U)%O5:Jf5s& 1c^R*LcMs$XnWS1]V0s4]pI8Bu^-/V)OS8*'^*Xab1ur;V28s)Z)4J3*]*okfm-kk-Ums4m8HI_>FpL4 JP7+0tYPc[QT[J4T^ddeV4Gs#D;&e)rh(nK6NWVt`J$^JXoUWg\Dqf"Z##7q=oQnP=34J5!b+(Bu0P,`9@NV'TMT!lfuqWdbWVs5 a3Ln^#4s0D'`\rpSn.B:ef4`*['SB`/aR!655Ls6o9g3WIXG*t\S6UB&pGSE?HFq!4'`s5AmN:B/49C\ $dB!>c(An)=<@jo=f>:KmQ?jaS-Es'5S&r?&?BTD[7+s2cY'C'lNW^[@s!4#R9!`U6RX!\R[S$M.Wms' O<^0Dtj>3"$o?r^?PmbQX1*Dd*1's#C>`f0d>3JH#:-gO"d_7roknRW*hfq"n'!k5-7F'F6nueb-\VQtL47Ij 7$^>t+QR7f6UE!Mn`TNYb[[#pTAts+Kj]ae(]ea"75Ooe/W,cP$0u&hcJ76U4TKq[8\hE0gX;F7l0EJ" H3.s'#FE^"qHYs-iq:4U_%B0*17fIqe&3m=biEmsi2Rs2)s.`VQcU!NhP-\-qB1!m,]kY],/8s*q6!'rIsr.3:FZKXf"X0j!.+X6HN35&QN *Un?;g;8T)VC]cNO^UYl5/o.0#(b^O-@_g<+eair@d@b!%oNIh@JL0X22U[".c"J(+?\Ac:Y7o)8$Vr; UI/f?o)qr)OWKOT&TiD'(1tg$8TUkC9@r5D8r$s%D=BS,^fi!42KA!h.:3fB^1^!^jI\"R(>IlG*Ai4.cK4o`*P=s/,h"K0QC2l[)q;0% PMtr'rC@o>tprqX8Caho#I9!+3[(:sAnL3Vf;TrngiZbC;3PJWZm\Hm.AH-/S[m.MdMO$YBdn2g,&]D' B-Ef)Gu>!bCsgo_a3UTFVG,56Uc@ml,OkO.HFJrBHpP]0Q/9s/GupYQ%oSMSIBtcb0&)HL3eTr7L>M_Z /6Xs.RQLL].g=;_&[0,_&Sh2t77Mk:6KlQ2bd:!a*BjG#gZ2pA]:8:VQTmoe3'+pKEg^S&$1f#T2MT62 u]B%g9/ucfY'W^]*&grtWX?M>)K;oe3-@])G@C5C]s7?a9UVilti0r1CU?0=1XhS7dNMcNkle:jG?es. ;p_Dliuhnc)SgJ)UEpotS'G]'0/=8g(0\af\2s" mAV7/WZ/"@n`lcMDIechPfiqEH;FPM[:F!3#lunDB1S>4mr0AGpEr"]V9_]]IDq')A/3s(A\;CT8``r? !-2!pGm1s#^/iTAIQePOH8-f>$\MIl$")1gg!,(B/e5"B:?^4S+-ZI^'$k`IHTS!WAVt3Wt\ps5^?X7C Rg:hgaUts,3ejjX^GR&cgJ^s,+MiOi78H=ot:eq#Qrm(W@lX-XjcftARk4a@nboc`\nEgDFJjo.C]/YZ>?_tQoAO0+@Ws.G]cN fHK0-^D;4273Rs2=fLSr"4b6N;8P(Lm5Z^&0^5"XNR:E;(.+))=DVqEI>pG9FYg"f.(6c2"R'!f?pVWV ,0DrP)5/Ih_pfhZ%`;r1D)LV@VnjS<<(6Ur5L"s76,d3r^Q=IM^')6iOjRs,]hqKE!b'Xigk>s!Wuo!h J$EdsV1^RK'%QIhDLMr#a>d+Y\E:)q>^[ru<9]rm,3TMp?f.f71\nMn8:9*s.$1,i8Pbq5riekl1_2<< "J,+*IL:lT\B;?41!ScV6N;Ufi&mn48/_>T?m)i9s&:?PrX@N:P=B!tXF>hk`?Q&GjSc *W.hY8Ub0L&r.rkJ7tkC@FLh`4jjX3(126b3&ITSX@3)ZYI&V-rmM-3EV.:ae *VtD/[;d=HEIE0I5g1&&`ttg^7A"c8F`(YerX\jT!s+he,J)0lk@mPQ+"S"oM/)nbSkR9?mM7UNQ?46' LPPW,BAa4T6utroWrr[&Vg@W.kKZ`?V+Q0_^T>+A(Dfr;b5Zid?s/W!2#H SS3NW2\$@t?W_7;iFXIfL=:s7$&>J^?^V$-UftE&Y",caH'2s1e[i>Q91d_#FZ9?uc>C`92/.+`ND(r: Cf&s0)Qt""#C7J,KUQLe@)].c/&7+':4QlGZ9haU)3Qs5srX_fh[qB3Fdms++[rE0IoU#n6dQekuG*R( j(.#64`(zzz!2)RU+.N^k$3~> grestore gsave /DeviceRGB setcolorspace [ 112.000 0.00000 0.00000 225.000 300.000 300.000 ] concat << /ImageType 1 /Width 128 /Height 128 /BitsPerComponent 8 /Decode [0 1 0 1 0 1] /ImageMatrix [128 0 0 128 0 0] /DataSource currentfile /ASCII85Decode filter /FlateDecode filter >> image Gb"/,^M=g''"pNl:bWk*/JfDHJM7Rm:`tDm@l?#Q"(N;VUL4ZDQ:6@,-5[3rAoV4;!c]V"7Y-0u'So,- K+0_Xk^UP&SoWGqY?oc2?ha2+`p8ARRIuSeB3r:?e^'icr4g!p^.%q'n\_8a^S@(lXo-o\DqO>>*PM9p NIMXkk31j5rTjD#IZ3R(<*uuP)p1;[FAq=CG!M,)?i2E-@a(l8BT4?lC]q36\MN^S3;\@LaNsnBNsg?g `Jq]8Jr)("\*?.Y)gD'o+&a8(\?l*)#O;$(ZsLu 2^@_ET))c8HelWTXUEiT\pu>?S\+E8h8I't$R/U>i3LY#Xda5&Eg&A#"TQHT=Lu.,YG(`8o7_Mo Q39D/\JOh?O8(Zf8"ttNn#bRKf+\1m#aFhn06Jk*4rs't-E)+br8unnVYGAIcPh[j.k]qKdu=sQI)mUj J%%epUFEB-I"ff#g2]k[K6$/kq6H.XGA&9SBV3F>g(Nm\PT!aA-'[hU\!\AE.QK8KaM1ZmZhuoI%nk"R q*QoU$]W,4]MSAXQ=8!;4q"J&^'h[3R1UiEo"JR*`/R4Rfd$JBf'ba`J&m)Rlq3@H&ls^q?0#%7nUK@E YC=%0fA5.mBGk$Mq`VT>>)o*P3Ye^M_ls$s^UL.=(H#tH9ZsQ9UN#dtNXo'\s/,%HU\'"CN<k*O#pN&e,D#mnE@L0^6!`g%'r\5CD0j*NLEC'7a OdF[?F`$5*okQXah^_X*[mD/+5FNJTO+CK;9RAc07iu7in!5?+u:V@n1PMn`u![I[m7)pGFaFEkR"a^H!2YMj;IoXSI*W9&Q^B`]' $Qdo[5lD920_t5E]VP=L<9$21hVpbn'M)T;i8j]`:.N+=s(^RhAb,]keHTaVJhQ279]BP-.&6e[o$=rk B(^XY(V(@g->EH(Qq,5iP7'!Ar"XL*+n&Yoo)BcEX(\]pkOHmhhr[/N&ZB!njI[b&;XpC/ma/=rM_@NU Q([_JLb<"EP[n/^TLop6]QinMSH2VDYuBeVtnZjphTA[j0-]oO4+#gEdgpdj&t+3R=H)[V5KuKs!U'0cNVq. $a/H20AnAO@bW@,-M)MMFhq"Gs#VA@?1="P5q;l[N;cTqs#7K%"TFn,2;_[;T6Ms78YH+C!ik4fgB9E=%2'%6cphR;_ptlVWcQOEo+Q@k`"l0*keFt6c;f8qY36/4qe:MT#>i2?+s(&uHV r)%t7j=f]20OJ+)5B&p&rY>F1jNk4V\G5aVYAHR5s)Um1D^+Y;P+V%9`Z,"Urp"eYh<*Aud!tA5MZ;:B #a"@Hm=dc^nRq@QWq`J8_"']'J)(m=Q=-Qs$\i"qm)XeY@[rUR>L;Sf$M.>5rs+U8MSEQ%aID5qRLb8S /,0k52fKKJ']Lc+O"3CrHn#&@"9e3bJ!g8^.K3qt-SpA5q%qUhNKrrOYQ(KZ0>M6Ql[2J+r$N*V)p1AanJC[,rsJ7FrUZR'J!tkArJ,e#e+B7mq2G.<2W+EHLh2'0 q%"[Ak!-HoOEh3#ita56fV)$++PMSlVrcl_KOHmM#HIgaJR!<3=h `*W[TnJBgek-"^Qr5FU;\c;+6^X(s<-U7Vd/NAsoo??qSEC!M&@crsN0?J]L!mHe!;Z+5uP5c0mNUj.L Dq>61Ll^cG%`ghds!*@beR-(Zq?r"U@/0`\3,Lk>+96a#l31+6Abr%#q.BWCrO3`l$[M\Jr%!jhm?CP" 7tCJT4G%:tJ'Mle(+e@W(oR9jS^0*1piQXh^ndXdT)NNelSa5$rZ$=Woris#r)`H%oKNGlS,X`.mejb< s$urNq>K'H&2VR;I^PU=4!Uu.s4KA]/1CVZr@9B[VXkJo J'Ma,Mbub!n&:gp$0L]5r$XWIoLI@O0lmJl&K'^2%q>nir]B'0rhmkfNi;uJR=C3Kj@A?>De:F0c@=/3 s#'Qirjrf]+o%pB"OHVie6J7HFpd@b;=\5d2_2C8k(tr;I#c5FF)kGQ0QlJSb8G=b+-aA,8F]qJ0X5s7^7-k6d57SU]M.DXp+#rgRWl .n?7!IN.i"m(\r'+Q`W0gjdU&h]A$L5P+k="+HOg5:H+t$T)SsN0=,EB`?5r0%HT;cHhaE2oSkQr-t%4 pr]f95Ci22Is5T%ZZ5uiqI@)JDZ8md!9sX[=U].8"N.E5=p":$%$,qa?VLK,p#""Y9DT1QI)`UaOPb// R/\K?A6cqHTBEs.Il[;B-Odb5:&bHVhou)Y[2430qk&)ur)5+QAc?kQs2b4Rs.O];jB$R* '8%rl?o.hOLO]\ai(5CgkmCZnHqF6)rP,:FDtO&Zm6[VjcTTa,Y/,&(J"-!.h56Na])(m`?ZH!d=3rhq 2XZ'8o.A\rT;4+/RQkupANKkSamr#ds"!55_>];GHnM$UhPJBHFFIKnGE5#'rb\2*7f.+m!`AkiqYs1e R/]s2?.+6G0%8XBC_5Lh[Xig7!E 8:30*PjcA,nft@\AEtmDr_;qKo&#B+"EWbbh\#Q(G16GO^ON3Xs#'1Nc!8VAs,Hgr0E8[Bq@f\jmee@e !oWhm4b%b\r.;^KJ;4iJ[:,_HVB6cEk"[n+T'$lAt)%RJoDl!I+@J,lZB:Vr**Of>%.ZL\[Q[rlgFU[X\edEVWQ0 5FQZ=aR:B=mdbFSrF[uDs)OGJU(Z*1IPW._Sc=$7cVT*0o,jQR]q12`9_4t'5Q1NCIC]S#p&DT%/_>J/ -%*'$D6hNDBbYO^T7?VGq`gMIJ+!?KqTm7o%DSM(r8#l;R/_+3N59_SqDWI&gui$`s/JrrC];Yn!9n4WK4bTlWSe:3MTs6_,I-NBKYm:b(#hZ(OR9BRs? loV$UYabR#8"_[5H4%(onXoP?oCK0`r&lk929hcOq(HC[UAX3M([%Eo^&9J6Il:)O7K&j(n`A&'('G^b YY?U3dJp0@h`1Ytr'/p82u;R[IsDFXm/NFbjFoDig+pn8q%qYt+(e<_pB!O*+mOOmemE=pIm6$pF]Zq8 s'_GgImWf]pHMI&'aVt^'Cnfp9D_dkG-72*J"Crt5CE=3If@OWT4a17Tm_@mcj2i#s!4*69E+19?qgP1 KlAgCc.'Lds5lnJ2)a>19)tO_)Z8Fhe!iSIIs`f9s$eS:dt0QujgUo_l0^dJo<2^MDnN;UHU7Q/RJk%$ oDCh#r[qE)q>Ge%iBKn`Lg]R,T/.omFUGAETX&K.!$qS],0sS/9RaYMYO`$=]RS]6r"lg"8kK(F!hfMl $[DYJaa]S?^oKjE/`2'^6jfl'-$L=m/s#KLs 2F%6'/jJ9di:W%XK'D';r[Vj%c+D=QLH8q)_\\MdioZ`"rs-l"4YnTjLAqq8,2g61n7hG!,jmn@T)r>? jOk,0c$oTDlT[B+-QIUl&nL_9U\Zotr\s*A-i&htr7;,9ccX(/`!XI2,(Igdqtqo;J'QIas2"]L]75XO s)@dn_sTS&h1@97s)an5Er/'Pr[.6arf>`^&EHn&eEp@es4NsXE<"1bJ&ge,^Yob9'f++MY8iFBYbq6" *BnNCKDa>XjI*IY[.5mIX]T38JY0^((J+OjItb]C)f2ap"rhB__$1ipYe^NJJ&@mlbQ$>\4bG grestore gsave /DeviceRGB setcolorspace [ -75.0000 0.00000 0.00000 -300.000 525.000 600.000 ] concat << /ImageType 1 /Width 256 /Height 256 /BitsPerComponent 8 /Decode [0 1 0 1 0 1] /ImageMatrix [256 0 0 256 0 0] /DataSource currentfile /ASCII85Decode filter /FlateDecode filter >> image Gb"/,4c::_ZJ?VoBVTf7CDgV!A;FZR6-*_-)e'XO$u6,'L)AWhLbY2aL02SH*\rI]$o,h:Q8Y1#L5\%E BHAq[O>2KKBBYE+bH3iD*B,0[jNYo<+-h-0OHe6t=o!'sgph>K,5;-7LHPV;zzzzzzzz!6`6GRstLTC] XM;CBjPEX;Tq\Y\&Fc^mZu)s1e=^CpBOO4!FXeE;A.hF6crE#lL=4*Pcj+>LOS3jStP`!jJ55l]?TQrm 0Oe@(X:Xq9SU,5DNHom0^>%ItI^Q/q.U8o1S:3[]A2P&,:7:rf8N-i;\t5\_>;0f=#`OcMub\^CYnYs&)^N[P i]F#9hdHr;X;Nht%*Q(P_qcmlU@:GQ.>Sr!3)5D"Q5,mdR.Jd=80nfG&5G_9b+a(&rjaY5t0r24[5HF, k(23c*,e<":nf:%=#mr:"nq]45>J*"k57is4_\J%6U ,e5J+bT-F*>ik-@X1g@,];":CPt1r2]V35)Pml82ksOrm)$?f(/S(InVGKr(l8ooKT<10 [/:`?kDts)I[\c2N1t_.aTW?](C]pOC0;3Mi8)7njaZ6V78Gjc:=>a+=4c#Y0IELRA*tMu7[3B/)kdSp Z;d/lF6tO4+pL)O^ZQIk@.d%d8g]WsA%5H_8dYLF<+[h8D=Gq9]-R@*2ZFWpT^,Hn52SrBp4VKD=cic0 Wd'D4o*5Nc,1j'4BqlT9Sng>NF%.YYQi`h"o+hY19qN/\RB:pmM`l*uUL*kY0SV7jLOK5j!@WJ5S=Cls .,%8t!pCNqgqRaHr[A&OCe5m*'%UD-&-65"-*G\iKe=PSs<^6f^HG8!HoSFg.;ERdV6,RkPV"rlaSVgK Rqpd/SXq\hr2`1s_lqEQ35%MqmL$JGsb>5l-BB7<5%GGBWrn[WG:/5O-!qLfVq\gp7qdr',Bt@1DEFbL $9a_l#V2)NFdQNa0s,n'f]&rr4^IKDq3PI9]AZ4.fj4l[o,^#H\][f;13ms),mAm),/N!Tup!VK$-QJYZ.P/bs!lhm4WoJ&03iIZ8e4"U7e)i@6N:\MJK@+nUUAY;r'TR-;+5rIgMM`FO+ ss_;sJ%5,?,/aAY0`^rlnpW+T;Je%>'I+e/8#m*"2=)A=\caf(nZ_eb];2,<-3,]o!O#%ibuRe?#JHr< J>a6\ta`q@=PP\53]X=N#]>fjY6Wha@Ep,=,pr;Hps:#Nc5gQE@7`n"Kcsr:!kN2@Ll1Hg![J1ON5G&1 #!mr>bGOQk-\LIi9Hfn,+0b5JZ=sRBth^U`iX;8aW-lo`9g\@BW-]cJ'rH7[h/IUeB1#fgis& >pV?RbgB)OgINreKmLk5XblpD(+oe[LM5>INW8!Z!IZ5lZlHJaJ$X@2m#(Djl4MC4uA#fatB!W%9-[5k T\q+$PI^M90[8>5#k\^cCkFrtl1GnXg[C\2U5Z"?i0$T([Y_WZ eHoCdD1>X!ZrkL6-*Qo/?g9s*X=\k19qcpmh@Mr1>%'Bs1#-dXTMkmJlNfSN"C@ISTd)$!a#`#[@-ZB1 %4L56m]qrdK$`4itDRs1j";!UU&]a$ThCIkLWW_j6FW4$k4l,l?g'Roa/;*[,@g_"kO*.G'jA.]RD*Th-N>6t+%rWr5Es!_o*o8b$kB8lcB"J4+t_#9m5!a>Nt&FbmPs1 YT1Ipg"Os%\8ukd,GWI/UfZ6\*;YMF\K!k@pOli]gosd%8Fp8cBk3:R(Gq>Th)eGJsMh"Td'Ohq!^uHm 5eQj$/+d.HXte'6k>bT9rCr_Oa[h&a96SW(sa`I3QGPIolY]r$O?)e0\SA5=Gj6SGul3%M\WaMdODMdf m=A*MIZ^"Qj(C-?*7ST5\#h_YDF\rr37s^nrGCRD@iBro<3,%0;%UkA:,:L&_taJ"_Le3rZHqikLJZ+L i5`Sc98U\R\&-(Ooipf8BU;onQ,o+mAsQQP7%1^jji51$?<'s)Iu"p\D#NIsV)EUS':#r#aAb?2`*-3: ge'XPi8d'PQ!Gmeg?NgAdKg&>]>knR!p&(0Bs-(C^=8;gAXl,90s7uRo`.,5cjHiPJbC $!gn_a6`6N;`S]K]L!'7]9H&HDPk0S8.Js+e+;T`"PP'g-"RE7WS>Y@V)3s#^nn9I7HArr:89!So("s' PmRqnWC:'_@Of5LKI_;LXWl*u=eSZ3Y?/ao#?BIm(2k5MZ:j6\$'S2hqCVq7djMpu7VX"Xd<8 o"p+375FJ1:J;r%eZ\h)#QAKV:m:k^V9L^W2T=:C7!O;h1)?V"?m?"do*MOR/`?KMtPsJ9DbDJOB ;Q2s$uZF$j6n:?h")rRsG@M;+!V$8e8rqn)$s(e7Ag4 ?GQOnc\oPs6IB4T@:0s*(a>ci"qmr4*ONUqP.T;Q!gjT1n0=#nug[ItRa@ipW^/kf$nEr[UniGlHl,q> Xpd]2c\>CAUI/!R1/=[dQPkoAKfCs.p$$qL9G[!Q+OtD$;"k'*p#ci"5o+K)B%Mr/[`U;ZE<`YF,Ga94 23D/5c?IM)To#RH)Zq*/'_Io,`Da8'^I@!)>`?iOkGq0cc7^QJ+0Ca%k(<$)U4rs-^H1$64mPRBnW+(tq1s5 3j0\bP&piii#>Q2JuaraSV&`"4&K?Wd5]aDVIf]G@+%57%7PpiHD3+Wt=pKM`itI]rtjs7o:^5NM`qmD moaioDaV&V0is3FUnEkTM)1s)@LPi]hni;n'FqVZ:`96_saA-,=!g2_or1rCb@^M>#PEr^68i^dh&tb7 4R"s.3jB`;cDTr`oK<@H9@;!D\(as&&)h1B0l.^W?H)rdSGVQUlJMcG+=IaSuQNP5W;lJae/,iXdN!s3 N1`Yr7/o6Oj.Ds8HYHqEK?50^$3KC>,.%rhf[eVu;*$s3j[@hm*jp4rgO!kO1bD1pV^Z'R48%IU:e!T? -j.T]2Rcfatqni)A#H!:c]\Vb6lj#[a!t&H=`hREU0Mo05\CZOVG]p"rGlZU7"3mGFr=%qg>2s*8_*,+ h0pfashTs![lgVZ7nDWl\UEMP:&]q+o/:SKG]d1BC6tMZ8V0cVln.HC+YWY4A4`'VL]j^LMgk;$-6n3s DK)^e]<5`BT60En^-\DbC%&%0>tu9CY6&ImnM6VW0n\&jVr]J$/gDb($)ZcRZ'rO!k%e+])MCop5DrJN(TeG9.,ipREBplAe^,uWYhr*S(R^5bl0>6 !]PT3D7^n@r92\7>NGRf@i@K)^/fqh^_+OWa`$hin)Wo-aS<@6G/-k9p$hVp+P[jSqt8s(_MuDdr['4$ jh(mm"ODPFm+D!7-?A.hIVG:B%0bq*k7?c@>_!=i&/2"XD5;0+tYLdS7+@;`fQN'`2^Lm%ti4kl]l61]L5G8$t7/Wt/Guiu:qG6,>q#:j"c1jLN^K LTnf`-`tJ,K;TWJ(Gi\SBCl]qTm7orLX2l:&Y)=pA>4%kMIZg9B CX]ej&:J!MoU"8[h3#rhT+7/l_d&T*9oDn("!(8">(4`1OY)NrR"P!,_l:T-O:655_=_:Oj8`;C,^3rr 4tF!\+(,aKPJjMYPLjQ2g4#Ir,k8T2>R\jq%URotQj9s/3uBd!sLJdSjNc!_SRsqEI"?q>=1M\`h%a9?d-JrmJNIQcYq213U)%O5:Jf5s& 1c^R*LcMs$XnWS1]V0s4]pI8Bu^-/V)OS8*'^*Xab1ur;V28s)Z)4J3*]*okfm-kk-Ums4m8HI_>FpL4 JP7+0tYPc[QT[J4T^ddeV4Gs#D;&e)rh(nK6NWVt`J$^JXoUWg\Dqf"Z##7q=oQnP=34J5!b+(Bu0P,`9@NV'TMT!lfuqWdbWVs5 a3Ln^#4s0D'`\rpSn.B:ef4`*['SB`/aR!655Ls6o9g3WIXG*t\S6UB&pGSE?HFq!4'`s5AmN:B/49C\ $dB!>c(An)=<@jo=f>:KmQ?jaS-Es'5S&r?&?BTD[7+s2cY'C'lNW^[@s!4#R9!`U6RX!\R[S$M.Wms' O<^0Dtj>3"$o?r^?PmbQX1*Dd*1's#C>`f0d>3JH#:-gO"d_7roknRW*hfq"n'!k5-7F'F6nueb-\VQtL47Ij 7$^>t+QR7f6UE!Mn`TNYb[[#pTAts+Kj]ae(]ea"75Ooe/W,cP$0u&hcJ76U4TKq[8\hE0gX;F7l0EJ" H3.s'#FE^"qHYs-iq:4U_%B0*17fIqe&3m=biEmsi2Rs2)s.`VQcU!NhP-\-qB1!m,]kY],/8s*q6!'rIsr.3:FZKXf"X0j!.+X6HN35&QN *Un?;g;8T)VC]cNO^UYl5/o.0#(b^O-@_g<+eair@d@b!%oNIh@JL0X22U[".c"J(+?\Ac:Y7o)8$Vr; UI/f?o)qr)OWKOT&TiD'(1tg$8TUkC9@r5D8r$s%D=BS,^fi!42KA!h.:3fB^1^!^jI\"R(>IlG*Ai4.cK4o`*P=s/,h"K0QC2l[)q;0% PMtr'rC@o>tprqX8Caho#I9!+3[(:sAnL3Vf;TrngiZbC;3PJWZm\Hm.AH-/S[m.MdMO$YBdn2g,&]D' B-Ef)Gu>!bCsgo_a3UTFVG,56Uc@ml,OkO.HFJrBHpP]0Q/9s/GupYQ%oSMSIBtcb0&)HL3eTr7L>M_Z /6Xs.RQLL].g=;_&[0,_&Sh2t77Mk:6KlQ2bd:!a*BjG#gZ2pA]:8:VQTmoe3'+pKEg^S&$1f#T2MT62 u]B%g9/ucfY'W^]*&grtWX?M>)K;oe3-@])G@C5C]s7?a9UVilti0r1CU?0=1XhS7dNMcNkle:jG?es. ;p_Dliuhnc)SgJ)UEpotS'G]'0/=8g(0\af\2s" mAV7/WZ/"@n`lcMDIechPfiqEH;FPM[:F!3#lunDB1S>4mr0AGpEr"]V9_]]IDq')A/3s(A\;CT8``r? !-2!pGm1s#^/iTAIQePOH8-f>$\MIl$")1gg!,(B/e5"B:?^4S+-ZI^'$k`IHTS!WAVt3Wt\ps5^?X7C Rg:hgaUts,3ejjX^GR&cgJ^s,+MiOi78H=ot:eq#Qrm(W@lX-XjcftARk4a@nboc`\nEgDFJjo.C]/YZ>?_tQoAO0+@Ws.G]cN fHK0-^D;4273Rs2=fLSr"4b6N;8P(Lm5Z^&0^5"XNR:E;(.+))=DVqEI>pG9FYg"f.(6c2"R'!f?pVWV ,0DrP)5/Ih_pfhZ%`;r1D)LV@VnjS<<(6Ur5L"s76,d3r^Q=IM^')6iOjRs,]hqKE!b'Xigk>s!Wuo!h J$EdsV1^RK'%QIhDLMr#a>d+Y\E:)q>^[ru<9]rm,3TMp?f.f71\nMn8:9*s.$1,i8Pbq5riekl1_2<< "J,+*IL:lT\B;?41!ScV6N;Ufi&mn48/_>T?m)i9s&:?PrX@N:P=B!tXF>hk`?Q&GjSc *W.hY8Ub0L&r.rkJ7tkC@FLh`4jjX3(126b3&ITSX@3)ZYI&V-rmM-3EV.:ae *VtD/[;d=HEIE0I5g1&&`ttg^7A"c8F`(YerX\jT!s+he,J)0lk@mPQ+"S"oM/)nbSkR9?mM7UNQ?46' LPPW,BAa4T6utroWrr[&Vg@W.kKZ`?V+Q0_^T>+A(Dfr;b5Zid?s/W!2#H SS3NW2\$@t?W_7;iFXIfL=:s7$&>J^?^V$-UftE&Y",caH'2s1e[i>Q91d_#FZ9?uc>C`92/.+`ND(r: Cf&s0)Qt""#C7J,KUQLe@)].c/&7+':4QlGZ9haU)3Qs5srX_fh[qB3Fdms++[rE0IoU#n6dQekuG*R( j(.#64`(zzz!2)RU+.N^k$3~> grestore Q end end restore showpage %%Trailer %%EOF src/test/resources/ps/TestText2D.ps0000644000175000017500000015220510344614150016621 0ustar user01user01%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 20 118 575 673 %%Creator: FreeHEP Graphics2D Driver %%Producer: org.freehep.graphicsio.ps.PSGraphics2D %%For: %%Title: %%LanguageLevel: 3 %%EndComments %%BeginProlog 100 dict dup begin % % File: org/freehep/graphicsio.ps/PSProlog.txt % Author: Charles Loomis % % Redefinitions which save some space in the output file. These are also % the same as the PDF operators. /q {gsave} def /Q {grestore} def /n {newpath} def /m {moveto} def /l {lineto} def /c {curveto} def /h {closepath} def /re {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath} def /f {fill} def /f* {eofill} def /F {gsave vg&FC fill grestore} def /F* {gsave vg&FC eofill grestore} def /s {closepath stroke} def /S {stroke} def /b {closepath gsave vg&FC fill grestore gsave stroke grestore newpath} def /B {gsave vg&FC fill grestore gsave stroke grestore newpath} def /b* {closepath gsave vg&FC eofill grestore gsave stroke grestore newpath} def /B* {gsave vg&FC eofill grestore gsave stroke grestore newpath} def /g {1 array astore /vg&fcolor exch def} def /G {setgray} def /k {4 array astore /vg&fcolor exch def} def /K {setcmykcolor} def /rg {3 array astore /vg&fcolor exch def} def /RG {setrgbcolor} def % Initialize the fill color. 0 0 0 rg /vg&FC {mark vg&fcolor aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /vg&DFC {/vg&fcolor exch def} def /vg&C {mark exch aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /w {setlinewidth} def /j {setlinejoin} def /J {setlinecap} def /M {setmiterlimit} def /d {setdash} def /i {setflat} def /W {clip} def /W* {eoclip} def % Setup the default graphics state. % (black; 1 pt. linewidth; miter join; butt-ends; solid) /defaultGraphicsState {0 g 1 w 0 j 0 J [] 0 d} def % Emulation of the rectangle operators for PostScript implementations % which do not implement all Level 2 features. This is an INCOMPLETE % emulation; only the "x y width height rect..." form is emulated. /*rf {gsave newpath re fill grestore} def /*rs {gsave newpath re stroke grestore} def /*rc {newpath re clip} def /rf /rectfill where {pop /rectfill}{/*rf} ifelse load def /rs /rectstroke where {pop /rectstroke}{/*rs} ifelse load def /rc /rectclip where {pop /rectclip}{/*rc} ifelse load def % Emulation of the selectfont operator. This includes a 20% increase in % the fontsize which is necessary to get sizes similar to the Java fonts. /*sf {exch findfont exch dup type /arraytype eq {makefont}{scalefont} ifelse setfont} bind def /sf /selectfont where {pop {1.2 mul selectfont}}{{1.2 mul *sf}} ifelse def % Special version of stroke which allows the dash pattern to continue % across path segments. (This may be needed for PostScript although % modern printers seem to do this correctly.) /vg&stroke { currentdash pop length 0 eq {stroke} { currentdash /vg&doffset exch def pop flattenpath {m vg&resetdash} {2 copy currentpoint 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt 3 1 roll l currentdash 3 -1 roll add setdash} {} {h vg&resetdash} pathforall stroke vg&resetdash } ifelse } def /vg&resetdash {currentdash pop vg&doffset setdash} def % Initialize variables for safety. /delta 0 def /xv 0 def /yv 0 def /width 0 def /height 0 def % Initialize to portrait INTERNATIONAL (Letter-height, A4-width) page. /pw 595 def /ph 791 def /po true def /ftp false def % Initialize margins to 20 points. /ml 20 def /mr 20 def /mt 20 def /mb 20 def % Temporary matrices. /smatrix 0 def /nmatrix 0 def % set page size (usage: setpagesize) /setpagesize {/ph exch def /pw exch def} def % set page orientation (usage: portrait or landscape) /portrait {/po true def} def /landscape {/po false def} def % force natural size for image (usage: naturalsize) /naturalsize {/ftp false def} def % resize image to fill page (usage: fittopage) /fittopage {/ftp true def} def % set margins of the page (usage: setmargins) /setmargins {/mr exch def /mt exch def /mb exch def /ml exch def} def % set the graphic's size (usage: setsize) /setsize {/gh exch def /gw exch def} def % set the graphic's origin (usage: setorigin) /setorigin {/gy exch def /gx exch def} def % calculate image center /imagecenter {pw ml sub mr sub 2 div ml add ph mt sub mb sub 2 div mb add} def % calculate the necessary scaling /imagescale {po {gw}{gh} ifelse pw ml sub mr sub div po {gh}{gw} ifelse ph mt sub mb sub div 2 copy lt {exch} if pop ftp not {1 2 copy lt {exch} if pop} if 1 exch div /sfactor exch def /gw gw sfactor mul def /gh gh sfactor mul def} def % calculate image origin /imageorigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div po {add}{sub} ifelse} def % calculate the clipping origin /cliporigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub floor ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div sub floor} def % Set the clipping region to the bounding box. /cliptobounds {cliporigin po {gw}{gh} ifelse 1 add po {gh}{gw} ifelse 1 add rc} def % set the base transformation matrix (usage: setbasematrix) /setbasematrix {imageorigin translate po {0}{90} ifelse rotate sfactor sfactor neg scale /defaultmatrix matrix currentmatrix def} def % The lower-right bias in drawing 1 pt. wide lines. /bias {q 0.5 0.5 translate} def /unbias {Q} def % Draw a line. (x0 y0 x1 y1 line) /L {bias n m l S unbias} def % Polyline primitive. /polyline {n m 1 exch 1 exch {pop currentfile token pop currentfile token pop l} for } def % Draw a polyline (n x0 y0 OPL x1 y1 x2 y2 ... ... xn yn) /OPL {bias polyline S unbias} def % Draw a closed polyline (n x0 y0 CPL x1 y1 x2 y2 ... ... xn yn) /CPL {bias polyline s unbias} def % Draw a filled polyline (n x0 y0 FPL x1 y1 x2 y2 ... ... xn yn) /FPL {polyline h f*} def % Draw an oval. (x y w h OVL) /OVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width currentlinewidth sub 2 div height currentlinewidth sub 2 div neg scale n 0 0 1 5 -2 roll arc smatrix setmatrix S} def % Draw a filled oval. (x y w h FOVL) /FOVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width 2 div height 2 div neg scale n 0 0 m 0 0 1 5 -2 roll arc h smatrix setmatrix f} def % Draw a rounded rectangle. (x y w h arcwidth archeight RREC) /RREC {matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix s} def % Draw a filled rounded rectangle. (x y w h arcwidth archeight FRREC) /FRREC{matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix h f} def % Draw a string. (string x y STR) /STR {q m 1 -1 scale recshow Q} def % Define basic plot symbols. /xys {/siz exch def /yv exch def /xv exch def} def /hline {xys n xv siz 2. div sub yv m siz 0 rlineto S} def /vline {xys n xv yv siz 2. div sub m 0 siz rlineto S} def /plus {xys n xv yv siz 2. div sub m 0 siz rlineto xv siz 2. div sub yv m siz 0 rlineto S} def /dot {n 2. div 0 360 arc s} def /fdot {n 2. div 0 360 arc h f} def /box {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rs} def /fbox {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rf} def /tridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto s} def /ftridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto h f} def % Symbols defined in terms of the others. /star {3 copy cross plus} def /cross {xys q xv yv translate 45 rotate 0 0 siz plus Q} def /diamond {xys q xv yv translate 45 rotate 0 0 siz box Q} def /fdiamond {xys q xv yv translate 45 rotate 0 0 siz fbox Q} def /triup {xys q xv yv translate 180 rotate 0 0 siz tridn Q} def /ftriup {xys q xv yv translate 180 rotate 0 0 siz ftridn Q} def % Define the composite fonts used to print Unicode strings. % Undefine particular values in an encoding array. /vg&undef { {exch dup 3 -1 roll /.notdef put} forall } def /vg&redef { {3 -1 roll dup 4 2 roll put} forall } def % usage: key encoding basefontname vg&newbasefont font /vg&newbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def currentdict end definefont } def % usage: key encoding basefontname vg&newskewedbasefont font /vg&newskewedbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def exch FontMatrix exch matrix concatmatrix /FontMatrix exch def currentdict end definefont } def % usage: basekey suffix vg&nconcat name /vg&nconcat { 2 {dup length string cvs exch} repeat dup length 3 -1 roll dup length 3 -1 roll add string dup 0 4 -1 roll dup length 5 1 roll putinterval dup 4 -2 roll exch putinterval cvn } def %usage: fontname vg&skewmatrix matrix /vg&skewmatrix { findfont dup /FontInfo known { /FontInfo get dup /ItalicAngle known { [ 1 0 4 -1 roll /ItalicAngle get neg dup sin exch cos div 1 0 0 ] } {pop matrix} ifelse } {pop matrix} ifelse } def % usage: newfontname basefontname vg&newcompositefont -- /vg&newcompositefont { /vg&fstyle exch def /vg&bfont exch def /vg&fname exch def << /FontStyleBits vg&fstyle /FontType 0 /FontMatrix matrix /FontName vg&fname /FMapType 2 /Encoding [ 0 1 255 {pop 6} for ] dup 16#00 0 put % Latin dup 16#03 1 put % Greek dup 16#20 2 put % Punctuation dup 16#21 3 put % Arrows dup 16#22 4 put % MathOps dup 16#27 5 put % Dingbats /FDepVector [ vg&bfont /-UC-Latin vg&nconcat UCLatinEncoding vg&bfont vg&newbasefont vg&bfont vg&skewmatrix vg&bfont /-UC-Greek vg&nconcat UCGreekEncoding /Symbol vg&newskewedbasefont vg&bfont /-UC-Punctuation vg&nconcat UCPunctuationEncoding vg&bfont vg&newbasefont /Arrows-UC findfont /MathOps-UC findfont /Dingbats-UC findfont /Undefined-UC findfont ] >> vg&fname exch definefont pop } def % Null encoding vector (all elements set to .notdef) /NullEncoding [ 256 {/.notdef} repeat ] def % Unicode Latin encoding (unicode codes \u0000-\u00ff) /UCLatinEncoding ISOLatin1Encoding dup length array copy dup 16#60 /grave put [ 16#90 16#91 16#92 16#93 16#94 16#95 16#96 16#97 16#98 16#9a 16#9b 16#9d 16#9e 16#9f ] vg&undef def % Unicode Greek encoding (unicode codes \u0370-\u03ff) /UCGreekEncoding NullEncoding dup length array copy << 16#91 /Alpha 16#92 /Beta 16#93 /Gamma 16#94 /Delta 16#95 /Epsilon 16#96 /Zeta 16#97 /Eta 16#98 /Theta 16#99 /Iota 16#9a /Kappa 16#9b /Lambda 16#9c /Mu 16#9d /Nu 16#9e /Xi 16#9f /Omicron 16#a0 /Pi 16#a1 /Rho 16#a3 /Sigma 16#a4 /Tau 16#a5 /Upsilon 16#a6 /Phi 16#a7 /Chi 16#a8 /Psi 16#a9 /Omega 16#b1 /alpha 16#b2 /beta 16#b3 /gamma 16#b4 /delta 16#b5 /epsilon 16#b6 /zeta 16#b7 /eta 16#b8 /theta 16#b9 /iota 16#ba /kappa 16#bb /lambda 16#bc /mu 16#bd /nu 16#be /xi 16#bf /omicron 16#c0 /pi 16#c1 /rho 16#c2 /sigma1 16#c3 /sigma 16#c4 /tau 16#c5 /upsilon 16#c6 /phi1 16#c7 /chi 16#c8 /psi 16#c9 /omega 16#7e /semicolon 16#87 /dotmath 16#d1 /theta1 16#d2 /Upsilon1 16#d5 /phi 16#d6 /omega1 >> vg&redef def % Unicode punctuation encoding (unicode codes \u2000-\u206f) /UCPunctuationEncoding NullEncoding dup length array copy << 16#10 /hyphen 16#11 /hyphen 16#12 /endash 16#13 /emdash 16#18 /quoteleft 16#19 /quoteright 16#1a /quotesinglbase 16#1b /quotesingle 16#1c /quotedblleft 16#1d /quotedblright 16#1e /quotedblbase 16#1f /quotedbl 16#20 /dagger 16#21 /daggerdbl 16#22 /bullet 16#24 /period 16#26 /ellipsis 16#27 /periodcentered 16#30 /perthousand 16#44 /fraction 16#70 /zerosuperior 16#74 /foursuperior 16#75 /fivesuperior 16#76 /sixsuperior 16#77 /sevensuperior 16#78 /eightsuperior 16#79 /ninesuperior 16#7b /hyphensuperior 16#7d /parenleftsuperior 16#7e /parenrightsuperior 16#80 /zeroinferior 16#84 /fourinferior 16#85 /fiveinferior 16#81 /oneinferior 16#82 /twoinferior 16#83 /threeinferior 16#86 /sixinferior 16#87 /seveninferior 16#88 /eightinferior 16#89 /nineinferior 16#8b /hypheninferior 16#8d /parenleftinferior 16#8e /parenrightinferior >> vg&redef def % Unicode mathematical operators encoding (unicode codes \u2200-\u22ff) /UCMathOpsEncoding NullEncoding dup length array copy << 16#00 /universal 16#02 /partialdiff 16#03 /existential 16#05 /emptyset 16#06 /Delta 16#07 /gradient 16#08 /element 16#09 /notelement 16#0b /suchthat 16#0f /product 16#11 /summation 16#12 /minus 16#15 /fraction 16#17 /asteriskmath 16#19 /bullet 16#1a /radical 16#1d /proportional 16#1e /infinity 16#20 /angle 16#23 /bar 16#27 /logicaland 16#28 /logicalor 16#29 /intersection 16#2a /union 16#2b /integral 16#34 /therefore 16#36 /colon 16#3c /similar 16#45 /congruent 16#48 /approxequal 16#60 /notequal 16#61 /equivalence 16#64 /lessequal 16#65 /greaterequal 16#82 /propersubset 16#83 /propersuperset 16#86 /reflexsubset 16#87 /reflexsuperset 16#95 /circleplus 16#97 /circlemultiply 16#a5 /perpendicular 16#03 /existential 16#c0 /logicaland 16#c1 /logicalor 16#c2 /intersection 16#c3 /union 16#c4 /diamond 16#c5 /dotmath >> vg&redef def % Unicode arrows encoding (unicode codes \u2190-\u21ff) % Also includes those "Letterlike" unicode characters % which are available in the symbol font. (unicode codes \u2100-\u214f) /UCArrowsEncoding NullEncoding dup length array copy << 16#11 /Ifraktur 16#1c /Rfraktur 16#22 /trademarkserif 16#35 /aleph 16#90 /arrowleft 16#91 /arrowup 16#92 /arrowright 16#93 /arrowdown 16#94 /arrowboth 16#d0 /arrowdblleft 16#d1 /arrowdblup 16#d2 /arrowdblright 16#d3 /arrowdbldown 16#d4 /arrowdblboth >> vg&redef def /ZapfDingbats findfont /Encoding get dup length array copy /UCDingbatsEncoding exch def 16#20 1 16#7f { dup 16#20 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for 16#a0 1 16#ff { dup 16#40 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for UCDingbatsEncoding [ 16#c0 1 16#ff {} for ] vg&undef [ 16#00 16#05 16#0a 16#0b 16#28 16#4c 16#4e 16#53 16#54 16#55 16#57 16#5f 16#60 16#68 16#69 16#6a 16#6b 16#6c 16#6d 16#6e 16#6f 16#70 16#71 16#72 16#73 16#74 16#75 16#95 16#96 16#97 16#b0 16#bf ] vg&undef pop % Define the base fonts which don't change. /Undefined-UC NullEncoding /Helvetica vg&newbasefont pop /MathOps-UC UCMathOpsEncoding /Symbol vg&newbasefont pop /Arrows-UC UCArrowsEncoding /Symbol vg&newbasefont pop /Dingbats-UC UCDingbatsEncoding /ZapfDingbats vg&newbasefont pop % Make the SansSerif composite fonts. /SansSerif /Helvetica 16#00 vg&newcompositefont /SansSerif-Bold /Helvetica-Bold 16#01 vg&newcompositefont /SansSerif-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /SansSerif-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Serif composite fonts. /Serif /Times-Roman 16#00 vg&newcompositefont /Serif-Bold /Times-Bold 16#01 vg&newcompositefont /Serif-Italic /Times-Italic 16#02 vg&newcompositefont /Serif-BoldItalic /Times-BoldItalic 16#03 vg&newcompositefont % Make the Monospaced composite fonts. /Monospaced /Courier 16#00 vg&newcompositefont /Monospaced-Bold /Courier-Bold 16#01 vg&newcompositefont /Monospaced-Italic /Courier-Oblique 16#02 vg&newcompositefont /Monospaced-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont % Make the Dialog composite fonts. /Dialog /Helvetica 16#00 vg&newcompositefont /Dialog-Bold /Helvetica-Bold 16#01 vg&newcompositefont /Dialog-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /Dialog-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the DialogInput composite fonts. /DialogInput /Helvetica 16#00 vg&newcompositefont /DialogInput-Bold /Helvetica-Bold 16#01 vg&newcompositefont /DialogInput-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /DialogInput-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Typewriter composite fonts (JDK 1.1 only). /Typewriter /Courier 16#00 vg&newcompositefont /Typewriter-Bold /Courier-Bold 16#01 vg&newcompositefont /Typewriter-Italic /Courier-Oblique 16#02 vg&newcompositefont /Typewriter-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont /cfontH { dup /fontsize exch def /SansSerif exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHB { dup /fontsize exch def /SansSerif-Bold exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHI { dup /fontsize exch def /SansSerif-Italic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHBI { dup /fontsize exch def /SansSerif-BoldItalic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontT { dup /fontsize exch def /Serif exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTB { dup /fontsize exch def /Serif-Bold exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTI { dup /fontsize exch def /Serif-Italic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTBI { dup /fontsize exch def /Serif-BoldItalic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontC { dup /fontsize exch def /Typewriter exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCB { dup /fontsize exch def /Typewriter-Bold exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCI { dup /fontsize exch def /Typewriter-Italic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCBI { dup /fontsize exch def /Typewriter-BoldItalic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def % Darken or lighten the current color. /darken {0.7 exch exp 3 copy q 4 -1 roll vg&C currentrgbcolor 3 {4 -2 roll mul} repeat 3 array astore Q} def /displayColorMap << /Cr [1.00 0.00 0.00] /Cg [0.00 1.00 0.00] /Cb [0.00 0.00 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.00 0.00] /CGg [0.00 1.00 0.00] /CGb [0.00 0.00 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.00 0.00] /CIg [0.00 1.00 0.00] /CIb [0.00 0.00 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /printColorMap << /Cr [1.00 0.33 0.33] /Cg [0.33 1.00 0.33] /Cb [0.33 0.33 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.33 0.33] /CGg [0.33 1.00 0.33] /CGb [0.33 0.33 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.33 0.33] /CIg [0.33 1.00 0.33] /CIb [0.33 0.33 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /grayColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [0.75] /CGg [1 ] /CGb [0.50] /CGc [0.75] /CGm [0.50] /CGy [1 ] /CGo [0.75] /CGp [1 ] /CGw [0 ] /CGgrl [0.25] /CGgr [0.50] /CGgrd [0.75] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def /bwColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [1 ] /CGg [1 ] /CGb [1 ] /CGc [1 ] /CGm [1 ] /CGy [1 ] /CGo [1 ] /CGp [1 ] /CGw [0 ] /CGgrl [1 ] /CGgr [1 ] /CGgrd [1 ] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def % % The following routines handle the alignment of and printing of % tagged strings. % % Predefine the bounding box values. /bbllx 0 def /bblly 0 def /bburx 0 def /bbury 0 def % This routine pops the first unicode character off of a string and returns % the remainder of the string, the character code of first character, % and a "true" if the string was non-zero length. % popfirst % popfirst /popfirst { dup length 1 gt {dup 0 get /vg&fbyte exch def dup 1 get /vg&cbyte exch def dup length 2 sub 2 exch getinterval true} {pop false} ifelse } def % This routine shows a single unicode character given the font and % character codes. % unicharshow -- /unicharshow { 2 string dup 0 5 -1 roll put dup 1 4 -1 roll put internalshow } def % This is an internal routine to alternate between determining the % bounding box for stringsize and showing the string for recshow. % internalshow -- /internalshow {show} def % This is an internal routine to alternate between determining the % bounding box for stringsize and stroking various ornaments. % internalstroke -- /internalstroke {S} def % Sets up internalshow to use the null device to determine string size. % -- nullinternalshow -- /nullinternalshow {/internalshow {false charpath flattenpath pathbbox updatebbox} def} def % Sets up internalstroke to use the null device to determine string size. % -- nullinternalstroke -- /nullinternalstroke { /internalstroke {flattenpath pathbbox updatebbox} def} def % This routine tests to see if the character code matches the first % character of a string. % testchar /testchar {exch dup 3 -1 roll 0 get eq} def % Raise the text baseline for superscripts. % -- raise -- /raise { 0 fontsize 2 div rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-raise the text baseline for superscripts. % -- unraise -- /unraise { /fontsize fontsize 1.5 mul def 0 fontsize 2 div neg rmoveto } def % Lower the text baseline for subscripts. % -- lower -- /lower { 0 fontsize 3 div neg rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-lower the text baseline for subscripts. % -- unlower -- /unlower { /fontsize fontsize 1.5 mul def 0 fontsize 3 div rmoveto } def % Compare the top two elements on the stack and leave only the % larger one. /maxval {2 copy gt {pop} {exch pop} ifelse} def % Tokenize a string. Do not use the usual PostScript token because % parentheses will not be interpreted correctly because of rescanning % of the string. /vg&token {/vg&string exch def /vg&index -1 def /vg&level 0 def 0 2 vg&string length 2 sub { dup dup 1 add exch vg&string exch get 8 bitshift vg&string 3 -1 roll get or dup 16#f0fe eq {pop 1}{16#f0ff eq {-1}{0} ifelse} ifelse /vg&level exch vg&level add def vg&level 0 eq {/vg&index exch def exit} if pop } for vg&index 0 ge { vg&string vg&index 2 add dup vg&string length exch sub getinterval vg&index 2 gt {vg&string 2 vg&index 2 sub getinterval}{()} ifelse true} {false} ifelse } bind def % Recursively show an unicode string. % recshow -- /recshow { popfirst { % Test to see if this is a string attribute. vg&fbyte 16#f0 and 16#e0 eq { q % Font style. currentfont dup /FontStyleBits known {/FontStyleBits get}{pop 0} ifelse vg&cbyte or vg&fontstyles exch get fontsize exch exec vg&token pop recshow currentpoint Q m recshow } { vg&fbyte 16#F8 and 16#F0 eq { % Superscript and/or subscript. vg&cbyte 16#00 eq { vg&token pop exch vg&token pop 3 -1 roll q raise recshow unraise currentpoint pop Q exch q lower recshow unlower currentpoint pop Q maxval currentpoint exch pop m recshow } if % Strikeout. vg&cbyte 16#01 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll fontsize 3 div add moveto fontsize 3 div add lineto internalstroke Q recshow} if % Underline. vg&cbyte 16#02 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dashed underline. vg&cbyte 16#03 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J [ vg&uthick 5 mul vg&uthick 2 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dotted underline. vg&cbyte 16#04 eq { vg&token pop currentpoint 3 -1 roll recshow q 1 J [ 0 vg&uthick 3 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Thick underline. vg&cbyte 16#05 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Gray thick underline. vg&cbyte 16#06 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w 0.5 setgray currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Overbar. vg&cbyte 16#07 eq { vg&token pop dup stringsize relative 4 1 roll pop pop exch 3 -1 roll recshow q 0 J vg&underline vg&uthick w vg&uoffset neg add dup currentpoint pop exch m l internalstroke Q recshow} if } { vg&fbyte vg&cbyte unicharshow recshow } ifelse } ifelse } if } def % Get the underline position and thickness from the current font. /vg&underline { currentfont dup /FontType get 0 eq {/FDepVector get 0 get} if dup dup /FontInfo known { /FontInfo get dup dup /UnderlinePosition known { /UnderlinePosition get /vg&uoffset exch def } { pop /vg&uoffset 0 def } ifelse dup /UnderlineThickness known { /UnderlineThickness get /vg&uthick exch def } { pop /vg&uthick 0 def } ifelse } { pop /vg&uoffset 0 def /vg&uthick 0 def } ifelse /FontMatrix get currentfont dup /FontType get 0 eq {/FontMatrix get matrix concatmatrix}{pop} ifelse dup 0 vg&uoffset 3 -1 roll transform /vg&uoffset exch def pop 0 vg&uthick 3 -1 roll transform /vg&uthick exch def pop } def % Make a frame with the coordinates on the stack. % frame -- /frame {4 copy m 3 1 roll exch l 4 -2 roll l l h} def % Resets the accumulated bounding box to a degenerate box at the % current point. % -- resetbbox -- /resetbbox { currentpoint 2 copy /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Update the accumulated bounding box. % updatebbox -- /updatebbox { dup bbury gt {/bbury exch def} {pop} ifelse dup bburx gt {/bburx exch def} {pop} ifelse dup bblly lt {/bblly exch def} {pop} ifelse dup bbllx lt {/bbllx exch def} {pop} ifelse } def % Set the bounding box to the values on the stack. % updatebbox -- /restorebbox { /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Push the accumulated bounding box onto the stack. % -- pushbbox /pushbbox {bbllx bblly bburx bbury} def % Make the relative bounding box relative to the currentpoint. % inflate /inflate { 2 {fontsize 0.2 mul add 4 1 roll} repeat 2 {fontsize 0.2 mul sub 4 1 roll} repeat } def % Make the relative bounding box relative to the currentpoint. % relative /relative { currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll } def % Returns the size of a string appropriate for recshow. % stringsize /stringsize { pushbbox /internalshow load /internalstroke load 7 -1 roll q nulldevice 0 0 m nullinternalshow nullinternalstroke resetbbox recshow /internalstroke exch def /internalshow exch def pushbbox 8 -4 roll restorebbox Q } def % Calculate values for string positioning. /calcval {4 copy 3 -1 roll sub /widy exch def sub neg /widx exch def pop pop /dy exch def /dx exch def} def % Utilities to position a string. % First letter (U=upper, C=center, B=baseline, L=lower) % Second letter (L=left, C=center, R=right) /align [ {calcval dx neg widy dy add neg rmoveto} % UL {calcval dx neg widy 2 div dy add neg rmoveto} % CL {calcval dx neg 0 rmoveto} % BL {calcval dx neg dy neg rmoveto} % LL {calcval widx dx add neg widy dy add neg rmoveto} % UR {calcval widx dx add neg widy 2 div dy add neg rmoveto} % CR {calcval widx dx add neg 0 rmoveto} % BR {calcval widx dx add neg dy neg rmoveto} % LR {calcval widx 2 div dx add neg widy dy add neg rmoveto} % UC {calcval widx 2 div dx add neg widy 2 div dy add neg rmoveto} % CC {calcval widx 2 div dx add neg 0 rmoveto} % BC {calcval widx 2 div dx add neg dy neg rmoveto} % LC ] def /vg&str {m q 1 -1 scale dup stringsize 4 copy align 11 -1 roll get exec q inflate relative frame exch exec Q recshow Q} def end /procDict exch def %%EndProlog %%BeginSetup save procDict begin printColorMap begin 595 791 setpagesize 20 20 20 20 setmargins 0 0 setorigin 600 600 setsize fittopage portrait imagescale cliptobounds setbasematrix /Helvetica 10 sf defaultGraphicsState %%EndSetup 0.00000 0.00000 0.00000 RG [ 1.00000 0.00000 0.00000 1.00000 0.00000 0.00000 ] defaultmatrix matrix concatmatrix setmatrix 1.00000 w 2 J 0 j 10.0000 M [ ] 0.00000 d .800000 .800000 .800000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG q 0 0 600 600 rc 1.00000 1.00000 1.00000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 1.00000 0.00000 RG 600.000 30.0000 0.00000 30.0000 L 600.000 90.0000 0.00000 90.0000 L 600.000 150.000 0.00000 150.000 L 600.000 210.000 0.00000 210.000 L 600.000 270.000 0.00000 270.000 L 600.000 330.000 0.00000 330.000 L 600.000 390.000 0.00000 390.000 L 600.000 450.000 0.00000 450.000 L 100.000 600.000 100.000 0.00000 L 300.000 600.000 300.000 0.00000 L 500.000 600.000 500.000 0.00000 L 1.00000 0.00000 0.00000 RG -38.8511 30.0000 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000<\000V\000e\000c\000t\000o\000r) show Q -4.10988 24.9731 moveto q 1 -1 scale /SansSerif-Bold findfont 7.0 scalefont setfont (\000\134\000G\000r\000a\000p\000h\000i\000c\000s\000\045) show Q 32.5125 30.0000 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000 \000&\000 \000C\000a\000r\000d) show Q 66.4139 35.0269 moveto q 1 -1 scale /SansSerif-Italic findfont 7.0 scalefont setfont (\000\051\000A\000d\000a\000p\000t\000e\000r\000\051) show Q 94.1602 30.0000 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000>) show Q 230.574 30.0000 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000<\000V\000e\000c\000t\000o\000r) show Q 265.316 24.9731 moveto q 1 -1 scale /SansSerif-Bold findfont 7.0 scalefont setfont (\000\134\000G\000r\000a\000p\000h\000i\000c\000s\000\045) show Q 301.938 30.0000 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000 \000&\000 \000C\000a\000r\000d) show Q 335.839 35.0269 moveto q 1 -1 scale /SansSerif-Italic findfont 7.0 scalefont setfont (\000\051\000A\000d\000a\000p\000t\000e\000r\000\051) show Q 363.586 30.0000 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000>) show Q 500.000 30.0000 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000<\000V\000e\000c\000t\000o\000r) show Q 534.741 24.9731 moveto q 1 -1 scale /SansSerif-Bold findfont 7.0 scalefont setfont (\000\134\000G\000r\000a\000p\000h\000i\000c\000s\000\045) show Q 571.364 30.0000 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000 \000&\000 \000C\000a\000r\000d) show Q 605.265 35.0269 moveto q 1 -1 scale /SansSerif-Italic findfont 7.0 scalefont setfont (\000\051\000A\000d\000a\000p\000t\000e\000r\000\051) show Q 633.011 30.0000 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000>) show Q -38.8511 101.719 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000<\000V\000e\000c\000t\000o\000r) show Q -4.10988 96.6920 moveto q 1 -1 scale /SansSerif-Bold findfont 7.0 scalefont setfont (\000\134\000G\000r\000a\000p\000h\000i\000c\000s\000\045) show Q 32.5125 101.719 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000 \000&\000 \000C\000a\000r\000d) show Q 66.4139 106.746 moveto q 1 -1 scale /SansSerif-Italic findfont 7.0 scalefont setfont (\000\051\000A\000d\000a\000p\000t\000e\000r\000\051) show Q 94.1602 101.719 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000>) show Q 230.574 101.719 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000<\000V\000e\000c\000t\000o\000r) show Q 265.316 96.6920 moveto q 1 -1 scale /SansSerif-Bold findfont 7.0 scalefont setfont (\000\134\000G\000r\000a\000p\000h\000i\000c\000s\000\045) show Q 301.938 101.719 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000 \000&\000 \000C\000a\000r\000d) show Q 335.839 106.746 moveto q 1 -1 scale /SansSerif-Italic findfont 7.0 scalefont setfont (\000\051\000A\000d\000a\000p\000t\000e\000r\000\051) show Q 363.586 101.719 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000>) show Q 500.000 101.719 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000<\000V\000e\000c\000t\000o\000r) show Q 534.741 96.6920 moveto q 1 -1 scale /SansSerif-Bold findfont 7.0 scalefont setfont (\000\134\000G\000r\000a\000p\000h\000i\000c\000s\000\045) show Q 571.364 101.719 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000 \000&\000 \000C\000a\000r\000d) show Q 605.265 106.746 moveto q 1 -1 scale /SansSerif-Italic findfont 7.0 scalefont setfont (\000\051\000A\000d\000a\000p\000t\000e\000r\000\051) show Q 633.011 101.719 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000>) show Q -38.8511 155.859 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000<\000V\000e\000c\000t\000o\000r) show Q -4.10988 150.833 moveto q 1 -1 scale /SansSerif-Bold findfont 7.0 scalefont setfont (\000\134\000G\000r\000a\000p\000h\000i\000c\000s\000\045) show Q 32.5125 155.859 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000 \000&\000 \000C\000a\000r\000d) show Q 66.4139 160.886 moveto q 1 -1 scale /SansSerif-Italic findfont 7.0 scalefont setfont (\000\051\000A\000d\000a\000p\000t\000e\000r\000\051) show Q 94.1602 155.859 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000>) show Q 230.574 155.859 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000<\000V\000e\000c\000t\000o\000r) show Q 265.316 150.833 moveto q 1 -1 scale /SansSerif-Bold findfont 7.0 scalefont setfont (\000\134\000G\000r\000a\000p\000h\000i\000c\000s\000\045) show Q 301.938 155.859 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000 \000&\000 \000C\000a\000r\000d) show Q 335.839 160.886 moveto q 1 -1 scale /SansSerif-Italic findfont 7.0 scalefont setfont (\000\051\000A\000d\000a\000p\000t\000e\000r\000\051) show Q 363.586 155.859 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000>) show Q 500.000 155.859 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000<\000V\000e\000c\000t\000o\000r) show Q 534.741 150.833 moveto q 1 -1 scale /SansSerif-Bold findfont 7.0 scalefont setfont (\000\134\000G\000r\000a\000p\000h\000i\000c\000s\000\045) show Q 571.364 155.859 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000 \000&\000 \000C\000a\000r\000d) show Q 605.265 160.886 moveto q 1 -1 scale /SansSerif-Italic findfont 7.0 scalefont setfont (\000\051\000A\000d\000a\000p\000t\000e\000r\000\051) show Q 633.011 155.859 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000>) show Q -38.8511 203.511 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000<\000V\000e\000c\000t\000o\000r) show Q -4.10988 198.484 moveto q 1 -1 scale /SansSerif-Bold findfont 7.0 scalefont setfont (\000\134\000G\000r\000a\000p\000h\000i\000c\000s\000\045) show Q 32.5125 203.511 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000 \000&\000 \000C\000a\000r\000d) show Q 66.4139 208.537 moveto q 1 -1 scale /SansSerif-Italic findfont 7.0 scalefont setfont (\000\051\000A\000d\000a\000p\000t\000e\000r\000\051) show Q 94.1602 203.511 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000>) show Q 230.574 203.511 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000<\000V\000e\000c\000t\000o\000r) show Q 265.316 198.484 moveto q 1 -1 scale /SansSerif-Bold findfont 7.0 scalefont setfont (\000\134\000G\000r\000a\000p\000h\000i\000c\000s\000\045) show Q 301.938 203.511 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000 \000&\000 \000C\000a\000r\000d) show Q 335.839 208.537 moveto q 1 -1 scale /SansSerif-Italic findfont 7.0 scalefont setfont (\000\051\000A\000d\000a\000p\000t\000e\000r\000\051) show Q 363.586 203.511 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000>) show Q 500.000 203.511 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000<\000V\000e\000c\000t\000o\000r) show Q 534.741 198.484 moveto q 1 -1 scale /SansSerif-Bold findfont 7.0 scalefont setfont (\000\134\000G\000r\000a\000p\000h\000i\000c\000s\000\045) show Q 571.364 203.511 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000 \000&\000 \000C\000a\000r\000d) show Q 605.265 208.537 moveto q 1 -1 scale /SansSerif-Italic findfont 7.0 scalefont setfont (\000\051\000A\000d\000a\000p\000t\000e\000r\000\051) show Q 633.011 203.511 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000>) show Q 0.00000 0.00000 0.00000 RG -40.8511 256.281 142.851 22.2083 rf 1.00000 0.00000 0.00000 RG 0.00000 1.00000 1.00000 RG 2.00000 w bias -40.8511 256.281 142.851 22.2083 rs unbias 1.00000 0.00000 0.00000 RG 1.00000 w -38.8511 270.000 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000<\000V\000e\000c\000t\000o\000r) show Q -4.10988 264.973 moveto q 1 -1 scale /SansSerif-Bold findfont 7.0 scalefont setfont (\000\134\000G\000r\000a\000p\000h\000i\000c\000s\000\045) show Q 32.5125 270.000 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000 \000&\000 \000C\000a\000r\000d) show Q 66.4139 275.027 moveto q 1 -1 scale /SansSerif-Italic findfont 7.0 scalefont setfont (\000\051\000A\000d\000a\000p\000t\000e\000r\000\051) show Q 94.1602 270.000 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000>) show Q 0.00000 0.00000 0.00000 RG 228.574 256.281 142.851 22.2083 rf 1.00000 0.00000 0.00000 RG 0.00000 1.00000 1.00000 RG 2.00000 w bias 228.574 256.281 142.851 22.2083 rs unbias 1.00000 0.00000 0.00000 RG 1.00000 w 230.574 270.000 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000<\000V\000e\000c\000t\000o\000r) show Q 265.316 264.973 moveto q 1 -1 scale /SansSerif-Bold findfont 7.0 scalefont setfont (\000\134\000G\000r\000a\000p\000h\000i\000c\000s\000\045) show Q 301.938 270.000 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000 \000&\000 \000C\000a\000r\000d) show Q 335.839 275.027 moveto q 1 -1 scale /SansSerif-Italic findfont 7.0 scalefont setfont (\000\051\000A\000d\000a\000p\000t\000e\000r\000\051) show Q 363.586 270.000 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000>) show Q 0.00000 0.00000 0.00000 RG 498.000 256.281 142.851 22.2083 rf 1.00000 0.00000 0.00000 RG 0.00000 1.00000 1.00000 RG 2.00000 w bias 498.000 256.281 142.851 22.2083 rs unbias 1.00000 0.00000 0.00000 RG 1.00000 w 500.000 270.000 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000<\000V\000e\000c\000t\000o\000r) show Q 534.741 264.973 moveto q 1 -1 scale /SansSerif-Bold findfont 7.0 scalefont setfont (\000\134\000G\000r\000a\000p\000h\000i\000c\000s\000\045) show Q 571.364 270.000 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000 \000&\000 \000C\000a\000r\000d) show Q 605.265 275.027 moveto q 1 -1 scale /SansSerif-Italic findfont 7.0 scalefont setfont (\000\051\000A\000d\000a\000p\000t\000e\000r\000\051) show Q 633.011 270.000 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000>) show Q 0.00000 0.00000 0.00000 RG -40.8511 328.000 142.851 22.2083 rf 1.00000 0.00000 0.00000 RG -38.8511 341.719 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000<\000V\000e\000c\000t\000o\000r) show Q -4.10988 336.692 moveto q 1 -1 scale /SansSerif-Bold findfont 7.0 scalefont setfont (\000\134\000G\000r\000a\000p\000h\000i\000c\000s\000\045) show Q 32.5125 341.719 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000 \000&\000 \000C\000a\000r\000d) show Q 66.4139 346.746 moveto q 1 -1 scale /SansSerif-Italic findfont 7.0 scalefont setfont (\000\051\000A\000d\000a\000p\000t\000e\000r\000\051) show Q 94.1602 341.719 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000>) show Q 0.00000 0.00000 0.00000 RG 228.574 328.000 142.851 22.2083 rf 1.00000 0.00000 0.00000 RG 230.574 341.719 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000<\000V\000e\000c\000t\000o\000r) show Q 265.316 336.692 moveto q 1 -1 scale /SansSerif-Bold findfont 7.0 scalefont setfont (\000\134\000G\000r\000a\000p\000h\000i\000c\000s\000\045) show Q 301.938 341.719 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000 \000&\000 \000C\000a\000r\000d) show Q 335.839 346.746 moveto q 1 -1 scale /SansSerif-Italic findfont 7.0 scalefont setfont (\000\051\000A\000d\000a\000p\000t\000e\000r\000\051) show Q 363.586 341.719 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000>) show Q 0.00000 0.00000 0.00000 RG 498.000 328.000 142.851 22.2083 rf 1.00000 0.00000 0.00000 RG 500.000 341.719 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000<\000V\000e\000c\000t\000o\000r) show Q 534.741 336.692 moveto q 1 -1 scale /SansSerif-Bold findfont 7.0 scalefont setfont (\000\134\000G\000r\000a\000p\000h\000i\000c\000s\000\045) show Q 571.364 341.719 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000 \000&\000 \000C\000a\000r\000d) show Q 605.265 346.746 moveto q 1 -1 scale /SansSerif-Italic findfont 7.0 scalefont setfont (\000\051\000A\000d\000a\000p\000t\000e\000r\000\051) show Q 633.011 341.719 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000>) show Q 0.00000 1.00000 1.00000 RG 2.00000 w bias -40.8511 382.141 142.851 22.2083 rs unbias 1.00000 0.00000 0.00000 RG 1.00000 w -38.8511 395.859 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000<\000V\000e\000c\000t\000o\000r) show Q -4.10988 390.833 moveto q 1 -1 scale /SansSerif-Bold findfont 7.0 scalefont setfont (\000\134\000G\000r\000a\000p\000h\000i\000c\000s\000\045) show Q 32.5125 395.859 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000 \000&\000 \000C\000a\000r\000d) show Q 66.4139 400.886 moveto q 1 -1 scale /SansSerif-Italic findfont 7.0 scalefont setfont (\000\051\000A\000d\000a\000p\000t\000e\000r\000\051) show Q 94.1602 395.859 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000>) show Q 0.00000 1.00000 1.00000 RG 2.00000 w bias 228.574 382.141 142.851 22.2083 rs unbias 1.00000 0.00000 0.00000 RG 1.00000 w 230.574 395.859 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000<\000V\000e\000c\000t\000o\000r) show Q 265.316 390.833 moveto q 1 -1 scale /SansSerif-Bold findfont 7.0 scalefont setfont (\000\134\000G\000r\000a\000p\000h\000i\000c\000s\000\045) show Q 301.938 395.859 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000 \000&\000 \000C\000a\000r\000d) show Q 335.839 400.886 moveto q 1 -1 scale /SansSerif-Italic findfont 7.0 scalefont setfont (\000\051\000A\000d\000a\000p\000t\000e\000r\000\051) show Q 363.586 395.859 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000>) show Q 0.00000 1.00000 1.00000 RG 2.00000 w bias 498.000 382.141 142.851 22.2083 rs unbias 1.00000 0.00000 0.00000 RG 1.00000 w 500.000 395.859 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000<\000V\000e\000c\000t\000o\000r) show Q 534.741 390.833 moveto q 1 -1 scale /SansSerif-Bold findfont 7.0 scalefont setfont (\000\134\000G\000r\000a\000p\000h\000i\000c\000s\000\045) show Q 571.364 395.859 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000 \000&\000 \000C\000a\000r\000d) show Q 605.265 400.886 moveto q 1 -1 scale /SansSerif-Italic findfont 7.0 scalefont setfont (\000\051\000A\000d\000a\000p\000t\000e\000r\000\051) show Q 633.011 395.859 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000>) show Q -38.8511 443.511 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000<\000V\000e\000c\000t\000o\000r) show Q -4.10988 438.484 moveto q 1 -1 scale /SansSerif-Bold findfont 7.0 scalefont setfont (\000\134\000G\000r\000a\000p\000h\000i\000c\000s\000\045) show Q 32.5125 443.511 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000 \000&\000 \000C\000a\000r\000d) show Q 66.4139 448.537 moveto q 1 -1 scale /SansSerif-Italic findfont 7.0 scalefont setfont (\000\051\000A\000d\000a\000p\000t\000e\000r\000\051) show Q 94.1602 443.511 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000>) show Q 230.574 443.511 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000<\000V\000e\000c\000t\000o\000r) show Q 265.316 438.484 moveto q 1 -1 scale /SansSerif-Bold findfont 7.0 scalefont setfont (\000\134\000G\000r\000a\000p\000h\000i\000c\000s\000\045) show Q 301.938 443.511 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000 \000&\000 \000C\000a\000r\000d) show Q 335.839 448.537 moveto q 1 -1 scale /SansSerif-Italic findfont 7.0 scalefont setfont (\000\051\000A\000d\000a\000p\000t\000e\000r\000\051) show Q 363.586 443.511 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000>) show Q 500.000 443.511 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000<\000V\000e\000c\000t\000o\000r) show Q 534.741 438.484 moveto q 1 -1 scale /SansSerif-Bold findfont 7.0 scalefont setfont (\000\134\000G\000r\000a\000p\000h\000i\000c\000s\000\045) show Q 571.364 443.511 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000 \000&\000 \000C\000a\000r\000d) show Q 605.265 448.537 moveto q 1 -1 scale /SansSerif-Italic findfont 7.0 scalefont setfont (\000\051\000A\000d\000a\000p\000t\000e\000r\000\051) show Q 633.011 443.511 moveto q 1 -1 scale /SansSerif findfont 10.0 scalefont setfont (\000>) show Q Q end end restore showpage %%Trailer %%EOF src/test/resources/ps/TestLineStyles.ps0000644000175000017500000011337610344614150017610 0ustar user01user01%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 20 118 575 673 %%Creator: FreeHEP Graphics2D Driver %%Producer: org.freehep.graphicsio.ps.PSGraphics2D %%For: %%Title: %%LanguageLevel: 3 %%EndComments %%BeginProlog 100 dict dup begin % % File: org/freehep/graphicsio.ps/PSProlog.txt % Author: Charles Loomis % % Redefinitions which save some space in the output file. These are also % the same as the PDF operators. /q {gsave} def /Q {grestore} def /n {newpath} def /m {moveto} def /l {lineto} def /c {curveto} def /h {closepath} def /re {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath} def /f {fill} def /f* {eofill} def /F {gsave vg&FC fill grestore} def /F* {gsave vg&FC eofill grestore} def /s {closepath stroke} def /S {stroke} def /b {closepath gsave vg&FC fill grestore gsave stroke grestore newpath} def /B {gsave vg&FC fill grestore gsave stroke grestore newpath} def /b* {closepath gsave vg&FC eofill grestore gsave stroke grestore newpath} def /B* {gsave vg&FC eofill grestore gsave stroke grestore newpath} def /g {1 array astore /vg&fcolor exch def} def /G {setgray} def /k {4 array astore /vg&fcolor exch def} def /K {setcmykcolor} def /rg {3 array astore /vg&fcolor exch def} def /RG {setrgbcolor} def % Initialize the fill color. 0 0 0 rg /vg&FC {mark vg&fcolor aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /vg&DFC {/vg&fcolor exch def} def /vg&C {mark exch aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /w {setlinewidth} def /j {setlinejoin} def /J {setlinecap} def /M {setmiterlimit} def /d {setdash} def /i {setflat} def /W {clip} def /W* {eoclip} def % Setup the default graphics state. % (black; 1 pt. linewidth; miter join; butt-ends; solid) /defaultGraphicsState {0 g 1 w 0 j 0 J [] 0 d} def % Emulation of the rectangle operators for PostScript implementations % which do not implement all Level 2 features. This is an INCOMPLETE % emulation; only the "x y width height rect..." form is emulated. /*rf {gsave newpath re fill grestore} def /*rs {gsave newpath re stroke grestore} def /*rc {newpath re clip} def /rf /rectfill where {pop /rectfill}{/*rf} ifelse load def /rs /rectstroke where {pop /rectstroke}{/*rs} ifelse load def /rc /rectclip where {pop /rectclip}{/*rc} ifelse load def % Emulation of the selectfont operator. This includes a 20% increase in % the fontsize which is necessary to get sizes similar to the Java fonts. /*sf {exch findfont exch dup type /arraytype eq {makefont}{scalefont} ifelse setfont} bind def /sf /selectfont where {pop {1.2 mul selectfont}}{{1.2 mul *sf}} ifelse def % Special version of stroke which allows the dash pattern to continue % across path segments. (This may be needed for PostScript although % modern printers seem to do this correctly.) /vg&stroke { currentdash pop length 0 eq {stroke} { currentdash /vg&doffset exch def pop flattenpath {m vg&resetdash} {2 copy currentpoint 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt 3 1 roll l currentdash 3 -1 roll add setdash} {} {h vg&resetdash} pathforall stroke vg&resetdash } ifelse } def /vg&resetdash {currentdash pop vg&doffset setdash} def % Initialize variables for safety. /delta 0 def /xv 0 def /yv 0 def /width 0 def /height 0 def % Initialize to portrait INTERNATIONAL (Letter-height, A4-width) page. /pw 595 def /ph 791 def /po true def /ftp false def % Initialize margins to 20 points. /ml 20 def /mr 20 def /mt 20 def /mb 20 def % Temporary matrices. /smatrix 0 def /nmatrix 0 def % set page size (usage: setpagesize) /setpagesize {/ph exch def /pw exch def} def % set page orientation (usage: portrait or landscape) /portrait {/po true def} def /landscape {/po false def} def % force natural size for image (usage: naturalsize) /naturalsize {/ftp false def} def % resize image to fill page (usage: fittopage) /fittopage {/ftp true def} def % set margins of the page (usage: setmargins) /setmargins {/mr exch def /mt exch def /mb exch def /ml exch def} def % set the graphic's size (usage: setsize) /setsize {/gh exch def /gw exch def} def % set the graphic's origin (usage: setorigin) /setorigin {/gy exch def /gx exch def} def % calculate image center /imagecenter {pw ml sub mr sub 2 div ml add ph mt sub mb sub 2 div mb add} def % calculate the necessary scaling /imagescale {po {gw}{gh} ifelse pw ml sub mr sub div po {gh}{gw} ifelse ph mt sub mb sub div 2 copy lt {exch} if pop ftp not {1 2 copy lt {exch} if pop} if 1 exch div /sfactor exch def /gw gw sfactor mul def /gh gh sfactor mul def} def % calculate image origin /imageorigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div po {add}{sub} ifelse} def % calculate the clipping origin /cliporigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub floor ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div sub floor} def % Set the clipping region to the bounding box. /cliptobounds {cliporigin po {gw}{gh} ifelse 1 add po {gh}{gw} ifelse 1 add rc} def % set the base transformation matrix (usage: setbasematrix) /setbasematrix {imageorigin translate po {0}{90} ifelse rotate sfactor sfactor neg scale /defaultmatrix matrix currentmatrix def} def % The lower-right bias in drawing 1 pt. wide lines. /bias {q 0.5 0.5 translate} def /unbias {Q} def % Draw a line. (x0 y0 x1 y1 line) /L {bias n m l S unbias} def % Polyline primitive. /polyline {n m 1 exch 1 exch {pop currentfile token pop currentfile token pop l} for } def % Draw a polyline (n x0 y0 OPL x1 y1 x2 y2 ... ... xn yn) /OPL {bias polyline S unbias} def % Draw a closed polyline (n x0 y0 CPL x1 y1 x2 y2 ... ... xn yn) /CPL {bias polyline s unbias} def % Draw a filled polyline (n x0 y0 FPL x1 y1 x2 y2 ... ... xn yn) /FPL {polyline h f*} def % Draw an oval. (x y w h OVL) /OVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width currentlinewidth sub 2 div height currentlinewidth sub 2 div neg scale n 0 0 1 5 -2 roll arc smatrix setmatrix S} def % Draw a filled oval. (x y w h FOVL) /FOVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width 2 div height 2 div neg scale n 0 0 m 0 0 1 5 -2 roll arc h smatrix setmatrix f} def % Draw a rounded rectangle. (x y w h arcwidth archeight RREC) /RREC {matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix s} def % Draw a filled rounded rectangle. (x y w h arcwidth archeight FRREC) /FRREC{matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix h f} def % Draw a string. (string x y STR) /STR {q m 1 -1 scale recshow Q} def % Define basic plot symbols. /xys {/siz exch def /yv exch def /xv exch def} def /hline {xys n xv siz 2. div sub yv m siz 0 rlineto S} def /vline {xys n xv yv siz 2. div sub m 0 siz rlineto S} def /plus {xys n xv yv siz 2. div sub m 0 siz rlineto xv siz 2. div sub yv m siz 0 rlineto S} def /dot {n 2. div 0 360 arc s} def /fdot {n 2. div 0 360 arc h f} def /box {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rs} def /fbox {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rf} def /tridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto s} def /ftridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto h f} def % Symbols defined in terms of the others. /star {3 copy cross plus} def /cross {xys q xv yv translate 45 rotate 0 0 siz plus Q} def /diamond {xys q xv yv translate 45 rotate 0 0 siz box Q} def /fdiamond {xys q xv yv translate 45 rotate 0 0 siz fbox Q} def /triup {xys q xv yv translate 180 rotate 0 0 siz tridn Q} def /ftriup {xys q xv yv translate 180 rotate 0 0 siz ftridn Q} def % Define the composite fonts used to print Unicode strings. % Undefine particular values in an encoding array. /vg&undef { {exch dup 3 -1 roll /.notdef put} forall } def /vg&redef { {3 -1 roll dup 4 2 roll put} forall } def % usage: key encoding basefontname vg&newbasefont font /vg&newbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def currentdict end definefont } def % usage: key encoding basefontname vg&newskewedbasefont font /vg&newskewedbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def exch FontMatrix exch matrix concatmatrix /FontMatrix exch def currentdict end definefont } def % usage: basekey suffix vg&nconcat name /vg&nconcat { 2 {dup length string cvs exch} repeat dup length 3 -1 roll dup length 3 -1 roll add string dup 0 4 -1 roll dup length 5 1 roll putinterval dup 4 -2 roll exch putinterval cvn } def %usage: fontname vg&skewmatrix matrix /vg&skewmatrix { findfont dup /FontInfo known { /FontInfo get dup /ItalicAngle known { [ 1 0 4 -1 roll /ItalicAngle get neg dup sin exch cos div 1 0 0 ] } {pop matrix} ifelse } {pop matrix} ifelse } def % usage: newfontname basefontname vg&newcompositefont -- /vg&newcompositefont { /vg&fstyle exch def /vg&bfont exch def /vg&fname exch def << /FontStyleBits vg&fstyle /FontType 0 /FontMatrix matrix /FontName vg&fname /FMapType 2 /Encoding [ 0 1 255 {pop 6} for ] dup 16#00 0 put % Latin dup 16#03 1 put % Greek dup 16#20 2 put % Punctuation dup 16#21 3 put % Arrows dup 16#22 4 put % MathOps dup 16#27 5 put % Dingbats /FDepVector [ vg&bfont /-UC-Latin vg&nconcat UCLatinEncoding vg&bfont vg&newbasefont vg&bfont vg&skewmatrix vg&bfont /-UC-Greek vg&nconcat UCGreekEncoding /Symbol vg&newskewedbasefont vg&bfont /-UC-Punctuation vg&nconcat UCPunctuationEncoding vg&bfont vg&newbasefont /Arrows-UC findfont /MathOps-UC findfont /Dingbats-UC findfont /Undefined-UC findfont ] >> vg&fname exch definefont pop } def % Null encoding vector (all elements set to .notdef) /NullEncoding [ 256 {/.notdef} repeat ] def % Unicode Latin encoding (unicode codes \u0000-\u00ff) /UCLatinEncoding ISOLatin1Encoding dup length array copy dup 16#60 /grave put [ 16#90 16#91 16#92 16#93 16#94 16#95 16#96 16#97 16#98 16#9a 16#9b 16#9d 16#9e 16#9f ] vg&undef def % Unicode Greek encoding (unicode codes \u0370-\u03ff) /UCGreekEncoding NullEncoding dup length array copy << 16#91 /Alpha 16#92 /Beta 16#93 /Gamma 16#94 /Delta 16#95 /Epsilon 16#96 /Zeta 16#97 /Eta 16#98 /Theta 16#99 /Iota 16#9a /Kappa 16#9b /Lambda 16#9c /Mu 16#9d /Nu 16#9e /Xi 16#9f /Omicron 16#a0 /Pi 16#a1 /Rho 16#a3 /Sigma 16#a4 /Tau 16#a5 /Upsilon 16#a6 /Phi 16#a7 /Chi 16#a8 /Psi 16#a9 /Omega 16#b1 /alpha 16#b2 /beta 16#b3 /gamma 16#b4 /delta 16#b5 /epsilon 16#b6 /zeta 16#b7 /eta 16#b8 /theta 16#b9 /iota 16#ba /kappa 16#bb /lambda 16#bc /mu 16#bd /nu 16#be /xi 16#bf /omicron 16#c0 /pi 16#c1 /rho 16#c2 /sigma1 16#c3 /sigma 16#c4 /tau 16#c5 /upsilon 16#c6 /phi1 16#c7 /chi 16#c8 /psi 16#c9 /omega 16#7e /semicolon 16#87 /dotmath 16#d1 /theta1 16#d2 /Upsilon1 16#d5 /phi 16#d6 /omega1 >> vg&redef def % Unicode punctuation encoding (unicode codes \u2000-\u206f) /UCPunctuationEncoding NullEncoding dup length array copy << 16#10 /hyphen 16#11 /hyphen 16#12 /endash 16#13 /emdash 16#18 /quoteleft 16#19 /quoteright 16#1a /quotesinglbase 16#1b /quotesingle 16#1c /quotedblleft 16#1d /quotedblright 16#1e /quotedblbase 16#1f /quotedbl 16#20 /dagger 16#21 /daggerdbl 16#22 /bullet 16#24 /period 16#26 /ellipsis 16#27 /periodcentered 16#30 /perthousand 16#44 /fraction 16#70 /zerosuperior 16#74 /foursuperior 16#75 /fivesuperior 16#76 /sixsuperior 16#77 /sevensuperior 16#78 /eightsuperior 16#79 /ninesuperior 16#7b /hyphensuperior 16#7d /parenleftsuperior 16#7e /parenrightsuperior 16#80 /zeroinferior 16#84 /fourinferior 16#85 /fiveinferior 16#81 /oneinferior 16#82 /twoinferior 16#83 /threeinferior 16#86 /sixinferior 16#87 /seveninferior 16#88 /eightinferior 16#89 /nineinferior 16#8b /hypheninferior 16#8d /parenleftinferior 16#8e /parenrightinferior >> vg&redef def % Unicode mathematical operators encoding (unicode codes \u2200-\u22ff) /UCMathOpsEncoding NullEncoding dup length array copy << 16#00 /universal 16#02 /partialdiff 16#03 /existential 16#05 /emptyset 16#06 /Delta 16#07 /gradient 16#08 /element 16#09 /notelement 16#0b /suchthat 16#0f /product 16#11 /summation 16#12 /minus 16#15 /fraction 16#17 /asteriskmath 16#19 /bullet 16#1a /radical 16#1d /proportional 16#1e /infinity 16#20 /angle 16#23 /bar 16#27 /logicaland 16#28 /logicalor 16#29 /intersection 16#2a /union 16#2b /integral 16#34 /therefore 16#36 /colon 16#3c /similar 16#45 /congruent 16#48 /approxequal 16#60 /notequal 16#61 /equivalence 16#64 /lessequal 16#65 /greaterequal 16#82 /propersubset 16#83 /propersuperset 16#86 /reflexsubset 16#87 /reflexsuperset 16#95 /circleplus 16#97 /circlemultiply 16#a5 /perpendicular 16#03 /existential 16#c0 /logicaland 16#c1 /logicalor 16#c2 /intersection 16#c3 /union 16#c4 /diamond 16#c5 /dotmath >> vg&redef def % Unicode arrows encoding (unicode codes \u2190-\u21ff) % Also includes those "Letterlike" unicode characters % which are available in the symbol font. (unicode codes \u2100-\u214f) /UCArrowsEncoding NullEncoding dup length array copy << 16#11 /Ifraktur 16#1c /Rfraktur 16#22 /trademarkserif 16#35 /aleph 16#90 /arrowleft 16#91 /arrowup 16#92 /arrowright 16#93 /arrowdown 16#94 /arrowboth 16#d0 /arrowdblleft 16#d1 /arrowdblup 16#d2 /arrowdblright 16#d3 /arrowdbldown 16#d4 /arrowdblboth >> vg&redef def /ZapfDingbats findfont /Encoding get dup length array copy /UCDingbatsEncoding exch def 16#20 1 16#7f { dup 16#20 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for 16#a0 1 16#ff { dup 16#40 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for UCDingbatsEncoding [ 16#c0 1 16#ff {} for ] vg&undef [ 16#00 16#05 16#0a 16#0b 16#28 16#4c 16#4e 16#53 16#54 16#55 16#57 16#5f 16#60 16#68 16#69 16#6a 16#6b 16#6c 16#6d 16#6e 16#6f 16#70 16#71 16#72 16#73 16#74 16#75 16#95 16#96 16#97 16#b0 16#bf ] vg&undef pop % Define the base fonts which don't change. /Undefined-UC NullEncoding /Helvetica vg&newbasefont pop /MathOps-UC UCMathOpsEncoding /Symbol vg&newbasefont pop /Arrows-UC UCArrowsEncoding /Symbol vg&newbasefont pop /Dingbats-UC UCDingbatsEncoding /ZapfDingbats vg&newbasefont pop % Make the SansSerif composite fonts. /SansSerif /Helvetica 16#00 vg&newcompositefont /SansSerif-Bold /Helvetica-Bold 16#01 vg&newcompositefont /SansSerif-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /SansSerif-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Serif composite fonts. /Serif /Times-Roman 16#00 vg&newcompositefont /Serif-Bold /Times-Bold 16#01 vg&newcompositefont /Serif-Italic /Times-Italic 16#02 vg&newcompositefont /Serif-BoldItalic /Times-BoldItalic 16#03 vg&newcompositefont % Make the Monospaced composite fonts. /Monospaced /Courier 16#00 vg&newcompositefont /Monospaced-Bold /Courier-Bold 16#01 vg&newcompositefont /Monospaced-Italic /Courier-Oblique 16#02 vg&newcompositefont /Monospaced-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont % Make the Dialog composite fonts. /Dialog /Helvetica 16#00 vg&newcompositefont /Dialog-Bold /Helvetica-Bold 16#01 vg&newcompositefont /Dialog-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /Dialog-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the DialogInput composite fonts. /DialogInput /Helvetica 16#00 vg&newcompositefont /DialogInput-Bold /Helvetica-Bold 16#01 vg&newcompositefont /DialogInput-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /DialogInput-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Typewriter composite fonts (JDK 1.1 only). /Typewriter /Courier 16#00 vg&newcompositefont /Typewriter-Bold /Courier-Bold 16#01 vg&newcompositefont /Typewriter-Italic /Courier-Oblique 16#02 vg&newcompositefont /Typewriter-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont /cfontH { dup /fontsize exch def /SansSerif exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHB { dup /fontsize exch def /SansSerif-Bold exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHI { dup /fontsize exch def /SansSerif-Italic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHBI { dup /fontsize exch def /SansSerif-BoldItalic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontT { dup /fontsize exch def /Serif exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTB { dup /fontsize exch def /Serif-Bold exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTI { dup /fontsize exch def /Serif-Italic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTBI { dup /fontsize exch def /Serif-BoldItalic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontC { dup /fontsize exch def /Typewriter exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCB { dup /fontsize exch def /Typewriter-Bold exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCI { dup /fontsize exch def /Typewriter-Italic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCBI { dup /fontsize exch def /Typewriter-BoldItalic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def % Darken or lighten the current color. /darken {0.7 exch exp 3 copy q 4 -1 roll vg&C currentrgbcolor 3 {4 -2 roll mul} repeat 3 array astore Q} def /displayColorMap << /Cr [1.00 0.00 0.00] /Cg [0.00 1.00 0.00] /Cb [0.00 0.00 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.00 0.00] /CGg [0.00 1.00 0.00] /CGb [0.00 0.00 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.00 0.00] /CIg [0.00 1.00 0.00] /CIb [0.00 0.00 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /printColorMap << /Cr [1.00 0.33 0.33] /Cg [0.33 1.00 0.33] /Cb [0.33 0.33 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.33 0.33] /CGg [0.33 1.00 0.33] /CGb [0.33 0.33 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.33 0.33] /CIg [0.33 1.00 0.33] /CIb [0.33 0.33 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /grayColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [0.75] /CGg [1 ] /CGb [0.50] /CGc [0.75] /CGm [0.50] /CGy [1 ] /CGo [0.75] /CGp [1 ] /CGw [0 ] /CGgrl [0.25] /CGgr [0.50] /CGgrd [0.75] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def /bwColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [1 ] /CGg [1 ] /CGb [1 ] /CGc [1 ] /CGm [1 ] /CGy [1 ] /CGo [1 ] /CGp [1 ] /CGw [0 ] /CGgrl [1 ] /CGgr [1 ] /CGgrd [1 ] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def % % The following routines handle the alignment of and printing of % tagged strings. % % Predefine the bounding box values. /bbllx 0 def /bblly 0 def /bburx 0 def /bbury 0 def % This routine pops the first unicode character off of a string and returns % the remainder of the string, the character code of first character, % and a "true" if the string was non-zero length. % popfirst % popfirst /popfirst { dup length 1 gt {dup 0 get /vg&fbyte exch def dup 1 get /vg&cbyte exch def dup length 2 sub 2 exch getinterval true} {pop false} ifelse } def % This routine shows a single unicode character given the font and % character codes. % unicharshow -- /unicharshow { 2 string dup 0 5 -1 roll put dup 1 4 -1 roll put internalshow } def % This is an internal routine to alternate between determining the % bounding box for stringsize and showing the string for recshow. % internalshow -- /internalshow {show} def % This is an internal routine to alternate between determining the % bounding box for stringsize and stroking various ornaments. % internalstroke -- /internalstroke {S} def % Sets up internalshow to use the null device to determine string size. % -- nullinternalshow -- /nullinternalshow {/internalshow {false charpath flattenpath pathbbox updatebbox} def} def % Sets up internalstroke to use the null device to determine string size. % -- nullinternalstroke -- /nullinternalstroke { /internalstroke {flattenpath pathbbox updatebbox} def} def % This routine tests to see if the character code matches the first % character of a string. % testchar /testchar {exch dup 3 -1 roll 0 get eq} def % Raise the text baseline for superscripts. % -- raise -- /raise { 0 fontsize 2 div rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-raise the text baseline for superscripts. % -- unraise -- /unraise { /fontsize fontsize 1.5 mul def 0 fontsize 2 div neg rmoveto } def % Lower the text baseline for subscripts. % -- lower -- /lower { 0 fontsize 3 div neg rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-lower the text baseline for subscripts. % -- unlower -- /unlower { /fontsize fontsize 1.5 mul def 0 fontsize 3 div rmoveto } def % Compare the top two elements on the stack and leave only the % larger one. /maxval {2 copy gt {pop} {exch pop} ifelse} def % Tokenize a string. Do not use the usual PostScript token because % parentheses will not be interpreted correctly because of rescanning % of the string. /vg&token {/vg&string exch def /vg&index -1 def /vg&level 0 def 0 2 vg&string length 2 sub { dup dup 1 add exch vg&string exch get 8 bitshift vg&string 3 -1 roll get or dup 16#f0fe eq {pop 1}{16#f0ff eq {-1}{0} ifelse} ifelse /vg&level exch vg&level add def vg&level 0 eq {/vg&index exch def exit} if pop } for vg&index 0 ge { vg&string vg&index 2 add dup vg&string length exch sub getinterval vg&index 2 gt {vg&string 2 vg&index 2 sub getinterval}{()} ifelse true} {false} ifelse } bind def % Recursively show an unicode string. % recshow -- /recshow { popfirst { % Test to see if this is a string attribute. vg&fbyte 16#f0 and 16#e0 eq { q % Font style. currentfont dup /FontStyleBits known {/FontStyleBits get}{pop 0} ifelse vg&cbyte or vg&fontstyles exch get fontsize exch exec vg&token pop recshow currentpoint Q m recshow } { vg&fbyte 16#F8 and 16#F0 eq { % Superscript and/or subscript. vg&cbyte 16#00 eq { vg&token pop exch vg&token pop 3 -1 roll q raise recshow unraise currentpoint pop Q exch q lower recshow unlower currentpoint pop Q maxval currentpoint exch pop m recshow } if % Strikeout. vg&cbyte 16#01 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll fontsize 3 div add moveto fontsize 3 div add lineto internalstroke Q recshow} if % Underline. vg&cbyte 16#02 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dashed underline. vg&cbyte 16#03 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J [ vg&uthick 5 mul vg&uthick 2 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dotted underline. vg&cbyte 16#04 eq { vg&token pop currentpoint 3 -1 roll recshow q 1 J [ 0 vg&uthick 3 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Thick underline. vg&cbyte 16#05 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Gray thick underline. vg&cbyte 16#06 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w 0.5 setgray currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Overbar. vg&cbyte 16#07 eq { vg&token pop dup stringsize relative 4 1 roll pop pop exch 3 -1 roll recshow q 0 J vg&underline vg&uthick w vg&uoffset neg add dup currentpoint pop exch m l internalstroke Q recshow} if } { vg&fbyte vg&cbyte unicharshow recshow } ifelse } ifelse } if } def % Get the underline position and thickness from the current font. /vg&underline { currentfont dup /FontType get 0 eq {/FDepVector get 0 get} if dup dup /FontInfo known { /FontInfo get dup dup /UnderlinePosition known { /UnderlinePosition get /vg&uoffset exch def } { pop /vg&uoffset 0 def } ifelse dup /UnderlineThickness known { /UnderlineThickness get /vg&uthick exch def } { pop /vg&uthick 0 def } ifelse } { pop /vg&uoffset 0 def /vg&uthick 0 def } ifelse /FontMatrix get currentfont dup /FontType get 0 eq {/FontMatrix get matrix concatmatrix}{pop} ifelse dup 0 vg&uoffset 3 -1 roll transform /vg&uoffset exch def pop 0 vg&uthick 3 -1 roll transform /vg&uthick exch def pop } def % Make a frame with the coordinates on the stack. % frame -- /frame {4 copy m 3 1 roll exch l 4 -2 roll l l h} def % Resets the accumulated bounding box to a degenerate box at the % current point. % -- resetbbox -- /resetbbox { currentpoint 2 copy /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Update the accumulated bounding box. % updatebbox -- /updatebbox { dup bbury gt {/bbury exch def} {pop} ifelse dup bburx gt {/bburx exch def} {pop} ifelse dup bblly lt {/bblly exch def} {pop} ifelse dup bbllx lt {/bbllx exch def} {pop} ifelse } def % Set the bounding box to the values on the stack. % updatebbox -- /restorebbox { /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Push the accumulated bounding box onto the stack. % -- pushbbox /pushbbox {bbllx bblly bburx bbury} def % Make the relative bounding box relative to the currentpoint. % inflate /inflate { 2 {fontsize 0.2 mul add 4 1 roll} repeat 2 {fontsize 0.2 mul sub 4 1 roll} repeat } def % Make the relative bounding box relative to the currentpoint. % relative /relative { currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll } def % Returns the size of a string appropriate for recshow. % stringsize /stringsize { pushbbox /internalshow load /internalstroke load 7 -1 roll q nulldevice 0 0 m nullinternalshow nullinternalstroke resetbbox recshow /internalstroke exch def /internalshow exch def pushbbox 8 -4 roll restorebbox Q } def % Calculate values for string positioning. /calcval {4 copy 3 -1 roll sub /widy exch def sub neg /widx exch def pop pop /dy exch def /dx exch def} def % Utilities to position a string. % First letter (U=upper, C=center, B=baseline, L=lower) % Second letter (L=left, C=center, R=right) /align [ {calcval dx neg widy dy add neg rmoveto} % UL {calcval dx neg widy 2 div dy add neg rmoveto} % CL {calcval dx neg 0 rmoveto} % BL {calcval dx neg dy neg rmoveto} % LL {calcval widx dx add neg widy dy add neg rmoveto} % UR {calcval widx dx add neg widy 2 div dy add neg rmoveto} % CR {calcval widx dx add neg 0 rmoveto} % BR {calcval widx dx add neg dy neg rmoveto} % LR {calcval widx 2 div dx add neg widy dy add neg rmoveto} % UC {calcval widx 2 div dx add neg widy 2 div dy add neg rmoveto} % CC {calcval widx 2 div dx add neg 0 rmoveto} % BC {calcval widx 2 div dx add neg dy neg rmoveto} % LC ] def /vg&str {m q 1 -1 scale dup stringsize 4 copy align 11 -1 roll get exec q inflate relative frame exch exec Q recshow Q} def end /procDict exch def %%EndProlog %%BeginSetup save procDict begin printColorMap begin 595 791 setpagesize 20 20 20 20 setmargins 0 0 setorigin 600 600 setsize fittopage portrait imagescale cliptobounds setbasematrix /Helvetica 10 sf defaultGraphicsState %%EndSetup 0.00000 0.00000 0.00000 RG [ 1.00000 0.00000 0.00000 1.00000 0.00000 0.00000 ] defaultmatrix matrix concatmatrix setmatrix 1.00000 w 2 J 0 j 10.0000 M [ ] 0.00000 d .800000 .800000 .800000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG q 0 0 600 600 rc 1.00000 1.00000 1.00000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG 0.00000 w 600.000 15.0000 0.00000 15.0000 L 3.00000 w 0 J 2 j [ 5.00000 2.00000 ] 0.00000 d newpath 166.000 166.000 m 34.0000 166.000 l 34.0000 133.000 l 166.000 133.000 l 166.000 67.0000 l 34.0000 67.0000 l 34.0000 34.0000 l 166.000 34.0000 l S 1 J 0 j [ 0.00000 7.00000 ] 0.00000 d newpath 366.000 166.000 m 234.000 166.000 l 234.000 133.000 l 366.000 133.000 l 366.000 67.0000 l 234.000 67.0000 l 234.000 34.0000 l 366.000 34.0000 l S 2 J 1 j [ 10.0000 5.00000 2.00000 5.00000 ] 0.00000 d newpath 566.000 166.000 m 434.000 166.000 l 434.000 133.000 l 566.000 133.000 l 566.000 67.0000 l 434.000 67.0000 l 434.000 34.0000 l 566.000 34.0000 l S 5.00000 w 0 J 2 j [ 5.00000 2.00000 ] 0.00000 d newpath 166.000 366.000 m 34.0000 366.000 l 34.0000 333.000 l 166.000 333.000 l 166.000 267.000 l 34.0000 267.000 l 34.0000 234.000 l 166.000 234.000 l S 1 J 0 j [ 0.00000 7.00000 ] 0.00000 d newpath 366.000 366.000 m 234.000 366.000 l 234.000 333.000 l 366.000 333.000 l 366.000 267.000 l 234.000 267.000 l 234.000 234.000 l 366.000 234.000 l S 2 J 1 j [ 10.0000 5.00000 2.00000 5.00000 ] 0.00000 d newpath 566.000 366.000 m 434.000 366.000 l 434.000 333.000 l 566.000 333.000 l 566.000 267.000 l 434.000 267.000 l 434.000 234.000 l 566.000 234.000 l S 20.0000 w 0 J 2 j [ ] 0.00000 d newpath 166.000 566.000 m 34.0000 566.000 l 34.0000 533.000 l 166.000 533.000 l 166.000 467.000 l 34.0000 467.000 l 34.0000 434.000 l 166.000 434.000 l S 1 J 0 j newpath 366.000 566.000 m 234.000 566.000 l 234.000 533.000 l 366.000 533.000 l 366.000 467.000 l 234.000 467.000 l 234.000 434.000 l 366.000 434.000 l S 2 J 1 j newpath 566.000 566.000 m 434.000 566.000 l 434.000 533.000 l 566.000 533.000 l 566.000 467.000 l 434.000 467.000 l 434.000 434.000 l 566.000 434.000 l S Q end end restore showpage %%Trailer %%EOF src/test/resources/ps/TestGraphicsContexts.ps0000644000175000017500000011070510344614150020776 0ustar user01user01%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 20 118 575 673 %%Creator: FreeHEP Graphics2D Driver %%Producer: org.freehep.graphicsio.ps.PSGraphics2D %%For: %%Title: %%LanguageLevel: 3 %%EndComments %%BeginProlog 100 dict dup begin % % File: org/freehep/graphicsio.ps/PSProlog.txt % Author: Charles Loomis % % Redefinitions which save some space in the output file. These are also % the same as the PDF operators. /q {gsave} def /Q {grestore} def /n {newpath} def /m {moveto} def /l {lineto} def /c {curveto} def /h {closepath} def /re {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath} def /f {fill} def /f* {eofill} def /F {gsave vg&FC fill grestore} def /F* {gsave vg&FC eofill grestore} def /s {closepath stroke} def /S {stroke} def /b {closepath gsave vg&FC fill grestore gsave stroke grestore newpath} def /B {gsave vg&FC fill grestore gsave stroke grestore newpath} def /b* {closepath gsave vg&FC eofill grestore gsave stroke grestore newpath} def /B* {gsave vg&FC eofill grestore gsave stroke grestore newpath} def /g {1 array astore /vg&fcolor exch def} def /G {setgray} def /k {4 array astore /vg&fcolor exch def} def /K {setcmykcolor} def /rg {3 array astore /vg&fcolor exch def} def /RG {setrgbcolor} def % Initialize the fill color. 0 0 0 rg /vg&FC {mark vg&fcolor aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /vg&DFC {/vg&fcolor exch def} def /vg&C {mark exch aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /w {setlinewidth} def /j {setlinejoin} def /J {setlinecap} def /M {setmiterlimit} def /d {setdash} def /i {setflat} def /W {clip} def /W* {eoclip} def % Setup the default graphics state. % (black; 1 pt. linewidth; miter join; butt-ends; solid) /defaultGraphicsState {0 g 1 w 0 j 0 J [] 0 d} def % Emulation of the rectangle operators for PostScript implementations % which do not implement all Level 2 features. This is an INCOMPLETE % emulation; only the "x y width height rect..." form is emulated. /*rf {gsave newpath re fill grestore} def /*rs {gsave newpath re stroke grestore} def /*rc {newpath re clip} def /rf /rectfill where {pop /rectfill}{/*rf} ifelse load def /rs /rectstroke where {pop /rectstroke}{/*rs} ifelse load def /rc /rectclip where {pop /rectclip}{/*rc} ifelse load def % Emulation of the selectfont operator. This includes a 20% increase in % the fontsize which is necessary to get sizes similar to the Java fonts. /*sf {exch findfont exch dup type /arraytype eq {makefont}{scalefont} ifelse setfont} bind def /sf /selectfont where {pop {1.2 mul selectfont}}{{1.2 mul *sf}} ifelse def % Special version of stroke which allows the dash pattern to continue % across path segments. (This may be needed for PostScript although % modern printers seem to do this correctly.) /vg&stroke { currentdash pop length 0 eq {stroke} { currentdash /vg&doffset exch def pop flattenpath {m vg&resetdash} {2 copy currentpoint 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt 3 1 roll l currentdash 3 -1 roll add setdash} {} {h vg&resetdash} pathforall stroke vg&resetdash } ifelse } def /vg&resetdash {currentdash pop vg&doffset setdash} def % Initialize variables for safety. /delta 0 def /xv 0 def /yv 0 def /width 0 def /height 0 def % Initialize to portrait INTERNATIONAL (Letter-height, A4-width) page. /pw 595 def /ph 791 def /po true def /ftp false def % Initialize margins to 20 points. /ml 20 def /mr 20 def /mt 20 def /mb 20 def % Temporary matrices. /smatrix 0 def /nmatrix 0 def % set page size (usage: setpagesize) /setpagesize {/ph exch def /pw exch def} def % set page orientation (usage: portrait or landscape) /portrait {/po true def} def /landscape {/po false def} def % force natural size for image (usage: naturalsize) /naturalsize {/ftp false def} def % resize image to fill page (usage: fittopage) /fittopage {/ftp true def} def % set margins of the page (usage: setmargins) /setmargins {/mr exch def /mt exch def /mb exch def /ml exch def} def % set the graphic's size (usage: setsize) /setsize {/gh exch def /gw exch def} def % set the graphic's origin (usage: setorigin) /setorigin {/gy exch def /gx exch def} def % calculate image center /imagecenter {pw ml sub mr sub 2 div ml add ph mt sub mb sub 2 div mb add} def % calculate the necessary scaling /imagescale {po {gw}{gh} ifelse pw ml sub mr sub div po {gh}{gw} ifelse ph mt sub mb sub div 2 copy lt {exch} if pop ftp not {1 2 copy lt {exch} if pop} if 1 exch div /sfactor exch def /gw gw sfactor mul def /gh gh sfactor mul def} def % calculate image origin /imageorigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div po {add}{sub} ifelse} def % calculate the clipping origin /cliporigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub floor ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div sub floor} def % Set the clipping region to the bounding box. /cliptobounds {cliporigin po {gw}{gh} ifelse 1 add po {gh}{gw} ifelse 1 add rc} def % set the base transformation matrix (usage: setbasematrix) /setbasematrix {imageorigin translate po {0}{90} ifelse rotate sfactor sfactor neg scale /defaultmatrix matrix currentmatrix def} def % The lower-right bias in drawing 1 pt. wide lines. /bias {q 0.5 0.5 translate} def /unbias {Q} def % Draw a line. (x0 y0 x1 y1 line) /L {bias n m l S unbias} def % Polyline primitive. /polyline {n m 1 exch 1 exch {pop currentfile token pop currentfile token pop l} for } def % Draw a polyline (n x0 y0 OPL x1 y1 x2 y2 ... ... xn yn) /OPL {bias polyline S unbias} def % Draw a closed polyline (n x0 y0 CPL x1 y1 x2 y2 ... ... xn yn) /CPL {bias polyline s unbias} def % Draw a filled polyline (n x0 y0 FPL x1 y1 x2 y2 ... ... xn yn) /FPL {polyline h f*} def % Draw an oval. (x y w h OVL) /OVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width currentlinewidth sub 2 div height currentlinewidth sub 2 div neg scale n 0 0 1 5 -2 roll arc smatrix setmatrix S} def % Draw a filled oval. (x y w h FOVL) /FOVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width 2 div height 2 div neg scale n 0 0 m 0 0 1 5 -2 roll arc h smatrix setmatrix f} def % Draw a rounded rectangle. (x y w h arcwidth archeight RREC) /RREC {matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix s} def % Draw a filled rounded rectangle. (x y w h arcwidth archeight FRREC) /FRREC{matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix h f} def % Draw a string. (string x y STR) /STR {q m 1 -1 scale recshow Q} def % Define basic plot symbols. /xys {/siz exch def /yv exch def /xv exch def} def /hline {xys n xv siz 2. div sub yv m siz 0 rlineto S} def /vline {xys n xv yv siz 2. div sub m 0 siz rlineto S} def /plus {xys n xv yv siz 2. div sub m 0 siz rlineto xv siz 2. div sub yv m siz 0 rlineto S} def /dot {n 2. div 0 360 arc s} def /fdot {n 2. div 0 360 arc h f} def /box {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rs} def /fbox {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rf} def /tridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto s} def /ftridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto h f} def % Symbols defined in terms of the others. /star {3 copy cross plus} def /cross {xys q xv yv translate 45 rotate 0 0 siz plus Q} def /diamond {xys q xv yv translate 45 rotate 0 0 siz box Q} def /fdiamond {xys q xv yv translate 45 rotate 0 0 siz fbox Q} def /triup {xys q xv yv translate 180 rotate 0 0 siz tridn Q} def /ftriup {xys q xv yv translate 180 rotate 0 0 siz ftridn Q} def % Define the composite fonts used to print Unicode strings. % Undefine particular values in an encoding array. /vg&undef { {exch dup 3 -1 roll /.notdef put} forall } def /vg&redef { {3 -1 roll dup 4 2 roll put} forall } def % usage: key encoding basefontname vg&newbasefont font /vg&newbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def currentdict end definefont } def % usage: key encoding basefontname vg&newskewedbasefont font /vg&newskewedbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def exch FontMatrix exch matrix concatmatrix /FontMatrix exch def currentdict end definefont } def % usage: basekey suffix vg&nconcat name /vg&nconcat { 2 {dup length string cvs exch} repeat dup length 3 -1 roll dup length 3 -1 roll add string dup 0 4 -1 roll dup length 5 1 roll putinterval dup 4 -2 roll exch putinterval cvn } def %usage: fontname vg&skewmatrix matrix /vg&skewmatrix { findfont dup /FontInfo known { /FontInfo get dup /ItalicAngle known { [ 1 0 4 -1 roll /ItalicAngle get neg dup sin exch cos div 1 0 0 ] } {pop matrix} ifelse } {pop matrix} ifelse } def % usage: newfontname basefontname vg&newcompositefont -- /vg&newcompositefont { /vg&fstyle exch def /vg&bfont exch def /vg&fname exch def << /FontStyleBits vg&fstyle /FontType 0 /FontMatrix matrix /FontName vg&fname /FMapType 2 /Encoding [ 0 1 255 {pop 6} for ] dup 16#00 0 put % Latin dup 16#03 1 put % Greek dup 16#20 2 put % Punctuation dup 16#21 3 put % Arrows dup 16#22 4 put % MathOps dup 16#27 5 put % Dingbats /FDepVector [ vg&bfont /-UC-Latin vg&nconcat UCLatinEncoding vg&bfont vg&newbasefont vg&bfont vg&skewmatrix vg&bfont /-UC-Greek vg&nconcat UCGreekEncoding /Symbol vg&newskewedbasefont vg&bfont /-UC-Punctuation vg&nconcat UCPunctuationEncoding vg&bfont vg&newbasefont /Arrows-UC findfont /MathOps-UC findfont /Dingbats-UC findfont /Undefined-UC findfont ] >> vg&fname exch definefont pop } def % Null encoding vector (all elements set to .notdef) /NullEncoding [ 256 {/.notdef} repeat ] def % Unicode Latin encoding (unicode codes \u0000-\u00ff) /UCLatinEncoding ISOLatin1Encoding dup length array copy dup 16#60 /grave put [ 16#90 16#91 16#92 16#93 16#94 16#95 16#96 16#97 16#98 16#9a 16#9b 16#9d 16#9e 16#9f ] vg&undef def % Unicode Greek encoding (unicode codes \u0370-\u03ff) /UCGreekEncoding NullEncoding dup length array copy << 16#91 /Alpha 16#92 /Beta 16#93 /Gamma 16#94 /Delta 16#95 /Epsilon 16#96 /Zeta 16#97 /Eta 16#98 /Theta 16#99 /Iota 16#9a /Kappa 16#9b /Lambda 16#9c /Mu 16#9d /Nu 16#9e /Xi 16#9f /Omicron 16#a0 /Pi 16#a1 /Rho 16#a3 /Sigma 16#a4 /Tau 16#a5 /Upsilon 16#a6 /Phi 16#a7 /Chi 16#a8 /Psi 16#a9 /Omega 16#b1 /alpha 16#b2 /beta 16#b3 /gamma 16#b4 /delta 16#b5 /epsilon 16#b6 /zeta 16#b7 /eta 16#b8 /theta 16#b9 /iota 16#ba /kappa 16#bb /lambda 16#bc /mu 16#bd /nu 16#be /xi 16#bf /omicron 16#c0 /pi 16#c1 /rho 16#c2 /sigma1 16#c3 /sigma 16#c4 /tau 16#c5 /upsilon 16#c6 /phi1 16#c7 /chi 16#c8 /psi 16#c9 /omega 16#7e /semicolon 16#87 /dotmath 16#d1 /theta1 16#d2 /Upsilon1 16#d5 /phi 16#d6 /omega1 >> vg&redef def % Unicode punctuation encoding (unicode codes \u2000-\u206f) /UCPunctuationEncoding NullEncoding dup length array copy << 16#10 /hyphen 16#11 /hyphen 16#12 /endash 16#13 /emdash 16#18 /quoteleft 16#19 /quoteright 16#1a /quotesinglbase 16#1b /quotesingle 16#1c /quotedblleft 16#1d /quotedblright 16#1e /quotedblbase 16#1f /quotedbl 16#20 /dagger 16#21 /daggerdbl 16#22 /bullet 16#24 /period 16#26 /ellipsis 16#27 /periodcentered 16#30 /perthousand 16#44 /fraction 16#70 /zerosuperior 16#74 /foursuperior 16#75 /fivesuperior 16#76 /sixsuperior 16#77 /sevensuperior 16#78 /eightsuperior 16#79 /ninesuperior 16#7b /hyphensuperior 16#7d /parenleftsuperior 16#7e /parenrightsuperior 16#80 /zeroinferior 16#84 /fourinferior 16#85 /fiveinferior 16#81 /oneinferior 16#82 /twoinferior 16#83 /threeinferior 16#86 /sixinferior 16#87 /seveninferior 16#88 /eightinferior 16#89 /nineinferior 16#8b /hypheninferior 16#8d /parenleftinferior 16#8e /parenrightinferior >> vg&redef def % Unicode mathematical operators encoding (unicode codes \u2200-\u22ff) /UCMathOpsEncoding NullEncoding dup length array copy << 16#00 /universal 16#02 /partialdiff 16#03 /existential 16#05 /emptyset 16#06 /Delta 16#07 /gradient 16#08 /element 16#09 /notelement 16#0b /suchthat 16#0f /product 16#11 /summation 16#12 /minus 16#15 /fraction 16#17 /asteriskmath 16#19 /bullet 16#1a /radical 16#1d /proportional 16#1e /infinity 16#20 /angle 16#23 /bar 16#27 /logicaland 16#28 /logicalor 16#29 /intersection 16#2a /union 16#2b /integral 16#34 /therefore 16#36 /colon 16#3c /similar 16#45 /congruent 16#48 /approxequal 16#60 /notequal 16#61 /equivalence 16#64 /lessequal 16#65 /greaterequal 16#82 /propersubset 16#83 /propersuperset 16#86 /reflexsubset 16#87 /reflexsuperset 16#95 /circleplus 16#97 /circlemultiply 16#a5 /perpendicular 16#03 /existential 16#c0 /logicaland 16#c1 /logicalor 16#c2 /intersection 16#c3 /union 16#c4 /diamond 16#c5 /dotmath >> vg&redef def % Unicode arrows encoding (unicode codes \u2190-\u21ff) % Also includes those "Letterlike" unicode characters % which are available in the symbol font. (unicode codes \u2100-\u214f) /UCArrowsEncoding NullEncoding dup length array copy << 16#11 /Ifraktur 16#1c /Rfraktur 16#22 /trademarkserif 16#35 /aleph 16#90 /arrowleft 16#91 /arrowup 16#92 /arrowright 16#93 /arrowdown 16#94 /arrowboth 16#d0 /arrowdblleft 16#d1 /arrowdblup 16#d2 /arrowdblright 16#d3 /arrowdbldown 16#d4 /arrowdblboth >> vg&redef def /ZapfDingbats findfont /Encoding get dup length array copy /UCDingbatsEncoding exch def 16#20 1 16#7f { dup 16#20 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for 16#a0 1 16#ff { dup 16#40 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for UCDingbatsEncoding [ 16#c0 1 16#ff {} for ] vg&undef [ 16#00 16#05 16#0a 16#0b 16#28 16#4c 16#4e 16#53 16#54 16#55 16#57 16#5f 16#60 16#68 16#69 16#6a 16#6b 16#6c 16#6d 16#6e 16#6f 16#70 16#71 16#72 16#73 16#74 16#75 16#95 16#96 16#97 16#b0 16#bf ] vg&undef pop % Define the base fonts which don't change. /Undefined-UC NullEncoding /Helvetica vg&newbasefont pop /MathOps-UC UCMathOpsEncoding /Symbol vg&newbasefont pop /Arrows-UC UCArrowsEncoding /Symbol vg&newbasefont pop /Dingbats-UC UCDingbatsEncoding /ZapfDingbats vg&newbasefont pop % Make the SansSerif composite fonts. /SansSerif /Helvetica 16#00 vg&newcompositefont /SansSerif-Bold /Helvetica-Bold 16#01 vg&newcompositefont /SansSerif-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /SansSerif-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Serif composite fonts. /Serif /Times-Roman 16#00 vg&newcompositefont /Serif-Bold /Times-Bold 16#01 vg&newcompositefont /Serif-Italic /Times-Italic 16#02 vg&newcompositefont /Serif-BoldItalic /Times-BoldItalic 16#03 vg&newcompositefont % Make the Monospaced composite fonts. /Monospaced /Courier 16#00 vg&newcompositefont /Monospaced-Bold /Courier-Bold 16#01 vg&newcompositefont /Monospaced-Italic /Courier-Oblique 16#02 vg&newcompositefont /Monospaced-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont % Make the Dialog composite fonts. /Dialog /Helvetica 16#00 vg&newcompositefont /Dialog-Bold /Helvetica-Bold 16#01 vg&newcompositefont /Dialog-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /Dialog-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the DialogInput composite fonts. /DialogInput /Helvetica 16#00 vg&newcompositefont /DialogInput-Bold /Helvetica-Bold 16#01 vg&newcompositefont /DialogInput-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /DialogInput-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Typewriter composite fonts (JDK 1.1 only). /Typewriter /Courier 16#00 vg&newcompositefont /Typewriter-Bold /Courier-Bold 16#01 vg&newcompositefont /Typewriter-Italic /Courier-Oblique 16#02 vg&newcompositefont /Typewriter-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont /cfontH { dup /fontsize exch def /SansSerif exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHB { dup /fontsize exch def /SansSerif-Bold exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHI { dup /fontsize exch def /SansSerif-Italic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHBI { dup /fontsize exch def /SansSerif-BoldItalic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontT { dup /fontsize exch def /Serif exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTB { dup /fontsize exch def /Serif-Bold exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTI { dup /fontsize exch def /Serif-Italic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTBI { dup /fontsize exch def /Serif-BoldItalic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontC { dup /fontsize exch def /Typewriter exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCB { dup /fontsize exch def /Typewriter-Bold exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCI { dup /fontsize exch def /Typewriter-Italic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCBI { dup /fontsize exch def /Typewriter-BoldItalic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def % Darken or lighten the current color. /darken {0.7 exch exp 3 copy q 4 -1 roll vg&C currentrgbcolor 3 {4 -2 roll mul} repeat 3 array astore Q} def /displayColorMap << /Cr [1.00 0.00 0.00] /Cg [0.00 1.00 0.00] /Cb [0.00 0.00 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.00 0.00] /CGg [0.00 1.00 0.00] /CGb [0.00 0.00 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.00 0.00] /CIg [0.00 1.00 0.00] /CIb [0.00 0.00 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /printColorMap << /Cr [1.00 0.33 0.33] /Cg [0.33 1.00 0.33] /Cb [0.33 0.33 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.33 0.33] /CGg [0.33 1.00 0.33] /CGb [0.33 0.33 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.33 0.33] /CIg [0.33 1.00 0.33] /CIb [0.33 0.33 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /grayColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [0.75] /CGg [1 ] /CGb [0.50] /CGc [0.75] /CGm [0.50] /CGy [1 ] /CGo [0.75] /CGp [1 ] /CGw [0 ] /CGgrl [0.25] /CGgr [0.50] /CGgrd [0.75] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def /bwColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [1 ] /CGg [1 ] /CGb [1 ] /CGc [1 ] /CGm [1 ] /CGy [1 ] /CGo [1 ] /CGp [1 ] /CGw [0 ] /CGgrl [1 ] /CGgr [1 ] /CGgrd [1 ] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def % % The following routines handle the alignment of and printing of % tagged strings. % % Predefine the bounding box values. /bbllx 0 def /bblly 0 def /bburx 0 def /bbury 0 def % This routine pops the first unicode character off of a string and returns % the remainder of the string, the character code of first character, % and a "true" if the string was non-zero length. % popfirst % popfirst /popfirst { dup length 1 gt {dup 0 get /vg&fbyte exch def dup 1 get /vg&cbyte exch def dup length 2 sub 2 exch getinterval true} {pop false} ifelse } def % This routine shows a single unicode character given the font and % character codes. % unicharshow -- /unicharshow { 2 string dup 0 5 -1 roll put dup 1 4 -1 roll put internalshow } def % This is an internal routine to alternate between determining the % bounding box for stringsize and showing the string for recshow. % internalshow -- /internalshow {show} def % This is an internal routine to alternate between determining the % bounding box for stringsize and stroking various ornaments. % internalstroke -- /internalstroke {S} def % Sets up internalshow to use the null device to determine string size. % -- nullinternalshow -- /nullinternalshow {/internalshow {false charpath flattenpath pathbbox updatebbox} def} def % Sets up internalstroke to use the null device to determine string size. % -- nullinternalstroke -- /nullinternalstroke { /internalstroke {flattenpath pathbbox updatebbox} def} def % This routine tests to see if the character code matches the first % character of a string. % testchar /testchar {exch dup 3 -1 roll 0 get eq} def % Raise the text baseline for superscripts. % -- raise -- /raise { 0 fontsize 2 div rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-raise the text baseline for superscripts. % -- unraise -- /unraise { /fontsize fontsize 1.5 mul def 0 fontsize 2 div neg rmoveto } def % Lower the text baseline for subscripts. % -- lower -- /lower { 0 fontsize 3 div neg rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-lower the text baseline for subscripts. % -- unlower -- /unlower { /fontsize fontsize 1.5 mul def 0 fontsize 3 div rmoveto } def % Compare the top two elements on the stack and leave only the % larger one. /maxval {2 copy gt {pop} {exch pop} ifelse} def % Tokenize a string. Do not use the usual PostScript token because % parentheses will not be interpreted correctly because of rescanning % of the string. /vg&token {/vg&string exch def /vg&index -1 def /vg&level 0 def 0 2 vg&string length 2 sub { dup dup 1 add exch vg&string exch get 8 bitshift vg&string 3 -1 roll get or dup 16#f0fe eq {pop 1}{16#f0ff eq {-1}{0} ifelse} ifelse /vg&level exch vg&level add def vg&level 0 eq {/vg&index exch def exit} if pop } for vg&index 0 ge { vg&string vg&index 2 add dup vg&string length exch sub getinterval vg&index 2 gt {vg&string 2 vg&index 2 sub getinterval}{()} ifelse true} {false} ifelse } bind def % Recursively show an unicode string. % recshow -- /recshow { popfirst { % Test to see if this is a string attribute. vg&fbyte 16#f0 and 16#e0 eq { q % Font style. currentfont dup /FontStyleBits known {/FontStyleBits get}{pop 0} ifelse vg&cbyte or vg&fontstyles exch get fontsize exch exec vg&token pop recshow currentpoint Q m recshow } { vg&fbyte 16#F8 and 16#F0 eq { % Superscript and/or subscript. vg&cbyte 16#00 eq { vg&token pop exch vg&token pop 3 -1 roll q raise recshow unraise currentpoint pop Q exch q lower recshow unlower currentpoint pop Q maxval currentpoint exch pop m recshow } if % Strikeout. vg&cbyte 16#01 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll fontsize 3 div add moveto fontsize 3 div add lineto internalstroke Q recshow} if % Underline. vg&cbyte 16#02 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dashed underline. vg&cbyte 16#03 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J [ vg&uthick 5 mul vg&uthick 2 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dotted underline. vg&cbyte 16#04 eq { vg&token pop currentpoint 3 -1 roll recshow q 1 J [ 0 vg&uthick 3 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Thick underline. vg&cbyte 16#05 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Gray thick underline. vg&cbyte 16#06 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w 0.5 setgray currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Overbar. vg&cbyte 16#07 eq { vg&token pop dup stringsize relative 4 1 roll pop pop exch 3 -1 roll recshow q 0 J vg&underline vg&uthick w vg&uoffset neg add dup currentpoint pop exch m l internalstroke Q recshow} if } { vg&fbyte vg&cbyte unicharshow recshow } ifelse } ifelse } if } def % Get the underline position and thickness from the current font. /vg&underline { currentfont dup /FontType get 0 eq {/FDepVector get 0 get} if dup dup /FontInfo known { /FontInfo get dup dup /UnderlinePosition known { /UnderlinePosition get /vg&uoffset exch def } { pop /vg&uoffset 0 def } ifelse dup /UnderlineThickness known { /UnderlineThickness get /vg&uthick exch def } { pop /vg&uthick 0 def } ifelse } { pop /vg&uoffset 0 def /vg&uthick 0 def } ifelse /FontMatrix get currentfont dup /FontType get 0 eq {/FontMatrix get matrix concatmatrix}{pop} ifelse dup 0 vg&uoffset 3 -1 roll transform /vg&uoffset exch def pop 0 vg&uthick 3 -1 roll transform /vg&uthick exch def pop } def % Make a frame with the coordinates on the stack. % frame -- /frame {4 copy m 3 1 roll exch l 4 -2 roll l l h} def % Resets the accumulated bounding box to a degenerate box at the % current point. % -- resetbbox -- /resetbbox { currentpoint 2 copy /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Update the accumulated bounding box. % updatebbox -- /updatebbox { dup bbury gt {/bbury exch def} {pop} ifelse dup bburx gt {/bburx exch def} {pop} ifelse dup bblly lt {/bblly exch def} {pop} ifelse dup bbllx lt {/bbllx exch def} {pop} ifelse } def % Set the bounding box to the values on the stack. % updatebbox -- /restorebbox { /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Push the accumulated bounding box onto the stack. % -- pushbbox /pushbbox {bbllx bblly bburx bbury} def % Make the relative bounding box relative to the currentpoint. % inflate /inflate { 2 {fontsize 0.2 mul add 4 1 roll} repeat 2 {fontsize 0.2 mul sub 4 1 roll} repeat } def % Make the relative bounding box relative to the currentpoint. % relative /relative { currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll } def % Returns the size of a string appropriate for recshow. % stringsize /stringsize { pushbbox /internalshow load /internalstroke load 7 -1 roll q nulldevice 0 0 m nullinternalshow nullinternalstroke resetbbox recshow /internalstroke exch def /internalshow exch def pushbbox 8 -4 roll restorebbox Q } def % Calculate values for string positioning. /calcval {4 copy 3 -1 roll sub /widy exch def sub neg /widx exch def pop pop /dy exch def /dx exch def} def % Utilities to position a string. % First letter (U=upper, C=center, B=baseline, L=lower) % Second letter (L=left, C=center, R=right) /align [ {calcval dx neg widy dy add neg rmoveto} % UL {calcval dx neg widy 2 div dy add neg rmoveto} % CL {calcval dx neg 0 rmoveto} % BL {calcval dx neg dy neg rmoveto} % LL {calcval widx dx add neg widy dy add neg rmoveto} % UR {calcval widx dx add neg widy 2 div dy add neg rmoveto} % CR {calcval widx dx add neg 0 rmoveto} % BR {calcval widx dx add neg dy neg rmoveto} % LR {calcval widx 2 div dx add neg widy dy add neg rmoveto} % UC {calcval widx 2 div dx add neg widy 2 div dy add neg rmoveto} % CC {calcval widx 2 div dx add neg 0 rmoveto} % BC {calcval widx 2 div dx add neg dy neg rmoveto} % LC ] def /vg&str {m q 1 -1 scale dup stringsize 4 copy align 11 -1 roll get exec q inflate relative frame exch exec Q recshow Q} def end /procDict exch def %%EndProlog %%BeginSetup save procDict begin printColorMap begin 595 791 setpagesize 20 20 20 20 setmargins 0 0 setorigin 600 600 setsize fittopage portrait imagescale cliptobounds setbasematrix /Helvetica 10 sf defaultGraphicsState %%EndSetup 0.00000 0.00000 0.00000 RG [ 1.00000 0.00000 0.00000 1.00000 0.00000 0.00000 ] defaultmatrix matrix concatmatrix setmatrix 1.00000 w 2 J 0 j 10.0000 M [ ] 0.00000 d .800000 .800000 .800000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG q 0 0 600 600 rc 1.00000 1.00000 1.00000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG 5.00000 w 350.000 25.0000 200.000 25.0000 L 400.000 25.0000 40.0000 dot q 10.0000 w 0 J 2 j [ 5.00000 4.00000 ] 0.00000 d 0.00000 1.00000 0.00000 RG -137.500 0.00000 translate 1.50000 1.00000 scale 350.000 125.000 200.000 125.000 L 400.000 125.000 40.0000 box q 2.00000 w 2 J 0 j [ ] 0.00000 d 0.00000 0.00000 1.00000 RG 350.000 225.000 200.000 225.000 L 400.000 225.000 40.0000 ftriup Q 350.000 325.000 200.000 325.000 L 400.000 325.000 40.0000 box Q 350.000 425.000 200.000 425.000 L 400.000 425.000 40.0000 dot Q end end restore showpage %%Trailer %%EOF src/test/resources/ps/TestOffset.ps0000644000175000017500000011011210344614150016724 0ustar user01user01%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 20 118 575 673 %%Creator: FreeHEP Graphics2D Driver %%Producer: org.freehep.graphicsio.ps.PSGraphics2D %%For: %%Title: %%LanguageLevel: 3 %%EndComments %%BeginProlog 100 dict dup begin % % File: org/freehep/graphicsio.ps/PSProlog.txt % Author: Charles Loomis % % Redefinitions which save some space in the output file. These are also % the same as the PDF operators. /q {gsave} def /Q {grestore} def /n {newpath} def /m {moveto} def /l {lineto} def /c {curveto} def /h {closepath} def /re {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath} def /f {fill} def /f* {eofill} def /F {gsave vg&FC fill grestore} def /F* {gsave vg&FC eofill grestore} def /s {closepath stroke} def /S {stroke} def /b {closepath gsave vg&FC fill grestore gsave stroke grestore newpath} def /B {gsave vg&FC fill grestore gsave stroke grestore newpath} def /b* {closepath gsave vg&FC eofill grestore gsave stroke grestore newpath} def /B* {gsave vg&FC eofill grestore gsave stroke grestore newpath} def /g {1 array astore /vg&fcolor exch def} def /G {setgray} def /k {4 array astore /vg&fcolor exch def} def /K {setcmykcolor} def /rg {3 array astore /vg&fcolor exch def} def /RG {setrgbcolor} def % Initialize the fill color. 0 0 0 rg /vg&FC {mark vg&fcolor aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /vg&DFC {/vg&fcolor exch def} def /vg&C {mark exch aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /w {setlinewidth} def /j {setlinejoin} def /J {setlinecap} def /M {setmiterlimit} def /d {setdash} def /i {setflat} def /W {clip} def /W* {eoclip} def % Setup the default graphics state. % (black; 1 pt. linewidth; miter join; butt-ends; solid) /defaultGraphicsState {0 g 1 w 0 j 0 J [] 0 d} def % Emulation of the rectangle operators for PostScript implementations % which do not implement all Level 2 features. This is an INCOMPLETE % emulation; only the "x y width height rect..." form is emulated. /*rf {gsave newpath re fill grestore} def /*rs {gsave newpath re stroke grestore} def /*rc {newpath re clip} def /rf /rectfill where {pop /rectfill}{/*rf} ifelse load def /rs /rectstroke where {pop /rectstroke}{/*rs} ifelse load def /rc /rectclip where {pop /rectclip}{/*rc} ifelse load def % Emulation of the selectfont operator. This includes a 20% increase in % the fontsize which is necessary to get sizes similar to the Java fonts. /*sf {exch findfont exch dup type /arraytype eq {makefont}{scalefont} ifelse setfont} bind def /sf /selectfont where {pop {1.2 mul selectfont}}{{1.2 mul *sf}} ifelse def % Special version of stroke which allows the dash pattern to continue % across path segments. (This may be needed for PostScript although % modern printers seem to do this correctly.) /vg&stroke { currentdash pop length 0 eq {stroke} { currentdash /vg&doffset exch def pop flattenpath {m vg&resetdash} {2 copy currentpoint 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt 3 1 roll l currentdash 3 -1 roll add setdash} {} {h vg&resetdash} pathforall stroke vg&resetdash } ifelse } def /vg&resetdash {currentdash pop vg&doffset setdash} def % Initialize variables for safety. /delta 0 def /xv 0 def /yv 0 def /width 0 def /height 0 def % Initialize to portrait INTERNATIONAL (Letter-height, A4-width) page. /pw 595 def /ph 791 def /po true def /ftp false def % Initialize margins to 20 points. /ml 20 def /mr 20 def /mt 20 def /mb 20 def % Temporary matrices. /smatrix 0 def /nmatrix 0 def % set page size (usage: setpagesize) /setpagesize {/ph exch def /pw exch def} def % set page orientation (usage: portrait or landscape) /portrait {/po true def} def /landscape {/po false def} def % force natural size for image (usage: naturalsize) /naturalsize {/ftp false def} def % resize image to fill page (usage: fittopage) /fittopage {/ftp true def} def % set margins of the page (usage: setmargins) /setmargins {/mr exch def /mt exch def /mb exch def /ml exch def} def % set the graphic's size (usage: setsize) /setsize {/gh exch def /gw exch def} def % set the graphic's origin (usage: setorigin) /setorigin {/gy exch def /gx exch def} def % calculate image center /imagecenter {pw ml sub mr sub 2 div ml add ph mt sub mb sub 2 div mb add} def % calculate the necessary scaling /imagescale {po {gw}{gh} ifelse pw ml sub mr sub div po {gh}{gw} ifelse ph mt sub mb sub div 2 copy lt {exch} if pop ftp not {1 2 copy lt {exch} if pop} if 1 exch div /sfactor exch def /gw gw sfactor mul def /gh gh sfactor mul def} def % calculate image origin /imageorigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div po {add}{sub} ifelse} def % calculate the clipping origin /cliporigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub floor ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div sub floor} def % Set the clipping region to the bounding box. /cliptobounds {cliporigin po {gw}{gh} ifelse 1 add po {gh}{gw} ifelse 1 add rc} def % set the base transformation matrix (usage: setbasematrix) /setbasematrix {imageorigin translate po {0}{90} ifelse rotate sfactor sfactor neg scale /defaultmatrix matrix currentmatrix def} def % The lower-right bias in drawing 1 pt. wide lines. /bias {q 0.5 0.5 translate} def /unbias {Q} def % Draw a line. (x0 y0 x1 y1 line) /L {bias n m l S unbias} def % Polyline primitive. /polyline {n m 1 exch 1 exch {pop currentfile token pop currentfile token pop l} for } def % Draw a polyline (n x0 y0 OPL x1 y1 x2 y2 ... ... xn yn) /OPL {bias polyline S unbias} def % Draw a closed polyline (n x0 y0 CPL x1 y1 x2 y2 ... ... xn yn) /CPL {bias polyline s unbias} def % Draw a filled polyline (n x0 y0 FPL x1 y1 x2 y2 ... ... xn yn) /FPL {polyline h f*} def % Draw an oval. (x y w h OVL) /OVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width currentlinewidth sub 2 div height currentlinewidth sub 2 div neg scale n 0 0 1 5 -2 roll arc smatrix setmatrix S} def % Draw a filled oval. (x y w h FOVL) /FOVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width 2 div height 2 div neg scale n 0 0 m 0 0 1 5 -2 roll arc h smatrix setmatrix f} def % Draw a rounded rectangle. (x y w h arcwidth archeight RREC) /RREC {matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix s} def % Draw a filled rounded rectangle. (x y w h arcwidth archeight FRREC) /FRREC{matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix h f} def % Draw a string. (string x y STR) /STR {q m 1 -1 scale recshow Q} def % Define basic plot symbols. /xys {/siz exch def /yv exch def /xv exch def} def /hline {xys n xv siz 2. div sub yv m siz 0 rlineto S} def /vline {xys n xv yv siz 2. div sub m 0 siz rlineto S} def /plus {xys n xv yv siz 2. div sub m 0 siz rlineto xv siz 2. div sub yv m siz 0 rlineto S} def /dot {n 2. div 0 360 arc s} def /fdot {n 2. div 0 360 arc h f} def /box {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rs} def /fbox {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rf} def /tridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto s} def /ftridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto h f} def % Symbols defined in terms of the others. /star {3 copy cross plus} def /cross {xys q xv yv translate 45 rotate 0 0 siz plus Q} def /diamond {xys q xv yv translate 45 rotate 0 0 siz box Q} def /fdiamond {xys q xv yv translate 45 rotate 0 0 siz fbox Q} def /triup {xys q xv yv translate 180 rotate 0 0 siz tridn Q} def /ftriup {xys q xv yv translate 180 rotate 0 0 siz ftridn Q} def % Define the composite fonts used to print Unicode strings. % Undefine particular values in an encoding array. /vg&undef { {exch dup 3 -1 roll /.notdef put} forall } def /vg&redef { {3 -1 roll dup 4 2 roll put} forall } def % usage: key encoding basefontname vg&newbasefont font /vg&newbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def currentdict end definefont } def % usage: key encoding basefontname vg&newskewedbasefont font /vg&newskewedbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def exch FontMatrix exch matrix concatmatrix /FontMatrix exch def currentdict end definefont } def % usage: basekey suffix vg&nconcat name /vg&nconcat { 2 {dup length string cvs exch} repeat dup length 3 -1 roll dup length 3 -1 roll add string dup 0 4 -1 roll dup length 5 1 roll putinterval dup 4 -2 roll exch putinterval cvn } def %usage: fontname vg&skewmatrix matrix /vg&skewmatrix { findfont dup /FontInfo known { /FontInfo get dup /ItalicAngle known { [ 1 0 4 -1 roll /ItalicAngle get neg dup sin exch cos div 1 0 0 ] } {pop matrix} ifelse } {pop matrix} ifelse } def % usage: newfontname basefontname vg&newcompositefont -- /vg&newcompositefont { /vg&fstyle exch def /vg&bfont exch def /vg&fname exch def << /FontStyleBits vg&fstyle /FontType 0 /FontMatrix matrix /FontName vg&fname /FMapType 2 /Encoding [ 0 1 255 {pop 6} for ] dup 16#00 0 put % Latin dup 16#03 1 put % Greek dup 16#20 2 put % Punctuation dup 16#21 3 put % Arrows dup 16#22 4 put % MathOps dup 16#27 5 put % Dingbats /FDepVector [ vg&bfont /-UC-Latin vg&nconcat UCLatinEncoding vg&bfont vg&newbasefont vg&bfont vg&skewmatrix vg&bfont /-UC-Greek vg&nconcat UCGreekEncoding /Symbol vg&newskewedbasefont vg&bfont /-UC-Punctuation vg&nconcat UCPunctuationEncoding vg&bfont vg&newbasefont /Arrows-UC findfont /MathOps-UC findfont /Dingbats-UC findfont /Undefined-UC findfont ] >> vg&fname exch definefont pop } def % Null encoding vector (all elements set to .notdef) /NullEncoding [ 256 {/.notdef} repeat ] def % Unicode Latin encoding (unicode codes \u0000-\u00ff) /UCLatinEncoding ISOLatin1Encoding dup length array copy dup 16#60 /grave put [ 16#90 16#91 16#92 16#93 16#94 16#95 16#96 16#97 16#98 16#9a 16#9b 16#9d 16#9e 16#9f ] vg&undef def % Unicode Greek encoding (unicode codes \u0370-\u03ff) /UCGreekEncoding NullEncoding dup length array copy << 16#91 /Alpha 16#92 /Beta 16#93 /Gamma 16#94 /Delta 16#95 /Epsilon 16#96 /Zeta 16#97 /Eta 16#98 /Theta 16#99 /Iota 16#9a /Kappa 16#9b /Lambda 16#9c /Mu 16#9d /Nu 16#9e /Xi 16#9f /Omicron 16#a0 /Pi 16#a1 /Rho 16#a3 /Sigma 16#a4 /Tau 16#a5 /Upsilon 16#a6 /Phi 16#a7 /Chi 16#a8 /Psi 16#a9 /Omega 16#b1 /alpha 16#b2 /beta 16#b3 /gamma 16#b4 /delta 16#b5 /epsilon 16#b6 /zeta 16#b7 /eta 16#b8 /theta 16#b9 /iota 16#ba /kappa 16#bb /lambda 16#bc /mu 16#bd /nu 16#be /xi 16#bf /omicron 16#c0 /pi 16#c1 /rho 16#c2 /sigma1 16#c3 /sigma 16#c4 /tau 16#c5 /upsilon 16#c6 /phi1 16#c7 /chi 16#c8 /psi 16#c9 /omega 16#7e /semicolon 16#87 /dotmath 16#d1 /theta1 16#d2 /Upsilon1 16#d5 /phi 16#d6 /omega1 >> vg&redef def % Unicode punctuation encoding (unicode codes \u2000-\u206f) /UCPunctuationEncoding NullEncoding dup length array copy << 16#10 /hyphen 16#11 /hyphen 16#12 /endash 16#13 /emdash 16#18 /quoteleft 16#19 /quoteright 16#1a /quotesinglbase 16#1b /quotesingle 16#1c /quotedblleft 16#1d /quotedblright 16#1e /quotedblbase 16#1f /quotedbl 16#20 /dagger 16#21 /daggerdbl 16#22 /bullet 16#24 /period 16#26 /ellipsis 16#27 /periodcentered 16#30 /perthousand 16#44 /fraction 16#70 /zerosuperior 16#74 /foursuperior 16#75 /fivesuperior 16#76 /sixsuperior 16#77 /sevensuperior 16#78 /eightsuperior 16#79 /ninesuperior 16#7b /hyphensuperior 16#7d /parenleftsuperior 16#7e /parenrightsuperior 16#80 /zeroinferior 16#84 /fourinferior 16#85 /fiveinferior 16#81 /oneinferior 16#82 /twoinferior 16#83 /threeinferior 16#86 /sixinferior 16#87 /seveninferior 16#88 /eightinferior 16#89 /nineinferior 16#8b /hypheninferior 16#8d /parenleftinferior 16#8e /parenrightinferior >> vg&redef def % Unicode mathematical operators encoding (unicode codes \u2200-\u22ff) /UCMathOpsEncoding NullEncoding dup length array copy << 16#00 /universal 16#02 /partialdiff 16#03 /existential 16#05 /emptyset 16#06 /Delta 16#07 /gradient 16#08 /element 16#09 /notelement 16#0b /suchthat 16#0f /product 16#11 /summation 16#12 /minus 16#15 /fraction 16#17 /asteriskmath 16#19 /bullet 16#1a /radical 16#1d /proportional 16#1e /infinity 16#20 /angle 16#23 /bar 16#27 /logicaland 16#28 /logicalor 16#29 /intersection 16#2a /union 16#2b /integral 16#34 /therefore 16#36 /colon 16#3c /similar 16#45 /congruent 16#48 /approxequal 16#60 /notequal 16#61 /equivalence 16#64 /lessequal 16#65 /greaterequal 16#82 /propersubset 16#83 /propersuperset 16#86 /reflexsubset 16#87 /reflexsuperset 16#95 /circleplus 16#97 /circlemultiply 16#a5 /perpendicular 16#03 /existential 16#c0 /logicaland 16#c1 /logicalor 16#c2 /intersection 16#c3 /union 16#c4 /diamond 16#c5 /dotmath >> vg&redef def % Unicode arrows encoding (unicode codes \u2190-\u21ff) % Also includes those "Letterlike" unicode characters % which are available in the symbol font. (unicode codes \u2100-\u214f) /UCArrowsEncoding NullEncoding dup length array copy << 16#11 /Ifraktur 16#1c /Rfraktur 16#22 /trademarkserif 16#35 /aleph 16#90 /arrowleft 16#91 /arrowup 16#92 /arrowright 16#93 /arrowdown 16#94 /arrowboth 16#d0 /arrowdblleft 16#d1 /arrowdblup 16#d2 /arrowdblright 16#d3 /arrowdbldown 16#d4 /arrowdblboth >> vg&redef def /ZapfDingbats findfont /Encoding get dup length array copy /UCDingbatsEncoding exch def 16#20 1 16#7f { dup 16#20 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for 16#a0 1 16#ff { dup 16#40 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for UCDingbatsEncoding [ 16#c0 1 16#ff {} for ] vg&undef [ 16#00 16#05 16#0a 16#0b 16#28 16#4c 16#4e 16#53 16#54 16#55 16#57 16#5f 16#60 16#68 16#69 16#6a 16#6b 16#6c 16#6d 16#6e 16#6f 16#70 16#71 16#72 16#73 16#74 16#75 16#95 16#96 16#97 16#b0 16#bf ] vg&undef pop % Define the base fonts which don't change. /Undefined-UC NullEncoding /Helvetica vg&newbasefont pop /MathOps-UC UCMathOpsEncoding /Symbol vg&newbasefont pop /Arrows-UC UCArrowsEncoding /Symbol vg&newbasefont pop /Dingbats-UC UCDingbatsEncoding /ZapfDingbats vg&newbasefont pop % Make the SansSerif composite fonts. /SansSerif /Helvetica 16#00 vg&newcompositefont /SansSerif-Bold /Helvetica-Bold 16#01 vg&newcompositefont /SansSerif-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /SansSerif-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Serif composite fonts. /Serif /Times-Roman 16#00 vg&newcompositefont /Serif-Bold /Times-Bold 16#01 vg&newcompositefont /Serif-Italic /Times-Italic 16#02 vg&newcompositefont /Serif-BoldItalic /Times-BoldItalic 16#03 vg&newcompositefont % Make the Monospaced composite fonts. /Monospaced /Courier 16#00 vg&newcompositefont /Monospaced-Bold /Courier-Bold 16#01 vg&newcompositefont /Monospaced-Italic /Courier-Oblique 16#02 vg&newcompositefont /Monospaced-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont % Make the Dialog composite fonts. /Dialog /Helvetica 16#00 vg&newcompositefont /Dialog-Bold /Helvetica-Bold 16#01 vg&newcompositefont /Dialog-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /Dialog-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the DialogInput composite fonts. /DialogInput /Helvetica 16#00 vg&newcompositefont /DialogInput-Bold /Helvetica-Bold 16#01 vg&newcompositefont /DialogInput-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /DialogInput-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Typewriter composite fonts (JDK 1.1 only). /Typewriter /Courier 16#00 vg&newcompositefont /Typewriter-Bold /Courier-Bold 16#01 vg&newcompositefont /Typewriter-Italic /Courier-Oblique 16#02 vg&newcompositefont /Typewriter-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont /cfontH { dup /fontsize exch def /SansSerif exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHB { dup /fontsize exch def /SansSerif-Bold exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHI { dup /fontsize exch def /SansSerif-Italic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHBI { dup /fontsize exch def /SansSerif-BoldItalic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontT { dup /fontsize exch def /Serif exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTB { dup /fontsize exch def /Serif-Bold exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTI { dup /fontsize exch def /Serif-Italic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTBI { dup /fontsize exch def /Serif-BoldItalic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontC { dup /fontsize exch def /Typewriter exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCB { dup /fontsize exch def /Typewriter-Bold exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCI { dup /fontsize exch def /Typewriter-Italic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCBI { dup /fontsize exch def /Typewriter-BoldItalic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def % Darken or lighten the current color. /darken {0.7 exch exp 3 copy q 4 -1 roll vg&C currentrgbcolor 3 {4 -2 roll mul} repeat 3 array astore Q} def /displayColorMap << /Cr [1.00 0.00 0.00] /Cg [0.00 1.00 0.00] /Cb [0.00 0.00 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.00 0.00] /CGg [0.00 1.00 0.00] /CGb [0.00 0.00 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.00 0.00] /CIg [0.00 1.00 0.00] /CIb [0.00 0.00 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /printColorMap << /Cr [1.00 0.33 0.33] /Cg [0.33 1.00 0.33] /Cb [0.33 0.33 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.33 0.33] /CGg [0.33 1.00 0.33] /CGb [0.33 0.33 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.33 0.33] /CIg [0.33 1.00 0.33] /CIb [0.33 0.33 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /grayColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [0.75] /CGg [1 ] /CGb [0.50] /CGc [0.75] /CGm [0.50] /CGy [1 ] /CGo [0.75] /CGp [1 ] /CGw [0 ] /CGgrl [0.25] /CGgr [0.50] /CGgrd [0.75] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def /bwColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [1 ] /CGg [1 ] /CGb [1 ] /CGc [1 ] /CGm [1 ] /CGy [1 ] /CGo [1 ] /CGp [1 ] /CGw [0 ] /CGgrl [1 ] /CGgr [1 ] /CGgrd [1 ] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def % % The following routines handle the alignment of and printing of % tagged strings. % % Predefine the bounding box values. /bbllx 0 def /bblly 0 def /bburx 0 def /bbury 0 def % This routine pops the first unicode character off of a string and returns % the remainder of the string, the character code of first character, % and a "true" if the string was non-zero length. % popfirst % popfirst /popfirst { dup length 1 gt {dup 0 get /vg&fbyte exch def dup 1 get /vg&cbyte exch def dup length 2 sub 2 exch getinterval true} {pop false} ifelse } def % This routine shows a single unicode character given the font and % character codes. % unicharshow -- /unicharshow { 2 string dup 0 5 -1 roll put dup 1 4 -1 roll put internalshow } def % This is an internal routine to alternate between determining the % bounding box for stringsize and showing the string for recshow. % internalshow -- /internalshow {show} def % This is an internal routine to alternate between determining the % bounding box for stringsize and stroking various ornaments. % internalstroke -- /internalstroke {S} def % Sets up internalshow to use the null device to determine string size. % -- nullinternalshow -- /nullinternalshow {/internalshow {false charpath flattenpath pathbbox updatebbox} def} def % Sets up internalstroke to use the null device to determine string size. % -- nullinternalstroke -- /nullinternalstroke { /internalstroke {flattenpath pathbbox updatebbox} def} def % This routine tests to see if the character code matches the first % character of a string. % testchar /testchar {exch dup 3 -1 roll 0 get eq} def % Raise the text baseline for superscripts. % -- raise -- /raise { 0 fontsize 2 div rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-raise the text baseline for superscripts. % -- unraise -- /unraise { /fontsize fontsize 1.5 mul def 0 fontsize 2 div neg rmoveto } def % Lower the text baseline for subscripts. % -- lower -- /lower { 0 fontsize 3 div neg rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-lower the text baseline for subscripts. % -- unlower -- /unlower { /fontsize fontsize 1.5 mul def 0 fontsize 3 div rmoveto } def % Compare the top two elements on the stack and leave only the % larger one. /maxval {2 copy gt {pop} {exch pop} ifelse} def % Tokenize a string. Do not use the usual PostScript token because % parentheses will not be interpreted correctly because of rescanning % of the string. /vg&token {/vg&string exch def /vg&index -1 def /vg&level 0 def 0 2 vg&string length 2 sub { dup dup 1 add exch vg&string exch get 8 bitshift vg&string 3 -1 roll get or dup 16#f0fe eq {pop 1}{16#f0ff eq {-1}{0} ifelse} ifelse /vg&level exch vg&level add def vg&level 0 eq {/vg&index exch def exit} if pop } for vg&index 0 ge { vg&string vg&index 2 add dup vg&string length exch sub getinterval vg&index 2 gt {vg&string 2 vg&index 2 sub getinterval}{()} ifelse true} {false} ifelse } bind def % Recursively show an unicode string. % recshow -- /recshow { popfirst { % Test to see if this is a string attribute. vg&fbyte 16#f0 and 16#e0 eq { q % Font style. currentfont dup /FontStyleBits known {/FontStyleBits get}{pop 0} ifelse vg&cbyte or vg&fontstyles exch get fontsize exch exec vg&token pop recshow currentpoint Q m recshow } { vg&fbyte 16#F8 and 16#F0 eq { % Superscript and/or subscript. vg&cbyte 16#00 eq { vg&token pop exch vg&token pop 3 -1 roll q raise recshow unraise currentpoint pop Q exch q lower recshow unlower currentpoint pop Q maxval currentpoint exch pop m recshow } if % Strikeout. vg&cbyte 16#01 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll fontsize 3 div add moveto fontsize 3 div add lineto internalstroke Q recshow} if % Underline. vg&cbyte 16#02 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dashed underline. vg&cbyte 16#03 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J [ vg&uthick 5 mul vg&uthick 2 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dotted underline. vg&cbyte 16#04 eq { vg&token pop currentpoint 3 -1 roll recshow q 1 J [ 0 vg&uthick 3 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Thick underline. vg&cbyte 16#05 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Gray thick underline. vg&cbyte 16#06 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w 0.5 setgray currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Overbar. vg&cbyte 16#07 eq { vg&token pop dup stringsize relative 4 1 roll pop pop exch 3 -1 roll recshow q 0 J vg&underline vg&uthick w vg&uoffset neg add dup currentpoint pop exch m l internalstroke Q recshow} if } { vg&fbyte vg&cbyte unicharshow recshow } ifelse } ifelse } if } def % Get the underline position and thickness from the current font. /vg&underline { currentfont dup /FontType get 0 eq {/FDepVector get 0 get} if dup dup /FontInfo known { /FontInfo get dup dup /UnderlinePosition known { /UnderlinePosition get /vg&uoffset exch def } { pop /vg&uoffset 0 def } ifelse dup /UnderlineThickness known { /UnderlineThickness get /vg&uthick exch def } { pop /vg&uthick 0 def } ifelse } { pop /vg&uoffset 0 def /vg&uthick 0 def } ifelse /FontMatrix get currentfont dup /FontType get 0 eq {/FontMatrix get matrix concatmatrix}{pop} ifelse dup 0 vg&uoffset 3 -1 roll transform /vg&uoffset exch def pop 0 vg&uthick 3 -1 roll transform /vg&uthick exch def pop } def % Make a frame with the coordinates on the stack. % frame -- /frame {4 copy m 3 1 roll exch l 4 -2 roll l l h} def % Resets the accumulated bounding box to a degenerate box at the % current point. % -- resetbbox -- /resetbbox { currentpoint 2 copy /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Update the accumulated bounding box. % updatebbox -- /updatebbox { dup bbury gt {/bbury exch def} {pop} ifelse dup bburx gt {/bburx exch def} {pop} ifelse dup bblly lt {/bblly exch def} {pop} ifelse dup bbllx lt {/bbllx exch def} {pop} ifelse } def % Set the bounding box to the values on the stack. % updatebbox -- /restorebbox { /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Push the accumulated bounding box onto the stack. % -- pushbbox /pushbbox {bbllx bblly bburx bbury} def % Make the relative bounding box relative to the currentpoint. % inflate /inflate { 2 {fontsize 0.2 mul add 4 1 roll} repeat 2 {fontsize 0.2 mul sub 4 1 roll} repeat } def % Make the relative bounding box relative to the currentpoint. % relative /relative { currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll } def % Returns the size of a string appropriate for recshow. % stringsize /stringsize { pushbbox /internalshow load /internalstroke load 7 -1 roll q nulldevice 0 0 m nullinternalshow nullinternalstroke resetbbox recshow /internalstroke exch def /internalshow exch def pushbbox 8 -4 roll restorebbox Q } def % Calculate values for string positioning. /calcval {4 copy 3 -1 roll sub /widy exch def sub neg /widx exch def pop pop /dy exch def /dx exch def} def % Utilities to position a string. % First letter (U=upper, C=center, B=baseline, L=lower) % Second letter (L=left, C=center, R=right) /align [ {calcval dx neg widy dy add neg rmoveto} % UL {calcval dx neg widy 2 div dy add neg rmoveto} % CL {calcval dx neg 0 rmoveto} % BL {calcval dx neg dy neg rmoveto} % LL {calcval widx dx add neg widy dy add neg rmoveto} % UR {calcval widx dx add neg widy 2 div dy add neg rmoveto} % CR {calcval widx dx add neg 0 rmoveto} % BR {calcval widx dx add neg dy neg rmoveto} % LR {calcval widx 2 div dx add neg widy dy add neg rmoveto} % UC {calcval widx 2 div dx add neg widy 2 div dy add neg rmoveto} % CC {calcval widx 2 div dx add neg 0 rmoveto} % BC {calcval widx 2 div dx add neg dy neg rmoveto} % LC ] def /vg&str {m q 1 -1 scale dup stringsize 4 copy align 11 -1 roll get exec q inflate relative frame exch exec Q recshow Q} def end /procDict exch def %%EndProlog %%BeginSetup save procDict begin printColorMap begin 595 791 setpagesize 20 20 20 20 setmargins 0 0 setorigin 600 600 setsize fittopage portrait imagescale cliptobounds setbasematrix /Helvetica 10 sf defaultGraphicsState %%EndSetup 0.00000 0.00000 0.00000 RG [ 1.00000 0.00000 0.00000 1.00000 0.00000 0.00000 ] defaultmatrix matrix concatmatrix setmatrix 1.00000 w 2 J 0 j 10.0000 M [ ] 0.00000 d .800000 .800000 .800000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG q 0 0 600 600 rc 1.00000 1.00000 1.00000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG 4.00000 w 300.000 300.000 translate 290.000 290.000 -290.000 -290.000 L 290.000 -290.000 -290.000 290.000 L bias -290.000 -290.000 580.000 580.000 rs unbias Q end end restore showpage %%Trailer %%EOF src/test/resources/ps/TestLabels.ps0000644000175000017500000011662210344614150016714 0ustar user01user01%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 20 118 575 673 %%Creator: FreeHEP Graphics2D Driver %%Producer: org.freehep.graphicsio.ps.PSGraphics2D %%For: %%Title: %%LanguageLevel: 3 %%EndComments %%BeginProlog 100 dict dup begin % % File: org/freehep/graphicsio.ps/PSProlog.txt % Author: Charles Loomis % % Redefinitions which save some space in the output file. These are also % the same as the PDF operators. /q {gsave} def /Q {grestore} def /n {newpath} def /m {moveto} def /l {lineto} def /c {curveto} def /h {closepath} def /re {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath} def /f {fill} def /f* {eofill} def /F {gsave vg&FC fill grestore} def /F* {gsave vg&FC eofill grestore} def /s {closepath stroke} def /S {stroke} def /b {closepath gsave vg&FC fill grestore gsave stroke grestore newpath} def /B {gsave vg&FC fill grestore gsave stroke grestore newpath} def /b* {closepath gsave vg&FC eofill grestore gsave stroke grestore newpath} def /B* {gsave vg&FC eofill grestore gsave stroke grestore newpath} def /g {1 array astore /vg&fcolor exch def} def /G {setgray} def /k {4 array astore /vg&fcolor exch def} def /K {setcmykcolor} def /rg {3 array astore /vg&fcolor exch def} def /RG {setrgbcolor} def % Initialize the fill color. 0 0 0 rg /vg&FC {mark vg&fcolor aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /vg&DFC {/vg&fcolor exch def} def /vg&C {mark exch aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /w {setlinewidth} def /j {setlinejoin} def /J {setlinecap} def /M {setmiterlimit} def /d {setdash} def /i {setflat} def /W {clip} def /W* {eoclip} def % Setup the default graphics state. % (black; 1 pt. linewidth; miter join; butt-ends; solid) /defaultGraphicsState {0 g 1 w 0 j 0 J [] 0 d} def % Emulation of the rectangle operators for PostScript implementations % which do not implement all Level 2 features. This is an INCOMPLETE % emulation; only the "x y width height rect..." form is emulated. /*rf {gsave newpath re fill grestore} def /*rs {gsave newpath re stroke grestore} def /*rc {newpath re clip} def /rf /rectfill where {pop /rectfill}{/*rf} ifelse load def /rs /rectstroke where {pop /rectstroke}{/*rs} ifelse load def /rc /rectclip where {pop /rectclip}{/*rc} ifelse load def % Emulation of the selectfont operator. This includes a 20% increase in % the fontsize which is necessary to get sizes similar to the Java fonts. /*sf {exch findfont exch dup type /arraytype eq {makefont}{scalefont} ifelse setfont} bind def /sf /selectfont where {pop {1.2 mul selectfont}}{{1.2 mul *sf}} ifelse def % Special version of stroke which allows the dash pattern to continue % across path segments. (This may be needed for PostScript although % modern printers seem to do this correctly.) /vg&stroke { currentdash pop length 0 eq {stroke} { currentdash /vg&doffset exch def pop flattenpath {m vg&resetdash} {2 copy currentpoint 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt 3 1 roll l currentdash 3 -1 roll add setdash} {} {h vg&resetdash} pathforall stroke vg&resetdash } ifelse } def /vg&resetdash {currentdash pop vg&doffset setdash} def % Initialize variables for safety. /delta 0 def /xv 0 def /yv 0 def /width 0 def /height 0 def % Initialize to portrait INTERNATIONAL (Letter-height, A4-width) page. /pw 595 def /ph 791 def /po true def /ftp false def % Initialize margins to 20 points. /ml 20 def /mr 20 def /mt 20 def /mb 20 def % Temporary matrices. /smatrix 0 def /nmatrix 0 def % set page size (usage: setpagesize) /setpagesize {/ph exch def /pw exch def} def % set page orientation (usage: portrait or landscape) /portrait {/po true def} def /landscape {/po false def} def % force natural size for image (usage: naturalsize) /naturalsize {/ftp false def} def % resize image to fill page (usage: fittopage) /fittopage {/ftp true def} def % set margins of the page (usage: setmargins) /setmargins {/mr exch def /mt exch def /mb exch def /ml exch def} def % set the graphic's size (usage: setsize) /setsize {/gh exch def /gw exch def} def % set the graphic's origin (usage: setorigin) /setorigin {/gy exch def /gx exch def} def % calculate image center /imagecenter {pw ml sub mr sub 2 div ml add ph mt sub mb sub 2 div mb add} def % calculate the necessary scaling /imagescale {po {gw}{gh} ifelse pw ml sub mr sub div po {gh}{gw} ifelse ph mt sub mb sub div 2 copy lt {exch} if pop ftp not {1 2 copy lt {exch} if pop} if 1 exch div /sfactor exch def /gw gw sfactor mul def /gh gh sfactor mul def} def % calculate image origin /imageorigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div po {add}{sub} ifelse} def % calculate the clipping origin /cliporigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub floor ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div sub floor} def % Set the clipping region to the bounding box. /cliptobounds {cliporigin po {gw}{gh} ifelse 1 add po {gh}{gw} ifelse 1 add rc} def % set the base transformation matrix (usage: setbasematrix) /setbasematrix {imageorigin translate po {0}{90} ifelse rotate sfactor sfactor neg scale /defaultmatrix matrix currentmatrix def} def % The lower-right bias in drawing 1 pt. wide lines. /bias {q 0.5 0.5 translate} def /unbias {Q} def % Draw a line. (x0 y0 x1 y1 line) /L {bias n m l S unbias} def % Polyline primitive. /polyline {n m 1 exch 1 exch {pop currentfile token pop currentfile token pop l} for } def % Draw a polyline (n x0 y0 OPL x1 y1 x2 y2 ... ... xn yn) /OPL {bias polyline S unbias} def % Draw a closed polyline (n x0 y0 CPL x1 y1 x2 y2 ... ... xn yn) /CPL {bias polyline s unbias} def % Draw a filled polyline (n x0 y0 FPL x1 y1 x2 y2 ... ... xn yn) /FPL {polyline h f*} def % Draw an oval. (x y w h OVL) /OVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width currentlinewidth sub 2 div height currentlinewidth sub 2 div neg scale n 0 0 1 5 -2 roll arc smatrix setmatrix S} def % Draw a filled oval. (x y w h FOVL) /FOVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width 2 div height 2 div neg scale n 0 0 m 0 0 1 5 -2 roll arc h smatrix setmatrix f} def % Draw a rounded rectangle. (x y w h arcwidth archeight RREC) /RREC {matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix s} def % Draw a filled rounded rectangle. (x y w h arcwidth archeight FRREC) /FRREC{matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix h f} def % Draw a string. (string x y STR) /STR {q m 1 -1 scale recshow Q} def % Define basic plot symbols. /xys {/siz exch def /yv exch def /xv exch def} def /hline {xys n xv siz 2. div sub yv m siz 0 rlineto S} def /vline {xys n xv yv siz 2. div sub m 0 siz rlineto S} def /plus {xys n xv yv siz 2. div sub m 0 siz rlineto xv siz 2. div sub yv m siz 0 rlineto S} def /dot {n 2. div 0 360 arc s} def /fdot {n 2. div 0 360 arc h f} def /box {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rs} def /fbox {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rf} def /tridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto s} def /ftridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto h f} def % Symbols defined in terms of the others. /star {3 copy cross plus} def /cross {xys q xv yv translate 45 rotate 0 0 siz plus Q} def /diamond {xys q xv yv translate 45 rotate 0 0 siz box Q} def /fdiamond {xys q xv yv translate 45 rotate 0 0 siz fbox Q} def /triup {xys q xv yv translate 180 rotate 0 0 siz tridn Q} def /ftriup {xys q xv yv translate 180 rotate 0 0 siz ftridn Q} def % Define the composite fonts used to print Unicode strings. % Undefine particular values in an encoding array. /vg&undef { {exch dup 3 -1 roll /.notdef put} forall } def /vg&redef { {3 -1 roll dup 4 2 roll put} forall } def % usage: key encoding basefontname vg&newbasefont font /vg&newbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def currentdict end definefont } def % usage: key encoding basefontname vg&newskewedbasefont font /vg&newskewedbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def exch FontMatrix exch matrix concatmatrix /FontMatrix exch def currentdict end definefont } def % usage: basekey suffix vg&nconcat name /vg&nconcat { 2 {dup length string cvs exch} repeat dup length 3 -1 roll dup length 3 -1 roll add string dup 0 4 -1 roll dup length 5 1 roll putinterval dup 4 -2 roll exch putinterval cvn } def %usage: fontname vg&skewmatrix matrix /vg&skewmatrix { findfont dup /FontInfo known { /FontInfo get dup /ItalicAngle known { [ 1 0 4 -1 roll /ItalicAngle get neg dup sin exch cos div 1 0 0 ] } {pop matrix} ifelse } {pop matrix} ifelse } def % usage: newfontname basefontname vg&newcompositefont -- /vg&newcompositefont { /vg&fstyle exch def /vg&bfont exch def /vg&fname exch def << /FontStyleBits vg&fstyle /FontType 0 /FontMatrix matrix /FontName vg&fname /FMapType 2 /Encoding [ 0 1 255 {pop 6} for ] dup 16#00 0 put % Latin dup 16#03 1 put % Greek dup 16#20 2 put % Punctuation dup 16#21 3 put % Arrows dup 16#22 4 put % MathOps dup 16#27 5 put % Dingbats /FDepVector [ vg&bfont /-UC-Latin vg&nconcat UCLatinEncoding vg&bfont vg&newbasefont vg&bfont vg&skewmatrix vg&bfont /-UC-Greek vg&nconcat UCGreekEncoding /Symbol vg&newskewedbasefont vg&bfont /-UC-Punctuation vg&nconcat UCPunctuationEncoding vg&bfont vg&newbasefont /Arrows-UC findfont /MathOps-UC findfont /Dingbats-UC findfont /Undefined-UC findfont ] >> vg&fname exch definefont pop } def % Null encoding vector (all elements set to .notdef) /NullEncoding [ 256 {/.notdef} repeat ] def % Unicode Latin encoding (unicode codes \u0000-\u00ff) /UCLatinEncoding ISOLatin1Encoding dup length array copy dup 16#60 /grave put [ 16#90 16#91 16#92 16#93 16#94 16#95 16#96 16#97 16#98 16#9a 16#9b 16#9d 16#9e 16#9f ] vg&undef def % Unicode Greek encoding (unicode codes \u0370-\u03ff) /UCGreekEncoding NullEncoding dup length array copy << 16#91 /Alpha 16#92 /Beta 16#93 /Gamma 16#94 /Delta 16#95 /Epsilon 16#96 /Zeta 16#97 /Eta 16#98 /Theta 16#99 /Iota 16#9a /Kappa 16#9b /Lambda 16#9c /Mu 16#9d /Nu 16#9e /Xi 16#9f /Omicron 16#a0 /Pi 16#a1 /Rho 16#a3 /Sigma 16#a4 /Tau 16#a5 /Upsilon 16#a6 /Phi 16#a7 /Chi 16#a8 /Psi 16#a9 /Omega 16#b1 /alpha 16#b2 /beta 16#b3 /gamma 16#b4 /delta 16#b5 /epsilon 16#b6 /zeta 16#b7 /eta 16#b8 /theta 16#b9 /iota 16#ba /kappa 16#bb /lambda 16#bc /mu 16#bd /nu 16#be /xi 16#bf /omicron 16#c0 /pi 16#c1 /rho 16#c2 /sigma1 16#c3 /sigma 16#c4 /tau 16#c5 /upsilon 16#c6 /phi1 16#c7 /chi 16#c8 /psi 16#c9 /omega 16#7e /semicolon 16#87 /dotmath 16#d1 /theta1 16#d2 /Upsilon1 16#d5 /phi 16#d6 /omega1 >> vg&redef def % Unicode punctuation encoding (unicode codes \u2000-\u206f) /UCPunctuationEncoding NullEncoding dup length array copy << 16#10 /hyphen 16#11 /hyphen 16#12 /endash 16#13 /emdash 16#18 /quoteleft 16#19 /quoteright 16#1a /quotesinglbase 16#1b /quotesingle 16#1c /quotedblleft 16#1d /quotedblright 16#1e /quotedblbase 16#1f /quotedbl 16#20 /dagger 16#21 /daggerdbl 16#22 /bullet 16#24 /period 16#26 /ellipsis 16#27 /periodcentered 16#30 /perthousand 16#44 /fraction 16#70 /zerosuperior 16#74 /foursuperior 16#75 /fivesuperior 16#76 /sixsuperior 16#77 /sevensuperior 16#78 /eightsuperior 16#79 /ninesuperior 16#7b /hyphensuperior 16#7d /parenleftsuperior 16#7e /parenrightsuperior 16#80 /zeroinferior 16#84 /fourinferior 16#85 /fiveinferior 16#81 /oneinferior 16#82 /twoinferior 16#83 /threeinferior 16#86 /sixinferior 16#87 /seveninferior 16#88 /eightinferior 16#89 /nineinferior 16#8b /hypheninferior 16#8d /parenleftinferior 16#8e /parenrightinferior >> vg&redef def % Unicode mathematical operators encoding (unicode codes \u2200-\u22ff) /UCMathOpsEncoding NullEncoding dup length array copy << 16#00 /universal 16#02 /partialdiff 16#03 /existential 16#05 /emptyset 16#06 /Delta 16#07 /gradient 16#08 /element 16#09 /notelement 16#0b /suchthat 16#0f /product 16#11 /summation 16#12 /minus 16#15 /fraction 16#17 /asteriskmath 16#19 /bullet 16#1a /radical 16#1d /proportional 16#1e /infinity 16#20 /angle 16#23 /bar 16#27 /logicaland 16#28 /logicalor 16#29 /intersection 16#2a /union 16#2b /integral 16#34 /therefore 16#36 /colon 16#3c /similar 16#45 /congruent 16#48 /approxequal 16#60 /notequal 16#61 /equivalence 16#64 /lessequal 16#65 /greaterequal 16#82 /propersubset 16#83 /propersuperset 16#86 /reflexsubset 16#87 /reflexsuperset 16#95 /circleplus 16#97 /circlemultiply 16#a5 /perpendicular 16#03 /existential 16#c0 /logicaland 16#c1 /logicalor 16#c2 /intersection 16#c3 /union 16#c4 /diamond 16#c5 /dotmath >> vg&redef def % Unicode arrows encoding (unicode codes \u2190-\u21ff) % Also includes those "Letterlike" unicode characters % which are available in the symbol font. (unicode codes \u2100-\u214f) /UCArrowsEncoding NullEncoding dup length array copy << 16#11 /Ifraktur 16#1c /Rfraktur 16#22 /trademarkserif 16#35 /aleph 16#90 /arrowleft 16#91 /arrowup 16#92 /arrowright 16#93 /arrowdown 16#94 /arrowboth 16#d0 /arrowdblleft 16#d1 /arrowdblup 16#d2 /arrowdblright 16#d3 /arrowdbldown 16#d4 /arrowdblboth >> vg&redef def /ZapfDingbats findfont /Encoding get dup length array copy /UCDingbatsEncoding exch def 16#20 1 16#7f { dup 16#20 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for 16#a0 1 16#ff { dup 16#40 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for UCDingbatsEncoding [ 16#c0 1 16#ff {} for ] vg&undef [ 16#00 16#05 16#0a 16#0b 16#28 16#4c 16#4e 16#53 16#54 16#55 16#57 16#5f 16#60 16#68 16#69 16#6a 16#6b 16#6c 16#6d 16#6e 16#6f 16#70 16#71 16#72 16#73 16#74 16#75 16#95 16#96 16#97 16#b0 16#bf ] vg&undef pop % Define the base fonts which don't change. /Undefined-UC NullEncoding /Helvetica vg&newbasefont pop /MathOps-UC UCMathOpsEncoding /Symbol vg&newbasefont pop /Arrows-UC UCArrowsEncoding /Symbol vg&newbasefont pop /Dingbats-UC UCDingbatsEncoding /ZapfDingbats vg&newbasefont pop % Make the SansSerif composite fonts. /SansSerif /Helvetica 16#00 vg&newcompositefont /SansSerif-Bold /Helvetica-Bold 16#01 vg&newcompositefont /SansSerif-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /SansSerif-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Serif composite fonts. /Serif /Times-Roman 16#00 vg&newcompositefont /Serif-Bold /Times-Bold 16#01 vg&newcompositefont /Serif-Italic /Times-Italic 16#02 vg&newcompositefont /Serif-BoldItalic /Times-BoldItalic 16#03 vg&newcompositefont % Make the Monospaced composite fonts. /Monospaced /Courier 16#00 vg&newcompositefont /Monospaced-Bold /Courier-Bold 16#01 vg&newcompositefont /Monospaced-Italic /Courier-Oblique 16#02 vg&newcompositefont /Monospaced-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont % Make the Dialog composite fonts. /Dialog /Helvetica 16#00 vg&newcompositefont /Dialog-Bold /Helvetica-Bold 16#01 vg&newcompositefont /Dialog-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /Dialog-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the DialogInput composite fonts. /DialogInput /Helvetica 16#00 vg&newcompositefont /DialogInput-Bold /Helvetica-Bold 16#01 vg&newcompositefont /DialogInput-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /DialogInput-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Typewriter composite fonts (JDK 1.1 only). /Typewriter /Courier 16#00 vg&newcompositefont /Typewriter-Bold /Courier-Bold 16#01 vg&newcompositefont /Typewriter-Italic /Courier-Oblique 16#02 vg&newcompositefont /Typewriter-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont /cfontH { dup /fontsize exch def /SansSerif exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHB { dup /fontsize exch def /SansSerif-Bold exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHI { dup /fontsize exch def /SansSerif-Italic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHBI { dup /fontsize exch def /SansSerif-BoldItalic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontT { dup /fontsize exch def /Serif exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTB { dup /fontsize exch def /Serif-Bold exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTI { dup /fontsize exch def /Serif-Italic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTBI { dup /fontsize exch def /Serif-BoldItalic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontC { dup /fontsize exch def /Typewriter exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCB { dup /fontsize exch def /Typewriter-Bold exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCI { dup /fontsize exch def /Typewriter-Italic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCBI { dup /fontsize exch def /Typewriter-BoldItalic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def % Darken or lighten the current color. /darken {0.7 exch exp 3 copy q 4 -1 roll vg&C currentrgbcolor 3 {4 -2 roll mul} repeat 3 array astore Q} def /displayColorMap << /Cr [1.00 0.00 0.00] /Cg [0.00 1.00 0.00] /Cb [0.00 0.00 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.00 0.00] /CGg [0.00 1.00 0.00] /CGb [0.00 0.00 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.00 0.00] /CIg [0.00 1.00 0.00] /CIb [0.00 0.00 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /printColorMap << /Cr [1.00 0.33 0.33] /Cg [0.33 1.00 0.33] /Cb [0.33 0.33 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.33 0.33] /CGg [0.33 1.00 0.33] /CGb [0.33 0.33 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.33 0.33] /CIg [0.33 1.00 0.33] /CIb [0.33 0.33 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /grayColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [0.75] /CGg [1 ] /CGb [0.50] /CGc [0.75] /CGm [0.50] /CGy [1 ] /CGo [0.75] /CGp [1 ] /CGw [0 ] /CGgrl [0.25] /CGgr [0.50] /CGgrd [0.75] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def /bwColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [1 ] /CGg [1 ] /CGb [1 ] /CGc [1 ] /CGm [1 ] /CGy [1 ] /CGo [1 ] /CGp [1 ] /CGw [0 ] /CGgrl [1 ] /CGgr [1 ] /CGgrd [1 ] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def % % The following routines handle the alignment of and printing of % tagged strings. % % Predefine the bounding box values. /bbllx 0 def /bblly 0 def /bburx 0 def /bbury 0 def % This routine pops the first unicode character off of a string and returns % the remainder of the string, the character code of first character, % and a "true" if the string was non-zero length. % popfirst % popfirst /popfirst { dup length 1 gt {dup 0 get /vg&fbyte exch def dup 1 get /vg&cbyte exch def dup length 2 sub 2 exch getinterval true} {pop false} ifelse } def % This routine shows a single unicode character given the font and % character codes. % unicharshow -- /unicharshow { 2 string dup 0 5 -1 roll put dup 1 4 -1 roll put internalshow } def % This is an internal routine to alternate between determining the % bounding box for stringsize and showing the string for recshow. % internalshow -- /internalshow {show} def % This is an internal routine to alternate between determining the % bounding box for stringsize and stroking various ornaments. % internalstroke -- /internalstroke {S} def % Sets up internalshow to use the null device to determine string size. % -- nullinternalshow -- /nullinternalshow {/internalshow {false charpath flattenpath pathbbox updatebbox} def} def % Sets up internalstroke to use the null device to determine string size. % -- nullinternalstroke -- /nullinternalstroke { /internalstroke {flattenpath pathbbox updatebbox} def} def % This routine tests to see if the character code matches the first % character of a string. % testchar /testchar {exch dup 3 -1 roll 0 get eq} def % Raise the text baseline for superscripts. % -- raise -- /raise { 0 fontsize 2 div rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-raise the text baseline for superscripts. % -- unraise -- /unraise { /fontsize fontsize 1.5 mul def 0 fontsize 2 div neg rmoveto } def % Lower the text baseline for subscripts. % -- lower -- /lower { 0 fontsize 3 div neg rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-lower the text baseline for subscripts. % -- unlower -- /unlower { /fontsize fontsize 1.5 mul def 0 fontsize 3 div rmoveto } def % Compare the top two elements on the stack and leave only the % larger one. /maxval {2 copy gt {pop} {exch pop} ifelse} def % Tokenize a string. Do not use the usual PostScript token because % parentheses will not be interpreted correctly because of rescanning % of the string. /vg&token {/vg&string exch def /vg&index -1 def /vg&level 0 def 0 2 vg&string length 2 sub { dup dup 1 add exch vg&string exch get 8 bitshift vg&string 3 -1 roll get or dup 16#f0fe eq {pop 1}{16#f0ff eq {-1}{0} ifelse} ifelse /vg&level exch vg&level add def vg&level 0 eq {/vg&index exch def exit} if pop } for vg&index 0 ge { vg&string vg&index 2 add dup vg&string length exch sub getinterval vg&index 2 gt {vg&string 2 vg&index 2 sub getinterval}{()} ifelse true} {false} ifelse } bind def % Recursively show an unicode string. % recshow -- /recshow { popfirst { % Test to see if this is a string attribute. vg&fbyte 16#f0 and 16#e0 eq { q % Font style. currentfont dup /FontStyleBits known {/FontStyleBits get}{pop 0} ifelse vg&cbyte or vg&fontstyles exch get fontsize exch exec vg&token pop recshow currentpoint Q m recshow } { vg&fbyte 16#F8 and 16#F0 eq { % Superscript and/or subscript. vg&cbyte 16#00 eq { vg&token pop exch vg&token pop 3 -1 roll q raise recshow unraise currentpoint pop Q exch q lower recshow unlower currentpoint pop Q maxval currentpoint exch pop m recshow } if % Strikeout. vg&cbyte 16#01 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll fontsize 3 div add moveto fontsize 3 div add lineto internalstroke Q recshow} if % Underline. vg&cbyte 16#02 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dashed underline. vg&cbyte 16#03 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J [ vg&uthick 5 mul vg&uthick 2 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dotted underline. vg&cbyte 16#04 eq { vg&token pop currentpoint 3 -1 roll recshow q 1 J [ 0 vg&uthick 3 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Thick underline. vg&cbyte 16#05 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Gray thick underline. vg&cbyte 16#06 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w 0.5 setgray currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Overbar. vg&cbyte 16#07 eq { vg&token pop dup stringsize relative 4 1 roll pop pop exch 3 -1 roll recshow q 0 J vg&underline vg&uthick w vg&uoffset neg add dup currentpoint pop exch m l internalstroke Q recshow} if } { vg&fbyte vg&cbyte unicharshow recshow } ifelse } ifelse } if } def % Get the underline position and thickness from the current font. /vg&underline { currentfont dup /FontType get 0 eq {/FDepVector get 0 get} if dup dup /FontInfo known { /FontInfo get dup dup /UnderlinePosition known { /UnderlinePosition get /vg&uoffset exch def } { pop /vg&uoffset 0 def } ifelse dup /UnderlineThickness known { /UnderlineThickness get /vg&uthick exch def } { pop /vg&uthick 0 def } ifelse } { pop /vg&uoffset 0 def /vg&uthick 0 def } ifelse /FontMatrix get currentfont dup /FontType get 0 eq {/FontMatrix get matrix concatmatrix}{pop} ifelse dup 0 vg&uoffset 3 -1 roll transform /vg&uoffset exch def pop 0 vg&uthick 3 -1 roll transform /vg&uthick exch def pop } def % Make a frame with the coordinates on the stack. % frame -- /frame {4 copy m 3 1 roll exch l 4 -2 roll l l h} def % Resets the accumulated bounding box to a degenerate box at the % current point. % -- resetbbox -- /resetbbox { currentpoint 2 copy /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Update the accumulated bounding box. % updatebbox -- /updatebbox { dup bbury gt {/bbury exch def} {pop} ifelse dup bburx gt {/bburx exch def} {pop} ifelse dup bblly lt {/bblly exch def} {pop} ifelse dup bbllx lt {/bbllx exch def} {pop} ifelse } def % Set the bounding box to the values on the stack. % updatebbox -- /restorebbox { /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Push the accumulated bounding box onto the stack. % -- pushbbox /pushbbox {bbllx bblly bburx bbury} def % Make the relative bounding box relative to the currentpoint. % inflate /inflate { 2 {fontsize 0.2 mul add 4 1 roll} repeat 2 {fontsize 0.2 mul sub 4 1 roll} repeat } def % Make the relative bounding box relative to the currentpoint. % relative /relative { currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll } def % Returns the size of a string appropriate for recshow. % stringsize /stringsize { pushbbox /internalshow load /internalstroke load 7 -1 roll q nulldevice 0 0 m nullinternalshow nullinternalstroke resetbbox recshow /internalstroke exch def /internalshow exch def pushbbox 8 -4 roll restorebbox Q } def % Calculate values for string positioning. /calcval {4 copy 3 -1 roll sub /widy exch def sub neg /widx exch def pop pop /dy exch def /dx exch def} def % Utilities to position a string. % First letter (U=upper, C=center, B=baseline, L=lower) % Second letter (L=left, C=center, R=right) /align [ {calcval dx neg widy dy add neg rmoveto} % UL {calcval dx neg widy 2 div dy add neg rmoveto} % CL {calcval dx neg 0 rmoveto} % BL {calcval dx neg dy neg rmoveto} % LL {calcval widx dx add neg widy dy add neg rmoveto} % UR {calcval widx dx add neg widy 2 div dy add neg rmoveto} % CR {calcval widx dx add neg 0 rmoveto} % BR {calcval widx dx add neg dy neg rmoveto} % LR {calcval widx 2 div dx add neg widy dy add neg rmoveto} % UC {calcval widx 2 div dx add neg widy 2 div dy add neg rmoveto} % CC {calcval widx 2 div dx add neg 0 rmoveto} % BC {calcval widx 2 div dx add neg dy neg rmoveto} % LC ] def /vg&str {m q 1 -1 scale dup stringsize 4 copy align 11 -1 roll get exec q inflate relative frame exch exec Q recshow Q} def end /procDict exch def %%EndProlog %%BeginSetup save procDict begin printColorMap begin 595 791 setpagesize 20 20 20 20 setmargins 0 0 setorigin 600 600 setsize fittopage portrait imagescale cliptobounds setbasematrix /Helvetica 10 sf defaultGraphicsState %%EndSetup 0.00000 0.00000 0.00000 RG [ 1.00000 0.00000 0.00000 1.00000 0.00000 0.00000 ] defaultmatrix matrix concatmatrix setmatrix 1.00000 w 2 J 0 j 10.0000 M [ ] 0.00000 d .800000 .800000 .800000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG q 0 0 600 600 rc q .800000 .800000 .800000 RG 0.00000 0.00000 600.000 600.000 rf Q q q 496.000 8.00000 translate 0 0 73 20 rc q q .800000 .800000 .800000 RG 0.00000 0.00000 73.0000 20.0000 rf 0.00000 0.00000 0.00000 RG 2.00000 15.0000 moveto q 1 -1 scale /Dialog-Bold findfont 12.0 scalefont setfont (\000T\000e\000s\000t\000B\000u\000t\000t\000o\000n\0003) show Q Q 0.00000 0.00000 translate .556863 .556863 .556863 RG 0.00000 19.0000 0.00000 0.00000 L 72.0000 0.00000 1.00000 0.00000 L .388235 .388235 .388235 RG 1.00000 18.0000 1.00000 1.00000 L 71.0000 1.00000 2.00000 1.00000 L 1.00000 1.00000 1.00000 RG 72.0000 19.0000 1.00000 19.0000 L 72.0000 18.0000 72.0000 1.00000 L 71.0000 18.0000 2.00000 18.0000 L 71.0000 17.0000 71.0000 2.00000 L 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG Q Q q 418.000 8.00000 translate 0 0 73 20 rc q q .800000 .800000 .800000 RG 0.00000 0.00000 73.0000 20.0000 rf 0.00000 0.00000 0.00000 RG 2.00000 15.0000 moveto q 1 -1 scale /Dialog-Bold findfont 12.0 scalefont setfont (\000T\000e\000s\000t\000B\000u\000t\000t\000o\000n\0002) show Q Q 0.00000 0.00000 translate .556863 .556863 .556863 RG bias 0.00000 0.00000 71.0000 18.0000 rs unbias 1.00000 1.00000 1.00000 RG 1.00000 1.00000 1.00000 17.0000 L 70.0000 1.00000 1.00000 1.00000 L 72.0000 19.0000 0.00000 19.0000 L 72.0000 0.00000 72.0000 19.0000 L 0.00000 0.00000 translate Q Q q 310.000 5.00000 translate 0 0 103 26 rc q q .800000 .800000 .800000 RG 0.00000 0.00000 103.000 26.0000 rf 0.00000 0.00000 0.00000 RG 17.0000 18.0000 moveto q 1 -1 scale /Dialog-Bold findfont 12.0 scalefont setfont (\000T\000e\000s\000t\000B\000u\000t\000t\000o\000n\0001) show Q Q 0.00000 0.00000 translate .400000 .400000 .400000 RG bias 0.00000 0.00000 101.000 24.0000 rs unbias 1.00000 1.00000 1.00000 RG bias 1.00000 1.00000 101.000 24.0000 rs unbias .800000 .800000 .800000 RG 1.00000 24.0000 0.00000 25.0000 L 101.000 1.00000 102.000 0.00000 L 0.00000 0.00000 translate Q Q q 242.000 10.0000 translate 0 0 63 16 rc q q q 0.00000 0.00000 translate 0 0 63 16 rc q q 0.00000 13.0000 moveto q 1 -1 scale /Dialog-Bold findfont 12.0 scalefont setfont (\000T\000e\000s\000t\000L\000a\000b\000e\000l\0004) show Q Q Q Q Q Q Q q 170.000 8.00000 translate 0 0 67 20 rc q q 2.00000 15.0000 moveto q 1 -1 scale /Dialog-Bold findfont 12.0 scalefont setfont (\000T\000e\000s\000t\000L\000a\000b\000e\000l\0003) show Q Q 0.00000 0.00000 translate .556863 .556863 .556863 RG 0.00000 19.0000 0.00000 0.00000 L 66.0000 0.00000 1.00000 0.00000 L .388235 .388235 .388235 RG 1.00000 18.0000 1.00000 1.00000 L 65.0000 1.00000 2.00000 1.00000 L 1.00000 1.00000 1.00000 RG 66.0000 19.0000 1.00000 19.0000 L 66.0000 18.0000 66.0000 1.00000 L 65.0000 18.0000 2.00000 18.0000 L 65.0000 17.0000 65.0000 2.00000 L 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG Q Q q 98.0000 8.00000 translate 0 0 67 20 rc q q 2.00000 15.0000 moveto q 1 -1 scale /Dialog-Bold findfont 12.0 scalefont setfont (\000T\000e\000s\000t\000L\000a\000b\000e\000l\0002) show Q Q 0.00000 0.00000 translate .556863 .556863 .556863 RG bias 0.00000 0.00000 65.0000 18.0000 rs unbias 1.00000 1.00000 1.00000 RG 1.00000 1.00000 1.00000 17.0000 L 64.0000 1.00000 1.00000 1.00000 L 66.0000 19.0000 0.00000 19.0000 L 66.0000 0.00000 66.0000 19.0000 L 0.00000 0.00000 translate Q Q q 30.0000 10.0000 translate 0 0 63 16 rc q q 0.00000 13.0000 moveto q 1 -1 scale /Dialog-Bold findfont 12.0 scalefont setfont (\000T\000e\000s\000t\000L\000a\000b\000e\000l\0001) show Q Q Q Q Q Q end end restore showpage %%Trailer %%EOF src/test/resources/ps/TestHTML.ps0000644000175000017500000011217610344614150016256 0ustar user01user01%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 20 118 575 673 %%Creator: FreeHEP Graphics2D Driver %%Producer: org.freehep.graphicsio.ps.PSGraphics2D %%For: %%Title: %%LanguageLevel: 3 %%EndComments %%BeginProlog 100 dict dup begin % % File: org/freehep/graphicsio.ps/PSProlog.txt % Author: Charles Loomis % % Redefinitions which save some space in the output file. These are also % the same as the PDF operators. /q {gsave} def /Q {grestore} def /n {newpath} def /m {moveto} def /l {lineto} def /c {curveto} def /h {closepath} def /re {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath} def /f {fill} def /f* {eofill} def /F {gsave vg&FC fill grestore} def /F* {gsave vg&FC eofill grestore} def /s {closepath stroke} def /S {stroke} def /b {closepath gsave vg&FC fill grestore gsave stroke grestore newpath} def /B {gsave vg&FC fill grestore gsave stroke grestore newpath} def /b* {closepath gsave vg&FC eofill grestore gsave stroke grestore newpath} def /B* {gsave vg&FC eofill grestore gsave stroke grestore newpath} def /g {1 array astore /vg&fcolor exch def} def /G {setgray} def /k {4 array astore /vg&fcolor exch def} def /K {setcmykcolor} def /rg {3 array astore /vg&fcolor exch def} def /RG {setrgbcolor} def % Initialize the fill color. 0 0 0 rg /vg&FC {mark vg&fcolor aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /vg&DFC {/vg&fcolor exch def} def /vg&C {mark exch aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /w {setlinewidth} def /j {setlinejoin} def /J {setlinecap} def /M {setmiterlimit} def /d {setdash} def /i {setflat} def /W {clip} def /W* {eoclip} def % Setup the default graphics state. % (black; 1 pt. linewidth; miter join; butt-ends; solid) /defaultGraphicsState {0 g 1 w 0 j 0 J [] 0 d} def % Emulation of the rectangle operators for PostScript implementations % which do not implement all Level 2 features. This is an INCOMPLETE % emulation; only the "x y width height rect..." form is emulated. /*rf {gsave newpath re fill grestore} def /*rs {gsave newpath re stroke grestore} def /*rc {newpath re clip} def /rf /rectfill where {pop /rectfill}{/*rf} ifelse load def /rs /rectstroke where {pop /rectstroke}{/*rs} ifelse load def /rc /rectclip where {pop /rectclip}{/*rc} ifelse load def % Emulation of the selectfont operator. This includes a 20% increase in % the fontsize which is necessary to get sizes similar to the Java fonts. /*sf {exch findfont exch dup type /arraytype eq {makefont}{scalefont} ifelse setfont} bind def /sf /selectfont where {pop {1.2 mul selectfont}}{{1.2 mul *sf}} ifelse def % Special version of stroke which allows the dash pattern to continue % across path segments. (This may be needed for PostScript although % modern printers seem to do this correctly.) /vg&stroke { currentdash pop length 0 eq {stroke} { currentdash /vg&doffset exch def pop flattenpath {m vg&resetdash} {2 copy currentpoint 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt 3 1 roll l currentdash 3 -1 roll add setdash} {} {h vg&resetdash} pathforall stroke vg&resetdash } ifelse } def /vg&resetdash {currentdash pop vg&doffset setdash} def % Initialize variables for safety. /delta 0 def /xv 0 def /yv 0 def /width 0 def /height 0 def % Initialize to portrait INTERNATIONAL (Letter-height, A4-width) page. /pw 595 def /ph 791 def /po true def /ftp false def % Initialize margins to 20 points. /ml 20 def /mr 20 def /mt 20 def /mb 20 def % Temporary matrices. /smatrix 0 def /nmatrix 0 def % set page size (usage: setpagesize) /setpagesize {/ph exch def /pw exch def} def % set page orientation (usage: portrait or landscape) /portrait {/po true def} def /landscape {/po false def} def % force natural size for image (usage: naturalsize) /naturalsize {/ftp false def} def % resize image to fill page (usage: fittopage) /fittopage {/ftp true def} def % set margins of the page (usage: setmargins) /setmargins {/mr exch def /mt exch def /mb exch def /ml exch def} def % set the graphic's size (usage: setsize) /setsize {/gh exch def /gw exch def} def % set the graphic's origin (usage: setorigin) /setorigin {/gy exch def /gx exch def} def % calculate image center /imagecenter {pw ml sub mr sub 2 div ml add ph mt sub mb sub 2 div mb add} def % calculate the necessary scaling /imagescale {po {gw}{gh} ifelse pw ml sub mr sub div po {gh}{gw} ifelse ph mt sub mb sub div 2 copy lt {exch} if pop ftp not {1 2 copy lt {exch} if pop} if 1 exch div /sfactor exch def /gw gw sfactor mul def /gh gh sfactor mul def} def % calculate image origin /imageorigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div po {add}{sub} ifelse} def % calculate the clipping origin /cliporigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub floor ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div sub floor} def % Set the clipping region to the bounding box. /cliptobounds {cliporigin po {gw}{gh} ifelse 1 add po {gh}{gw} ifelse 1 add rc} def % set the base transformation matrix (usage: setbasematrix) /setbasematrix {imageorigin translate po {0}{90} ifelse rotate sfactor sfactor neg scale /defaultmatrix matrix currentmatrix def} def % The lower-right bias in drawing 1 pt. wide lines. /bias {q 0.5 0.5 translate} def /unbias {Q} def % Draw a line. (x0 y0 x1 y1 line) /L {bias n m l S unbias} def % Polyline primitive. /polyline {n m 1 exch 1 exch {pop currentfile token pop currentfile token pop l} for } def % Draw a polyline (n x0 y0 OPL x1 y1 x2 y2 ... ... xn yn) /OPL {bias polyline S unbias} def % Draw a closed polyline (n x0 y0 CPL x1 y1 x2 y2 ... ... xn yn) /CPL {bias polyline s unbias} def % Draw a filled polyline (n x0 y0 FPL x1 y1 x2 y2 ... ... xn yn) /FPL {polyline h f*} def % Draw an oval. (x y w h OVL) /OVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width currentlinewidth sub 2 div height currentlinewidth sub 2 div neg scale n 0 0 1 5 -2 roll arc smatrix setmatrix S} def % Draw a filled oval. (x y w h FOVL) /FOVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width 2 div height 2 div neg scale n 0 0 m 0 0 1 5 -2 roll arc h smatrix setmatrix f} def % Draw a rounded rectangle. (x y w h arcwidth archeight RREC) /RREC {matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix s} def % Draw a filled rounded rectangle. (x y w h arcwidth archeight FRREC) /FRREC{matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix h f} def % Draw a string. (string x y STR) /STR {q m 1 -1 scale recshow Q} def % Define basic plot symbols. /xys {/siz exch def /yv exch def /xv exch def} def /hline {xys n xv siz 2. div sub yv m siz 0 rlineto S} def /vline {xys n xv yv siz 2. div sub m 0 siz rlineto S} def /plus {xys n xv yv siz 2. div sub m 0 siz rlineto xv siz 2. div sub yv m siz 0 rlineto S} def /dot {n 2. div 0 360 arc s} def /fdot {n 2. div 0 360 arc h f} def /box {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rs} def /fbox {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rf} def /tridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto s} def /ftridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto h f} def % Symbols defined in terms of the others. /star {3 copy cross plus} def /cross {xys q xv yv translate 45 rotate 0 0 siz plus Q} def /diamond {xys q xv yv translate 45 rotate 0 0 siz box Q} def /fdiamond {xys q xv yv translate 45 rotate 0 0 siz fbox Q} def /triup {xys q xv yv translate 180 rotate 0 0 siz tridn Q} def /ftriup {xys q xv yv translate 180 rotate 0 0 siz ftridn Q} def % Define the composite fonts used to print Unicode strings. % Undefine particular values in an encoding array. /vg&undef { {exch dup 3 -1 roll /.notdef put} forall } def /vg&redef { {3 -1 roll dup 4 2 roll put} forall } def % usage: key encoding basefontname vg&newbasefont font /vg&newbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def currentdict end definefont } def % usage: key encoding basefontname vg&newskewedbasefont font /vg&newskewedbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def exch FontMatrix exch matrix concatmatrix /FontMatrix exch def currentdict end definefont } def % usage: basekey suffix vg&nconcat name /vg&nconcat { 2 {dup length string cvs exch} repeat dup length 3 -1 roll dup length 3 -1 roll add string dup 0 4 -1 roll dup length 5 1 roll putinterval dup 4 -2 roll exch putinterval cvn } def %usage: fontname vg&skewmatrix matrix /vg&skewmatrix { findfont dup /FontInfo known { /FontInfo get dup /ItalicAngle known { [ 1 0 4 -1 roll /ItalicAngle get neg dup sin exch cos div 1 0 0 ] } {pop matrix} ifelse } {pop matrix} ifelse } def % usage: newfontname basefontname vg&newcompositefont -- /vg&newcompositefont { /vg&fstyle exch def /vg&bfont exch def /vg&fname exch def << /FontStyleBits vg&fstyle /FontType 0 /FontMatrix matrix /FontName vg&fname /FMapType 2 /Encoding [ 0 1 255 {pop 6} for ] dup 16#00 0 put % Latin dup 16#03 1 put % Greek dup 16#20 2 put % Punctuation dup 16#21 3 put % Arrows dup 16#22 4 put % MathOps dup 16#27 5 put % Dingbats /FDepVector [ vg&bfont /-UC-Latin vg&nconcat UCLatinEncoding vg&bfont vg&newbasefont vg&bfont vg&skewmatrix vg&bfont /-UC-Greek vg&nconcat UCGreekEncoding /Symbol vg&newskewedbasefont vg&bfont /-UC-Punctuation vg&nconcat UCPunctuationEncoding vg&bfont vg&newbasefont /Arrows-UC findfont /MathOps-UC findfont /Dingbats-UC findfont /Undefined-UC findfont ] >> vg&fname exch definefont pop } def % Null encoding vector (all elements set to .notdef) /NullEncoding [ 256 {/.notdef} repeat ] def % Unicode Latin encoding (unicode codes \u0000-\u00ff) /UCLatinEncoding ISOLatin1Encoding dup length array copy dup 16#60 /grave put [ 16#90 16#91 16#92 16#93 16#94 16#95 16#96 16#97 16#98 16#9a 16#9b 16#9d 16#9e 16#9f ] vg&undef def % Unicode Greek encoding (unicode codes \u0370-\u03ff) /UCGreekEncoding NullEncoding dup length array copy << 16#91 /Alpha 16#92 /Beta 16#93 /Gamma 16#94 /Delta 16#95 /Epsilon 16#96 /Zeta 16#97 /Eta 16#98 /Theta 16#99 /Iota 16#9a /Kappa 16#9b /Lambda 16#9c /Mu 16#9d /Nu 16#9e /Xi 16#9f /Omicron 16#a0 /Pi 16#a1 /Rho 16#a3 /Sigma 16#a4 /Tau 16#a5 /Upsilon 16#a6 /Phi 16#a7 /Chi 16#a8 /Psi 16#a9 /Omega 16#b1 /alpha 16#b2 /beta 16#b3 /gamma 16#b4 /delta 16#b5 /epsilon 16#b6 /zeta 16#b7 /eta 16#b8 /theta 16#b9 /iota 16#ba /kappa 16#bb /lambda 16#bc /mu 16#bd /nu 16#be /xi 16#bf /omicron 16#c0 /pi 16#c1 /rho 16#c2 /sigma1 16#c3 /sigma 16#c4 /tau 16#c5 /upsilon 16#c6 /phi1 16#c7 /chi 16#c8 /psi 16#c9 /omega 16#7e /semicolon 16#87 /dotmath 16#d1 /theta1 16#d2 /Upsilon1 16#d5 /phi 16#d6 /omega1 >> vg&redef def % Unicode punctuation encoding (unicode codes \u2000-\u206f) /UCPunctuationEncoding NullEncoding dup length array copy << 16#10 /hyphen 16#11 /hyphen 16#12 /endash 16#13 /emdash 16#18 /quoteleft 16#19 /quoteright 16#1a /quotesinglbase 16#1b /quotesingle 16#1c /quotedblleft 16#1d /quotedblright 16#1e /quotedblbase 16#1f /quotedbl 16#20 /dagger 16#21 /daggerdbl 16#22 /bullet 16#24 /period 16#26 /ellipsis 16#27 /periodcentered 16#30 /perthousand 16#44 /fraction 16#70 /zerosuperior 16#74 /foursuperior 16#75 /fivesuperior 16#76 /sixsuperior 16#77 /sevensuperior 16#78 /eightsuperior 16#79 /ninesuperior 16#7b /hyphensuperior 16#7d /parenleftsuperior 16#7e /parenrightsuperior 16#80 /zeroinferior 16#84 /fourinferior 16#85 /fiveinferior 16#81 /oneinferior 16#82 /twoinferior 16#83 /threeinferior 16#86 /sixinferior 16#87 /seveninferior 16#88 /eightinferior 16#89 /nineinferior 16#8b /hypheninferior 16#8d /parenleftinferior 16#8e /parenrightinferior >> vg&redef def % Unicode mathematical operators encoding (unicode codes \u2200-\u22ff) /UCMathOpsEncoding NullEncoding dup length array copy << 16#00 /universal 16#02 /partialdiff 16#03 /existential 16#05 /emptyset 16#06 /Delta 16#07 /gradient 16#08 /element 16#09 /notelement 16#0b /suchthat 16#0f /product 16#11 /summation 16#12 /minus 16#15 /fraction 16#17 /asteriskmath 16#19 /bullet 16#1a /radical 16#1d /proportional 16#1e /infinity 16#20 /angle 16#23 /bar 16#27 /logicaland 16#28 /logicalor 16#29 /intersection 16#2a /union 16#2b /integral 16#34 /therefore 16#36 /colon 16#3c /similar 16#45 /congruent 16#48 /approxequal 16#60 /notequal 16#61 /equivalence 16#64 /lessequal 16#65 /greaterequal 16#82 /propersubset 16#83 /propersuperset 16#86 /reflexsubset 16#87 /reflexsuperset 16#95 /circleplus 16#97 /circlemultiply 16#a5 /perpendicular 16#03 /existential 16#c0 /logicaland 16#c1 /logicalor 16#c2 /intersection 16#c3 /union 16#c4 /diamond 16#c5 /dotmath >> vg&redef def % Unicode arrows encoding (unicode codes \u2190-\u21ff) % Also includes those "Letterlike" unicode characters % which are available in the symbol font. (unicode codes \u2100-\u214f) /UCArrowsEncoding NullEncoding dup length array copy << 16#11 /Ifraktur 16#1c /Rfraktur 16#22 /trademarkserif 16#35 /aleph 16#90 /arrowleft 16#91 /arrowup 16#92 /arrowright 16#93 /arrowdown 16#94 /arrowboth 16#d0 /arrowdblleft 16#d1 /arrowdblup 16#d2 /arrowdblright 16#d3 /arrowdbldown 16#d4 /arrowdblboth >> vg&redef def /ZapfDingbats findfont /Encoding get dup length array copy /UCDingbatsEncoding exch def 16#20 1 16#7f { dup 16#20 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for 16#a0 1 16#ff { dup 16#40 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for UCDingbatsEncoding [ 16#c0 1 16#ff {} for ] vg&undef [ 16#00 16#05 16#0a 16#0b 16#28 16#4c 16#4e 16#53 16#54 16#55 16#57 16#5f 16#60 16#68 16#69 16#6a 16#6b 16#6c 16#6d 16#6e 16#6f 16#70 16#71 16#72 16#73 16#74 16#75 16#95 16#96 16#97 16#b0 16#bf ] vg&undef pop % Define the base fonts which don't change. /Undefined-UC NullEncoding /Helvetica vg&newbasefont pop /MathOps-UC UCMathOpsEncoding /Symbol vg&newbasefont pop /Arrows-UC UCArrowsEncoding /Symbol vg&newbasefont pop /Dingbats-UC UCDingbatsEncoding /ZapfDingbats vg&newbasefont pop % Make the SansSerif composite fonts. /SansSerif /Helvetica 16#00 vg&newcompositefont /SansSerif-Bold /Helvetica-Bold 16#01 vg&newcompositefont /SansSerif-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /SansSerif-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Serif composite fonts. /Serif /Times-Roman 16#00 vg&newcompositefont /Serif-Bold /Times-Bold 16#01 vg&newcompositefont /Serif-Italic /Times-Italic 16#02 vg&newcompositefont /Serif-BoldItalic /Times-BoldItalic 16#03 vg&newcompositefont % Make the Monospaced composite fonts. /Monospaced /Courier 16#00 vg&newcompositefont /Monospaced-Bold /Courier-Bold 16#01 vg&newcompositefont /Monospaced-Italic /Courier-Oblique 16#02 vg&newcompositefont /Monospaced-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont % Make the Dialog composite fonts. /Dialog /Helvetica 16#00 vg&newcompositefont /Dialog-Bold /Helvetica-Bold 16#01 vg&newcompositefont /Dialog-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /Dialog-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the DialogInput composite fonts. /DialogInput /Helvetica 16#00 vg&newcompositefont /DialogInput-Bold /Helvetica-Bold 16#01 vg&newcompositefont /DialogInput-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /DialogInput-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Typewriter composite fonts (JDK 1.1 only). /Typewriter /Courier 16#00 vg&newcompositefont /Typewriter-Bold /Courier-Bold 16#01 vg&newcompositefont /Typewriter-Italic /Courier-Oblique 16#02 vg&newcompositefont /Typewriter-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont /cfontH { dup /fontsize exch def /SansSerif exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHB { dup /fontsize exch def /SansSerif-Bold exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHI { dup /fontsize exch def /SansSerif-Italic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHBI { dup /fontsize exch def /SansSerif-BoldItalic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontT { dup /fontsize exch def /Serif exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTB { dup /fontsize exch def /Serif-Bold exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTI { dup /fontsize exch def /Serif-Italic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTBI { dup /fontsize exch def /Serif-BoldItalic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontC { dup /fontsize exch def /Typewriter exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCB { dup /fontsize exch def /Typewriter-Bold exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCI { dup /fontsize exch def /Typewriter-Italic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCBI { dup /fontsize exch def /Typewriter-BoldItalic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def % Darken or lighten the current color. /darken {0.7 exch exp 3 copy q 4 -1 roll vg&C currentrgbcolor 3 {4 -2 roll mul} repeat 3 array astore Q} def /displayColorMap << /Cr [1.00 0.00 0.00] /Cg [0.00 1.00 0.00] /Cb [0.00 0.00 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.00 0.00] /CGg [0.00 1.00 0.00] /CGb [0.00 0.00 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.00 0.00] /CIg [0.00 1.00 0.00] /CIb [0.00 0.00 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /printColorMap << /Cr [1.00 0.33 0.33] /Cg [0.33 1.00 0.33] /Cb [0.33 0.33 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.33 0.33] /CGg [0.33 1.00 0.33] /CGb [0.33 0.33 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.33 0.33] /CIg [0.33 1.00 0.33] /CIb [0.33 0.33 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /grayColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [0.75] /CGg [1 ] /CGb [0.50] /CGc [0.75] /CGm [0.50] /CGy [1 ] /CGo [0.75] /CGp [1 ] /CGw [0 ] /CGgrl [0.25] /CGgr [0.50] /CGgrd [0.75] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def /bwColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [1 ] /CGg [1 ] /CGb [1 ] /CGc [1 ] /CGm [1 ] /CGy [1 ] /CGo [1 ] /CGp [1 ] /CGw [0 ] /CGgrl [1 ] /CGgr [1 ] /CGgrd [1 ] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def % % The following routines handle the alignment of and printing of % tagged strings. % % Predefine the bounding box values. /bbllx 0 def /bblly 0 def /bburx 0 def /bbury 0 def % This routine pops the first unicode character off of a string and returns % the remainder of the string, the character code of first character, % and a "true" if the string was non-zero length. % popfirst % popfirst /popfirst { dup length 1 gt {dup 0 get /vg&fbyte exch def dup 1 get /vg&cbyte exch def dup length 2 sub 2 exch getinterval true} {pop false} ifelse } def % This routine shows a single unicode character given the font and % character codes. % unicharshow -- /unicharshow { 2 string dup 0 5 -1 roll put dup 1 4 -1 roll put internalshow } def % This is an internal routine to alternate between determining the % bounding box for stringsize and showing the string for recshow. % internalshow -- /internalshow {show} def % This is an internal routine to alternate between determining the % bounding box for stringsize and stroking various ornaments. % internalstroke -- /internalstroke {S} def % Sets up internalshow to use the null device to determine string size. % -- nullinternalshow -- /nullinternalshow {/internalshow {false charpath flattenpath pathbbox updatebbox} def} def % Sets up internalstroke to use the null device to determine string size. % -- nullinternalstroke -- /nullinternalstroke { /internalstroke {flattenpath pathbbox updatebbox} def} def % This routine tests to see if the character code matches the first % character of a string. % testchar /testchar {exch dup 3 -1 roll 0 get eq} def % Raise the text baseline for superscripts. % -- raise -- /raise { 0 fontsize 2 div rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-raise the text baseline for superscripts. % -- unraise -- /unraise { /fontsize fontsize 1.5 mul def 0 fontsize 2 div neg rmoveto } def % Lower the text baseline for subscripts. % -- lower -- /lower { 0 fontsize 3 div neg rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-lower the text baseline for subscripts. % -- unlower -- /unlower { /fontsize fontsize 1.5 mul def 0 fontsize 3 div rmoveto } def % Compare the top two elements on the stack and leave only the % larger one. /maxval {2 copy gt {pop} {exch pop} ifelse} def % Tokenize a string. Do not use the usual PostScript token because % parentheses will not be interpreted correctly because of rescanning % of the string. /vg&token {/vg&string exch def /vg&index -1 def /vg&level 0 def 0 2 vg&string length 2 sub { dup dup 1 add exch vg&string exch get 8 bitshift vg&string 3 -1 roll get or dup 16#f0fe eq {pop 1}{16#f0ff eq {-1}{0} ifelse} ifelse /vg&level exch vg&level add def vg&level 0 eq {/vg&index exch def exit} if pop } for vg&index 0 ge { vg&string vg&index 2 add dup vg&string length exch sub getinterval vg&index 2 gt {vg&string 2 vg&index 2 sub getinterval}{()} ifelse true} {false} ifelse } bind def % Recursively show an unicode string. % recshow -- /recshow { popfirst { % Test to see if this is a string attribute. vg&fbyte 16#f0 and 16#e0 eq { q % Font style. currentfont dup /FontStyleBits known {/FontStyleBits get}{pop 0} ifelse vg&cbyte or vg&fontstyles exch get fontsize exch exec vg&token pop recshow currentpoint Q m recshow } { vg&fbyte 16#F8 and 16#F0 eq { % Superscript and/or subscript. vg&cbyte 16#00 eq { vg&token pop exch vg&token pop 3 -1 roll q raise recshow unraise currentpoint pop Q exch q lower recshow unlower currentpoint pop Q maxval currentpoint exch pop m recshow } if % Strikeout. vg&cbyte 16#01 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll fontsize 3 div add moveto fontsize 3 div add lineto internalstroke Q recshow} if % Underline. vg&cbyte 16#02 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dashed underline. vg&cbyte 16#03 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J [ vg&uthick 5 mul vg&uthick 2 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dotted underline. vg&cbyte 16#04 eq { vg&token pop currentpoint 3 -1 roll recshow q 1 J [ 0 vg&uthick 3 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Thick underline. vg&cbyte 16#05 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Gray thick underline. vg&cbyte 16#06 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w 0.5 setgray currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Overbar. vg&cbyte 16#07 eq { vg&token pop dup stringsize relative 4 1 roll pop pop exch 3 -1 roll recshow q 0 J vg&underline vg&uthick w vg&uoffset neg add dup currentpoint pop exch m l internalstroke Q recshow} if } { vg&fbyte vg&cbyte unicharshow recshow } ifelse } ifelse } if } def % Get the underline position and thickness from the current font. /vg&underline { currentfont dup /FontType get 0 eq {/FDepVector get 0 get} if dup dup /FontInfo known { /FontInfo get dup dup /UnderlinePosition known { /UnderlinePosition get /vg&uoffset exch def } { pop /vg&uoffset 0 def } ifelse dup /UnderlineThickness known { /UnderlineThickness get /vg&uthick exch def } { pop /vg&uthick 0 def } ifelse } { pop /vg&uoffset 0 def /vg&uthick 0 def } ifelse /FontMatrix get currentfont dup /FontType get 0 eq {/FontMatrix get matrix concatmatrix}{pop} ifelse dup 0 vg&uoffset 3 -1 roll transform /vg&uoffset exch def pop 0 vg&uthick 3 -1 roll transform /vg&uthick exch def pop } def % Make a frame with the coordinates on the stack. % frame -- /frame {4 copy m 3 1 roll exch l 4 -2 roll l l h} def % Resets the accumulated bounding box to a degenerate box at the % current point. % -- resetbbox -- /resetbbox { currentpoint 2 copy /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Update the accumulated bounding box. % updatebbox -- /updatebbox { dup bbury gt {/bbury exch def} {pop} ifelse dup bburx gt {/bburx exch def} {pop} ifelse dup bblly lt {/bblly exch def} {pop} ifelse dup bbllx lt {/bbllx exch def} {pop} ifelse } def % Set the bounding box to the values on the stack. % updatebbox -- /restorebbox { /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Push the accumulated bounding box onto the stack. % -- pushbbox /pushbbox {bbllx bblly bburx bbury} def % Make the relative bounding box relative to the currentpoint. % inflate /inflate { 2 {fontsize 0.2 mul add 4 1 roll} repeat 2 {fontsize 0.2 mul sub 4 1 roll} repeat } def % Make the relative bounding box relative to the currentpoint. % relative /relative { currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll } def % Returns the size of a string appropriate for recshow. % stringsize /stringsize { pushbbox /internalshow load /internalstroke load 7 -1 roll q nulldevice 0 0 m nullinternalshow nullinternalstroke resetbbox recshow /internalstroke exch def /internalshow exch def pushbbox 8 -4 roll restorebbox Q } def % Calculate values for string positioning. /calcval {4 copy 3 -1 roll sub /widy exch def sub neg /widx exch def pop pop /dy exch def /dx exch def} def % Utilities to position a string. % First letter (U=upper, C=center, B=baseline, L=lower) % Second letter (L=left, C=center, R=right) /align [ {calcval dx neg widy dy add neg rmoveto} % UL {calcval dx neg widy 2 div dy add neg rmoveto} % CL {calcval dx neg 0 rmoveto} % BL {calcval dx neg dy neg rmoveto} % LL {calcval widx dx add neg widy dy add neg rmoveto} % UR {calcval widx dx add neg widy 2 div dy add neg rmoveto} % CR {calcval widx dx add neg 0 rmoveto} % BR {calcval widx dx add neg dy neg rmoveto} % LR {calcval widx 2 div dx add neg widy dy add neg rmoveto} % UC {calcval widx 2 div dx add neg widy 2 div dy add neg rmoveto} % CC {calcval widx 2 div dx add neg 0 rmoveto} % BC {calcval widx 2 div dx add neg dy neg rmoveto} % LC ] def /vg&str {m q 1 -1 scale dup stringsize 4 copy align 11 -1 roll get exec q inflate relative frame exch exec Q recshow Q} def end /procDict exch def %%EndProlog %%BeginSetup save procDict begin printColorMap begin 595 791 setpagesize 20 20 20 20 setmargins 0 0 setorigin 600 600 setsize fittopage portrait imagescale cliptobounds setbasematrix /Helvetica 10 sf defaultGraphicsState %%EndSetup 0.00000 0.00000 0.00000 RG [ 1.00000 0.00000 0.00000 1.00000 0.00000 0.00000 ] defaultmatrix matrix concatmatrix setmatrix 1.00000 w 2 J 0 j 10.0000 M [ ] 0.00000 d .800000 .800000 .800000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG q 0 0 600 600 rc q .800000 .800000 .800000 RG 0.00000 0.00000 600.000 600.000 rf Q q q 179.000 5.00000 translate 0 0 242 38 rc q q 1.00000 1.00000 1.00000 RG 0.00000 0.00000 242.000 38.0000 rf 0.00000 0.00000 0.00000 RG 3.00000 25.0000 moveto q 1 -1 scale /Serif findfont 14.0 scalefont setfont (\000<\000V\000e\000c\000t\000o\000r) show Q 49.0000 17.0000 moveto q 1 -1 scale /Serif-Bold findfont 12.0 scalefont setfont (\000G\000r\000a\000p\000h\000i\000c\000s) show Q 96.0000 25.0000 moveto q 1 -1 scale /Serif findfont 14.0 scalefont setfont (\000 \000&\000 \000A\000d\000a\000p\000t\000e\000r) show Q 159.000 32.0000 moveto q 1 -1 scale /Serif-Italic findfont 12.0 scalefont setfont (\000C\000a\000r\000d) show Q 184.000 25.0000 moveto q 1 -1 scale /Serif findfont 14.0 scalefont setfont (\000 \000=\000 \000e) show Q 206.000 17.0000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000x) show Q 211.000 17.0000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\0002) show Q 217.000 17.0000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000y) show Q 224.000 17.0000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\0003) show Q 230.000 25.0000 moveto q 1 -1 scale /Serif findfont 14.0 scalefont setfont (\000>) show Q Q Q Q Q Q end end restore showpage %%Trailer %%EOF src/test/resources/ps/TestImage2D.ps0000644000175000017500000022142610344614150016721 0ustar user01user01%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 20 118 575 673 %%Creator: FreeHEP Graphics2D Driver %%Producer: org.freehep.graphicsio.ps.PSGraphics2D %%For: %%Title: %%LanguageLevel: 3 %%EndComments %%BeginProlog 100 dict dup begin % % File: org/freehep/graphicsio.ps/PSProlog.txt % Author: Charles Loomis % % Redefinitions which save some space in the output file. These are also % the same as the PDF operators. /q {gsave} def /Q {grestore} def /n {newpath} def /m {moveto} def /l {lineto} def /c {curveto} def /h {closepath} def /re {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath} def /f {fill} def /f* {eofill} def /F {gsave vg&FC fill grestore} def /F* {gsave vg&FC eofill grestore} def /s {closepath stroke} def /S {stroke} def /b {closepath gsave vg&FC fill grestore gsave stroke grestore newpath} def /B {gsave vg&FC fill grestore gsave stroke grestore newpath} def /b* {closepath gsave vg&FC eofill grestore gsave stroke grestore newpath} def /B* {gsave vg&FC eofill grestore gsave stroke grestore newpath} def /g {1 array astore /vg&fcolor exch def} def /G {setgray} def /k {4 array astore /vg&fcolor exch def} def /K {setcmykcolor} def /rg {3 array astore /vg&fcolor exch def} def /RG {setrgbcolor} def % Initialize the fill color. 0 0 0 rg /vg&FC {mark vg&fcolor aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /vg&DFC {/vg&fcolor exch def} def /vg&C {mark exch aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /w {setlinewidth} def /j {setlinejoin} def /J {setlinecap} def /M {setmiterlimit} def /d {setdash} def /i {setflat} def /W {clip} def /W* {eoclip} def % Setup the default graphics state. % (black; 1 pt. linewidth; miter join; butt-ends; solid) /defaultGraphicsState {0 g 1 w 0 j 0 J [] 0 d} def % Emulation of the rectangle operators for PostScript implementations % which do not implement all Level 2 features. This is an INCOMPLETE % emulation; only the "x y width height rect..." form is emulated. /*rf {gsave newpath re fill grestore} def /*rs {gsave newpath re stroke grestore} def /*rc {newpath re clip} def /rf /rectfill where {pop /rectfill}{/*rf} ifelse load def /rs /rectstroke where {pop /rectstroke}{/*rs} ifelse load def /rc /rectclip where {pop /rectclip}{/*rc} ifelse load def % Emulation of the selectfont operator. This includes a 20% increase in % the fontsize which is necessary to get sizes similar to the Java fonts. /*sf {exch findfont exch dup type /arraytype eq {makefont}{scalefont} ifelse setfont} bind def /sf /selectfont where {pop {1.2 mul selectfont}}{{1.2 mul *sf}} ifelse def % Special version of stroke which allows the dash pattern to continue % across path segments. (This may be needed for PostScript although % modern printers seem to do this correctly.) /vg&stroke { currentdash pop length 0 eq {stroke} { currentdash /vg&doffset exch def pop flattenpath {m vg&resetdash} {2 copy currentpoint 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt 3 1 roll l currentdash 3 -1 roll add setdash} {} {h vg&resetdash} pathforall stroke vg&resetdash } ifelse } def /vg&resetdash {currentdash pop vg&doffset setdash} def % Initialize variables for safety. /delta 0 def /xv 0 def /yv 0 def /width 0 def /height 0 def % Initialize to portrait INTERNATIONAL (Letter-height, A4-width) page. /pw 595 def /ph 791 def /po true def /ftp false def % Initialize margins to 20 points. /ml 20 def /mr 20 def /mt 20 def /mb 20 def % Temporary matrices. /smatrix 0 def /nmatrix 0 def % set page size (usage: setpagesize) /setpagesize {/ph exch def /pw exch def} def % set page orientation (usage: portrait or landscape) /portrait {/po true def} def /landscape {/po false def} def % force natural size for image (usage: naturalsize) /naturalsize {/ftp false def} def % resize image to fill page (usage: fittopage) /fittopage {/ftp true def} def % set margins of the page (usage: setmargins) /setmargins {/mr exch def /mt exch def /mb exch def /ml exch def} def % set the graphic's size (usage: setsize) /setsize {/gh exch def /gw exch def} def % set the graphic's origin (usage: setorigin) /setorigin {/gy exch def /gx exch def} def % calculate image center /imagecenter {pw ml sub mr sub 2 div ml add ph mt sub mb sub 2 div mb add} def % calculate the necessary scaling /imagescale {po {gw}{gh} ifelse pw ml sub mr sub div po {gh}{gw} ifelse ph mt sub mb sub div 2 copy lt {exch} if pop ftp not {1 2 copy lt {exch} if pop} if 1 exch div /sfactor exch def /gw gw sfactor mul def /gh gh sfactor mul def} def % calculate image origin /imageorigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div po {add}{sub} ifelse} def % calculate the clipping origin /cliporigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub floor ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div sub floor} def % Set the clipping region to the bounding box. /cliptobounds {cliporigin po {gw}{gh} ifelse 1 add po {gh}{gw} ifelse 1 add rc} def % set the base transformation matrix (usage: setbasematrix) /setbasematrix {imageorigin translate po {0}{90} ifelse rotate sfactor sfactor neg scale /defaultmatrix matrix currentmatrix def} def % The lower-right bias in drawing 1 pt. wide lines. /bias {q 0.5 0.5 translate} def /unbias {Q} def % Draw a line. (x0 y0 x1 y1 line) /L {bias n m l S unbias} def % Polyline primitive. /polyline {n m 1 exch 1 exch {pop currentfile token pop currentfile token pop l} for } def % Draw a polyline (n x0 y0 OPL x1 y1 x2 y2 ... ... xn yn) /OPL {bias polyline S unbias} def % Draw a closed polyline (n x0 y0 CPL x1 y1 x2 y2 ... ... xn yn) /CPL {bias polyline s unbias} def % Draw a filled polyline (n x0 y0 FPL x1 y1 x2 y2 ... ... xn yn) /FPL {polyline h f*} def % Draw an oval. (x y w h OVL) /OVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width currentlinewidth sub 2 div height currentlinewidth sub 2 div neg scale n 0 0 1 5 -2 roll arc smatrix setmatrix S} def % Draw a filled oval. (x y w h FOVL) /FOVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width 2 div height 2 div neg scale n 0 0 m 0 0 1 5 -2 roll arc h smatrix setmatrix f} def % Draw a rounded rectangle. (x y w h arcwidth archeight RREC) /RREC {matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix s} def % Draw a filled rounded rectangle. (x y w h arcwidth archeight FRREC) /FRREC{matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix h f} def % Draw a string. (string x y STR) /STR {q m 1 -1 scale recshow Q} def % Define basic plot symbols. /xys {/siz exch def /yv exch def /xv exch def} def /hline {xys n xv siz 2. div sub yv m siz 0 rlineto S} def /vline {xys n xv yv siz 2. div sub m 0 siz rlineto S} def /plus {xys n xv yv siz 2. div sub m 0 siz rlineto xv siz 2. div sub yv m siz 0 rlineto S} def /dot {n 2. div 0 360 arc s} def /fdot {n 2. div 0 360 arc h f} def /box {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rs} def /fbox {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rf} def /tridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto s} def /ftridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto h f} def % Symbols defined in terms of the others. /star {3 copy cross plus} def /cross {xys q xv yv translate 45 rotate 0 0 siz plus Q} def /diamond {xys q xv yv translate 45 rotate 0 0 siz box Q} def /fdiamond {xys q xv yv translate 45 rotate 0 0 siz fbox Q} def /triup {xys q xv yv translate 180 rotate 0 0 siz tridn Q} def /ftriup {xys q xv yv translate 180 rotate 0 0 siz ftridn Q} def % Define the composite fonts used to print Unicode strings. % Undefine particular values in an encoding array. /vg&undef { {exch dup 3 -1 roll /.notdef put} forall } def /vg&redef { {3 -1 roll dup 4 2 roll put} forall } def % usage: key encoding basefontname vg&newbasefont font /vg&newbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def currentdict end definefont } def % usage: key encoding basefontname vg&newskewedbasefont font /vg&newskewedbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def exch FontMatrix exch matrix concatmatrix /FontMatrix exch def currentdict end definefont } def % usage: basekey suffix vg&nconcat name /vg&nconcat { 2 {dup length string cvs exch} repeat dup length 3 -1 roll dup length 3 -1 roll add string dup 0 4 -1 roll dup length 5 1 roll putinterval dup 4 -2 roll exch putinterval cvn } def %usage: fontname vg&skewmatrix matrix /vg&skewmatrix { findfont dup /FontInfo known { /FontInfo get dup /ItalicAngle known { [ 1 0 4 -1 roll /ItalicAngle get neg dup sin exch cos div 1 0 0 ] } {pop matrix} ifelse } {pop matrix} ifelse } def % usage: newfontname basefontname vg&newcompositefont -- /vg&newcompositefont { /vg&fstyle exch def /vg&bfont exch def /vg&fname exch def << /FontStyleBits vg&fstyle /FontType 0 /FontMatrix matrix /FontName vg&fname /FMapType 2 /Encoding [ 0 1 255 {pop 6} for ] dup 16#00 0 put % Latin dup 16#03 1 put % Greek dup 16#20 2 put % Punctuation dup 16#21 3 put % Arrows dup 16#22 4 put % MathOps dup 16#27 5 put % Dingbats /FDepVector [ vg&bfont /-UC-Latin vg&nconcat UCLatinEncoding vg&bfont vg&newbasefont vg&bfont vg&skewmatrix vg&bfont /-UC-Greek vg&nconcat UCGreekEncoding /Symbol vg&newskewedbasefont vg&bfont /-UC-Punctuation vg&nconcat UCPunctuationEncoding vg&bfont vg&newbasefont /Arrows-UC findfont /MathOps-UC findfont /Dingbats-UC findfont /Undefined-UC findfont ] >> vg&fname exch definefont pop } def % Null encoding vector (all elements set to .notdef) /NullEncoding [ 256 {/.notdef} repeat ] def % Unicode Latin encoding (unicode codes \u0000-\u00ff) /UCLatinEncoding ISOLatin1Encoding dup length array copy dup 16#60 /grave put [ 16#90 16#91 16#92 16#93 16#94 16#95 16#96 16#97 16#98 16#9a 16#9b 16#9d 16#9e 16#9f ] vg&undef def % Unicode Greek encoding (unicode codes \u0370-\u03ff) /UCGreekEncoding NullEncoding dup length array copy << 16#91 /Alpha 16#92 /Beta 16#93 /Gamma 16#94 /Delta 16#95 /Epsilon 16#96 /Zeta 16#97 /Eta 16#98 /Theta 16#99 /Iota 16#9a /Kappa 16#9b /Lambda 16#9c /Mu 16#9d /Nu 16#9e /Xi 16#9f /Omicron 16#a0 /Pi 16#a1 /Rho 16#a3 /Sigma 16#a4 /Tau 16#a5 /Upsilon 16#a6 /Phi 16#a7 /Chi 16#a8 /Psi 16#a9 /Omega 16#b1 /alpha 16#b2 /beta 16#b3 /gamma 16#b4 /delta 16#b5 /epsilon 16#b6 /zeta 16#b7 /eta 16#b8 /theta 16#b9 /iota 16#ba /kappa 16#bb /lambda 16#bc /mu 16#bd /nu 16#be /xi 16#bf /omicron 16#c0 /pi 16#c1 /rho 16#c2 /sigma1 16#c3 /sigma 16#c4 /tau 16#c5 /upsilon 16#c6 /phi1 16#c7 /chi 16#c8 /psi 16#c9 /omega 16#7e /semicolon 16#87 /dotmath 16#d1 /theta1 16#d2 /Upsilon1 16#d5 /phi 16#d6 /omega1 >> vg&redef def % Unicode punctuation encoding (unicode codes \u2000-\u206f) /UCPunctuationEncoding NullEncoding dup length array copy << 16#10 /hyphen 16#11 /hyphen 16#12 /endash 16#13 /emdash 16#18 /quoteleft 16#19 /quoteright 16#1a /quotesinglbase 16#1b /quotesingle 16#1c /quotedblleft 16#1d /quotedblright 16#1e /quotedblbase 16#1f /quotedbl 16#20 /dagger 16#21 /daggerdbl 16#22 /bullet 16#24 /period 16#26 /ellipsis 16#27 /periodcentered 16#30 /perthousand 16#44 /fraction 16#70 /zerosuperior 16#74 /foursuperior 16#75 /fivesuperior 16#76 /sixsuperior 16#77 /sevensuperior 16#78 /eightsuperior 16#79 /ninesuperior 16#7b /hyphensuperior 16#7d /parenleftsuperior 16#7e /parenrightsuperior 16#80 /zeroinferior 16#84 /fourinferior 16#85 /fiveinferior 16#81 /oneinferior 16#82 /twoinferior 16#83 /threeinferior 16#86 /sixinferior 16#87 /seveninferior 16#88 /eightinferior 16#89 /nineinferior 16#8b /hypheninferior 16#8d /parenleftinferior 16#8e /parenrightinferior >> vg&redef def % Unicode mathematical operators encoding (unicode codes \u2200-\u22ff) /UCMathOpsEncoding NullEncoding dup length array copy << 16#00 /universal 16#02 /partialdiff 16#03 /existential 16#05 /emptyset 16#06 /Delta 16#07 /gradient 16#08 /element 16#09 /notelement 16#0b /suchthat 16#0f /product 16#11 /summation 16#12 /minus 16#15 /fraction 16#17 /asteriskmath 16#19 /bullet 16#1a /radical 16#1d /proportional 16#1e /infinity 16#20 /angle 16#23 /bar 16#27 /logicaland 16#28 /logicalor 16#29 /intersection 16#2a /union 16#2b /integral 16#34 /therefore 16#36 /colon 16#3c /similar 16#45 /congruent 16#48 /approxequal 16#60 /notequal 16#61 /equivalence 16#64 /lessequal 16#65 /greaterequal 16#82 /propersubset 16#83 /propersuperset 16#86 /reflexsubset 16#87 /reflexsuperset 16#95 /circleplus 16#97 /circlemultiply 16#a5 /perpendicular 16#03 /existential 16#c0 /logicaland 16#c1 /logicalor 16#c2 /intersection 16#c3 /union 16#c4 /diamond 16#c5 /dotmath >> vg&redef def % Unicode arrows encoding (unicode codes \u2190-\u21ff) % Also includes those "Letterlike" unicode characters % which are available in the symbol font. (unicode codes \u2100-\u214f) /UCArrowsEncoding NullEncoding dup length array copy << 16#11 /Ifraktur 16#1c /Rfraktur 16#22 /trademarkserif 16#35 /aleph 16#90 /arrowleft 16#91 /arrowup 16#92 /arrowright 16#93 /arrowdown 16#94 /arrowboth 16#d0 /arrowdblleft 16#d1 /arrowdblup 16#d2 /arrowdblright 16#d3 /arrowdbldown 16#d4 /arrowdblboth >> vg&redef def /ZapfDingbats findfont /Encoding get dup length array copy /UCDingbatsEncoding exch def 16#20 1 16#7f { dup 16#20 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for 16#a0 1 16#ff { dup 16#40 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for UCDingbatsEncoding [ 16#c0 1 16#ff {} for ] vg&undef [ 16#00 16#05 16#0a 16#0b 16#28 16#4c 16#4e 16#53 16#54 16#55 16#57 16#5f 16#60 16#68 16#69 16#6a 16#6b 16#6c 16#6d 16#6e 16#6f 16#70 16#71 16#72 16#73 16#74 16#75 16#95 16#96 16#97 16#b0 16#bf ] vg&undef pop % Define the base fonts which don't change. /Undefined-UC NullEncoding /Helvetica vg&newbasefont pop /MathOps-UC UCMathOpsEncoding /Symbol vg&newbasefont pop /Arrows-UC UCArrowsEncoding /Symbol vg&newbasefont pop /Dingbats-UC UCDingbatsEncoding /ZapfDingbats vg&newbasefont pop % Make the SansSerif composite fonts. /SansSerif /Helvetica 16#00 vg&newcompositefont /SansSerif-Bold /Helvetica-Bold 16#01 vg&newcompositefont /SansSerif-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /SansSerif-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Serif composite fonts. /Serif /Times-Roman 16#00 vg&newcompositefont /Serif-Bold /Times-Bold 16#01 vg&newcompositefont /Serif-Italic /Times-Italic 16#02 vg&newcompositefont /Serif-BoldItalic /Times-BoldItalic 16#03 vg&newcompositefont % Make the Monospaced composite fonts. /Monospaced /Courier 16#00 vg&newcompositefont /Monospaced-Bold /Courier-Bold 16#01 vg&newcompositefont /Monospaced-Italic /Courier-Oblique 16#02 vg&newcompositefont /Monospaced-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont % Make the Dialog composite fonts. /Dialog /Helvetica 16#00 vg&newcompositefont /Dialog-Bold /Helvetica-Bold 16#01 vg&newcompositefont /Dialog-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /Dialog-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the DialogInput composite fonts. /DialogInput /Helvetica 16#00 vg&newcompositefont /DialogInput-Bold /Helvetica-Bold 16#01 vg&newcompositefont /DialogInput-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /DialogInput-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Typewriter composite fonts (JDK 1.1 only). /Typewriter /Courier 16#00 vg&newcompositefont /Typewriter-Bold /Courier-Bold 16#01 vg&newcompositefont /Typewriter-Italic /Courier-Oblique 16#02 vg&newcompositefont /Typewriter-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont /cfontH { dup /fontsize exch def /SansSerif exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHB { dup /fontsize exch def /SansSerif-Bold exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHI { dup /fontsize exch def /SansSerif-Italic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHBI { dup /fontsize exch def /SansSerif-BoldItalic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontT { dup /fontsize exch def /Serif exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTB { dup /fontsize exch def /Serif-Bold exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTI { dup /fontsize exch def /Serif-Italic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTBI { dup /fontsize exch def /Serif-BoldItalic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontC { dup /fontsize exch def /Typewriter exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCB { dup /fontsize exch def /Typewriter-Bold exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCI { dup /fontsize exch def /Typewriter-Italic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCBI { dup /fontsize exch def /Typewriter-BoldItalic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def % Darken or lighten the current color. /darken {0.7 exch exp 3 copy q 4 -1 roll vg&C currentrgbcolor 3 {4 -2 roll mul} repeat 3 array astore Q} def /displayColorMap << /Cr [1.00 0.00 0.00] /Cg [0.00 1.00 0.00] /Cb [0.00 0.00 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.00 0.00] /CGg [0.00 1.00 0.00] /CGb [0.00 0.00 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.00 0.00] /CIg [0.00 1.00 0.00] /CIb [0.00 0.00 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /printColorMap << /Cr [1.00 0.33 0.33] /Cg [0.33 1.00 0.33] /Cb [0.33 0.33 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.33 0.33] /CGg [0.33 1.00 0.33] /CGb [0.33 0.33 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.33 0.33] /CIg [0.33 1.00 0.33] /CIb [0.33 0.33 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /grayColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [0.75] /CGg [1 ] /CGb [0.50] /CGc [0.75] /CGm [0.50] /CGy [1 ] /CGo [0.75] /CGp [1 ] /CGw [0 ] /CGgrl [0.25] /CGgr [0.50] /CGgrd [0.75] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def /bwColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [1 ] /CGg [1 ] /CGb [1 ] /CGc [1 ] /CGm [1 ] /CGy [1 ] /CGo [1 ] /CGp [1 ] /CGw [0 ] /CGgrl [1 ] /CGgr [1 ] /CGgrd [1 ] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def % % The following routines handle the alignment of and printing of % tagged strings. % % Predefine the bounding box values. /bbllx 0 def /bblly 0 def /bburx 0 def /bbury 0 def % This routine pops the first unicode character off of a string and returns % the remainder of the string, the character code of first character, % and a "true" if the string was non-zero length. % popfirst % popfirst /popfirst { dup length 1 gt {dup 0 get /vg&fbyte exch def dup 1 get /vg&cbyte exch def dup length 2 sub 2 exch getinterval true} {pop false} ifelse } def % This routine shows a single unicode character given the font and % character codes. % unicharshow -- /unicharshow { 2 string dup 0 5 -1 roll put dup 1 4 -1 roll put internalshow } def % This is an internal routine to alternate between determining the % bounding box for stringsize and showing the string for recshow. % internalshow -- /internalshow {show} def % This is an internal routine to alternate between determining the % bounding box for stringsize and stroking various ornaments. % internalstroke -- /internalstroke {S} def % Sets up internalshow to use the null device to determine string size. % -- nullinternalshow -- /nullinternalshow {/internalshow {false charpath flattenpath pathbbox updatebbox} def} def % Sets up internalstroke to use the null device to determine string size. % -- nullinternalstroke -- /nullinternalstroke { /internalstroke {flattenpath pathbbox updatebbox} def} def % This routine tests to see if the character code matches the first % character of a string. % testchar /testchar {exch dup 3 -1 roll 0 get eq} def % Raise the text baseline for superscripts. % -- raise -- /raise { 0 fontsize 2 div rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-raise the text baseline for superscripts. % -- unraise -- /unraise { /fontsize fontsize 1.5 mul def 0 fontsize 2 div neg rmoveto } def % Lower the text baseline for subscripts. % -- lower -- /lower { 0 fontsize 3 div neg rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-lower the text baseline for subscripts. % -- unlower -- /unlower { /fontsize fontsize 1.5 mul def 0 fontsize 3 div rmoveto } def % Compare the top two elements on the stack and leave only the % larger one. /maxval {2 copy gt {pop} {exch pop} ifelse} def % Tokenize a string. Do not use the usual PostScript token because % parentheses will not be interpreted correctly because of rescanning % of the string. /vg&token {/vg&string exch def /vg&index -1 def /vg&level 0 def 0 2 vg&string length 2 sub { dup dup 1 add exch vg&string exch get 8 bitshift vg&string 3 -1 roll get or dup 16#f0fe eq {pop 1}{16#f0ff eq {-1}{0} ifelse} ifelse /vg&level exch vg&level add def vg&level 0 eq {/vg&index exch def exit} if pop } for vg&index 0 ge { vg&string vg&index 2 add dup vg&string length exch sub getinterval vg&index 2 gt {vg&string 2 vg&index 2 sub getinterval}{()} ifelse true} {false} ifelse } bind def % Recursively show an unicode string. % recshow -- /recshow { popfirst { % Test to see if this is a string attribute. vg&fbyte 16#f0 and 16#e0 eq { q % Font style. currentfont dup /FontStyleBits known {/FontStyleBits get}{pop 0} ifelse vg&cbyte or vg&fontstyles exch get fontsize exch exec vg&token pop recshow currentpoint Q m recshow } { vg&fbyte 16#F8 and 16#F0 eq { % Superscript and/or subscript. vg&cbyte 16#00 eq { vg&token pop exch vg&token pop 3 -1 roll q raise recshow unraise currentpoint pop Q exch q lower recshow unlower currentpoint pop Q maxval currentpoint exch pop m recshow } if % Strikeout. vg&cbyte 16#01 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll fontsize 3 div add moveto fontsize 3 div add lineto internalstroke Q recshow} if % Underline. vg&cbyte 16#02 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dashed underline. vg&cbyte 16#03 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J [ vg&uthick 5 mul vg&uthick 2 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dotted underline. vg&cbyte 16#04 eq { vg&token pop currentpoint 3 -1 roll recshow q 1 J [ 0 vg&uthick 3 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Thick underline. vg&cbyte 16#05 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Gray thick underline. vg&cbyte 16#06 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w 0.5 setgray currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Overbar. vg&cbyte 16#07 eq { vg&token pop dup stringsize relative 4 1 roll pop pop exch 3 -1 roll recshow q 0 J vg&underline vg&uthick w vg&uoffset neg add dup currentpoint pop exch m l internalstroke Q recshow} if } { vg&fbyte vg&cbyte unicharshow recshow } ifelse } ifelse } if } def % Get the underline position and thickness from the current font. /vg&underline { currentfont dup /FontType get 0 eq {/FDepVector get 0 get} if dup dup /FontInfo known { /FontInfo get dup dup /UnderlinePosition known { /UnderlinePosition get /vg&uoffset exch def } { pop /vg&uoffset 0 def } ifelse dup /UnderlineThickness known { /UnderlineThickness get /vg&uthick exch def } { pop /vg&uthick 0 def } ifelse } { pop /vg&uoffset 0 def /vg&uthick 0 def } ifelse /FontMatrix get currentfont dup /FontType get 0 eq {/FontMatrix get matrix concatmatrix}{pop} ifelse dup 0 vg&uoffset 3 -1 roll transform /vg&uoffset exch def pop 0 vg&uthick 3 -1 roll transform /vg&uthick exch def pop } def % Make a frame with the coordinates on the stack. % frame -- /frame {4 copy m 3 1 roll exch l 4 -2 roll l l h} def % Resets the accumulated bounding box to a degenerate box at the % current point. % -- resetbbox -- /resetbbox { currentpoint 2 copy /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Update the accumulated bounding box. % updatebbox -- /updatebbox { dup bbury gt {/bbury exch def} {pop} ifelse dup bburx gt {/bburx exch def} {pop} ifelse dup bblly lt {/bblly exch def} {pop} ifelse dup bbllx lt {/bbllx exch def} {pop} ifelse } def % Set the bounding box to the values on the stack. % updatebbox -- /restorebbox { /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Push the accumulated bounding box onto the stack. % -- pushbbox /pushbbox {bbllx bblly bburx bbury} def % Make the relative bounding box relative to the currentpoint. % inflate /inflate { 2 {fontsize 0.2 mul add 4 1 roll} repeat 2 {fontsize 0.2 mul sub 4 1 roll} repeat } def % Make the relative bounding box relative to the currentpoint. % relative /relative { currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll } def % Returns the size of a string appropriate for recshow. % stringsize /stringsize { pushbbox /internalshow load /internalstroke load 7 -1 roll q nulldevice 0 0 m nullinternalshow nullinternalstroke resetbbox recshow /internalstroke exch def /internalshow exch def pushbbox 8 -4 roll restorebbox Q } def % Calculate values for string positioning. /calcval {4 copy 3 -1 roll sub /widy exch def sub neg /widx exch def pop pop /dy exch def /dx exch def} def % Utilities to position a string. % First letter (U=upper, C=center, B=baseline, L=lower) % Second letter (L=left, C=center, R=right) /align [ {calcval dx neg widy dy add neg rmoveto} % UL {calcval dx neg widy 2 div dy add neg rmoveto} % CL {calcval dx neg 0 rmoveto} % BL {calcval dx neg dy neg rmoveto} % LL {calcval widx dx add neg widy dy add neg rmoveto} % UR {calcval widx dx add neg widy 2 div dy add neg rmoveto} % CR {calcval widx dx add neg 0 rmoveto} % BR {calcval widx dx add neg dy neg rmoveto} % LR {calcval widx 2 div dx add neg widy dy add neg rmoveto} % UC {calcval widx 2 div dx add neg widy 2 div dy add neg rmoveto} % CC {calcval widx 2 div dx add neg 0 rmoveto} % BC {calcval widx 2 div dx add neg dy neg rmoveto} % LC ] def /vg&str {m q 1 -1 scale dup stringsize 4 copy align 11 -1 roll get exec q inflate relative frame exch exec Q recshow Q} def end /procDict exch def %%EndProlog %%BeginSetup save procDict begin printColorMap begin 595 791 setpagesize 20 20 20 20 setmargins 0 0 setorigin 600 600 setsize fittopage portrait imagescale cliptobounds setbasematrix /Helvetica 10 sf defaultGraphicsState %%EndSetup 0.00000 0.00000 0.00000 RG [ 1.00000 0.00000 0.00000 1.00000 0.00000 0.00000 ] defaultmatrix matrix concatmatrix setmatrix 1.00000 w 2 J 0 j 10.0000 M [ ] 0.00000 d .800000 .800000 .800000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG q 0 0 600 600 rc 1.00000 1.00000 1.00000 RG 0.00000 0.00000 600.000 600.000 rf gsave /DeviceRGB setcolorspace [ 256.000 0.00000 0.00000 256.000 0.00000 0.00000 ] concat << /ImageType 1 /Width 256 /Height 256 /BitsPerComponent 8 /Decode [0 1 0 1 0 1] /ImageMatrix [256 0 0 256 0 0] /DataSource currentfile /ASCII85Decode filter /FlateDecode filter >> image Gb"/,4c:=PZL&b*OE#QI[>Z75).H]8#T8V86O[I\@1=C"&47BI0ugN?&Bcp`%iN8?L)=GX9,h?&+et#T AB7k?`Y^J&TjRA*DGEVj7RT^WAS$;F>N_(^rD>L(ldj1AOcbc'-RSlozzzzzzzz!#uqqDuP`JZIf6XUT D"Vs!VY8i'5AQ$i#dgjt\7_^\SV(36lf>OoJ(aI2pjaFF(b+r*R<"JE(C*Ap9W*s0j]ci&KWA+oc*N?c )PfisLk0YLE)m$"!jr.m0\X"oiR)qP3lPDiAQS"l0d+Ii OO?W&oT6QH&s0gB.FS,/:T^diSTu9(^P]n/jVFjH(J[%id)\oj@?C\_@Jl23Ge+kWa$fnG*Ul#<6T\r. k4]*'H(U5N"cQ(]V&=kGHJZM@T9!rdb#6%_g`p0.O`mqX:taiut9!W@>XbrD)?JkUj8o;3lg]Zp7s$6UF(q$a)Pl4EB+/]!HMEglc9[I#rZdj3U3>CNR`8\NCJ* ?p;U(M7u"o;7dZCgseV'4ae#QKhn_tDnGns=:mT=FkBkl5X4T`0"b5BW"c=#7fBG>h6c]XM^Qr'/R.25 &T!;`nf^F(DU6eIM4Ajacs['S#=2+>C`LA.CXq)=K0Z34Cug+8c@#7=2$+P4d]HJ*9,40i4S\W;i9O5P PbZ./k$pN#&AlW<3&$!Q164GRa\^T1AD2]_4S^+7Q!"g"/Y!rBDE`jH1KcVuN`&eb3a.)<>:^pG`m?f) CI('77%i-bl6HRE `97-PgCq_uJ3O$dY%a?>"#WnE%qC#+]T0='Ta$@](\)dq@nEdNE'Ps8:huC,+fL$C/tF;J5jKai>O1D> >qk7@_=Kqp,4UoRG-ZIt?O"$DoJqcIMloQm\er1L/F?OY`6_hc0TRd9."PImuC)m(bh;Zbg%8:7WrULs 3jTgiA\)@_/.+02TJ2H3*lGA[>Ek^.@sDd#PaLBq@OOq&_.$kBuDZs!N=GCI<8^k<%XLnR%e.]MA^jYH OF`T:p(obc/YO#\@)Za3+?F.HN!_jNUZ.cTPpr]&o4)h6k3b]p;(]RLf@h(n'gU9[bC[,XopBAimCfWD "7h[r0_oB(HCcs(=g^b>IGY+?guEk-El'/!OpIPlRU8j*uk?6iRsYr.j9f;Tc?V]r"'dSXR`TZ(gbq=9 &/HeJ/,`%iDHBj#oo=%E%M"hY>]&63!:+@U5u^OsAL^D#@@.l($1Om/L63H:cS1cYa0]s&'QJ)TiUoLA i8753GMdAGe*]\YAUY,c*<`s$K2*rmsbj>Y>fiRof?uT`<2$088q=BhIF#XI`l?^/b>6[6aiU68+&O%n 0^JVL2BXA#$mO0V0bWfP/5bD=BbL]Hs8es"cCDj=TWEao2r.jX YDW\C]$`>/n>65*l#\Ju^sJ6N?5#&0h.uS3:5Yk?(u_DIg$MVQuG.2P[GFDcZ(gJX>]@C@-MQeTre1od iubVW/ch[Bu7tqD+Q9_(($FrEfhVWDKH'F?&isNISXOp!>hLJ*4Ptb(0I5,/2h0Dc 7S"2bO(N/XlJareKOBjo;C+pJ'>L<8TInDqU9Q&BYTD&^^Q15[\p]HoQkta_u>'D:Jp^hm+D5b=^5.65 O@KD? 'O`(=Q,u@3UP(sb[(;JT,/dJ\q j[S@_OaLM#"Ui"PMt55j/9]GSJMj^M3`JZM@PqJl(=]qF21qA+RUnhtdeTs)T@-D,9oKIhm6Za*ZN)DT Vp3O[&d5/FE\Xpi5q5Nrm2nkD%>VB(0m?V]O74hI4,N\hAa.kC*KI"8Y5FmVMk;AH.UN?[%(AD+EOX:Z qj`r:ponPFDNcB_fDU^?#;h\U`mVD=I>sJ#S/&PQ))SRM((@pK><31F3+i\a5gH&*!Uk)*bt@EpS9Gr: dlI'P[ScgI5F4&_P)%T>:7:o.O)[GSftDQqor"1Zs'.d/Rh,1prHo,/;HR=9#,s-T)%6?,5rZ$5X6ks1 >^$OP<8YIM)0G'Bh20K\l)h@/a0\"g2&";u+f6L$>3;m/IAWN_N5sl2m#Us,WrT1^!sDToJoK&B[k2ZA>IkE68T>l7#,\5N8)d/G_W3<]:&'g_PMs/,a)c@6#tA,jjso3]?6o__d:6! qS#5G\+ep=G3^nn6!h_9_X"d&I'#ppm]A^k]?+Hsf07p4/h9j+3R>b(H)Z_XmB?m/g(Zs501Fo.KNr)? jU1s/E7&GKg(?I%`"[^YXA8AeWktSG_hX0tVsDI`''BS9Q0,rf;_er-)Z4J&&Y2=bcos(MIUab7Fs-Il %(TgHVPA`+'k0&L:nZ+,0KF/oYNI!R:WpB)Ikl$g"9mOSKseiILr@$jbr2jOa!1Y5aOrP@%bu5I6kE_Z &`i?fD%<`fjcp!aB7Ejbj*#pEK6:oRci7?GOKdg--R,T4b59gukFk70iAaE7oqHjiqm0W^j91&[O'Hgrg.K,<>!G;7jjT 9i_k.d_l@f:Mk_LBQ<,aNu&rmCWS"$sg'(]==0\fCjTeIW:P%GrQGmWbK,oY2/4q0hfuYk6gXs%7qE)9 1!J@fFQA5CZ>Ys4ZUR:>fno,lXuNjc@J)c[S[Ls'9I=F8NuoJ)1Q&dU)-e'a3Wr0(>2q(\$%+KDrpNmt F$j`F!E[.mkG(r9%,6s'k-&_$\!ouIj0A0`K 0@&\j-gV)?Qoh0_BiS6;(4r%q#5YrmMDi#bSDP[/U)uk.crHj(s:oqnMq&=6I`pCFfCDN;q6@6Ms4B_q t!7?eIZ`r:csAJVa=N%0<^5LGtTYs'6uN>5qO;%mBkU`Y:ZH!FkX.oD]BtN?Ni@L$.t:K)[+q>lSLD#a %>['F9:4qL\;l5WBO73+uBs5`05TKe8l$qk3@'T\MFb +`79?_d?p/cG86h_5/-VOL*%KXrVJZTC@J&`1OY5e55q9;ceP@+3:eG>Mjrt5)\i]jjLhmrb[KKX#/?P l"1B,+NrtP"LgA./fIl $lEFoc<`J#iK3SGBGikM]Y-q$aRTL&c)j8,c:J"V<:_:&^#J%/h:)<6ftkIVo!Z3Fc?Fe"6L;_Z05GG( JMgJ"E_9B0QMIAcM4d,?/I[pt;2>dh(Gm4iH>%q*-n,q><1Js0[R]f`+=-b5!-t^S*\/e,CG!$)!@Z5M ,m1`BTIakG=ID7r/4a/l9:XlOC1M=T$Jeim78s4tC(L?k3:8#pdT!.j>&k5Hp]ss$1qIH.2c?qd78W80 ._K0)kj3pAapb^I/?tnGhf;^TX@a&?Z!'aA8r<_>2t@!SfC/9$MiM>0_U\q>JOK5aOs#XfiX7`ZGM"NE=#\@h$s7'Y?r6.)$n5ot]"_.#FM>u'`^Y&R\j53%(^#2h*!g 37V(T=(Jd/W(le8ESd$Lf3(a1pjj0YQJ45;0+_?a&*M5e''4/c2/@Ia-dm_1+WDeO '?"Iji4,,Q'bng=_QPkWap=A,eXO2uWcHr9""QcMTm@s5W:W9e?JRs3K"Hrq"ku"h;4af>%;e!oX'-^' (O8^o@*)XoFphd/PE]hph[QZ/nbmDu:PY^f']pSbjLMQ2oA/YGBhr,(EM\58S)70:rE$q=!&WnW,[0?A Um*HQ;p<%fs='R_OWJ5?EaB@dtu1s%c@?LHe<(Itk=On,KXEJ+EUqnf+'J:K?u3cMd4crX i!=VZ5+M!h_/R^'fPp+VL9Z^83,`]`j?*!OVkq`;c&"Du)[[-bn%.)>Sap#=%ga[ikYonji#\Qj#HT5h l=QrgWLdmJIPK+?g-OrQe(7aYnW3'_+D8n^km4pq`Es3_R7gSGst@s+`K):@%qUQ![Gg#I46Rofn`A+Z o_Ghp)(kI.F>8^gd>qbnOR+VSKgr*/[\17>kM]rla^/\#o!)qu8^;Jr#s^;>^MPJRn\JepkVf/qO&i&F f/#QKQ`(s3:ICHN%]W5c:#gBDt[Ir0GM*^Pf^S(&TNl?"G0Eup&#3_bCF#cIIF,s*;cIs',GOph"TRq:E"RgKD>DHjMc^s-I>Hh- >c_s5=Ear@`QQY?:hT.A1hQ"#ke$=!0N,!#?oCcMoO5IruORLVO]r&p?1l?QZi@d`EuRD`>4!>H/n#$)]o%K0TQ1ok5XPKro$7mI6U&i0p`%L#1\n@PIR :_UN2Hm[:ITXGn,G/,5GXTqc,F%&$=N<%[GjE7p.qUd8+6KSA\SC6"@'9m:YYp@50a4uMZ;;o^XNG,0R F)Ps10>h:SiRW?I244/ATbbs5eGerl<.\YN,XWqd2F7eE3t'p&90?rlb7)H3os7IWO(ia!:Tjm/I[e*u=Ku%. M6nH[5=GSc\]_5G+dY5krJ$C&ar7s1Ls>r\B[%o?G&$CYu\ca'Sc\p:p>$O%oTekl5.3OlT58 +"#ri>Ts8[ITtKZjsWrBCbZV-e]JW."]4aFEUd!CHMY/HD@&kP"r$p&>9sVmut#q#B#6E4#5g=oW?aRJ s`^s//7tn6>&g!:Be$r&=SHf)A/hao/uR&5Wr?nV/E@9>l=Kq4Gq1?ZS@Bkl::J'L8QIrnkhIpuKHpT7 $[0]DcB^s-jMuT_UYKZ`sI./tceji/nO\p5:3s0)kH+$g@Uqcn:uMr$OFm?ZZV\s8gs1`.6IjFR!Ng>4YB79jY5P)aQJ(+3hFSpcTs4MFA5(0F&IqQ0*IlrW=C]GtcDD1>)WB8Ee%m=^$%Or?so7KelIK/`beuRE`>c?7;p1eY7K0).eYnI$05N 3>!^UD@e/Qr'//cjF=Cmr;Iutn#ialZL@V1pq II?5O%&/qY%X4rYMrDb&*0Ws84D@]!%7#')S^ket`9-V.Ho C0V3WJJ_>K,@@\]:3I$dMlts4=.JqJr==iT)*%ruiK+Y6t1<3-tPLVkrO*IVf7\Wn:kiW[bXWnaZYCrB L;W]nhgH0>@r"'b7n$eA(kZ^%4/JhU+/^Q2]rgV6[7*L&],?]WA,akBAg/s'IQk%JKf=`42?cR/2KMD< plForY7Gq)PQ<3;t#5rekNL=V:YPYASg-^\[H.tICX`=G(7Hk:JeH4E#s8/hotT,'U7b=C%fQE':O\V;>%)EepReko Z>mUDKR;Pe$TO'XN:?.'o.-mKP/tOm,*Q&Jq0fohg0UrXOYX7H&Jb8)4QQ'^.d(Tp5'oGBb5C;HIfKHKzzz!!%c6rrIj(\%;~> grestore [ 1.0 .200000 .200000 1.0 0.0 0.0 ] concat gsave /DeviceRGB setcolorspace [ 224.661 122.733 -190.131 187.841 238.470 95.1543 ] concat << /ImageType 1 /Width 256 /Height 256 /BitsPerComponent 8 /Decode [0 1 0 1 0 1] /ImageMatrix [256 0 0 256 0 0] /DataSource currentfile /ASCII85Decode filter /FlateDecode filter >> image Gb"/,4c:=PZMcRP)jeUOQ8-<#6O[`9+eoWdLg^]HX[O>/:rLd=M:Zlp2&1>6D/ L1o/"0ntX"ka/rNRo@^s&Wopn=]lj@ei>!EJ(2`c\omRSA7T6#oec^Lzzzzzzzz!69guRt%3+/@L*/-u 1Hn5K]E&plD`C!resr\P1-FYPoJ2*9TH0aT!RA5*"qk3k\o&r\*4L^i?bPZTCk&s'$^El\di#EBOiqCd02h!G8qR`OGPoH-%nq##pG!us6>rk n^?NZOVf+7LB9MuT=F\LDU/U'&*!5N"bfK.eU%U@R'\J'Hdh%k7HQ9`aBo02N`VW2jTS;b9?$cMsaMYB E$qr(i/6pjZi4.c!qqlK%7\[ILPA'<'C["8tGneC&)1p-\Y'R.cRiro!f26$'HXhQi:7s$6V9J7 ;#CnYfmAOj2+kkm$MY,7$stdJ2>l?\*l3p/gAfNL^k_&b?Pb$\s*ued7s\R6rhk'BgT(?eOH1:9j&ENjq] GZ1n3s=d,PZETX[*o_]u77D%I^[Z%"!%FFA*_=rt:EN@iQ[e:3^;]Kq35V%951>o(aI*At9%=*7Fl2?B F^E%Kc9pi-b.m\`E'@I70G0]em&o@rlC+PW&QQ3P(dQD<01KrLXLdd4?_%Rh/3X=-u%h;.0Eor-C,02W lQ\=J5U's%fgO4B%\nSZ0HBQTLfVFL(^LEQ')YSZ8JZT:u9XK93M=o7tqs`K:*M<'l(+S`qXP++qeGji _HTE>H%M49)5+s#&R2"bP2PR(a7r=8/n-St&^(E)Dffc;9[R;u*1XB0FWA)Fg;i/1) jS>b>gHYl$>D(5R!M<"mE^ebutkY,2)9J47YS2H2dPc&>[2cIOVpRH6hR]fA.f,",Q=q]e054j>6A@eNl9qr\j'JT]XmF2WB12 ST!\lDCkbqC(9T,EbE8"ClVpkUntbC8?M:qAei!g(Q`ruoMnrEg]<+,V:8.FU?MRKC`XC+^1>MT1-OrU 9V`?JYL1r\"Mi'ZSb$.?4A5HAZS7=q+$Q#5t/%]bH2c'Q #k"nl;NKiH_Q@o>>cc#UA\"lYEqbP.pYK XuF?9?.NcT@<"*'^W[Mj^CZ@r#V+EV=0(qnau?&p>hs*#oR@1GX$ !e)lg(6b:_nI_h=rqp$jHVP?tg0OXJ3_]J)F.bmij9bZ``h$JCWBR5USN%CV>T>q@=PQL?r&9!W!j_>aV]NepmDr5NI(/q/VD Of]Pl,6"2"OZD&'&P1s&Y]YS$Hn1^1GOGZ6TAmPTq"iT`57J_"L%gE"%Gahs:EuWY+7*AOF8!Q)7')0$ sM]bRZpnUKQaYSpCM8^LWjPrn/!KqHhD/r-tt)h#7mb%nA5K@;+ShGK>8i*$1VkPPkMs*.m-mI_kmqQK^um@R[bo4Hrn5Grq0$bSX5(Q S.*Ouia3s!?T>o?Xa+m7I#Zp]oq[(XQ40ZZlc6im21#r30bnkCsP)5KUXJr(ZBA@q@0+tF!8bE:\W"](3b="HeL]!ao @`j5Q("-mKLH%EV*V!!lF`qL:^G,oS?/R(f$H 0sa'4Lq0R/^Og6;urp^%qBH-F3Y3q;8GdFofGWL54_InN[*Q*siDPn&3@uT65^k%/o?Ad+82_+V:ILB) Db?InUN3a#oG.8BS(C3Ga5AC-2m6<)^k@N.u"oH%eK%XWh^X`?k:G(`?\,Z+4@/BoJ+i#l4Dh \8+pgnc&8Gr9M!#\"\p]pd'o$\.XMLY!mN*JVL>seUWYt"iYImoI.-h.-h$2rISJp"pbtq]SIk=99iH8+SqR":=s4nGhgTFpPTU6U3UhI%s*>j,F,es&pQ,pW7pBdXQ?:.hMhn(d H=Zo3^q`q-1`8f/A,"!akOCnUK(=Imj9\rbEGPmpb=LgHWFIo3O,6p-Se[+=KHsJ\NJAJA;(&oKO+@0* FTpr`\o#)$7Y75I\f7(GjsNErIo9f4#"nQ@Et'(S[Jp5;;tAG(E-_5K$KNE;\A^JkpA&#c7BMKE#RD2# 5%Op`E94V#EII?S_hLQGCEg=CUmRn)]6Ks,Yo:r,i9%mfa0`Iu`Q=p^f^1J)EFD?T*:Xipu3+[T8%k]plt`Pp&>7Ss)j8BB+'[Ts2EU)3`gc;>OcWBr.hutiZFU2p7 D;2b5O-X^E8^I7/S-@#_;k<]YRkNmkF:`qO\+Dkir+%V>t'2&=[$os+e[6$it`/4HFt'r$V$tqG0IDM# 7RS5S3k?(R4s_CLR7)nIpqT=qc^U^\U=uqHp)8_YDMG5g')bipZYlI/g*>HY#qQiqS:"s#[[iMtPu+$a f5,@cg=j^U3#C\sEC\=o)KL#_;mbCi'a`gQqVUrP-OsDiOmhr7_1Gf"YbnO3i@gs/GDccM_)olp2Tj_Y >;O-QG_OpW%WtrjdnlT\TQ7UVNe9$[`k6#_;mbDlmaRn0,T;s.66)DiXU^qYr*`s-rPNB(5hdD#rS4JV nsV5.EkQ?I4]6n#XUV9ABI[)?1eDs76mC!dGOV>]g=&s(?RTM>n%DS*h`D5PBRRiue3o:D*W.SY'Wp2h U"((Q^QP\'"`gR32!9""0jKBuNd/W'!jnpLff>\>d1Y)^hmE,A]r'-6Z([ +Tkk;*kQm"YS;m/J)IKSh>]5J'j%)?Ti@LKOI!s!O^-TDte\^X`qrqgV.83WFa,2cQ\bgAbY6!VGp^kM #s8p]pBi]X780Lb/V^"j/cR]j^UFMuWT?r0dQA@ms&lllj/$JHYda779E@#I]ik+)!;eDq[F%s,5M2WT 4$'`SVccrZ?XiQO&-UrdVWEpJo]HU@hk7q5O$O3<._ZJ/dWXWql*RbPA=h^RnXFW%nK@s,5XR4eH9\PP p!G*=.>g'C;>iB(g$2J#A6T[Joh0Z2V]OTo@7b5JE)/TD:qV*Xb9I5V.@EnXnOt(].Q]r7a`B(OV*7+; 01h!`d_eqEMW`g?fbI!BpYMpc#kiVH<]%PPI*]q[U3ud_qr?q,Zm!jfgVZ39Phq\7gRK&'%J,K5RWJ(?2s7og;Isr?6!#I#1rTfLj!:KmM9> Gi\S;R?rqTm7orEfX+:&VgG>Q.Uq`kSb^//A3<\c4Bs#p>f=8t%meng>1PF0>6:nl\5Fs1Z/Ys+p:8Q2 #F,a0C-h&AYonnE1)S^UTiNp^aYPMAQCm>JRWGs'aUa;YkIDN;YCYkE"Q98:d9$I.AkN/G]>;=Sub.V]#;%qTft-q; u%Hr.OG:=T=AO0BV8t2Z?GJk;VW)P4V!.T9Pt+s/?n?9]O1>J"lm+:)65Rs)#UV,j2pg07]Jj8&YG_XF G)_s8RKes)Z/6JCabrc%iH.T\$rOs%Ci@47VLhW/:OGns/@I:nE1)Wc]E>i5IUi!\$Q:>[t*ulJG-a6pj]UL:&ekhj;7YW,QFt-i+F,)(;sQJrb26HZN-m2B` $]=IrkUiSNjsp`('j2s#J1cg#fIC,6!?Nr]9ic5?O+VB*l)*oD]a&s0/BWDZ-37nk7,T5IUU&rhoOX[Zu8Ls'N`B&@(gSMLT"\OGn\*oc[X1RkVVnubl=Yphbs:MGB"G'Jq)k\0+n#0&LBYur;X_2X$lq#1\b+kJ""%NnXm/Zs* C=/7i;7Mo#J-;bosl0s6\VAS'(b#/g*%ONT0t0r6tNB^!cr%ro[Kng9AnA/edQcXmp?%![e,Rm`[TiqE MX#[hIL;c&'5M_?AlXn*^<6hu@AE5k)n!hZ')9H1n]H2_t!TgF3'AnGeCmJ<^)kZ%?^R625qa2u$,fr5 g15bg!nMs%?2fZUFeJ`61s<&C@ibrOIf8\-W2l\baYM5>QP%J#iS[hJ@'fs-iY23t(hP0*18)s3f,pRg Ti)5J4h>s+PCg($iUq"gebgi$OQW$7+dL^qp6&q>\FnYKd3<$3:n8O-g+7QX?ulT6nESIjObPRK(Eds7 rdspg:rZlrgCCtV4IWqn^l9?Ylu7hhK\kbL;uM@LuX!Or.jA5s.JpimC RnNs't-)K)Q;$XYp_cVuCScHPaCd%'^E *?B@f@58$iR8_gMZpR*s0[I[lO';f(j$85l9l^^Ag^hJ"6>tAiQFp+JJftq.GN`+eRq(r!hhMRJ^285G ;C;``%NiV]rj4pOAUQ+&YbIk2NR#"Yf]N>4J4VqkqpCU\B9:ZJP^+Jfe1rVsXM0+(kUK`W,8s?g7]&Qo tT9IpJ/oVc#bf0Bg;u(1?FBs7/5ms5W2?fCAm`L]`V[Egqd3[Lim7LRR0*#'li26o#_A$/ruQjo=nrRkqk)$0%h&4u#5 I3Hh)tR):BCCkT23p=+T1=#[/X",s.1SrJ!nENq;u&M[I;oBA$>n>qd97#a!UgDoRA]f>-W#nq/c,AM- %JWiUp:l^glht2Es7qSWEjSn%9#cJ#[Gf,`[-/q/6r6OO)YIU51oRD0`$D:<5s6o#5I!juS:V QkS?2q4js%S8ud!VDa=kNa'(JlmpnAkhiqo'0J(]ScQ"n[9sBGXK7rf`hr0008is8EDhrEhYi/nYJUD? 3T0s51-V5EbeK78(Gf1Htm=T6]D9^ZkYD3rZt;s(j\[T=e/"^U%01Y7`L;&4#?3/1>5MWmTG_+'LJGq25hsJO(7KMbun)jQ"0nDals4$m`r;PS%r]fuR=RZ99bN tk3^WR*Ps-J[ci$$"#5g]@#XA?q\c5+=^R=E&iJ7"_m5Z6iJe]Qfs$$090bi"7,='l[?b,u0qgZ-TduMLj.g =;TpKAH=s,RmirWiE$$i5F4s4hfP"ebn2RKtId!oHJJGoXd#4s!>1Z 8967Y:Z-(@ilIs1h0E*n,/*%/)n>&pj(tQ53dos+*27S0nU@#:@HbT&9tK^Ru\1Imfn_n3R:;=Bnl*8+ [,5>ru+:]!Ii-Q2dbTWa6dpruL>j;r4C$ZMrB:Vr0&R?p4?nd$sl\Uq#.pHt:CSFO&LQRcjHIah5#9YT E]!r1HtshnM7\p$+Cp([?.(^"Q`qbN+.bD)pL'`B+tW/(FTM?[ek+qB)6)D15Jr1sW)uJG?kls%dV\q&_.4^OM*a].9q^m!CoOri \`iYPWNp^:g_;rrm8?EgniP]WN>DciI>hh0<8jGq45dOs4<33KDe"=0lH(ZVEU\lgN n9jIB2XUISQpRNrMVQs.\4VWrrL[ZkWc:`_#=Si%-Tp[Aj HBI2$<[cX;UO-!,Df2+':=,rr[&Vg@W.jKr3%gTS2l?_TkAHrU4m8-n&&T6i[28e)!GpB/s#mcg5!iaq @=(hG/Y$US*R^Gn/L,.-$Qofr&k4ek3l,oWAbNc*+C@GqF @F_kQN@5Yl"o=:#-tU'5h;%oK$M01mnM lQ(1B0?+*rl9@zzz!.a&'J"%&1$i~> grestore gsave /DeviceRGB setcolorspace [ 256.000 0.00000 0.00000 256.000 300.000 -80.0000 ] concat << /ImageType 1 /Width 256 /Height 256 /BitsPerComponent 8 /Decode [0 1 0 1 0 1] /ImageMatrix [256 0 0 256 0 0] /DataSource currentfile /ASCII85Decode filter /FlateDecode filter >> image Gb"/LIq3?Jg4*DgrSpoH+(&#T;/pH\?!G7TSVB\e>T=H,"=tZLq"qoWi2tm7Rb"N3lZ0h rCoIUTQZCW_qA&N`"gR@uN.Fg$eNBYEbBF-V;doVcf'lb=RoRo]0/Iom&aeH(HlMUeR=:D;)@2 e##j/2Jq0TC"&qRRl5-;Zt\!d9q+%Xg9bSCVG3Olo4o"s.AiFX1n;rWfeG=r&+K>l[W6V m;'M0-c1;os4OUiM`LX6Y;a"@reJW\s7iSjN#[8kIqJYo[HI/P"J>:o5E@^>rA;(bgVWu9G79cDGk#'h ?>\DBBoN(oq>V\5b4^CIC"(X/Ha!DNc7]k&[/Xog@+JN]@HWt]En^Q$4YV5drhJ$kB`H]X^oXsDF7@r1 r;*9?3ao>2F r_q/@2?#gJ"1FscIi!(K3)AI^f]]51Qsr5TYd\1$pocH&NW0OD^hHgHYMh0P]Y28U$#"h;f6m+d\p(hW XXX0n)rn7gBW!?[D[?=\ru\JM:f$-3L)Ae,NA>J@B[q(=^P.OQT2=cm/1eebZ+VG@K%2F[5Bdt r$#n>5W,PP3gu%8:lkJQ\+`t.ao9W2^gH-:2Us)D]?ZI!]\di#p?JAI19^Dk9c_>h!ONi:Pk`;^b.fD)POhJ+=20%,(lre&+\RGhq&6saZ+ 5bIk%1[s#kY>#p[]BZ+rV"`YKr3'c4)ZM6@ZbADnF'3Ri?f'Rs4NWRc,t71IP7k]FsMB4H6g2)kri8>]f+$6s1%n/?\?8; (EdrL,Mh0J]dLTWpi?frI95UO(_eq/>8[C.r3r7!)ZT\NN,k_.4GLoL5O+:'EdB!VGcBj$2MICl]__KV "#H8sBQgjs0]).t_[KGJ^#%:T:r3D9QFol]s8.HKRfF(.*m(m+!I&F$f9fjqgp8lLWaJq]s0-[. K.058aqRZr?#-"6c2[ZN.]eIJ#bTTXNt-)1@Flt>YC2gjkOik2 ld%#L.M0qj'`>">]`%g<2/hi'hUULR7_[-5!3Q:n_97Y%^r`FS8UKe)C5-Knnh`hqB5dGs0"O7M\`k?G?c9G:AX@WB[kV''Q :ULAbC2eL/S(jqf-gbV:hDXTY5PDrk!PfUK]UYs4-rFpV`;^+H>PN1\TQg+n$E9)h4[K41@thCjDYU aa_PS]-RDD:%5o+#b^j_4#``=f+"FQD@'.]s-r^[M;%nF^!L)s-N?H`d0J20F:ZP5s$&Jq=S967BY%V^ KN91f(YVOVjM+!M\82s'T]*rN>Fa/LbF%nhcDpNLPqTh;ZnGEB0Em'EMQ.R4b 3h&^0p$)#8bpF/llgJ&RgXY)fC[IsQr2]L+m`0"PWE0g_gjDuJpjZ'JJ-ar0op2cX9%!C1[@U_-e1J6m E)"n:9o=O<5%IHrQNj:u\G#k57dH+4P95,bjhLeLRfD9=WO5f\eI<-TeV4D!pXQi#$K]Q_;NHSXqU&=N ;"(\B)tYgu-PK'(*5)DaXoI/iCY718@>g`NPBIj>!PY\)^"H!2B+IUPlgJoNW5hPp2c^]SS#$!22q7VP 0C6At%dm+Sb[G1N9%V&<,kl2_[8*c,W>i@Ut@k(N'?1?V.Sf7X:h.KZkqNeRr2?29ODbZ*RXh,EmGYbIAB_sJWMEecUrumC%g--(3.766$ ruoYe[='/EJ\$Wp5G[roD'+QgqG]2'd>+F_;hRa3tPm5C&5r]71]BY-L+ Q5I!$(O^pCVt"-KIBg@>BPu5hh;>1,^UAK!FI$&?;SG6fNEZA02Sc3[?eZ]mk5X->fsLaRD3.KPs$JXk kPR-qr'M?OO#Vn,k:Y.lTZJcJ\uCrS?E40^Pt52k6\3!DT+A3Q:KBGK:af#V,]%[@\mJJPOQf%<o^XE`$JY?Io2/%feSPPuacs!,.Gn`Lq=n-6=Se8KLj1!lb4)jCGrepCC$Rbiu4t(gJs8O#; 56q@HImjkI?0#XKH@Y=?PtI^MkJ=!]an]SOD>&&EIt!QO5=YgIJLLRT@\!K@S::WL+!sN:D5CXagLYUV l-D$[MpM=K+A@@6O6-NjQic4AQX8QYT_R(o4rrEB1.!YJ+!15WFOETs$#2,SSCcWE$n:0Kcm3KP+4C5;4;>75+n\i>M[S$53GfI`Yqh gY#SVr7j@7&)[csV?:)Vs6I]12\EFrEt=9+4:HCIE;g$A1hW(T!1`;Gi;ZGNIaQ<9nQH!LT=;tD\1"lb #Q/raB1`a?:B=QN$TgUAB9edantK,Z\isAQs6KH31=$b& rW2:/8ZO-8T:I'q>dpF2FF3Y0Gd(nY?cYhO)b Yu>^Qh2EGFP;(pG'E0etNK_#Qhj!:'pVD=#3TZ(7Y.I4G$dP@kW!E?X0lN'5%\A+U%gX1_FulYk(ZfOTJ830*1uZ$%N82s6TQo"L.(,fJg[q q9MbW3'[39Xr0DWh0B$^q$PI'cWQq6T=_KeiVAH(4D(]N:jkUq.;LSfIL\Rl-L_@<`Z\/a')Xsc6h(+8 4$PD@E;k!%ofV8!ghMiHIiUDmLu^drs2;Bc$%Qt;[:McbXOt6%#+pB_70*78)'-iP.I__0$s.WO.ut3' +%@HAPu@[Q*sVL#q`IOW=9s/eUjsuA&NY7;a1M=XYF*?0]<\&LcMpA(=`jEoq`-`&5lIug#!\`t,p9Td *'T4[5RF$8.Bn=b-bH>85EMK@>Td;L:X\/-!r1+u+5;qiJ>lZ!30Rs>C >QFQUK.cX4VXpZ40hs#cI7;B"@N5&Y<$8GQfoBE+n)2obX-L;XCaJ1Ta\$=S:Mink1q]Pch4dJm]C s$?Y!CP?dGq*pq&O/D=8P.q-k&,ZYP*hNaV"7iet1E.a7H7-Q#C[chsN,G#f(UsTAW_:-nn:)MWUMFr3 &j,o:i?[l:6VZl2rA7nD0-^u%q&DEp*:Y$<=;Cj=k?1'AO.e2=R$W>7I"5!Js,m5Oq%!VL.fL7*q:E^6 M;)MG:`p+06S8L?TX\IMeeS0kTJ8n3-TF>D^o[Rj_,n8W!;I(r^LkO%q8)ZJ$F'+d2^A4`k7]K[nDh.g d%]IQ25<\&s84.PrIm8W@IcGX1e][PSM;=Js8=[fr21h#"1O%?6ccJ-s0D-D(c0`$YT8T#9*5,L<\/*Q '8"6.o91.$Hli&\RA`=G5P[<%J@HHc+/_A-KYTT&06dl+5l?*6-(kf#"9j:(_-[6Z"?o%cDm.fm+)(8( .1l9(_2a02o+YU4(Wm9b55')mjqu=?Crndsm aoU5t^Wk*:Yq=Cn3AH'a!'\_2LD8nqroXF`PKm+CJ"@ADr%dM$Bla1fRNSEba-J,g?5;OVa?MY6.>Lm[ eUQ/hrms1?`d\=#ZEo!Z4+RPeqFbn6&9rq<$+TR&1*Qi*s+d3Jq3U$c;([m""+2(Q`lG',dXM8[GKKl9 'HJ>G$CtQ=!%]OG.f:B[5KB]'-c0rkq9\RZT_4p]21YWi7N?C38(L?&=NgPuVnb."pRG=eM#V!sr(B)# 8bt[3ItIG+/-/>jq%p+1*ul,f^E>iCk5T.#(LRSX#b^*?9FZ5pF;#Guo_`@/6*OjQ?j\I]M]#+iH=Cgm j;FB)lgT#SnCfZ&'^3[q^(_u&NVWYQO1_/,6WO,\-fk3Ls*'S)+TB9BP5g(4+46bE-g:BJ1E&>ekQ9@f anes9DUgTChk%O&1"AeWT=21@XM%'^5E,W'L]T=2!QH>RTCbpH!ZW5!F8VMNoq*)c5G_ouJ^\N7lggY_ RK>LF3[fRA7/U7#>6)VAi;p"fO]C+0fF[hm8V+d#/,[VKUhL1;q-sSe!b)Q2p,gUA6D4+n1VOhW?$LaI s/2I166Q0\%deS)r51M0CQ-@G3<'T]SFA^+)0HFr8?EtlfG4UrQ%$i,C*ofn:0Rb.fRbfH^?/+NE>_$Qj*7qRPNb[rWWFc/oj(H`f/ ^T?Gp3]]Ke,0^)2OT*!]qG.Z6nqS1tgi9KeoJ:I@L*8;e;5H'[98R<49LbeqEI@bATiDkkOrT?'IS:?ZgbRD?Pd$pACpu(7c _#Kku=5lI5o.JIYGP?A_rMR"NiW:"t/tr7^9jmHp`W(47i:rWq+'7FCTg4M4^DY`,i6o[oNBqEMp53!G-<_\*O82()1)ne423r')Cg 5B?o-r6^5_K.6jcPA2;7+eZU@KXr%@dPb0"?J46?et`[nNVl055?LUs%*h& 0"^t0MTNWms).`BrkF$B+'HKD[s4d5s,[)MGC^S/V&_)!A8ffko+:pKm4:X+i;\?-)8!Cj7p#WaA+/J. :`rPI1BY5;^Zr(2D;8RV#=d:&CDf:K7X5RHH-@rJ;Ra%eb\rs,,LqS+u[9^)C."kJ8?r)`[. &,^plir@t9F6j_i;h01i5]R1`0dFnl_#NW&1Dh7QAb$f+T,A7@ne=VFq%'4FbME1JONt1mWLgAbP5bWJAI#8g o.R1a^jl-[B6]a;:W?-q'R]9c=g@S6InmY?ci)763tC2`'aX8S+tj#9Igd;Mbh.br@YaH&f*FtJVkaUU .65/m5EF(ZF.)FREtL\ogTQj)YZhhF@eZh%m\l4fW#i'4FKC]on#*#OfD,C8YJXTd]cSr$]+ F_ZTT0G"4j'L"4f7/hW3Y5X97&@<4+RK&ldk6M!-N!Vg\#ILCVJg'V/a2MtZ087tr?f8!AIWl_1Df219 *"/`0d!L_!!LZOB#Fq.W-i!_b74\8Vg7-",(nSbo?rkeK4sKo+o)E9k>D<+r%P=:XKNGt3&&po/lFPRE'4mucQ.`rc9ts.B^@8j@_OFJ14o*Vq.srU)NB^S*CW :D&OM,5_sRHdf3Ji@"Oq`IE,qo`(Yss##e:`qBJJTVDH;$iP-Am/JC=s#C5?pbsS=+0(%XN<>UKRAV6q 9)ejJW;dV-+":-0R*FB)<:(S-r';4N!SnLrr&S?)\*$\/r%RK$&2?"'0[LmQ'rfNb!H,Q3+kZ7],GJ!n)Zepj[o 0Cg2oZMl/&;ZfQ&VSGe$kPS+NIb:l608DrehUJgkYR9H4ub=6TRGdf5A5r/Vn,SEkbkOJ95H#coAC+AMAZW^H7!iEadJqbnYI'Jm 8^:ZeS]Bjl);G9Y;C(q]K'8?)9)?jBeULHe_aeYLjBoa_YO%Odq)biia!(EcSDQWc+-RcV]TIV\K_Z-0 !ABE$4(Bf^aBs86Q\37e"02M0k?\'SqnE-n&/S$1ReG7I[7t80B'QJs2auMJ;Z`/r\)[5^m_=qA>T=T"=[4I&*?*S L&R9WoA:,Zf*(kincLED&GE:%o+:VuqI?`:XSHAhhMEO?s3iB^^gm@r>lp%nDT=a?^u?.4;]oI"fW\ju 7L5jk-M\UC1LhEorrhkAHsb!Fi;I$2L"uIt=G4HuriH-)M'_)^3IL1r$a*G)SG%^13T58%:h"\ptq(4F)q` #X/ZMHW2Genc'pX=]s$akImW7CQs2f$SB9BX3V#E%; ?fli958.r-(?>>U9ND%0Yu"a+`Oq$"T8i.4Y6($0VpbQR%[.uhW8'`B+Ed2_F9?VQG1@+l"+og8*HWq#O?l2M+uruq;1rgscO E!_6uX"@.-r`p9:8*9hmr6+pI";K0NrGR]7jKecgQ2iJigXi$Z3@oXLXkL%3*BQ^Z%rDJJ]9N>Pr83=s HD;iohi=*c1FY*-kRlOqd5TfKDH,=5P+nrWg#Vg UYnB0j@e#!:Nsh>-\tu4?NIf8RG7`^Hk"@c@id7jJE5g'Z]m;)dmF(Cr\KW3J!'Okf>#N@@WVO`WrK$n s/Q(?7IeR>j;5c6n%-kqAGdtC^T-k^7/hfX(N53-hbCreT2>tUlMSFD!8.>:)Ok(Sr\QYu*Sc*"3kf'i 2Ve8ge@m=.,(TM#kC6,%5;pB/s1nXX"FfMS>7;:N%%%rhnC7JkpOt=*BV-^"&M4#rK`CE:m/Ik9s1T*A -S,UCBUnT,kf%_L`rGI#K)^d46M*1Fs"!kZd6R[AbU7'EK(HlH0Q38Qrr9p5qKpC6)'T$P7/jq#9]QF@^F?./FR&HCW(q/8cf !kh7C0.2AB^+_K@\T7XuJp>\Q!rb:i`glOb2uapVs6of*Ef`IGp$.CE4`,'=q4BIP_>3$s,_+Z%_A&B8 pm:N#)RkI-O+dMMps8k.l9DrWS#FV^?4coC'*":dr%%&>\BfH5-N>5pQiGD,^P[:HYtZPETCm[drgIn4 5bn=hCmVttkNnO"NIE]#35"mB0*]S^UHT[B8i;YTurEi7t T;'!.,t7jmr3q"N?_kJK.H_ANjqRc,S,9rP.K+`sQ/J#%+3sm8?u(RuqY(HKJ"j7K5O1Ou4q4hF"jRX> -2oRoM\hWXPe8OakB#GQIDck!,1h"g0]]hmNL%#FI7Vs(CWI]MY7Vb)H?rbe40JrXpn,:B$b, rA."(-YYkHpb2TUN`F"LJFJ'BM=cd+7ALJN%#J4m[gs)TLd),#Bhs!u+hFcl^Mi(jTo:^]5q58jJm r:rn.s2e+:c\Z:T"oR6s3l(ULe5d^igl)!#`;a?E7L\;6"7P;kYkY83AD[g3'EFbTlQ&3lb'sd4pq-F< (GqNZaS\iurtH\fj/b$;rg.NGT\I>5c2Z[:n>f.V.A`$prrc\S!ac!.V^:8jUlboE&(a>4r,Vgq-Gl@m J(aj]io6:tDP(._IqD+UfKA91V(;>%q/8jIs'JV!+)Y3.q*t3Fq`jQL-5HGS@tXDGr^0!DIt.b:s'Jme Un(6WMqn-hNFt@j(H;8S9fp)SO)=aRcg3@RIi5Eg0DPQX/sn[S_XBV)JGGPgZ)(jm/YrFf) >F>!= U/Vq3dJluj"IAkUP5eca?,0\'s*_\4XoH'.F0bQS!:M6'#Nl?_^M"B!bS!^&9pu.3s/.;ZSPn_pAc>J/ oY4l7,O9j4s-)"0k8a.&Xf;?^rElEe8^[R+%_mh^n>C7Prf,"1!)`d;rVscos0E(3-h.J0'H_Z&90goX *RbY*AcqkFr(jJFPl)WEc`%KXr(eI7&+?"X$SQbMjI%`B@8%YBlJKX]-u=K6i.V)jribbib4o''T9B4i r4`dA%nj^F=oRlhf?6W$nGbG`f;/?E\8:4bBF4_I@fA0;SrA*#)#pM!r(gGsWReh*S==KpU0$`3V6SMd er-V5s0sKB^KCD0\G`&+gugIl^&KDMs"bi&JnbOr$%G/'cZB*')Wa0`e0k0*\HLspnMAJo"M^?(j2K7r b^ZB'&Bt/ubg\*3s(fq70Rplf+@9_tn69C3SsFmO[h0h(^ZPb!q]c('9Z4]Q0Ano(i;^e:@K+/;JEHn+ #QFng+o8E?%U(NP$3,SVo+Y:`90!+6=nI*u![dj&VPL`MN$/-N,lVG@rm10Crm)00P5.>#PQJnIU9af- :9"8VRpQJu"XqoH\c)Oe0Z2@F(H*c=s2][JWVHYj^O:]8XSh2V?f:tR^^e)i*Z\GnP[?ZYc2%t8s0DY, i;^'+i]4fd(B?[IME>1Z9-QT=NK5273,t/>3"Zi`H-[u=:Ybp+$hAA)l$X+>qTNkM%pqM[FIi7R+D;\(_)(^@=BZ897'Ti)CocG#4hD"\R@/aL=!o^uohcq;Ci",AH V;Zc0VG=)3+mK#Er[66Mi=^)YplA,JWTQJSr`/ej02d*g7,7ctF +T=SQnt/MRh\LKW/d7[ko#(B4h#`]:T2kerTVdEXrNF0>3RRk6om]j%+.N2g:[ssYS2gOa95FXE 19jTT!96:;!=/^<./tZ'B@$&]aPr.V2e0%PM\$M8E!s6IK*2'*!.^KUZ6o`*7;rD.2)s-#'mS%nQZ(Er*o)?4-B^_DmT5M(]6EW$lGSC\'M8j1cGBeo#E`hFmEBWp^K^=4?h[fCOmln5Oe\saT"orhQ^G$j)ZIH!WTnWrm);B (gDa+q%(L[!n0O;ShkD)7S_@Q/,Vo#J&_L1H:7af[/P+K!t++u^7$p:Id?[>;>O#VlW%jC^jhC:+$ff. OWW`c6+?i5HWJXGc.2LeQhokX3B?\\nNErD?Ks5a#`)?6][Yf-Pl,X5(OoaP[8 IhT^HcfUoq>6"Zl9*WqQRsRe?IY$M9Ufe%^.3SJZ\GD8ts/":r-*$dUXFEnlotP8Ac_T;;n@tRpT6hp5J^b"cIu*]gT*;LppB8V:^S+Mss6XNq]KjT2b@^GSiP41JPnZdM5J-iC6.A+s8QVbgk8]&cb5[b) B=IkAmJfbjW$qPXnc!GmWUj$ahfAX!jE$Hl`;./`1i(ZXnc,?fC'=K'_>f0o\fCCFdJd3ul@4#Vp^>D. ')<'MGWNL]s-^ChL)2!?0S\I'DNj[e9)g!j^?C&h5lDe7s4+[4s#h1pVptamOSNO9q"8A#Ird.?_=7Y8 ao!6J"[I"%rZgs*o6f[ks,m7%SmXrkQKMMrr.enIIrYIck\]<+s(&'CP4P33s"B<%O(A8(Tmu2bs*mu3 s3Kk8eDNP&IdDb78c[eA(EVJ"*F#f=:m`JGBV3U81*Y%sf_go$1TIsEs s5D%XSR[GIa^_1IeM.i\i7?OP2?%Y'9FmOUS(<(,DU38TX:#!D_pS')q-g:$s2Y]\\W&WDIqZ@l40.F, X7\.:#ZU6l+K*!VB)"c>s,4upp%bLcq>X\ZYY"#-V5aH*[5%XkoD.hmdXRS\j^\A4^[Keo>4oqe1&ama #"\dg7WqJT5Df;3li>=XA#0,5T,<\Zdf1HtIV0'2+h(>G5G8"NjSr3Ds/1bRchL:Imlb1[C`<>#@OF0K Od\KGs8OES\.VVdrVIT**;BBCf)*3sr0seTs+rMnU='*P)(.kP;>k!EL%p-e3WFotKmWe8jaT2(s+3JL ilVrD pTWh5C7>1sarh6d(r0YlP=?=sBT9YurYPN/h#=d@MZ,j/eph8'i:BkHDq=ptoDGTe4XL%k+jRigrI9u& rB'1lDH,n.q#%bfMDt[F+obofr]bB8s0G]&Nr>U5!i8Q9p^(nd.KNT?J):8+O0\cVbg$0EXP.[Zs5O4N ^F&ndl2NFioD]!oGP-I*s&7>CjAOocDeZsCXoJ%?EpF2_^CgHp[pZ6!^L6Y_TJ9B>s6[J_s6t]1r6PX6 jnpd7IolN^ao:H;s&SE7q>A\fHpLp#s3"%7J'S'kci;.Dr;W9ks'*4$O=T?87J"#pm!WPq)h^P-)j#\(QT;)<8Ee4O,<:Kq)4U<^ZqnHdf@/U>G IjnJ&k+rt4G/\-iQ7s)diS3<+J"iBQXmr#kSq7K&ucs-ls4s%84IrsWI&_qk$#o,":GZG2e!k7diB %eK^qXFJ[Wf@U."T)V]]rbl#rrrhgUJGF-Kria-;m"l<;pPs7as+/7@3,m3YY2k)(#lXe!HN3a32GZMG e,%C-fFJjTZTtFBs7>2>$Zn3*on@J_cb.>K=N%p=mLe*Aruh/fk,\B/!\[0FotLeV!NGnp.n]iB*9K8k q>]cFs.;^X1Wm[DlYc=cGep#=`P8MS-iKm#SU0H:OlsJes*oObR6LoRLPpZXr):0+HXMMMNR3e"^@I#A JaBS3@IX2e-jAh/b5XL%e(t%%om^-EroWpFIn8W"XdPAreG?@OdJSdk5LoA?jqRc$VEi6!a85e-o@3ek l[Lqp)<+e:rhK0Oa\W@egA`b(qN&_t0queB3r]0 QrEK]lMjXNkE4\0?iR1rT9?;Ubp`C+XT(ii5D_Vd4GS/es*n95[KQVmps72,em8370A>LhgmiP=k6%P& aSF_PN^;b'bjY6i4CJ.1XRq">oC""orE"58Cjqr8'WC6qZMmMbruS`G+*,5JkkQB//PP2S*t2bt]TW;o o)Dj45cX1#10\o#;.]cC8]8BNs-6k*r-sRE4S+&*s!%0OMQ>;+s7uSr$pJ$@r[DH1')ltNmpZJ#LV`e9 )TD]bN;o6>j(Z[9Oo#(c3ra:bkj&1Iru8Q?NoBNBR/As9jJRBB%)5':DnQ)XT)Y!7I&fbC2`/eZqd\eL kH>JQHi#p&R_NkA-OE1cE2;iM^809Y/lh!tQam#R/V;jppOL>JgAaS/J#1t%Ts1@s=X#<'GB7M\%^G&0J n7PMeS,Rmj>6!ibrBta@F!nMB=5ShRs8La`3Tk;mB*MohK^3nEs/"lUlc&/gTC^V+^K`FU&`eGZM?8j%qd4+:=+1,KS/_Ko eFR%_q4D)%.,[55,OYTOrBK1b`YJVE56(0.j4gpqq/+S&gW(")3rb"sJA`.pkcPMIA"`f3r9&_C5Ir[Z ;G=`%[K&_p:R!R5c9.^noDcEXQj%gK#OjrF&l<`LDcQh`KrXuVcMsm5s+JaKQ::g@V>kVAVZ4E0Iu,oZ YDM0r8'*u`gA[_Ss-p7!lM6KRSdB]Aoh$or/YE3ur.jr@cMue?a#j:s8-3.(AoE: aSb4tlMWBDrg/oQp\a=\JcABaF/mOc/QDTHQW>#ss5fi%+j[p[&]pZ8s0LW:!>beEoYr]$7"kWi_a4@1#9tHXn?#h[2apral!l'E1cZ&9/'X=HF3qF)R,BmYPZWIt%mXK#7kK#0V\tBqbPWotRc- HS/WR;=+=ccj&0taT%M$^W?G.-(q?js2sq?2O496F;@c3o7(f[ijq@C``%CP!Z&`Qs6"&'+<;m%q2]Xs MlZk?F3jlDS7!L6r!`IPVQN&qqe#2cGJs=L?d@]Xn"JpNC&R39)GGg68";5Pj/f9[G7d2m+rA#W'_90? 5@sc)3^F c=8!m5Ml)5ja0\]s*Zem#d5FCNR[PQP3B/r=oXj3rA03t?E*f#T,dmnWr&F[q(F6bs/aQH=n-">>;#oL jA.Z5+%(Pl3Wda3s&IAEE^'H6oCst_U?$N2Rf@jK"r#s&&a)$2=%JEXr?j&jJ'NuM:K@FopOC&0Cl0kB J'.\]<@.Zd`nk$uqFBuR_rC]]B5HH2!WQO"it4h0rjrjC'$'#cSPT:N,eh"Ys/1lOlTZJc_0#H1K&`=+ 1*t)$/'@^4hYbVIoj>7%r6+:'7TL6%?c@M^&Y&n'cHlIh([1eS*-OVtM$P4%L\(0,:?W'5oY4/[5Bm&j EDt?]rrC11Ts$'J88b"T3"Gb"3rtG4Z_=>2Pq)^b2:FG_:g@=h4DkDLII.Bejks+.oGPr?M_mKE< D3.KP^U?Edc2Y0\Z>'8-gETBV3uF(o/H5eeZYaAPLogMSg/:,o\TiXs(bl%s5uK7kP)]eiKmd;=#^.JD>or?hQ$Q,X^>Gq gC7H%r^h)"L+mYWX2*Z_J+XaXa[ri-\f"5E#Pn4';=gseWMdJ2MdOuX]!tbX\$YpK)6-VRjK*(jp1>DA rk#ZR)\DtGB$"rc,PB5X_5_nfX#`_p]@rZ1oq/?bWncj@>(iWp5&gI*mYKi2pb02l)\Dpcm7?ot>dGe^ hlZQil/H!N[no0_1E51C^:sP1ZQ0;=iJbKf)\E!UZXhri=6YMoeUN>)FQ+X>XeT+.=;,K

3TnSN""W p3t_GkW]NEB04IDYC(LZ@tr\a@-VCj@Noo9X.$f"IPgsq+.W?A"TApS/q,\llal]f2J5OnpN@^/[X"oc ru8*?J)9M,D8m:aJc$#f%0)[FVU/U%$-F(VQMf?^Y]`37Rt"r6>;]B4)ifqMB^kN+`p2BQ[IZ>PnQcC7m`rgDL?C[An/s4.gWl3@0TB71GA?icqRip,rh5 LB[k\jaVW]0$p[!7U!I=k4tI,h1bm.g],XG1n)F'nlq+S;<&D6+Lh\c0S=AXhuqbg?2F[Rc]to;?GS[N>F9/`+qP^SRL524Wo: s'<*HK7O!UZo,/pci:CeCLI`[s3[^GKk^J:2TVck^U?G:!RZD(BkqB#s0W;T85.b+$AuUJ/^[p P$d+Ss(^#[9q+%Xg9bSCVG3O grestore [ 1.00000 0.00000 0.00000 1.00000 0.00000 0.00000 ] defaultmatrix matrix concatmatrix setmatrix Q end end restore showpage %%Trailer %%EOF src/test/resources/ps/PSTestPreviewThumbnail.ps0000644000175000017500000273721210344614150021250 0ustar user01user01%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 20 118 575 673 %%Creator: FreeHEP Graphics2D Driver %%Producer: org.freehep.graphicsio.ps.PSGraphics2D %%For: %%Title: %%LanguageLevel: 3 %%EndComments %%BeginPreview 600 600 8 3000 %3534312F2D2D2D2D2E2F3031302F2E2D2E2E2F2F3030313130302F2F2E2D2C2C29292828292828282625252424232222201E1D1C1C1A19191A1A1B1B1B1B1C1C1F1E1C1B1B1C1E201F202224252625252727292A2C2E2E2F31323335363838393C38373D474E4F4D525254555758595A5B5A5958595B5E5F5F5E5C5A59595959 %5556585A5C5E6162666667676665636361605E5B585553525251504F4F4F50514F4F4D4B4948464544444444444444444241414141414141414141414141414241403F3D3A3732313534312F2D2D2D2D2E2F3031302F2E2D2E2E2F2F3030313130302F2F2E2D2C2C29292828292828282625252424232222201E1D1C1C1A1919 %1A1A1B1B1B1B1C1C1F1E1C1B1B1C1E201F202224252625252727292A2C2E2E2F31323335363838393C38373D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3534322F2E2D2D2D2E2F3031302F2E2D2D2E2E2F2F3030302F2F2F2F2E2E2E2E2B2A2A2929292928272725242422212222211F1F1D1C1B1A1D1D1E1E1E1E1E1E1F1E1C1D1C1F1F22202123262728282728292B2C2F313233353637383A3B3C3D3E3A393E474C4E4C5050525455575859595958585A5C5E60605E5C5A59585858 %5657595B5C5F6162666667676766636361605E5B585654525251504E4E4E4F504F4E4D4B494846464444444444444444424141414141414141414141414141424241403E3B3834323534322F2E2D2D2D2E2F3031302F2E2D2D2E2E2F2F3030302F2F2F2F2E2E2E2E2B2A2A2929292928272725242422212222211F1F1D1C1B1A %1D1D1E1E1E1E1E1E1F1E1C1D1C1F1F22202123262728282728292B2C2F313233353637383A3B3C3D3E3A393E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %363432302E2D2D2D2E2F3031302F2E2D2D2D2D2E2E2F2F302F2F2F2F303030302E2C2D2C2B2A2A292929282625242323232421211F1E1C1B1F1E1E1F1F1F1F1F1D1C1D1E1E212224222427292B2C2C2C2D2E30313537393A3C3C3D3E3F404141423E3C40474A4C4A4E4E505153555656565757585A5D5F60605F5C5A58575757 %58595B5D5E606263666767686766636361605E5C5956545351504F4D4D4D4E4E4E4D4C4B49484646444444444444444442414141414141414141414141414142434342403D3A3734363432302E2D2D2D2E2F3031302F2E2D2D2D2D2E2E2F2F302F2F2F2F303030302E2C2D2C2B2A2A292929282625242323232421211F1E1C1B %1F1E1E1F1F1F1F1F1D1C1D1E1E212224222427292B2C2C2C2D2E30313537393A3C3C3D3E3F404141423E3C40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %363533302E2E2E2E2E2F3031302F2E2D2D2D2D2E2E2F2F2F2E2F2F30313232323130302F2E2D2C2C2D2C2B2A2928272727262523211F1D1D1C1D1D1C1D1D1D1D1C1C1E2022242727292B2D3032333433343437383C3E4040444444444545454546434041454949484C4D4D4F51525454545556585B5D5F60605F5C5A57565656 %5A5B5C5E5F616364666667676766636361605E5C5A57565551504E4D4C4C4C4D4C4C4B4A49474746444444444444444443424242424242424242424242424242444443423F3C3A38363533302E2E2E2E2E2F3031302F2E2D2D2D2D2E2E2F2F2F2E2F2F30313232323130302F2E2D2C2C2D2C2B2A2928272727262523211F1D1D %1C1D1D1C1D1D1D1D1C1C1E2022242727292B2D3032333433343437383C3E4040444444444545454546434041000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %373533312E2E2E2E2E2F3031302F2E2D2D2D2E2E2F2F30303030303132333334323232313030302F3231313130302F2F2C2B2A282522211F1D1D1D1D1D1D1D1E1F202326292C2D2F3435373A3B3D3C3D3D3D3F41444647484A4A4A4A4949494847454344464848474A4B4C4D4E515253535456585B5D5E5F5F5D5B5957565656 %5C5C5D5F5F616363656566666665626260605E5C5A58575652514F4D4C4B4C4C4B4B4A494847474644444444444444444342424242424242424242424242424244444443413E3B3A373533312E2E2E2E2E2F3031302F2E2D2D2D2E2E2F2F30303030303132333334323232313030302F3231313130302F2F2C2B2A282522211F %1D1D1D1D1D1D1D1E1F202326292C2D2F3435373A3B3D3C3D3D3D3F41444647484A4A4A4A4949494847454344000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %373634312F2E2F2F2E2F3031302F2E2D2E2F2F2F303131313232323233333333333333333434343437373837393A3A3A353432302D2B2928232323232323232327292D3236393B3C4142444647474746464647494A4C4D4D4F4F4E4D4C4B4B4A4A48474647474848494A4B4D4D4F5052535456595B5C5C5D5C5B5A5857575758 %5C5D5E5F5F6062626364646564636060605F5E5D5B5958575452504E4C4C4C4C4A4A49494847474744444444444444444443434343434343434343434343434344444443413F3B3B373634312F2E2F2F2E2F3031302F2E2D2E2F2F2F303131313232323233333333333333333434343437373837393A3A3A353432302D2B2928 %232323232323232327292D3236393B3C4142444647474746464647494A4C4D4D4F4F4E4D4C4B4B4A4A484746000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %383634322F2E2F2F2E2F3031302F2E2D3030303131323233343434343333333233333435363738383C3C3E404243454541403E3A373533322F2F2F2F2F2F2F2F33353B4045494B4B4E4F505151504F4E4D4E4E4F4F5050505251504F4D4C4B4A4A49484747474849494A4B4D4E505152535557595B5B5A5A5A5958575758595A %5C5D5D5E5E5F61616162626362615E5E605F5E5D5B5A59585554524F4D4C4C4C494948484847474744444444444444444443434343434343434343434343434343434342413F3D3A383634322F2E2F2F2E2F3031302F2E2D3030303131323233343434343333333233333435363738383C3C3E404243454541403E3A37353332 %2F2F2F2F2F2F2F2F33353B4045494B4B4E4F505151504F4E4D4E4E4F4F5050505251504F4D4C4B4A4A494847000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %383634322F2F2F302E2F3031302F2E2E313131323233333436363534333332323233343637393A3B3F40424447494B4C49484543403D3B3939393939393939393B3F444A50525556555657575655545352525252525252525252514E4E4C4B4A4A4A49484748494A494A4B4D4E5051525455585A5B5A59585857575757585A5B %5C5C5D5E5E5E5F606061616161605E5D605F5E5D5C5A5A59575553504E4D4D4D484848484847474744444444444444444443444344434443444344434443444442424242413F3D3B383634322F2F2F302E2F3031302F2E2E313131323233333436363534333332323233343637393A3B3F40424447494B4C49484543403D3B39 %39393939393939393B3F444A50525556555657575655545352525252525252525252514E4E4C4B4A4A4A4948000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3A3937363231302F30303030303030302F303132333435343534343434333332363638393A3D3E3F4547494C4F525556565655545453535352514F4D4D4E505156585B5E5F62636363636261605F5D5D5F5E5C5B5A5A5B5B5A595754514E4C4B4C4C4B4A4948474648494A4B4D4E4F4F52525354555657575354565758585857 %5A5A5A5B5B5B5B5B5E5E5E5D5D5D5D5D5E5D5D5B5A59585757565553514E4C4C4B49474544424343444445464645454543434343434343434646454544444343444342413F3E3D3C3A3937363231302F30303030303030302F303132333435343534343434333332363638393A3D3E3F4547494C4F5255565656555454535353 %52514F4D4D4E505156585B5E5F62636363636261605F5D5D5F5E5C5B5A5A5B5B5A595754514E4C4B4C4C4B4A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3A393936343231303031313131313131303031323333333333333433333333333637383A3C3E40404647494D4F5355565A5A59595958585859585755555657585D5F616467686969676766656463626261605E5C5B5B5C5C5A595754514E4D4B4C4C4B4A4948474748494A4B4C4D4E4F50515253545555565253545657565655 %585859595A5B5B5C5C5C5C5C5B5B5B5A5C5C5B5A5958585857565452504D4B4B4A48464443424343434445464645444343434343434343434645454444434343434342413F3E3D3D3A393936343231303031313131313131303031323333333333333433333333333637383A3C3E40404647494D4F5355565A5A595959585858 %59585755555657585D5F616467686969676766656463626261605E5C5B5B5C5C5A595754514E4D4B4C4C4B4A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3D3B3B383634333232323232323231323131313232323232313132333333333337383A3C3E40424247484A4D505456575E5E5F5F5F5F5F5F636160616061626366686A6D6F7071716D6C6C6B6A6968676463615F5E5E5E5E5A59575552504E4D4D4D4C4B4A4948484848494A4B4C4D4D4E4F4F50515253545152535455545453 %55555658595A5B5C5A5A5959585857575959585858585858555553504E4D4B4A4947454342424343434445464645444343434343434343434545454444434342434241413F3F3E3D3D3B3B383634333232323232323231323131313232323232313132333333333337383A3C3E40424247484A4D505456575E5E5F5F5F5F5F5F %636160616061626366686A6D6F7071716D6C6C6B6A6968676463615F5E5E5E5E5A59575552504E4D4D4D4C4B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3E3E3B3A3736353434343434343434333132323131313030303031313232313238393A3D3F42444548494B4E5155575860606162626364646A6969696A6A6B6B6D6E71737576767670706F6E6D6C6B6B68666462616060605A5A585653514F4E4E4E4D4C4B4A49494949494A4B4B4C4C4D4D4E4F505152525051525354535251 %52535456585A5B5C585857565555545455565656565657575453514F4D4B4A49484644434242434342434445454443424343434343434343454444444342424242424140403F3E3E3E3E3B3A3736353434343434343434333132323131313030303031313232313238393A3D3F42444548494B4E515557586060616262636464 %6A6969696A6A6B6B6D6E71737576767670706F6E6D6C6B6B68666462616060605A5A585653514F4E4E4E4D4C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %403F3D3A39363635343434343433333332323231302F2F2E2F2E2F303131313137383A3D40434546494A4C4F525658595F5F6062636465666C6D6D6E6F7070707072747677787878727171706F6D6D6C6B696765636162625B5A5857555351504F4F4E4D4C4B4A4A4A4A4A4B4B4C4C4C4D4D4E4F505152525152535454535251 %5252545557595A5B585857555453525253535453535454555251504E4C4A4847454543424242434442434445454443424343434343434343444444434242424141414140403F3F3F403F3D3A39363635343434343433333332323231302F2F2E2F2E2F303131313137383A3D40434546494A4C4F525658595F5F606263646566 %6C6D6D6E6F7070707072747677787878727171706F6D6D6C6B696765636162625B5A5857555351504F4F4E4D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %403F3E3C393735353334343433333434333332312F2D2D2C2D2D2D2F3031323136373A3D404345464A4B4D505357595A5D5E5F61636567686D6E707172727272727475777979797874737372706F6F6E6D6B6966646362625B5A59575654535250504F4E4D4C4B4B4C4C4C4C4C4C4C4C4E4F4F50515253545555565656555352 %5354555657595A5A5959585655535250525152525252515151504E4C4A48464544434241414243444142434444434241434343434343434344434342424141414040404040404040403F3E3C393735353334343433333434333332312F2D2D2C2D2D2D2F3031323136373A3D404345464A4B4D505357595A5D5E5F6163656768 %6D6E707172727272727475777979797874737372706F6F6E6D6B6966646362625B5A59575654535250504F4E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %403F3D3B383735353333333233333333343433312F2C2C2B2B2C2C2E2F3031313536393C3F4345464B4C4E5153585A5B5D5E60636568696A6E6F717475757574757678797A7A7A7A77777675747372726E6C6A67646362625B5B5958575554535151504F4E4D4C4C4E4E4E4E4E4D4D4D50515253545555565858595958575554 %55565657585859595B5B59585654525252525251504F4E4E504F4D4B4946444343424241414243444142434444434241434343434343434343434342424141404040404040404040403F3D3B383735353333333233333333343433312F2C2C2B2B2C2C2E2F3031313536393C3F4345464B4C4E5153585A5B5D5E60636568696A %6E6F717475757574757678797A7A7A7A77777675747372726E6C6A67646362625B5B5958575554535151504F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %403F3D3B393735333333323233333333343433312D2C2B2A2B2B2C2D2F3031313435383B3F4245464B4C4F5254585A5C5E606264676A6C6D6F7073767777767677787A7B7C7C7B7B7A7A7978777675746E6D6A67646362625B5B5A58575655535151504F4E4D4C4C4F4F4F4F4F4E4E4E52525354555657575A5A5B5B5A585756 %57575758585859595D5C5B5957555453535251504F4D4D4C4F4E4C494746454443424141414243444142434343434241434343434343434343434242414140403F3F404040404141403F3D3B393735333333323233333333343433312D2C2B2A2B2B2C2D2F3031313435383B3F4245464B4C4F5254585A5C5E606264676A6C6D %6F7073767777767677787A7B7C7C7B7B7A7A7978777675746E6D6A67646362625B5B5A58575655535151504F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3D3D3C3A393837353232313131333435343332302E2D2C2B2C2C2C2B2D2F313237383A3D40424445484B505353575B5F5D5E63676A6C6E6E6F6F71727475777776777777787879797A7A79787776757571706E6A676462605F5E5B59575656565251515151525353555453525150514F4F515356585959595B5B5B5B5B5C5C5C %595A5C5D5D5D5C5B5E5D5C5A59575655504F4D4C4B4C4E4F4E4D4C4948464544424242424242424243434343434343434141424343444545454544434342414141414141424242423D3D3C3A393837353232313131333435343332302E2D2C2B2C2C2C2B2D2F313237383A3D40424445484B505353575B5F5D5E63676A6C6E6E %6F6F71727475777776777777787879797A7A79787776757571706E6A676462605F5E5B595756565652515151000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3E3D3C3A373734353231313031323435343432302F2D2D2C2C2C2C2C2C2F313237383A3C3F424445474B4F5253565B5E5D5F62666A6C6E6E6F6F7172747577777777787879797A7A7B7B7A797877767672716E6B686563615F5D5B5856555455515251525353535355555353535251515052545759595A5A5A5A5A5B5B5C5C5C %5B5C5D5E5E5E5D5C5E5D5C5B59575656504F4E4C4C4D4E4F4C4C4A4848474645424242424242424243434343434343434141424343444545454544434342414141414141424242423E3D3C3A373734353231313031323435343432302F2D2D2C2C2C2C2C2C2F313237383A3C3F424445474B4F5253565B5E5D5F62666A6C6E6E %6F6F7172747577777777787879797A7A7B7B7A797877767672716E6B686563615F5D5B585655545551525152000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3F3E3C3A363532323030302F3031333335343331302E2D2C2B2B2B2B2C2E30313637393C3E414344474A4F5152555A5E5D5F63666A6C6E6E6F6F717274757777787879797A7A7B7B7C7C7B7A797877777472706D6A6764635E5D5A575554525351515252535454545555555454535353535456585A5B5B5B5A5A5A5B5B5C5C5C %5D5F606160605E5E5E5E5D5B5958575651504F4D4D4D4D4E4A4A484848474746434343434343434343434343434343434242424343444444444444434342424242424242414141413F3E3C3A363532323030302F3031333335343331302E2D2C2B2B2B2B2C2E30313637393C3E414344474A4F5152555A5E5D5F63666A6C6E6E %6F6F717274757777787879797A7A7B7B7C7C7B7A797877777472706D6A6764635E5D5A575554525351515252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3F3E3C3836323130302F2F2E2F30313235353232302F2D2C2A2A2B2B2C2D30313536383B3D40424346494E505154595D5D5F63676A6C6E6E6F6F71727475777779797A7A7B7B7B7C7D7D7C7B7A7978787574716E6B6865645E5D5A5754525151515152535455555656565656565555555557595B5C5C5C5C5A5A5B5B5C5D5D5E %616263636261605F5F5E5D5C5A5857575151504F4E4D4D4D4948484747474747434343434343434343434343434343434343434343434343434343434343434342424242414141413F3E3C3836323130302F2F2E2F30313235353232302F2D2C2A2A2B2B2C2D30313536383B3D40424346494E505154595D5D5F63676A6C6E6E %6F6F71727475777779797A7A7B7B7B7C7D7D7C7B7A7978787574716E6B6865645E5D5A575452515151515253000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3D3D3A383432302F2F2E2E2D2E2F313235343231302E2C2C2B292A2A2B2C2F303435373A3C3F414244484D4F5053585B5D5F63676A6C6E6E6F6F71727475777779797A7A7B7B7B7C7D7D7C7B7A7978787574726F6B6866655F5D5A575452505151515253545657575757575757585858585A5B5D5E5E5E5D5A5B5B5C5D5F6061 %646465656463615F5F5F5E5C5A595857515251504F4E4C4C4848484747474645444444444444444443434343434343434343434343434343434343434343434343434342414040403D3D3A383432302F2F2E2E2D2E2F313235343231302E2C2C2B292A2A2B2C2F303435373A3C3F414244484D4F5053585B5D5F63676A6C6E6E %6F6F71727475777779797A7A7B7B7B7C7D7D7C7B7A7978787574726F6B6866655F5D5A575452505151515253000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3A39363432302F2E2D2D2C2D2E2F31333332302E2D2C2B2A2A2A2A2B2D2F30333436393B3E404143474C4E4F52575A5D5F63676A6C6E6E6F6F717274757777787879797A7A7B7B7C7C7B7A797877777574726E6B686664615F5C5855515151505152535557585858585859595A5A5A5B5C5E5F60605F5E5C5C5D5E61626364 %65666666656361605F5F5E5D5B59585853535352504E4C4B494848474646454444444444444444444343434343434343444444434342424242424243434444444444434241403F3F3C3A39363432302F2E2D2D2C2D2E2F31333332302E2D2C2B2A2A2A2A2B2D2F30333436393B3E404143474C4E4F52575A5D5F63676A6C6E6E %6F6F717274757777787879797A7A7B7B7C7C7B7A797877777574726E6B686664615F5C585551515150515253000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %38383735343231302C2D2C2C2C2D2F303231302F2D2B2A2A2A2A29292B2C2E2F323335383B3D3F4043464B4D4E52565A5D5F63676A6C6E6E6F6F7172747577777777787879797A7A7B7B7A79787776767473716E6A67656463605D595552525150515254565759595858595A5A5B5C5C5D5E60616161605F5C5D5F6163656667 %666666666563615F60605F5D5B5A595853525353514E4C4A4A4948474644434345454545454545454343434343434343454544434342414141414243434445454544434241403F3E38383735343231302C2D2C2C2C2D2F303231302F2D2B2A2A2A2A29292B2C2E2F323335383B3D3F4043464B4D4E52565A5D5F63676A6C6E6E %6F6F7172747577777777787879797A7A7B7B7A79787776767473716E6A67656463605D595552525150515254000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %37363634343231312D2C2B2B2C2D2E2F31302F2E2C292828292829292A2C2E2F31333537393D3F4042464A4D4E5156595D5F63676A6C6E6E6F6F71727475777776777777787879797A7A7978777675757473706D6A67656364625E5A56545152505152545658595A5859595A5B5C5C5D5F606162616060605F5F616264666868 %666666666462605F61605F5D5C5A595853545352514E4B494B4A494745434241454646464646464644444444444444444545444343424141414142434344454545454442413F3E3E37363634343231312D2C2B2B2C2D2E2F31302F2E2C292828292829292A2C2E2F31333537393D3F4042464A4D4E5156595D5F63676A6C6E6E %6F6F71727475777776777777787879797A7A7978777675757473706D6A67656364625E5A5654515250515254000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %373533323334322F2D2C2A28282A2B2B2D2D2C2C2C2C2B2B28292B2D2F2F2F2F313134373A3D3F4047484A4C4F5153545B5D606366696A6A6F70717273747576767676767778797A767677777776747372716F6D6A6866656362605D5A575554575656555657595A5B5B5B5B5C5E606163636464656566666464646464656565 %66666666656565656161605F5D5C5A5A565553504E4D4D4D4A49474544444443444546474746454443434343434343434444444444444444444444444444444442424242413F3C3B373533323334322F2D2C2A28282A2B2B2D2D2C2C2C2C2B2B28292B2D2F2F2F2F313134373A3D3F4047484A4C4F5153545B5D606366696A6A %6F70717273747576767676767778797A767677777776747372716F6D6A6866656362605D5A57555457565655000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %383633323435322F2C2B292929282A292B2B2B2B2A2A2A2A28292C2E2F303030323335373B3D3F4147484A4B4F5153545A5C5F63666869696E6F7071727475757575757676777879767677777775747372716F6D6B6867666362605D5B585655575756565658595A5B5B5B5B5D5F616364646465656666666565656565666666 %67676666666565656261605F5D5B5A5A575653504D4C4B4B4948464543434444434445464645444343434343434343434444444444444444444444444444444443434342413F3D3B383633323435322F2C2B292929282A292B2B2B2B2A2A2A2A28292C2E2F303030323335373B3D3F4147484A4B4F5153545A5C5F6366686969 %6E6F7071727475757575757676777879767677777775747372716F6D6B6867666362605D5B58565557575656000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %383633323434322F2C2B2828272728282828282828282828282A2C2E30313131333436383B3E404146484A4B4F5153545A5C5F62646667676C6C6E6F717374747474757576767676757677777675737271716F6D6B6968676463615F5C5957565958575758595A5B5B5B5B5C5E61636565656566666767686767676767676767 %68676766666565656161605E5C5B5A595856534F4C4A49494947464443424343424344454544434243434343434343434444444444444444444444444444444444444443413F3C3B383633323434322F2C2B2828272728282828282828282828282A2C2E30313131333436383B3E404146484A4B4F5153545A5C5F6264666767 %6C6C6E6F717374747474757576767676757677777675737271716F6D6B6968676463615F5C59575659585757000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %383432323434312F2B2A2726262526252525252626272727292A2D2F31323333353538393C3E404146484A4C4F515354595B5D6063646565696A6B6D6F7172737273747575747473747575757574727170706E6D6B696867656462605D5B5A595A5A5959595A5C5D5C5C5D5E6063656766676767686869696969696868676767 %686867666565646461605F5E5C5A59595856534F4B4847464846454342414242414143434343414143434343434343434343434343434343444444444444444444444443413E3B3A383432323434312F2B2A2726262526252525252626272727292A2D2F31323333353538393C3E404146484A4C4F515354595B5D6063646565 %696A6B6D6F7172737273747575747473747575757574727170706E6D6B696867656462605D5B5A595A5A5959000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %363331313232302D2A292625242324232223232424242626292A2D30333434353638393A3D3F404146484A4C4F515354585A5C5F616262626667696B6D6F71727172737474737170727273737371706F6E6E6D6B6A696867656563615F5D5C5B5C5B5A5A5B5C5E5F5F5F5F6061646667686869696A6A6A6B6A6A6A6968686767 %686767656463626260605F5D5B5A59585755514D4A47464547454342414041414041424343424140434343434343434343434343434343434444444444444444444443423E3C3A38363331313232302D2A292625242324232223232424242626292A2D30333434353638393A3D3F404146484A4C4F515354585A5C5F61626262 %6667696B6D6F71727172737474737170727273737371706F6E6E6D6B6A696867656563615F5D5C5B5C5B5A5A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %34312F2F30302D2B29272624222121212121222324242626292B2E313435353738383A3C3E40414146484A4C4F51535458595B5E5F606060636466686B6E70716F71727373716F6D6F707070706F6D6C6C6B6B6A6867666666666463615F5E5E5D5D5C5C5C5E5F606262616263646667696A6A6B6B6C6C6C6B6B6A6968676666 %676665646261605F605F5E5D5B5958585553504C4947464546444241403F40404041424343424140434343434343434342424242424242424444444444444444434342403D3A373534312F2F30302D2B29272624222121212121222324242626292B2E313435353738383A3C3E40414146484A4C4F51535458595B5E5F606060 %636466686B6E70716F71727373716F6D6F707070706F6D6C6C6B6B6A6867666666666463615F5E5E5D5D5C5C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %312F2C2C2E2D2B2828272522212020202021222224242627292B2E32353738373A3A3C3D3F40414246484A4C4F51535457585A5D5E5F5F5E616264676A6C6F706E70727372706D6B6C6D6E6E6D6C6B6A6969686867666565676665646261605F5E5E5D5D5E5F606066656463636465666B6B6B6C6C6D6D6D6B6A696867666564 %66656462605E5D5C5F5F5E5C5A59585753514E4B49474746454442403F3F3F3F41424344444342414343434343434343424242424242424244444444444444444241403D3B383533312F2C2C2E2D2B2828272522212020202021222224242627292B2E32353738373A3A3C3D3F40414246484A4C4F51535457585A5D5E5F5F5E %616264676A6C6F706E70727372706D6B6C6D6E6E6D6C6B6A6969686867666565676665646261605F5E5E5D5D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %302D2B2B2C2C292729272421201F1F1F1F21222323262727292B2E32353737393A3B3C3E3F40414246484A4C4F51535457585A5C5D5E5E5D60616366696C6E6F6E6F7173726F6C696B6B6C6C6C6A6968686867666665646467676664636261605F5F5E5E5E5E606268676564646464656B6B6C6C6D6D6E6E6B6A696866656464 %656463615F5D5C5B5F5F5D5C5A595857514F4D4A484747474443413F3E3E3E3F424243444443424243434343434343434242424242424242444444444444444441403F3D3A373331302D2B2B2C2C292729272421201F1F1F1F21222323262727292B2E32353737393A3B3C3E3F40414246484A4C4F51535457585A5C5D5E5E5D %60616366696C6E6F6E6F7173726F6C696B6B6C6C6C6A6968686867666665646467676664636261605F5F5E5E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %292827262627282924232221201E1E1D1E1E1F21222526262A2C2E3134363A3B3F3F3F40404141424345484A4D50525459585858585A5C5D60616365686A6C6D70706F6E6E6D6C6C696A6B6C6B6A686664646565666667676766646262605F5E605F5E5C5D60626465666769696867676D6D6C6C6B6B6A6A6969686766666565 %6462605E5D5D5E5E5C5D5D5C5A5754524F4E4D4C4A48474742424242424141413E3F4243444342414041424445454444434343434343434344444546464543423E3E3D3A36322D2B292827262627282924232221201E1E1D1E1E1F21222526262A2C2E3134363A3B3F3F3F40404141424345484A4D50525459585858585A5C5D %60616365686A6C6D70706F6E6E6D6C6C696A6B6C6B6A686664646565666667676766646262605F5E605F5E5C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2727262425252727232322211F1E1E1D1E1F2021232426272A2C2E3133373A3A3F3F4040414141424445484A4D50525358575757585A5B5C5F61626567696B6C6F6E6E6D6D6C6B6B68696A6B6A69676664646465656666676666646261605F5E5F5F5D5E5F606364656667696A6A69696D6D6C6C6B6B6A6A6A6A696766656463 %63615F5D5C5C5D5D5B5B5C5B59565452504F4E4C4B49484743434342424241413E404143434342414041434445454444434343434343434344444546454443423E3D3B3836312D2A2727262425252727232322211F1E1E1D1E1F2021232426272A2C2E3133373A3A3F3F4040414141424445484A4D50525358575757585A5B5C %5F61626567696B6C6F6E6E6D6D6C6B6B68696A6B6A69676664646465656666676666646261605F5E5F5F5D5E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2524232323232425222121201F1E1E1D1F1F2122242527282B2C2F3234383A3C3F404040414242424546474A4D4F51525656565657595B5C5F5F61636567696A6C6C6C6B6B6A6A6A6768686968676665636464656566666666656463615F5E5E5E5E5E5E606163646466686A6B6C6C6B6D6D6C6C6B6B6A6A6B6B696765636261 %61605E5C5B5B5B5B5A5A59595755535251504F4D4C4A494844444443434242413F404142434342424041434445444343434343434343434344454545454342413D3C3A37332F2B292524232323232425222121201F1E1E1D1F1F2122242527282B2C2F3234383A3C3F404040414242424546474A4D4F51525656565657595B5C %5F5F61636567696A6C6C6C6B6B6A6A6A6768686968676665636464656566666666656463615F5E5E5E5E5E5E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %22222120202122232120201F1F1E1E1D20212224242628292B2D2F3135383A3C40404041414242434446474A4C4E50515454545556595B5C5D5E5E616365666769696968686868686666666665646463636363646565656665656462605F5E5D5D5E5E60616364656566696B6D6E6E6E6D6D6C6C6B6B6A6A6C6B696765626160 %5F5E5D5C5B5A595958585757555453525252514F4D4C4B4A464645444343424240404142424243424142434444444342434343434343434344454545444241403B3A3734312D2A2722222120202122232120201F1F1E1E1D20212224242628292B2D2F3135383A3C40404041414242434446474A4C4E50515454545556595B5C %5D5E5E616365666769696968686868686666666665646463636363646565656665656462605F5E5D5D5E5E60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %21201F1F1F1F2021202020201F1F1F1F212223252527292A2C2D303236383B3D4041414242434343444547494B4D4F4F5253535456585A5C5C5D5D5F6162636465656566666666666564646362626262626363636465656565646362605E5D5D5C5D5F616364656566686A6D6F7070706D6D6C6C6B6B6A6A6B6A69666462605F %5D5D5D5C5B5A58585857565554535353545352514F4D4C4C48484746444342424140414141424343424344444443424143434343434343434545454543413F3E3A3835312E2A272721201F1F1F1F2021202020201F1F1F1F212223252527292A2C2D303236383B3D4041414242434343444547494B4D4F4F5253535456585A5C %5C5D5D5F6162636465656566666666666564646362626262626363636465656565646362605E5D5D5C5D5F61000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %20201F1E1E1F202021212121212121212223242627282A2B2C2E303235393C3D4141414243434344444547494B4C4D4E5151515355575A5C5B5B5C5C5E6060616262626363646464636261605F6060616262626363646465646463615F5E5D5C5B5D5F6264656666696A6C6E707070706D6D6C6C6B6B6A6A6A69686664626060 %5D5D5D5D5C5A5857585756545454545556555452514F4E4D4A494847454443424141404041424344434344454443414043434343434343434545454443413E3D3936332F2B28262520201F1E1E1F202021212121212121212223242627282A2B2C2E303235393C3D4141414243434344444547494B4C4D4E5151515355575A5C %5B5B5C5C5E6060616262626363646464636261605F6060616262626363646465646463615F5E5D5C5B5D5F62000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %20201E1E1E1E202022222222222223232324252728292B2C2D2E3033363A3C3E4142424243434444454547494A4B4C4D4F4F505254575A5B5A5A5B5B5D5E5E5F5F6060616162636362615F5E5D5E5F606162616262636464646362615F5D5C5C5A5C6063656667666C6D6E70717170706D6D6C6C6B6B6A6A6867666564626161 %5D5E5E5E5D5B595759575654545556575756555352504F4E4B4B4948464443424241404040424345444445454443414043434343434343434545454442403D3C3835312B2925252320201E1E1E1E202022222222222223232324252728292B2C2D2E3033363A3C3E4142424243434444454547494A4B4C4D4F4F505254575A5B %5A5A5B5B5D5E5E5F5F6060616162636362615F5E5D5E5F606162616262636464646362615F5D5C5C5A5C6063000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %20201F1E1E1E202022232323232424242324242728292A2B2C2E3134373A3C3E4142424343444444454647484A4B4C4D4F4E505154575A5B595A5A5B5C5D5D5D5E5E5F606061626262605E5D5C5D5E5F6161626163626364646362605F5D5C5B5A5C6063666767676E6E70717171706F6D6D6C6C6B6B6A6A6666656564636262 %5D5E5F5F5E5C59585958565454555758575756545251504F4C4B4A48464443424241403F404144454444454544424140434343434343434345454544423F3D3B3635302B2724242320201F1E1E1E202022232323232424242324242728292A2B2C2E3134373A3C3E4142424343444444454647484A4B4C4D4F4E505154575A5B %595A5A5B5C5D5D5D5E5E5F606061626262605E5D5C5D5E5F6161626163626364646362605F5D5C5B5A5C6063000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %1E1E1D1F1F20202123232424232222232525252525282A2B2D2F3134373B3C3C40404142434445464545464748494A4A4C4D4E5153565758595959595A5B5D5E5C5D5E5F5E5F5C5D5D5E5D5E5D5E5D5E5F5F60606162626161605F5D5C5C5D5D5E5F60636568696A6E6E6E6E6F6F6F6F6D6E6E6E6D6B69686665656464636363 %605F5E5D5C5B5A5A575758585857555457575655555453534D4D4D4C4A47454342424242424343434142434444434241424142424241414140414444423F3B3832302D29262524231E1E1D1F1F20202123232424232222232525252525282A2B2D2F3134373B3C3C40404142434445464545464748494A4A4C4D4E5153565758 %595959595A5B5D5E5C5D5E5F5E5F5C5D5D5E5D5E5D5E5D5E5F5F60606162626161605F5D5C5C5D5D5E5F6063000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %1E1E1F1F202020202525242424242423262525252728292C2D2F3236383B3C3C3F404041434444454545464748494A4B4C4D4F5153555758595959595A5C5E5F5D5D5F5F5F5F5D5D5E5E5E5E5E5E5E5E5E5E5F606162626361605E5D5C5C5D5D5E5F61636567696A6C6D6D6E6F6F70706E6F6F6F6E6C6A696666656564646363 %60605F5E5D5C5B5B585859595857565557575655545353524D4D4D4C4A48464443434344444444444343454545454343434242424241414140414344413D39362F2E2A28252423231E1E1F1F202020202525242424242423262525252728292C2D2F3236383B3C3C3F404041434444454545464748494A4B4C4D4F5153555758 %595959595A5C5E5F5D5D5F5F5F5F5D5D5E5E5E5E5E5E5E5E5E5E5F606162626361605E5D5C5C5D5D5E5F6163000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %1F1F202021212222252524242525252427272626282A2B2D2E303336383B3B3C3E3F3F404243434445464748494A4B4B4D4D4F5153555757595858585A5B5D5E5D5D5F5F5F5F5D5D5D5D5D5D5D5D5D5D5C5D5E5F6062636361605E5D5C5D5E5E5F5F6163656769696A6B6C6D6E707171707070706F6D6B6A6767666665656464 %6161605F5E5D5C5C59595A5A5A58575657575655545352514E4E4E4D4C49474645454544444444444445464646464544444343434241414140414343403B37342D2A2825242222211F1F202021212222252524242525252427272626282A2B2D2E303336383B3B3C3E3F3F404243434445464748494A4B4B4D4D4F5153555757 %595858585A5B5D5E5D5D5F5F5F5F5D5D5D5D5D5D5D5D5D5D5C5D5E5F6062636361605E5D5C5D5E5E5F5F6163000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2020212122222323252524252626272728272728292A2D2E2F303337383A3B3B3D3E3F404142434346464748494A4B4B4D4E4F515355565758585858595B5D5E5D5D5F5F5F5F5D5D5D5D5D5D5D5D5D5D5B5B5C5E5F616262605F5E5D5D5D5E5F5F6061636567686968696B6C6E70717271717271706F6D6B6868676766666565 %63636261605F5E5D5A5B5C5C5B5A585758585755545351514F4F4F4F4D4B4948464646464545454445464748484746454544444342414140404142423E39343129272523212121212020212122222323252524252626272728272728292A2D2E2F303337383A3B3B3D3E3F404142434346464748494A4B4B4D4E4F5153555657 %58585858595B5D5E5D5D5F5F5F5F5D5D5D5D5D5D5D5D5D5D5B5B5C5E5F616262605F5E5D5D5D5E5F5F606163000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %212122222323232324252627262729292A2A2A292B2C2F3031313438393A3B3B3D3E3F4041424343474748494A4B4C4C4E4F50515354555658575757585A5C5D5D5D5F5F5F5F5D5D5C5C5C5C5C5C5C5C5A5B5C5D5E5F60605F5E5D5D5D5E5F60606162636566676868696A6C6E6F717272727272716F6D6C6969686867676666 %65646362615F5F5F5C5C5D5D5D5C5A595A5A5857555352514F5050504F4E4C4B48484847464645454748494A4A4948474645454443414140404142403C36312E2624232121212122212122222323232324252627262729292A2A2A292B2C2F3031313438393A3B3B3D3E3F4041424343474748494A4B4C4C4E4F505153545556 %58575757585A5C5D5D5D5F5F5F5F5D5D5C5C5C5C5C5C5C5C5A5B5C5D5E5F60605F5E5D5D5D5E5F6060616263000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %22222322242424242426272828292A2B2C2C2A2B2C2E303132343538393A3B3B3E3F3F4042434344474748494A4B4C4D4F5050515354545557575757585A5C5D5D5D5F5F5F5F5D5D5C5C5C5C5C5C5C5C5B5C5C5C5D5D5D5D5E5E5D5C5D5E6061616262636566666769696A6C6D6E6F7071727272716F6D6C6A6A696968686767 %66666564636261615D5E5F5F5E5D5C5B5D5C5B59565453525051515151504E4D4A4A49484746454549494A4B4B4A494948464645434240404041413F3A342E2A242422222122222422222322242424242426272828292A2B2C2C2A2B2C2E303132343538393A3B3B3E3F3F4042434344474748494A4B4C4D4F50505153545455 %57575757585A5C5D5D5D5F5F5F5F5D5D5C5C5C5C5C5C5C5C5B5C5C5C5D5D5D5D5E5E5D5C5D5E606161626263000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %232324232424262626252628292B2C2C2D2C2C2D2E2F313333343639393B3B3B3F404041434444454748494A4B4C4D4D50505152525354545757565658595B5C5D5D5F5F5F5F5D5D5B5B5B5B5B5B5B5B5D5D5C5C5B5B5B5A5D5D5C5C5D5E606162626364646566666A6A6B6B6C6D6D6E71717171706E6C6B6B6B6A6A69696868 %67676665646362625F5F6060605E5D5C5F5E5D5B58565453515152535251504F4C4B4A49484746454A4A4C4C4C4C4A4A49474745434240404041403E39322C282322222122222524232324232424262626252628292B2C2C2D2C2C2D2E2F313333343639393B3B3B3F404041434444454748494A4B4C4D4D5050515252535454 %5757565658595B5C5D5D5F5F5F5F5D5D5B5B5B5B5B5B5B5B5D5D5C5C5B5B5B5A5D5D5C5C5D5E606162626364000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2223232424262626252527292A2B2C2D2E2D2D2C2E303233343436393A3B3B3A40404142434445464848494A4B4C4D4D50505152525354545756565657595B5C5D5D5F5F5F5F5D5D5B5B5B5B5B5B5B5B5E5E5D5C5B5A59585D5D5C5C5D5F606162626364646566666B6B6B6B6C6C6C6C707071706F6E6C6B6B6B6B6A6A696968 %68686766656463625F606061605F5D5C61605E5C5957555451525353535251504C4C4B49484746454A4B4C4D4D4C4B4A494847454342403F4040403E38312B2722222121222324252223232424262626252527292A2B2C2D2E2D2D2C2E303233343436393A3B3B3A40404142434445464848494A4B4C4D4D5050515252535454 %5756565657595B5C5D5D5F5F5F5F5D5D5B5B5B5B5B5B5B5B5E5E5D5C5B5A59585D5D5C5C5D5F606162626364000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %242526262728282729292A2C2E2F30313233333333333332343436383A3C3D3E4041424444464849494A4C4D4E4D4D4C4E4F505152545555575757585859595A5E5E5E5E5E5E5E5E5C5C5C5C5D5D5D5D5C5C5C5B5B5B5B5B5B5B5C5E5F6061626363636464656565686869696A6B6B6B6E6E6F6F6E6C6B6967686A6B6C6C6B6A %6A6A696968686767666565646463636261615F5D5A58565557575654535251504C4B4B4A494847464C4D4E4E4E4E4D4C4846464442403F3E4040403D362F27222120202121222223242526262728282729292A2C2E2F30313233333333333332343436383A3C3D3E4041424444464849494A4C4D4E4D4D4C4E4F505152545555 %575757585859595A5E5E5E5E5E5E5E5E5C5C5C5C5D5D5D5D5C5C5C5B5B5B5B5B5B5B5C5E5F60616263636364000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2525262727272729292A2B2C2E3031313333333333323233353437383A3C3D3E4041424444464849494A4C4D4E4D4D4C4D4E4F50525354555757585859595A5A5F5F5F5F5F5F5F5F5D5D5D5D5C5C5C5C5D5D5D5C5C5C5C5C5C5D5E5F606162636363636464656565676768696A6B6B6C6E6E6F6F6E6D6B6A68696B6C6D6C6C6B %6A6A6A6969686867666665656464636362615E5D5B59575658575655535251504C4C4B4A494847474B4B4C4D4D4C4B4B4846464442403F3E4040403D3630282321202221232224232525262727272729292A2B2C2E3031313333333333323233353437383A3C3D3E4041424444464849494A4C4D4E4D4D4C4D4E4F5052535455 %5757585859595A5A5F5F5F5F5F5F5F5F5D5D5D5D5C5C5C5C5D5D5D5C5C5C5C5C5C5D5E5F6061626363636364000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %27272727282929292A2A2C2D2F3031323535353434353535353738393B3C3D3E4041424444464849494A4C4D4E4D4D4C4C4C4E4F51525454585859595A5A5B5B60606060606060605F5E5E5D5C5B5B5A5E5E5E5E5E5E5E5E5F5F606162636464636363646465656565666768696B6C6C6E6E6F6F6F6D6C6B696A6C6D6E6D6D6C %6B6A6A696968686867676666656564646362605E5B5A595859595756545251514C4C4B4A4948474749494B4B4B4B4949474545444241403F4040403D36302925222222232324242527272727282929292A2A2C2D2F3031323535353434353535353738393B3C3D3E4041424444464849494A4C4D4E4D4D4C4C4C4E4F51525454 %585859595A5A5B5B60606060606060605F5E5E5D5C5B5B5A5E5E5E5E5E5E5E5E5F5F60616263646463636364000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %28282728292A2A2A2B2B2D2E3031323335353636363636353838393A3C3D3E3E4041424444474849494A4C4D4E4D4D4C4A4B4C4E5052545459595A5A5B5B5C5C6161616161616161605F5E5D5C5B5A595E5E5E5F5F6060606162626364646565636363646465656564646567686A6B6B6C6D6E6F6F6E6C6C6A6B6D6E6E6E6D6D %6B6B6B6A696969686868676766666565636361605E5B5B5A5B5A5957555352514D4D4C4B4A4948474748494A4A494847464545444241404041403F3C36312B27232223232424252528282728292A2A2A2B2B2D2E3031323335353636363636353838393A3C3D3E3E4041424444474849494A4C4D4E4D4D4C4A4B4C4E50525454 %59595A5A5B5B5C5C6161616161616161605F5E5D5C5B5A595E5E5E5F5F606060616262636464656563636364000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2929292A2A2B2B2B2C2D2E2F3132343438383737373737383A3A3B3C3D3D3E3E4041414345474849494A4C4D4E4D4D4C494A4C4E505354555A5A5B5B5C5C5D5D6161616161616161605F5E5D5C5B5A595E5E5F5F606161616364646465656565636363646465656563646566676869696B6B6D6D6E6D6C6B6A6B6D6E6E6E6D6D %6C6B6B6B6A696969696968686767666664636261605E5D5D5D5C5A58565452504E4D4C4B4A4948484647484848484746454444434342414141413F3C36312C2924232424252526262929292A2A2B2B2B2C2D2E2F3132343438383737373737383A3A3B3C3D3D3E3E4041414345474849494A4C4D4E4D4D4C494A4C4E50535455 %5A5A5B5B5C5C5D5D6161616161616161605F5E5D5C5B5A595E5E5F5F60616161636464646565656563636364000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2A2A2A2B2B2C2C2C2D2E2F303233353539383838383839393C3C3C3D3D3E3E3F4041414345474849494A4C4D4E4D4D4C494A4C4F515456575B5B5C5C5D5D5E5E60606060606060605F5E5E5D5C5B5B5A5D5D5E5F6061626264646565656565656363636464656565646565656666666668696A6C6C6C6B6A696A6C6D6E6D6D6C %6C6C6C6B6B6A6A696A6A6969686867676564646261605E5F5F5E5C59575452514E4E4D4C4B4A49494646474848474646454344434342424142413F3B36312E2B25242625272628272A2A2A2B2B2C2C2C2D2E2F303233353539383838383839393C3C3C3D3D3E3E3F4041414345474849494A4C4D4E4D4D4C494A4C4F51545657 %5B5B5C5C5D5D5E5E60606060606060605F5E5E5D5C5B5B5A5D5D5E5F60616262646465656565656563636364000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2A2B2B2C2C2D2D2D2E2E2F31323335353A3B3B3B3B3B3B3B3C3C3D3E3E3E3F3F4041414345474849494A4C4D4E4D4D4C4A4B4D50525557585C5C5D5D5E5E5F5F5F5F5F5F5F5F5F5F5D5D5D5D5C5C5C5C5B5C5D5E5F6061626565656464646464636363646465656566666565646464636567686A6A6A6A6968696B6C6D6C6C6B %6D6C6C6B6B6A6A6A6B6B6A6A696968686565646363626161605F5D5A575553514E4E4D4C4B4A49494647484848484746444344434342424242413F3B36322F2D26262627272828292A2B2B2C2C2D2D2D2E2E2F31323335353A3B3B3B3B3B3B3B3C3C3D3E3E3E3F3F4041414345474849494A4C4D4E4D4D4C4A4B4D5052555758 %5C5C5D5D5E5E5F5F5F5F5F5F5F5F5F5F5D5D5D5D5C5C5C5C5B5C5D5E5F606162656565646464646463636364000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2B2B2B2C2D2D2D2E2E2F3031333535353A3B3B3B3B3B3B3B3D3E3E3E3E3F3F3F4040424445474849494A4C4D4E4D4D4C4A4B4D505356585A5C5D5D5E5E5F5F5F5E5E5E5E5E5E5E5E5C5C5C5C5D5D5D5D5B5B5C5D5F606162656564646464636363636364646565656767666564636261646567686969696867686A6B6C6C6B6A %6D6D6C6C6B6B6A6A6B6B6B6A6A696968666565646363626261605E5B585553524F4E4D4C4B4A4A494647484949484746444443434343424242413E3B37322F2D26262627272828282B2B2B2C2D2D2D2E2E2F3031333535353A3B3B3B3B3B3B3B3D3E3E3E3E3F3F3F4040424445474849494A4C4D4E4D4D4C4A4B4D505356585A %5C5D5D5E5E5F5F5F5E5E5E5E5E5E5E5E5C5C5C5C5D5D5D5D5B5B5C5D5F606162656564646464636363636364000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2D2D2E2F3031323333333433353536363C3C3C3D3D3E3E3E3F3F3F3F3E3E3E3E40404244454749494B4C4D4E4E4C4A494B4B4E50535658595C5C5D5D5E5E5F5F5F5E5E5D5C5B5B5A5F5F5E5D5C5B5A595B5B5C5D5E5F60606262636264646565656565656566666665646463626161606464656566666767676868696B6C6C6D %6D6D6C6C6B6B6B6A6A6A6A6A6A6A6A6A6B6B6968666563635F5E5C595755535251504F4E4D4C4B4B4A49494949494847444444434342424241403F3D3A3633312B2A2928292A2B2C2D2D2E2F3031323333333433353536363C3C3C3D3D3E3E3E3F3F3F3F3E3E3E3E40404244454749494B4C4D4E4E4C4A494B4B4E5053565859 %5C5C5D5D5E5E5F5F5F5E5E5D5C5B5B5A5F5F5E5D5C5B5A595B5B5C5D5E5F6060626263626464656565656565000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2E2E2F303132333333333435343535363C3C3C3D3D3E3E3E3F3F3F3F3F3F3E3E40414244454748494A4B4D4D4D4C4B4A4B4B4E50535557585B5B5C5C5D5D5E5E5E5E5E5D5C5B5B5B5E5E5D5C5B5A59595A5A5B5C5D5E5F5F6161626263636464646464656565666665646463626261616464646565666667676868696B6C6C6D %6E6E6D6D6C6C6B6B6A6A6A6A6A6A6A6A6B6B6968666563635F5E5C5A575554535151504F4E4D4C4C494949494848484744444443434242424141403E3B3734322B2B2A29292A2B2B2E2E2F303132333333333435343535363C3C3C3D3D3E3E3E3F3F3F3F3F3F3E3E40414244454748494A4B4D4D4D4C4B4A4B4B4E5053555758 %5B5B5C5C5D5D5E5E5E5E5E5D5C5B5B5B5E5E5D5C5B5A59595A5A5B5C5D5E5F5F616162626363646464646465000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2F2F30313233343435353536353637383C3C3C3D3D3E3E3E3F3F3F3F3F3F3F3F41414244454748484A4B4C4C4C4C4B4A4C4D4D505254565759595A5A5B5B5C5C5E5D5D5D5C5C5B5B5D5D5C5B5A59585858595A5B5C5D5E5E5F5F606061616262636363646465656664646463636362626364646565666666676868696B6C6C6D %6F6F6E6E6D6D6C6C6A6A6A6A6A6A6A6A6B6B6968666563635F5E5C5B58565554525251504F4E4D4D494949484747464644444443434242424141403F3C3936342F2E2C2B2A2A2A2B2F2F30313233343435353536353637383C3C3C3D3D3E3E3E3F3F3F3F3F3F3F3F41414244454748484A4B4C4C4C4C4B4A4C4D4D5052545657 %59595A5A5B5B5C5C5E5D5D5D5C5C5B5B5D5D5C5B5A59585858595A5B5C5D5E5E5F5F60606161626263636364000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %303132333435363636373736373739393C3C3C3D3D3E3E3E3F3F3F40404041414142434445464748494A4A4B4B4B4B4B4D4E4E4F5253545456575758585959595C5C5C5C5C5B5B5B5C5B5A5958575656565758595A5B5B5C5D5E5E5E5F606060616162636464656564646464646363636363636465656566676868696B6C6C6D %706F6F6F6E6E6D6D6A6A6A6A6A6A6A6A6B6B6968666563635F5E5D5B5A5857565354535251504F4E4A4949484746454544444443434242424141413F3D3A373632312F2D2B2B2B2B303132333435363636373736373739393C3C3C3D3D3E3E3E3F3F3F40404041414142434445464748494A4A4B4B4B4B4B4D4E4E4F52535454 %56575758585959595C5C5C5C5C5B5B5B5C5B5A5958575656565758595A5B5B5C5D5E5E5E5F60606061616263000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3232333435363638383838383A3A3A3B3C3C3C3D3D3E3E3E3E3F3F40414142424243434445464647494949494A4B4C4C4E4F4F505151515254545455555656575A5A5A5A5A5A5A5A5A5A595857565554545555565758595A5C5C5D5D5E5E5F5F5F5F60616364656564646464646565656263636364656565676868696B6C6C6D %706F6F6F6E6E6D6D6A6A6A6A6A6A6A6A6B6B6968666563635F5F5E5C5B59585856555453525050504B4B4A494746454544444443434242424141403F3D39373634312F2D2C2B2B2C3232333435363638383838383A3A3A3B3C3C3C3D3D3E3E3E3E3F3F40414142424243434445464647494949494A4B4C4C4E4F4F5051515152 %54545455555656575A5A5A5A5A5A5A5A5A5A595857565554545555565758595A5C5C5D5D5E5E5F5F5F5F6061000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %34343536373839393939393A3B3C3C3C3C3C3C3D3D3E3E3E3E3F3F4041424343434344444545464648484848494B4C4D4F4F50505050504F51515252535354545657575758585959585857565554535352525354555657585C5C5D5D5E5E5F5F5D5E5F606263646564646465656566666262626363646465676868696B6C6C6D %6F6F6E6E6D6D6C6C6A6A6A6A6A6A6A6A6B6B696866656363605F5E5D5C5B5A5A57575555545352524D4D4C4A4847464544444443434242423F3F3F3E3B3937363432302E2E2E2E2E34343536373839393939393A3B3C3C3C3C3C3C3D3D3E3E3E3E3F3F4041424343434344444545464648484848494B4C4D4F4F50505050504F %51515252535354545657575758585959585857565554535352525354555657585C5C5D5D5E5E5F5F5D5E5F60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3535363737393A3A3A3A3B3C3C3D3D3D3C3C3C3D3D3E3E3E3E3E3F4142434444444444444545454548474747484A4D4E5050504F4F4F4F4E4F4F5050515152525454545556565757575756555453525251515253545556565C5D5D5D5E5E5F5F5C5C5E5F6163646563646465666667676162626363646464676868696B6C6C6D %6E6E6D6D6C6C6B6B6A6A6A6A6A6A6A6A6B6B696866656363605F5F5E5D5C5B5B58585756545453524F4F4D4C4A48474644444443434242423D3E3E3D3C39373633333130303132323535363737393A3A3A3A3B3C3C3D3D3D3C3C3C3D3D3E3E3E3E3E3F4142434444444444444545454548474747484A4D4E5050504F4F4F4F4E %4F4F5050515152525454545556565757575756555453525251515253545556565C5D5D5D5E5E5F5F5C5C5E5F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %35363738393A3B3A3A3A3C3C3D3D3E3E3C3C3C3D3D3E3E3E3E3E3F4142434445444444444545454548474646484A4D4F5150504F4F4E4E4E4E4E4F4F505051515252535454555656575655545352515150505152535455555D5D5D5E5E5F5F5F5B5C5D5F6163646563646465666767686161626263636464676868696B6C6C6D %6D6D6C6C6B6B6B6A6A6A6A6A6A6A6A6A6B6B696866656363605F5F5E5D5D5C5C595958575654545351504E4D4B49474744444443434242423C3D3D3B3B383735333231313132333435363738393A3B3A3A3A3C3C3D3D3E3E3C3C3C3D3D3E3E3E3E3E3F4142434445444444444545454548474646484A4D4F5150504F4F4E4E4E %4E4E4F4F505051515252535454555656575655545352515150505152535455555D5D5D5E5E5F5F5F5B5C5D5F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %35363738393A393A3C3C3C3D3D3E3E3E3C3B3B3A3A3B3D3E3D3E3E3F4041424343434343434343434647484A4B4D4E4F4F4F4E4E4D4D4C4C4C4C4D4D4E4E4F4F4E4F50515254555554545352515050504F4F4F50525456575657595A5B5B5B5A5C5C5D5E606162636262636364646565646364646464646462636567696C6E6E %6D6C6C6C6B6A6A6A6A6A6A6A6A6A6A6A68676665636160605C5C5C5C5C5C5C5C5B5C5D5C5B5855534F4D4E4D4C4B4B4A46474747464442413E3C3A3835353536323233333333333435363738393A393A3C3C3C3D3D3E3E3E3C3B3B3A3A3B3D3E3D3E3E3F4041424343434343434343434647484A4B4D4E4F4F4F4E4E4D4D4C4C %4C4C4D4D4E4E4F4F4E4F50515254555554545352515050504F4F4F50525456575657595A5B5B5B5A5C5C5D5E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %363638383939393A3C3C3C3D3D3E3E3E3C3C3B3A3A3B3C3D3D3D3E3F404142424343434343434343464748494B4D4E4E4F4F4F4E4E4D4D4C4C4B4C4D4D4E4E4F4E4F5051525354555352525150504F4F4F4F4F50525456575657595A5B5B5B5A5B5C5D5E5F6061626161606262636363626262636363636362626466696B6D6E %6D6C6C6B6B6A6A6A6969696969696969686766646361605E5C5C5C5C5C5C5C5C5C5C5C5C5A5855534F4F4E4E4E4D4D4D49494948474442413E3C3A38363535353333343434353535363638383939393A3C3C3C3D3D3E3E3E3C3C3B3A3A3B3C3D3D3D3E3F404142424343434343434343464748494B4D4E4E4F4F4F4E4E4D4D4C %4C4B4C4D4D4E4E4F4E4F5051525354555352525150504F4F4F4F4F50525456575657595A5B5B5B5A5B5C5D5E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3838393938393A3A3C3C3C3D3D3E3E3E3D3C3B3A3A3B3C3D3D3D3E3F404142424242424242424242464647494B4C4D4E504F4F4E4E4D4D4D4B4C4B4C4C4D4E4E4E4E4F50515253535050504F4F4F4E4E4E4E4E50525456575758595B5B5B5A595B5B5C5D5E5F60605E5F5F605F60606062626262616262626162636567696B6C %6C6C6B6B6A6A6A6968686868686868686766656362605F5E5C5C5C5C5C5C5C5C5C5C5C5B595755534E4F504F505151514D4D4C4B484542403D3C3A363635353534353436353736383838393938393A3A3C3C3C3D3D3E3E3E3D3C3B3A3A3B3C3D3D3D3E3F404142424242424242424242464647494B4C4D4E504F4F4E4E4D4D4D %4B4C4B4C4C4D4E4E4E4E4F50515253535050504F4F4F4E4E4E4E4E50525456575758595B5B5B5A595B5B5C5D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3939393939393A3A3C3C3C3D3D3E3E3E3E3D3B3A3A3A3B3C3C3C3D3E3F4041424242424242424242454647484A4C4D4D4F4F4F4E4E4D4D4C4B4B4B4C4D4D4D4E4E4E4F4F505151514E4E4E4E4E4E4E4E4F4E4E4F5254565758595A5B5B5A59595A5A5B5B5C5D5D5E5C5C5D5D5D5D5E5F606060605F5F60606061626466676969 %6B6B6A6A69696868666666666666666666656462615F5E5D5C5C5C5C5C5C5C5C5C5C5B5A58565554505051525354545551504F4D494442403D3B3937353434343536363738393A3A3939393939393A3A3C3C3C3D3D3E3E3E3E3D3B3A3A3A3B3C3C3C3D3E3F4041424242424242424242454647484A4C4D4D4F4F4F4E4E4D4D4C %4B4B4B4C4D4D4D4E4E4E4F4F505151514E4E4E4E4E4E4E4E4F4E4E4F5254565758595A5B5B5A59595A5A5B5B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3A3A3A393A3A3A3A3C3C3C3D3D3E3E3E3F3E3C3B3A3A3A3B3B3C3D3E3F4041414141414141414141444446484A4B4C4D4E4E4E4D4C4C4C4B4A4B4B4B4C4C4D4D4D4E4E4E4F4F4F4F4D4D4D4D4D4E4E4E4F4F4E4F5154565759595A5B5B5A595859595A5A5A5B5B5B5A5B5B5C5C5D5D5D5F5F5F5F5F5F5E5F5F60616264656667 %6968686767666666656565656565656565646361605E5D5C5C5C5C5C5C5C5C5C5C5B5A585655545452525354555556565352514E4A4542403C3B39363534343436353637383A3B3B3A3A3A393A3A3A3A3C3C3C3D3D3E3E3E3F3E3C3B3A3A3A3B3B3C3D3E3F4041414141414141414141444446484A4B4C4D4E4E4E4D4C4C4C4B %4A4B4B4B4C4C4D4D4D4E4E4E4F4F4F4F4D4D4D4D4D4E4E4E4F4F4E4F5154565759595A5B5B5A595859595A5A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3B3B3A3A3B3A3A3A3C3C3C3D3D3E3E3E3F3E3C3B3A393A3A3B3B3C3D3E3F4040414141414141414143444647494B4C4C4C4C4C4B4B4A4A4A4A4A4A4B4A4B4B4C4D4D4D4D4D4E4E4E4C4D4D4D4E4E4F4F4F4F4E4F51535657595A5B5B5B59585758595959595959595A5A5A5B5B5C5C5C5D5D5D5D5D5D5C5C5F5F606162636465 %66666565646463636363636363636363646362605F5D5C5B5C5C5C5C5C5C5C5C5D5B59575554545454545355555556565352514E4B4643413C3A38363433323335353637393A3C3C3B3B3A3A3B3A3A3A3C3C3C3D3D3E3E3E3F3E3C3B3A393A3A3B3B3C3D3E3F4040414141414141414143444647494B4C4C4C4C4C4B4B4A4A4A %4A4A4A4B4A4B4B4C4D4D4D4D4D4E4E4E4C4D4D4D4E4E4F4F4F4F4E4F51535657595A5B5B5B59585758595959000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3C3C3C3B3A3A393C3C3C3D3D3E3E3E403F3D3B3A39393A3B3B3C3D3E3F4040404040404040404043434547494A4B4C4A4A4A4949484848494A4A4B4B4C4C4B4D4D4D4D4D4C4C4C4D4D4D4E4F4F50504F4F4F50515356575A5B5B5B5A59575658585858575757575A5A5A5B5B5C5C5C5C5C5C5C5C5C5B5B5E5E5F6061626263 %636363626161616062626262616261626362615F5E5C5B5A5C5C5C5C5C5C5C5C5D5B58565454545456565555555554545151504E4B4744423B3A373534333233343536383A3B3D3D3C3C3C3C3B3A3A393C3C3C3D3D3E3E3E403F3D3B3A39393A3B3B3C3D3E3F4040404040404040404043434547494A4B4C4A4A4A4949484848 %494A4A4B4B4C4C4B4D4D4D4D4D4C4C4C4D4D4D4E4F4F50504F4F4F50515356575A5B5B5B5A59575658585858000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3E3D3D3C3B3A3A393C3C3C3D3D3E3E3E403F3D3B393939393A3B3C3D3E3F3F40404040404040404043434547484A4B4C494949484847474749494A4A4B4B4C4C4D4D4D4C4C4C4C4B4D4D4E4E4F5051514F4F4F4F515456575A5B5B5B5A59575658585757575656565A5A5A5B5B5C5C5D5B5B5B5B5B5B5B5B5D5D5F5F60616262 %62616160605F5F5F61606060606061616262615F5D5C5B5A5C5C5C5C5C5C5C5C5D5B585554535455575756555454535350504F4D4A4644423B3936353333333334343637393B3D3D3E3D3D3C3B3A3A393C3C3C3D3D3E3E3E403F3D3B393939393A3B3C3D3E3F3F40404040404040404043434547484A4B4C4949494848474747 %49494A4A4B4B4C4C4D4D4D4C4C4C4C4B4D4D4E4E4F5051514F4F4F4F515456575A5B5B5B5A59575658585757000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3B3C3C3C3C3A3838393939393B3D3F403C3D3C3C3B3B3A3A3B3B3C3E3F404142424242424141414143444546474848494C4B4B4A4847474646464748494A4B4C4C4C4C4C4C4C4C4C4C4C4D4D4E4D4E4E4D4E4E51535556575A595958585757565758595A5A5958575B5A5A5A59595858585858595A5A5A5B5A5B5D5E5F5F5F5E %5C5C5C5C5C5D5D5D5D5E5E5E5E5E5E5E5F5F5E5D5C5B5A5A5B5B5B5C5D5D5D5E5757575656565656555454535351515251504D4A474442403C3937353232323134353538393B3C3D3B3C3C3C3C3A3838393939393B3D3F403C3D3C3C3B3B3A3A3B3B3C3E3F404142424242424141414143444546474848494C4B4B4A48474746 %46464748494A4B4C4C4C4C4C4C4C4C4C4C4C4D4D4E4D4E4E4D4E4E51535556575A595958585757565758595A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3D3D3D3D3B3A393A39393A3B3D3F3F3C3D3C3C3B3B3A3A3B3B3C3D3E404140424241414141414144444546474849494C4C4B4A4948474746464748494A4B4B4C4C4C4C4C4C4C4C4B4B4C4C4C4C4D4E4D4E4F515355565759595958585757575758595A5A595857595959595858585857585859595A5A5A595A5C5D5E5E5D5D %5A5A5B5B5B5C5C5C5D5D5D5D5D5D5D5D5E5E5D5C5B5A59595A5B5B5C5C5D5D5D57575756565655555454535351515051504F4C494643413F3B3A36353231323134353537383B3C3C3C3D3D3D3D3B3A393A39393A3B3D3F3F3C3D3C3C3B3B3A3A3B3B3C3D3E404140424241414141414144444546474849494C4C4B4A49484747 %46464748494A4B4B4C4C4C4C4C4C4C4C4B4B4C4C4C4C4D4E4D4E4F515355565759595958585757575758595A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3D3D3E3D3C3B3A3A3A393A3B3C3E3E3C3D3C3C3B3B3A3A3A3B3C3D3E3F3F3F41414141414141414545464748494A4A4C4C4B4A494847474545464748494A4A4B4B4B4B4B4B4B4B4A4A4B4B4B4B4C4D4E4F505153545556585858585858585858595A5B5B5A59585757575758585858575757585859595957585A5B5B5B5A5A %585859595A5B5B5B5D5D5D5D5D5D5D5D5D5D5C5B5A5958585A5A5A5B5B5C5C5C575757565555545453535252505050504E4D4B4845413F3E3A3935343231323134343437383A3B3C3C3D3D3E3D3C3B3A3A3A393A3B3C3E3E3C3D3C3C3B3B3A3A3A3B3C3D3E3F3F3F41414141414141414545464748494A4A4C4C4B4A49484747 %4545464748494A4A4B4B4B4B4B4B4B4B4A4A4B4B4B4B4C4D4E4F505153545556585858585858585858595A5B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000FF0000FFFF0000FF00000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3D3E3E3E3D3C3B3B3A3A3A3B3C3E3E3C3D3C3C3B3B3A3A3A3B3B3C3C3D3E3D3F3F4040404141414545464748494A4A4C4C4B4A4948474744444546474849494B4B4B4B4B4B4B4B494A4A4A4A4A4B4C4F4F5051535455555656575858595A5A595A5B5C5C5B5A59565656565757585856565657575858585657585959585757 %56565758595A5A5B5C5C5C5C5C5C5C5C5C5C5B5A595857575959595A5A5B5B5B58575756555453535151514F4F4F4F4E4C4B4946423F3D3C393735343231323133343436373A3B3B3C3D3E3E3E3D3C3B3B3A3A3A3B3C3E3E3C3D3C3C3B3B3A3A3A3B3B3C3C3D3E3D3F3F4040404141414545464748494A4A4C4C4B4A49484747 %44444546474849494B4B4B4B4B4B4B4B494A4A4A4A4A4B4C4F4F5051535455555656575858595A5A595A5B5C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000FF0000FFFF0000FF000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3C3E3F3F3E3D3C3C3B3A3A3A3B3D3D3C3D3C3C3B3B3A3A3A3A3A3B3B3B3C3B3E3E3F3F40414142444545464849494A4B4B4A494847464543434445464748484A4A4A4A4A4A4A4A494A4A4A4A4A4B4C505051525253545454555657595A5B5C5A5B5C5D5D5C5B5A565757575757575755555556565757575556575757565554 %55555657595A5B5B5D5D5D5D5C5C5D5D5C5C5B5A5958575758585859595A5A5A5857575554535252504F4F4E4E4D4D4D4A494744403D3B3A37353433313131333333343637393A3B3C3C3E3F3F3E3D3C3C3B3A3A3A3B3D3D3C3D3C3C3B3B3A3A3A3A3A3B3B3B3C3B3E3E3F3F40414142444545464849494A4B4B4A4948474645 %43434445464748484A4A4A4A4A4A4A4A494A4A4A4A4A4B4C505051525253545454555657595A5B5C5A5B5C5D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF0000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3B3C3E3F3F3F3E3E3D3C3B3A3A3B3C3C3C3D3C3C3B3B3A3A3A3A3A3A3A3A3A3A3D3D3E3F404141424343444546474749494948474645444442424344454647474A4A4A4A4A4A4A4A4A4A4B4B4B4B4C4D505151525253535453545557595B5C5D5B5C5D5E5E5D5C5B595958585756565654545455555656565556565756555453 %54555657595A5C5C5E5E5E5E5D5D5E5E5D5D5C5B5A595858575757585859595958585655535251504E4E4D4D4C4C4B4B484745413E3B393736343432313131333233343537393A3A3B3C3E3F3F3F3E3E3D3C3B3A3A3B3C3C3C3D3C3C3B3B3A3A3A3A3A3A3A3A3A3A3D3D3E3F4041414243434445464747494949484746454444 %42424344454647474A4A4A4A4A4A4A4A4A4A4B4B4B4B4C4D505151525253535453545557595B5C5D5B5C5D5E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3B3C3E3F40403F3F3D3C3B3A3A3B3C3B3C3D3C3C3B3B3A3A3A3A3939393939393C3B3C3E3F41424242424344454647474747464544434242414142434445464649494949494949494B4B4C4C4C4C4D4E515151525253535352535457595C5D5E5C5D5E5F5F5E5D5C5D5C5B595856555453535354545555565656575756555352 %545556585A5B5D5D606060605F5F605F5E5E5D5C5B5A59595656565757585859585856555350504F4D4D4C4C4B4B4A4A474543403D3A37353534333230313233323233353738393A3B3C3E3F40403F3F3D3C3B3A3A3B3C3B3C3D3C3C3B3B3A3A3A3A3939393939393C3B3C3E3F41424242424344454647474747464544434242 %414142434445464649494949494949494B4B4C4C4C4C4D4E515151525253535352535457595C5D5E5C5D5E5F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3B3C3E3F4040403F3E3D3B3A3A3B3B3B3C3D3C3C3B3B3A3A39393939393838383B3C3D3D3F41424241414243444546464646454443424141404142434445464649494949494949494C4C4D4D4D4D4D4F515152525252535351525457595C5E5F5C5D5E5F5F5E5D5C5F5E5C5A5856555452535353545555555656575756545352 %545557585A5C5E5E61616161616061605E5F5E5D5C5B5A5A55565656575858585958565452514F4F4C4C4C4B4B4A4A494644423F3C3935353534323130313233313233353638393A3B3C3E3F4040403F3E3D3B3A3A3B3B3B3C3D3C3C3B3B3A3A39393939393838383B3C3D3D3F41424241414243444546464646454443424141 %404142434445464649494949494949494C4C4D4D4D4D4D4F515152525252535351525457595C5E5F5C5D5E5F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3C3C3D3D3E3E3E3D3D3D3D3D3D3D3C3F40403F3E3D3D3C3C3C3A383635333237373A3B3D3F41413E3F404142434444474542403F4043454443424141424445474747474848484849494B4D4D4F51525453535252515151565758595A5C5D5D60605F5E5D5C5B5B5A5958575654535350505153545556575454545353525252 %5252525456595B5D5D5E5F606161605F5F60605F5D5A585656565758585755555455555452504D4C4D4C4B4A4846454443413E3B39363735343332302E2E2F3035363739393B3A3A3C3C3C3D3D3E3E3E3D3D3D3D3D3D3D3C3F40403F3E3D3D3C3C3C3A383635333237373A3B3D3F41413E3F404142434444474542403F404345 %4443424141424445474747474848484849494B4D4D4F51525453535252515151565758595A5C5D5D60605F5E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000FFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF0000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3C3C3D3D3E3E3E3C3C3C3C3C3C3C3B3E3F3F3E3E3E3D3D3D3C3B39373634343536383A3C3E3F403E3E3F40414243434644423F3F40424443424140414244454747474748484848494A4B4D4D4F50525353535252525251575758595A5C5D5D5F5F5E5D5C5B5A5A595958565554535350505152535556565453535252515151 %5151525355585B5C5D5E5F61616160605F60605F5D5A585756575858585755545354545352504E4C4D4C4B494845444441403C3B38373637343331302E2E2F303536373A3A3B3B3A3C3C3C3D3D3E3E3E3C3C3C3C3C3C3C3B3E3F3F3E3E3E3D3D3D3C3B39373634343536383A3C3E3F403E3E3F40414243434644423F3F404244 %43424140414244454747474748484848494A4B4D4D4F50525353535252525251575758595A5C5D5D5F5F5E5D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000FFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF00000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3C3C3D3D3E3E3E3B3B3B3B3B3B3B3A3C3D3D3E3E3E3E3F3E3D3C3B39373636353537383A3B3C3D3D3D3E3F404142424542413F3E3F4142414140404142424446464747484849494A4A4B4D4D4F505152525353535353535858595A5B5C5C5D5D5D5C5B5A59585858575756555453524F505152535454555252515150504F4F %5050515254575A5B5D5E5F606161605F5E5F5F5F5D5B595757575858575655545152525251504E4D4C4B4A47464544433F3D3B3838383838343331302F3030313536373A3A3B3B3B3C3C3C3D3D3E3E3E3B3B3B3B3B3B3B3A3C3D3D3E3E3E3E3F3E3D3C3B39373636353537383A3B3C3D3D3D3E3F404142424542413F3E3F4142 %414140404142424446464747484849494A4A4B4D4D4F505152525353535353535858595A5B5C5C5D5D5D5C5B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3C3C3D3D3E3E3E3A3A3A3A3A3A3A393A3C3C3D3E3E3F3F3E3E3D3C3A393838333435363738393A3B3B3C3D3E3F404142413F3E3D3E3F403F3F3F4041424343454646474849494A4A4B4C4D4D4E4F51515252535454555559595A5A5B5C5C5D5C5B5A595857565656565554545353524F5050515152535350504F4F4E4E4D4C %4F4F4F505355585A5C5D5E6060605F5F5E5F5F5E5D5B595858585858575654534F50515151504E4E4B4A4847464443423B3A39383737383833323130303030323637383A3B3C3C3B3C3C3C3D3D3E3E3E3A3A3A3A3A3A3A393A3C3C3D3E3E3F3F3E3E3D3C3A393838333435363738393A3B3B3C3D3E3F404142413F3E3D3E3F40 %3F3F3F4041424343454646474849494A4A4B4C4D4D4E4F51515252535454555559595A5A5B5C5C5D5C5B5A59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000FFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF0000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3C3C3D3D3E3E3E3A3A3A3A3A3A3A393A3B3C3C3D3E3E3F3E3E3D3C3B3A3A393333333335363636393A3B3C3D3E3F3F403F3E3D3D3D3D3C3B3D3E3F404142424445464748494A4B4B4C4C4D4D4E4E5050515253555657575A5A5B5B5B5C5C5C5A5A59585756555554545353535252524F4F4F50505051514E4E4D4D4C4C4B4B %4D4D4E4F515456585A5B5D5E5F5E5E5D5E5E5E5E5D5C5A5958595958575553524E4F4F50504F4D4C4A494846454342413B3A39363636373732313030303132333637383B3B3C3C3C3C3C3C3D3D3E3E3E3A3A3A3A3A3A3A393A3B3C3C3D3E3E3F3E3E3D3C3B3A3A393333333335363636393A3B3C3D3E3F3F403F3E3D3D3D3D3C %3B3D3E3F404142424445464748494A4B4B4C4C4D4D4E4E5050515253555657575A5A5B5B5B5C5C5C5A5A5958000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3C3C3D3D3E3E3E3B3B3B3B3B3B3B3A3A3C3C3C3C3D3D3D3D3D3C3C3B3A3A3A32333233343534353838393A3B3C3D3D3E3D3D3C3C3B3A3A383A3D3F4041414143444547484A4B4B4C4C4D4D4D4D4E4F4F5051535557595A5C5C5C5C5C5C5C5C5A5A59585756555552525252525252524F4F4F4F4F4F4F4F4C4C4B4B4A4A4949 %4B4B4C4D4F52555758595A5C5C5C5B5B5D5D5E5E5D5C5B5A59595959575553514E4F4F4F4E4D4B4A49474745444241403B393736353535353131302F303133343738393C3C3D3D3C3C3C3C3D3D3E3E3E3B3B3B3B3B3B3B3A3A3C3C3C3C3D3D3D3D3D3C3C3B3A3A3A32333233343534353838393A3B3C3D3D3E3D3D3C3C3B3A3A %383A3D3F4041414143444547484A4B4B4C4C4D4D4D4D4E4F4F5051535557595A5C5C5C5C5C5C5C5C5A5A5958000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF0000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3C3C3D3D3E3E3E3C3C3C3C3C3C3C3B3C3D3C3C3C3B3B3B3C3B3B3B3A3A3A3A3233333434353535363638393A3B3C3C3C3C3C3C3B3A3A3937393C3E4041414142444547484A4B4C4D4D4D4D4D4D4D4E4E4F515356585A5B5D5D5C5C5C5C5C5C5A5A59585756555551515151515152524F4F4E4E4E4E4E4E4A4A4A4949484847 %4A4A4B4C4E515455565758595A5A59595C5D5E5E5E5D5B5A5A5A5A59575452514F4F4F4F4D4B4948484746444341403F3C3A37363433323130302F2F303133343738393C3C3D3D3D3C3C3C3D3D3E3E3E3C3C3C3C3C3C3C3B3C3D3C3C3C3B3B3B3C3B3B3B3A3A3A3A3233333434353535363638393A3B3C3C3C3C3C3C3B3A3A39 %37393C3E4041414142444547484A4B4C4D4D4D4D4D4D4D4E4E4F515356585A5B5D5D5C5C5C5C5C5C5A5A5958000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000FFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF00000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3B3C3C3D3E3E3E3D3D3D3D3D3D3D3D3E3D3D3C3B3A3A3A3B3B3A3939393939333434343335353536353738393A3B3C3B3B3B3B3B3A393735383B3E3F41414043424447484A4C4C4D4D4D4C4D4E4E4E4E4F515356595B5C5D5D5D5D5C5C5C5C5B5A5A595756565550505051515151514E4E4E4E4E4D4D4D4949494848474747 %4A494A4B4E50535554555758595858575C5C5D5E5E5D5B5B5A5A5A595754525050504F4E4D4A4846474746444241403F3C3B38363332313130302F2F3032333337373A3C3C3D3D3D3C3B3C3C3D3E3E3E3D3D3D3D3D3D3D3D3E3D3D3C3B3A3A3A3B3B3A3939393939333434343335353536353738393A3B3C3B3B3B3B3B3A3937 %35383B3E3F41414043424447484A4C4C4D4D4D4C4D4E4E4E4E4F515356595B5C5D5D5D5D5C5C5C5C5B5A5A59000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000FFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3C3C3D3D3E3E3E3D3C3C3C3C3D3E3F3F3F3E3E3D3C3C3B3C3B3B3A38373736353532323232353535353638393A3B3B3D3C3C3C3A3A3A3A3838393B3C3D3E3F3F414447484848484A4B4D4D4F4F4F4E505152545658595A5D5C5B5A59595A5B575756565656565651515151515050504F4E50504F4C4A484747454443454646 %4A4A4C4D4F51535353545557585857575858595A5A5958585757575656555555504F4D4B494746454343444342403E3D383735333232323330302F2F303234343A393A3B3A3938383C3C3C3D3D3E3E3E3D3C3C3C3C3D3E3F3F3F3E3E3D3C3C3B3C3B3B3A38373736353532323232353535353638393A3B3B3D3C3C3C3A3A3A3A %3838393B3C3D3E3F3F414447484848484A4B4D4D4F4F4F4E505152545658595A5D5C5B5A59595A5B57575656000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF00 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3B3B3C3C3D3D3E3E3C3B3C3B3C3D3E3F40403F3E3D3C3C3B3B3B3B3938383737353532323232353535353637393A3B3B3C3C3A3A3A3A383838393A3B3C3D3E3F3E404346474847474A4B4D4D4F4F4F4F515153545658595A5D5C5B5959595A5A575756565655555552525251515150504F4F4F4E4E4B49474746454443444444 %4647484A4C4D4F4F5253545657575756575758595958575757565655555454544F4F4D4B494745444242444342403E3D39383533333333333130303030323333393B3C3C3C3A3A393B3B3C3C3D3D3E3E3C3B3C3B3C3D3E3F40403F3E3D3C3C3B3B3B3B3938383737353532323232353535353637393A3B3B3C3C3A3A3A3A3838 %38393A3B3C3D3E3F3E404346474847474A4B4D4D4F4F4F4F515153545658595A5D5C5B5959595A5A57575656000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000FFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF000000000000FFFFFFFFFFFFFF %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3A3B3B3B3C3C3D3C3C3C3B3B3B3D3E3F4141403F3E3D3C3B3B3B3B3938373737353532323232353535353637393A3B3B3B3B39393939373739393A3B3C3D3E3E3D3F414345464546494A4C4D4F504F4F525253555758595A5C5B5A5958585959575756565554535353535352525151504F4F4E4D4C4A48474645434242424243 %4243444647494A4A4F50525455565555555556575756555555555454535352524F4E4C4A484643434242434342403E3D3A3835343433343432313030313233333A3B3C3D3D3D3C3B3A3B3B3B3C3C3D3C3C3C3B3B3B3D3E3F4141403F3E3D3C3B3B3B3B3938373737353532323232353535353637393A3B3B3B3B393939393737 %39393A3B3C3D3E3E3D3F414345464546494A4C4D4F504F4F525253555758595A5C5B5A595858595957575656000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFF0000000000000000FFFFFFFFFF %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3A3A3B3B3C3B3C3C3C3B3B3B3C3D3F40434342403F3D3C3C3C3A3A3937363636353532323232353535353637393A3B3B3A3A3938383837363939393A3B3C3C3C3C3D3F4142444445484A4C4D5050505053535456575859595B5A59585757585857575655545453525555545352525151504F4D4C4A484745454442403F3F4040 %40414242434646474C4D4F5153535353525354555554535253535252515150504E4D4B49474542424141424241403E3D3B3936353534353533323131313233333B3B3D3E3E3E3D3C3A3A3B3B3C3B3C3C3C3B3B3B3C3D3F40434342403F3D3C3C3C3A3A3937363636353532323232353535353637393A3B3B3A3A393838383736 %3939393A3B3C3C3C3C3D3F4142444445484A4C4D5050505053535456575859595B5A59585757585857575655000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000FFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000FFFF00000000000000FFFFFFFF %FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3B3B3B3C3C3D3D3D3C3C3B3C3D3F414245444341403E3D3C3B3A3A3937363534353532323232353535353637393A3B3B3A3A39383838373638383739393A3A3A3B3C3C3E3F41434348494B4D5051515154555556575859595A5958565656575757575656555554545757565553525151504F4D4B484645434342403E3D3D3D3C %404041424344444546484B4D4F5050504F5051525251504F515150504F4F4E4E4C4C4A48454341403F40414141403E3D3C3A3836363536363534323231323333393B3C3E3E3E3E3D3B3B3B3C3C3D3D3D3C3C3B3C3D3F414245444341403E3D3C3B3A3A3937363534353532323232353535353637393A3B3B3A3A393838383736 %38383739393A3A3A3B3C3C3E3F41434348494B4D5051515154555556575859595A5958565656575757575656000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000FFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000FF000000FF00000000000000FFFFFF %FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3B3C3C3E3E3E3F3D3D3D3D3F41434547464543403F3D3C3A3A383837353434353532323232353535353637393A3B3B3B3B3A3A3939373737373636373737373A3A3A3B3D3F414147484B4E4F5152525656565758585959595857555555565656565757575757575958575654535251514F4C494645444342413F3B3B3A3A3A %3E3E3F3F40404141424246494B4C4D4D4D4D4F4E4F4E4E4C4F4E4E4D4D4C4C4C4B4B4947444240403E3F404140403F3E3D3B393737363737363533323232333238393B3D3E3E3E3D3C3B3C3C3E3E3E3F3D3D3D3D3F41434547464543403F3D3C3A3A383837353434353532323232353535353637393A3B3B3B3B3A3A39393737 %37373636373737373A3A3A3B3D3F414147484B4E4F5152525656565758585959595857555555565656565757000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000FFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000FF00000000FF0000FFFF0000000000000000FFFF %FFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3D3E3E3E3F4040403E3E3E3F4143464748464644413F3D3C3A3A383837363434353532323232353535353637393A3B3B3B3B3B3B3A3A38383535343434343434383838393A3D404046484B4E4F5152525757575758585859585756555454555656565758595A5A5B5A5A585755535251504F4C484543434341403D3A39373837 %3A3A3B3B3B3C3C3C3D3F4245474949494B4C4D4D4D4D4C4B4D4D4D4C4C4B4B4A4B4A4745434140403D3E3F4040403F3E3D3C39383737383837363433323233333638393B3D3D3D3D3D3E3E3E3F4040403E3E3E3F4143464748464644413F3D3C3A3A383837363434353532323232353535353637393A3B3B3B3B3B3B3A3A3838 %3535343434343434383838393A3D404046484B4E4F5152525757575758585859585756555454555656565758000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00FFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000FF00000000FF0000FFFFFFFFFF000000000000FFFF %FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3E3F3F3F404041413F3F3F404245474949474644423F3D3C3A39393737363533353532323232353535353637393A3B3A3D3C3B3C3A3B3A39343432323333323237383738393C3F4145484A4E5051525357575858585858585857555454545555555657585A5C5D5D5B5A595755535251504F4B4744434142413F3C3A37373737 %37373737383838383B3D3F43454747474A4B4C4C4C4C4B4A4C4C4C4B4B4A4A4A4A4947454342403F3D3D3F4040403F3E3E3D3A383838383837363533323233333437393B3C3C3D3C3E3F3F3F404041413F3F3F404245474949474644423F3D3C3A39393737363533353532323232353535353637393A3B3A3D3C3B3C3A3B3A39 %343432323333323237383738393C3F4145484A4E505152535757585858585858585755545454555555565758000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %FFFFFFFFFF000000000000FF0000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000FF000000FFFFFFFFFFFFFF0000FF000000000000FF %FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3F3F3F3F3F3F3F3F4141414244484B4D4E4D4B4945413E3B38383736343433323434333333333434363737383B3C3C3C3D3D3C3C393836353131313131313131333436393C3E404146484B4E5051515256575758585755545555555555555555575758595A5B5C5C5C5C5C5C5A5855544D4D4B49464340403F3C393634343637 %353433323233343437383A3D3F4244454949494948484848484848494949494A464443413F3F3F3F3D3D3C3C3B3B3A3A3B3B3A393A3939383736343332333334323337393B3C3C3B3F3F3F3F3F3F3F3F4141414244484B4D4E4D4B4945413E3B38383736343433323434333333333434363737383B3C3C3C3D3D3C3C39383635 %3131313131313131333436393C3E404146484B4E5051515256575758585755545555555555555555575758590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF %FFFFFFFF000000000000FF00000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000FFFF0000FF0000FFFFFFFF0000000000000000000000 %FFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3F3F4041424243434242424446494C4E4D4C4A4745413D3B39393837353434333334333333333434363737383B3C3C3C3D3D3D3B3A3736353131313131313131333436393C3E404145484B4D5051505156565758585756555555555555555555565758595A5B5C5C5C5C5C5B5A5755544D4D4B49464241403E3C383532343537 %34333231313233343537393B3E41434448484848484747474848484949494949454342413F3F3F3F3D3D3C3C3B3B3A3A3B3B393939393938383735333232333332333436383837373F3F4041424243434242424446494C4E4D4C4A4745413D3B39393837353434333334333333333434363737383B3C3C3C3D3D3D3B3A373635 %3131313131313131333436393C3E404145484B4D50515051565657585857565555555555555555555657585900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF %FFFFFFFF000000000000FF0000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000FF000000FFFFFFFF000000000000000000000000 %00FFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %404142434546474844454546494B4E4F4C4B4A4843413D3B3A393937353434343435343434343535363737383B3C3C3C3D3D3D3B3A3736353232323232323231343536393C3F414245484A4D4F5051515556575858575655555555555555555556565758595A5B5C5C5C5C5B595755534E4D4B48454241403D3A373431323334 %32323130303132323435373A3C3F414246464646464646464848484848484848454442403F3F3F3F3D3D3C3C3B3B3A3A3B3A39393938383839373533323132323031333435353434404142434546474844454546494B4E4F4C4B4A4843413D3B3A393937353434343435343434343535363737383B3C3C3C3D3D3D3B3A373635 %3232323232323231343536393C3F414245484A4D4F505151555657585857565555555555555555555656575800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF %FFFFFF0000000000FFFFFFFF0000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000FF0000FFFFFFFF00000000000000000000000000 %0000FFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %45464647484949494747484A4B4D4F504A4A494743403E3C3B3A3A38373535353435343434343535363737383B3C3C3C3D3C3D3C3A3736343232323232323231343536393D3F414245464A4C4F5050515455575858585756555555555555555556565758595A5B5B5B5B5B5A595654534D4C4A484541403F3B3A363332313131 %30302F2E2E2E3030313233373A3B3E3F434344444445454548484747474646464342413F3F3F3F403D3D3C3C3B3B3A3A3A3A39383938383739383633323131312F3032353737383845464647484949494747484A4B4D4F504A4A494743403E3C3B3A3A38373535353435343434343535363737383B3C3C3C3D3C3D3C3A373634 %3232323232323231343536393D3F414245464A4C4F5050515455575858585756555555555555555556565758000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFF %FFFF0000000000FF00FFFFFFFF000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000FFFFFFFFFF0000000000000000000000000000 %000000FFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4C4C4B4B4A49494848494B4C4E4F50504A4A494844413F3D3C3B3B3A393736363536353535353636363737383B3C3C3C3C3C3D3C3A3736343333333333333333343538393D4042434545494C4E4F504F535456575858585755555555555555555555565758595A5A5B5B5B5A585654524D4C4A474441403F3B39373332302F2E %2E2C2C2C2C2C2D2D2F303233373A3C3D404041424243434447464645444443434241403F3E3F3F403D3D3C3C3B3B3A3A3A3938373837373738373533323232322F32363A3E4042424C4C4B4B4A49494848494B4C4E4F50504A4A494844413F3D3C3B3B3A393736363536353535353636363737383B3C3C3C3C3C3D3C3A373634 %3333333333333333343538393D4042434545494C4E4F504F53545657585858575555555555555555555556570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF %FF000000000000000000FFFFFFFF000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000FFFF000000000000000000000000000000 %000000FFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %504F4E4D4B4A4948494A4C4E4F504F4F4B4B4A494643413F3D3C3C3B3A3837373536353535353636363737383B3C3C3C3C3D3C3C3A37363433333333333333333435383B3E4042434446494B4E4F4F4E535456575859585855555555555555555455565758595A5A5A5A5A59585553524C4B494744413F3E3B3A383533302F2D %2B2B2A2A2A2A2B2C2B2D2F32343739393D3E3E3F40414242454443424140403F41403F3E3E3F40403D3D3C3C3B3B3A3A3939383737373736363534333233343433363A4044484A4B504F4E4D4B4A4948494A4C4E4F504F4F4B4B4A494643413F3D3C3C3B3A3837373536353535353636363737383B3C3C3C3C3D3C3C3A373634 %33333333333333333435383B3E4042434446494B4E4F4F4E535456575859585855555555555555555455565700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF %0000000000000000000000FFFFFFFF00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000FF00000000000000000000000000000000 %00000000FFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4F4F4E4D4C4C4B4B494B4D4F50504F4E4C4C4B4A484443413E3D3C3B3A3938373637363636363737363737383B3C3C3C3C3D3C3C3A37363434343434343434343536393B3E4143444446484B4D4E4F4E52535557585959585555555555555555545455565758595A5A5A5A59575553514C4B494643413F3E3C3A383734312E2D %2B2A292828292A2B292B2D30333537383B3C3C3E3F404141424241403F3D3D3C403F3E3D3E3F40413D3D3C3C3B3B393939383737373736363433333233343637383B3F44484B4D4E4F4F4E4D4C4C4B4B494B4D4F50504F4E4C4C4B4A484443413E3D3C3B3A3938373637363636363737363737383B3C3C3C3C3D3C3C3A373634 %34343434343434343536393B3E4143444446484B4D4E4F4E5253555758595958555555555555555554545556000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF00 %000000000000000000000000FFFFFFFF0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000FF000000000000000000000000000000 %0000000000FFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4D4D4D4D4D4D4D4D494B4D4F504F4E4D4C4C4C4B494744433E3E3D3C3A3A39393737373737373737363737383B3C3C3C3D3C3D3C3A37363533343434343434343537383A3E4143444444484B4D4E4F4E525355575959595955555555555555555454555657585959595A5A59575553514C4B494643413F3E3C3C3A3835302F2D %2928272627282829292A2C2F313436373A3A3B3D3E3F40414141403E3D3C3B3A3F3F3E3D3D3F40413D3D3C3C3B3B3A3A393838363736353632323232333537383C3E4145494C4D4E4D4D4D4D4D4D4D4D494B4D4F504F4E4D4C4C4C4B494744433E3E3D3C3A3A39393737373737373737363737383B3C3C3C3D3C3D3C3A373635 %33343434343434343537383A3E4143444444484B4D4E4F4E5253555759595959555555555555555554545556000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF00 %00000000000000000000000000FFFFFFFF00FF000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 %000000000000FFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %50504F4E4D4C4B4B4B4C4C4D4E4E4F4F4F4E4C4A4846444342413F3D3B393A393738383736363636353636383B3D3E3F3D3E3E3E3D393735353636363636363638393A3C3E4042434343474A4C4D4D4D51525557595959595A5A595756545353565656565757575758585755545352514E4C4A464341403F3A3A3835312F2D2C %2A292625232323242527282C2F32343537383A3C3D3D3D3C3C3C3D3D3C3A39383A3A3B3C3D3E3F403E3F3F3F3E3C3A393C3C3A3937363534333231303234383A3E40434445484D5150504F4E4D4C4B4B4B4C4C4D4E4E4F4F4F4E4C4A4846444342413F3D3B393A393738383736363636353636383B3D3E3F3D3E3E3E3D393735 %353636363636363638393A3C3E4042434343474A4C4D4D4D51525557595959595A5A595756545353565656560000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF0000 %0000000000000000000000000000FFFFFFFF000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000 %00000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %50504F4E4D4C4B4A4B4B4C4C4D4E4F4F4F4E4C4A4846444341413F3D3B3A3A393838383737353636363737393A3C3D3E3D3D3D3D3C393736353535353535353638393B3D3F4142434345484A4C4D4D4D51525457585959595A59585756555453565656565656575758575655545352514D4C494643403F3E39383633302E2C29 %2A292624232324242425272B2E3032333637393B3C3C3C3B3B3C3C3C3B3A3937393A3B3C3D3E3F3F3F3F3F3F3E3C3A393B3A3A3836353333323130303235393B3E41434345484C5050504F4E4D4C4B4A4B4B4C4C4D4E4F4F4F4E4C4A4846444341413F3D3B3A3A393838383737353636363737393A3C3D3E3D3D3D3D3C393736 %353535353535353638393B3D3F4142434345484A4C4D4D4D51525457585959595A59585756555453565656560000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000 %000000000000000000000000000000FFFF000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000 %00000000000000FFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %504F4E4D4C4B4A4A494A4A4B4D4E4F4F4F4E4C4A4846444341413F3D3B3A3A3938383837373536363838383A393B3C3C3D3C3C3C3B3A38373636363636363637393A3B3D404243444447494B4D4D4D4C50525456585959595959585756555454565656565656565657565655545352524C4B4946423F3D3B363533302E2B2927 %2927252322232324222325282B2E3031343537393A3A3A39393A3B3B3A39383739393A3B3C3D3E3E3F3F403F3E3D3B3A3A39383635333230302F2F303236393C3F41444445474C50504F4E4D4C4B4A4A494A4A4B4D4E4F4F4F4E4C4A4846444341413F3D3B3A3A3938383837373536363838383A393B3C3C3D3C3C3C3B3A3837 %3636363636363637393A3B3D404243444447494B4D4D4D4C505254565859595959595857565554545656565600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF000000 %000000000000000000000000000000FF000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 %0000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4F4F4E4D4C4B4A4A4748494A4C4D4E4F4F4E4C4A4846444341413F3D3B3A3A3938383837373536363939393A393A3B3B3D3C3C3B3B3A393837373737373737383A3B3C3E4143444447484A4C4D4E4E4C50515356575858585858585756555555565656555555545455545453535251514B4A4845413D3A383231302D2B292726 %272624222222222322212326282B2D2E313234363737373737383939383837363837393A3B3C3D3D3F3F3F3F3E3C3938373636343331302E2E2D2D2F32363A3D4042444445474B4F4F4F4E4D4C4B4A4A4748494A4C4D4E4F4F4E4C4A4846444341413F3D3B3A3A3938383837373536363939393A393A3B3B3D3C3C3B3B3A3938 %37373737373737383A3B3C3E4143444447484A4C4D4E4E4C505153565758585858585857565555555656565500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF00000000 %000000000000000000FF00000000FF000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000 %0000000000000000FFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4E4E4D4C4B4A4949454647494B4D4E4F4F4E4C4A4846444341413F3D3B3A3A3938383837373536363939393A393A3B3B3D3C3C3B3B3B3B3B39393939393939393B3C3D3F42444545494A4C4D4E4E4E4D4F5153555758585857575757565656565756565554545353525151515050505049494744403C37342F2E2D2A29272625 %26252421212121212121222526292A2A2E303233343534343435363738373635363638393A3B3C3C3E3E3E3E3C3B383836353432312E2E2D2B2C2C2E31363B3E4043454445464A4E4E4E4D4C4B4A4949454647494B4D4E4F4F4E4C4A4846444341413F3D3B3A3A3938383837373536363939393A393A3B3B3D3C3C3B3B3B3B3B %39393939393939393B3C3D3F42444545494A4C4D4E4E4E4D4F51535557585858575757575656565657565655000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF00000000 %00000000000000000000FFFFFFFF000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000 %000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4E4E4D4C4B4A4948444446484A4C4D4E4F4E4C4A4846444341413F3D3B3A3A3938383837373536363838383A393B3C3C3D3C3B3A3A3B3C3C3A3A3A3A3A3A3A3A3C3D3E40434545464B4C4D4F4F4F4E4D4F50525556575757575757575656565657565655545352524E4E4E4E4E4E4E4E484746443F3A35322D2C2A2A28252524 %2524222020201F1F21212223262729292C2D2F3132323131313335363535353436363638393A3B3B3C3C3D3C3B383835333232302F2D2C2B2A2A2A2D31373C3F4143454444464A4D4E4E4D4C4B4A4948444446484A4C4D4E4F4E4C4A4846444341413F3D3B3A3A3938383837373536363838383A393B3C3C3D3C3B3A3A3B3C3C %3A3A3A3A3A3A3A3A3C3D3E40434545464B4C4D4F4F4F4E4D4F50525556575757575757575656565657565655000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000 %000000000000000000000000FF000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000 %000000000000000000FFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4E4D4C4B4A49484842434547494C4D4E4F4E4C4A4846444341413F3D3B3A3A393838383737353636363737393A3C3D3E3D3C3B3A3A3B3D3E3B3B3B3B3B3B3B3B3D3E3F41434546474C4D4E4F504F4E4E4E50525456575757565656565757575757575654535251514B4B4B4B4B4B4C4C464646433F39322F2C2C2A2927262424 %252322201F1E1F1F2122222326262829292B2D2F3030303030313233353534343435363638393A3A3A3A3B3A3838363432312F2F2D2B2A2A2728292C31373D40424445444445494D4E4D4C4B4A49484842434547494C4D4E4F4E4C4A4846444341413F3D3B3A3A393838383737353636363737393A3C3D3E3D3C3B3A3A3B3D3E %3B3B3B3B3B3B3B3B3D3E3F41434546474C4D4E4F504F4E4E4E505254565757575656565657575757575756540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF0000000000 %000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000 %00000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4D4D4C4B4A49484841424446494B4D4E4F4E4C4A4846444341413F3D3B3A3A393838383737353636353636393A3D3E3F3D3C3A393A3B3D3E3B3B3B3B3B3B3B3B3D3E4042444646484D4E4F5050504E4E4E50525456575756565656565757575757575654535251504949494A4A4A4A4A464645433E38322E2C2A2A2828252425 %242322201E1E1F1F222223242527282929292B2E2F2F2F2F2F303234353534333334353737393A3A39393A383835343331302F2E2C2A29282727292B31373D40424446444445494C4D4D4C4B4A49484841424446494B4D4E4F4E4C4A4846444341413F3D3B3A3A393838383737353636353636393A3D3E3F3D3C3A393A3B3D3E %3B3B3B3B3B3B3B3B3D3E4042444646484D4E4F5050504E4E4E505254565757565656565657575757575756540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000 %0000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 %00000000000000000000FFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4C4C4B4B4A4A494943444547484A4B4C4A4A4A4A4846434240403F3D3B3938373737383938363635363637393A3C3E3E3F3D3C3A3A3B3C3D3E3E3E3E3D3D3D3D42424344454547474C4D4E5051525455515252525253535356565656565656565757565553514E4D48494A4A4A4948474443403C3833312F2C2B282524222323 %1F1F1F1F1E1F1E1E1D1F212325292B2C2D2D2D2D2D2F2F2F3232323232323232323232353637383936363434333131312D2C292827272728272929282B313A404745434143464A4C4C4C4B4B4A4A494943444547484A4B4C4A4A4A4A4846434240403F3D3B3938373737383938363635363637393A3C3E3E3F3D3C3A3A3B3C3D %3E3E3E3E3D3D3D3D42424344454547474C4D4E5051525455515252525253535356565656565656565757565500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF000000000000 %0000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 %0000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4C4C4B4B4A4A494943444547484A4B4C4A4A4A4A4846434240403F3D3B3A38373738393939373635363637393A3C3E3E3F3E3C3B3B3C3D3E3E3E3F3F3F3F3F4042424344444547484C4D4E4F50525454535353535353535356565656565656565555555452504D4C4849494A4948474643423F3B3733302F2B2B272623212222 %1E1E1E1D1D1D1D1C1E1E212225292A2C2D2D2D2E2D2E2F2F3232323232323232323233333437373836343533313131302D2A2A2726262726272828272A3039404745434244474A4C4C4C4B4B4A4A494943444547484A4B4C4A4A4A4A4846434240403F3D3B3A38373738393939373635363637393A3C3E3E3F3E3C3B3B3C3D3E %3E3E3F3F3F3F3F4042424344444547484C4D4E4F50525454535353535353535356565656565656565555555400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000 %00000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 %0000000000000000000000FFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4C4C4B4B4A4A494943434547484A4B4C4A4A4A4A4846434240403F3E3C3B3A3839393A3A39373736363637393A3C3E3E3F3F3E3D3D3E3F403F3F40414242434342434445454648484C4C4D4E515253545454545454545454555555555555555553535352514E4C4B484849494947464541403D3A3532302E2C2A282422212121 %1E1D1D1B1B1A19181D1D20222528292B2D2D2D2E2D2E2E2F323232323232323231323334343636373534333131302F2F2A2A27272525262626262726292F39404645444345474A4C4C4C4B4B4A4A494943434547484A4B4C4A4A4A4A4846434240403F3E3C3B3A3839393A3A39373736363637393A3C3E3E3F3F3E3D3D3E3F40 %3F3F40414242434342434445454648484C4C4D4E515253545454545454545454555555555555555553535352000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF00000000000000 %000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000 %000000000000000000000000FFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4C4C4B4B4A4A494943434547484A4B4C4A4A4A4A484643424041403F3D3C3B3A3A3B3B3B3A383736363637393A3C3E3E4040404040414142404142434445464743434445454748484B4C4C4D5052535356565555555454545454545454545454505051504F4D4B4A48484848474644433F3D3B3735312F2D2C29262421201E1E %1C1C1B1A191818171C1E1F2224272A2A2D2D2D2E2D2E2E2E3131313131313131313232333333353533323131302F2E2E2A2927252424242423242525282E383F4646454446484A4C4C4C4B4B4A4A494943434547484A4B4C4A4A4A4A484643424041403F3D3C3B3A3A3B3B3B3A383736363637393A3C3E3E4040404040414142 %404142434445464743434445454748484B4C4C4D5052535356565555555454545454545454545454505051500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF0000000000000000 %0000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000 %00000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4C4C4B4B4A4A494943444447484A4B4C4A4A4A4A48464342404140403F3E3D3C3C3D3D3D3B383736363637393A3C3E3E4041424343444444424243444647484944444445474849494B4B4B4D50515253575656555454535353535353535353534E4F4F4F4E4C4B4A47484847464442413D3B393533302E2D2C292622201D1D1D %1A1A1A19181817171B1D1E22242629292D2D2D2E2E2F2F2F313131313131313131313132323232323131302F2E2D2C2C272725222221212321212224262D373E4646464547494B4B4C4C4B4B4A4A494943444447484A4B4C4A4A4A4A48464342404140403F3E3D3C3C3D3D3D3B383736363637393A3C3E3E4041424343444444 %424243444647484944444445474849494B4B4B4D50515253575656555454535353535353535353534E4F4F4F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000 %00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 %00000000000000000000000000FFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4C4C4B4B4A4A494943444447484A4B4C4A4A4A4A4846434241414140403F3F3E3E3E3E3E3C393836363637393A3C3E3E41424445464746464444454546474848444444454748494A4A4B4B4D4F515252575656555453525152525252525252524D4E4E4E4E4D4B4A474747474543413F3A393635312F2D2C2B2925221F1C1C1B %18181818181819191B1D1F21242628292D2D2D2E2E2F2F2F3030303030303030313131313131313130302F2E2D2C2B2A27262321212121211E1F2122252C363D46464747494A4B4B4C4C4B4B4A4A494943444447484A4B4C4A4A4A4A4846434241414140403F3F3E3E3E3E3E3C393836363637393A3C3E3E4142444546474646 %4444454546474848444444454748494A4A4B4B4D4F515252575656555453525152525252525252524D4E4E4E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000 %00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000 %0000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4C4C4B4B4A4A494943444447484A4B4C4A4A4A4A48464342414241414140403F40403F3F3D393836363637393A3C3E3E414345474949484845464646464646474445454648494A4A4A4A4A4D4F505152565655545251505051515151515151514D4D4E4F4E4D4C4B4747474644423F3E38373533312E2C2B2B2925221E1C191A %1616171818191A1A1A1C1E21242527282D2D2D2E2E2F2F2F303030303030303031313030303030302F2E2E2D2B2A2A2826242221201F20201D1D1F21242C353D464647484A4A4B4B4C4C4B4B4A4A494943444447484A4B4C4A4A4A4A48464342414241414140403F40403F3F3D393836363637393A3C3E3E4143454749494848 %45464646464646474445454648494A4A4A4A4A4D4F505152565655545251505051515151515151514D4D4E4F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000 %000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000 %0000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4C4C4B4B4A4A484843434547484A4B4C4A4A4A4A4846434242424241414141414040403F3D3A3736353537393B3C3E3E414346484A4A494946464646464545444444464748494A4A494A4B4C4E5051525655545351504F4F51515151515151514D4E4E4F4F4E4C4C4747474544413E3D37373532302E2C2B2B2824211D1B1919 %16151718191B1C1C1A1B1E21242627292D2D2D2E2E2F2F2F3030302F2F2F303030303030302F2F2F2E2E2D2B2B2A2929242422201F1F1F1E1C1D1D20232B353C454648494A4B4B4B4C4C4B4B4A4A484843434547484A4B4C4A4A4A4A4846434242424241414141414040403F3D3A3736353537393B3C3E3E414346484A4A4949 %46464646464545444444464748494A4A494A4B4C4E5051525655545351504F4F51515151515151514D4E4E4F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000 %000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000 %0000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4C4D4D4E4D4C4A4948484849494A4A4B49494A49484745443E3E3F40414142424241403E3C3A3938393A3A3B3C3D3E3F43454849494845434546474848474645484848484848484848494A4B4D4E4F5053535252525151514E4E4E4E4D4D4D4D4A4B4E4F4F4B484746454342413F3E3D3B39383432302E2D282624211D1A1716 %161515141516181A1B1B1E21232628292A2A2B2C2D2E2E2E2E2E2E2F2F3030312F2F2F2F2F2F2F2F2B2C2B292828272723232120201E1E1D1A1B1D1E2128323941454A4C4B4A4A4B4C4D4D4E4D4C4A4948484849494A4A4B49494A49484745443E3E3F40414142424241403E3C3A3938393A3A3B3C3D3E3F4345484949484543 %4546474848474645484848484848484848494A4B4D4E4F5053535252525151514E4E4E4E4D4D4D4D4A4B4E4F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000 %0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000 %000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4C4D4D4E4D4C4A49484849494A4A4A4B494A4A4A494745443F3F3F3F404142424242403F3D3B3A393A3B3C3D3E3F3F4043454849494845434647484949484746484848484848484849494A4B4D4E4F4F52525252525151514F4F4F4E4E4E4D4D494A4C4E4D4A484645444442403F3E3D3A383734322F2D2C282724211D1A1817 %15151414151518191B1C1E21232528292A2A2B2B2C2D2D2E2D2D2E2E2F2F30302F2F2F2F2F2F2F2F2A2A2A292827262623232121201E1E1E191B1C1C2026303741454A4C4B4A4A4C4C4D4D4E4D4C4A49484849494A4A4A4B494A4A4A494745443F3F3F3F404142424242403F3D3B3A393A3B3C3D3E3F3F404345484949484543 %4647484949484746484848484848484849494A4B4D4E4F4F52525252525151514F4F4F4E4E4E4D4D494A4C4E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF00000000000000000000 %0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 %000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4C4D4D4E4D4C4A49484949494A4B4B4B4A4A4A4A4947454440404040414142434242413F3E3C3B3A3C3D3D3E4041414244464849494846444748494A4A4948474848484848484848494A4B4B4D4D4E4F51515151515151515050504F4F4E4D4D47494A4B4A484645454343423F3D3D3D39373633312F2D2C282724211D1B1918 %15151414141617181B1C1E21232528292A29292A2A2B2B2B2B2B2C2C2D2D2E2F2E2E2E2E2E2E2E2E2A2A29282726252523232121201E1E1E181A1A1A1E242E354044494B4B4A4A4C4C4D4D4E4D4C4A49484949494A4B4B4B4A4A4A4A4947454440404040414142434242413F3E3C3B3A3C3D3D3E404141424446484949484644 %4748494A4A4948474848484848484848494A4B4B4D4D4E4F51515151515151515050504F4F4E4D4D47494A4B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000000000000 %00000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 %000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4C4D4D4E4D4C4A494949494A4A4B4B4C4A4B4B4B494846454242414142424343434241403F3E3D3C3E3E3F4041424344464748494948474649494B4B4B4B494949494949494949494A4A4B4C4C4D4E4E5050505151515252515150504F4E4D4D4647484947464544434443413E3D3D3C38373433302E2C2B282624221F1B1A19 %17161514141517161B1C1E21232627292A2A2A2A2A2A2A2A2A2B2B2C2C2D2D2C2D2D2D2D2D2D2D2D292928272625242423232121201E1E1E181919181C222B323D43484B4A4A4B4C4C4D4D4E4D4C4A494949494A4A4B4B4C4A4B4B4B494846454242414142424343434241403F3E3D3C3E3E3F40414243444647484949484746 %49494B4B4B4B494949494949494949494A4A4B4C4C4D4E4E5050505151515252515150504F4E4D4D46474849000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000000000000 %00000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 %00000000000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4C4D4D4E4D4C4A49494A4A4B4B4C4C4C4B4B4B4B4A484645444443434242434343434241403F3F3E3F3F4041424344454747484949484747494A4B4C4C4B4A4949494949494949494B4B4B4C4C4D4D4D4E4F4F50515152525251504F4E4D4C4B4646474745444443444342413F3D3C3C373633322F2D2B2A272523221F1D1B1A %18181616151617181B1C1E212326272928292929292929292929292A2A2B2B2C2C2C2C2C2C2C2C2C292928272625242423232121201E1E1E171819181A20292F3D41474A4A4A4B4C4C4D4D4E4D4C4A49494A4A4B4B4C4C4C4B4B4B4B4A484645444443434242434343434241403F3F3E3F3F4041424344454747484949484747 %494A4B4C4C4B4A4949494949494949494B4B4B4C4C4D4D4D4E4F4F50515152525251504F4E4D4C4B464647470000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF0000000000000000000000 %000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000 %00000000000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4C4D4D4E4D4C4A494A4A4A4B4C4C4C4D4B4C4C4C4B494746464644444343444343434242414140403F404142434444454848484848484848494A4B4C4C4B4A494A4A4A4A4A4A4A4A4C4C4C4C4C4C4C4C4D4E4E4F505152525151504E4C4B4A494746464644454444434342403E3D3C3B363432312E2C2A2927252422201E1B1C %1B1A1917171718191B1C1E2122262829292928282727262726272728282929292B2B2B2B2B2B2B2B2A2A29282726252523232121201E1E1E181919181A20292E3B404649494A4B4D4C4D4D4E4D4C4A494A4A4A4B4C4C4C4D4B4C4C4C4B494746464644444343444343434242414140403F404142434444454848484848484848 %494A4B4C4C4B4A494A4A4A4A4A4A4A4A4C4C4C4C4C4C4C4C4D4E4E4F505152525151504E4C4B4A49474646460000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000 %0000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000 %00000000000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4C4D4D4E4D4C4A494A4B4B4B4C4C4D4D4C4C4C4C4B494746474745454443444443434343424242413F3F404142434445494949484849494948494A4B4B4A49484A4A4A4A4A4A4A4A4C4C4C4C4C4C4C4C4C4D4D4F5051525350504E4D4B4948474747464645454545434241403E3C3B3B363533302D2B292827252423211F1D1D %1E1C1B191818191A1A1C1E2122262829292928282726262526262727282829292A2A2A2A2A2A2A2A2B2A29282726252623232121201E1E1E181919181A20282E3A3F454949494B4D4C4D4D4E4D4C4A494A4B4B4B4C4C4D4D4C4C4C4C4B494746474745454443444443434343424242413F3F4041424344454949494848494949 %48494A4B4B4A49484A4A4A4A4A4A4A4A4C4C4C4C4C4C4C4C4C4D4D4F5051525350504E4D4B494847474746460000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000 %0000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 %00000000000000000000000000000000FFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4C4D4D4E4D4C4A494A4B4B4C4C4D4D4D4C4C4C4C4B494746484846454444444443434343434242423F3F404142434444494949484849494A48494A4A4A4A49484A4A4A4A4A4A4A4A4D4D4C4C4C4C4B4B4C4C4D4E50515253504F4E4C4A48474648484746454545454342413E3E3C3B3A353432302D2A282727252422211F1E1D %1F1E1C1B1A19191B1B1C1E21232528292929282726252525252626272728282829292A292A2A2A2A2B2B2A292827262723232121201E1E1E191A1A181A20282E3A3E454849494B4D4C4D4D4E4D4C4A494A4B4B4C4C4D4D4D4C4C4C4C4B494746484846454444444443434343434242423F3F404142434444494949484849494A %48494A4A4A4A49484A4A4A4A4A4A4A4A4D4D4C4C4C4C4B4B4C4C4D4E50515253504F4E4C4A484746484847460000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000 %0000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 %0000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4F4E4C4B4A4B4B4C4A49464443434445444444444444444443434444454546464345474849494948484848494949494947474849494A4B4B4A4A4A4A4A4A4A4A4B4B4C4D4E4F4F4F504F4E4D4B494847464645454443434242403E3B393737373332312F2D2B2A2923222121201F1E1E %1D1D1D1D1E1E1D1D1D1D1F21232427282A2A2A2A2A2A2A2A2424252525262626252626272829292A2728292929282725262521201E1D1E1E1A1B1A18191F272E343B444A4B4A49494A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4F4E4C4B4A4B4B4C4A49464443434445444444444444444443434444454546464345474849494948 %484848494949494947474849494A4B4B4A4A4A4A4A4A4A4A4B4B4C4D4E4F4F4F504F4E4D4B4948474646454500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000 %00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 %0000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4E4D4C4B4A4A4B4C4A49464443434445444444444444444444444445454646474445464849484847474848484949494947474849494A4B4B4A4A4A4A4A4A4A4A4B4B4C4C4D4E4E4F4F4E4D4C4B4948484646454443424241403E3C38373635353231302E2C2B29282424222220201F1E %1D1D1D1D1D1D1D1E1D1E1F21222527282A2A2A2A2A2A2A2A252525252526262623242526262728282627282929282625262521201E1D1E1E1A1B1A18191E262D333A42484A4949494A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4E4D4C4B4A4A4B4C4A49464443434445444444444444444444444445454646474445464849484847 %474848484949494947474849494A4B4B4A4A4A4A4A4A4A4A4B4B4C4C4D4E4E4F4F4E4D4C4B4948484646454400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000 %00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 %0000000000000000000000000000000000FFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4E4D4C4A4A4A4B4B4A49464443434445444444444444444444454546464747474444464748474746464647474848494948484849494A4A4A4A4A4A4A4A4A4A4A4B4B4B4C4C4D4D4D4D4D4C4B4A49484845454443424140403E3C3A373533323331302F2D2C2A292825242322211F1F1E %1D1C1D1D1D1D1D1D1C1E2022232627282A2A2A2A2A2A2A2A262626262626262622232223232425252526272827262624262521201E1D1E1E191A1918191D242B32384147484848494A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4E4D4C4A4A4A4B4B4A49464443434445444444444444444444454546464747474444464748474746 %464647474848494948484849494A4A4A4A4A4A4A4A4A4A4A4B4B4B4C4C4D4D4D4D4D4C4B4A4948484545444300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000 %00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000 %000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %494949494949494949494949494949494D4C4B4A49494A4B4A494644434344454343434343434343454545464647474743444546464645444445454647484949494949494949494949494949494949494B4B4B4B4B4B4B4B4A4A4A4A494949494545444241403F3E3B3A3835323131312F2E2D2C2B2A2928262525222121211F %1E1E1E1D1D1D1C1C1E1F2022242628292B2B2B2B2B2B2B2B272727262626252521212121212122222324262726262624252521201E1D1E1E18191918191C23282F363F4446474849494949494949494949494949494949494D4C4B4A49494A4B4A49464443434445434343434343434345454546464747474344454646464544 %4445454647484949494949494949494949494949494949494B4B4B4B4B4B4B4B4A4A4A4A4949494945454442000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000 %000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000 %000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %494949494949494949494949494949494D4C4A4949494A4A4A494644434344454242424242424242434344444545464643444545454443424243444546474849494949494949494949494949494949494A4A4A4A4A4A4A4A484848484949494946464443413F3E3D3939363331302F2F2D2C2C2B2A2928282626262423222221 %20201E1F1E1D1D1C1E1F2123252728292B2B2B2B2B2B2B2B2928282726262525201F1F1F2020201F2121242526262524252521201E1D1E1E181A1A18191C22272E343C4244454749494949494949494949494949494949494D4C4A4949494A4A4A49464443434445424242424242424243434444454546464344454545444342 %4243444546474849494949494949494949494949494949494A4A4A4A4A4A4A4A484848484949494946464443000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000 %000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000 %000000000000000000000000000000000000FFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %484848484848484848484848484848484C4B4A494848494A4A4946444343444541414141414141414242424344444445434344444443414040414244454748484A4A4A494948484848484848484848484A4A4A49494848484545464748494A4A48474644413F3E3D39373531302F2E2E2B2B2A2A292928282726272624222322 %23222120201F1E1D1F202122252728292C2C2C2C2C2C2C2C2A29292827262525201F1F1E1F1E1E1E2021232425252525262521201E1D1E1E191B1B1A1A1C21262D323A3E42444749484848484848484848484848484848484C4B4A494848494A4A49464443434445414141414141414142424243444444454343444444434140 %40414244454748484A4A4A494948484848484848484848484A4A4A49494848484545464748494A4A48474644000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000 %000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 %00000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %484848484848484848484848484848484C4B4A48484849494A4946444343444541414141414141414041414242434343434344444342403F3F404143454648484B4B4A494948474748484848484848484A4A4949484747464344454647494A4A4A49474542403E3E39373531302F2E2E2A292929282828282827272625242222 %2525232221201F1F1F202223262828292C2B2B2B2B2B2B2B2A2929272625242420201F1E1E1E1D1D1E1F212325252525262521201E1D1E1E1A1C1D1B1B1D22262C30383C40434649484848484848484848484848484848484C4B4A48484849494A4946444343444541414141414141414041414242434343434344444342403F %3F404143454648484B4B4A494948474748484848484848484A4A4949484747464344454647494A4A4A494745000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000 %0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 %00000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %484848484848484848484848484848484C4B4948484848494A4947454444434441424142414241423F414042414342424243434343413F3E3E3F4042444647484B4B4A494948474748484848484848484A4A4948474646464243444547494A4B4B4A484643413F3E3A373432302F2E2E29292928282828282828282726252323 %27262523212020201E202124252829292C2B2B2B2B2B2B2B2A2A29282625242421211F1F1F1E1D1D1D1F212224252524262522201D1E1E1E1B1D1D1C1C1E21252B2F373C3F424649484848484848484848484848484848484C4B4948484848494A4947454444434441424142414241423F414042414342424243434343413F3E %3E3F4042444647484B4B4A494948474748484848484848484A4A4948474646464243444547494A4B4B4A4846000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000 %0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 %00000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %454545454645464645454647484949494848484847474747484747464645454542434343434343433F4040414243434444444443434242413F4041424445464749494949494949494949494948484848444547484746444341424445464746464A4A4846433F3B383535322F2C2C2B2B2A29292828292B2C2928282727272829 %2A2928252321212021212325282A2C2D2D2D2D2D2C2A28272A2A292828272625222222212120202021212121202020202121201F1E1E1D1D1D1E1E1D1C1D22252D30353A3D404140454545454645464645454647484949494848484847474747484747464645454542434343434343433F404041424343444444444343424241 %3F4041424445464749494949494949494949494948484848444547484746444341424445464746464A4A4846000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000 %0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 %00000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4545454646474646454546464748484948484747474747474848484747464646434343434343434340404141424343444444434342424241404141434445464748484848484848484848484847474746444445454544434341424446474747474948474643403D3B363432302D2C2C2C2A2A292828292A2B2928282727272829 %2A2A28272523222121222426292B2D2D2D2D2D2D2C2A28272A2A2928282726262323232222212120212120201F1F20202020201F1E1E1D1D1D1E1E1D1B1D22262D30353A3D4040404545454646474646454546464748484948484747474747474848484747464646434343434343434340404141424343444444434342424241 %40414143444546474848484848484848484848484747474644444545454443434142444647474747494847460000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000 %0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 %00000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4445454646474747444545464647474747474747474747474949494848474747444444444444444441414242424343434443434342414141414142434445464647474747474747474747464645454444434241414142424342434547484848474646464543413F3D363433302E2D2C2C2B2A292828292A2B2827272727282929 %2A2A292726242322232426282A2C2D2E2D2E2E2E2C2B292829292928282727272424242423232222212120201F1F1F1F1E1F1F1F1E1E1D1D1C1D1E1C1B1D21252C2F34383C3F40404445454646474747444545464647474747474747474747474949494848474747444444444444444441414242424343434443434342414141 %41414243444546464747474747474747474746464545444443424141414242434243454748484847464646450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000 %00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 %00000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4343444546464747454445454545454545454646464747474A4A4A494948484744444444444444444242424343434343434343424241414042424243444445454545454545454545454544434242414141403E3D3E3F41434243454748484848444545454442403F373533312E2D2D2C2C2B29282828292A272727272728292A %2B2A292827262424262628292B2D2E2F2E2E2E2E2D2B292828282828282828282726252525252424222121201F1E1F1E1D1E1E1E1E1E1D1D1C1D1D1C1B1C21252B2E33373B3E3F3F4343444546464747454445454545454545454646464747474A4A4A4949484847444444444444444442424243434343434343434242414140 %42424243444445454545454545454545454544434242414141403E3D3E3F41434243454748484848444545450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000 %00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 %00000000FF0000000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %4041424344454647444443434344444444444545464747484A4A4A494948484744454545454545454444444343434343434242414140404041414242424343434444444444444444434342413F3E3D3D3E3D3C3B3C3E404241434546474847474344444544434140373634312F2D2D2D2D2C2A29282828292626262627282A2B %2B2B2A292726262528292A2B2D2E2E2F2E2F2F2F2E2C2A2928282828282828282928272727272626232221201F1E1E1D1C1D1D1D1D1D1E1E1B1C1D1B1A1C20242A2D32363B3D3E3E4041424344454647444443434344444444444545464747484A4A4A4949484847444545454545454544444443434343434342424141404040 %41414242424343434444444444444444434342413F3E3D3D3E3D3C3B3C3E40424143454647484747434444450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000 %00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 %00000000FFFFFF000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3D3E3F404243454544444442424141414343444546474748494949484847474744454545454545454545444444434343424242414040403F404040404141414142424241424242424241403E3D3B3A3A3B3B3B3C3D3E404140414345464646464444454544424140383733322F2D2D2E2D2C2A29282728282625262627292B2C %2B2B2A2A282827272A2B2C2D2E2F2F2F2F2F2F2F2E2C2A2927272728282929292B2A292929292828232322201F1E1D1D1B1C1C1C1D1D1E1E1B1C1C1B191B2024292C31353A3C3D3D3D3E3F404243454544444442424141414343444546474748494949484847474744454545454545454545444444434343424242414040403F %404040404141414142424241424242424241403E3D3B3A3A3B3B3B3C3D3E40414041434546464646444445450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000 %00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 %00000000FFFFFFFFFF00000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %393B3C3E40424344444443434241414042424344454748484848484747464646454646464646464646464545444343424241414140403F3F3F3F3F3F3F3E3E3E414141414141414140403E3D3B393837393A3C3D3F3F3F3F3F40424445454544454545454442403F38373432302F2E2D2E2D2B29282727282525262627292B2D %2B2B2B2B2A2A2A292C2D2D2E2F3031312F2F30302E2D2B2A2626272828292A2A2D2B2B2A2B2A2A2A242322201F1E1D1C1A1B1B1C1D1D1E1E1A1B1C1A191B1F23282B3035393B3C3C393B3C3E40424344444443434241414042424344454748484848484747464646454646464646464646464545444343424241414140403F3F %3F3F3F3F3F3E3E3E414141414141414140403E3D3B393837393A3C3D3F3F3F3F3F40424445454544454545450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000 %00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 %00000000FF00FFFFFFFFFF000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %39393B3D3F4042424444434241404040414243444547484848474746464545454546464646464646474646454443434242414140403F3F3F3E3E3E3E3D3D3D3D4040404040404040403F3D3C3A38363637393C3F40403F3F3E3F4143444444434646464544413F3E39383432302F2E2E2E2D2B29272727272525252627292C2D %2B2B2B2B2B2A2A2A2D2D2E2F303031312F3030302F2D2B2A2626272828292A2A2D2C2C2B2C2B2B2B242422201F1E1C1C1A1A1B1C1D1D1E1E1A1B1C1A191B1F23272B3035393A3B3B39393B3D3F4042424444434241404040414243444547484848474746464545454546464646464646474646454443434242414140403F3F3F %3E3E3E3E3D3D3D3D4040404040404040403F3D3C3A38363637393C3F40403F3F3E3F414344444443464646450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000 %00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 %00000000000000FF00FFFFFFFF00000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3939393B3B3C3C3D3E3E3E3E3E3E3E3E3E3E40424445474844454546464747474747474746464646454546464443414140403F3F3E3E3D3D3B3B3C3C3D3E3F3F3F3F3F3F3F4040403E3C3A3836343434383838393C3D3E3F3F3F40424445464747464443413F3D3D3A393736353332312E2D2C2B2927262626262728282929FF %FFFFFFFFFFFFFFFFFFFFFFFF2D2E2F2F2F2F2E2D2C2B2B2B292A2A2B2C2D2D2E2D2C2C2B2C2C2C2C25242322201F1F1E1B1B1C1C1C1C1C1D1A1918181A1D2123282D33363636393B3939393B3B3C3C3D3E3E3E3E3E3E3E3E3E3E40424445474844454546464747474747474746464646454546464443414140403F3F3E3E3D3D %3B3B3C3C3D3E3F3F3F3F3F3F3F4040403E3C3A3836343434383838393C3D3E3F3F3F404244454647474644430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000 %00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 %00000000000000FF000000FFFFFFFF0000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %383839393A3B3C3C3D3E3E3E3E3E3E3E3D3E3F41434446464444454546464747484747474747474746464746454342414040403F3F3E3E3D3B3B3C3C3D3E3E3F3D3D3E3E3E3E3E3E3C3B393735363636373737393B3C3D3D3F3F4142444547474746454341403E3E3A383836343332322E2E2D2B2928272626262728282929FF %FFFFFFFFFFFFFFFFFFFFFFFF2D2E2F2F2F2F2E2E2D2C2C2B2A2A2B2C2C2D2E2E2D2C2B2B2C2B2B2B24242322201F1F1F1B1C1C1B1B1B1B1B1A1918181A1D2022282C32363537383A383839393A3B3C3C3D3E3E3E3E3E3E3E3D3E3F41434446464444454546464747484747474747474746464746454342414040403F3F3E3E3D %3B3B3C3C3D3E3E3F3D3D3E3E3E3E3E3E3C3B393735363636373737393B3C3D3D3F3F414244454747474645430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000 %00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 %00000000000000FF000000FFFFFF000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %383839393A393A3B3C3C3C3C3C3C3C3C3C3D3E3F414244444343444445454646494949494949494948484948474644424140403F3F3E3E3E3B3B3C3C3D3D3D3D3B3B3B3B3B3B3B3B38383735363536373537373839393B3B3F3F4142444546474746454442413E3F3A3A3937343433322F2E2D2C2A29272726262728282929FF %FFFFFFFFFFFFFFFFFFFFFFFF2D2E2F2F2F2F2F2E2E2D2D2D2C2C2C2D2D2E2E2E2D2B2B2A2B2A2A2A242322222020201F1C1D1C1B1A19191819181717191C1F21262C323535353638383839393A393A3B3C3C3C3C3C3C3C3C3C3D3E3F414244444343444445454646494949494949494948484948474644424140403F3F3E3E3E %3B3B3C3C3D3D3D3D3B3B3B3B3B3B3B3B38383735363536373537373839393B3B3F3F414244454647474645440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000 %00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 %00000000FF0000FF00FFFF000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %35363738383939383B3B3B3B3B3B3B3B3B3B3C3D3F404141424243434444454548484949494A4A4A4949494948464443414141403F3F3F3E3B3B3C3C3C3C3C3C3939393938383836363534333436383836363637383939393E3F4041434446464646454442413F403B3A393835333333302F2E2D2B2A282826262728282929FF %FFFFFFFFFFFFFFFFFFFFFFFF2D2E2F2F2F2F2F2F2F2F2F2F2E2E2E2F2F2F2F2F2C2B2A2A2A29282823232221212020201D1D1C1B1A18181719181717191C1F21262C31343434343735363738383939383B3B3B3B3B3B3B3B3B3B3C3D3F404141424243434444454548484949494A4A4A4949494948464443414141403F3F3F3E %3B3B3C3C3C3C3C3C3939393938383836363534333436383836363637383939393E3F4041434446464646454400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000 %000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 %00000000FF00FFFFFF0000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3535343535363738383838393939393939393B3B3C3D3E3E414142424343444447474748494A4A4A494949494846444342414141403F3F3F3C3C3B3B3B3B3B3A3838373535353534333333333436383936363637373737373C3D3E404143444545454443424140403B3B3A383635343331312F2E2C2B2A2926262728282929FF %FFFFFFFFFFFFFFFFFFFFFFFF2D2E2F2F303030303030303031313130303030302C2B2A292827262622222221212021211D1E1D1C1A19181819191818191C2022262B3133333233343535343535363738383838393939393939393B3B3C3D3E3E414142424343444447474748494A4A4A494949494846444342414141403F3F3F %3C3C3B3B3B3B3B3A3838373535353534333333333436383936363637373737373C3D3E40414344454545444300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000 %000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 %00000000FFFF0000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %333333333434363638373737383838383738393A3A3B3B3B4040414142424343454546474849494A4848494847464442424242414140403F3C3C3B3B3A3A3A393736353434333331333332323335363737373737373737373A3B3C3D3F41424243434242414040403C3B3A39373534343232302F2D2C2B2A26262728282929FF %FFFFFFFFFFFFFFFFFFFFFFFF2D2E2F2F303030313132323233333332323131312C2A29282726252421212121212122221D1E1E1D1C1B1A1A1B1A19191A1E2123262B303232313233333333333434363638373737383838383738393A3A3B3B3B4040414142424343454546474849494A4848494847464442424242414140403F %3C3C3B3B3A3A3A393736353434333331333332323335363737373737373737373A3B3C3D3F4142424343424200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000 %000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 %00000000FF000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %323233333333343436363535353536FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF434143414140403F3F3F3B3BFFFFFFFFFFFFFFFFFFFFFFFFFF31333332323233FFFFFFFFFFFFFFFFFFFFFFFFFF3B3DFFFFFFFFFFFFFFFFFFFFFFFFFF3B38FFFFFFFFFFFFFFFFFFFFFFFFFF262728282929FF %FFFFFFFFFFFFFFFFFFFFFFFF2D2E2E2EFFFFFFFFFFFF333435353433333231312C2A29272625FFFFFFFFFFFF212122FFFFFFFFFFFFFFFFFFFFFFFFFF1C1F2224262B3032313030323232FFFFFFFFFFFFFFFFFFFF3535363637373737383939393F3F404041414242FFFFFFFFFFFFFFFFFFFFFFFFFF4443414341414040FFFFFF %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3838383738383A3B3D3E3F404141404000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000FF %000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 %0000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %313232333334343435353636363636FFFF373737383837383F3F3F4040414142414243444647484846464747FFFF4241434342424141403F3B3BFFFFFFFFFFFFFFFFFFFFFFFFFF31343332313132FFFFFFFFFFFFFFFFFFFFFFFFFF3A3BFFFFFFFFFFFFFFFFFFFFFFFFFF3B38FFFFFFFFFFFFFFFFFFFFFFFFFF262627272828FF %FFFFFFFFFFFFFFFFFFFFFFFF2D2EFFFFFFFFFFFFFFFFFFFF36353534333232302C2B2A28FFFFFFFFFFFFFFFFFFFF22FFFFFFFFFFFFFFFFFFFFFFFFFF1C202225262B2F31302F3031FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3537373737383837383F3F3F404041FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4442414343424241FFFF3F %3B3B3A3A39393838373636353432313134333231313233343939FFFF383838383637373A3B3D3E3F3F3E3F3E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000FFFF %000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 %0000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %31302F2F3031323332333435353433FFFF343536373839393B3C3D3E3F404141404141414142424243444444FFFF4545424041403F3F3E3E3A3AFFFFFFFFFFFFFFFFFFFFFFFFFF34313031323333FFFFFFFFFFFFFFFFFFFFFFFFFF3A3AFFFFFFFFFFFFFFFFFFFFFFFFFF3A3AFFFFFFFFFFFFFFFFFFFFFFFFFF2A2828282A2CFF %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3534333231302F2D2CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2020212028292C2E3031FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33343536373839393B3C3D3E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF444545424041403FFFFF3E %3A3A3A3A393837383B3937343333333431303132333334333B39FFFF3738393B3839393A3A3B3B3B3E3E3E3E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000FFFFFF00FF %00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 %0000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %302F2F2E2F30323332333435353433FFFF343434373838393B3B3C3D3E3F4040414141414141424242424343FFFF44444141403F3F3E3D3D3939FFFFFFFFFFFFFFFFFFFFFFFFFF34313132323333FFFFFFFFFFFFFFFFFFFFFFFFFF3839FFFFFFFFFFFFFFFFFFFFFFFFFF3A3AFFFFFFFFFFFFFFFFFFFFFFFFFF2A2A29292C2DFF %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34333231302E2C2BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2021212128292C2E30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3434373838393B3B3C3DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4444444141403F3FFFFF3D %39393A38383738383A3936343333333431313232333334343938FFFF363738383737383839393A3A3D3D3D3D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000000FFFF00FF0000FF %00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 %0000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2E2D2D2C2D2E303130313233333231FFFF323333353637383A3A3B3C3D3E3F3F414141414141414140404141FFFF434342403F3F3E3D3C3C3838FFFFFFFFFFFFFFFFFFFFFFFFFF32313131313232FFFFFFFFFFFFFFFFFFFFFFFFFF3839FFFFFFFFFFFFFFFFFFFFFFFFFF3939FFFFFFFFFFFFFFFFFFFFFFFFFF2D2D2C2D2E2FFF %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF333231302F2E2C2BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2021212228292B2DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3333353637383A3A3BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43434342403F3F3EFFFF3C %3838393738373736383635333232323231313131323233333736FFFF353536373737383839393A3A3C3C3C3C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000FFFFFF000000FF000000 %00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 %0000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2C2C2B2B2B2D2E2F2F303132323130FFFF313233343536363838393A3B3C3D3E404040403F3F3F3E3D3E3E3FFFFF424241403F3E3D3B3A393737FFFFFFFFFFFFFFFFFFFFFFFFFF32313131313232FFFFFFFFFFFFFFFFFFFFFFFFFF3738FFFFFFFFFFFFFFFFFFFFFFFFFF3839FFFFFFFFFFFFFFFFFFFFFFFFFF2F2F30313132FF %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3231302F2E2BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2222232428292B2CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3334353636383839FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41424241403F3E3DFFFF39 %3737363736363534363534333332323231313131323233333534FFFF3233343536363737383839393A3A3A3A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF00000000FFFFFFFF000000FF000000 %00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 %0000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2B2A29292A2B2C2D2E2F303131302FFFFF2F303131333334363738383A3B3C3C3F3F3E3E3D3C3C3B3A3B3C3DFFFF404141403F3D3C3A39373636FFFFFFFFFFFFFFFFFFFFFFFFFF32313132323333FFFFFFFFFFFFFFFFFFFFFFFFFF3536FFFFFFFFFFFFFFFFFFFFFFFFFF3738FFFFFFFFFFFFFFFFFFFFFFFFFF333434353535FF %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31302F2E2D29FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2424242629292AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31333334363738FFFFFFFFFFFFFFFFFFFFFFFFFFFF3B3C3D3E3F404141403F3D3CFFFF37 %3636353534333332333434343433333231313232333334343231FFFF313131323434353536363737373737370000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000FFFFFFFF00FF000000 %00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 %0000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2929292929292B2C2D2E2F30302F2EFFFF2E2F303031333235353637383939393C3C3B3A393837383738393BFFFF3F3F41403E3D3A3837363534FFFFFFFFFFFFFFFFFFFFFFFFFF32313132323333FFFFFFFFFFFFFFFFFFFFFFFFFF3435FFFFFFFFFFFFFFFFFFFFFFFFFF3537FFFFFFFFFFFFFFFFFFFFFFFFFF363738393838FF %FFFFFFFFFFFFFFFFFFFFFFFF3131FFFFFFFFFFFFFFFFFFFFFFFFFF31302F2E2D28FFFFFFFFFFFFFFFFFFFFFFFF2324FFFFFFFFFFFFFFFFFFFFFFFFFF2526262729292AFFFFFFFFFFFFFFFFFFFFFFFFFF2DFFFFFFFFFFFFFFFFFFFFFF30313332353536FFFFFFFFFFFFFFFFFFFFFFFFFF3738393B3C3E3F3F41403E3D3AFFFF36 %3534343232313132323334343434333231313232333334343131FFFF303131313333343435353636343435340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000000FFFFFFFFFF00FF %00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 %00000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2928282728292B2C2D2E2F30302F2EFFFF2D2D2E3031303234343536373739393A3939373736353535363739FFFF3D3E41403E3C393736353333FFFFFFFFFFFFFFFFFFFFFFFFFF32313132323333FFFFFFFFFFFFFFFFFFFFFFFFFF3435FFFFFFFFFFFFFFFFFFFFFFFFFF3436FFFFFFFFFFFFFFFFFFFFFFFFFF37383A3B3B3AFF %FFFFFFFFFFFFFFFFFFFFFFFF3232FFFFFFFFFFFFFFFFFFFFFFFFFF302F2E2D2D28FFFFFFFFFFFFFFFFFFFFFFFF2425FFFFFFFFFFFFFFFFFFFFFFFFFF27282827292A2BFFFFFFFFFFFFFFFFFFFFFFFF2C2D2EFFFFFFFFFFFFFFFFFFFF30313032343435FFFFFFFFFFFFFFFFFFFFFFFFFF353637393A3B3D3E41403E3C39FFFF35 %3333333131313131313233343534323231313232333334343232FFFF303032323333343435353636343433340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000FFFFFFFFFF %00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 %00000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2828272727292A2B2D2E2F30302F2EFFFF2C2D2E2F3031303233343435363839393837363534333334353638FFFF3C3D41403E3A383735343332FFFFFFFFFFFFFFFFFFFFFFFFFF31313132323333FFFFFFFFFFFFFFFFFFFFFFFFFF3434FFFFFFFFFFFFFFFFFFFFFFFFFF3535FFFFFFFFFFFFFFFFFFFFFFFFFF393A3C3C3B3AFF %FFFFFFFFFFFFFFFFFFFFFFFF3232FFFFFFFFFFFFFFFFFFFFFFFFFF302F2E2D2D28FFFFFFFFFFFFFFFFFFFFFFFF2426FFFFFFFFFFFFFFFFFFFFFFFFFF28282928292AFFFFFFFFFFFFFFFFFFFFFFFFFF2B2D2EFFFFFFFFFFFFFFFFFFFFFF303130323334FFFFFFFFFFFFFFFFFFFFFFFFFF343536383A3C3C3D41403E3A38FFFF34 %3332313231313030303133353534323131313232333334343232FFFF303132323333333434353536333333330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000FFFFFF %00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 %00000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2A292928282727272C2D2E2F2E2C29FFFF2828292A2C2E303030303232333434373635343331313134343536FFFF3C3B3C3C3A38373634333030FFFFFFFFFFFFFFFFFFFFFFFFFF32313132323333FFFFFFFFFFFFFFFFFFFFFFFFFF2E2EFFFFFFFFFFFFFFFFFFFFFFFFFF3334FFFFFFFFFFFFFFFFFFFFFFFFFF3F3E3F3F3F3FFF %FFFFFFFFFFFFFFFFFFFFFFFF3130FFFFFFFFFFFFFFFFFFFFFFFFFF32302F2E2D2AFFFFFFFFFFFFFFFFFFFFFFFF2729FFFFFFFFFFFFFFFFFFFFFFFFFF2A2B2B2C2929FFFFFFFFFFFFFFFFFFFFFFFFFF272C2DFFFFFFFFFFFFFFFFFFFFFF2C2E30303030FFFFFFFFFFFFFFFFFFFFFFFFFF34343536393B3C3B3C3C3A3837FFFF33 %303030302F2F2F2F2F3030313132323231313232333333342F2FFFFF303030302F2F2E2E2E303132343332300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000FF %00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 %00000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2A292929282827272B2C2D2D2C2B29FFFF282728292B2D2E2F2F303131323233353534333231313033343536FFFF3B3C3C3B3A39373534333131FFFFFFFFFFFFFFFFFFFFFFFFFF32323232323232FFFFFFFFFFFFFFFFFFFFFFFFFF2D2EFFFFFFFFFFFFFFFFFFFFFFFFFF3334FFFFFFFFFFFFFFFFFFFFFFFFFF424242424242FF %FFFFFFFFFFFFFFFFFFFFFFFF3131FFFFFFFFFFFFFFFFFFFFFFFFFF32302F2E2E2AFFFFFFFFFFFFFFFFFFFFFFFF282AFFFFFFFFFFFFFFFFFFFFFFFFFF2A2B2B2C2929FFFFFFFFFFFFFFFFFFFFFFFFFF272B2CFFFFFFFFFFFFFFFFFFFFFF2B2D2E2F2F30FFFFFFFFFFFFFFFFFFFFFFFFFF33343536383A3B3C3C3B3A3937FFFF33 %31313030302F2F2F2F2F30303131323232323232323233332F2FFFFF303030302F2E2E2D2E2F3132343331300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000 %00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 %00000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2A2A2A2928282827292A2A2A2A2928FFFF27262627292B2C2E2E2E2F2F303030323232313131303033333436FFFF3B3B3C3B3A38373634333231FFFFFFFFFFFFFFFFFFFFFFFFFF31323232323231FFFFFFFFFFFFFFFFFFFFFFFFFF2C2DFFFFFFFFFFFFFFFFFFFFFFFFFF3334FFFFFFFFFFFFFFFFFFFFFFFFFF454545454545FF %FFFFFFFFFFFFFFFFFFFFFFFF3232FFFFFFFFFFFFFFFFFFFFFFFFFF3230302F2E2BFFFFFFFFFFFFFFFFFFFFFFFF292AFFFFFFFFFFFFFFFFFFFFFFFFFF2A2B2B2B2727FFFFFFFFFFFFFFFFFFFFFFFFFF27292AFFFFFFFFFFFFFFFFFFFFFF292B2C2E2E2EFFFFFFFFFFFFFFFFFFFFFFFFFF3333343638393B3B3C3B3A3837FFFF33 %32313130302F2E2E2E2E2F2F3030313132323232323131313030FFFF2F2F2F2F2E2D2D2C2D2E30313232302F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000 %0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 %00000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2B2A2A292928282827272828282727FFFF2625252627292A2C2C2C2C2C2D2D2D2F2F2F2F2F2F303032333434FFFF3A3A3A393838373434343232FFFFFFFFFFFFFFFFFFFFFFFFFF30323232313131FFFFFFFFFFFFFFFFFFFFFFFFFF2B2CFFFFFFFFFFFFFFFFFFFFFFFFFF3334FFFFFFFFFFFFFFFFFFFFFFFFFF464645454646FF %FFFFFFFFFFFFFFFFFFFFFFFF3433FFFFFFFFFFFFFFFFFFFFFFFFFF3131302F2F2DFFFFFFFFFFFFFFFFFFFFFFFF2A2BFFFFFFFFFFFFFFFFFFFFFFFFFF2B2B2B2B2727FFFFFFFFFFFFFFFFFFFFFFFFFF282727FFFFFFFFFFFFFFFFFFFFFF27292A2C2C2CFFFFFFFFFFFFFFFFFFFFFFFFFF3233343437383A3A3A39383837FFFF34 %323231302F2F2E2E2D2D2E2E2F2F303032323231313130303030FFFF2F2F2F2F2D2C2C2B2C2D2F3032312F2F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000 %0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 %00000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2A2A2A292928282725252525252526FFFF262525252628282A292A292A2829292B2B2C2B2D2E2F2E31313334FFFF373838383837363434343231FFFFFFFFFFFFFFFFFFFFFFFFFF2E303030303030FFFFFFFFFFFFFFFFFFFFFFFFFF2A2BFFFFFFFFFFFFFFFFFFFFFFFFFF3334FFFFFFFFFFFFFFFFFFFFFFFFFF464646464646FF %FFFFFFFFFFFFFFFFFFFFFFFF3534FFFFFFFFFFFFFFFFFFFFFFFFFF31313030302FFFFFFFFFFFFFFFFFFFFFFFFF2B2CFFFFFFFFFFFFFFFFFFFFFFFFFF2A2A2A2B2726FFFFFFFFFFFFFFFFFFFFFFFFFF272525FFFFFFFFFFFFFFFFFFFFFF2628282A292AFFFFFFFFFFFFFFFFFFFFFFFFFF31313334363737383838383736FFFF34 %3231312F2D2D2C2C2B2B2C2C2D2D2E2E30303030303030303031FFFF2F2E2E2E2C2B2B2A2B2C2E2F302F2E2E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000 %0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 %00000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2B2A2A2A2928282825242424242526FFFF2726252526262727272827272626262627282A2B2D2E2F2F303233FFFF363737373737353435353130FFFFFFFFFFFFFFFFFFFFFFFFFF2D2D2E2E2F3030FFFFFFFFFFFFFFFFFFFFFFFFFF292AFFFFFFFFFFFFFFFFFFFFFFFFFF3334FFFFFFFFFFFFFFFFFFFFFFFFFF474747474747FF %FFFFFFFFFFFFFFFFFFFFFFFF3635FFFFFFFFFFFFFFFFFFFFFFFFFF313131313130FFFFFFFFFFFFFFFFFFFFFFFFFF2DFFFFFFFFFFFFFFFFFFFFFFFFFF2B2A2A2B2726FFFFFFFFFFFFFFFFFFFFFFFFFF282524FFFFFFFFFFFFFFFFFFFFFF262627272728FFFFFFFFFFFFFFFFFFFFFFFFFF2F303233353636373737373735FFFF35 %31302F2E2C2B2A292A2A2B2B2C2C2D2D2D2E2E2F303031313232FFFF2F2E2D2D2B2A2A292A2B2D2E2E2D2D2D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000 %000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 %00000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2B2B2A2A2929292825242424242627FFFF28272625262727272725242423232224242528292C2E2E2E303132FFFF36363737363635343535302FFFFFFFFFFFFFFFFFFFFFFFFFFF2C2B2B2D2E3031FFFFFFFFFFFFFFFFFFFFFFFFFF2929FFFFFFFFFFFFFFFFFFFFFFFFFF3334FFFFFFFFFFFFFFFFFFFFFFFFFF4A4A4A4A4A4AFF %FFFFFFFFFFFFFFFFFFFFFFFF3736FFFFFFFFFFFFFFFFFFFFFFFFFF31313131313131FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C2B2B292928FFFFFFFFFFFFFFFFFFFFFFFFFF282524FFFFFFFFFFFFFFFFFFFFFF262727272725FFFFFFFFFFFFFFFFFFFFFFFFFF2E303132343636363737363635FFFF35 %302F2D2C2A28272629292A2A2B2B2C2C2B2B2D2E303132333332FFFF2F2E2D2C2A2A2929292A2C2D2D2D2C2D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000 %000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 %00000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2B2B2B2A2A29292825252424242628FFFF292827252627282625242323222122222425262A2B2D2D2E2F3032FFFF353635353535363535352F2DFFFFFFFFFFFFFFFFFFFFFFFFFF2D2A2B2C2E3133FFFFFFFFFFFFFFFFFFFFFFFFFF2728FFFFFFFFFFFFFFFFFFFFFFFFFF3234FFFFFFFFFFFFFFFFFFFFFFFFFF4D4D4D4D4C4DFF %FFFFFFFFFFFFFFFFFFFFFFFF3835FFFFFFFFFFFFFFFFFFFFFFFFFF31313132323231FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C2B2B292929FFFFFFFFFFFFFFFFFFFFFFFFFF28252524242426282B2A29282725262728262524FFFFFFFFFFFFFFFFFFFFFFFFFF2E2F3032343435363535353536FFFF35 %2F2D2D2A282626252A2A2A2B2B2C2C2D2A2B2C2E313334343233FFFF2F2D2C2C2A29272728292A2C2D2D2C2C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000 %000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000 %000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2E2D2D2C2B2A292827272728282929FFFF2E2C2A2827252424232324232323222323232425282A2B2C2D2E30FFFF333535353434333331322F2DFFFFFFFFFFFFFFFFFFFFFFFFFF2C2B2C2D2F3032FFFFFFFFFFFFFFFFFFFFFFFFFF2A2AFFFFFFFFFFFFFFFFFFFFFFFFFF3435FFFFFFFFFFFFFFFFFFFFFFFFFF4F504F4F5050FF %FFFFFFFFFFFFFFFFFFFFFFFF3A36FFFFFFFFFFFFFFFFFFFFFFFFFF333434333231323435FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF302E2D2B2A2AFFFFFFFFFFFFFFFFFFFFFFFFFF28272727282829292A2E2E2C2A28272524242323FFFFFFFFFFFFFFFFFFFFFFFFFF2C2D2E30313233353535343433FFFF32 %2F2D2B29272626252829282828292B2C2B2C2D2F303233343433FFFF2D2A29282A292A2A2A2A292929292A2A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF00000000000000000000000000 %00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000 %000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2E2E2D2C2B2A29292727282829292AFFFF2D2B2A28262524232323232322212122222323242628292B2C2D2EFFFF333333333231303031302E2DFFFFFFFFFFFFFFFFFFFFFFFFFF2A2A2B2D2E3032FFFFFFFFFFFFFFFFFFFFFFFFFF2A2AFFFFFFFFFFFFFFFFFFFFFFFFFF3335FFFFFFFFFFFFFFFFFFFFFFFFFF4F5050515152FF %FFFFFFFFFFFFFFFFFFFFFFFF3B38FFFFFFFFFFFFFFFFFFFFFFFFFF3334343333323334363636FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF302E2D2B2A2AFFFFFFFFFFFFFFFFFFFFFFFFFF292727282829292A2A2D2D2B2A28262524232323FFFFFFFFFFFFFFFFFFFFFFFFFF2B2C2D2E303133333333323130FFFF30 %2E2D2A2825252526272726262728292A2A2B2D2E303233333433FFFF2D2B29282A292A2A2A2929292A2A2A2A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000 %00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000 %000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2E2E2D2C2B2A2929282829292A2A2BFFFF2C2A29272625242323232222212120212020202224262729292A2CFFFF303131302F2E2E2D2E2E2D2CFFFFFFFFFFFFFFFFFFFFFFFFFF282A2A2C2E3031FFFFFFFFFFFFFFFFFFFFFFFFFF2A2AFFFFFFFFFFFFFFFFFFFFFFFFFF3434FFFFFFFFFFFFFFFFFFFFFFFFFF4F5052535556FF %FFFFFFFFFFFFFFFFFFFFFFFF3D39FFFFFFFFFFFFFFFFFFFFFFFFFF32333333333334353737373534FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF302E2D2B2A2AFFFFFFFFFFFFFFFFFFFFFFFFFF29282829292A2A2B2B2C2C2A2927262524232323FFFFFFFFFFFFFFFFFFFFFFFFFF29292A2C2E2F303131302F2E2EFFFF2E %2D2C29272424242526252424262727282A2A2C2E303132333433FFFF2E2C29292A292A2A2A2929292A2A2A2A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000 %00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 %0000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2F2F2E2D2C2B2A2929292A2A2B2B2CFFFF2B2A29272625252323222221212020201F1F1F202223242527282AFFFF2E2F2F2E2D2C2C2B2C2C2C2BFFFFFFFFFFFFFFFFFFFFFFFFFF272A2A2C2D2F31FFFFFFFFFFFFFFFFFFFFFFFFFF2B2BFFFFFFFFFFFFFFFFFFFFFFFFFF3435FFFFFFFFFFFFFFFFFFFFFFFFFF50525456585AFF %FFFFFFFFFFFFFFFFFFFFFFFF3F3CFFFFFFFFFFFFFFFFFFFFFFFFFF323334353635363738383735353333FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF302E2D2B2A2AFFFFFFFFFFFFFFFFFFFFFFFFFF2929292A2A2B2B2C2C2B2B2A2927262525232322FFFFFFFFFFFFFFFFFFFFFFFFFF2527282A2B2D2E2F2F2E2D2C2CFFFF2C %2C2B29262424242424242323242626272A2A2C2D2F3132323433FFFF2E2D2A2A2B2B2A2B2B2B2B2B2B2A2A2A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF000000000000000000000000 %00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 %0000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %302F2E2D2C2B2A2A2A2A2B2B2C2C2DFFFF292A2928272626262423222221201F21201E1E1F20222224252728FFFF2C2D2E2E2C2C2B2B2B2B2C2BFFFFFFFFFFFFFFFFFFFFFFFFFF272A2A2B2D2F30FFFFFFFFFFFFFFFFFFFFFFFFFF2B2BFFFFFFFFFFFFFFFFFFFFFFFFFF3435FFFFFFFFFFFFFFFFFFFFFFFFFF525457595C5DFF %FFFFFFFFFFFFFFFFFFFFFFFF413EFFFFFFFFFFFFFFFFFFFFFFFFFF343536373837373839393837353333343333FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF302E2D2B2A2AFFFFFFFFFFFFFFFFFFFFFFFFFF2A2A2A2B2B2C2C2D2D2A292A2928272626262423FFFFFFFFFFFFFFFFFFFFFFFFFF242527282A2B2C2D2E2E2C2C2BFFFF2B %2C2B29262424242424242322242527272A2A2B2D2F3031323332FFFF2F2E2C2B2B2B2A2B2B2B2B2B2B2A2A290000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000 %0000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 %0000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %30302F2E2D2C2B2B2B2B2C2C2D2D2EFFFF2A2B2A29292728282725242221202021201E1E1F1F212124242627FFFF2C2C2F2F2D2D2C2C2C2C2D2CFFFFFFFFFFFFFFFFFFFFFFFFFF28292A2B2C2E30FFFFFFFFFFFFFFFFFFFFFFFFFF2B2BFFFFFFFFFFFFFFFFFFFFFFFFFF3436FFFFFFFFFFFFFFFFFFFFFFFFFF5557595C5E60FF %FFFFFFFFFFFFFFFFFFFFFFFF4340FFFFFFFFFFFFFFFFFFFFFFFFFF343537383938FFFFFFFFFFFFFFFFFFFFFFFF32FFFFFFFFFFFFFFFFFFFFFFFFFFFF2F2E2D2B2A2AFFFFFFFFFFFFFFFFFFFFFFFFFF2B2B2B2C2C2D2D2E2E2A2A2B2A29292728282725FFFFFFFFFFFFFFFFFFFFFFFFFF24242627292A2C2C2F2F2D2D2CFFFF2C %2D2C2927242424252425232324252728292A2B2C2E3031313232FFFF302F2D2C2C2C2C2B2B2C2C2C2B2B2A290000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000 %0000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000 %00000000000000000000000000000000FFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %30302F2E2D2C2B2B2C2C2D2D2E2E2FFFFF2C2C2B2B2B29292A2928252322212122211F1E1F1F202124242527FFFF2C2C31312F2F2E2E2E2E2E2DFFFFFFFFFFFFFFFFFFFFFFFFFF2929292A2C2E2FFFFFFFFFFFFFFFFFFFFFFFFFFF2C2CFFFFFFFFFFFFFFFFFFFFFFFFFF3437FFFFFFFFFFFFFFFFFFFFFFFFFF58595B5D5F61FF %FFFFFFFFFFFFFFFFFFFFFFFF4542FFFFFFFFFFFFFFFFFFFFFFFFFF343436383A3AFFFFFFFFFFFFFFFFFFFFFFFF3333FFFFFFFFFFFFFFFFFFFFFFFFFF2F2D2C2A2A2AFFFFFFFFFFFFFFFFFFFFFFFFFF2B2CFFFFFFFFFFFFFFFFFFFFFFFF2B29292A2928FFFFFFFFFFFFFFFFFFFFFFFFFF24242527292A2C2C31312F2F2EFFFF2E %2E2D2A2825252526252525242426282929292A2C2E2F30313232FFFF302F2F2D2C2C2C2C2C2B2B2B2C2B2A290000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000 %000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000 %00000000000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %31302F2E2D2C2C2B2C2D2D2E2E2F2FFFFF2D2D2C2C2C2C2B2B2A29272422212122221F1E1E20202123252626FFFF2C2C323231302F2F302F2F2DFFFFFFFFFFFFFFFFFFFFFFFFFF2928292A2C2D2FFFFFFFFFFFFFFFFFFFFFFFFFFF2C2CFFFFFFFFFFFFFFFFFFFFFFFFFF3437FFFFFFFFFFFFFFFFFFFFFFFFFF5A5B5D5D6060FF %FFFFFFFFFFFFFFFFFFFFFFFF4442FFFFFFFFFFFFFFFFFFFFFFFFFF3435383A3C3BFFFFFFFFFFFFFFFFFFFFFFFF3333FFFFFFFFFFFFFFFFFFFFFFFFFF2F2D2C2A2A2AFFFFFFFFFFFFFFFFFFFFFFFFFF2B2CFFFFFFFFFFFFFFFFFFFFFFFF2C2C2B2B2A29FFFFFFFFFFFFFFFFFFFFFFFFFF23252626282A2C2C323231302FFFFF2F %2F2D2B2926252526252625252426282928292A2C2D2F30313332FFFF30302F2F2B2C2C2C2C2C2C2C2C2B2A28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000000000000 %000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 %00000000000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %30302F2D2C2B2A292B2B2C2C2D2D2EFFFF2E2C2A292929292B2B2927252321211E1E1F1E1E1F20201F212529FFFF2B2C2E2F3032333334342E2EFFFFFFFFFFFFFFFFFFFFFFFFFF282B2C2C2D2F30FFFFFFFFFFFFFFFFFFFFFFFFFF2E2FFFFFFFFFFFFFFFFFFFFFFFFFFF3234FFFFFFFFFFFFFFFFFFFFFFFFFF595C60626464FF %FFFFFFFFFFFFFFFFFFFFFFFF4B46FFFFFFFFFFFFFFFFFFFFFFFFFF38383A3A3A3BFFFFFFFFFFFFFFFFFFFFFFFF3536FFFFFFFFFFFFFFFFFFFFFFFFFF2F2E2C2C2E2DFFFFFFFFFFFFFFFFFFFFFFFFFF292BFFFFFFFFFFFFFFFFFFFFFFFF2929292B2B29FFFFFFFFFFFFFFFFFFFFFFFFFF1F2125292B2C2B2C2E2F303233FFFF34 %2E2E2E2D2A28262525232424232427282B2C2C2D2F3030313333FFFF312F2D2C2B2C2D2E2F302F2E2A2A2928000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000000000000 %00000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 %000000000000000000000000000000FFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %30302F2D2C2B2A2A2B2C2C2D2D2E2EFFFF2E2C2A2929292A2A2A2927252322221F1F1F1F1E1F202020212427FFFF2C2C2D2E2F31323233322E2EFFFFFFFFFFFFFFFFFFFFFFFFFF282B2C2D2E2F30FFFFFFFFFFFFFFFFFFFFFFFFFF2F30FFFFFFFFFFFFFFFFFFFFFFFFFF3032FFFFFFFFFFFFFFFFFFFFFFFFFF5A5D60636465FF %FFFFFFFFFFFFFFFFFFFFFFFF4B47FFFFFFFFFFFFFFFFFFFFFFFFFF393A3B3B3B3AFFFFFFFFFFFFFFFFFFFFFFFF3536FFFFFFFFFFFFFFFFFFFFFFFFFF2F2E2C2C2F2EFFFFFFFFFFFFFFFFFFFFFFFFFF2A2BFFFFFFFFFFFFFFFFFFFFFFFF29292A2A2A29FFFFFFFFFFFFFFFFFFFFFFFFFF202124272A2A2C2C2D2E2F3132FFFF32 %2E2E2E2D2A28262526242424242527282B2C2D2E2F3031313333FFFF312F2D2C2C2D2E2F30302F2F2B2A2928000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000000000000 %00000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 %000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %302F2F2E2D2C2B2B2C2C2C2D2D2E2EFFFF2E2C2A2929292A292A2927262422232020202020201F1F20222427FFFF2A2B2B2C2D2F303031302D2DFFFFFFFFFFFFFFFFFFFFFFFFFF292B2B2D2E2F30FFFFFFFFFFFFFFFFFFFFFFFFFF3232FFFFFFFFFFFFFFFFFFFFFFFFFF2E30FFFFFFFFFFFFFFFFFFFFFFFFFF5B5E61636465FF %FFFFFFFFFFFFFFFFFFFFFFFF4D48FFFFFFFFFFFFFFFFFFFFFFFFFF3A3B3B3C3C3AFFFFFFFFFFFFFFFFFFFFFFFF3637FFFFFFFFFFFFFFFFFFFFFFFFFF302F2E2D302FFFFFFFFFFFFFFFFFFFFFFFFFFF2B2CFFFFFFFFFFFFFFFFFFFFFFFF29292A292A29FFFFFFFFFFFFFFFFFFFFFFFFFF20222427282A2A2B2B2C2D2F30FFFF30 %2D2D2D2C2A27252525252424252727292B2B2D2E2F3031313232FFFF312F2E2C2E2F3132323231302C2B2A2900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000 %0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 %000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %302F2F2E2D2D2C2C2C2D2D2D2E2F2FFFFF2E2C2A2929292A29282827262523232121212020201E1E20212325FFFF292A292A2B2D2E2E2F2F2D2DFFFFFFFFFFFFFFFFFFFFFFFFFF282C2B2D2E2F30FFFFFFFFFFFFFFFFFFFFFFFFFF3334FFFFFFFFFFFFFFFFFFFFFFFFFF2C2EFFFFFFFFFFFFFFFFFFFFFFFFFF5D5E61636464FF %FFFFFFFFFFFFFFFFFFFFFFFF4E49FFFFFFFFFFFFFFFFFFFFFFFFFF3C3C3C3D3D3BFFFFFFFFFFFFFFFFFFFFFFFF3637FFFFFFFFFFFFFFFFFFFFFFFFFF302F2E2E3130FFFFFFFFFFFFFFFFFFFFFFFFFF2C2CFFFFFFFFFFFFFFFFFFFFFFFF29292A292828FFFFFFFFFFFFFFFFFFFFFFFFFF202123252728292A292A2B2D2EFFFF2F %2D2D2D2C2927252426252424262727282C2B2D2E2F3031313031FFFF312F2E2D2F303233343333322D2C2B2A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000 %0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000 %0000000000000000000000000000FFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2F2F2F2E2E2E2D2D2D2D2D2E2F2F2FFFFF2E2C2A2929292A28272726262525242321212120201F1E20202122FFFF282928292A2C2D2D2E2E2C2CFFFFFFFFFFFFFFFFFFFFFFFFFF282A2A2C2D2E2FFFFFFFFFFFFFFFFFFFFFFFFFFF3433FFFFFFFFFFFFFFFFFFFFFFFFFF2A2DFFFFFFFFFFFFFFFFFFFFFFFFFF5D5F61636363FF %FFFFFFFFFFFFFFFFFFFFFFFF514BFFFFFFFFFFFFFFFFFFFFFFFFFF3E3E3E3D3D3BFFFFFFFFFFFFFFFFFFFFFFFF3637FFFFFFFFFFFFFFFFFFFFFFFFFF31302F2F3130FFFFFFFFFFFFFFFFFFFFFFFFFF2D2DFFFFFFFFFFFFFFFFFFFFFF2929292A282727FFFFFFFFFFFFFFFFFFFFFFFFFF202021222425282928292A2C2DFFFF2E %2C2C2C2B2926242425242423252627282A2A2C2D2E2F30302F2FFFFF302F2E2D30313234333432332E2D2C2A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000 %000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000 %0000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2F2F2F2F2F2F2F2F2D2E2E2F2F3030FFFF2E2C2A2929292A27272626262625252422222121201F1F21202021FFFF262828292A2C2D2D2E2D2C2CFFFFFFFFFFFFFFFFFFFFFFFFFF2629292A2B2C2DFFFFFFFFFFFFFFFFFFFFFFFFFF3233FFFFFFFFFFFFFFFFFFFFFFFFFF2AFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C5E60616161FF %FFFFFFFFFFFFFFFFFFFFFFFF534EFFFFFFFFFFFFFFFFFFFFFFFFFF403F3F3E3E3B3AFFFFFFFFFFFFFFFFFFFFFF36FFFFFFFFFFFFFFFFFFFFFFFFFF3231302F2F302F2EFFFFFFFFFFFFFFFFFFFFFFFF2F2DFFFFFFFFFFFFFFFFFFFFFF2929292A272726FFFFFFFFFFFFFFFFFFFFFFFFFF212020212224262828292A2C2DFFFF2D %2C2C2C2B28262423242322222425262629292A2B2C2D2E2E2E2EFFFF302F2E2D3031313233333231302F2D2B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF000000000000000000 %00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000 %0000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2F2F2F2F2F2F30302E2E2E2F2F3030FFFF2E2C2A2929292A27272626262626262524232121201F1E22212120FFFF242728292A2C2D2D2E2E2B2BFFFFFFFFFFFFFFFFFFFFFFFFFF25272728292A2BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B5D5F60605FFF %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41403F3F3F3B3AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF333231302F2F2E2DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2929292A27FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2022242728292A2C2DFFFF2E %2B2B2B2A282524232223212122242525272728292A2B2C2C2D2DFFFF302F2E2D2E2F303233333231312F2D2C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000 %00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 %00000000000000000000000000FFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2F2F2F2F303030302E2E2F2F303031FFFF2E2C2A2929292A27272626262626262525242321201E1E22212020FFFF2426282A2C2D2E2F2E2E2B2BFFFFFFFFFFFFFFFFFFFFFFFFFF2526252728292AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B5C5E5F5E5EFF %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4240403F3F3B39FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33323130302E2D2CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A2929292A27FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20222426282A2C2D2EFFFF2E %2B2B2B2A28252423212120202123232526252728292A2B2B2B2DFFFF302F2E2E2E2F31323231313031302E2C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF0000000000000000 %0000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 %00000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2D2C2D2C2D2C2D2C2C2B2D2C2E2E30FFFF2E2D2D2C2C2B2B2B2B2A2A28282727252423222121201F1F1E1F20FFFF25262728292A2B2D2E2E2D2BFFFFFFFFFFFFFFFFFFFFFFFFFF21262728292A2BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5456595C5E5E5DFF %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46444341403F3F3D3CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3332302F2E2E2F2F2F2EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D2C2C2B2B2BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF212325262728292A2BFFFF2E %2D2B2A29272626262223222121212221262728292A2B2C2C2D2DFFFF2D2D2D2E2F3030313132323231312E2C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000000 %0000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000 %000000000000000000000000FFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2C2C2C2C2C2C2C2C2A2A2B2C2C2D2EFFFF2E2D2D2C2C2B2B2B2B2A2A2929282825252423212120201F1F1F20FFFF252626262728292B2B2C2B2AFFFFFFFFFFFFFFFFFFFFFFFFFF232728292A2B2CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5455585B5C5D5DFF %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF474544424140403F3D3BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF343332312F2F2E2E2E2F2E2EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D2D2C2C2B2B2BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF212325262626272829FFFF2C %2B2A29282726262522222323232323232728292A2B2C2C2D2E2EFFFF2E2E2E2E2E2F2F2F3030313231312E2C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF00000000000000 %000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 %000000000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2C2C2C2C2C2C2C2C2A2A2A2B2B2C2CFFFF2E2D2D2C2C2B2B2B2B2A2A2929282825252423212120201F1F1F1FFFFF242525262728292A2A2B2A2AFFFFFFFFFFFFFFFFFFFFFFFFFF242828292A2B2CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3333FFFFFFFFFFFFFFFFFFFFFFFFFF4C535456595A5B5BFF %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A494746444342423F3E3C3CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF343433323130302F2F2E2F2E2E2CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E2D2D2C2C2B2B2BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF202224252526272829FFFF2B %2A2A29282726252523232323242424242828292A2B2C2D2E2E2EFFFF2E2E2E2E2E2E2E2F3030303231302E2D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000 %00000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 %0000000000000000000000FFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2D2D2D2D2D2D2D2D2A2A2A2A2A2A2BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF232424252526262728282827FFFFFFFFFFFFFFFFFFFFFFFFFF2628292A2B2C2DFFFFFFFFFFFFFFFFFFFFFFFFFF2F2FFFFFFFFFFFFFFFFFFFFF35363739FFFFFFFFFFFFFFFFFFFFFF4C4D5253555758595AFF %FFFFFFFFFFFFFFFFFFFFFFFF5854FFFFFFFFFFFFFFFFFFFF4D4D4B4A484746454443413F3E3E3EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3633343333323131302F2F2F2E2E2D2D2DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B2E2E2D2D2C2C2B2B2BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF202123242425252626FFFFFF %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F2F2F2F2D2E2E2F2F30303131302E2D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF000000000000 %0000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 %0000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2D2D2D2D2D2D2D2D2B2B2A2A2A2A2A2A2E2E2D2D2C2C2B2B2B2B2A2A292928282726252422212121201F1F1F1F20222223222223232324242424FFFFFFFFFFFFFFFFFFFFFFFFFF272727292A2B2CFFFFFFFFFFFFFFFFFFFFFFFFFF2E2E2FFFFFFFFFFFFFFF3335383B3D3E4142FFFFFFFFFFFFFF4B4D4E4F5353545557595AFF %FFFFFFFFFFFFFFFFFFFFFFFF59555453FFFFFFFFFFFF4E4E504F4E4D4B4A484847464442414141414040FFFFFFFFFFFFFFFFFFFF3B39373634333333333232322F2F2F2E2E2D2D2D2D2D2DFFFFFFFFFFFFFFFFFF2A2A2A2A2E2E2D2D2C2C2B2B2B2B2AFFFFFFFFFFFFFFFFFFFFFFFFFF201F1F1F1F2022222322222323232424 %242424232323222223232323242526272727292A2B2C2D2D2E2E2E2E2E2E2E2E2D2D2D2E2E2F2F3131302E2E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000 %000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 %00000000000000000000FFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2E2E2E2E2E2E2E2E2C2C2C2B2B2A2A2A2E2E2D2D2C2C2B2B2B2B2A2A292928282727262523222222201F1F1E1E1F202122212121212121212222FFFFFFFFFFFFFFFFFFFFFFFFFF27262628292A2B2C2C2E2D2D2D2D2D2D2D2C2D2D2D2E2F2F30302F2E2F3133383A414243474A4D50515150504F4F5051525454545556595B5C %5F6062646565656562615F5C5A5754545352504F4E4E4F505352514F4E4C4B4A4A4846454443444443434242414141403E3E3E3E3B3A373633333233333333332F2F2F2D2E2D2D2D2E2E2E2E2E2E2E2E2C2C2C2B2B2A2A2A2E2E2D2D2C2C2B2B2B2B2AFFFFFFFFFFFFFFFFFFFFFFFFFF201F1F1E1E1F20212221212121212121 %22222222222222212122222324252627262628292A2B2C2C2E2D2D2D2D2D2D2D2C2D2D2D2E2F2F30302F2E2F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF0000000000 %00000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000FF00000000000000 %00000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2E2E2E2E2E2E2E2E2E2E2D2C2C2B2A2A2E2E2D2D2C2C2B2B2B2B2A2A292928282727262523222222201F1F1E1E1F1F2020212120202020202121FFFFFFFFFFFFFFFFFFFFFFFFFF252525252627282A2B2C2B2B2B2B2B2B2B2C2C2D2D2E2E2E2F2F2F2F2F32363A3C4547494D5054565857575553525455565555545556595C5D %60606364666665656362605D5A585655545351504F50505055545351504E4D4C4B4A484746454646444443444342424140403F3F3D3A383633333333343434342F2F2F2D2E2D2D2D2E2E2E2E2E2E2E2E2E2E2D2C2C2B2A2A2E2E2D2D2C2C2B2B2B2B2AFFFFFFFFFFFFFFFFFFFFFFFFFF201F1F1E1E1F1F202021212020202020 %2121212122222222201F2021232425252525252627282A2B2C2B2B2B2B2B2B2B2C2C2D2D2E2E2E2F2F2F2F2F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000 %00000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000FF00000000000000 %000000000000000000FFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2E2E2E2E2E2E2E2E2F2F2E2D2C2C2B2B2E2E2D2D2C2C2B2B2B2B2A2A292928282827262523222322201F1F1E1E1E1F201F1F201F1F1E1F1E201FFFFFFFFFFFFFFFFFFFFFFFFFFF25232425252627292A2B2A2A2A2A2A2A2A2C2C2C2D2D2E2E2F2F2E2F3032373B3E484A4B5054585A5C5D5B5957565657585655555557595C5E %60616365666666656362605E5B585655545352515050515256555452514F4E4D4D4B49484746474746464543434241424040403F3D3B373733333334333435352F2F2F2E2E2D2D2D2E2E2E2E2E2E2E2E2F2F2E2D2C2C2B2B2E2E2D2D2C2C2B2B2B2B2AFFFFFFFFFFFFFFFFFFFFFFFFFF201F1F1E1E1E1F201F1F201F1F1E1F1E %201F2020212022211E1E1F2023232425232425252627292A2B2A2A2A2A2A2A2A2C2C2C2D2D2E2E2F2F2E2F30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF00000000 %0000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000FFFF00000000000000 %0000000000000000FFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3332302F2E2F2F302E2E2E2D2D2C2C2C2B2C2E2F2F2F2F2E2D2C2C2B2B2A2A2A2929282725242424201F201F1F1E1E1E1E1D1D1C1C1D1F202021FFFFFFFFFFFFFFFFFFFFFFFFFF2322222121222426292A292A2B2C2D2E2E2D2D2E2E2F2F303033302F2F333B42464E5256585858595D5E5D5C5B5B5C5D5E5E5C5957585A5D5F %606061626364656563636362605D5B59565453515151515254545454545454544E4E4E4D4C4B4B4A454544434344464643434342413F3D3B37373736363534353534322F2E2D2D2D3332302F2E2F2F302E2E2E2D2D2C2C2C2B2C2E2F2F2F2F2E2D2C2CFFFFFFFFFFFFFFFFFFFFFFFFFF201F201F1F1E1E1E1E1D1D1C1C1D1F20 %20212224242221202221201F2021232322222121222426292A292A2B2C2D2E2E2D2D2E2E2F2F303033302F2F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF000000 %000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000FFFFFF000000000000 %0000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3332302F2E2F2F302E2E2E2D2D2C2C2C2B2C2D2E2F2F2E2D2D2C2C2C2B2B2A2A2929282725242424202020201F1F1E1E1E1E1D1C1C1D1E1F1F20FFFFFFFFFFFFFFFFFFFFFFFFFF2322222222232527292A2A2B2C2D2E2E2F2D2D2E2E2F2F303032312F30343B43484F53575959585B5C5F5E5D5C5C5D5E5F5E5C5A58585A5D5E %5F6061626364656563646362615E5C5A565553525151515254545454545454544F4F4F4E4D4D4C4C47464544444445454343444342403E3D3738373737363534363532302D2E2D2E3332302F2E2F2F302E2E2E2D2D2C2C2C2B2C2D2E2F2F2E2D2D2C2CFFFFFFFFFFFFFFFFFFFFFFFFFF202020201F1F1E1E1E1E1D1C1C1D1E1F %1F2021222221201F21201F1F1F20222322222222232527292A2A2B2C2D2E2E2F2D2D2E2E2F2F303032312F300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000 %00000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000FF0000FFFFFF000000000000 %00000000000000FFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3332302F2E2F2F302E2E2E2D2D2C2C2C2A2B2C2E2E2E2D2D2D2D2D2C2B2B2B2A29292827252424242121212120201F1F1F1E1D1C1C1D1E1F1D1EFFFFFFFFFFFFFFFFFFFFFFFFFF2123232223252728282B2A2B2C2D2E2F302D2D2E2E2F2F3030322F2F30343C43485054585A5A595C5E605F5E5D5D5E5F605E5C5A59595A5C5D %5F5F60616263646564646463615F5D5C5856555352515152545555555555555553535250504E4E4D4948474544444444444445454442403F3A3A39393738373736363331302E2F2F3332302F2E2F2F302E2E2E2D2D2C2C2C2A2B2C2E2E2E2D2D2D2D2D2C2B2B2B2A29292827252424242121212120201F1F1F1E1D1C1C1D1E1F %1D1E1F20201F1E1D1E1E1E1E1E1F202123232223252728282B2A2B2C2D2E2F302D2D2E2E2F2F3030322F2F300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF0000 %000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000FF000000FFFF000000000000 %00000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3332302F2E2F2F302E2E2E2D2D2C2C2C2A2B2C2D2E2E2D2C2E2D2D2C2C2B2B2B29292827252424242222222221212020201F1D1C1C1C1D1E1C1DFFFFFFFFFFFFFFFFFFFFFFFFFF2024232424262829282B2B2C2D2E2F2F302D2D2E2E2F2F303130303031363D44495154595B5B5A5C5E61605F5E5E5F60615E5D5B59595A5B5C %5F5F6061626364646464646463615F5D595856545252525255545455555555555555545251504E4E4B4A47454444444445454646444442413C3C3A3B3A39383939363433313030303332302F2E2F2F302E2E2E2D2D2C2C2C2A2B2C2D2E2E2D2C2E2D2D2C2C2B2B2B29292827252424242222222221212020201F1D1C1C1C1D1E %1C1D1D1D1D1D1D1C1D1C1D1C1D1E1F2024232424262829282B2B2C2D2E2F2F302D2D2E2E2F2F303130303031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000 %00000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000FFFFFFFF0000FFFFFFFFFFFF0000 %000000000000FFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3332302F2E2F2F302E2E2E2D2D2C2C2C2A2B2D2E2F2E2E2D2E2E2E2D2D2C2C2B2929282725242424232323232222212121201E1D1C1C1C1D1C1CFFFFFFFFFFFFFFFFFFFFFFFFFF2022232425262728282B2A2B2C2D2E2F2F2D2D2E2E2F2F30312F2F3032383F45495154595B5B5B5D5F61605F5E5E5F60615E5D5C5A5A5A5A5A %5E5E5F6061626363646565656462615F5B5A585553525252555554545454555556565453514F4E4D4A4947454443434344454646464543423E3E3D3D3C3C3B3B39383733333232323332302F2E2F2F302E2E2E2D2D2C2C2C2A2B2D2E2F2E2E2D2E2E2E2D2D2C2C2B2929282725242424232323232222212121201E1D1C1C1C1D %1C1C1B1B1B1B1C1C1C1C1B1B1C1E1F2022232425262728282B2A2B2C2D2E2F2F2D2D2E2E2F2F30312F2F3032000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF00 %0000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000FF00FFFFFFFF00FF0000FFFFFF0000 %000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3332302F2E2F2F302E2E2E2D2D2C2C2C2C2D2E2F30302F2E2F2E2E2E2D2C2C2C2929282725242424242424242323222221201E1D1C1B1C1C1D1C1B1A1A1B1C1D1D1C1B1B1D1E1F20212223252627272629292A2B2C2D2E2E2D2D2E2E2F2F30312E2F2F343940464A5054585A5A5A5C5F605F5E5D5D5E5F605E5D5C5B5A595959 %5D5E5F5F6162636364656566656462615D5C5956545353525353535252525353555553514F4D4C4B4847454343424343434445464645444340403F3F3E3E3D3D3C3A3836343332333332302F2E2F2F302E2E2E2D2D2C2C2C2C2D2E2F30302F2E2F2E2E2E2D2C2C2C2929282725242424242424242323222221201E1D1C1B1C1C %1D1C1B1A1A1B1C1D1D1C1B1B1D1E1F20212223252627272629292A2B2C2D2E2E2D2D2E2E2F2F30312E2F2F3400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF %00000000000000000000000000000000000000FF00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000FFFFFFFF00000000FFFF0000 %0000000000FFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3332302F2E2F2F302E2E2E2D2D2C2C2C2D2E2F31313130302F2F2E2E2D2D2D2C2929282725242424252525252424232322211F1D1C1B1B1C1D1C1B1A1A1B1C1D1E1E1C1C1D1F20211F20242626262526282829292A2B2C2D2D2D2E2E2F2F30312E2E30353A41474A4F52575959595B5D5F5E5D5C5C5D5E5F5D5D5D5C5B595857 %5D5D5E5E6061626364656666666563635F5D5A575553535352525252515151525453514F4D4B49484544434241424344424344454544434342414140403F3F3F3D3C3937353535343332302F2E2F2F302E2E2E2D2D2C2C2C2D2E2F31313130302F2F2E2E2D2D2D2C2929282725242424252525252424232322211F1D1C1B1B1C %1D1C1B1A1A1B1C1D1E1E1C1C1D1F20211F20242626262526282829292A2B2C2D2D2D2E2E2F2F30312E2E303500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF %FF00000000000000000000000000000000000000FF00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000FFFFFFFF00000000FF0000 %00000000FFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3332302F2E2F2F302E2E2E2D2D2C2C2C2E2F3032323231312F2F2F2E2E2D2D2C2929282725242424252526252524242322211F1D1B1B1B1B1E1D1B1A1A1B1D1E1F1E1D1C1E1F21221E1F23252525242427272829292A2B2C2D2D2E2E2F2F30312D2E31353B41474A4E52565858585A5D5E5D5C5B5B5C5D5E5D5D5D5C5B595857 %5D5D5E5E6061626265656667666564635F5E5B585554535351515151505050505352504E4B4947464242414041424344414243444544424342424241404040403E3C3A38363535353332302F2E2F2F302E2E2E2D2D2C2C2C2E2F3032323231312F2F2F2E2E2D2D2C2929282725242424252526252524242322211F1D1B1B1B1B %1E1D1B1A1A1B1D1E1F1E1D1C1E1F21221E1F23252525242427272829292A2B2C2D2D2E2E2F2F30312D2E31350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF %FF000000000000000000000000000000000000FFFFFF0000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000FFFFFFFF0000FF000000 %000000FFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3534312F2D2D2D2D2E2F3031302F2E2D2E2E2F2F3030313130302F2F2E2D2C2C29292828292828282625252424232222201E1D1C1C1A19191A1A1B1B1B1B1C1C1F1E1C1B1B1C1E201F202224252625252727292A2C2E2E2F31323335363838393C38373D474E4F4D525254555758595A5B5A5958595B5E5F5F5E5C5A59595959 %5556585A5C5E6162666667676665636361605E5B585553525251504F4F4F50514F4F4D4B4948464544444444444444444241414141414141414141414141414241403F3D3A3732313534312F2D2D2D2D2E2F3031302F2E2D2E2E2F2F3030313130302F2F2E2D2C2C29292828292828282625252424232222201E1D1C1C1A1919 %1A1A1B1B1B1B1C1C1F1E1C1B1B1C1E201F202224252625252727292A2C2E2E2F31323335363838393C38373D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFF %FFFF00000000000000000000000000000000FFFFFFFFFF000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000FFFFFFFF00FF000000 %0000FFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3534322F2E2D2D2D2E2F3031302F2E2D2D2E2E2F2F3030302F2F2F2F2E2E2E2E2B2A2A2929292928272725242422212222211F1F1D1C1B1A1D1D1E1E1E1E1E1E1F1E1C1D1C1F1F22202123262728282728292B2C2F313233353637383A3B3C3D3E3A393E474C4E4C5050525455575859595958585A5C5E60605E5C5A59585858 %5657595B5C5F6162666667676766636361605E5B585654525251504E4E4E4F504F4E4D4B494846464444444444444444424141414141414141414141414141424241403E3B3834323534322F2E2D2D2D2E2F3031302F2E2D2D2E2E2F2F3030302F2F2F2F2E2E2E2E2B2A2A2929292928272725242422212222211F1F1D1C1B1A %1D1D1E1E1E1E1E1E1F1E1C1D1C1F1F22202123262728282728292B2C2F313233353637383A3B3C3D3E3A393E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF %FFFFFF0000000000000000000000000000FFFFFFFF0000FF000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000FFFFFFFF00000000 %00FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %363432302E2D2D2D2E2F3031302F2E2D2D2D2D2E2E2F2F302F2F2F2F303030302E2C2D2C2B2A2A292929282625242323232421211F1E1C1B1F1E1E1F1F1F1F1F1D1C1D1E1E212224222427292B2C2C2C2D2E30313537393A3C3C3D3E3F404141423E3C40474A4C4A4E4E505153555656565757585A5D5F60605F5C5A58575757 %58595B5D5E606263666767686766636361605E5C5956545351504F4D4D4D4E4E4E4D4C4B49484646444444444444444442414141414141414141414141414142434342403D3A3734363432302E2D2D2D2E2F3031302F2E2D2D2D2D2E2E2F2F302F2F2F2F303030302E2C2D2C2B2A2A292929282625242323232421211F1E1C1B %1F1E1E1F1F1F1F1F1D1C1D1E1E212224222427292B2C2C2C2D2E30313537393A3C3C3D3E3F404141423E3C400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF %FFFFFFFF000000000000000000000000FFFFFFFF000000FF0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000FF000000000000 %00FFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %363533302E2E2E2E2E2F3031302F2E2D2D2D2D2E2E2F2F2F2E2F2F30313232323130302F2E2D2C2C2D2C2B2A2928272727262523211F1D1D1C1D1D1C1D1D1D1D1C1C1E2022242727292B2D3032333433343437383C3E4040444444444545454546434041454949484C4D4D4F51525454545556585B5D5F60605F5C5A57565656 %5A5B5C5E5F616364666667676766636361605E5C5A57565551504E4D4C4C4C4D4C4C4B4A49474746444444444444444443424242424242424242424242424242444443423F3C3A38363533302E2E2E2E2E2F3031302F2E2D2D2D2D2E2E2F2F2F2E2F2F30313232323130302F2E2D2C2C2D2C2B2A2928272727262523211F1D1D %1C1D1D1C1D1D1D1D1C1C1E2022242727292B2D3032333433343437383C3E4040444444444545454546434041000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %FFFFFFFFFF00000000000000000000FFFFFFFF00000000FFFF000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000FF000000000000 %FFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %373533312E2E2E2E2E2F3031302F2E2D2D2D2E2E2F2F30303030303132333334323232313030302F3231313130302F2F2C2B2A282522211F1D1D1D1D1D1D1D1E1F202326292C2D2F3435373A3B3D3C3D3D3D3F41444647484A4A4A4A4949494847454344464848474A4B4C4D4E515253535456585B5D5E5F5F5D5B5957565656 %5C5C5D5F5F616363656566666665626260605E5C5A58575652514F4D4C4B4C4C4B4B4A494847474644444444444444444342424242424242424242424242424244444443413E3B3A373533312E2E2E2E2E2F3031302F2E2D2D2D2E2E2F2F30303030303132333334323232313030302F3231313130302F2F2C2B2A282522211F %1D1D1D1D1D1D1D1E1F202326292C2D2F3435373A3B3D3C3D3D3D3F41444647484A4A4A4A4949494847454344000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %FFFFFFFFFFFF0000000000000000FFFFFFFFFF000000FFFFFF0000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000FF000000000000FF %FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %373634312F2E2F2F2E2F3031302F2E2D2E2F2F2F303131313232323233333333333333333434343437373837393A3A3A353432302D2B2928232323232323232327292D3236393B3C4142444647474746464647494A4C4D4D4F4F4E4D4C4B4B4A4A48474647474848494A4B4D4D4F5052535456595B5C5C5D5C5B5A5857575758 %5C5D5E5F5F6062626364646564636060605F5E5D5B5958575452504E4C4C4C4C4A4A49494847474744444444444444444443434343434343434343434343434344444443413F3B3B373634312F2E2F2F2E2F3031302F2E2D2E2F2F2F303131313232323233333333333333333434343437373837393A3A3A353432302D2B2928 %232323232323232327292D3236393B3C4142444647474746464647494A4C4D4D4F4F4E4D4C4B4B4A4A484746000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00FFFFFFFFFF000000000000FFFFFFFFFF0000FFFFFFFFFFFF00000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000FFFF %FFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %383634322F2E2F2F2E2F3031302F2E2D3030303131323233343434343333333233333435363738383C3C3E404243454541403E3A373533322F2F2F2F2F2F2F2F33353B4045494B4B4E4F505151504F4E4D4E4E4F4F5050505251504F4D4C4B4A4A49484747474849494A4B4D4E505152535557595B5B5A5A5A5958575758595A %5C5D5D5E5E5F61616162626362615E5E605F5E5D5B5A59585554524F4D4C4C4C494948484847474744444444444444444443434343434343434343434343434343434342413F3D3A383634322F2E2F2F2E2F3031302F2E2D3030303131323233343434343333333233333435363738383C3C3E404243454541403E3A37353332 %2F2F2F2F2F2F2F2F33353B4045494B4B4E4F505151504F4E4D4E4E4F4F5050505251504F4D4C4B4A4A494847000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000FFFFFFFFFF00000000000000FFFF000000FF00FFFFFF000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFF %FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %383634322F2F2F302E2F3031302F2E2E313131323233333436363534333332323233343637393A3B3F40424447494B4C49484543403D3B3939393939393939393B3F444A50525556555657575655545352525252525252525252514E4E4C4B4A4A4A49484748494A494A4B4D4E5051525455585A5B5A59585857575757585A5B %5C5C5D5E5E5E5F606061616161605E5D605F5E5D5C5A5A59575553504E4D4D4D484848484847474744444444444444444443444344434443444344434443444442424242413F3D3B383634322F2F2F302E2F3031302F2E2E313131323233333436363534333332323233343637393A3B3F40424447494B4C49484543403D3B39 %39393939393939393B3F444A50525556555657575655545352525252525252525252514E4E4C4B4A4A4A4948000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000FFFFFFFFFF000000000000FF000000FFFFFF000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF %FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3A3937363231302F30303030303030302F303132333435343534343434333332363638393A3D3E3F4547494C4F525556565655545453535352514F4D4D4E505156585B5E5F62636363636261605F5D5D5F5E5C5B5A5A5B5B5A595754514E4C4B4C4C4B4A4948474648494A4B4D4E4F4F52525354555657575354565758585857 %5A5A5A5B5B5B5B5B5E5E5E5D5D5D5D5D5E5D5D5B5A59585757565553514E4C4C4B49474544424343444445464645454543434343434343434646454544444343444342413F3E3D3C3A3937363231302F30303030303030302F303132333435343534343434333332363638393A3D3E3F4547494C4F5255565656555454535353 %52514F4D4D4E505156585B5E5F62636363636261605F5D5D5F5E5C5B5A5A5B5B5A595754514E4C4B4C4C4B4A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000FFFFFFFFFF000000000000FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF %FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3A393936343231303031313131313131303031323333333333333433333333333637383A3C3E40404647494D4F5355565A5A59595958585859585755555657585D5F616467686969676766656463626261605E5C5B5B5C5C5A595754514E4D4B4C4C4B4A4948474748494A4B4C4D4E4F50515253545555565253545657565655 %585859595A5B5B5C5C5C5C5C5B5B5B5A5C5C5B5A5958585857565452504D4B4B4A48464443424343434445464645444343434343434343434645454444434343434342413F3E3D3D3A393936343231303031313131313131303031323333333333333433333333333637383A3C3E40404647494D4F5355565A5A595959585858 %59585755555657585D5F616467686969676766656463626261605E5C5B5B5C5C5A595754514E4D4B4C4C4B4A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000FFFFFFFFFF00000000000000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3D3B3B383634333232323232323231323131313232323232313132333333333337383A3C3E40424247484A4D505456575E5E5F5F5F5F5F5F636160616061626366686A6D6F7071716D6C6C6B6A6968676463615F5E5E5E5E5A59575552504E4D4D4D4C4B4A4948484848494A4B4C4D4D4E4F4F50515253545152535455545453 %55555658595A5B5C5A5A5959585857575959585858585858555553504E4D4B4A4947454342424343434445464645444343434343434343434545454444434342434241413F3F3E3D3D3B3B383634333232323232323231323131313232323232313132333333333337383A3C3E40424247484A4D505456575E5E5F5F5F5F5F5F %636160616061626366686A6D6F7071716D6C6C6B6A6968676463615F5E5E5E5E5A59575552504E4D4D4D4C4B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000FFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF00 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3E3E3B3A3736353434343434343434333132323131313030303031313232313238393A3D3F42444548494B4E5155575860606162626364646A6969696A6A6B6B6D6E71737576767670706F6E6D6C6B6B68666462616060605A5A585653514F4E4E4E4D4C4B4A49494949494A4B4B4C4C4D4D4E4F505152525051525354535251 %52535456585A5B5C585857565555545455565656565657575453514F4D4B4A49484644434242434342434445454443424343434343434343454444444342424242424140403F3E3E3E3E3B3A3736353434343434343434333132323131313030303031313232313238393A3D3F42444548494B4E515557586060616262636464 %6A6969696A6A6B6B6D6E71737576767670706F6E6D6C6B6B68666462616060605A5A585653514F4E4E4E4D4C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF0000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %403F3D3A39363635343434343433333332323231302F2F2E2F2E2F303131313137383A3D40434546494A4C4F525658595F5F6062636465666C6D6D6E6F7070707072747677787878727171706F6D6D6C6B696765636162625B5A5857555351504F4F4E4D4C4B4A4A4A4A4A4B4B4C4C4C4D4D4E4F505152525152535454535251 %5252545557595A5B585857555453525253535453535454555251504E4C4A4847454543424242434442434445454443424343434343434343444444434242424141414140403F3F3F403F3D3A39363635343434343433333332323231302F2F2E2F2E2F303131313137383A3D40434546494A4C4F525658595F5F606263646566 %6C6D6D6E6F7070707072747677787878727171706F6D6D6C6B696765636162625B5A5857555351504F4F4E4D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %403F3E3C393735353334343433333434333332312F2D2D2C2D2D2D2F3031323136373A3D404345464A4B4D505357595A5D5E5F61636567686D6E707172727272727475777979797874737372706F6F6E6D6B6966646362625B5A59575654535250504F4E4D4C4B4B4C4C4C4C4C4C4C4C4E4F4F50515253545555565656555352 %5354555657595A5A5959585655535250525152525252515151504E4C4A48464544434241414243444142434444434241434343434343434344434342424141414040404040404040403F3E3C393735353334343433333434333332312F2D2D2C2D2D2D2F3031323136373A3D404345464A4B4D505357595A5D5E5F6163656768 %6D6E707172727272727475777979797874737372706F6F6E6D6B6966646362625B5A59575654535250504F4E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF0000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %403F3D3B383735353333333233333333343433312F2C2C2B2B2C2C2E2F3031313536393C3F4345464B4C4E5153585A5B5D5E60636568696A6E6F717475757574757678797A7A7A7A77777675747372726E6C6A67646362625B5B5958575554535151504F4E4D4C4C4E4E4E4E4E4D4D4D50515253545555565858595958575554 %55565657585859595B5B59585654525252525251504F4E4E504F4D4B4946444343424241414243444142434444434241434343434343434343434342424141404040404040404040403F3D3B383735353333333233333333343433312F2C2C2B2B2C2C2E2F3031313536393C3F4345464B4C4E5153585A5B5D5E60636568696A %6E6F717475757574757678797A7A7A7A77777675747372726E6C6A67646362625B5B5958575554535151504F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000FFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %403F3D3B393735333333323233333333343433312D2C2B2A2B2B2C2D2F3031313435383B3F4245464B4C4F5254585A5C5E606264676A6C6D6F7073767777767677787A7B7C7C7B7B7A7A7978777675746E6D6A67646362625B5B5A58575655535151504F4E4D4C4C4F4F4F4F4F4E4E4E52525354555657575A5A5B5B5A585756 %57575758585859595D5C5B5957555453535251504F4D4D4C4F4E4C494746454443424141414243444142434343434241434343434343434343434242414140403F3F404040404141403F3D3B393735333333323233333333343433312D2C2B2A2B2B2C2D2F3031313435383B3F4245464B4C4F5254585A5C5E606264676A6C6D %6F7073767777767677787A7B7C7C7B7B7A7A7978777675746E6D6A67646362625B5B5A58575655535151504F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000FFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF00000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3D3D3C3A393837353232313131333435343332302E2D2C2B2C2C2C2B2D2F313237383A3D40424445484B505353575B5F5D5E63676A6C6E6E6F6F71727475777776777777787879797A7A79787776757571706E6A676462605F5E5B59575656565251515151525353555453525150514F4F515356585959595B5B5B5B5B5C5C5C %595A5C5D5D5D5C5B5E5D5C5A59575655504F4D4C4B4C4E4F4E4D4C4948464544424242424242424243434343434343434141424343444545454544434342414141414141424242423D3D3C3A393837353232313131333435343332302E2D2C2B2C2C2C2B2D2F313237383A3D40424445484B505353575B5F5D5E63676A6C6E6E %6F6F71727475777776777777787879797A7A79787776757571706E6A676462605F5E5B595756565652515151000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF0000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3E3D3C3A373734353231313031323435343432302F2D2D2C2C2C2C2C2C2F313237383A3C3F424445474B4F5253565B5E5D5F62666A6C6E6E6F6F7172747577777777787879797A7A7B7B7A797877767672716E6B686563615F5D5B5856555455515251525353535355555353535251515052545759595A5A5A5A5A5B5B5C5C5C %5B5C5D5E5E5E5D5C5E5D5C5B59575656504F4E4C4C4D4E4F4C4C4A4848474645424242424242424243434343434343434141424343444545454544434342414141414141424242423E3D3C3A373734353231313031323435343432302F2D2D2C2C2C2C2C2C2F313237383A3C3F424445474B4F5253565B5E5D5F62666A6C6E6E %6F6F7172747577777777787879797A7A7B7B7A797877767672716E6B686563615F5D5B585655545551525152000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF00000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3F3E3C3A363532323030302F3031333335343331302E2D2C2B2B2B2B2C2E30313637393C3E414344474A4F5152555A5E5D5F63666A6C6E6E6F6F717274757777787879797A7A7B7B7C7C7B7A797877777472706D6A6764635E5D5A575554525351515252535454545555555454535353535456585A5B5B5B5A5A5A5B5B5C5C5C %5D5F606160605E5E5E5E5D5B5958575651504F4D4D4D4D4E4A4A484848474746434343434343434343434343434343434242424343444444444444434342424242424242414141413F3E3C3A363532323030302F3031333335343331302E2D2C2B2B2B2B2C2E30313637393C3E414344474A4F5152555A5E5D5F63666A6C6E6E %6F6F717274757777787879797A7A7B7B7C7C7B7A797877777472706D6A6764635E5D5A575554525351515252000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000FFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF00000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF0000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3F3E3C3836323130302F2F2E2F30313235353232302F2D2C2A2A2B2B2C2D30313536383B3D40424346494E505154595D5D5F63676A6C6E6E6F6F71727475777779797A7A7B7B7B7C7D7D7C7B7A7978787574716E6B6865645E5D5A5754525151515152535455555656565656565555555557595B5C5C5C5C5A5A5B5B5C5D5D5E %616263636261605F5F5E5D5C5A5857575151504F4E4D4D4D4948484747474747434343434343434343434343434343434343434343434343434343434343434342424242414141413F3E3C3836323130302F2F2E2F30313235353232302F2D2C2A2A2B2B2C2D30313536383B3D40424346494E505154595D5D5F63676A6C6E6E %6F6F71727475777779797A7A7B7B7B7C7D7D7C7B7A7978787574716E6B6865645E5D5A575452515151515253000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF000000000000FFFF0000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3D3D3A383432302F2F2E2E2D2E2F313235343231302E2C2C2B292A2A2B2C2F303435373A3C3F414244484D4F5053585B5D5F63676A6C6E6E6F6F71727475777779797A7A7B7B7B7C7D7D7C7B7A7978787574726F6B6866655F5D5A575452505151515253545657575757575757585858585A5B5D5E5E5E5D5A5B5B5C5D5F6061 %646465656463615F5F5F5E5C5A595857515251504F4E4C4C4848484747474645444444444444444443434343434343434343434343434343434343434343434343434342414040403D3D3A383432302F2F2E2E2D2E2F313235343231302E2C2C2B292A2A2B2C2F303435373A3C3F414244484D4F5053585B5D5F63676A6C6E6E %6F6F71727475777779797A7A7B7B7B7C7D7D7C7B7A7978787574726F6B6866655F5D5A575452505151515253000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000FFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF000000000000FFFF000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF00000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3A39363432302F2E2D2D2C2D2E2F31333332302E2D2C2B2A2A2A2A2B2D2F30333436393B3E404143474C4E4F52575A5D5F63676A6C6E6E6F6F717274757777787879797A7A7B7B7C7C7B7A797877777574726E6B686664615F5C5855515151505152535557585858585859595A5A5A5B5C5E5F60605F5E5C5C5D5E61626364 %65666666656361605F5F5E5D5B59585853535352504E4C4B494848474646454444444444444444444343434343434343444444434342424242424243434444444444434241403F3F3C3A39363432302F2E2D2D2C2D2E2F31333332302E2D2C2B2A2A2A2A2B2D2F30333436393B3E404143474C4E4F52575A5D5F63676A6C6E6E %6F6F717274757777787879797A7A7B7B7C7C7B7A797877777574726E6B686664615F5C585551515150515253000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF000000000000FFFF00000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF0000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %38383735343231302C2D2C2C2C2D2F303231302F2D2B2A2A2A2A29292B2C2E2F323335383B3D3F4043464B4D4E52565A5D5F63676A6C6E6E6F6F7172747577777777787879797A7A7B7B7A79787776767473716E6A67656463605D595552525150515254565759595858595A5A5B5C5C5D5E60616161605F5C5D5F6163656667 %666666666563615F60605F5D5B5A595853525353514E4C4A4A4948474644434345454545454545454343434343434343454544434342414141414243434445454544434241403F3E38383735343231302C2D2C2C2C2D2F303231302F2D2B2A2A2A2A29292B2C2E2F323335383B3D3F4043464B4D4E52565A5D5F63676A6C6E6E %6F6F7172747577777777787879797A7A7B7B7A79787776767473716E6A67656463605D595552525150515254000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000FFFF000000000000FFFF0000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF00000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %37363634343231312D2C2B2B2C2D2E2F31302F2E2C292828292829292A2C2E2F31333537393D3F4042464A4D4E5156595D5F63676A6C6E6E6F6F71727475777776777777787879797A7A7978777675757473706D6A67656364625E5A56545152505152545658595A5859595A5B5C5C5D5F606162616060605F5F616264666868 %666666666462605F61605F5D5C5A595853545352514E4B494B4A494745434241454646464646464644444444444444444545444343424141414142434344454545454442413F3E3E37363634343231312D2C2B2B2C2D2E2F31302F2E2C292828292829292A2C2E2F31333537393D3F4042464A4D4E5156595D5F63676A6C6E6E %6F6F71727475777776777777787879797A7A7978777675757473706D6A67656364625E5A5654515250515254000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000FFFF000000000000FFFF000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %373533323334322F2D2C2A28282A2B2B2D2D2C2C2C2C2B2B28292B2D2F2F2F2F313134373A3D3F4047484A4C4F5153545B5D606366696A6A6F70717273747576767676767778797A767677777776747372716F6D6A6866656362605D5A575554575656555657595A5B5B5B5B5C5E606163636464656566666464646464656565 %66666666656565656161605F5D5C5A5A565553504E4D4D4D4A49474544444443444546474746454443434343434343434444444444444444444444444444444442424242413F3C3B373533323334322F2D2C2A28282A2B2B2D2D2C2C2C2C2B2B28292B2D2F2F2F2F313134373A3D3F4047484A4C4F5153545B5D606366696A6A %6F70717273747576767676767778797A767677777776747372716F6D6A6866656362605D5A57555457565655000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000FFFF00000000FFFF000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %383633323435322F2C2B292929282A292B2B2B2B2A2A2A2A28292C2E2F303030323335373B3D3F4147484A4B4F5153545A5C5F63666869696E6F7071727475757575757676777879767677777775747372716F6D6B6867666362605D5B585655575756565658595A5B5B5B5B5D5F616364646465656666666565656565666666 %67676666666565656261605F5D5B5A5A575653504D4C4B4B4948464543434444434445464645444343434343434343434444444444444444444444444444444443434342413F3D3B383633323435322F2C2B292929282A292B2B2B2B2A2A2A2A28292C2E2F303030323335373B3D3F4147484A4B4F5153545A5C5F6366686969 %6E6F7071727475757575757676777879767677777775747372716F6D6B6867666362605D5B58565557575656000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000FFFF000000FFFFFF00000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %383633323434322F2C2B2828272728282828282828282828282A2C2E30313131333436383B3E404146484A4B4F5153545A5C5F62646667676C6C6E6F717374747474757576767676757677777675737271716F6D6B6968676463615F5C5957565958575758595A5B5B5B5B5C5E61636565656566666767686767676767676767 %68676766666565656161605E5C5B5A595856534F4C4A49494947464443424343424344454544434243434343434343434444444444444444444444444444444444444443413F3C3B383633323434322F2C2B2828272728282828282828282828282A2C2E30313131333436383B3E404146484A4B4F5153545A5C5F6264666767 %6C6C6E6F717374747474757576767676757677777675737271716F6D6B6968676463615F5C59575659585757000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %383432323434312F2B2A2726262526252525252626272727292A2D2F31323333353538393C3E404146484A4C4F515354595B5D6063646565696A6B6D6F7172737273747575747473747575757574727170706E6D6B696867656462605D5B5A595A5A5959595A5C5D5C5C5D5E6063656766676767686869696969696868676767 %686867666565646461605F5E5C5A59595856534F4B4847464846454342414242414143434343414143434343434343434343434343434343444444444444444444444443413E3B3A383432323434312F2B2A2726262526252525252626272727292A2D2F31323333353538393C3E404146484A4C4F515354595B5D6063646565 %696A6B6D6F7172737273747575747473747575757574727170706E6D6B696867656462605D5B5A595A5A5959000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %363331313232302D2A292625242324232223232424242626292A2D30333434353638393A3D3F404146484A4C4F515354585A5C5F616262626667696B6D6F71727172737474737170727273737371706F6E6E6D6B6A696867656563615F5D5C5B5C5B5A5A5B5C5E5F5F5F5F6061646667686869696A6A6A6B6A6A6A6968686767 %686767656463626260605F5D5B5A59585755514D4A47464547454342414041414041424343424140434343434343434343434343434343434444444444444444444443423E3C3A38363331313232302D2A292625242324232223232424242626292A2D30333434353638393A3D3F404146484A4C4F515354585A5C5F61626262 %6667696B6D6F71727172737474737170727273737371706F6E6E6D6B6A696867656563615F5D5C5B5C5B5A5A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %34312F2F30302D2B29272624222121212121222324242626292B2E313435353738383A3C3E40414146484A4C4F51535458595B5E5F606060636466686B6E70716F71727373716F6D6F707070706F6D6C6C6B6B6A6867666666666463615F5E5E5D5D5C5C5C5E5F606262616263646667696A6A6B6B6C6C6C6B6B6A6968676666 %676665646261605F605F5E5D5B5958585553504C4947464546444241403F40404041424343424140434343434343434342424242424242424444444444444444434342403D3A373534312F2F30302D2B29272624222121212121222324242626292B2E313435353738383A3C3E40414146484A4C4F51535458595B5E5F606060 %636466686B6E70716F71727373716F6D6F707070706F6D6C6C6B6B6A6867666666666463615F5E5E5D5D5C5C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %312F2C2C2E2D2B2828272522212020202021222224242627292B2E32353738373A3A3C3D3F40414246484A4C4F51535457585A5D5E5F5F5E616264676A6C6F706E70727372706D6B6C6D6E6E6D6C6B6A6969686867666565676665646261605F5E5E5D5D5E5F606066656463636465666B6B6B6C6C6D6D6D6B6A696867666564 %66656462605E5D5C5F5F5E5C5A59585753514E4B49474746454442403F3F3F3F41424344444342414343434343434343424242424242424244444444444444444241403D3B383533312F2C2C2E2D2B2828272522212020202021222224242627292B2E32353738373A3A3C3D3F40414246484A4C4F51535457585A5D5E5F5F5E %616264676A6C6F706E70727372706D6B6C6D6E6E6D6C6B6A6969686867666565676665646261605F5E5E5D5D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %302D2B2B2C2C292729272421201F1F1F1F21222323262727292B2E32353737393A3B3C3E3F40414246484A4C4F51535457585A5C5D5E5E5D60616366696C6E6F6E6F7173726F6C696B6B6C6C6C6A6968686867666665646467676664636261605F5F5E5E5E5E606268676564646464656B6B6C6C6D6D6E6E6B6A696866656464 %656463615F5D5C5B5F5F5D5C5A595857514F4D4A484747474443413F3E3E3E3F424243444443424243434343434343434242424242424242444444444444444441403F3D3A373331302D2B2B2C2C292729272421201F1F1F1F21222323262727292B2E32353737393A3B3C3E3F40414246484A4C4F51535457585A5C5D5E5E5D %60616366696C6E6F6E6F7173726F6C696B6B6C6C6C6A6968686867666665646467676664636261605F5F5E5E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %292827262627282924232221201E1E1D1E1E1F21222526262A2C2E3134363A3B3F3F3F40404141424345484A4D50525459585858585A5C5D60616365686A6C6D70706F6E6E6D6C6C696A6B6C6B6A686664646565666667676766646262605F5E605F5E5C5D60626465666769696867676D6D6C6C6B6B6A6A6969686766666565 %6462605E5D5D5E5E5C5D5D5C5A5754524F4E4D4C4A48474742424242424141413E3F4243444342414041424445454444434343434343434344444546464543423E3E3D3A36322D2B292827262627282924232221201E1E1D1E1E1F21222526262A2C2E3134363A3B3F3F3F40404141424345484A4D50525459585858585A5C5D %60616365686A6C6D70706F6E6E6D6C6C696A6B6C6B6A686664646565666667676766646262605F5E605F5E5C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2727262425252727232322211F1E1E1D1E1F2021232426272A2C2E3133373A3A3F3F4040414141424445484A4D50525358575757585A5B5C5F61626567696B6C6F6E6E6D6D6C6B6B68696A6B6A69676664646465656666676666646261605F5E5F5F5D5E5F606364656667696A6A69696D6D6C6C6B6B6A6A6A6A696766656463 %63615F5D5C5C5D5D5B5B5C5B59565452504F4E4C4B49484743434342424241413E404143434342414041434445454444434343434343434344444546454443423E3D3B3836312D2A2727262425252727232322211F1E1E1D1E1F2021232426272A2C2E3133373A3A3F3F4040414141424445484A4D50525358575757585A5B5C %5F61626567696B6C6F6E6E6D6D6C6B6B68696A6B6A69676664646465656666676666646261605F5E5F5F5D5E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2524232323232425222121201F1E1E1D1F1F2122242527282B2C2F3234383A3C3F404040414242424546474A4D4F51525656565657595B5C5F5F61636567696A6C6C6C6B6B6A6A6A6768686968676665636464656566666666656463615F5E5E5E5E5E5E606163646466686A6B6C6C6B6D6D6C6C6B6B6A6A6B6B696765636261 %61605E5C5B5B5B5B5A5A59595755535251504F4D4C4A494844444443434242413F404142434342424041434445444343434343434343434344454545454342413D3C3A37332F2B292524232323232425222121201F1E1E1D1F1F2122242527282B2C2F3234383A3C3F404040414242424546474A4D4F51525656565657595B5C %5F5F61636567696A6C6C6C6B6B6A6A6A6768686968676665636464656566666666656463615F5E5E5E5E5E5E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %22222120202122232120201F1F1E1E1D20212224242628292B2D2F3135383A3C40404041414242434446474A4C4E50515454545556595B5C5D5E5E616365666769696968686868686666666665646463636363646565656665656462605F5E5D5D5E5E60616364656566696B6D6E6E6E6D6D6C6C6B6B6A6A6C6B696765626160 %5F5E5D5C5B5A595958585757555453525252514F4D4C4B4A464645444343424240404142424243424142434444444342434343434343434344454545444241403B3A3734312D2A2722222120202122232120201F1F1E1E1D20212224242628292B2D2F3135383A3C40404041414242434446474A4C4E50515454545556595B5C %5D5E5E616365666769696968686868686666666665646463636363646565656665656462605F5E5D5D5E5E60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %21201F1F1F1F2021202020201F1F1F1F212223252527292A2C2D303236383B3D4041414242434343444547494B4D4F4F5253535456585A5C5C5D5D5F6162636465656566666666666564646362626262626363636465656565646362605E5D5D5C5D5F616364656566686A6D6F7070706D6D6C6C6B6B6A6A6B6A69666462605F %5D5D5D5C5B5A58585857565554535353545352514F4D4C4C48484746444342424140414141424343424344444443424143434343434343434545454543413F3E3A3835312E2A272721201F1F1F1F2021202020201F1F1F1F212223252527292A2C2D303236383B3D4041414242434343444547494B4D4F4F5253535456585A5C %5C5D5D5F6162636465656566666666666564646362626262626363636465656565646362605E5D5D5C5D5F61000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %20201F1E1E1F202021212121212121212223242627282A2B2C2E303235393C3D4141414243434344444547494B4C4D4E5151515355575A5C5B5B5C5C5E6060616262626363646464636261605F6060616262626363646465646463615F5E5D5C5B5D5F6264656666696A6C6E707070706D6D6C6C6B6B6A6A6A69686664626060 %5D5D5D5D5C5A5857585756545454545556555452514F4E4D4A494847454443424141404041424344434344454443414043434343434343434545454443413E3D3936332F2B28262520201F1E1E1F202021212121212121212223242627282A2B2C2E303235393C3D4141414243434344444547494B4C4D4E5151515355575A5C %5B5B5C5C5E6060616262626363646464636261605F6060616262626363646465646463615F5E5D5C5B5D5F620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %20201E1E1E1E202022222222222223232324252728292B2C2D2E3033363A3C3E4142424243434444454547494A4B4C4D4F4F505254575A5B5A5A5B5B5D5E5E5F5F6060616162636362615F5E5D5E5F606162616262636464646362615F5D5C5C5A5C6063656667666C6D6E70717170706D6D6C6C6B6B6A6A6867666564626161 %5D5E5E5E5D5B595759575654545556575756555352504F4E4B4B4948464443424241404040424345444445454443414043434343434343434545454442403D3C3835312B2925252320201E1E1E1E202022222222222223232324252728292B2C2D2E3033363A3C3E4142424243434444454547494A4B4C4D4F4F505254575A5B %5A5A5B5B5D5E5E5F5F6060616162636362615F5E5D5E5F606162616262636464646362615F5D5C5C5A5C6063000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %20201F1E1E1E202022232323232424242324242728292A2B2C2E3134373A3C3E4142424343444444454647484A4B4C4D4F4E505154575A5B595A5A5B5C5D5D5D5E5E5F606061626262605E5D5C5D5E5F6161626163626364646362605F5D5C5B5A5C6063666767676E6E70717171706F6D6D6C6C6B6B6A6A6666656564636262 %5D5E5F5F5E5C59585958565454555758575756545251504F4C4B4A48464443424241403F404144454444454544424140434343434343434345454544423F3D3B3635302B2724242320201F1E1E1E202022232323232424242324242728292A2B2C2E3134373A3C3E4142424343444444454647484A4B4C4D4F4E505154575A5B %595A5A5B5C5D5D5D5E5E5F606061626262605E5D5C5D5E5F6161626163626364646362605F5D5C5B5A5C606300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %1E1E1D1F1F20202123232424232222232525252525282A2B2D2F3134373B3C3C40404142434445464545464748494A4A4C4D4E5153565758595959595A5B5D5E5C5D5E5F5E5F5C5D5D5E5D5E5D5E5D5E5F5F60606162626161605F5D5C5C5D5D5E5F60636568696A6E6E6E6E6F6F6F6F6D6E6E6E6D6B69686665656464636363 %605F5E5D5C5B5A5A575758585857555457575655555453534D4D4D4C4A47454342424242424343434142434444434241424142424241414140414444423F3B3832302D29262524231E1E1D1F1F20202123232424232222232525252525282A2B2D2F3134373B3C3C40404142434445464545464748494A4A4C4D4E5153565758 %595959595A5B5D5E5C5D5E5F5E5F5C5D5D5E5D5E5D5E5D5E5F5F60606162626161605F5D5C5C5D5D5E5F60630000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %1E1E1F1F202020202525242424242423262525252728292C2D2F3236383B3C3C3F404041434444454545464748494A4B4C4D4F5153555758595959595A5C5E5F5D5D5F5F5F5F5D5D5E5E5E5E5E5E5E5E5E5E5F606162626361605E5D5C5C5D5D5E5F61636567696A6C6D6D6E6F6F70706E6F6F6F6E6C6A696666656564646363 %60605F5E5D5C5B5B585859595857565557575655545353524D4D4D4C4A48464443434344444444444343454545454343434242424241414140414344413D39362F2E2A28252423231E1E1F1F202020202525242424242423262525252728292C2D2F3236383B3C3C3F404041434444454545464748494A4B4C4D4F5153555758 %595959595A5C5E5F5D5D5F5F5F5F5D5D5E5E5E5E5E5E5E5E5E5E5F606162626361605E5D5C5C5D5D5E5F6163000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF000000FF000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %1F1F202021212222252524242525252427272626282A2B2D2E303336383B3B3C3E3F3F404243434445464748494A4B4B4D4D4F5153555757595858585A5B5D5E5D5D5F5F5F5F5D5D5D5D5D5D5D5D5D5D5C5D5E5F6062636361605E5D5C5D5E5E5F5F6163656769696A6B6C6D6E707171707070706F6D6B6A6767666665656464 %6161605F5E5D5C5C59595A5A5A58575657575655545352514E4E4E4D4C49474645454544444444444445464646464544444343434241414140414343403B37342D2A2825242222211F1F202021212222252524242525252427272626282A2B2D2E303336383B3B3C3E3F3F404243434445464748494A4B4B4D4D4F5153555757 %595858585A5B5D5E5D5D5F5F5F5F5D5D5D5D5D5D5D5D5D5D5C5D5E5F6062636361605E5D5C5D5E5E5F5F616300000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF00000000FF00000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2020212122222323252524252626272728272728292A2D2E2F303337383A3B3B3D3E3F404142434346464748494A4B4B4D4E4F515355565758585858595B5D5E5D5D5F5F5F5F5D5D5D5D5D5D5D5D5D5D5B5B5C5E5F616262605F5E5D5D5D5E5F5F6061636567686968696B6C6E70717271717271706F6D6B6868676766666565 %63636261605F5E5D5A5B5C5C5B5A585758585755545351514F4F4F4F4D4B4948464646464545454445464748484746454544444342414140404142423E39343129272523212121212020212122222323252524252626272728272728292A2D2E2F303337383A3B3B3D3E3F404142434346464748494A4B4B4D4E4F5153555657 %58585858595B5D5E5D5D5F5F5F5F5D5D5D5D5D5D5D5D5D5D5B5B5C5E5F616262605F5E5D5D5D5E5F5F6061630000000000000000000000000000000000000000000000000000000000000000000000000000FFFF0000000000FF0000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %212122222323232324252627262729292A2A2A292B2C2F3031313438393A3B3B3D3E3F4041424343474748494A4B4C4C4E4F50515354555658575757585A5C5D5D5D5F5F5F5F5D5D5C5C5C5C5C5C5C5C5A5B5C5D5E5F60605F5E5D5D5D5E5F60606162636566676868696A6C6E6F717272727272716F6D6C6969686867676666 %65646362615F5F5F5C5C5D5D5D5C5A595A5A5857555352514F5050504F4E4C4B48484847464645454748494A4A4948474645454443414140404142403C36312E2624232121212122212122222323232324252627262729292A2A2A292B2C2F3031313438393A3B3B3D3E3F4041424343474748494A4B4C4C4E4F505153545556 %58575757585A5C5D5D5D5F5F5F5F5D5D5C5C5C5C5C5C5C5C5A5B5C5D5E5F60605F5E5D5D5D5E5F6060616263000000000000000000000000000000000000000000000000000000000000000000000000FFFF000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %22222322242424242426272828292A2B2C2C2A2B2C2E303132343538393A3B3B3E3F3F4042434344474748494A4B4C4D4F5050515354545557575757585A5C5D5D5D5F5F5F5F5D5D5C5C5C5C5C5C5C5C5B5C5C5C5D5D5D5D5E5E5D5C5D5E6061616262636566666769696A6C6D6E6F7071727272716F6D6C6A6A696968686767 %66666564636261615D5E5F5F5E5D5C5B5D5C5B59565453525051515151504E4D4A4A49484746454549494A4B4B4A494948464645434240404041413F3A342E2A242422222122222422222322242424242426272828292A2B2C2C2A2B2C2E303132343538393A3B3B3E3F3F4042434344474748494A4B4C4D4F50505153545455 %57575757585A5C5D5D5D5F5F5F5F5D5D5C5C5C5C5C5C5C5C5B5C5C5C5D5D5D5D5E5E5DFF5D5E60616162626300000000000000000000000000000000000000000000000000000000000000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %232324232424262626252628292B2C2C2D2C2C2D2E2F313333343639393B3B3B3F404041434444454748494A4B4C4D4D50505152525354545757565658595B5C5D5D5F5F5F5F5D5D5B5B5B5B5B5B5B5B5D5D5C5C5B5B5B5A5D5D5C5C5D5E606162626364646566666A6A6B6B6C6D6D6E71717171706E6C6B6B6B6A6A69696868 %67676665646362625F5F6060605E5D5C5F5E5D5B58565453515152535251504F4C4B4A49484746454A4A4C4C4C4C4A4A49474745434240404041403E39322C282322222122222524232324232424262626252628292B2C2C2D2C2C2D2E2F313333343639393B3B3B3F404041434444454748494A4B4C4D4D5050515252535454 %5757565658595B5C5D5D5F5F5F5F5D5D5B5B5BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFF000000000000000000FF00000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2223232424262626252527292A2B2C2D2E2D2D2C2E303233343436393A3B3B3A40404142434445464848494A4B4C4D4D50505152525354545756565657595B5C5D5D5F5F5F5F5D5D5B5B5B5B5B5B5B5B5E5E5D5C5B5A59585D5D5C5C5D5F606162626364646566666B6B6B6B6C6C6C6C707071706F6E6C6B6B6B6B6A6A696968 %68686766656463625F606061605F5D5C61605E5C5957555451525353535251504C4C4B49484746454A4B4C4D4D4C4B4A494847454342403F4040403E38312B2722222121222324252223232424262626252527292A2B2C2D2E2D2D2C2E303233343436393A3B3B3A40404142434445464848494A4B4C4D4D5050515252535454 %5756565657595B5C5D5D5F5F5F5F5D5D5B5BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFF00000000000000000000FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %242526262728282729292A2C2E2F30313233333333333332343436383A3C3D3E4041424444464849494A4C4D4E4D4D4C4E4F505152545555575757585859595A5E5E5E5E5E5E5E5E5C5C5C5C5D5D5D5D5C5C5C5B5B5B5B5B5B5B5C5E5F6061626363636464656565686869696A6B6B6B6E6E6F6F6E6C6B6967686A6B6C6C6B6A %6A6A696968686767666565646463636261615F5D5A58565557575654535251504C4B4B4A494847464C4D4E4E4E4E4D4C4846464442403F3E4040403D362F27222120202121222223242526262728282729292A2C2E2F30313233333333333332343436383A3C3D3E4041424444464849494A4C4D4E4D4D4C4E4F505152545555 %575757585859595A5E5E5E5E5E5E5E5E5C5CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF0000000000000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2525262727272729292A2B2C2E3031313333333333323233353437383A3C3D3E4041424444464849494A4C4D4E4D4D4C4D4E4F50525354555757585859595A5A5F5F5F5F5F5F5F5F5D5D5D5D5C5C5C5C5D5D5D5C5C5C5C5C5C5D5E5F606162636363636464656565676768696A6B6B6C6E6E6F6F6E6D6B6A68696B6C6D6C6C6B %6A6A6A6969686867666665656464636362615E5D5B59575658575655535251504C4C4B4A494847474B4B4C4D4D4C4B4B4846464442403F3E4040403D3630282321202221232224232525262727272729292A2B2C2E3031313333333333323233353437383A3C3D3E4041424444464849494A4C4D4E4D4D4C4D4E4F5052535455 %5757585859595A5A5F5F5F5F5F5F5F5F5DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %27272727282929292A2A2C2D2F3031323535353434353535353738393B3C3D3E4041424444464849494A4C4D4E4D4D4C4C4C4E4F51525454585859595A5A5B5B60606060606060605F5E5E5D5C5B5B5A5E5E5E5E5E5E5E5E5F5F606162636464636363646465656565666768696B6C6C6E6E6F6F6F6D6C6B696A6C6D6E6D6D6C %6B6A6A696968686867676666656564646362605E5B5A595859595756545251514C4C4B4A4948474749494B4B4B4B4949474545444241403F4040403D36302925222222232324242527272727282929292A2A2C2D2F3031323535353434353535353738393B3C3D3E4041424444464849494A4C4D4E4D4D4C4C4C4E4F51525454 %585859595A5A5B5B6060606060606060FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %28282728292A2A2A2B2B2D2E3031323335353636363636353838393A3C3D3E3E4041424444474849494A4C4D4E4D4D4C4A4B4C4E5052545459595A5A5B5B5C5C6161616161616161605F5E5D5C5B5A595E5E5E5F5F6060606162626364646565636363646465656564646567686A6B6B6C6D6E6F6F6E6C6C6A6B6D6E6E6E6D6D %6B6B6B6A696969686868676766666565636361605E5B5B5A5B5A5957555352514D4D4C4B4A4948474748494A4A494847464545444241404041403F3C36312B27232223232424252528282728292A2A2A2B2B2D2E3031323335353636363636353838393A3C3D3E3E4041424444474849494A4C4D4E4D4D4C4A4B4C4E50525454 %59595A5A5B5B5C5C6161616161616161FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2929292A2A2B2B2B2C2D2E2F3132343438383737373737383A3A3B3C3D3D3E3E4041414345474849494A4C4D4E4D4D4C494A4C4E505354555A5A5B5B5C5C5D5D6161616161616161605F5E5D5C5B5A595E5E5F5F606161616364646465656565636363646465656563646566676869696B6B6D6D6E6D6C6B6A6B6D6E6E6E6D6D %6C6B6B6B6A696969696968686767666664636261605E5D5D5D5C5A58565452504E4D4C4B4A4948484647484848484746454444434342414141413F3C36312C2924232424252526262929292A2A2B2B2B2C2D2E2F3132343438383737373737383A3A3B3C3D3D3E3E4041414345474849494A4C4D4E4D4D4C494A4C4E50535455 %5A5A5B5B5C5C5D5D6161616161616161FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2A2A2A2B2B2C2C2C2D2E2F303233353539383838383839393C3C3C3D3D3E3E3F4041414345474849494A4C4D4E4D4D4C494A4C4F515456575B5B5C5C5D5D5E5E60606060606060605F5E5E5D5C5B5B5A5D5D5E5F6061626264646565656565656363636464656565646565656666666668696A6C6C6C6B6A696A6C6D6E6D6D6C %6C6C6C6B6B6A6A696A6A6969686867676564646261605E5F5F5E5C59575452514E4E4D4C4B4A49494646474848474646454344434342424142413F3B36312E2B25242625272628272A2A2A2B2B2C2C2C2D2E2F303233353539383838383839393C3C3C3D3D3E3E3F4041414345474849494A4C4D4E4D4D4C494A4C4F51545657 %5B5B5C5C5D5D5E5E60606060606060605FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000FF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2A2B2B2C2C2D2D2D2E2E2F31323335353A3B3B3B3B3B3B3B3C3C3D3E3E3E3F3F4041414345474849494A4C4D4E4D4D4C4A4B4D50525557585C5C5D5D5E5E5F5F5F5F5F5F5F5F5F5F5D5D5D5D5C5C5C5C5B5C5D5E5F6061626565656464646464636363646465656566666565646464636567686A6A6A6A6968696B6C6D6C6C6B %6D6C6C6B6B6A6A6A6B6B6A6A696968686565646363626161605F5D5A575553514E4E4D4C4B4A49494647484848484746444344434342424242413F3B36322F2D26262627272828292A2B2B2C2C2D2D2D2E2E2F31323335353A3B3B3B3B3B3B3B3C3C3D3E3E3E3F3F4041414345474849494A4C4D4E4D4D4C4A4B4D5052555758 %5C5C5D5D5E5E5F5F5F5F5F5F5F5F5F5F5DFFFFFFFFFFFFFFFFFF5D5E5F606162656565FFFFFF64646363636400000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF000000000000000000FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2B2B2B2C2D2D2D2E2E2F3031333535353A3B3B3B3B3B3B3B3D3E3E3E3E3F3F3F4040424445474849494A4C4D4E4D4D4C4A4B4D505356585A5C5D5D5E5E5F5F5F5E5E5E5E5E5E5E5E5C5C5C5C5D5D5D5D5B5B5C5D5F606162656564646464636363636364646565656767666564636261646567686969696867686A6B6C6C6B6A %6D6D6C6C6B6B6A6A6B6B6B6A6A696968666565646363626261605E5B585553524F4E4D4C4B4A4A494647484949484746444443434343424242413E3B37322F2D26262627272828282B2B2B2C2D2D2D2E2E2F3031333535353A3B3B3B3B3B3B3B3D3E3E3E3E3F3F3F4040424445474849494A4C4D4E4D4D4C4A4B4D505356585A %5C5D5D5E5E5F5F5F5E5E5E5E5E5E5E5E5C5CFFFFFFFFFFFFFFFFFF5D5F606162656564FFFFFFFF63636363640000000000000000000000000000FFFF0000FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2D2D2E2F3031323333333433353536363C3C3C3D3D3E3E3E3F3F3F3F3E3E3E3E40404244454749494B4C4D4E4E4C4A494B4B4E50535658595C5C5D5D5E5E5F5F5F5E5E5D5C5B5B5A5F5F5E5D5C5B5A595B5B5C5D5E5F60606262636264646565656565656566666665646463626161606464656566666767676868696B6C6C6D %6D6D6C6C6B6B6B6A6A6A6A6A6A6A6A6A6B6B6968666563635F5E5C595755535251504F4E4D4C4B4B4A49494949494847444444434342424241403F3D3A3633312B2A2928292A2B2C2D2D2E2F3031323333333433353536363C3C3C3D3D3E3E3E3F3F3F3F3E3E3E3E40404244454749494B4C4D4E4E4C4A494B4B4E5053565859 %5C5C5D5D5E5E5F5F5F5E5E5D5C5B5B5A5F5FFFFFFFFFFFFFFFFFFF5D5E5F606062626362FFFF656565656565000000000000000000000000FFFF000000FFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2E2E2F303132333333333435343535363C3C3C3D3D3E3E3E3F3F3F3F3F3F3E3E40414244454748494A4B4D4D4D4C4B4A4B4B4E50535557585B5B5C5C5D5D5E5E5E5E5E5D5C5B5B5B5E5E5D5C5B5A59595A5A5B5C5D5E5F5F6161626263636464646464656565666665646463626261616464646565666667676868696B6C6C6D %6E6E6D6D6C6C6B6B6A6A6A6A6A6A6A6A6B6B6968666563635F5E5C5A575554535151504F4E4D4C4C494949494848484744444443434242424141403E3B3734322B2B2A29292A2B2B2E2E2F303132333333333435343535363C3C3C3D3D3E3E3E3F3F3F3F3F3F3E3E40414244454748494A4B4D4D4D4C4B4A4B4B4E5053555758 %5B5B5C5C5D5D5E5E5E5E5E5D5C5B5B5B5E5E5DFFFFFFFFFFFFFFFFFF5D5E5F5F6161626263FF64646464646500000000000000000000FFFF0000000000FFFFFFFFFFFFFFFFFF0000000000000000FF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %2F2F30313233343435353536353637383C3C3C3D3D3E3E3E3F3F3F3F3F3F3F3F41414244454748484A4B4C4C4C4C4B4A4C4D4D505254565759595A5A5B5B5C5C5E5D5D5D5C5C5B5B5D5D5C5B5A59585858595A5B5C5D5E5E5F5F606061616262636363646465656664646463636362626364646565666666676868696B6C6C6D %6F6F6E6E6D6D6C6C6A6A6A6A6A6A6A6A6B6B6968666563635F5E5C5B58565554525251504F4E4D4D494949484747464644444443434242424141403F3C3936342F2E2C2B2A2A2A2B2F2F30313233343435353536353637383C3C3C3D3D3E3E3E3F3F3F3F3F3F3F3F41414244454748484A4B4C4C4C4C4B4A4C4D4D5052545657 %59595A5A5B5B5C5C5E5D5D5D5CFFFFFF5D5D5CFFFFFFFFFFFFFFFFFF5C5D5E5E5F5F606061616262636363640000000000000000FFFF000000000000FFFFFFFFFFFFFFFFFF0000000000000000FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %303132333435363636373736373739393C3C3C3D3D3E3E3E3F3F3F40404041414142434445464748494A4A4B4B4B4B4B4D4E4E4F5253545456575758585959595C5C5C5C5C5B5B5B5C5B5A5958575656565758595A5B5B5C5D5E5E5E5F606060616162636464656564646464646363636363636465656566676868696B6C6C6D %706F6F6F6E6E6D6D6A6A6A6A6A6A6A6A6B6B6968666563635F5E5D5B5A5857565354535251504F4E4A4949484746454544444443434242424141413F3D3A373632312F2D2B2B2B2B303132333435363636373736373739393C3C3C3D3D3E3E3E3F3F3F40404041414142434445464748494A4A4B4B4B4B4B4D4E4E4F52535454 %56575758585959595C5C5C5CFFFFFFFF5C5B5A59FFFFFFFFFFFFFFFFFF5B5B5C5D5E5E5E5F60606061616263000000000000FFFF0000000000000000FFFFFFFFFFFFFFFFFF00000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3232333435363638383838383A3A3A3B3C3C3C3D3D3E3E3E3E3F3F40414142424243434445464647494949494A4B4C4C4E4F4F505151515254545455555656575A5A5A5A5A5A5A5A5A5A595857565554545555565758595A5C5C5D5D5E5E5F5F5F5F60616364656564646464646565656263636364656565676868696B6C6C6D %706F6F6F6E6E6D6D6A6A6A6A6A6A6A6A6B6B6968666563635F5F5E5C5B59585856555453525050504B4B4A494746454544444443434242424141403F3D39373634312F2D2C2B2B2C3232333435363638383838383A3A3A3B3C3C3C3D3D3E3E3E3E3F3F40414142424243434445464647494949494A4B4C4C4E4F4F5051515152 %54545455555656575A5A5A5AFFFFFFFF5A5A5958FFFFFFFFFFFFFFFFFF58595A5C5C5D5D5EFFFF5F5F5F606100000000FFFF000000000000000000FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %34343536373839393939393A3B3C3C3C3C3C3C3D3D3E3E3E3E3F3F4041424343434344444545464648484848494B4C4D4F4F50505050504F51515252535354545657575758585959585857565554535352525354555657585C5C5D5D5E5E5F5F5D5E5F606263646564646465656566666262626363646465676868696B6C6C6D %6F6F6E6E6D6D6C6C6A6A6A6A6A6A6A6A6B6B696866656363605F5E5D5C5B5A5A57575555545352524D4D4C4A4847464544444443434242423F3F3F3E3B3937363432302E2E2E2E2E34343536373839393939393A3B3C3C3C3C3C3C3D3D3E3E3E3E3F3F4041424343434344444545464648484848494B4C4D4F4F50505050504F %51515252535354545657575758FF59595858575655FFFFFFFFFFFFFFFFFF57585C5C5D5DFFFFFFFF5D5E5F600000FFFF0000000000000000000000FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3535363737393A3A3A3A3B3C3C3D3D3D3C3C3C3D3D3E3E3E3E3E3F4142434444444444444545454548474747484A4D4E5050504F4F4F4F4E4F4F5050515152525454545556565757575756555453525251515253545556565C5D5D5D5E5E5F5F5C5C5E5F6163646563646465666667676162626363646464676868696B6C6C6D %6E6E6D6D6C6C6B6B6A6A6A6A6A6A6A6A6B6B696866656363605F5F5E5D5C5B5B58585756545453524F4F4D4C4A48474644444443434242423D3E3E3D3C39373633333130303132323535363737393A3A3A3A3B3C3C3D3D3D3C3C3C3D3D3E3E3E3E3E3F4142434444444444444545454548474747484A4D4E5050504F4F4F4F4E %4F4F505051515252FFFF5455565657575757565554FFFFFFFFFFFFFFFFFF56565C5D5D5D5EFFFFFF5C5C5E5FFFFF000000000000000000000000FFFFFFFFFFFFFFFFFF00000000000000FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %35363738393A3B3A3A3A3C3C3D3D3E3E3C3C3C3D3D3E3E3E3E3E3F4142434445444444444545454548474646484A4D4F5150504F4F4E4E4E4E4E4F4F505051515252535454555656575655545352515150505152535455555D5D5D5E5E5F5F5F5B5C5D5F6163646563646465666767686161626263636464676868696B6C6C6D %6D6D6C6C6B6B6B6A6A6A6A6A6A6A6A6A6B6B696866656363605F5F5E5D5D5C5C595958575654545351504E4D4B49474744444443434242423C3D3D3B3B383735333231313132333435363738393A3B3A3A3A3C3C3D3D3E3E3C3C3C3D3D3E3E3E3E3E3F4142434445444444444545454548474646484A4D4F5150504F4F4E4E4E %4E4E4F4F5050FFFFFFFF535454555656575655545352FFFFFFFFFFFFFFFFFF555D5D5D5E5EFFFF5F5B5C5D5FFF00000000000000000000000000FFFFFFFFFFFFFFFFFF000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %35363738393A393A3C3C3C3D3D3E3E3E3C3B3B3A3A3B3D3E3D3E3E3F4041424343434343434343434647484A4B4D4E4F4F4F4E4E4D4D4C4C4C4C4D4D4E4E4F4F4E4F50515254555554545352515050504F4F4F50525456575657595A5B5B5B5A5C5C5D5E606162636262636364646565646364646464646462636567696C6E6E %6D6C6C6C6B6A6A6A6A6A6A6A6A6A6A6A68676665636160605C5C5C5C5C5C5C5C5B5C5D5C5B5855534F4D4E4D4C4B4B4A46474747464442413E3C3A3835353536323233333333333435363738393A393A3C3C3C3D3D3E3E3E3C3B3B3A3A3B3D3E3D3E3E3F4041424343434343434343434647484A4B4D4E4F4F4F4E4E4D4D4C4C %4C4C4D4D4EFFFFFFFFFF505152545555545453525150FFFFFFFFFFFFFFFFFF575657595A5B5BFF5A5C5C5D5EFF000000000000000000000000FFFFFFFFFFFFFFFFFF000000000000FF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %363638383939393A3C3C3C3D3D3E3E3E3C3C3B3A3A3B3C3D3D3D3E3F404142424343434343434343464748494B4D4E4E4F4F4F4E4E4D4D4C4C4B4C4D4D4E4E4F4E4F5051525354555352525150504F4F4F4F4F50525456575657595A5B5B5B5A5B5C5D5E5F6061626161606262636363626262636363636362626466696B6D6E %6D6C6C6B6B6A6A6A6969696969696969686766646361605E5C5C5C5C5C5C5C5C5C5C5C5C5A5855534F4F4E4E4E4D4D4D49494948474442413E3C3A38363535353333343434353535363638383939393A3C3C3C3D3D3E3E3E3C3C3B3A3A3B3C3D3D3D3E3F404142424343434343434343464748494B4D4E4E4F4F4F4E4E4D4D4C %4C4B4CFFFFFFFFFFFF4F5051525354555352525150504FFFFFFFFFFFFFFFFFFF5657595A5B5B5B5A5B5C5D5EFF000000000000000000000000FFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3838393938393A3A3C3C3C3D3D3E3E3E3D3C3B3A3A3B3C3D3D3D3E3F404142424242424242424242464647494B4C4D4E504F4F4E4E4D4D4D4B4C4B4C4C4D4E4E4E4E4F50515253535050504F4F4F4E4E4E4E4E50525456575758595B5B5B5A595B5B5C5D5E5F60605E5F5F605F60606062626262616262626162636567696B6C %6C6C6B6B6A6A6A6968686868686868686766656362605F5E5C5C5C5C5C5C5C5C5C5C5C5B595755534E4F504F505151514D4D4C4B484542403D3C3A363635353534353436353736383838393938393A3A3C3C3C3D3D3E3E3E3D3C3B3A3A3B3C3D3D3D3E3F404142424242424242424242464647494B4C4D4E504F4F4E4E4D4D4D %4B4CFFFFFFFFFF4E4E4E4F50515253535050504F4F4F4EFFFFFFFFFFFFFFFFFF5758595B5B5B5A595B5B5C5DFF0000000000000000000000FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3939393939393A3A3C3C3C3D3D3E3E3E3E3D3B3A3A3A3B3C3C3C3D3E3F4041424242424242424242454647484A4C4D4D4F4F4F4E4E4D4D4C4B4B4B4C4D4D4D4E4E4E4F4F505151514E4E4E4E4E4E4E4E4F4E4E4F5254565758595A5B5B5A59595A5A5B5B5C5D5D5E5C5C5D5D5D5D5E5F606060605F5F60606061626466676969 %6B6B6A6A69696868666666666666666666656462615F5E5D5C5C5C5C5C5C5C5C5C5C5B5A58565554505051525354545551504F4D494442403D3B3937353434343536363738393A3A3939393939393A3A3C3C3C3D3D3E3E3E3E3D3B3A3A3A3B3C3C3C3D3E3F4041424242424242424242454647484A4C4D4D4F4F4F4E4E4D4D4C %FFFFFFFFFFFF4D4E4E4E4F4F505151514E4E4E4E4E4E4E4EFFFFFFFFFFFFFFFFFF595A5B5B5AFFFF5A5A5B5BFF0000000000000000000000FFFFFFFFFFFFFFFFFF0000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3A3A3A393A3A3A3A3C3C3C3D3D3E3E3E3F3E3C3B3A3A3A3B3B3C3D3E3F4041414141414141414141444446484A4B4C4D4E4E4E4D4C4C4C4B4A4B4B4B4C4C4D4D4D4E4E4E4F4F4F4F4D4D4D4D4D4E4E4E4F4F4E4F5154565759595A5B5B5A595859595A5A5A5B5B5B5A5B5B5C5C5D5D5D5F5F5F5F5F5F5E5F5F60616264656667 %6968686767666666656565656565656565646361605E5D5C5C5C5C5C5C5C5C5C5C5B5A585655545452525354555556565352514E4A4542403C3B39363534343436353637383A3B3B3A3A3A393A3A3A3A3C3C3C3D3D3E3E3E3F3E3C3B3A3A3A3B3B3C3D3E3F4041414141414141414141444446484A4B4C4D4E4E4E4D4C4C4C4B %FFFFFFFF4C4C4D4D4D4E4E4E4F4F4F4F4D4D4D4D4D4E4E4EFFFFFFFFFFFFFFFFFF595A5B5B5AFFFFFF595A5AFF00000000000000000000FFFFFFFFFFFFFFFFFF0000000000FF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3B3B3A3A3B3A3A3A3C3C3C3D3D3E3E3E3F3E3C3B3A393A3A3B3B3C3D3E3F4040414141414141414143444647494B4C4C4C4C4C4B4B4A4A4A4A4A4A4B4A4B4B4C4D4D4D4D4D4E4E4E4C4D4D4D4E4E4F4F4F4F4E4F51535657595A5B5B5B59585758595959595959595A5A5A5B5B5C5C5C5D5D5D5D5D5D5C5C5F5F606162636465 %66666565646463636363636363636363646362605F5D5C5B5C5C5C5C5C5C5C5C5D5B59575554545454545355555556565352514E4B4643413C3A38363433323335353637393A3C3C3B3B3A3A3B3A3A3A3C3C3C3D3D3E3E3E3F3E3C3B3A393A3A3B3B3C3D3E3F4040414141414141414143444647494B4C4C4C4C4C4B4B4A4A4A %FFFFFF4B4A4B4B4C4D4D4D4D4D4E4E4E4C4D4D4D4E4E4F4F4FFFFFFFFFFFFFFFFFFF5B5B5B59FFFFFF595959FF00000000000000000000FFFFFFFFFFFFFFFFFF00000000FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3C3C3C3B3A3A393C3C3C3D3D3E3E3E403F3D3B3A39393A3B3B3C3D3E3F4040404040404040404043434547494A4B4C4A4A4A4949484848494A4A4B4B4C4C4B4D4D4D4D4D4C4C4C4D4D4D4E4F4F50504F4F4F50515356575A5B5B5B5A59575658585858575757575A5A5A5B5B5C5C5C5C5C5C5C5C5C5B5B5E5E5F6061626263 %636363626161616062626262616261626362615F5E5C5B5A5C5C5C5C5C5C5C5C5D5B58565454545456565555555554545151504E4B4744423B3A373534333233343536383A3B3D3D3C3C3C3C3B3A3A393C3C3C3D3D3E3E3E403F3D3B3A39393A3B3B3C3D3E3F4040404040404040404043434547494A4B4C4A4A4A4949484848 %494A4A4B4B4C4C4B4D4D4D4D4D4C4C4C4D4D4D4E4F4F50504FFFFFFFFFFFFFFFFFFF5B5B5A59FFFFFF585858FF000000000000000000FFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3E3D3D3C3B3A3A393C3C3C3D3D3E3E3E403F3D3B393939393A3B3C3D3E3F3F40404040404040404043434547484A4B4C494949484847474749494A4A4B4B4C4C4D4D4D4C4C4C4C4B4D4D4E4E4F5051514F4F4F4F515456575A5B5B5B5A59575658585757575656565A5A5A5B5B5C5C5D5B5B5B5B5B5B5B5B5D5D5F5F60616262 %62616160605F5F5F61606060606061616262615F5D5C5B5A5C5C5C5C5C5C5C5C5D5B585554535455575756555454535350504F4D4A4644423B3936353333333334343637393B3D3D3E3D3D3C3B3A3A393C3C3C3D3D3E3E3E403F3D3B393939393A3B3C3D3E3F3F40404040404040404043434547484A4B4C494949FFFFFF4747 %49494A4A4B4B4C4C4D4D4D4C4C4C4C4B4D4D4E4E4F5051514F4FFFFFFFFFFFFFFFFFFF5B5A59FFFFFF585757FF000000000000000000FFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3B3C3C3C3C3A3838393939393B3D3F403C3D3C3C3B3B3A3A3B3B3C3E3F404142424242424141414143444546474848494C4B4B4A4847474646464748494A4B4C4C4C4C4C4C4C4C4C4C4C4D4D4E4D4E4E4D4E4E51535556575A595958585757565758595A5A5958575B5A5A5A59595858585858595A5A5A5B5A5B5D5E5F5F5F5E %5C5C5C5C5C5D5D5D5D5E5E5E5E5E5E5E5F5F5E5D5C5B5A5A5B5B5B5C5D5D5D5E5757575656565656555454535351515251504D4A474442403C3937353232323134353538393B3C3D3B3C3C3C3C3A3838393939393B3D3F403C3D3C3C3B3B3A3A3B3B3C3E3F404142424242424141414143444546474848494C4BFFFFFFFF4746 %46464748494A4B4C4C4C4C4C4C4C4C4C4C4C4D4D4E4D4E4E4D4EFFFFFFFFFFFFFFFFFF585857FFFFFF58595AFF0000000000000000FFFFFFFFFFFFFFFFFF00000000FF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3D3D3D3D3B3A393A39393A3B3D3F3F3C3D3C3C3B3B3A3A3B3B3C3D3E404140424241414141414144444546474849494C4C4B4A4948474746464748494A4B4B4C4C4C4C4C4C4C4C4B4B4C4C4C4C4D4E4D4E4F515355565759595958585757575758595A5A595857595959595858585857585859595A5A5A595A5C5D5E5E5D5D %5A5A5B5B5B5C5C5C5D5D5D5D5D5D5D5D5E5E5D5C5B5A59595A5B5B5C5C5D5D5D57575756565655555454535351515051504F4C494643413F3B3A36353231323134353537383B3C3C3C3D3D3D3D3B3A393A39393A3B3D3F3F3C3D3C3C3B3B3A3A3B3B3C3D3E404140424241414141414144444546474849494C4CFFFFFF484747 %46464748494A4B4B4C4C4C4C4C4C4C4C4B4B4C4C4C4C4D4E4D4E4FFFFFFFFFFFFFFFFFFF5857FFFFFF58595AFF0000000000000000FFFFFFFFFFFFFFFFFF000000FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3D3D3E3D3C3B3A3A3A393A3B3C3E3E3C3D3C3C3B3B3A3A3A3B3C3D3E3F3F3F41414141414141414545464748494A4A4C4C4B4A494847474545464748494A4A4B4B4B4B4B4B4B4B4A4A4B4B4B4B4C4D4E4F505153545556585858585858585858595A5B5B5A59585757575758585858575757585859595957585A5B5B5B5A5A %585859595A5B5B5B5D5D5D5D5D5D5D5D5D5D5C5B5A5958585A5A5A5B5B5C5C5C575757565555545453535252505050504E4D4B4845413F3E3A3935343231323134343437383A3B3C3C3D3D3E3D3C3B3A3A3A393A3B3C3E3E3C3D3C3C3B3B3A3A3A3B3C3D3E3F3F3F41414141414141414545464748494A4A4C4C4B4A4948FF47 %4545464748494A4A4B4B4B4B4B4B4B4B4A4A4B4B4B4B4C4D4E4F50FFFFFFFFFFFFFFFFFF585858FFFFFF5A5BFF00000000000000FFFFFFFFFFFFFFFFFF000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3D3E3E3E3D3C3B3B3A3A3A3B3C3E3E3C3D3C3C3B3B3A3A3A3B3B3C3C3D3E3D3F3F4040404141414545464748494A4A4C4C4B4A4948474744444546474849494B4B4B4B4B4B4B4B494A4A4A4A4A4B4C4F4F5051535455555656575858595A5A595A5B5C5C5B5A59565656565757585856565657575858585657585959585757 %56565758595A5A5B5C5C5C5C5C5C5C5C5C5C5B5A595857575959595A5A5B5B5B58575756555453535151514F4F4F4F4E4C4B4946423F3D3C393735343231323133343436373A3B3B3C3D3E3E3E3D3C3B3B3A3A3A3B3C3E3E3C3D3C3C3B3B3A3A3A3B3B3C3C3D3E3D3F3F4040404141414545464748494A4A4C4C4B4A49FFFFFF %FF444546474849494B4B4B4B4B4B4B4B494A4A4A4A4A4B4C4F4F5051FFFFFFFFFFFFFFFFFF595AFFFFFF5B5CFF00000000000000FFFFFFFFFFFFFFFFFF0000FF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3C3E3F3F3E3D3C3C3B3A3A3A3B3D3D3C3D3C3C3B3B3A3A3A3A3A3B3B3B3C3B3E3E3F3F40414142444545464849494A4B4B4A494847464543434445464748484A4A4A4A4A4A4A4A494A4A4A4A4A4B4C505051525253545454555657595A5B5C5A5B5C5D5D5C5B5A565757575757575755555556565757575556575757565554 %55555657595A5B5B5D5D5D5D5C5C5D5D5C5C5B5A5958575758585859595A5A5A5857575554535252504F4F4E4E4D4D4D4A494744403D3B3A37353433313131333333343637393A3B3C3C3E3F3F3E3D3C3C3B3A3A3A3B3D3D3C3D3C3C3B3B3A3A3A3A3A3B3B3B3C3B3E3E3F3F40414142444545464849494A4B4B4A4948FFFFFF %FFFFFF45464748484A4A4A4A4A4A4A4A494A4A4A4A4A4B4C50505152FFFFFFFFFFFFFFFFFF5A5BFFFFFF5C5DFF000000000000FFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3B3C3E3F3F3F3E3E3D3C3B3A3A3B3C3C3C3D3C3C3B3B3A3A3A3A3A3A3A3A3A3A3D3D3E3F404141424343444546474749494948474645444442424344454647474A4A4A4A4A4A4A4A4A4A4B4B4B4B4C4D505151525253535453545557595B5C5D5B5C5D5E5E5D5C5B595958585756565654545455555656565556565756555453 %54555657595A5C5C5E5E5E5E5D5D5E5E5D5D5C5B5A595858575757585859595958585655535251504E4E4D4D4C4C4B4B484745413E3B393736343432313131333233343537393A3A3B3C3E3F3F3F3E3E3D3C3B3A3A3B3C3C3C3D3C3C3B3B3A3A3A3A3A3A3A3A3A3A3D3D3E3F404141424343444546474749494948474645FFFF %FFFFFFFFFF4647474A4A4A4A4A4A4A4A4A4A4B4B4B4B4C4D5051515252FFFFFFFFFFFFFFFFFF5CFFFFFF5D5EFF000000000000FFFFFFFFFFFFFFFFFF0000FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3B3C3E3F40403F3F3D3C3B3A3A3B3C3B3C3D3C3C3B3B3A3A3A3A3939393939393C3B3C3E3F41424242424344454647474747464544434242414142434445464649494949494949494B4B4C4C4C4C4D4E515151525253535352535457595C5D5E5C5D5E5F5F5E5D5C5D5C5B595856555453535354545555565656575756555352 %545556585A5B5D5D606060605F5F605F5E5E5D5C5B5A59595656565757585859585856555350504F4D4D4C4C4B4B4A4A474543403D3A37353534333230313233323233353738393A3B3C3E3F40403F3F3D3C3B3A3A3B3C3B3C3D3C3C3B3B3A3A3A3A3939393939393C3B3C3E3F41424242424344454647474747464544434242 %FFFFFFFFFFFFFF4649494949494949494B4B4C4C4C4C4D4E5151515252FFFFFFFFFFFFFFFFFF5D5EFFFF5E5FFF0000000000FFFFFFFFFFFFFFFFFF0000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3B3C3E3F4040403F3E3D3B3A3A3B3B3B3C3D3C3C3B3B3A3A39393939393838383B3C3D3D3F41424241414243444546464646454443424141404142434445464649494949494949494C4C4D4D4D4D4D4F515152525252535351525457595C5E5F5C5D5E5F5F5E5D5C5F5E5C5A5856555452535353545555555656575756545352 %545557585A5C5E5E61616161616061605E5F5E5D5C5B5A5A55565656575858585958565452514F4F4C4C4C4B4B4A4A494644423F3C3935353534323130313233313233353638393A3B3C3E3F4040403F3E3D3B3A3A3B3B3B3C3D3C3C3B3B3A3A39393939393838383B3C3D3D3F41424241414243444546464646454443424141 %4041FFFFFFFFFFFF49494949494949494C4C4D4D4D4D4D4F515152525252FFFFFFFFFFFFFFFFFF5F5C5D5E5FFF0000000000FFFFFFFFFFFFFFFFFF00FF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3C3C3D3D3E3E3E3D3D3D3D3D3D3D3C3F40403F3E3D3D3C3C3C3A383635333237373A3B3D3F41413E3F404142434444474542403F4043454443424141424445474747474848484849494B4D4D4F51525453535252515151565758595A5C5D5D60605F5E5D5C5B5B5A5958575654535350505153545556575454545353525252 %5252525456595B5D5D5E5F606161605F5F60605F5D5A585656565758585755555455555452504D4C4D4C4B4A4846454443413E3B39363735343332302E2E2F3035363739393B3A3A3C3C3C3D3D3E3E3E3D3D3D3D3D3D3D3C3F40403F3E3D3D3C3C3C3A383635333237373A3B3D3F41413E3F404142434444474542403F404345 %44434241FFFFFFFF474747474848484849494B4D4D4F5152545353525251FFFFFFFFFFFFFFFFFF5D60605F5EFF00000000FFFFFFFFFFFFFFFFFF00FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3C3C3D3D3E3E3E3C3C3C3C3C3C3C3B3E3F3F3E3E3E3D3D3D3C3B39373634343536383A3C3E3F403E3E3F40414243434644423F3F40424443424140414244454747474748484848494A4B4D4D4F50525353535252525251575758595A5C5D5D5F5F5E5D5C5B5A5A595958565554535350505152535556565453535252515151 %5151525355585B5C5D5E5F61616160605F60605F5D5A585756575858585755545354545352504E4C4D4C4B494845444441403C3B38373637343331302E2E2F303536373A3A3B3B3A3C3C3C3D3D3E3E3E3C3C3C3C3C3C3C3B3E3F3F3E3E3E3D3D3D3C3B39373634343536383A3C3E3F403E3E3F40414243434644423F3F404244 %4342414041424445474747FF48484848494A4B4D4D4F505253535352525252FFFFFFFFFFFFFFFFFF5F5F5E5DFF00000000FFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3C3C3D3D3E3E3E3B3B3B3B3B3B3B3A3C3D3D3E3E3E3E3F3E3D3C3B39373636353537383A3B3C3D3D3D3E3F404142424542413F3E3F4142414140404142424446464747484849494A4A4B4D4D4F505152525353535353535858595A5B5C5C5D5D5D5C5B5A59585858575756555453524F505152535454555252515150504F4F %5050515254575A5B5D5E5F606161605F5E5F5F5F5D5B595757575858575655545152525251504E4D4C4B4A47464544433F3D3B3838383838343331302F3030313536373A3A3B3B3B3C3C3C3D3D3E3E3E3B3B3B3B3B3B3B3A3C3D3D3E3E3E3E3F3E3D3C3B39373636353537383A3B3C3D3D3D3E3F404142424542413F3E3F4142 %41414040414242444646FFFFFFFF49494A4A4B4D4D4F505152525353535353FFFFFFFFFFFFFFFFFF5DFFFF5BFF000000FFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3C3C3D3D3E3E3E3A3A3A3A3A3A3A393A3C3C3D3E3E3F3F3E3E3D3C3A393838333435363738393A3B3B3C3D3E3F404142413F3E3D3E3F403F3F3F4041424343454646474849494A4A4B4C4D4D4E4F51515252535454555559595A5A5B5C5C5D5C5B5A595857565656565554545353524F5050515152535350504F4F4E4E4D4C %4F4F4F505355585A5C5D5E6060605F5F5E5F5F5E5D5B595858585858575654534F50515151504E4E4B4A4847464443423B3A39383737383833323130303030323637383A3B3C3C3B3C3C3C3D3D3E3E3E3A3A3A3A3A3A3A393A3C3C3D3E3E3F3F3E3E3D3C3A393838333435363738393A3B3B3C3D3E3F404142413F3E3D3E3F40 %3F3F3F40414243434546FFFFFFFF494A4A4B4C4D4D4E4F515152525354545555FFFFFFFFFFFFFFFFFFFFFF59FF000000FFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3C3C3D3D3E3E3E3A3A3A3A3A3A3A393A3B3C3C3D3E3E3F3E3E3D3C3B3A3A393333333335363636393A3B3C3D3E3F3F403F3E3D3D3D3D3C3B3D3E3F404142424445464748494A4B4B4C4C4D4D4E4E5050515253555657575A5A5B5B5B5C5C5C5A5A59585756555554545353535252524F4F4F50505051514E4E4D4D4C4C4B4B %4D4D4E4F515456585A5B5D5E5F5E5E5D5E5E5E5E5D5C5A5958595958575553524E4F4F50504F4D4C4A494846454342413B3A39363636373732313030303132333637383B3B3C3C3C3C3C3C3D3D3E3E3E3A3A3A3A3A3A3A393A3B3C3C3D3E3E3F3E3E3D3C3B3A3A393333333335363636393A3B3C3D3E3F3F403F3E3D3D3D3D3C %3B3D3E3F40414242444546FFFF494A4B4B4C4C4D4D4E4E505051525355565757FFFFFFFFFFFFFFFFFFFFFF58FF0000FFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3C3C3D3D3E3E3E3B3B3B3B3B3B3B3A3A3C3C3C3C3D3D3D3D3D3C3C3B3A3A3A32333233343534353838393A3B3C3D3D3E3D3D3C3C3B3A3A383A3D3F4041414143444547484A4B4B4C4C4D4D4D4D4E4F4F5051535557595A5C5C5C5C5C5C5C5C5A5A59585756555552525252525252524F4F4F4F4F4F4F4F4C4C4B4B4A4A4949 %4B4B4C4D4F52555758595A5C5C5C5B5B5D5D5E5E5D5C5B5A59595959575553514E4F4F4F4E4D4B4A49474745444241403B393736353535353131302F303133343738393C3C3D3D3C3C3C3C3D3D3E3E3E3B3B3B3B3B3B3B3A3A3C3C3C3C3D3D3D3D3D3C3C3B3A3A3A32333233343534353838393A3B3C3D3D3E3D3D3C3C3B3A3A %383A3D3F4041414143444547484A4B4BFFFFFFFF4D4D4E4F4F5051535557595A5CFFFFFFFFFFFFFFFFFFFF58FF0000FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3C3C3D3D3E3E3E3C3C3C3C3C3C3C3B3C3D3C3C3C3B3B3B3C3B3B3B3A3A3A3A3233333434353535363638393A3B3C3C3C3C3C3C3B3A3A3937393C3E4041414142444547484A4B4C4D4D4D4D4D4D4D4E4E4F515356585A5B5D5D5C5C5C5C5C5C5A5A59585756555551515151515152524F4F4E4E4E4E4E4E4A4A4A4949484847 %4A4A4B4C4E515455565758595A5A59595C5D5E5E5E5D5B5A5A5A5A59575452514F4F4F4F4D4B4948484746444341403F3C3A37363433323130302F2F303133343738393C3C3D3D3D3C3C3C3D3D3E3E3E3C3C3C3C3C3C3C3B3C3D3C3C3C3B3B3B3C3B3B3B3A3A3A3A3233333434353535363638393A3B3C3C3C3C3C3C3B3A3A39 %37393C3E4041414142444547484A4B4CFFFFFFFFFFFF4D4E4E4F515356585A5B5DFFFFFFFFFFFFFFFFFF5958FF00FFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3B3C3C3D3E3E3E3D3D3D3D3D3D3D3D3E3D3D3C3B3A3A3A3B3B3A3939393939333434343335353536353738393A3B3C3B3B3B3B3B3A393735383B3E3F41414043424447484A4C4C4D4D4D4C4D4E4E4E4E4F515356595B5C5D5D5D5D5C5C5C5C5B5A5A595756565550505051515151514E4E4E4E4E4D4D4D4949494848474747 %4A494A4B4E50535554555758595858575C5C5D5E5E5D5B5B5A5A5A595754525050504F4E4D4A4846474746444241403F3C3B38363332313130302F2F3032333337373A3C3C3D3D3D3C3B3C3C3D3E3E3E3D3D3D3D3D3D3D3D3E3D3D3C3B3A3A3A3B3B3A3939393939333434343335353536353738393A3B3C3B3B3B3B3B3A3937 %35383B3E3F41414043424447484A4C4C4DFFFFFFFFFFFFFF4E4F515356595B5C5D5DFFFFFFFFFFFFFFFFFF59FF00FFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3C3C3D3D3E3E3E3D3C3C3C3C3D3E3F3F3F3E3E3D3C3C3B3C3B3B3A38373736353532323232353535353638393A3B3B3D3C3C3C3A3A3A3A3838393B3C3D3E3F3F414447484848484A4B4D4D4F4F4F4E505152545658595A5D5C5B5A59595A5B575756565656565651515151515050504F4E50504F4C4A484747454443454646 %4A4A4C4D4F51535353545557585857575858595A5A5958585757575656555555504F4D4B494746454343444342403E3D383735333232323330302F2F303234343A393A3B3A3938383C3C3C3D3D3E3E3E3D3C3C3C3C3D3E3F3F3F3E3E3D3C3C3B3C3B3B3A38373736353532323232353535353638393A3B3B3D3C3C3C3A3A3A3A %3838393B3C3D3E3F3F414447484848484A4B4DFFFFFFFFFFFFFF52545658595A5D5CFFFFFFFFFFFFFFFFFF56FFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3B3B3C3C3D3D3E3E3C3B3C3B3C3D3E3F40403F3E3D3C3C3B3B3B3B3938383737353532323232353535353637393A3B3B3C3C3A3A3A3A383838393A3B3C3D3E3F3E404346474847474A4B4D4D4F4F4F4F515153545658595A5D5C5B5959595A5A575756565655555552525251515150504F4F4F4E4E4B49474746454443444444 %4647484A4C4D4F4F5253545657575756575758595958575757565655555454544F4F4D4B494745444242444342403E3D39383533333333333130303030323333393B3C3C3C3A3A393B3B3C3C3D3D3E3E3C3B3C3B3C3D3E3F40403F3E3D3C3C3B3B3B3B3938383737353532323232353535353637393A3B3B3C3C3A3A3A3A3838 %38393A3B3C3D3E3F3E404346474847474A4B4D4D4FFFFFFFFFFFFF545658595A5D5C5BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3A3B3B3B3C3C3D3C3C3C3B3B3B3D3E3F4141403F3E3D3C3B3B3B3B3938373737353532323232353535353637393A3B3B3B3B39393939373739393A3B3C3D3E3E3D3F414345464546494A4C4D4F504F4F525253555758595A5C5B5A5958585959575756565554535353535352525151504F4F4E4D4C4A48474645434242424243 %4243444647494A4A4F50525455565555555556575756555555555454535352524F4E4C4A484643434242434342403E3D3A3835343433343432313030313233333A3B3C3D3D3D3C3B3A3B3B3B3C3C3D3C3C3C3B3B3B3D3E3F4141403F3E3D3C3B3B3B3B3938373737353532323232353535353637393A3B3B3B3B393939393737 %39393A3B3C3D3E3E3D3F414345464546494A4C4D4F504FFFFFFFFF555758595A5C5B5AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3A3A3B3B3C3B3C3C3C3B3B3B3C3D3F40434342403F3D3C3C3C3A3A3937363636353532323232353535353637393A3B3B3A3A3938383837363939393A3B3C3C3C3C3D3F4142444445484A4C4D5050505053535456575859595B5A59585757585857575655545453525555545352525151504F4D4C4A484745454442403F3F4040 %40414242434646474C4D4F5153535353525354555554535253535252515150504E4D4B49474542424141424241403E3D3B3936353534353533323131313233333B3B3D3E3E3E3D3C3A3A3B3B3C3B3C3C3C3B3B3B3C3D3F40434342403F3D3C3C3C3A3A3937363636353532323232353535353637393A3B3B3A3A393838383736 %3939393A3B3C3C3C3C3D3F4142444445484A4C4D5050505053FFFF56575859595B5A5958FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3B3B3B3C3C3D3D3D3C3C3B3C3D3F414245444341403E3D3C3B3A3A3937363534353532323232353535353637393A3B3B3A3A39383838373638383739393A3A3A3B3C3C3E3F41434348494B4D5051515154555556575859595A5958565656575757575656555554545757565553525151504F4D4B484645434342403E3D3D3D3C %404041424344444546484B4D4F5050504F5051525251504F515150504F4F4E4E4C4C4A48454341403F40414141403E3D3C3A3836363536363534323231323333393B3C3E3E3E3E3D3B3B3B3C3C3D3D3D3C3C3B3C3D3F414245444341403E3D3C3B3A3A3937363534353532323232353535353637393A3B3B3A3A393838383736 %38383739393A3A3A3B3C3C3E3F41434348494B4D505151515455555657FFFFFFFF595856FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3C3B3C3C3E3E3E3F3D3D3D3D3F41434547464543403F3D3C3A3A383837353434353532323232353535353637393A3B3B3B3B3A3A3939373737373636373737373A3A3A3B3D3F414147484B4E4F5152525656565758585959595857555555565656565757575757575958575654535251514F4C494645444342413F3B3B3A3A3A %3E3E3F3F40404141424246494B4C4D4D4D4D4F4E4F4E4E4C4F4E4E4D4D4C4C4C4B4B4947444240403E3F404140403F3E3D3B393737363737363533323232333238393B3D3E3E3E3D3C3B3C3C3E3E3E3F3D3D3D3D3F41434547464543403F3D3C3A3A383837353434353532323232353535353637393A3B3B3B3B3A3A39393737 %37373636373737373A3A3A3B3D3F414147484B4E4F515252565656575858FFFFFF58575555FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3D3E3E3E3F4040403E3E3E3F4143464748464644413F3D3C3A3A383837363434353532323232353535353637393A3B3B3B3B3B3B3A3A38383535343434343434383838393A3D404046484B4E4F5152525757575758585859585756555454555656565758595A5A5B5A5A585755535251504F4C484543434341403D3A39373837 %3A3A3B3B3B3C3C3C3D3F4245474949494B4C4D4D4D4D4C4B4D4D4D4C4C4B4B4A4B4A4745434140403D3E3F4040403F3E3D3C39383737383837363433323233333638393B3D3D3D3D3D3E3E3E3F4040403E3E3E3F4143464748464644413F3D3C3A3A383837363434353532323232353535353637393A3B3B3B3B3B3B3A3A3838 %3535343434343434383838393A3D404046484B4E4F51525257575757585858FFFFFF565554FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3E3F3F3F404041413F3F3F404245474949474644423F3D3C3A39393737363533353532323232353535353637393A3B3A3D3C3B3C3A3B3A39343432323333323237383738393C3F4145484A4E5051525357575858585858585857555454545555555657585A5C5D5D5B5A595755535251504F4B4744434142413F3C3A37373737 %37373737383838383B3D3F43454747474A4B4C4C4C4C4B4A4C4C4C4B4B4A4A4A4A4947454342403F3D3D3F4040403F3E3E3D3A383838383837363533323233333437393B3C3C3D3C3E3F3F3F404041413F3F3F404245474949474644423F3D3C3A39393737363533353532323232353535353637393A3B3A3D3C3B3C3A3B3A39 %343432323333323237383738393C3F4145484A4E505152535757585858585858585755FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3F3F3F3F3F3F3F3F4141414244484B4D4E4D4B4945413E3B38383736343433323434333333333434363737383B3C3C3C3D3D3C3C393836353131313131313131333436393C3E404146484B4E5051515256575758585755545555555555555555575758595A5B5C5C5C5C5C5C5A5855544D4D4B49464340403F3C393634343637 %353433323233343437383A3D3F4244454949494948484848484848494949494A464443413F3F3F3F3D3D3C3C3B3B3A3A3B3B3A393A3939383736343332333334323337393B3C3C3B3F3F3F3F3F3F3F3F4141414244484B4D4E4D4B4945413E3B38383736343433323434333333333434363737383B3C3C3C3D3D3C3C39383635 %3131313131313131333436393C3E404146484B4E50515152565757585857555455555555FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %3F3F4041424243434242424446494C4E4D4C4A4745413D3B39393837353434333334333333333434363737383B3C3C3C3D3D3D3B3A3736353131313131313131333436393C3E404145484B4D5051505156565758585756555555555555555555565758595A5B5C5C5C5C5C5B5A5755544D4D4B49464241403E3C383532343537 %34333231313233343537393B3E41434448484848484747474848484949494949454342413F3F3F3F3D3D3C3C3B3B3A3A3B3B393939393938383735333232333332333436383837373F3F4041424243434242424446494C4E4D4C4A4745413D3B39393837353434333334333333333434363737383B3C3C3C3D3D3D3B3A373635 %3131313131313131333436393C3E404145484B4D50515051565657585857565555555555FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %404142434546474844454546494B4E4F4C4B4A4843413D3B3A393937353434343435343434343535363737383B3C3C3C3D3D3D3B3A3736353232323232323231343536393C3F414245484A4D4F5051515556575858575655555555555555555556565758595A5B5C5C5C5C5B595755534E4D4B48454241403D3A373431323334 %32323130303132323435373A3C3F414246464646464646464848484848484848454442403F3F3F3F3D3D3C3C3B3B3A3A3B3A39393938383839373533323132323031333435353434404142434546474844454546494B4E4F4C4B4A4843413D3B3A393937353434343435343434343535363737383B3C3C3C3D3D3D3B3A373635 %3232323232323231343536393C3F414245484A4D4F5051515556575858575655555555555555FFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %45464647484949494747484A4B4D4F504A4A494743403E3C3B3A3A38373535353435343434343535363737383B3C3C3C3D3C3D3C3A3736343232323232323231343536393D3F414245464A4C4F5050515455575858585756555555555555555556565758595A5B5B5B5B5B5A595654534D4C4A484541403F3B3A363332313131 %30302F2E2E2E3030313233373A3B3E3F434344444445454548484747474646464342413F3F3F3F403D3D3C3C3B3B3A3A3A3A39383938383739383633323131312F3032353737383845464647484949494747484A4B4D4F504A4A494743403E3C3B3A3A38373535353435343434343535363737383B3C3C3C3D3C3D3C3A373634 %3232323232323231343536393D3F414245464A4C4F50505154555758585857565555555555555555FFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF00000000000000FFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFF000000FF00FF00FFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF00000000FF000000FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF00000000FF00000000FFFFFFFFFFFFFFFFFF0000000000000000000000000000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFF0000000000FF0000FF00FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000FFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000FF00FFFFFFFFFFFFFFFFFF0000000000FF00FFFFFF00FFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000FFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000000000FF00FFFFFFFFFFFFFFFFFF000000000000FF00FFFFFF00FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000FFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF000000000000FF00FFFFFF0000FFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000FF00FFFFFFFFFFFFFFFFFF00000000000000FF000000000000FFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000FF0000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000FF0000FFFFFFFFFFFFFFFFFF00000000000000FF00000000000000FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000FF0000FFFFFFFFFFFFFFFFFF0000000000000000FF00000000000000FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000FF000000FFFFFFFFFFFFFFFFFF0000000000000000FF000000FF00000000FFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000FF00000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF000000000000000000FF0000FFFFFF000000FFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000FF000000FFFFFFFFFFFFFFFFFF000000000000000000FF0000FFFFFF00000000FFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000FF000000FFFFFFFFFFFFFFFFFF00000000000000000000FF0000FFFFFF00000000FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000FFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000FF00000000FFFFFFFFFFFFFFFFFF00000000000000000000FF000000FFFFFF00000000FFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000FFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF0000000000000000000000FF000000FFFFFF00000000FFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000FFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF0000000000000000000000FF000000FFFFFF0000000000FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000FFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000FF00000000FFFFFFFFFFFFFFFFFF000000000000000000000000FF000000FFFFFF0000000000FFFFFFFFFFFFFFFFFF0000000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000FF0000000000FFFFFFFFFFFFFFFFFF000000000000000000000000FF000000FFFFFF000000000000FFFFFFFFFFFFFFFFFF00000000000000000000000000000000FFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000FF0000000000FFFFFFFFFFFFFFFFFF00000000000000000000000000FF000000FFFFFF000000000000FFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF00000000000000000000000000FF00000000FFFFFF000000000000FFFFFFFFFFFFFFFFFF00000000000000000000FFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF0000000000000000000000000000FF00000000FFFF00000000000000FFFFFFFFFFFFFFFFFF00000000000000000000FFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000FF000000000000FFFFFFFFFFFFFFFFFF0000000000000000000000000000FF0000000000FF0000000000000000FFFFFFFFFFFFFFFFFF000000000000000000FFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000FFFFFFFFFFFFFFFF %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000FF000000000000FFFFFFFFFFFFFFFFFF00000000000000000000000000FFFF000000000000000000000000000000FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000 %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000FF00000000000000FFFFFFFFFFFFFFFFFF0000000000000000000000FFFF000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF000000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000 %000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF00000000000000000000FFFF00000000000000000000FFFF0000000000000000FFFFFFFFFFFFFFFFFF00FFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF0000000000000000FFFF000000000000000000000000FFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000FF00000000000000FFFFFFFFFFFFFFFFFF00000000000000FFFF0000000000000000000000000000FFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000FF0000000000000000FFFFFFFFFFFFFFFFFF0000000000FFFF00000000000000000000000000000000FFFF00000000000000000000FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000FF0000000000000000FFFFFFFFFFFFFFFFFF00000000FFFF00000000000000000000000000000000000000FF00000000000000000000FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000FFFFFFFFFFFFFFFFFF0000FFFF000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000FF000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000FF00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000FF000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000FF000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000FF0000000000000000000000FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00FF00000000000000000000FFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %FF000000000000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF %000000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF00 %00000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF0000 %0000FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF000000 %FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000FFFFFFFFFFFFFFFF %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000FFFFFF %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFF0000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000 %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF00000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000 %00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000FFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF0000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000FFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF0000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000FFFFFFFFFFFFFFFF %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000FFFFFFFFFF %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF00000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000FFFF %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF00000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000 %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000FFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000 %00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000FFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000 %000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000FFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000 %00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFF000000000000000000000000000000FFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF000000000000000000000000000000FFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFF00000000000000000000000000000000FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF00000000000000000000000000000000FFFFFFFFFFFFFFFFFF00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFF00000000000000000000000000000000FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF00000000000000000000000000000000FFFFFFFFFFFFFFFFFF00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000FFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF00000000000000000000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFF0000000000000000000000000000000000FFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF0000000000000000000000000000000000FFFFFFFFFFFFFF000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000FFFFFFFFFFFFFFFFFFFFFFFF %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFF0000000000000000000000000000000000FFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF0000000000000000000000000000000000FFFFFFFFFFFFFF000000000000000000FFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000FFFFFFFFFFFFFF %FFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF000000000000000000FFFFFFFFFFFF000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF0000000000000000000000000000000000FFFFFFFFFFFF00000000000000000000FFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000FFFFFFFF %FFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF000000000000000000FFFFFFFFFFFF000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000FFFFFFFFFFFF00000000000000000000FFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000FFFFFF %FFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF00000000000000000000FFFFFFFFFF000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000FFFFFFFFFF0000000000000000000000FFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000FFFF %FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFF00000000000000000000FFFFFFFFFF00000000000000000000000000000000000000FFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000FFFFFFFFFF0000000000000000000000FFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000 %FFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFF0000000000000000000000FFFFFFFF00000000000000000000000000000000000000FFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFF00000000000000000000000000000000000000FFFFFFFF000000000000000000000000FFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000 %00FFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFF0000000000000000000000FFFFFFFF00000000000000000000000000000000000000FFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B2000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFF00000000000000000000000000000000000000FFFFFFFF000000000000000000000000FFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000 %000000FFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFF000000000000000000000000FFFFFF00000000000000000000000000000000000000FFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B200000000000000000000B200000000000000B2000000000000B2000000B2000000B20000000000000000B2B2B2B20000000000000000 %0000B2B2B2B2B2B2B2B2000000000000000000000000000000000000000000000000B2B200000000000000000000000000B2B20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFF00000000000000000000000000000000000000FFFFFFFF000000000000000000000000FFFFFFFFFF000000000000FFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000FFFFFFFFFFFFFFFFFFFFFFFF %FFFFFF00FFFFFFFFFFFFFF000000000000FFFFFFFFFF000000000000000000000000FFFFFF0000000000000000000000000000000000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B20000000000000000000000B20000000000B20000000000000000B20000B20000B20000000000000000B2B2B2B2B2B2B2000000000000 %0000B2B2B2B2B2B2B2B2000000000000000000000000000000000000000000000000B2B2B20000000000000000000000B2B2B2B200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFF0000000000000000000000000000000000000000FFFFFF00000000000000000000000000FFFFFFFFFF000000000000FFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000FFFFFFFFFFFFFFFF %FFFFFF00FFFFFFFFFFFFFF000000000000FFFFFFFFFF000000000000000000000000FFFFFF0000000000000000000000000000000000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B2000000000000000000000000B2000000B200000000000000000000B200B200B20000000000000000B2B2B2B2B2B2B2B2000000000000 %0000B2B2B2B2B2B2B2B2000000000000B2B2B2B2B2B2B2B2B20000000000000000B2B2B2B200000000000000000000B2B2B2B2B2B2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFF0000000000000000000000000000000000000000FFFFFF00000000000000000000000000FFFFFFFF00000000000000FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000FFFFFFFFFFFFFF %FFFFFF0000FFFFFFFFFFFF00000000000000FFFFFFFF000000000000000000000000FFFFFF0000000000000000000000000000000000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B200000000000000000000000000B200B2000000000000000000000000B2B2B2000000000000000000B2B2B2B2B2B2B2B2B20000000000 %0000B2B2B2B2B2B2B2B2000000000000B2B2B2B2B2B2B2B2000000000000000000B2B2B2B2B20000000000000000B2B2B2B2B2B2B2B20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFF0000000000000000000000000000000000000000FFFFFF00000000000000000000000000FFFFFF0000000000000000FFFFFFFFFF000000FFFFFFFFFFFFFFFF000000000000000000000000000000000000000000FFFFFFFFFF %FFFFFF000000FFFFFFFFFF0000000000000000FFFFFF00000000000000000000000000FFFF000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000B2000000000000000000B2B2B2B2B2B2B2B2B2B2B200000000B2B2B2B2B2B2B2B2B2B2B2000000000000000000B2000000000000000000B2B2B2B2B2B2B2B2B2B2B200000000B2B2B2B2B2B2B2B2B2B20000000000 %0000B2B2B2B2B2B2B2B200000000000000B2B2B2B2B2B2B20000000000000000B2B2B2B2B2B200000000000000B2B2B2B2B2B2B2B2B2B200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFF0000000000000000000000000000000000000000FFFF0000000000000000000000000000FFFFFF0000000000000000FFFFFFFFFF000000FFFFFFFFFFFFFF0000000000000000000000000000000000000000000000FFFFFFFF %FFFFFF000000FFFFFFFFFF0000000000000000FFFFFF00000000000000000000000000FFFF000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B200000000000000000000000000B200B2000000000000000000000000B2B2B2000000000000000000B2B2B2B2B2B2B2B2B20000000000 %0000B2B2B2B2B2B2B2B200000000000000B2B2B2B2B2B2000000000000000000B2B2B2B2B2B2B200000000000000B2B2B2B2B2B2B2B20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFF0000000000000000000000000000000000000000FFFF0000000000000000000000000000FFFFFF0000000000000000FFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000FFFFFFFFFFFFFFFFFFFFFFFF %FFFFFF00000000FFFFFFFF000000000000000000FFFF00000000000000000000000000FFFF000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B2000000000000000000000000B2000000B200000000000000000000B200B200B20000000000000000B2B2B2B2B2B2B2B2B20000000000 %0000B2B2B2B2B2B2B2B20000000000000000B2B2B2B2B20000000000000000B2B2B2B2B2B2B2B2B200000000000000B2B2B2B2B2B2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000FFFF0000000000000000000000000000FFFFFF0000000000000000FFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFFFFFFFFFFFFFFFFFF %FFFFFF0000000000FFFFFF000000000000000000FFFF0000000000000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B20000000000000000000000B20000000000B20000000000000000B20000B20000B200000000000000B2B2B2B2B2B2B2B2000000000000 %0000B2B2B2B2B2B2B2B20000000000000000B2B2B2B20000000000000000B2B2B2B2B2B2B2B2B2B20000000000000000B2B2B2B200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000FFFF0000000000000000000000000000FFFF000000000000000000FFFFFF0000000000FFFFFFFF00FFFFFFFFFFFF000000000000000000000000000000FFFFFFFFFFFF00FF %FFFFFF000000000000FFFF000000000000000000FFFF0000000000000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B200000000000000000000B200000000000000B2000000000000B2000000B2000000B200000000000000B2B2B2B2B2B200000000000000 %00000000000000000000000000000000000000B2B200000000000000000000000000000000000000000000000000000000B2B20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000000000000000FFFF000000000000000000FFFF000000000000FFFFFF0000FFFFFFFFFF0000000000000000000000000000000000FFFFFFFFFF0000 %FFFFFF000000000000FFFF00000000000000000000FF0000000000000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000B2000000000000000000 %0000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000000000000000FFFF000000000000000000FFFF000000000000FFFFFF0000FFFFFFFFFFFFFFFFFFFF00000000000000FFFFFFFFFFFFFFFFFFFF0000 %FFFFFF000000000000FFFF00000000000000000000FF0000000000000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000000000000000FFFF000000000000000000FFFF000000000000FFFF000000FFFFFF00FFFFFFFF00000000000000000000FFFFFFFFFF00FFFFFF0000 %00FFFF00000000000000FF00000000000000000000FF0000000000000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000000000000000FFFF000000000000000000FFFF000000000000FFFF000000FFFF0000FFFFFF00000000000000000000000000FFFFFF0000FFFF0000 %0000FF00000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000000000000000FF00000000000000000000FF00000000000000FF00000000FFFF0000FFFFFFFFFFFFFFFF000000FFFFFFFFFF00FFFF0000FFFF0000 %0000FF00000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B2000000000000000000000000B2B2B2B2B200000000000000 %00000000000000000000000000000000000000000000000000000000000000000000B200B200000000000000000000000000B20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000000000000000FF00000000000000000000FF00000000000000FF00000000FF000000FFFF00FFFFFF00000000000000FFFFFF00FFFF000000FF0000 %0000FF00000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B20000000000000000000000B20000000000B2000000000000 %00B2B2B2B2B2B2B2B2B2B20000000000000000000000000000000000000000000000B200B2000000000000000000000000B200B200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000000000000000FF00000000000000000000FF00000000000000FF00000000FF000000FFFF00FFFFFFFFFF000000FFFFFFFFFF0000FF000000FF0000 %0000FF00000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B200000000000000000000B200000000000000B2000000000000B2000000B2000000B2000000000000B200000000000000B20000000000 %00B20000000000000000B200000000000000000000000000000000000000000000B2000000B200000000000000000000B2000000B2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000000000000000FF00000000000000000000FF00000000000000FF00000000FF000000FF0000FF00FFFFFF000000FFFFFF00FF000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B20000000000000000000000B20000000000B20000000000000000B20000B20000B2000000000000B2000000000000000000B200000000 %00B20000000000000000B2000000B2B2B2B2B2B2B2B2B2B2B2B2B2000000000000B2000000B2000000000000000000B20000000000B20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF00000000000000000000FF00000000000000FF00000000FF000000FF0000FF00FFFFFF0000FFFFFFFF00FF000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B2000000000000000000000000B2000000B200000000000000000000B200B200B2000000000000B20000000000000000000000B2000000 %00B20000000000000000B200000000B2000000000000000000B2000000000000B20000000000B200000000000000B200000000000000B200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF0000FF00FFFFFFFF00FFFF00000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B200000000000000000000000000B200B2000000000000000000000000B2B2B200000000000000B20000000000000000000000B2000000 %00B20000000000000000B200000000B2000000000000000000B20000000000B200000000000000B20000000000B2000000000000000000B2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000B20000000000000000B2B2B2B2B2B2B2B2B2B2B2B2B20000B2B2B2B2B2B2B2B2B2B2B2B2B20000000000000000B20000000000000000B2B2B2B2B2B2B2B2B2B2B2B2B20000B20000000000000000000000B2000000 %00B20000000000000000B20000000000B200000000000000B2000000000000B200000000000000B200000000B20000000000000000000000B20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF0000FF00FFFFFFFFFFFF0000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B200000000000000000000000000B200B2000000000000000000000000B2B2B200000000000000B20000000000000000000000B2000000 %00B20000000000000000B2000000000000B20000000000B2000000000000B2000000000000000000B200000000B2000000000000000000B2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF00000000000000FF00000000FF000000FF0000FF00FFFFFFFF00FFFFFFFF00FF000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B2000000000000000000000000B2000000B200000000000000000000B200B200B2000000000000B20000000000000000000000B2000000 %00B20000000000000000B2000000000000B20000000000B2000000000000B2000000000000000000B20000000000B200000000000000B200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000000000000000FF00000000000000000000FF00000000000000FF00000000FF000000FF0000FF00FFFFFFFF00FFFFFFFF00FF000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B20000000000000000000000B20000000000B20000000000000000B20000B20000B2000000000000B2000000000000000000B200000000 %00B20000000000000000B200000000000000B2000000B2000000000000B2B2B2B2B2B2B2B2B2B2B2B2B20000000000B20000000000B20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000000000000000FF00000000000000000000FF00000000000000FF00000000FF000000FFFF00FFFFFFFFFFFF00FFFFFFFFFFFF0000FF000000FF0000 %0000FF00000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B200000000000000000000B200000000000000B2000000000000B2000000B2000000B2000000000000B200000000000000B20000000000 %00B2B2B2B2B2B2B2B2B2B20000000000000000B200B20000000000000000000000000000000000000000000000000000B2000000B2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000000000000000FF00000000000000000000FF00000000000000FF00000000FF000000FFFF00FFFFFF00000000000000FFFFFF0000FF000000FF0000 %0000FF00000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B20000000000000000000000B20000000000B2000000000000 %00000000000000000000000000000000000000B200B2000000000000000000000000000000000000000000000000000000B200B200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000000000000000FF00000000000000000000FF00000000000000FF00000000FFFF0000FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF00FFFF000000FF0000 %0000FF00000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B2000000000000000000000000B2B2B2B2B200000000000000 %0000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000B20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000000000000000FF00000000000000000000FFFF000000000000FFFF000000FFFF0000FFFFFFFF0000000000000000000000FFFFFFFF0000FFFF0000 %0000FF00000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000000000000000FF00000000000000000000FFFF000000000000FFFF000000FFFFFF00FFFFFFFFFFFF00000000000000FFFFFFFFFFFF00FFFFFF0000 %00FFFF00000000000000FF00000000000000000000FF0000000000000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000000000000000FF00000000000000000000FFFF000000000000FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFF0000 %00FFFF000000000000FFFF00000000000000000000FF0000000000000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000000000000000FFFF000000000000000000FFFF000000000000FFFFFF0000FFFFFFFFFF0000000000000000000000000000000000FFFFFFFFFF0000 %FFFFFF000000000000FFFF00000000000000000000FF0000000000000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000000000000000FFFF000000000000000000FFFFFF0000000000FFFFFFFF00FFFFFFFFFFFF000000000000000000000000000000FFFFFFFFFFFF00FF %FFFFFF000000000000FFFF000000000000000000FFFF0000000000000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000FFFF0000000000000000000000000000FFFF000000000000000000FFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000FFFFFFFFFFFFFFFFFFFF %FFFFFF0000000000FFFFFF000000000000000000FFFF0000000000000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFF0000000000000000000000000000000000000000FFFF0000000000000000000000000000FFFFFF0000000000000000FFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF %FFFFFF00000000FFFFFFFF000000000000000000FFFF0000000000000000000000000000FF000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFF0000000000000000000000000000000000000000FFFF0000000000000000000000000000FFFFFF0000000000000000FFFFFFFFFF000000FFFFFFFFFFFFFF0000000000000000000000000000000000000000000000FFFFFFFF %FFFFFF00000000FFFFFFFF0000000000000000FFFFFF00000000000000000000000000FFFF000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFF0000000000000000000000000000000000000000FFFFFF00000000000000000000000000FFFFFF0000000000000000FFFFFFFFFF000000FFFFFFFFFFFFFFFF000000000000000000000000000000000000000000FFFFFFFFFF %FFFFFF000000FFFFFFFFFF0000000000000000FFFFFF00000000000000000000000000FFFF000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFF0000000000000000000000000000000000000000FFFFFF00000000000000000000000000FFFFFFFF00000000000000FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000FFFFFFFFFFFFFF %FFFFFF0000FFFFFFFFFFFF00000000000000FFFFFFFF00000000000000000000000000FFFF000000000000000000000000000000000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFF0000000000000000000000000000000000000000FFFFFF00000000000000000000000000FFFFFFFFFF000000000000FFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000FFFFFFFFFFFFFFFFFF %FFFFFF00FFFFFFFFFFFFFF00000000000000FFFFFFFF000000000000000000000000FFFFFF0000000000000000000000000000000000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFF00000000000000000000000000000000000000FFFFFFFF000000000000000000000000FFFFFFFFFF000000000000FFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF %FFFFFF00FFFFFFFFFFFFFF000000000000FFFFFFFFFF000000000000000000000000FFFFFF0000000000000000000000000000000000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFF00000000000000000000000000000000000000FFFFFFFF000000000000000000000000FFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000 %000000FFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFF000000000000000000000000FFFFFF0000000000000000000000000000000000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFF00000000000000000000000000000000000000FFFFFFFF000000000000000000000000FFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000 %00FFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFF0000000000000000000000FFFFFFFF00000000000000000000000000000000000000FFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000FFFFFFFF000000000000000000000000FFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000 %FFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFF0000000000000000000000FFFFFFFF00000000000000000000000000000000000000FFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000FFFFFFFFFF0000000000000000000000FFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000FFFF %FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFF00000000000000000000FFFFFFFFFF00000000000000000000000000000000000000FFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000FFFFFFFFFFFF00000000000000000000FFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000FFFFFF %FFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF00000000000000000000FFFFFFFFFF000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000FFFFFFFFFFFF00000000000000000000FFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000FFFFFFFFFF %FFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF000000000000000000FFFFFFFFFFFF000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF0000000000000000000000000000000000FFFFFFFFFFFFFF000000000000000000FFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000FFFFFFFFFFFFFFFFFF %FFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF000000000000000000FFFFFFFFFFFF000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF0000000000000000000000000000000000FFFFFFFFFFFFFF000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFF0000000000000000000000000000000000FFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF0000000000000000000000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFF0000000000000000000000000000000000FFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF00000000000000000000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000FFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF00000000000000000000000000000000FFFFFFFFFFFFFFFFFF00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000FFFFFFFFFFFFFFFF00000000000000000000000000000000FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF00000000000000000000000000000000FFFFFFFFFFFFFFFFFF00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFF00000000000000000000000000000000FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF000000000000000000000000000000FFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000 %00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000 %000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000FFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000 %00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000FFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF00000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000 %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000FFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF00000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000FFFFFFFF %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000FFFFFFFFFFFFFFFFFF %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF0000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF0000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000FFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000FFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFF00000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFF000000000000000000000000000000000000000000000000000000FFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000 %0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF0000000000000000000000000000 %000000000000000000000000000000000000000000000000000000000000000000000000FF000000FF00000000000000000000000000000000000000000000000000FF000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF0000FFFF00000000000000000000000000FFFF0000FFFF000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000FF %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFF000000FFFFFFFF00FFFF0000FFFFFF000000FFFFFFFF00FFFF0000 %000000FFFFFF0000FFFFFF00000000FFFF000000FFFF00FFFFFF00FFFFFFFFFFFF00FFFFFFFFFFFF00FFFF000000000000FFFFFFFFFFFF0000FFFFFFFFFFFF00FFFFFFFFFFFF0000000000FFFFFFFF000000FFFF000000FFFFFFFF00FFFF0000FFFF000000FFFFFF0000FFFF0000000000FFFFFF0000FFFFFF0000000000FFFF %00FFFFFF00FFFF00FFFFFF00000000FFFFFFFF00FFFFFFFF00FFFFFFFF00FFFFFF00FF00FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFF00FFFFFFFFFFFFFFFF00FFFFFF00FFFFFFFFFF0000FFFFFFFFFF00FFFFFFFFFF00FFFFFFFFFF00FFFFFFFF0000FF00000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000FFFFFFFFFF %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000FF000000FF00FF0000FF0000FF000000FF0000FF00FF0000FF0000FF000000 %0000FF000000FF0000FF00000000000000FF0000FF000000FF000000FF0000FF0000FF00FF000000000000FF00000000FF0000FF000000FF0000FF0000FF0000FF00FF00000000000000FF0000FF000000000000FF00FF0000FF00FF0000FF000000FF00FF0000000000FF0000000000FF000000FF0000FF000000000000FF00 %0000FF0000FF00FF0000000000000000FFFF000000FFFF000000FFFF000000FF0000FF0000FFFF0000FFFF0000FFFF00000000FFFF00FFFF00FFFF0000FFFF00FFFF00FFFF0000000000FFFF00FFFF00FFFF00FFFF00FFFF00000000FFFF00000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFF %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000FF000000FF00FF0000FF0000FF000000FF0000FF00FF0000FF0000FF000000 %0000FF000000FF0000FF000000000000FFFF0000FF000000FF000000FF0000FF0000FF0000FFFF000000FFFF00000000FF0000FF0000FFFF0000FF0000FF0000FF0000FFFF000000000000FFFFFF0000000000FFFF00FF0000FF00FF0000FF0000FFFF00FFFFFFFF0000FF0000000000FF000000FF0000FF000000000000FF00 %0000FF0000FF00FFFFFFFF0000000000FFFF000000FFFF000000FFFF000000FF00FFFFFF00FFFF0000FFFF000000FF00000000FFFF0000FFFFFFFF0000FFFF00FFFF0000FFFFFF000000FFFF00FFFF0000FFFFFFFF0000FFFFFF0000FFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000FF000000FF00FF0000FF0000FF000000FF0000FF00FF0000FF0000FF000000 %0000FF000000FF0000FF0000000000FF00000000FF000000FFFF0000FF0000FFFF00FF00FF0000FF00FF000000000000FF0000FF00FF00000000FF0000FFFF00FF00FF0000FF00000000000000FF00000000FF000000FF0000FF00FF0000FF00FF000000FF0000FF0000FF0000000000FF000000FF0000FF000000000000FF00 %0000FFFF00FF00FF0000FF0000000000FFFF000000FFFF000000FFFF000000FF00FFFFFF00FFFF0000FFFF0000000000000000FFFF00FF0000FFFF0000FFFF00FFFF00FFFF00FFFF0000FFFF00FFFF00FF0000FFFF00FFFF00FFFF00FFFF00FFFF00000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFF00FFFF00FFFF00FFFFFF00FFFFFFFF00FFFF00FFFF00FFFFFF0000 %000000FFFFFF0000FFFFFF0000000000FFFF00FFFFFF00FFFF00FFFFFF00FFFF00FFFF0000FFFFFFFF00FFFF000000FFFF00FFFF0000FFFF00FFFF00FFFF00FFFF0000FFFFFFFF00000000FFFF000000000000FFFFFFFF00FFFF00FFFFFF000000FFFF0000FFFF0000FFFFFF0000000000FFFFFF0000FFFFFF00000000FFFFFF %0000FF00FFFF0000FFFF000000000000FFFFFFFFFFFFFF000000FFFF000000FF00FFFFFF00FFFF0000FFFF0000000000000000FFFF0000FFFFFF0000FFFFFFFFFF000000FFFFFFFFFFFFFFFF00FFFF0000FFFFFF000000FFFFFFFFFF00FFFFFF0000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF0000000000000000000000000000FF000000 %000000000000000000FF00000000000000000000FF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF0000000000000000000000000000FF000000000000000000000000FF000000000000FF00 %0000FF00000000000000000000000000FFFF000000FFFF000000FFFF000000FFFFFF0000FFFFFF0000FFFF0000000000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF0000000000000000000000000000FF000000 %000000000000000000FF0000FF00000000000000FF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF0000000000000000000000000000FF000000000000000000000000FF0000FF000000FF00 %0000FF00000000000000000000000000FFFF000000FFFF00FF00FFFF00FF00FFFFFF0000FFFFFF0000FFFF0000000000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000FFFFFF000000000000000000000000000000FF0000000000000000000000000000000000000000000000000000000000FF00000000000000000000000000000000000000000000000000000000000000FFFF00000000000000000000000000000000000000000000000000000000FFFFFF0000000000 %00FFFF000000000000000000000000FFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFF000000000000FFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000FFFFFF000000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000000000000000000000000000FF000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000FF0000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFF000000FFFFFF00FFFF00FFFFFF00000000FFFFFFFFFF00FF0000 %00FFFFFFFFFF0000FF00FF000000FF00FFFF0000FFFF00FF000000FFFF00FF0000FFFF0000FFFFFF0000000000FFFFFF00FFFF00FFFF00FFFFFF0000FFFF00FFFFFF00FFFF00FFFFFF000000FFFFFFFFFFFF0000000000FFFFFFFFFFFF00FFFF00000000FF00000000FFFFFF0000FFFFFF0000FFFF00FFFFFF000000FF000000 %0000FFFFFFFF0000FF000000FFFFFFFFFF00FFFFFF000000FF0000FFFF00FFFF00FFFFFF0000FFFF0000000000FFFF000000FFFFFFFF00FFFFFF000000FFFFFF000000FFFFFF0000FFFFFF0000FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000FF0000000000FF0000FF00FF00000000000000FF0000FF0000FF0000 %00FF0000FF000000FFFFFFFF000000FF0000FF00FF0000FF000000FF0000FF0000FF000000FF0000000000000000FF0000FF0000FF00FF0000000000FF000000FF0000FF00FF000000FF00FF0000FF000000FF0000000000FF0000FF0000FF0000000000FFFF000000FF0000FF00FF0000FF00FF0000FF0000FF0000FF000000 %00FF00000000FF00FF000000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00FF00FF000000000000FF00FF0000FF0000FF0000FF0000FF0000FF00FF000000FF0000FF000000FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000FF0000000000FF0000FF00FFFFFFFF00000000FF0000FF000000FF00 %00FF000000FF0000FF00FF00FF0000FF0000FF0000FF0000FF000000FF0000FF0000FF0000FFFFFF000000000000FF0000FF0000FF00FFFFFFFF0000FF000000FF0000FF00FF000000FF00FF0000FF0000FFFF0000000000FF0000FF0000FF0000000000FF00FF0000FFFFFF0000FF0000000000FF00FF000000FF0000FF0000 %00FF00000000FF0000FF0000FF000000FF0000FF0000FF0000FF0000FF0000FF00FF000000000000FF0000000000FFFF00FF0000FF0000FF0000FF0000FF0000FF00FF000000FF0000FF000000FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000FF0000000000FFFF00FF00FF0000FF0000000000FF0000FF0000FFFF %0000FF0000FF0000FF00FF00FF0000000000FF0000FF0000FFFF0000FF0000FFFF00FF0000FF0000FF0000000000FFFF00FFFF00FF00FF0000FF0000FF000000FFFF00FF00FF000000FF00FF0000FF00FF00000000000000FF0000FFFF00FF0000000000FF00FF000000FF00FF0000FF00FF0000FF0000FF0000FF0000FFFF00 %00FF000000FFFFFF00FFFF0000FF0000FF0000FFFF00FF0000FFFF00FF0000FF0000FF00FF0000FF0000000000FF000000FF0000FF0000FF0000FF0000FF0000FF00FF000000FF0000FFFF0000FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000FF0000000000FF00FFFF0000FFFF00000000000000FFFFFF00FFFF00 %FF0000FFFFFF00FFFF00FF00FF00000000FF0000FFFFFFFFFF00FFFFFF00FFFF00FFFF000000FFFFFFFF000000FFFF00FFFF00FFFF0000FFFF0000FFFFFF0000FF00FFFF0000FFFFFF000000FFFFFF0000FFFF00000000FFFF00FFFF00FFFF000000000000FF00FF000000FFFF000000FFFF00FFFFFF0000FFFFFF00FFFF00FF %00FF000000000000FFFF00FF0000FFFFFF00FFFF00FFFF0000FF00FFFF00FFFF000000FFFF0000FFFF0000000000FFFFFFFF00FFFF00FFFFFFFF0000FFFFFFFF000000FFFFFF0000FFFF00FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000FF0000000000FF00000000000000000000000000000000FF00000000 %00000000000000000000000000000000FF00000000FF0000000000000000000000000000000000000000000000000000000000000000000000000000FF000000FF00000000000000000000000000FF00000000000000000000000000000000000000000000FF0000FF0000000000000000000000FF0000000000000000000000 %0000FF000000FF000000000000000000000000000000000000FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000FF0000FF0000FF0000FF0000000000000000000000000000000000FF000000 %00000000000000000000000000000000FF0000FF000000000000000000FF000000000000000000000000000000000000000000000000000000000000FF000000FF00000000000000000000000000FF00000000000000000000000000000000000000000000FF000000FF00000000000000000000000000000000000000000000 %0000FF000000FFFF000000000000000000000000000000000000FF0000000000FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFF00FFFF00000000000000000000000000000000FFFF000000 %0000000000000000000000000000000000FFFF00FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF000000000000000000000000FFFF000000000000000000FF0000000000000000000000FFFFFF0000FFFF000000000000000000000000000000000000000000 %000000FFFFFF00FF0000000000000000000000000000000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000 %0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000FFFFFF %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFF %FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %E2E2E2E2E2E2E2E2E1E1E0E0DFDFDFDEDEDDDDDCDCDCDBDBDADADADADAD9D9D8D8D7D7D7D6D6D5D5D4D4D4D3D3D2D2D2D2D2D1D1D0D0CFCFCFCECECDCDCCCCCCCBCBCACACACACAC9C9C8C8C8C7C7C6C6C5C5C5C4C4C3C3C2C2C2C2C2C1C1C0C0C0BFBFBEBEBDBDBDBCBCBBBBBABABABABAB9B9B8B8B8B7B7B6B6B5B5B5B4B4B3 %B3B2B2B2B2B2B1B1B0B0B0AFAFAEAEADADADACACABABAAAAAAA9A9A9A9A9A8A8A7A7A6A6A6A5A5A4A4A3A3A3A2A2A1A1A1A1A1A0A09F9F9E9E9E9D9D9C9C9B9B9B9A9A999999999998989797969696959594949393939292919191919190908F8F8E8E8E8D8D8C8C8C8B8B8A8A89898989898888878787868685858484848383 %8282818181818180807F7F7F7E7E7D7D7C7C7C7B7B7A7A79797979797878777777767675757474747373727272717171717070706F6F6E6E6D6D6D6C6C6B6B6A6A6A696969696868686767666665656564646363626262616161616060605F5F5E5E5D5D5D5C5C5B5B5A5A5A5959595958585857575656555555545453535352 %52515150505050504F4F4E4E4E4D4D4C4C4B4B4B4A4A494948484848484747464646454544444343434242414140404040403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1E0E0DFDFDFDEDEDDDDDCDCDCDBDBDADADADADAD9D9D8D8D7D7D7D6D6D5D5D4D4D4D3D3D2D2D2D2D2D1D1D0D0CFCFCFCECECDCDCCCCCCCBCBCACACACACAC9C9C8C8C8C7C7C6C6C5C5C5C4C4C3C3C2C2C2C2C2C1C1C0C0C0BFBFBEBEBDBDBDBCBCBBBBBABABABABAB9B9B8B8B8B7B7B6B6B5B5B5B4B4B3 %B3B2B2B2B2B2B1B1B0B0B0AFAFAEAEADADADACACABABAAAAAAA9A9A9A9A9A8A8A7A7A6A6A6A5A5A4A4A3A3A3A2A2A1A1A1A1A1A0A09F9F9E9E9E9D9D9C9C9B9B9B9A9A999999999998989797969696959594949393939292919191919190908F8F8E8E8E8D8D8C8C8C8B8B8A8A89898989898888878787868685858484848383 %8282818181818180807F7F7F7E7E7D7D7C7C7C7B7B7A7A79797979797878777777767675757474747373727272717171717070706F6F6E6E6D6D6D6C6C6B6B6A6A6A696969696868686767666665656564646363626262616161616060605F5F5E5E5D5D5D5C5C5B5B5A5A5A5959595958585857575656555555545453535352 %52515150505050504F4F4E4E4E4D4D4C4C4B4B4B4A4A494948484848484747464646454544444343434242414140404040403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1E0E0DFDFDFDEDEDDDDDCDCDCDBDBDADADADADAD9D9D8D8D7D7D7D6D6D5D5D4D4D4D3D3D2D2D2D2D2D1D1D0D0CFCFCFCECECDCDCCCCCCCBCBCACACACACAC9C9C8C8C8C7C7C6C6C5C5C5C4C4C3C3C2C2C2C2C2C1C1C0C0C0BFBFBEBEBDBDBDBCBCBBBBBABABABABAB9B9B8B8B8B7B7B6B6B5B5B5B4B4B3 %B3B2B2B2B2B2B1B1B0B0B0AFAFAEAEADADADACACABABAAAAAAA9A9A9A9A9A8A8A7A7A6A6A6A5A5A4A4A3A3A3A2A2A1A1A1A1A1A0A09F9F9E9E9E9D9D9C9C9B9B9B9A9A999999999998989797969696959594949393939292919191919190908F8F8E8E8E8D8D8C8C8C8B8B8A8A89898989898888878787868685858484848383 %8282818181818180807F7F7F7E7E7D7D7C7C7C7B7B7A7A79797979797878777777767675757474747373727272717171717070706F6F6E6E6D6D6D6C6C6B6B6A6A6A696969696868686767666665656564646363626262616161616060605F5F5E5E5D5D5D5C5C5B5B5A5A5A5959595958585857575656555555545453535352 %52515150505050504F4F4E4E4E4D4D4C4C4B4B4B4A4A494948484848484747464646454544444343434242414140404040403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1E0E0DFDFDFDEDEDDDDDCDCDCDBDBDADADADADAD9D9D8D8D7D7D7D6D6D5D5D4D4D4D3D3D2D2D2D2D2D1D1D0D0CFCFCFCECECDCDCCCCCCCBCBCACACACACAC9C9C8C8C8C7C7C6C6C5C5C5C4C4C3C3C2C2C2C2C2C1C1C0C0C0BFBFBEBEBDBDBDBCBCBBBBBABABABABAB9B9B8B8B8B7B7B6B6B5B5B5B4B4B3 %B3B2B2B2B2B2B1B1B0B0B0AFAFAEAEADADADACACABABAAAAAAA9A9A9A9A9A8A8A7A7A6A6A6A5A5A4A4A3A3A3A2A2A1A1A1A1A1A0A09F9F9E9E9E9D9D9C9C9B9B9B9A9A999999999998989797969696959594949393939292919191919190908F8F8E8E8E8D8D8C8C8C8B8B8A8A89898989898888878787868685858484848383 %8282818181818180807F7F7F7E7E7D7D7C7C7C7B7B7A7A79797979797878777777767675757474747373727272717171717070706F6F6E6E6D6D6D6C6C6B6B6A6A6A696969696868686767666665656564646363626262616161616060605F5F5E5E5D5D5D5C5C5B5B5A5A5A5959595958585857575656555555545453535352 %52515150505050504F4F4E4E4E4D4D4C4C4B4B4B4A4A494948484848484747464646454544444343434242414140404040403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1E0E0DFDFDFDEDEDDDDDCDCDCDBDBDADADADADAD9D9D8D8D7D7D7D6D6D5D5D4D4D4D3D3D2D2D2D2D2D1D1D0D0CFCFCFCECECDCDCCCCCCCBCBCACACACACAC9C9C8C8C8C7C7C6C6C5C5C5C4C4C3C3C2C2C2C2C2C1C1C0C0C0BFBFBEBEBDBDBDBCBCBBBBBABABABABAB9B9B8B8B8B7B7B6B6B5B5B5B4B4B3 %B3B2B2B2B2B2B1B1B0B0B0AFAFAEAEADADADACACABABAAAAAAA9A9A9A9A9A8A8A7A7A6A6A6A5A5A4A4A3A3A3A2A2A1A1A1A1A1A0A09F9F9E9E9E9D9D9C9C9B9B9B9A9A999999999998989797969696959594949393939292919191919190908F8F8E8E8E8D8D8C8C8C8B8B8A8A89898989898888878787868685858484848383 %8282818181818180807F7F7F7E7E7D7D7C7C7C7B7B7A7A79797979797878777777767675757474747373727272717171717070706F6F6E6E6D6D6D6C6C6B6B6A6A6A696969696868686767666665656564646363626262616161616060605F5F5E5E5D5D5D5C5C5B5B5A5A5A5959595958585857575656555555545453535352 %52515150505050504F4F4E4E4E4D4D4C4C4B4B4B4A4A494948484848484747464646454544444343434242414140404040403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1E0E0DFDFDFDEDEDDDDDCDCDCDBDBDADADADADAD9D9D8D8D7D7D7D6D6D5D5D4D4D4D3D3D2D2D2D2D2D1D1D0D0CFCFCFCECECDCDCCCCCCCBCBCACACACACAC9C9C8C8C8C7C7C6C6C5C5C5C4C4C3C3C2C2C2C2C2C1C1C0C0C0BFBFBEBEBDBDBDBCBCBBBBBABABABABAB9B9B8B8B8B7B7B6B6B5B5B5B4B4B3 %B3B2B2B2B2B2B1B1B0B0B0AFAFAEAEADADADACACABABAAAAAAA9A9A9A9A9A8A8A7A7A6A6A6A5A5A4A4A3A3A3A2A2A1A1A1A1A1A0A09F9F9E9E9E9D9D9C9C9B9B9B9A9A999999999998989797969696959594949393939292919191919190908F8F8E8E8E8D8D8C8C8C8B8B8A8A89898989898888878787868685858484848383 %8282818181818180807F7F7F7E7E7D7D7C7C7C7B7B7A7A79797979797878777777767675757474747373727272717171717070706F6F6E6E6D6D6D6C6C6B6B6A6A6A696969696868686767666665656564646363626262616161616060605F5F5E5E5D5D5D5C5C5B5B5A5A5A5959595958585857575656555555545453535352 %52515150505050504F4F4E4E4E4D4D4C4C4B4B4B4A4A494948484848484747464646454544444343434242414140404040403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1E0E0DFDFDFDEDEDDDDDCDCDCDBDBDADADADADAD9D9D8D8D7D7D7D6D6D5D5D4D4D4D3D3D2D2D2D2D2D1D1D0D0CFCFCFCECECDCDCCCCCCCBCBFCFCFBFBFBFBC9C8C8C8C7C7C6C6C5C5C5C4C4C3C3C2C2C2C2C2C1C1C0C0C0BFBFBEFAFAFAFAFAFABBBBBABABABABAB9B9B8B8B8B7B7B6B6B5B5B5B4B4B3 %B3B2B2B2B2B2B1B1B0B0B0AFAFAEAEADADADACACABABAAAAAAA9A9A9A9A9A8A8A7A7A6A6A6A5A5A4A4A3A3A3F7F7F6A1A1A1A1A0A09F9F9E9E9E9D9D9CF6F6F6F6F6F6999999999998989797969696959594949393939292F4F4F4919190908F8F8E8E8E8D8D8C8C8C8B8B8A8A89898989898888878787868685858484848383 %8282818181818180807F7F7F7E7E7D7D7C7C7C7B7B7A7A79797979797878777777767675757474747373727272717171717070706F6F6E6E6D6D6D6C6C6B6B6A6A6A696969696868686767666665656564646363626262616161616060605F5F5E5E5D5D5D5C5C5B5B5A5A5AEEEEED5958585857575656555555545453535352 %52515150505050504F4F4E4E4E4D4D4C4C4B4B4B4A4A494948484848484747464646454544444343434242414140404040403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1E0E0DFDFDFDEDEDDDDDCDCDCDBDBDADADADADAD9D9D8D8D7D7D7D6D6D5D5D4D4D4D3D3D2D2D2D2D2D1D1D0D0CFCFCFCECECDCDCCCCCCCBFCFCFCFBFBFBFBFBC8C8C8C7C7C6C6C5C5C5C4C4C3C3C2C2C2C2C2C1C1C0C0C0BFBFFAFAFAFAFAFAFAFABBBABABABABAB9B9B8B8B8B7B7B6B6B5B5B5B4B4B3 %B3B2B2B2B2B2B1B1B0B0B0AFAFAEAEADADADACACABABAAAAAAA9A9A9A9A9A8A8A7A7A6A6A6A5A5A4A4A3A3A3F7F7F6A1A1A1A1A0A09F9F9E9E9E9D9DF6F6F6F6F6F6F6F59999999998989797969696959594949393939292F4F4F4919190908F8F8E8E8E8D8D8C8C8C8B8B8A8A89898989898888878787868685858484848383 %8282818181818180807F7F7F7E7E7D7D7C7C7C7B7B7A7A79797979797878777777767675757474747373727272717171717070706F6F6E6E6D6D6D6C6C6B6B6A6A6A696969696868686767666665656564646363626262616161616060605F5F5E5E5D5D5D5C5C5B5B5A5A5AEEEEED5958585857575656555555545453535352 %52515150505050504F4F4E4E4E4D4D4C4C4B4B4B4A4A494948484848484747464646454544444343434242414140404040403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1E0E0DFDFDFDEDEDDDDDCDCDCDBDBDADADADADAD9D9D8D8D7D7D7D6D6D5D5D4D4D4D3D3D2D2D2D2D2D1D1D0D0CFCFCFCECECDCDCCCCCCCBFCFCFCCACACAFBFBFBC8C8C7C7C6C6C5C5C5C4C4C3C3C2C2C2C2C2C1C1C0C0C0BFBFFAFAFABDBDBCFAFAFABABABABABAB9B9B8B8B8B7B7B6B6B5B5B5B4B4B3 %B3B2B2B2B2B2B1B1B0B0B0AFAFAEAEADADADACACABABAAAAAAA9A9A9A9A9A8A8A7A7A6A6A6A5A5A4A4A3A3A3F7F7F6A1A1A1A1A0A09F9F9E9E9E9D9DF6F6F69B9B9AF6F5F599999998989797969696959594949393939292F4F4F4919190908F8F8E8E8E8D8D8C8C8C8B8B8A8A89898989898888878787868685858484848383 %8282818181818180807F7F7F7E7E7D7D7C7C7C7B7B7A7A79797979797878777777767675757474747373727272717171717070706F6F6E6E6D6D6D6C6C6B6B6A6A6A696969696868686767666665656564646363626262616161616060605F5F5E5E5D5D5D5C5C5B5B5A5A5AEEEEED5958585857575656555555545453535352 %52515150505050504F4F4E4E4E4D4D4C4C4B4B4B4A4A494948484848484747464646454544444343434242414140404040403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1E0E0DFDFDFDEDEDDDDDCDCDCDBDBDADADADADAD9D9D8D8D7D7D7D6D6D5D5D4D4D4D3D3D2D2D2D2D2D1D1D0D0CFCFCFCECECDCDCCCCCCCBCBCACACACACAFBFBFBC8C8C7C7C6C6C5C5C5C4C4C3C3C2C2C2C2C2C1C1C0C0C0BFBFBEBEBDBDBDBCFAFAFABABABABABAB9B9B8B8B8B7B7B6B6B5B5B5B4B4B3 %B3B2B2B2B2B2B1B1B0B0B0AFAFAEAEADADADACACABABAAAAAAA9A9A9A9A9A8A8A7A7A6A6A6A5A5A4A4A3A3A3F7F7F6A1A1A1A1A0A09F9F9E9E9E9D9D9C9C9B9B9B9AF6F5F599999998989797969696959594949393939292F4F4F4919190908F8F8E8E8E8D8D8C8C8C8B8B8A8A89898989898888878787868685858484848383 %8282818181818180807F7F7F7E7E7D7D7C7C7C7B7B7A7A79797979797878777777767675757474747373727272717171717070706F6F6E6E6D6D6D6C6C6B6B6A6A6A696969696868686767666665656564646363626262616161616060605F5F5E5E5D5D5D5C5C5B5B5A5A5AEEEEED5958585857575656555555545453535352 %52515150505050504F4F4E4E4E4D4D4C4C4B4B4B4A4A494948484848484747464646454544444343434242414140404040403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1E0E0DFDFFEFEFEDDDDDCDCDCDBDBFEFEFDFDFDD9D9D8D8D7D7FDFDFDFDFDD4D4D4D3FDFDFDFCD2FCFCFCD0D0FCFCFCCECECDFCFCFCCCCBCBCAFCFBFBCAFBFBFBC8C8C7C7C6C6C5C5C5FBFBFBFBFBC2C2C2C2FAFAFAC0C0BFBFBEBEFAFAFABCFAFAFABABAFAF9F9B9B9F9F9F9B7B7B6F9F9F9B5B4B4B3 %B3B2F9F9F8F8F8B1B0B0B0AFAFF8F8F8F8F8ACACABABF8F8F8A9A9A9F7F7F7A8A7A7A6F7F7F7F7F7A4A3A3A3F7F7F6A1F6F6F6A0A09F9FF6F6F69D9D9C9CF6F6F69AF6F5F59999F5F5F59797969696F5F5F5F593F5F5F592F4F4F491F4F4F48F8F8E8EF4F4F48C8C8CF4F4F48A89F4F4F389888887F3F3F3F3858584848483F3 %F3F3F3F3818181F2F2F2F2F2F2F2F27D7C7C7CF2F2F27AF2F2F27979F1F1F17777F1F1F1757474747373727272F1F1F07170F0F0F06F6E6EF0F0F06C6C6B6BF0F0F0F0F069696868EFEFEF666665656564EFEFEFEFEF6261616161EEEEEE5F5F5E5E5DEEEEEEEE5BEEEEEE5AEEEEED59EDEDED57575656EDEDED545453EDEDED %5251EDECEC5050504FECECECEC4D4D4C4C4B4BECECECECEC484848EBEBEBEBEBEBEBEB4544EBEBEBEBEBEBEBEB40404040403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1E0E0DFDFFEFEFEDDDDDCDCDCDBFEFEFEFDFDFDFDD9D8D8FDFDFDFDFDFDFDFDD4D4FDFDFDFDFCD2FCFCFCD0D0FCFCFCCECECDFCFCFCCCCBCBFCFCFBFBFBFBFBFBC8C8C7C7C6C6C5C5FBFBFBFBFBFBFBC2C2C2FAFAFAC0C0BFBFBEFAFAFAFAFAFAFAFABABAFAF9F9B9B9F9F9F9B7B7B6F9F9F9B5B4B4B3 %B3F9F9F9F8F8F8F8B0B0B0AFF8F8F8F8F8F8F8ACABABF8F8F8A9A9A9F7F7F7A8A7A7F7F7F7F7F7F7F7A3A3A3F7F7F6F6F6F6F6F6A09F9FF6F6F69D9D9CF6F6F6F6F6F6F5F59999F5F5F597979696F5F5F5F5F5F5F5F59292F4F4F4F4F4F4F4F48F8E8EF4F4F48C8C8CF4F4F48A89F4F4F3898888F3F3F3F3F3F3858484F3F3F3 %F3F3F3F3F38181F2F2F2F2F2F2F2F27D7C7CF2F2F2F2F2F2F2F27979F1F1F17777F1F1F1757474747373727272F1F1F0717070F0F0F06EF0F0F06D6C6C6BF0F0F0F0F0F0EF696868EFEFEF66666565EFEFEFEFEFEFEFEFEF616161EEEEEE5F5F5E5EEEEEEEEEEEEEEEEE5A5AEEEEEDEDEDEDEDED575656EDEDED545453EDEDED %5251EDECEC505050ECECECECECEC4D4C4CECECECECECECECEB4848EBEBEBEBEBEBEBEB4544EBEBEBEBEBEBEBEBEA404040403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1E0E0DFDFFEFEFEDDDDDCDCDCFEFEFEDADADAFDFDFDD8D8FDFDFDD6D6FDFDFDD4D4FDFDFDD2D2D2FCFCFCD0D0FCFCFCCECECDFCFCFCCCCBFCFCFCFBCAFBFBFBFBC8C8C7C7C6C6C5FBFBFBFBC3FBFBFBFBC2C2FAFAFAC0C0BFBFFAFAFAFABDFAFAFAFABABAFAF9F9B9B9F9F9F9B7B7B6F9F9F9B5B4B4B3 %F9F9F9B2B2B2F8F8F8B0B0F8F8F8AEADADF8F8F8ABABF8F8F8A9A9A9F7F7F7A8A7F7F7F7A6A5A5F7F7F7A3A3F7F7F6F6A1F6F6F6F69F9FF6F6F69D9DF6F6F6F69BF6F6F5F59999F5F5F597979696F5F5F59494F5F5F59292F4F4F4F491F4F4F4F48E8EF4F4F48C8C8CF4F4F48A89F4F4F38988F3F3F3F386F3F3F38484F3F3F3 %8282F3F3F3818180F2F2F27F7E7E7D7D7CF2F2F2F27AF2F2F2F27979F1F1F17777F1F1F1757474747373727272F1F1F0717070F0F0F06EF0F0F06D6C6CF0F0F06A6A69F0EFEF6868EFEFEF666665EFEFEFEFEFEFEFEFEFEFEF6161EEEEEE5F5F5E5EEEEEEE5C5CEEEEEE5A5AEEEEEDED58EDEDEDED5656EDEDED545453EDEDED %5251EDECEC5050ECECECEC4EECECEC4C4CECECEC4A4AECECEB484848EBEBEB464646454544EBEBEBEBEBEBEBEBEAEA4040403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1E0E0DFDFFEFEFEDDDDDCDCDCFEFEFEDADADADAD9D9D8D8D7D7D7D6FDFDFDFDD4D4FDFDFDD2D2D2FCFCFCD0D0FCFCFCCECECDFCFCFCCCCBFCFCFCCACACAFBFBFBC8C8C7C7C6C6C5FBFBFBC4C3C3FBFBFBC2C2FAFAFAC0C0BFBFFAFAFABDBDBCFAFAFABABABABABAB9B9F9F9F9B7B7B6F9F9F9B5B4B4B3 %F9F9F9B2B2B2B1B1B0B0B0F8F8F8AEADADADACACABABF8F8F8A9A9A9F7F7F7A8A7F7F7F7A6A5A5A4A4A3A3A3F7F7F6A1A1A1F6F6F69F9F9E9E9E9D9DF6F6F69B9B9AF6F5F59999F5F5F597979696F5F5F59494F5F5F59292F4F4F4919190F4F4F48E8EF4F4F48C8C8CF4F4F48A89F4F4F38988F3F3F3878686F3858484848383 %82F3F3F3F381818080F2F2F27E7E7D7D7CF2F2F27B7A7AF2F2F279797878777777F1F1F1757474747373727272F1F1F071707070F0F0F0F0F06D6D6C6CF0F0F06A6A696969696868EFEFEF666665EFEFEF6463636262EFEFEF6161EEEEEE5F5F5E5EEEEEEE5C5CEEEEEE5A5AEEEEED595858EDEDED5656EDEDED545453EDEDED %5251EDECEC5050ECECEC4E4E4EEC4D4C4C4B4B4B4AECECECEB48484848EBEBEB4646454544EBEBEB43424241EBEAEAEA40403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1E0E0DFDFFEFEFEDDDDDCDCDCFEFEFEFEFDFDFDFDFDD8D8D7D7FDFDFDFDFDD4D4D4FDFDFDD2D2D2FCFCFCD0D0FCFCFCCECECDFCFCFCCCCBFCFCFCCACACAFBFBFBC8C8C7C7C6C6C5FBFBFBC4C3C3FBFBFBC2C2FAFAFAC0C0BFBFFAFAFABDBDBCFAFAFABABABABABAB9B9F9F9F9B7B7B6F9F9F9B5B4B4B3 %F9F9F9F9F8F8F8F8F8B0B0F8F8F8F8F8F8F8F8F8ABABF8F8F8A9A9A9F7F7F7A8A7F7F7F7F7F7F7F7F7F7A3A3F7F7F6A1A1A1F6F6F69F9F9E9E9E9D9DF6F6F69B9B9AF6F5F59999F5F5F59797969696F5F5F594F5F5F59292F4F4F4919190F4F4F48E8EF4F4F48C8C8CF4F4F48A89F4F4F38988F3F3F3878686858584848483F3 %F3F3F3F38181818080F2F2F27E7E7D7D7CF2F2F27B7A7AF2F2F279797878777777F1F1F1757474747373727272F1F1F0717070706FF0F0F06D6D6D6C6CF0F0F0F0F0F0F0EFEF6868EFEFEF6666EFEFEF646463EFEFEFEFEFEF6161EEEEEE5F5F5E5E5DEEEEEE5CEEEEEE5A5AEEEEED595858EDEDED5656EDEDED545453EDEDED %5251EDECEC5050ECECEC4E4E4E4D4D4C4C4B4BECECECECEC4848484848EBEBEB4646454544EBEBEB4342424141EAEAEA40403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1E0E0DFDFFEFEFEDDDDDCDCDCFEFEFEFEFDFDFDFDFDD8D8D7FDFDFDFDFDD5D4D4D4FDFDFDD2D2D2FCFCFCD0D0FCFCFCCECECDFCFCFCCCCBFCFCFCCACACAFBFBFBC8C8C7C7C6C6C5FBFBFBC4C3C3FBFBFBC2C2FAFAFAC0C0BFBFFAFAFABDBDBCFAFAFABABABABABAB9B9F9F9F9B7B7B6F9F9F9B5B4B4B3 %F9F9F9F9F8F8F8F8F8B0B0F8F8F8F8F8F8F8F8F8ABABF8F8F8A9A9A9F7F7F7A8A7F7F7F7F7F7F7F7F7F7A3A3F7F7F6A1A1A1F6F6F69F9F9E9E9E9D9DF6F6F69B9B9AF6F5F59999F5F5F5979796969695F5F5F5F5F5F59292F4F4F4919190F4F4F48E8EF4F4F48C8C8CF4F4F48A89F4F4F38988F3F3F38786868585848484F3F3 %F3F3F38181818180807FF2F2F27E7D7D7CF2F2F27B7A7AF2F2F279797878777777F1F1F1F1F1F1F1F173727272F1F1F0717070706FF0F0F06D6D6D6C6CF0F0F0F0F0F0F0EFEF6868EFEFEF6666EFEFEF646463EFEFEFEFEFEF6161EEEEEE5F5F5E5E5D5DEEEEEEEEEEEE5A5AEEEEED595858EDEDED5656EDEDED545453EDEDED %5251EDECEC5050ECECEC4E4E4E4D4D4C4C4BECECECECEC49484848484847EBEBEB46454544EBEBEB4342424141EAEAEA40403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1E0E0DFDFFEFEFEDDDDDCDCDCFEFEFEDADADAFDFDFDD8D8FDFDFDFDD6D5D5D4D4D4FDFDFDD2D2D2FCFCFCD0D0FCFCFCCECECDFCFCFCCCCBFCFCFCCACACAFBFBFBC8C8C7C7C6C6C5FBFBFBC4C3C3FBFBFBC2C2FAFAFAC0C0BFBFFAFAFABDBDBCFAFAFABABABABABAB9B9F9F9F9B7B7B6F9F9F9B5B4B4B3 %F9F9F9B2B2B2F8F8F8B0B0F8F8F8AEADADF8F8F8ABABF8F8F8A9A9A9F7F7F7A8A7F7F7F7A6A5A5F7F7F7A3A3F7F7F6A1A1A1F6F6F69F9F9E9E9E9D9DF6F6F69B9B9AF6F5F59999F5F5F59797969696959594F5F5F5F59292F4F4F4919190F4F4F48E8EF4F4F48C8C8CF4F4F48A89F4F4F38988F3F3F3878686F3858484F3F3F3 %F382818181818180807F7FF2F2F27D7D7CF2F2F27B7A7AF2F2F279797878777777F1F1F1F1F1F1F1F1F1727272F1F1F071707070F0F0F0F0F06D6D6C6CF0F0F06A6A69F0EFEF6868EFEFEF6666EFEFEF646463EFEFEFEFEFEF6161EEEEEE5F5F5E5E5D5D5D5CEEEEEEEE5A5AEEEEED595858EDEDED5656EDEDED545453EDEDED %5251EDECEC5050ECECEC4E4E4EEC4D4C4CECECECEC4A494948484848484747EBEBEB454544EBEBEB4342424141EAEAEA40403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1E0E0DFDFFEFEFEDDDDDCDCDCFEFEFEFEDADAFDFDFDD8D8FDFDFDD6D6FDFDFDD4D4FDFDFDD2D2D2FCFCFCD0D0FCFCFCFCCECDFCFCFCCCCBFCFCFCFBCAFBFBFBFBC8C8C7C7C6C6C5FBFBFBFBC3FBFBFBFBC2C2FAFAFAFAC0BFBFFAFAFAFABDFAFAFAFABABABABABAB9B9F9F9F9B7B7B6F9F9F9F9B4B4B3 %F9F9F9F9B2B2F8F8F8B0B0F8F8F8F8ADADF8F8F8ABABF8F8F8F7A9A9F7F7F7A8A7F7F7F7F7A5A5F7F7F7A3A3F7F7F6F6A1F6F6F6F69F9F9E9E9E9D9DF6F6F6F69BF6F6F5F59999F5F5F5F5979696F5F5959494F5F5F59292F4F4F4F491F4F4F4F48E8EF4F4F4F48C8CF4F4F48A89F4F4F38988F3F3F3F386F3F3F38484F3F3F3 %8282F3F3F3818180807F7FF2F2F27D7D7CF2F2F2F27AF2F2F2F279797878777777F1F1F1F1F1F1F1F1F1F17272F1F1F0717070F0F0F06EF0F0F06D6C6CF0F0F0F06A69F0EFEF6868EFEFEF6666EFEFEF6464636362626261616161EEEEEEEE5F5E5EEEEE5D5C5CEEEEEE5A5AEEEEEDED58EDEDEDED5656EDEDEDED5453EDEDED %5251EDECEC5050ECECECEC4EECECEC4C4CECECEC4A4AECECEB484848484747EBEBEB454544EBEBEB4342424141EAEAEA40403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1E0E0DFDFFEFEFEDDDDDCDCDCDBFEFEFEFDFDFDFDD9D8D8FDFDFDFDFDFDFDFDD4FDFDFDFDFDFCD2FCFCFCD0D0FCFCFCFCFCFCFCFCFCCCCBCBFCFCFBFBFBFBFBFBC8C8C7C7C6C6C5C5FBFBFBFBFBFBFBC2C2C2FAFAFAFAFAFABFBEFAFAFAFAFAFAFAFABABABABABAB9F9F9F9F9F9F9B6F9F9F9F9F9F9B3 %B3F9F9F9F8F8F8F8B0B0B0AFF8F8F8F8F8F8F8ACABABF8F8F8F7F7F7F7F7F7A8A7A7F7F7F7F7F7F7F7A3A3A3F7F7F6F6F6F6F6F6A09F9F9E9E9E9D9D9CF6F6F6F6F6F6F5F59999F5F5F5F5F5F59696F5F5F5F5F5F5F59292F4F4F4F4F4F4F4F48F8E8EF4F4F4F4F4F4F4F4F48A89F4F4F3898888F3F3F3F3F3F3858484F3F3F3 %F3F3F3F3F3818180807F7F7FF2F2F27D7C7CF2F2F2F2F2F2F2F279797878777777F1F1F175747474F1F1F17272F1F1F0717070F0F0F06EF0F0F06D6C6C6BF0F0F0F0F0F0EF696868EFEFEF6666EFEFEF646463636262EFEF616161EEEEEEEEEEEE5E5DEEEEEEEEEEEEEE5A5AEEEEEDEDEDEDEDED575656EDEDEDEDEDEDEDEDED %5251EDECEC505050ECECECECECEC4D4C4CECECECECECECECEB48484848474746EBEBEB4544EBEBEB4342424141EAEAEA40403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1E0E0DFDFFEFEFEDDDDDCDCDCDBDBFEFEFDFDFDD9D9D8D8D7FDFDFDFDFDFDD4D4FDFDFDFDFDFCD2FCFCFCD0D0FCFCFCCEFCFCFCFCCCCCCBCBCAFCFBFBCAFBFBFBC8C8C7C7C6C6C5C5C5FBFBFBFBFBC2C2C2C2FAFAFAC0FAFABFBEBEFAFAFABCFAFAFABABABABABAB9F9F9F9F9F9F9B6F9F9F9B5F9F9B3 %B3B2F9F9F8F8F8B1B0B0B0AFAFF8F8F8F8F8ACACABABF8F8F8A9F7F7F7F7A8A8A7A7A6F7F7F7F7F7A4A3A3A3F7F7F6A1F6F6F6A0A09F9F9E9E9E9D9D9C9CF6F6F69AF6F5F59999F5F5F597F5F5969695F5F5F5F5F5939292F4F4F491F4F4F48F8F8E8EF4F4F48CF4F4F4F48A8A89F4F4F389888887F3F3F3F38585848484F3F3 %F3F3F3F3818181F2F2F27F7FF2F2F27D7C7C7CF2F2F27AF2F2F279797878777777F1F1F175747474F1F1F17272F1F1F07170F0F0F06F6E6EF0F0F06C6C6B6BF0F0F0F0F069696868EFEFEF666665EFEFEF64636362EFEFEFEF6161EEEEEE5FEEEE5E5D5DEEEEEEEEEE5A5A5AEEEEED59EDEDED57575656EDEDED54EDEDEDED52 %5251EDECEC5050504FECECECEC4D4D4C4C4BECECECECECEC484848EBEBEB4746EBEBEB4544EBEBEB43424241EBEAEAEA40403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1FEFEFEFEFEFEFEFEFEFEFEDCDBDBDADADADADAD9D9D8D8D7D7D7D6D6D5D5D4D4D4FDFDFDD2D2D2D2D1D1D0D0CFCFCFCECECDCDCCCCCCCBCBCACACACACAC9C9C8C8C8C7C7C6C6C5C5C5C4C4C3C3C2C2C2C2C2C1C1C0C0C0BFBFBEBEBDBDBDBCBCBBBBBABABABABAB9B9F9F9F9B7B7B6B6B5B5B5B4B4B3 %B3B2B2B2B2B2B1B1B0B0B0AFAFAEAEADADADACACABABF8F8F8A9A9A9A9A9A8A8A7A7A6A6A6A5A5A4A4A3A3A3A2A2A1A1A1A1A1A0A09F9F9E9E9E9D9D9C9C9B9B9B9A9A999999999998989797969696959594949393939292919191919190908F8F8E8EF4F4F48C8C8C8B8B8A8A89898989898888878787868685858484848383 %82828181818181F2F2F27F7FF2F2F27D7C7C7C7B7B7A7AF2F2F279797878777777F1F1F1F1F1F1F1F1F1F17272717171717070706F6F6E6E6D6D6D6C6C6B6B6A6A6A696969696868EFEFEF666665EFEFEFEFEFEFEFEFEFEF6161616060605F5F5E5E5D5D5D5C5C5B5B5A5A5A5959595958585857575656EDEDED545453535352 %52515150505050504F4F4E4E4E4D4D4C4C4B4B4B4A4A4949484848EBEBEB4746EBEBEB4544EBEBEBEBEBEBEBEBEAEA4040403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1FEFEFEFEFEFEFEFEFEFEFEDCDBDBDADADADADAD9D9D8D8D7D7D7D6D6D5D5D4D4D4FDFDFDD2D2D2FCFCFCD0D0CFCFCFCECECDCDCCCCCCCBCBCACACACACAC9C9C8C8C8C7C7C6C6C5C5C5C4C4C3C3C2C2C2C2C2C1C1C0C0C0BFBFBEBEBDBDBDBCBCBBBBBABABABABAB9B9F9F9F9F9F9F9B6B5B5B5B4B4B3 %B3B2B2B2B2B2B1B1B0B0B0AFAFAEAEADADADACACABABF8F8F8A9A9A9A9A9A8A8A7A7A6A6A6A5A5A4A4A3A3A3A2A2A1A1A1A1A1A0A09F9F9E9E9E9D9D9C9C9B9B9B9A9A999999999998989797969696959594949393939292919191919190908F8F8E8EF4F4F48C8C8C8B8B8A8A89F4F4F3898888878787868685858484848383 %8282818181818180F2F2F2F2F2F27D7D7C7C7C7B7B7A7AF2F2F279797878777777F1F1F1F1F1F1F1F1F1727272F1F1F0717070706F6F6E6E6D6D6D6C6C6B6B6A6A6A696969696868EFEFEF66666565EFEFEFEFEFEFEFEFEF6161616060605F5F5E5E5D5D5D5C5C5B5B5A5A5A5959595958585857575656EDEDED545453535352 %5251EDECEC5050504F4F4E4E4E4D4D4C4C4B4B4B4A4A494948484848EBEBEBEBEBEB454544EBEBEBEBEBEBEBEBEA404040403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1FEFEFEFEFEFEFEFEFEFEFEDCDBDBDADADADADAD9D9D8D8D7D7D7D6D6D5D5D4D4D4D3FDFDD2D2D2FCFCFCD0D0CFCFCFCECECDCDCCCCCCCBCBCACACACACAC9C9C8C8C8C7C7C6C6C5C5C5C4C4C3C3C2C2C2C2C2C1C1C0C0C0BFBFBEBEBDBDBDBCBCBBBBBABABABABAB9B9B8F9F9F9F9F9B6B5B5B5B4B4B3 %B3B2B2B2B2B2B1B1B0B0B0AFAFAEAEADADADACACABABF8F8F8A9A9A9A9A9A8A8A7A7A6A6A6A5A5A4A4A3A3A3A2A2A1A1A1A1A1A0A09F9F9E9E9E9D9D9C9C9B9B9B9A9A999999999998989797969696959594949393939292919191919190908F8F8E8EF4F4F48C8C8C8B8B8A8A89F4F4F3898888878787868685858484848383 %828281818181818080F2F2F2F27E7D7D7C7C7C7B7B7A7AF2F2F279797878777777F1F1F1F1F1F1F1F173727272F1F1F0717070706F6F6E6E6D6D6D6C6C6B6B6A6A6A696969696868EFEFEF666665656564EFEFEFEFEF62616161616060605F5F5E5E5D5D5D5C5C5B5B5A5A5A5959595958585857575656EDEDED545453535352 %5251EDECEC5050504F4F4E4E4E4D4D4C4C4B4B4B4A4A49494848484848EBEBEBEB46454544EBEBEBEBEBEBEBEB40404040403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1E0E0DFDFDFDEDEDDDDDCDCDCDBDBDADADADADAD9D9D8D8D7D7D7D6D6D5D5D4D4D4D3D3D2D2D2D2D2D1D1D0D0CFCFCFCECECDCDCCCCCCCBCBCACACACACAC9C9C8C8C8C7C7C6C6C5C5C5C4C4C3C3C2C2C2C2C2C1C1C0C0C0BFBFBEBEBDBDBDBCBCBBBBBABABABABAB9B9B8B8B8B7B7B6B6B5B5B5B4B4B3 %B3B2B2B2B2B2B1B1B0B0B0AFAFAEAEADADADACACABABAAAAAAA9A9A9A9A9A8A8A7A7A6A6A6A5A5A4A4A3A3A3A2A2A1A1A1A1A1A0A09F9F9E9E9E9D9D9C9C9B9B9B9A9A999999999998989797969696959594949393939292919191919190908F8F8E8E8E8D8D8C8C8C8B8B8A8A89898989898888878787868685858484848383 %8282818181818180807F7F7F7E7E7D7D7C7C7C7B7B7A7A79797979797878777777767675757474747373727272717171717070706F6F6E6E6D6D6D6C6C6B6B6A6A6A696969696868686767666665656564646363626262616161616060605F5F5E5E5D5D5D5C5C5B5B5A5A5A5959595958585857575656555555545453535352 %52515150505050504F4F4E4E4E4D4D4C4C4B4B4B4A4A494948484848484747464646454544444343434242414140404040403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1E0E0DFDFDFDEDEDDDDDCDCDCDBDBDADADADADAD9D9D8D8D7D7D7D6D6D5D5D4D4D4D3D3D2D2D2D2D2D1D1D0D0CFCFCFCECECDCDCCCCCCCBCBCACACACACAC9C9C8C8C8C7C7C6C6C5C5C5C4C4C3C3C2C2C2C2C2C1C1C0C0C0BFBFBEBEBDBDBDBCBCBBBBBABABABABAB9B9B8B8B8B7B7B6B6B5B5B5B4B4B3 %B3B2B2B2B2B2B1B1B0B0B0AFAFAEAEADADADACACABABAAAAAAA9A9A9A9A9A8A8A7A7A6A6A6A5A5A4A4A3A3A3A2A2A1A1A1A1A1A0A09F9F9E9E9E9D9D9C9C9B9B9B9A9A999999999998989797969696959594949393939292919191919190908F8F8E8E8E8D8D8C8C8C8B8B8A8A89898989898888878787868685858484848383 %8282818181818180807F7F7F7E7E7D7D7C7C7C7B7B7A7A79797979797878777777767675757474747373727272717171717070706F6F6E6E6D6D6D6C6C6B6B6A6A6A696969696868686767666665656564646363626262616161616060605F5F5E5E5D5D5D5C5C5B5B5A5A5A5959595958585857575656555555545453535352 %52515150505050504F4F4E4E4E4D4D4C4C4B4B4B4A4A494948484848484747464646454544444343434242414140404040403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1E0E0DFDFDFDEDEDDDDDCDCDCDBDBDADADADADAD9D9D8D8D7D7D7D6D6D5D5D4D4D4D3D3D2D2D2D2D2D1D1D0D0CFCFCFCECECDCDCCCCCCCBCBCACACACACAC9C9C8C8C8C7C7C6C6C5C5C5C4C4C3C3C2C2C2C2C2C1C1C0C0C0BFBFBEBEBDBDBDBCBCBBBBBABABABABAB9B9B8B8B8B7B7B6B6B5B5B5B4B4B3 %B3B2B2B2B2B2B1B1B0B0B0AFAFAEAEADADADACACABABAAAAAAA9A9A9A9A9A8A8A7A7A6A6A6A5A5A4A4A3A3A3A2A2A1A1A1A1A1A0A09F9F9E9E9E9D9D9C9C9B9B9B9A9A999999999998989797969696959594949393939292919191919190908F8F8E8E8E8D8D8C8C8C8B8B8A8A89898989898888878787868685858484848383 %8282818181818180807F7F7F7E7E7D7D7C7C7C7B7B7A7A79797979797878777777767675757474747373727272717171717070706F6F6E6E6D6D6D6C6C6B6B6A6A6A696969696868686767666665656564646363626262616161616060605F5F5E5E5D5D5D5C5C5B5B5A5A5A5959595958585857575656555555545453535352 %52515150505050504F4F4E4E4E4D4D4C4C4B4B4B4A4A494948484848484747464646454544444343434242414140404040403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1E0E0DFDFDFDEDEDDDDDCDCDCDBDBDADADADADAD9D9D8D8D7D7D7D6D6D5D5D4D4D4D3D3D2D2D2D2D2D1D1D0D0CFCFCFCECECDCDCCCCCCCBCBCACACACACAC9C9C8C8C8C7C7C6C6C5C5C5C4C4C3C3C2C2C2C2C2C1C1C0C0C0BFBFBEBEBDBDBDBCBCBBBBBABABABABAB9B9B8B8B8B7B7B6B6B5B5B5B4B4B3 %B3B2B2B2B2B2B1B1B0B0B0AFAFAEAEADADADACACABABAAAAAAA9A9A9A9A9A8A8A7A7A6A6A6A5A5A4A4A3A3A3A2A2A1A1A1A1A1A0A09F9F9E9E9E9D9D9C9C9B9B9B9A9A999999999998989797969696959594949393939292919191919190908F8F8E8E8E8D8D8C8C8C8B8B8A8A89898989898888878787868685858484848383 %8282818181818180807F7F7F7E7E7D7D7C7C7C7B7B7A7A79797979797878777777767675757474747373727272717171717070706F6F6E6E6D6D6D6C6C6B6B6A6A6A696969696868686767666665656564646363626262616161616060605F5F5E5E5D5D5D5C5C5B5B5A5A5A5959595958585857575656555555545453535352 %52515150505050504F4F4E4E4E4D4D4C4C4B4B4B4A4A494948484848484747464646454544444343434242414140404040403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1E0E0DFDFDFDEDEDDDDDCDCDCDBDBDADADADADAD9D9D8D8D7D7D7D6D6D5D5D4D4D4D3D3D2D2D2D2D2D1D1D0D0CFCFCFCECECDCDCCCCCCCBCBCACACACACAC9C9C8C8C8C7C7C6C6C5C5C5C4C4C3C3C2C2C2C2C2C1C1C0C0C0BFBFBEBEBDBDBDBCBCBBBBBABABABABAB9B9B8B8B8B7B7B6B6B5B5B5B4B4B3 %B3B2B2B2B2B2B1B1B0B0B0AFAFAEAEADADADACACABABAAAAAAA9A9A9A9A9A8A8A7A7A6A6A6A5A5A4A4A3A3A3A2A2A1A1A1A1A1A0A09F9F9E9E9E9D9D9C9C9B9B9B9A9A999999999998989797969696959594949393939292919191919190908F8F8E8E8E8D8D8C8C8C8B8B8A8A89898989898888878787868685858484848383 %8282818181818180807F7F7F7E7E7D7D7C7C7C7B7B7A7A79797979797878777777767675757474747373727272717171717070706F6F6E6E6D6D6D6C6C6B6B6A6A6A696969696868686767666665656564646363626262616161616060605F5F5E5E5D5D5D5C5C5B5B5A5A5A5959595958585857575656555555545453535352 %52515150505050504F4F4E4E4E4D4D4C4C4B4B4B4A4A494948484848484747464646454544444343434242414140404040403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1E0E0DFDFDFDEDEDDDDDCDCDCDBDBDADADADADAD9D9D8D8D7D7D7D6D6D5D5D4D4D4D3D3D2D2D2D2D2D1D1D0D0CFCFCFCECECDCDCCCCCCCBCBCACACACACAC9C9C8C8C8C7C7C6C6C5C5C5C4C4C3C3C2C2C2C2C2C1C1C0C0C0BFBFBEBEBDBDBDBCBCBBBBBABABABABAB9B9B8B8B8B7B7B6B6B5B5B5B4B4B3 %B3B2B2B2B2B2B1B1B0B0B0AFAFAEAEADADADACACABABAAAAAAA9A9A9A9A9A8A8A7A7A6A6A6A5A5A4A4A3A3A3A2A2A1A1A1A1A1A0A09F9F9E9E9E9D9D9C9C9B9B9B9A9A999999999998989797969696959594949393939292919191919190908F8F8E8E8E8D8D8C8C8C8B8B8A8A89898989898888878787868685858484848383 %8282818181818180807F7F7F7E7E7D7D7C7C7C7B7B7A7A79797979797878777777767675757474747373727272717171717070706F6F6E6E6D6D6D6C6C6B6B6A6A6A696969696868686767666665656564646363626262616161616060605F5F5E5E5D5D5D5C5C5B5B5A5A5A5959595958585857575656555555545453535352 %52515150505050504F4F4E4E4E4D4D4C4C4B4B4B4A4A494948484848484747464646454544444343434242414140404040403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %E2E2E2E2E2E2E2E2E1E1E0E0DFDFDFDEDEDDDDDCDCDCDBDBDADADADADAD9D9D8D8D7D7D7D6D6D5D5D4D4D4D3D3D2D2D2D2D2D1D1D0D0CFCFCFCECECDCDCCCCCCCBCBCACACACACAC9C9C8C8C8C7C7C6C6C5C5C5C4C4C3C3C2C2C2C2C2C1C1C0C0C0BFBFBEBEBDBDBDBCBCBBBBBABABABABAB9B9B8B8B8B7B7B6B6B5B5B5B4B4B3 %B3B2B2B2B2B2B1B1B0B0B0AFAFAEAEADADADACACABABAAAAAAA9A9A9A9A9A8A8A7A7A6A6A6A5A5A4A4A3A3A3A2A2A1A1A1A1A1A0A09F9F9E9E9E9D9D9C9C9B9B9B9A9A999999999998989797969696959594949393939292919191919190908F8F8E8E8E8D8D8C8C8C8B8B8A8A89898989898888878787868685858484848383 %8282818181818180807F7F7F7E7E7D7D7C7C7C7B7B7A7A79797979797878777777767675757474747373727272717171717070706F6F6E6E6D6D6D6C6C6B6B6A6A6A696969696868686767666665656564646363626262616161616060605F5F5E5E5D5D5D5C5C5B5B5A5A5A5959595958585857575656555555545453535352 %52515150505050504F4F4E4E4E4D4D4C4C4B4B4B4A4A494948484848484747464646454544444343434242414140404040403F3F3E3E3E3D3D3C3C3B3B3B3A3A393938383838383737373636353534343433333232313131303030302F2F2F2E2E2D2D2C2C2C2B2B2A2A29292928282828272727262625252424242323222221 %2121202020201F1F1F1E1E1D1D1C1C1C1B1B1A1A1A191918181818181717161615151514141313121212111110101010100F0F0E0E0D0D0D0C0C0B0B0A0A0A09090808080808070706060505050404030302020201010000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %%EndPreview %%BeginProlog 100 dict dup begin % % File: org/freehep/graphicsio.ps/PSProlog.txt % Author: Charles Loomis % % Redefinitions which save some space in the output file. These are also % the same as the PDF operators. /q {gsave} def /Q {grestore} def /n {newpath} def /m {moveto} def /l {lineto} def /c {curveto} def /h {closepath} def /re {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath} def /f {fill} def /f* {eofill} def /F {gsave vg&FC fill grestore} def /F* {gsave vg&FC eofill grestore} def /s {closepath stroke} def /S {stroke} def /b {closepath gsave vg&FC fill grestore gsave stroke grestore newpath} def /B {gsave vg&FC fill grestore gsave stroke grestore newpath} def /b* {closepath gsave vg&FC eofill grestore gsave stroke grestore newpath} def /B* {gsave vg&FC eofill grestore gsave stroke grestore newpath} def /g {1 array astore /vg&fcolor exch def} def /G {setgray} def /k {4 array astore /vg&fcolor exch def} def /K {setcmykcolor} def /rg {3 array astore /vg&fcolor exch def} def /RG {setrgbcolor} def % Initialize the fill color. 0 0 0 rg /vg&FC {mark vg&fcolor aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /vg&DFC {/vg&fcolor exch def} def /vg&C {mark exch aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /w {setlinewidth} def /j {setlinejoin} def /J {setlinecap} def /M {setmiterlimit} def /d {setdash} def /i {setflat} def /W {clip} def /W* {eoclip} def % Setup the default graphics state. % (black; 1 pt. linewidth; miter join; butt-ends; solid) /defaultGraphicsState {0 g 1 w 0 j 0 J [] 0 d} def % Emulation of the rectangle operators for PostScript implementations % which do not implement all Level 2 features. This is an INCOMPLETE % emulation; only the "x y width height rect..." form is emulated. /*rf {gsave newpath re fill grestore} def /*rs {gsave newpath re stroke grestore} def /*rc {newpath re clip} def /rf /rectfill where {pop /rectfill}{/*rf} ifelse load def /rs /rectstroke where {pop /rectstroke}{/*rs} ifelse load def /rc /rectclip where {pop /rectclip}{/*rc} ifelse load def % Emulation of the selectfont operator. This includes a 20% increase in % the fontsize which is necessary to get sizes similar to the Java fonts. /*sf {exch findfont exch dup type /arraytype eq {makefont}{scalefont} ifelse setfont} bind def /sf /selectfont where {pop {1.2 mul selectfont}}{{1.2 mul *sf}} ifelse def % Special version of stroke which allows the dash pattern to continue % across path segments. (This may be needed for PostScript although % modern printers seem to do this correctly.) /vg&stroke { currentdash pop length 0 eq {stroke} { currentdash /vg&doffset exch def pop flattenpath {m vg&resetdash} {2 copy currentpoint 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt 3 1 roll l currentdash 3 -1 roll add setdash} {} {h vg&resetdash} pathforall stroke vg&resetdash } ifelse } def /vg&resetdash {currentdash pop vg&doffset setdash} def % Initialize variables for safety. /delta 0 def /xv 0 def /yv 0 def /width 0 def /height 0 def % Initialize to portrait INTERNATIONAL (Letter-height, A4-width) page. /pw 595 def /ph 791 def /po true def /ftp false def % Initialize margins to 20 points. /ml 20 def /mr 20 def /mt 20 def /mb 20 def % Temporary matrices. /smatrix 0 def /nmatrix 0 def % set page size (usage: setpagesize) /setpagesize {/ph exch def /pw exch def} def % set page orientation (usage: portrait or landscape) /portrait {/po true def} def /landscape {/po false def} def % force natural size for image (usage: naturalsize) /naturalsize {/ftp false def} def % resize image to fill page (usage: fittopage) /fittopage {/ftp true def} def % set margins of the page (usage: setmargins) /setmargins {/mr exch def /mt exch def /mb exch def /ml exch def} def % set the graphic's size (usage: setsize) /setsize {/gh exch def /gw exch def} def % set the graphic's origin (usage: setorigin) /setorigin {/gy exch def /gx exch def} def % calculate image center /imagecenter {pw ml sub mr sub 2 div ml add ph mt sub mb sub 2 div mb add} def % calculate the necessary scaling /imagescale {po {gw}{gh} ifelse pw ml sub mr sub div po {gh}{gw} ifelse ph mt sub mb sub div 2 copy lt {exch} if pop ftp not {1 2 copy lt {exch} if pop} if 1 exch div /sfactor exch def /gw gw sfactor mul def /gh gh sfactor mul def} def % calculate image origin /imageorigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div po {add}{sub} ifelse} def % calculate the clipping origin /cliporigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub floor ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div sub floor} def % Set the clipping region to the bounding box. /cliptobounds {cliporigin po {gw}{gh} ifelse 1 add po {gh}{gw} ifelse 1 add rc} def % set the base transformation matrix (usage: setbasematrix) /setbasematrix {imageorigin translate po {0}{90} ifelse rotate sfactor sfactor neg scale /defaultmatrix matrix currentmatrix def} def % The lower-right bias in drawing 1 pt. wide lines. /bias {q 0.5 0.5 translate} def /unbias {Q} def % Draw a line. (x0 y0 x1 y1 line) /L {bias n m l S unbias} def % Polyline primitive. /polyline {n m 1 exch 1 exch {pop currentfile token pop currentfile token pop l} for } def % Draw a polyline (n x0 y0 OPL x1 y1 x2 y2 ... ... xn yn) /OPL {bias polyline S unbias} def % Draw a closed polyline (n x0 y0 CPL x1 y1 x2 y2 ... ... xn yn) /CPL {bias polyline s unbias} def % Draw a filled polyline (n x0 y0 FPL x1 y1 x2 y2 ... ... xn yn) /FPL {polyline h f*} def % Draw an oval. (x y w h OVL) /OVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width currentlinewidth sub 2 div height currentlinewidth sub 2 div neg scale n 0 0 1 5 -2 roll arc smatrix setmatrix S} def % Draw a filled oval. (x y w h FOVL) /FOVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width 2 div height 2 div neg scale n 0 0 m 0 0 1 5 -2 roll arc h smatrix setmatrix f} def % Draw a rounded rectangle. (x y w h arcwidth archeight RREC) /RREC {matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix s} def % Draw a filled rounded rectangle. (x y w h arcwidth archeight FRREC) /FRREC{matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix h f} def % Draw a string. (string x y STR) /STR {q m 1 -1 scale recshow Q} def % Define basic plot symbols. /xys {/siz exch def /yv exch def /xv exch def} def /hline {xys n xv siz 2. div sub yv m siz 0 rlineto S} def /vline {xys n xv yv siz 2. div sub m 0 siz rlineto S} def /plus {xys n xv yv siz 2. div sub m 0 siz rlineto xv siz 2. div sub yv m siz 0 rlineto S} def /dot {n 2. div 0 360 arc s} def /fdot {n 2. div 0 360 arc h f} def /box {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rs} def /fbox {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rf} def /tridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto s} def /ftridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto h f} def % Symbols defined in terms of the others. /star {3 copy cross plus} def /cross {xys q xv yv translate 45 rotate 0 0 siz plus Q} def /diamond {xys q xv yv translate 45 rotate 0 0 siz box Q} def /fdiamond {xys q xv yv translate 45 rotate 0 0 siz fbox Q} def /triup {xys q xv yv translate 180 rotate 0 0 siz tridn Q} def /ftriup {xys q xv yv translate 180 rotate 0 0 siz ftridn Q} def % Define the composite fonts used to print Unicode strings. % Undefine particular values in an encoding array. /vg&undef { {exch dup 3 -1 roll /.notdef put} forall } def /vg&redef { {3 -1 roll dup 4 2 roll put} forall } def % usage: key encoding basefontname vg&newbasefont font /vg&newbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def currentdict end definefont } def % usage: key encoding basefontname vg&newskewedbasefont font /vg&newskewedbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def exch FontMatrix exch matrix concatmatrix /FontMatrix exch def currentdict end definefont } def % usage: basekey suffix vg&nconcat name /vg&nconcat { 2 {dup length string cvs exch} repeat dup length 3 -1 roll dup length 3 -1 roll add string dup 0 4 -1 roll dup length 5 1 roll putinterval dup 4 -2 roll exch putinterval cvn } def %usage: fontname vg&skewmatrix matrix /vg&skewmatrix { findfont dup /FontInfo known { /FontInfo get dup /ItalicAngle known { [ 1 0 4 -1 roll /ItalicAngle get neg dup sin exch cos div 1 0 0 ] } {pop matrix} ifelse } {pop matrix} ifelse } def % usage: newfontname basefontname vg&newcompositefont -- /vg&newcompositefont { /vg&fstyle exch def /vg&bfont exch def /vg&fname exch def << /FontStyleBits vg&fstyle /FontType 0 /FontMatrix matrix /FontName vg&fname /FMapType 2 /Encoding [ 0 1 255 {pop 6} for ] dup 16#00 0 put % Latin dup 16#03 1 put % Greek dup 16#20 2 put % Punctuation dup 16#21 3 put % Arrows dup 16#22 4 put % MathOps dup 16#27 5 put % Dingbats /FDepVector [ vg&bfont /-UC-Latin vg&nconcat UCLatinEncoding vg&bfont vg&newbasefont vg&bfont vg&skewmatrix vg&bfont /-UC-Greek vg&nconcat UCGreekEncoding /Symbol vg&newskewedbasefont vg&bfont /-UC-Punctuation vg&nconcat UCPunctuationEncoding vg&bfont vg&newbasefont /Arrows-UC findfont /MathOps-UC findfont /Dingbats-UC findfont /Undefined-UC findfont ] >> vg&fname exch definefont pop } def % Null encoding vector (all elements set to .notdef) /NullEncoding [ 256 {/.notdef} repeat ] def % Unicode Latin encoding (unicode codes \u0000-\u00ff) /UCLatinEncoding ISOLatin1Encoding dup length array copy dup 16#60 /grave put [ 16#90 16#91 16#92 16#93 16#94 16#95 16#96 16#97 16#98 16#9a 16#9b 16#9d 16#9e 16#9f ] vg&undef def % Unicode Greek encoding (unicode codes \u0370-\u03ff) /UCGreekEncoding NullEncoding dup length array copy << 16#91 /Alpha 16#92 /Beta 16#93 /Gamma 16#94 /Delta 16#95 /Epsilon 16#96 /Zeta 16#97 /Eta 16#98 /Theta 16#99 /Iota 16#9a /Kappa 16#9b /Lambda 16#9c /Mu 16#9d /Nu 16#9e /Xi 16#9f /Omicron 16#a0 /Pi 16#a1 /Rho 16#a3 /Sigma 16#a4 /Tau 16#a5 /Upsilon 16#a6 /Phi 16#a7 /Chi 16#a8 /Psi 16#a9 /Omega 16#b1 /alpha 16#b2 /beta 16#b3 /gamma 16#b4 /delta 16#b5 /epsilon 16#b6 /zeta 16#b7 /eta 16#b8 /theta 16#b9 /iota 16#ba /kappa 16#bb /lambda 16#bc /mu 16#bd /nu 16#be /xi 16#bf /omicron 16#c0 /pi 16#c1 /rho 16#c2 /sigma1 16#c3 /sigma 16#c4 /tau 16#c5 /upsilon 16#c6 /phi1 16#c7 /chi 16#c8 /psi 16#c9 /omega 16#7e /semicolon 16#87 /dotmath 16#d1 /theta1 16#d2 /Upsilon1 16#d5 /phi 16#d6 /omega1 >> vg&redef def % Unicode punctuation encoding (unicode codes \u2000-\u206f) /UCPunctuationEncoding NullEncoding dup length array copy << 16#10 /hyphen 16#11 /hyphen 16#12 /endash 16#13 /emdash 16#18 /quoteleft 16#19 /quoteright 16#1a /quotesinglbase 16#1b /quotesingle 16#1c /quotedblleft 16#1d /quotedblright 16#1e /quotedblbase 16#1f /quotedbl 16#20 /dagger 16#21 /daggerdbl 16#22 /bullet 16#24 /period 16#26 /ellipsis 16#27 /periodcentered 16#30 /perthousand 16#44 /fraction 16#70 /zerosuperior 16#74 /foursuperior 16#75 /fivesuperior 16#76 /sixsuperior 16#77 /sevensuperior 16#78 /eightsuperior 16#79 /ninesuperior 16#7b /hyphensuperior 16#7d /parenleftsuperior 16#7e /parenrightsuperior 16#80 /zeroinferior 16#84 /fourinferior 16#85 /fiveinferior 16#81 /oneinferior 16#82 /twoinferior 16#83 /threeinferior 16#86 /sixinferior 16#87 /seveninferior 16#88 /eightinferior 16#89 /nineinferior 16#8b /hypheninferior 16#8d /parenleftinferior 16#8e /parenrightinferior >> vg&redef def % Unicode mathematical operators encoding (unicode codes \u2200-\u22ff) /UCMathOpsEncoding NullEncoding dup length array copy << 16#00 /universal 16#02 /partialdiff 16#03 /existential 16#05 /emptyset 16#06 /Delta 16#07 /gradient 16#08 /element 16#09 /notelement 16#0b /suchthat 16#0f /product 16#11 /summation 16#12 /minus 16#15 /fraction 16#17 /asteriskmath 16#19 /bullet 16#1a /radical 16#1d /proportional 16#1e /infinity 16#20 /angle 16#23 /bar 16#27 /logicaland 16#28 /logicalor 16#29 /intersection 16#2a /union 16#2b /integral 16#34 /therefore 16#36 /colon 16#3c /similar 16#45 /congruent 16#48 /approxequal 16#60 /notequal 16#61 /equivalence 16#64 /lessequal 16#65 /greaterequal 16#82 /propersubset 16#83 /propersuperset 16#86 /reflexsubset 16#87 /reflexsuperset 16#95 /circleplus 16#97 /circlemultiply 16#a5 /perpendicular 16#03 /existential 16#c0 /logicaland 16#c1 /logicalor 16#c2 /intersection 16#c3 /union 16#c4 /diamond 16#c5 /dotmath >> vg&redef def % Unicode arrows encoding (unicode codes \u2190-\u21ff) % Also includes those "Letterlike" unicode characters % which are available in the symbol font. (unicode codes \u2100-\u214f) /UCArrowsEncoding NullEncoding dup length array copy << 16#11 /Ifraktur 16#1c /Rfraktur 16#22 /trademarkserif 16#35 /aleph 16#90 /arrowleft 16#91 /arrowup 16#92 /arrowright 16#93 /arrowdown 16#94 /arrowboth 16#d0 /arrowdblleft 16#d1 /arrowdblup 16#d2 /arrowdblright 16#d3 /arrowdbldown 16#d4 /arrowdblboth >> vg&redef def /ZapfDingbats findfont /Encoding get dup length array copy /UCDingbatsEncoding exch def 16#20 1 16#7f { dup 16#20 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for 16#a0 1 16#ff { dup 16#40 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for UCDingbatsEncoding [ 16#c0 1 16#ff {} for ] vg&undef [ 16#00 16#05 16#0a 16#0b 16#28 16#4c 16#4e 16#53 16#54 16#55 16#57 16#5f 16#60 16#68 16#69 16#6a 16#6b 16#6c 16#6d 16#6e 16#6f 16#70 16#71 16#72 16#73 16#74 16#75 16#95 16#96 16#97 16#b0 16#bf ] vg&undef pop % Define the base fonts which don't change. /Undefined-UC NullEncoding /Helvetica vg&newbasefont pop /MathOps-UC UCMathOpsEncoding /Symbol vg&newbasefont pop /Arrows-UC UCArrowsEncoding /Symbol vg&newbasefont pop /Dingbats-UC UCDingbatsEncoding /ZapfDingbats vg&newbasefont pop % Make the SansSerif composite fonts. /SansSerif /Helvetica 16#00 vg&newcompositefont /SansSerif-Bold /Helvetica-Bold 16#01 vg&newcompositefont /SansSerif-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /SansSerif-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Serif composite fonts. /Serif /Times-Roman 16#00 vg&newcompositefont /Serif-Bold /Times-Bold 16#01 vg&newcompositefont /Serif-Italic /Times-Italic 16#02 vg&newcompositefont /Serif-BoldItalic /Times-BoldItalic 16#03 vg&newcompositefont % Make the Monospaced composite fonts. /Monospaced /Courier 16#00 vg&newcompositefont /Monospaced-Bold /Courier-Bold 16#01 vg&newcompositefont /Monospaced-Italic /Courier-Oblique 16#02 vg&newcompositefont /Monospaced-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont % Make the Dialog composite fonts. /Dialog /Helvetica 16#00 vg&newcompositefont /Dialog-Bold /Helvetica-Bold 16#01 vg&newcompositefont /Dialog-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /Dialog-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the DialogInput composite fonts. /DialogInput /Helvetica 16#00 vg&newcompositefont /DialogInput-Bold /Helvetica-Bold 16#01 vg&newcompositefont /DialogInput-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /DialogInput-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Typewriter composite fonts (JDK 1.1 only). /Typewriter /Courier 16#00 vg&newcompositefont /Typewriter-Bold /Courier-Bold 16#01 vg&newcompositefont /Typewriter-Italic /Courier-Oblique 16#02 vg&newcompositefont /Typewriter-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont /cfontH { dup /fontsize exch def /SansSerif exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHB { dup /fontsize exch def /SansSerif-Bold exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHI { dup /fontsize exch def /SansSerif-Italic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHBI { dup /fontsize exch def /SansSerif-BoldItalic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontT { dup /fontsize exch def /Serif exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTB { dup /fontsize exch def /Serif-Bold exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTI { dup /fontsize exch def /Serif-Italic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTBI { dup /fontsize exch def /Serif-BoldItalic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontC { dup /fontsize exch def /Typewriter exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCB { dup /fontsize exch def /Typewriter-Bold exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCI { dup /fontsize exch def /Typewriter-Italic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCBI { dup /fontsize exch def /Typewriter-BoldItalic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def % Darken or lighten the current color. /darken {0.7 exch exp 3 copy q 4 -1 roll vg&C currentrgbcolor 3 {4 -2 roll mul} repeat 3 array astore Q} def /displayColorMap << /Cr [1.00 0.00 0.00] /Cg [0.00 1.00 0.00] /Cb [0.00 0.00 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.00 0.00] /CGg [0.00 1.00 0.00] /CGb [0.00 0.00 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.00 0.00] /CIg [0.00 1.00 0.00] /CIb [0.00 0.00 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /printColorMap << /Cr [1.00 0.33 0.33] /Cg [0.33 1.00 0.33] /Cb [0.33 0.33 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.33 0.33] /CGg [0.33 1.00 0.33] /CGb [0.33 0.33 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.33 0.33] /CIg [0.33 1.00 0.33] /CIb [0.33 0.33 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /grayColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [0.75] /CGg [1 ] /CGb [0.50] /CGc [0.75] /CGm [0.50] /CGy [1 ] /CGo [0.75] /CGp [1 ] /CGw [0 ] /CGgrl [0.25] /CGgr [0.50] /CGgrd [0.75] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def /bwColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [1 ] /CGg [1 ] /CGb [1 ] /CGc [1 ] /CGm [1 ] /CGy [1 ] /CGo [1 ] /CGp [1 ] /CGw [0 ] /CGgrl [1 ] /CGgr [1 ] /CGgrd [1 ] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def % % The following routines handle the alignment of and printing of % tagged strings. % % Predefine the bounding box values. /bbllx 0 def /bblly 0 def /bburx 0 def /bbury 0 def % This routine pops the first unicode character off of a string and returns % the remainder of the string, the character code of first character, % and a "true" if the string was non-zero length. % popfirst % popfirst /popfirst { dup length 1 gt {dup 0 get /vg&fbyte exch def dup 1 get /vg&cbyte exch def dup length 2 sub 2 exch getinterval true} {pop false} ifelse } def % This routine shows a single unicode character given the font and % character codes. % unicharshow -- /unicharshow { 2 string dup 0 5 -1 roll put dup 1 4 -1 roll put internalshow } def % This is an internal routine to alternate between determining the % bounding box for stringsize and showing the string for recshow. % internalshow -- /internalshow {show} def % This is an internal routine to alternate between determining the % bounding box for stringsize and stroking various ornaments. % internalstroke -- /internalstroke {S} def % Sets up internalshow to use the null device to determine string size. % -- nullinternalshow -- /nullinternalshow {/internalshow {false charpath flattenpath pathbbox updatebbox} def} def % Sets up internalstroke to use the null device to determine string size. % -- nullinternalstroke -- /nullinternalstroke { /internalstroke {flattenpath pathbbox updatebbox} def} def % This routine tests to see if the character code matches the first % character of a string. % testchar /testchar {exch dup 3 -1 roll 0 get eq} def % Raise the text baseline for superscripts. % -- raise -- /raise { 0 fontsize 2 div rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-raise the text baseline for superscripts. % -- unraise -- /unraise { /fontsize fontsize 1.5 mul def 0 fontsize 2 div neg rmoveto } def % Lower the text baseline for subscripts. % -- lower -- /lower { 0 fontsize 3 div neg rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-lower the text baseline for subscripts. % -- unlower -- /unlower { /fontsize fontsize 1.5 mul def 0 fontsize 3 div rmoveto } def % Compare the top two elements on the stack and leave only the % larger one. /maxval {2 copy gt {pop} {exch pop} ifelse} def % Tokenize a string. Do not use the usual PostScript token because % parentheses will not be interpreted correctly because of rescanning % of the string. /vg&token {/vg&string exch def /vg&index -1 def /vg&level 0 def 0 2 vg&string length 2 sub { dup dup 1 add exch vg&string exch get 8 bitshift vg&string 3 -1 roll get or dup 16#f0fe eq {pop 1}{16#f0ff eq {-1}{0} ifelse} ifelse /vg&level exch vg&level add def vg&level 0 eq {/vg&index exch def exit} if pop } for vg&index 0 ge { vg&string vg&index 2 add dup vg&string length exch sub getinterval vg&index 2 gt {vg&string 2 vg&index 2 sub getinterval}{()} ifelse true} {false} ifelse } bind def % Recursively show an unicode string. % recshow -- /recshow { popfirst { % Test to see if this is a string attribute. vg&fbyte 16#f0 and 16#e0 eq { q % Font style. currentfont dup /FontStyleBits known {/FontStyleBits get}{pop 0} ifelse vg&cbyte or vg&fontstyles exch get fontsize exch exec vg&token pop recshow currentpoint Q m recshow } { vg&fbyte 16#F8 and 16#F0 eq { % Superscript and/or subscript. vg&cbyte 16#00 eq { vg&token pop exch vg&token pop 3 -1 roll q raise recshow unraise currentpoint pop Q exch q lower recshow unlower currentpoint pop Q maxval currentpoint exch pop m recshow } if % Strikeout. vg&cbyte 16#01 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll fontsize 3 div add moveto fontsize 3 div add lineto internalstroke Q recshow} if % Underline. vg&cbyte 16#02 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dashed underline. vg&cbyte 16#03 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J [ vg&uthick 5 mul vg&uthick 2 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dotted underline. vg&cbyte 16#04 eq { vg&token pop currentpoint 3 -1 roll recshow q 1 J [ 0 vg&uthick 3 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Thick underline. vg&cbyte 16#05 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Gray thick underline. vg&cbyte 16#06 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w 0.5 setgray currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Overbar. vg&cbyte 16#07 eq { vg&token pop dup stringsize relative 4 1 roll pop pop exch 3 -1 roll recshow q 0 J vg&underline vg&uthick w vg&uoffset neg add dup currentpoint pop exch m l internalstroke Q recshow} if } { vg&fbyte vg&cbyte unicharshow recshow } ifelse } ifelse } if } def % Get the underline position and thickness from the current font. /vg&underline { currentfont dup /FontType get 0 eq {/FDepVector get 0 get} if dup dup /FontInfo known { /FontInfo get dup dup /UnderlinePosition known { /UnderlinePosition get /vg&uoffset exch def } { pop /vg&uoffset 0 def } ifelse dup /UnderlineThickness known { /UnderlineThickness get /vg&uthick exch def } { pop /vg&uthick 0 def } ifelse } { pop /vg&uoffset 0 def /vg&uthick 0 def } ifelse /FontMatrix get currentfont dup /FontType get 0 eq {/FontMatrix get matrix concatmatrix}{pop} ifelse dup 0 vg&uoffset 3 -1 roll transform /vg&uoffset exch def pop 0 vg&uthick 3 -1 roll transform /vg&uthick exch def pop } def % Make a frame with the coordinates on the stack. % frame -- /frame {4 copy m 3 1 roll exch l 4 -2 roll l l h} def % Resets the accumulated bounding box to a degenerate box at the % current point. % -- resetbbox -- /resetbbox { currentpoint 2 copy /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Update the accumulated bounding box. % updatebbox -- /updatebbox { dup bbury gt {/bbury exch def} {pop} ifelse dup bburx gt {/bburx exch def} {pop} ifelse dup bblly lt {/bblly exch def} {pop} ifelse dup bbllx lt {/bbllx exch def} {pop} ifelse } def % Set the bounding box to the values on the stack. % updatebbox -- /restorebbox { /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Push the accumulated bounding box onto the stack. % -- pushbbox /pushbbox {bbllx bblly bburx bbury} def % Make the relative bounding box relative to the currentpoint. % inflate /inflate { 2 {fontsize 0.2 mul add 4 1 roll} repeat 2 {fontsize 0.2 mul sub 4 1 roll} repeat } def % Make the relative bounding box relative to the currentpoint. % relative /relative { currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll } def % Returns the size of a string appropriate for recshow. % stringsize /stringsize { pushbbox /internalshow load /internalstroke load 7 -1 roll q nulldevice 0 0 m nullinternalshow nullinternalstroke resetbbox recshow /internalstroke exch def /internalshow exch def pushbbox 8 -4 roll restorebbox Q } def % Calculate values for string positioning. /calcval {4 copy 3 -1 roll sub /widy exch def sub neg /widx exch def pop pop /dy exch def /dx exch def} def % Utilities to position a string. % First letter (U=upper, C=center, B=baseline, L=lower) % Second letter (L=left, C=center, R=right) /align [ {calcval dx neg widy dy add neg rmoveto} % UL {calcval dx neg widy 2 div dy add neg rmoveto} % CL {calcval dx neg 0 rmoveto} % BL {calcval dx neg dy neg rmoveto} % LL {calcval widx dx add neg widy dy add neg rmoveto} % UR {calcval widx dx add neg widy 2 div dy add neg rmoveto} % CR {calcval widx dx add neg 0 rmoveto} % BR {calcval widx dx add neg dy neg rmoveto} % LR {calcval widx 2 div dx add neg widy dy add neg rmoveto} % UC {calcval widx 2 div dx add neg widy 2 div dy add neg rmoveto} % CC {calcval widx 2 div dx add neg 0 rmoveto} % BC {calcval widx 2 div dx add neg dy neg rmoveto} % LC ] def /vg&str {m q 1 -1 scale dup stringsize 4 copy align 11 -1 roll get exec q inflate relative frame exch exec Q recshow Q} def end /procDict exch def %%EndProlog %%BeginSetup save procDict begin printColorMap begin 595 791 setpagesize 20 20 20 20 setmargins 0 0 setorigin 600 600 setsize fittopage portrait imagescale cliptobounds setbasematrix /Helvetica 10 sf defaultGraphicsState %%EndSetup 0.00000 0.00000 0.00000 RG [ 1.00000 0.00000 0.00000 1.00000 0.00000 0.00000 ] defaultmatrix matrix concatmatrix setmatrix 1.00000 w 2 J 0 j 10.0000 M [ ] 0.00000 d .800000 .800000 .800000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG q 0 0 600 600 rc 1.00000 1.00000 1.00000 RG 0.00000 0.00000 600.000 600.000 rf << /PatternType 2 /Shading << /ShadingType 2 /ColorSpace /DeviceRGB /Coords [0.0 10.0 600.0 10.0] /Function << /FunctionType 2 /Domain [0 1] /Range [0 1 0 1 0 1] /C0 [0.0 0.0 1.0] /C1 [1.0 1.0 1.0] /N 1 >> /Extend [true true] >> >> matrix makepattern setpattern 0.00000 10.0000 600.000 30.0000 rf << /PatternType 2 /Shading << /ShadingType 2 /ColorSpace /DeviceRGB /Coords [0.0 10.0 600.0 10.0] /Function << /FunctionType 2 /Domain [0 1] /Range [0 1 0 1 0 1] /C0 [0.0 0.0 0.0] /C1 [0.0 0.0 1.0] /N 1 >> /Extend [true true] >> >> matrix makepattern setpattern 10.0000 30.0000 moveto q 1 -1 scale /Helvetica-Bold findfont 18.0 scalefont setfont (Testing org.freehep.graphicsio.ps.PSGraphics2D) show Q 0.00000 0.00000 0.00000 RG 37.5000 112.500 150.000 150.000 rf 1.00000 1.00000 1.00000 RG 0 360 37.5000 112.500 150.000 150.000 FOVL 0.00000 0.00000 0.00000 RG 59.4670 134.467 106.066 106.066 rf 1.00000 1.00000 1.00000 RG 0 360 59.4670 134.467 106.066 106.066 FOVL 0.00000 0.00000 0.00000 RG 75.0000 150.000 75.0000 75.0000 rf 1.00000 1.00000 1.00000 RG 0 360 75.0000 150.000 75.0000 75.0000 FOVL 0.00000 0.00000 0.00000 RG 85.9835 160.983 53.0330 53.0330 rf 1.00000 1.00000 1.00000 RG 0 360 85.9835 160.983 53.0330 53.0330 FOVL 0.00000 0.00000 0.00000 RG 93.7500 168.750 37.5000 37.5000 rf 1.00000 1.00000 1.00000 RG 0 360 93.7500 168.750 37.5000 37.5000 FOVL 0.00000 0.00000 0.00000 RG 99.2417 174.242 26.5165 26.5165 rf 1.00000 1.00000 1.00000 RG 0 360 99.2417 174.242 26.5165 26.5165 FOVL 0.00000 0.00000 0.00000 RG 103.125 178.125 18.7500 18.7500 rf 1.00000 1.00000 1.00000 RG 0 360 103.125 178.125 18.7500 18.7500 FOVL 0.00000 0.00000 0.00000 RG 105.871 180.871 13.2583 13.2583 rf 1.00000 1.00000 1.00000 RG 0 360 105.871 180.871 13.2583 13.2583 FOVL 0.00000 0.00000 0.00000 RG 107.812 182.812 9.37500 9.37500 rf 1.00000 1.00000 1.00000 RG 0 360 107.812 182.812 9.37500 9.37500 FOVL 0.00000 0.00000 0.00000 RG 109.185 184.185 6.62913 6.62913 rf 1.00000 1.00000 1.00000 RG 0 360 109.185 184.185 6.62913 6.62913 FOVL 0.00000 0.00000 0.00000 RG 110.156 185.156 4.68750 4.68750 rf 1.00000 1.00000 1.00000 RG 0 360 110.156 185.156 4.68750 4.68750 FOVL 0.00000 0.00000 0.00000 RG 110.843 185.843 3.31456 3.31456 rf 1.00000 1.00000 1.00000 RG 0 360 110.843 185.843 3.31456 3.31456 FOVL 0.00000 0.00000 0.00000 RG 111.328 186.328 2.34375 2.34375 rf 1.00000 1.00000 1.00000 RG 0 360 111.328 186.328 2.34375 2.34375 FOVL 0.00000 0.00000 0.00000 RG 111.671 186.671 1.65728 1.65728 rf 1.00000 1.00000 1.00000 RG 0 360 111.671 186.671 1.65728 1.65728 FOVL 0.00000 0.00000 0.00000 RG 111.914 186.914 1.17187 1.17187 rf 1.00000 1.00000 1.00000 RG 0 360 111.914 186.914 1.17187 1.17187 FOVL 0.00000 0.00000 0.00000 RG 225.000 122.500 moveto q 1 -1 scale /Times-Roman findfont 11.0 scalefont setfont (The ) show Q 244.852 122.500 moveto q 1 -1 scale /Times-Italic findfont 11.0 scalefont setfont (drawString) show Q 294.362 122.500 moveto q 1 -1 scale /Times-Roman findfont 11.0 scalefont setfont ( methods in ) show Q 348.444 122.500 moveto q 1 -1 scale /Times-Italic findfont 11.0 scalefont setfont (VectorGraphics) show Q 418.708 122.500 moveto q 1 -1 scale /Times-Roman findfont 11.0 scalefont setfont ( support) show Q 225.000 136.500 moveto q 1 -1 scale /Times-Roman findfont 11.0 scalefont setfont (output of strings using a subset of the ) show Q 392.433 136.500 moveto q 1 -1 scale /Times-Bold findfont 11.0 scalefont setfont (HTML language) show Q 470.969 136.500 moveto q 1 -1 scale /Times-Roman findfont 11.0 scalefont setfont (.) show Q 1.00000 0.00000 0.00000 RG 300.000 187.500 12.0000 vline 300.000 202.500 10.0000 vline 315.000 187.500 12.0000 hline 315.000 202.500 10.0000 hline 330.000 187.500 12.0000 plus 330.000 202.500 10.0000 plus 345.000 187.500 12.0000 cross 345.000 202.500 10.0000 cross 360.000 187.500 12.0000 star 360.000 202.500 10.0000 star 375.000 187.500 12.0000 dot 375.000 202.500 10.0000 fdot 390.000 187.500 12.0000 box 390.000 202.500 10.0000 fbox 405.000 187.500 12.0000 triup 405.000 202.500 10.0000 ftriup 420.000 187.500 12.0000 tridn 420.000 202.500 10.0000 ftridn 435.000 187.500 12.0000 diamond 435.000 202.500 10.0000 fdiamond << /PatternType 1 /PaintType 1 /TilingType 1 /BBox [0 0 200 200] /XStep 200.0 /YStep 200.0 /PaintProc { begin /DeviceRGB setcolorspace 0 0 translate 200 200 scale << /ImageType 1 /Width 200 /Height 200 /BitsPerComponent 8 /Decode [0 1 0 1 0 1] /ImageMatrix [200 0 0 200 0 0] /DataSource ( Z Z Z Z Z Z Z Z Z ZZ ZZ ZZ ZZ ZZ ZZ ZZ Z) >> image end } bind >> matrix makepattern setpattern 0.00000 300.000 300.000 300.000 rf 0.00000 0.00000 0.00000 RG 5.31738 450.000 moveto q 1 -1 scale /ZapfDingbats findfont 60.0 scalefont setfont (I) show /Impact-Bold findfont 60.0 scalefont setfont (Impact) show /ZapfDingbats findfont 60.0 scalefont setfont (I) show Q q 300.000 300.000 translate 8.00000 w 0 J 2 j newpath 0.00000 0.00000 m 25.0000 50.0000 l -25.0000 50.0000 l 25.0000 -50.0000 l -25.0000 -50.0000 l h S q 3.00000 w 1 J 1 j [ 10.0000 5.00000 2.00000 5.00000 ] 0.00000 d 36.0000 rotate newpath 0.00000 0.00000 m 25.0000 50.0000 l -25.0000 50.0000 l 25.0000 -50.0000 l -25.0000 -50.0000 l h S Q 1.00000 w [ 1.0 .500000 .500000 1.0 0.0 0.0 ] concat newpath 0.00000 0.00000 m 25.0000 50.0000 l -25.0000 50.0000 l 25.0000 -50.0000 l -25.0000 -50.0000 l h S Q q 450.000 450.000 translate 0 360 -60.0000 -60.0000 120.000 120.000 FOVL 4.00000 w 1 J 1 j 0 360 -84.0000 -84.0000 168.000 168.000 OVL 0.00000 -66.0000 moveto q 1 -1 scale /Times-Bold findfont 16.0 scalefont setfont (O) show Q 45.0000 rotate 0.00000 -66.0000 moveto q 1 -1 scale /Times-Bold findfont 16.0 scalefont setfont (R) show Q 45.0000 rotate 0.00000 -66.0000 moveto q 1 -1 scale /Times-Bold findfont 16.0 scalefont setfont (A) show Q 45.0000 rotate 0.00000 -66.0000 moveto q 1 -1 scale /Times-Bold findfont 16.0 scalefont setfont (E) show Q 45.0000 rotate 0.00000 -66.0000 moveto q 1 -1 scale /Times-Bold findfont 16.0 scalefont setfont (T) show Q 45.0000 rotate 0.00000 -66.0000 moveto q 1 -1 scale /Times-Bold findfont 16.0 scalefont setfont (L) show Q 45.0000 rotate 0.00000 -66.0000 moveto q 1 -1 scale /Times-Bold findfont 16.0 scalefont setfont (A) show Q 45.0000 rotate 0.00000 -66.0000 moveto q 1 -1 scale /Times-Bold findfont 16.0 scalefont setfont (B) show Q 45.0000 rotate Q Q end end restore showpage %%Trailer %%EOF src/test/resources/ps/TestPreviewThumbnail.ps.gz0000644000175000017500000017112410343577250021424 0ustar user01user01‹.ÜAorg\freehep\graphicsio\ps\test\TestPreviewThumbnail.ref.psíýk“9’&Œ~—Yÿž9¦³=cSãJÆlo›‘A²¶f{fjºzvß³}æCJJI¹-eª3SuYYÿ÷ø ޏ1È  U8ª”™qA ð'à‡ûóÿ×÷?|³zs÷êú›äÅ|¶ýþ‡ýå7Ïž?_ß}¾}ssûn}÷ó?Íâù,Š–³l‘ÍòEbO—÷×Ww÷ÿ4ÛÝ__ÿ÷í÷³oï¯>½¿yýof›û›¯ïíUßßß½ùüúÚ\vwÿîÅ[séûëO/ÞÑ¥7w/>=¼øþw«½ggkµ¿üéæñÃ5þú‡«ÛwŸ¯Þ]ÿáúÇëÿ4ƒloß”w?^ß>>@{¯ßÝÜ~ýãÍõO³|>‡ÿ—³d>Ÿ?{ždIšDñ.ÞPÙÆ»džDÉÜÛÂßæ³G#ûÓþ çJS S–¦à¿Ë83SRS’ØÒ<ÚF›¨4e¦¬LYS±Gwæ|ImÍÕ»xnîJMXÓ”"^™'AKL â$1­Î“¥)ERšÉ&]¤Ût—nì-Yše¦C–Y‘­²µù¿€ß×Ù6Û™²ÍJ8åÙssmnίÌÑmåqniaJžg¹yŒ967÷¬Í5Y–@ýQ67Ï2%›gü¶I×i‘.Ó<ÍÒ*ÅiÔQìÙy²K6ÉʼGlÞoäyöüT}2„ž=?w ÎMáq€+¦qß$'¾¤ Œ œ`Y›¼iA‰±£å$Ž#”ÈHÂdem$dcÊV”’ ÈËÎÊ•¹+1²©[€®ŒhùXÉX%k#!›dk~+’­A®Ò`Wi°dîaW¸ÅÈ4* ÍL1È•›+-®•ÙÎC.‹]>rå¦^F®-”`ØV!W~0r!vmÍû,m_ŒÝ#¹NÔ'çÝ})<¹šÂã€A®¤eÞ!'ž¬°œ ÔÀ}%|ëµ¼àwÞ~ãmI͸ä;¾#Ùà²1Ç@ªRøA’QBÝ[hOfd£0Q’lìÒ9J¾ù½4¿/Ò•Á®•Å;2³#;—Ê—€\ƒL¹v€\K8¾0È…ó± àZl qkYA®Ò\e‘+¡× âׯ<ùxä2`þÓ¬+»G r¨OB¡ðävh €\™ùjÎå‹Ý)'plGW °¶Âº Ë í 3 Hʆd‚ÿÝÖ²%mdAò±1uÚoy ÿ§ð=/ͼjn SF%7XyÉ rXì(Qv_bºµÁu¹ˆk¹V0ßÚÂŒ+1ÐÓ<çâ{2šqY´*ái%àÖÊ<}aJ¹˜WµºÆhŒ¥AåØ=bëD}rîÑݗ“ۡ)<äZ€œDrâi'd_±£8ÙH‹½~×Ö”𥑕XÐË•-ØP¬&R€ŒíLöKnõŽ |ÉmÙdJ<, 2­¨„T #) œ]Â_+ƒ"O¶€]¦2#JŒ\hçÚ˜ß …\¥){+ÃH™™ƒÅJÃ\Â]1ضpž…¨…¸µ|rÙ«"ÐWc÷i‹'è“sÜMáq+'‹ð–¿à{ðN¾é‘|×QJ4¥Tð5F-–ŒtŸ‘ûÕO*Å~Ñ7æ—Üܱ6:F²œ ,@û²¿  ÂlŠìJŒ+¼ÞbWØ…ó®9`—E.´cY„*ÁfOº"عJÆ4Ðc˜w¥µRóÛœfi[Â;{ŸµuÙYWI…evIm®SÒYrí Öc÷ȳç§ê“sÜMáqÀ ×í*mr"_ôˆ¤ƒå‰¿ól£]‚ÍÃêÖ~c5´>óL"{2[g¬}wm®·Úž÷[\±#kÒ–lI¸Ž‡Öw¶3•$%3–€ ˆ\híŠÁÞ…x‹X+²Í/xí‘Ëbê‹Xé-~Åyd*äÂ{3‹]Ô[µ–G#WB–®ˆVGîƒ\'ê“sÜMáqÀC.´÷úr²Ußu”ˆì0)I ËNNßô5Xiíz£¾„1luk^›kªÅÞ‘¦+ÿؑЦžB BµD 9,%Œ]8ߪ"—µs-•w϶Ðj¿mqKØegY«%n¹J½xG ­Ë–¥”väjÿ?­‘k=v˜1p¢>9÷èîKáÉíÐ̨µë×V?‰Q6”å„í$lCIA>2ïƒÜ,AFpu) )Í÷8–Õ½ · ¶1¶  ÊbF V¦g;€°?mIÃ[Ѽ©-"9qöqÔ¾ˆ³‚˜4F–>Ôèk‹+© bØF þ¾V³µ°+"q ¶ù 0ˆµ¿ 4*´WWgW|†gc©Ì¸¶`G¹G NÔ'çÝ})<¹šÂã!WA+ñ‘è!®h믳 8bO^gB ˆµ2¡_ÂJ¼>+Pú3B’%¬øEF˜­Ba û€¦ -±¬ì­ÉR¥¥dSC®… W‰Ø%:cJÏŒ»@‚Á+ý¾Vò ,k’Ê’¤”ß`A~]sxþ¬:9á[®¹š4E·´®¸Û÷È=b8p¢>9÷èîKáÉíÐ rmÀ*ŒJ’ø¦ÚHÖ¥ô1_j´”Xך61¶´¢G½ èôžZæ«|“ïóE´ˆÌo¥)ks¬Ÿ*+-|å±°¾+}Ía×RYéKò¸Úyøåp fàC~ùG°d³féPK¦´Eö†Èh±rerň[€\Œ]£öȳç§ê“sÜMáqÀ ×VÖâs¥w8ý#éˆÔ |$rÄzÉl)àÆ|À‹ìFnÍn_ñÂü\YX©ØéH D Õ|1Ïwù¤Åž_9Jñ;ë|+XÌA[Ûyž ¼*ÏVú5ù[é¹W¬0 4WЕØs‘‹çU¡kXìÕšÒ³7‚—<㊋RB'7ÓÈU÷–ˆììk;vä:QŸœ{t÷¥ðävh Ϟ˞¹B,½Õµª˜-.´ÚµU+ò}á7Fò˜iàZ¹µ©à<†½ ð4ÈÍØßXÉ€ï9–Ø(yùb±XB‰íW$eC’bµ• æÖ…’}2ñfß)ìâ¸UG.Æ-\¼[g]KªŸmÑ á\B8Æ»JZýÏdÆ…˜µ¹|Üb_zD®µ§Û#¹NÔ'çÝ})<¹šÂã!×Ö謒g²ÊÎA(+¼¸$OH¶G`UÑrÖqƒ !ÁF¼Ó3°›Øï¹ÕAb)©ù¶/”¥ùË: Å 'ø·r’³EìÁ9!Ë\VêK…W®TµÅLY©Íý¹œý¾Pš"§5YA#߯­\ð‰wò¤ò“ב+!ÜÌò˸=bëD}rîÑݗ“ۡ)<Èœk ¾Š('Î+ÈÉJ¾×Öû÷®¹¯|þŠ¥™+ œXìØÂ¾AÔ¾p? •’%è#öËdØ’‚F²4ò±¢b)‡3 lTÙšoüŠl+(%k±(ã.ÂHaWIºÊ–í-5Ìb{<Õ@±"xµ± ϯBí¯f̧lÉsÉ®(æê‡\‰wO ·Æîƒ\'ê“sÜMáq@!WAž‰¬Tå„w¿¡¤lDNìªü<€b‘“è_.>C ëT+ÐJ¬F’€&²ŠÕHV‹õ¢4emŠ•û'Y/|UJVb‰ª#×N àWÍ+­äC¹Ø»‹‘ ýì ‘ÃDyZnà [ðŠZTf\>rÉšá>ÜB ‘J$1oFëƒ\'ê“sÜMáqÖÙ‡¿ñÎúËþBI‘ J‰°I±Ú‰³ª°=x š‰ÕMÖàÿ³5ã¥dk¿îð}g}dAò‚•‚¾óNJ2°¯lINbò UûEƒã]ŠlŸŠ8vÌ6r‰xãü¶À÷|VäG˜Å^§I¢óGÝ1ÒEãªîC¬¢”‹áö$§‚k~¼Îaä±Èuš>9÷èîKáÉíÐ`mådV2’´™°—c Öà Åà¢å¤”•¬…‘ð HN(°ƒ˜WmÈU•üƳœäÖ:lî²ëY­Åo(VV3©H¬î !Wæ|^¿ìlcA[\4r­•ý¢F¸Y—•Ã9ͲÈCŒö*.Éó5¹Fî‘ä¨OÎ=ºûRxr;4…ǃ\h ^Á*–ýºk?mK­Ä»oüšôŒÑ„»L¬÷P²i£5`Œ™Ì ÊIÒ\U A …åda®³–aÑN Æir1i&¬¦dÍÒ>ûÚãÁí]ÔÈ…Ño"Š ÁÆ–›Ü‹Çe±kE¸Å±!šíX¾fè¼ëõ^FñÁÆî‘ä¨OÎ=ºûRxr;4…ÇA®%ï6qkíô•ÏX~à_B´:²¬Pt¹¬*ÚÓkWáqI 6#”“vmQKˆ•‘)NN–`v_øT¤$­è‰zÕב8âiIþÞŒ[°³ÇÈmD{\x‹Û¥ˆž¨Ú’fK¡ö(Ú²¹ú![¹Fë‘ä¨OÎ=ºûRxr;4…Dzs­(Ž0ËÅR!9¡](k³„È((+%ÈÇn*!b“ÕO–a&‘x~OE®ØÜ…þh&,%s¹rÙK­mFs)‡[0Ó2r‹1m2ñ ױꗀ\neÑjŠzwuSÜùcñ‹ÖÇî‘#‘«GŸœ{t÷¥ðävh ¹Jòyd9ÙŠ—JJR±¯¨¬i5 ãØø[XK("¼µ¬,(†rríÓLPJ¶â¹ALÓ%XSÐŽåbÙ¸:ΪÅñN9ÎE† ™–õ wqoÖµ¦]?l5›Ó~âBl\M¸UG®fíÐ× ¹Àuä9B[ìÙ'çÝ})<¹šÂãD¹Á,þŽ—bõE9`oí’‘‚b’o!âfB«ðXÝO`~þyäÚg ¶>D­dQ´?Sg¾ì±HIJž¤ácVIÞKµfG³-ôÃÌó…‘Û\#—`œ‹‘ý?"ÿS—ñ(«”*r5Yä}‹½F®íØ=r„…¾gŸœ{t÷¥ðävh 5§õªH¼„ÖêßýRåÂ*$gÎ0“†"AY¯mŒ¦œƒ]¥¹ö­À[)akp;VbØã›Óîi‡\ˆX.îCétBµÇnG~RØW¼TÈE+üÍ¥ä"? ƒ\kبwYG´»Ú•*íG.ô­ˆhßâÈ=r„WDÏ>9÷èîKáÉíÐ$=F{ŠÅæk%í¾zåÝþ«6?}´ÇwN‘ Jò£J­]<¶sÚÑ»£}& ùjsY×v.r““ÏvûåVhSKú\­eQ´ٽ㼵p®•HtæŒð‰ Üè͹°Dv­È»ÒEAXI<.Ôó02ÄBy¦6i‹í¤# –ÍyÔ!OÔôɹGw_ On‡¦ð8@1QòŠ)¿gºZL`a½d y¶ñ.¦/üš²* œ¬ENVÇ#§Øx[‘“T™Óœ8)É<)YK1”öZˆÿãÒC.Ö S·rµødä£O¹s.†úP, Â\vF²*£Ò¾¨6ûH,ô*&êˆ=B»NÐ'çÝ})<¹šÂ〇\©ÈÉ’ò[-ËJ<‡Ø¯WáÑœ7Ê jgVJÐQvE… 2õ¥ÏdJ†2"Râdž*ÉSÔ‹*ï͸"ÊãÃ(ÅY½bäv)Ø¥ç\õw0&àÊqtØÆÕ/ªM?JdÎ5r@¬ˆ“ôɹGw_ On‡¦ð8È…y®¬œØ]¼ö[n3òå’‹=ƒßr #`í)¼Ïý"3ÊÈ®åÄé&…h'8ó) Ô†,+‰è(ÈK¢¾ú)ÈÈvš8)ÉÈÅtásE¹}Ø*±8wâ’æ|X–Œa€\KŠù™Áü,’UH7Â"×ZâEçbãb?,F)ý{[iG.ŒË5rœ¨OÎ=ºûRxr;4…ÇÈ›H\:›ÉÊê#œÙþSVd[rÈÁ·GÜù›©˜ç»F9YÒ7cÙÅ€$…’¶¯ÀzD†Š!¦JB¡¶$#+‘·ã¤„ÙÕ:SÞyuшs…X+Š›‡?»dÎåbW×­í&ûZ²œmžvH«LÕ¬åŽ\ æ…¦Ì?£öXúNÒ'çÝ})<¹šÂã€A.ü®ƒ„2ðÙï»ÍÈI‰IRPNÖ&…o;æÅZÉ÷½IN ÊÆk{”EziÆ=Ä„’ï|BˆD·ƒ¿JŠÂ¹¢y¯ºhšg±×ÆIé9 é³Tµ\عrš5Àl«’_qIöy"«:ø0H„‡.äjÎ ëÛ¹bð@]‘7Ĩ=ÑœOÒ'çÝ})<¹šÂã€A.Žó´)A{ d?ŽçT¬œÄ$' ’“˜dd¹GKù¾Ç59Áì`œ_zK ¸&¿³Z|ÓÚ ·†H8[‰¼RºêsœIaIäLƒu-¨µ¢q+OÔ\´ÜõSõ¡OÄ­ÆÁ”üÔ»âqíC.DA´Íg*òÖH=BûŸNÐ'çÝ})<¹šÂã€A.ü®c¬”ä`a$ÂHI´ÃB_ø„ì*ZN8£_ Ù±ºä„£1lÈSÁ®ÈƒUX,Ãv7I : ÏŽX§ã/;Z¡ÐšžVön1§«9Æv^SÔ¸µ¿o¬—êúÔÓuvž7ׂbίT>ÅD|¯¶‘A#WÝB¿¹"‰ß¼ Ô£öˆáÀ‰úäÜ£»/…'·CSxxöÖÚdïµëëhI±r²5eÿ¢¬ U×±"X¿‚<¤=,3É5ƒ=Øí,¹2È.cðD²3lIAkqIÚHîù4,DFbŽ %Öô ÅËËHG,È~µñô›•œ¡µDØ·Èó-”å’´Ú‰'¹»*ѽ$o"á¯66ûw±Ú·¶€[¹aêv<+ÿ*,ZRÉ ŸŠGi&öôÓð·ð\áߪ™ƒ“C—s æ ·ÕÏëò–qözÌŒ¦½å©J°——ÎMÖ†\l›ÇÜŠ©Ì¸Fx’> …“ۡ)<äÒ–ß¹[¿ªXƒQsÁ]½Øaâ¢×9a¹\À¾ä Dç|…9ÙUJŠmÇž ™÷ívÒKñå„ý®Ø2åb?0n¹üÌsX«Î¹V”q $ äv#ȵTyb9ª*ï·ÞQŽŽ¥Š§Î¯ËÍ»4nÕ×ÝŒ íü+XSŒâ-iŠ#÷ˆáÀ‰úäÜ£»/…'·CSx0È5=dGßy¿ÄbOYRôº-ÈI^ÚOfÙ†ƒrRR|‚Ö´2ˆ UJå­Êµ˾hµ>Õxže(R3¥ íeAYCmg+Hu;W!9šÁ›‰ËEA]Ræ@77Á(ÅÙê9ÊÎû㼺RA Xƒlðïr‘m"°qÙX\¨).ÁãtäHü'é“sÜMáq€k‹äD“³µ,H/H+௓·£Ó“XJPNV$)˜§³X¬Äߣ”îDTLe’€­ŠP#¹äYŽÄ¦ndvú ­¸”¼§Q#r‰'Ô±®$¾§ Éyê2IÖXÀ.·ëZϺæ;9.ìC.ô>-iÆ…®Ìð{ä18QŸœ{t÷¥ðävh Þœ‹åÄY‡SÚq’’œðž£¨89q»ZмTrÂÖD.õo#~þ·œ=B93ÊI"r’E…5¼’b¶àúüVpKç“wÈ•‹]&Á½/Î'v /%KlJqV„dl«GkW¹ÈNŸzÈÕìS/ÈE±!l¦Œ¹áì‚ø=rPÞ¶ôɹGw_ On‡¦ð8ðì¹Z¯šÓZ{Bò‹=ËR"£œXÇÒÓ“p­Ÿ%¥€ø¡¬¡$”GºýÑø'i€ÿ)«…÷ÿΓ!;‹¯ÞUrho9‚!g©_‹ª²4[o&ÏF¿R1ì9ÚÔ‚òq€å‹¢t•°1Kµ§)"SÕ§>–YP$ûSB.ë »eoâØ=Èu’>9÷èîKáÉíйXJlÉ@~Rù¾st‚ÅÚÀ jß ¯½èrA.l´qA|Se‹¼!Æî¹í“sÜMáqÀ ×NÙcðËF9Éè·ùsó÷m*VNh— Å Nä+ï¤d Rîäd!Üü}¯JIµ”ò G›Käi.ÛŠ/{{{¶.Ù+¼ߤ…F/ðçŠv•*ûb—F.Œé¼•<× šÓø™4\|gí‹ê#Wþ sx#¸“Çé¨=Èu’>9÷èîKáÉíÐÐÎ%2’.’ªøOÑ£@m)» æQ^CÜÍ­ç‹™×äd+r’«üsµ'h™ê,f™²(z%rÍÍì(/®t@çó0rr¤OÎ=ºûRxr;4…Çò¡OÈ';•È)KµrU*¯¡ˆâ£;9©ê&‹šEe.r’’Æxˆ”pvêȆè%²rÏÈ•‹ÆˆqY8ººF.·ëš# ºÝ+`mæyƒòMr»• 5¢¬UŒ*dvƒÑŸ—nwµóo7\[™Ö•²žH±kFîƒ\'ê“sÜMáqÀ WB‘6QBrŠ̾BœëOg)Å<¤Hɺfö¥dCRSj^©ËI7)kR²®–ÞSȳ”8¯"Ä.G,õä­¾¤h] ½$ƒ†øIÈÊ™‹×…¾^KÂ.Ϊí{I8ìÂõ;,+Ê´¨ ×tÅØpvIk†lÓJÇîB®ôɹGw_ On‡¦ð8s®¤"%¼«„3üa–¬-e•IINðû¾ª­Á/÷"—¿{Ÿ”l3ç±`-ÉNJvȵV±Mû<Ç .å¬`—‡°KôZé—ÙY»"Ú?ÃØUª8ˆ\ôî¦rñ~hÈW,"ï°µG¹NÒ'çÝ})<¹šÂã€A.gûÅè›:çè\²20Å$'KŠ»¹•hT)ÈjJà1D²ËV•tÅLôÎèZ]m/+šH©¾î*³Èï ã=t.†…«X %žœ,åí+[Úã›j ±_kX‰ÒÅß‹Sx²1¯Y¶²ráo¬röÖKÊ,(±»¹8P3z9_K”[l—ó’¨Z´Ú¼"bñ‰˜CNØœì\‰‡[ÙØ=B>ô'è“sÜMáqâÐów}MyxÕ -(KÈ'Ãe ñ‚ñëîä$‚ý.ÍrRHL;Ô•„X£—”ð7=’¸§n†UE.Ñí]kŠ‹ê2×T‘«¬`WÅãKEyÙŠž´¢•Ƙ<#r-ÅÕù¢²={ÑG‚\%Å™gÔÊ! Ù¨=¢bE Ü'çÝ})<¹šÂã€A.÷]/Õjû\¾îHÊ’¾ììŒ)!Çýr²ƒØvõJIH¶¥ˆP]šÉƳ¡Äž„4Ϲü¸xì™ZJÆ­ª¶èÇ..j{œÇ1v¹¨ ŠÚµõ°«Ÿu皤*ús  !F„õC]ƒ'DZb³­‘{DÅç¸OÎ=ºûRxr;4…Ç@®µø m@J¶’éÝÊÉŠ¼„¸”¬•ˆÇc·œXÝs7àŽk%!5Kp“5x]±ÿ:#CùÈ¥-T©ì r¹3êújäÁŠÇ—ÄÄI¼¸+қ˟s¥rÅ ¹âxg8ž«}=ìm:b@LÔ“ôɹGw_ On‡¦ð8`Ëi$NJæ°‚•5Ê ËÈVeÇŠ•Çc›œ$ÏÙ—‘}+ðk’-%¾„Ô×µO<[½X ¬{E4åØÐØ•{ØÅs¯5e¿vYÍÖdÛÊ…Œ\.“#×v[7!×rì‘h΃÷ɹGw_ On‡¦ð8`k#ÚˆóJ•Ø×E¶œÙ™¥Å““ÂÅ †=}+ZeÛŠœ ßw_ÑûnVàéí‘#[p]CaýЭÂüH®Ë%öàR­9÷èîKáÉíО=W2Â^Bv­ÿ­¯\i[ŠÎÕåǯ[‰'æšô”ì[Ì=íBùaó.–·›Ž%ÅÉÊVùE>UíÄÕÜ€5ä‚=½ú ×&ãè]¹ËkFèµR6.sÐG®ˆôEËéØhŒÖÞ…ö­õØ=bëD}rîÑݗ“ۡ)<äŠ=)qëí+ñòåD¯_é3y°®¤¢AÑ>¹Hüèq#JÀª¡¸HÊîZ–•†u0/OlUƒ¬æ¹xÖ…3/ãv±­« ¹ÐÒU"¥„\%ZæÇîƒ\'ê“sÜMáqÀ WJ2² ï ,NBÚåÄeoæxç9E&Àè:GÖœ£ñ~q¶Ržƒ¹/~5Sk,;óF¯ W8ärv¯jnÀ'k‹72A¯XE©w~¨ ¹Ä"µä²94¶\Æîƒ\'ê“P(<¹šÂã€A®Œ¤dÒ¡¿ë(u9Ù‚-ÅerNENlAûfÉÚ€%ã‡bيܰ´ð÷>yÑQßc‰†Å×x™µ(‚)gÑHɇž#ÞX{|Õvüd = W5ãghD/‰‡]UäBNnÀε€õÅÄè‡sÒã±{äÙóSõɹGw_ On‡¦ð8ÈÅ_w+('Z2ºå$k”üÒ¯(SËÉVJURORT¶ ¼[ÉIV‘‘xÕ‘ ׫ë^OöŠPÈå2nhìâX©kŠ)XE.äæ2–- ÿṁŠÓGìƒ\'ê“sÜMáq ‚\Ɉ–‹ãÕm`®àö˜8íÄ—•tƒò@ââ`’–Zü®ÔÙ»ÝÜ@­Mâúä*ãxœ~,Τ¢¢iªJœsž ˆ#!>ôe#j鬨°ïÚàVSlã ­6fY3.íݕӜ#ÝDÀÓd¶ÆÙUìEÜJÇîƒ\'ê“sî¾t.¹ÝuÒ˜- ¹Ø ÌÖ”ºœ”"'¬¯89©K ¯g­•$øØµöäÄI ~ÁYÑM—”Tw¢ ÿ©[›Õïüwj¨À× »ŠJAäJ%bD¹\^ F.ž_n*^>rå„] y?8ÿ‡Q{ë$}rîÑÝ—ÆÛn”êK§j]ÈÅ2²$«JUN6{ä¤Zx=‹<·•^‚r¼&9Ñ‘Cœ$žFôK%% Š–¾nöçfï"Y¡§Í5’g>R³®µì¸Ö¸µ¬žqqv®fÜZ³W=¾[½Ð¥™ºÄ™«ÿyF.ô2Í!ÎV®vRÔ#¹NÔ'çÝ}é´r; f¿‚D®Â[¿ªËÉl2ÕùvIÉD;Á¯xuεV1CYNÔ*½²†ñ9ö>J+~DÚŸ›£§o½ýuÎÃh^‰&•rž ŠÏ¥wX×)ÃX™Ë&[Ç­•øGh+± Ÿ—{¥„\¸ª˜ÉL+Wúájìä:IŸœ{t÷¥ÓÈíðˆu:ü ¹V$-¼ŠU÷sÜÊ7~E± œœÔ ÇâäŒ .;ûp³œÔ$…Vå6µã[%§ð¤ÄÅòÔºÊZá—Žy £w’ß —+¯ì†d[™Î@ß…[©ò@û6gÆ^Ñœ«äʹœwüJ,X#öˆA®õɹGw_Zn‡Áž1ñ+HärÖÞ}rR4HJ]VÖNÜ®Œ¤À…¬¬I…–åKù}{JA¨ ¯¬2½ÅÍ¿x%Ð<œI¾Ew¾ZRÑ7™Ë5¨c°³¦(Ëy°'°Š\kó€$Äʕªb"^lÓ¹G¹NÒ'çÝ}i8¹=-œ®ö ‘‹=×ô¥¯È y{¯I‹©ËIµ$Š}¶Wû¥È•HH){ÝÊ#Ë­Ò‹5˜¥ÄÍ­8ŸÅ’<ª°T‘ËŸ­e— ùJäbË}¤¬ûlãõÊHüæWȵ$ŸôãÌ3¦²œ¡ŸÄmôÀKÔ層µÂÍØ=bëD}rîÑÝ—†ÛSÏŠú<éøg‰\[’–}râûroÄs»MNX;qq’_Bˉ––g!Žd%‹5“&)a_I[|äjÎrêæ]±A.^œÓ¾•HÅeo°Hf\mÈ…þNœÝ(_‚„d}þˆ\¨+:?ˆ”æ\kâû¨=Èu’>9÷èîKO•Û±0«Ï3{jÈåö”¬ÔZ¼ ™¯Õ¸™{˜…^vÆeqkAú’ìó6#‰ÈÂeï¹G r¨OÎ=ºûÒSäv|ÌÚÿüÃk ¹x]õ§ƒl`]³œpv¬¹'#lvQ ±Ëë¸/NJêr¢±¬ì””ž”,jÈU¨+–duÑvü‚â²bÌ©ÊÑdÛÈ•::•¿ ‘+«àÖœVKˆ•šPç̹bðšgä²z½›z´©!×`}rîÑÝ—Ž•Û§ Æ°X÷Tô ¹´—ÐJ4ô{ôåÄÓM(”.Y%ºJ¹ªçו¢¹¬¦‘ì’[ÖŠ¿®ådGÛ¿\—Ä”fífåetúdµèèTUKšÛ×çP+æÈ²ÈzsE`]·üÍ`Ÿ5#W*¹^ÝþÄÑzÄ ×‰úäÜ£»/#·OÅ ¼žï;¿ÿÁ"—öpÔÒÐ&'.kæjrUgU))¼ÈRÙ‚u§rŒ;ÆÖÙ¯ü¿–¢ËÊAt*­s6YöKÝæšv\ëÉ ù@¹5¸Þ*‡(¼ÏZ#—³tikûh=bëD}rîÑÝ——ۧϘN\Ç·,Pä*ék½‰`y@KqUNXVÖp´Š£«p’ÌàåÛ]V•R‘ñëdÏÎT4D™•Øœ_\tƒ…ÄŸÑQ2ù °Æ WæÕ¸Î´…‹ êk™ùúç’êåH Õ]«+%T·®ˆ»¬ÙJÏ~ë±{Ä ×‰úäÜ£»/&·CêyO×›ë<´…A"×Zäd×°·¤l‘WôÞÞñËRÀQít¤ªØ‹Ø¹¨IIE3ñ¢$jý® Är197´ÇÅ“ÊÅWÑ+¯F?€¸zNî0> Çak˜§-VõOŽ.ÈqQý=škxûŒòýpD®TâC8ÏŽj3rä:QŸœ{t÷¥þr;¬uê4ÈÅõÒÒ‘Ëj +¾œ¬åDïO)¥·®¥¥`!2’ˆíØ]‘«<9…h*Ê,±TQJúÎ/ æ0îöÙxëŒ_K¥¿%ôâWBAÑVƒ«Ž¿—-ô¾þ©‘‹ýj­`MÑÎ4íŒ ç[ìÉÅQ›còGu‘mFíƒ\'ê“sî¾ÔOn‡F-®sˆzÚêîÛÞБ $ÅíŠcý×'!¸7˜wý²œT¥ WRqŒ÷H‰ó'‚=v"#,'{¥d Qì|äâÌ<.¿c—¯7æ¨Ýr¡Ýæ[:+½äµÖ^ÿ–‚]y†ù®w°Ž¨q« /.̘Á{¬cˆ%ˆÈÅ9`ó:rÑ#¹NÔ'çÝ}©Üž·N‹\\ŸV‰\õHº”òígÿHö3Ê)&Þ‚,Ë()‘)ÊÒ‚vëíÀ'Rcç§áˆìc_ïãŽ$‚×êðK¯£ŸÓ É‹Pê"¦‹¨Z[Èî¬Ó"WLq@sÐvtæùÈíÔ¦¼ÖKµ8ŠsF9‡Ùg[ B°¦˜+ßù¹d'ã½?!ÑÈ=ú“ôɹGw_Ú/·§@-®w¸ÚÚŸ±¯í_r•^Y‹­ØÉPéÙkxç Í’j”;žqì()ÊȼCJV"%s¥Ä$) _Jj~¢EESt‘2²{yR'QØíù¥Š˜9Ïz¹j¶Åvy޼7§=~¸š¸$Ë^D»¬—”Á­óUäâ9Us<®öXèOÒ'çÝ}©[nO…Z\÷°5¶?§ë ¾ äò3¿¯¼s[YïbIÉÅ‹²-ZTÑôvbwA‘Ϧä¹oûÊ“mMÁ¢³ý±/¨Ÿ ЋšîÅȳ³#Æ,Úg‹±-¥},Õ9ûÛóÎê…̸ð)‘Hð<ÝÊŒKlI´WÇåðaäÚQìy¹ê¹}NÜ#dç:AŸœ{t÷¥.¹=jqíÃ×Úö¤ö÷ø*Ë_§âø^k—Õ®ÙUê‘Óý¨+,%tD²ò €skiá½&:SÛØuŽåÒC-·Gy„zÑÕÝ.BöZ(1\…³.ò°wVzeE[gzGi¤*®+òΚg˜ä ¿-9SÆ [bá¦$ëú¨=bÆÀ‰úäÜ£»/µËí)që´˜xØó¾RäZ{’â¯Ó²o˜³šÖv‹E†õàg4Õ{~·”§Æéz BïÕñs:Ì"mFp‰ð«ê³`ËIdªÖ·²ª¨³Õ»øS¨+ZlÔ10çOA6.й\ÎW‡[h›ÏiçO[V²÷¬Òœ¤OÎ=ºûR›ÜŽ-§¦v½÷«@®ªn²òdÉåÍâùXy$¥°sx©dÅE>à;–àqä¢à%)瑯Æ*pqUp‡œó¸ò£¿ûÈûÅÅM§â¯ûòšë3e±á¸8M{ ŠÈ•²·ü&å± ÐÁz$z+W‘èŠè?s#æp¹NÜ#Ñû$}rîÑÝ—šåökÃ-¤æ·ú*«j.Ešœ—¶ö$Š%RK¦ò?Ô3›òŒ`RºU™äµ”èÕw[ã@‰ÇU'rEª0réHÄ~tªÅÕ³OÞ¬KçnF”rÙç7‰ã¹8OŒº–è1¨)b.ëü¸8’ Ì·â]+rÕó)ž¸GÌ8QŸœ{t÷¥ºÜžÒ*njz³@‘KëÕ5øj´(^ÿr>Dœ·&9ñ}*õlwì-q}ŒìÂ È ÇIw±¡t.”öÐÞx’²A —è…µê~&jE:Ñ–l]©Ì¼ÐšU*/ýµŠ¢ƒÈÅÙ%¶°ÏgI¶í\f\»×sÉ«è 1½4rÚ#¹î$}rîÑÝ—ªrûõ¢RýýE®ª÷ÓEª{PJù+²8£SÉDVœmØy­H[t‘¨¶Û U+𲊅³%Y÷ËiT7ãÇÆÊÕŒK0…~rÖéyYšæ\%ù*9¯Õ…¬SêÄ~C¤¹Ì·ôÎÌ|¦,ß\>Xô–×Èe/fÛ[ØGîÉÿ4xŸœ{t÷%_n¿vܲTS‰\.ÎgPv{L¶ž×£ÓOÖ$c ÚÍR—“EâVµ|ÔÒ6°/Ã7íÁ¸gNK ®d%5)qñüØX™x((ÏÒ9ç4û‡¦´kOgÆÙµ+‘l\ Ùç#Ñ%jW«ÒÙº{ÈU@VXGz]ÑR!ZêÓ#÷ ×IúäÜ£»/i¹ýzqË»‚D.íEäÛO6NP^CNN½ä¯Æ² _q'%•l Jš΀æ„#1Ù‚Ùrî|· ò¯bOça$^[b;/ÅW!£”°Ÿö»vþÅ9P³ÌÅ“w{³j.ŠdƒšbBu' ¹0Ÿ5êo¼×Ú­,&žßꀣöe®;AŸœ{t÷%'·ãâÖ®“†RûóE.þ¯=))iµ‰epçiìõئ›89Y‰„>ä:v:ë@;² [»0Í~8.io.ªV5ÞŒõ=&\ñ±ËáVF³¢9G±’]{1Ì2,~ùš#ï'võzÈ(‘ ÚUûhÐÊ…{ âÚÌÙÞÅÈŘäü²Fíɹ9xŸœ{t÷%–ÛÓãV7VÅê59ä m†IÚ¢ÓNœí„Çn&«d¾×Ђ2Š\ø“³ ªxTð•O8¼XÙS™ópL¬Â‹XÕÞT…\kñ°rs!òfïñD"ì-A;Ú±¥LüÆ¡6OÅœ^ˆ‹¯&ÊÝ\°hI˜’×bŠ+è´EvÔ!;× úäÜ£»/Õ‘køg‹YCáßÝŒ]¹ÂÂ.µ¶È{Ix‹õÖ¯øÏö*ÎÑÜG7ሠ*쓹 ]/j0ØVÖ´zeÑBïp.2çêbÖø±õ~똢“bxÙí ±à×bŸv‘øæ2_ÊÓÂóØIfçÒËØÍÞaçÇ<ÙQDxé¡ ÷fº³×Çd÷ã ŽØ#àq’>9÷èîKˆ\§Â­!0ëXürWû1X«íCä »Ì¨•ü£U…ÿŠÄF›ÃT““¼·œ°¬,Áâù±8«ýZW¤Ä+ï<·8g53G)u‘þ,r-i¾…s• ÍQ– ·õƒ;˜Ùp>`.¡óh]K .D+•ùP¬Qz÷óíÂ9W.ØåüFìðŠ8IŸœ{t÷%‹\§À­¡1ëPk­ú½¹ÂÁ.˜qìôŒCþr²»è¼;®Ps‡n9YÉ‚×ýSÒ•’]ÀòÅÜAÔtkUÙÊ CGhà=s¬µpœÎú§‘ s´&²g}CjÆÁ¨‚ñ­,v%3AgòZ“‡“Ÿµ» äbëÓÆC.¶Òsѳ®„|Qy}q“”c÷ˆáÀ‰úäÜ£»/9¹­ÊôñužµúáŒÓ«÷Tß3HäÚùEyQ£µ‡íÏXÝòHªæ<­fà*iÖa%+ªŒÁî|¸éû.»¤]ôÑ…ÄÂÒä"¬¬+~ܽæGkÊ6'ÏЂڟ“¦›¹,<8ó²v¯By¯ºÂGWì//rñj_ :kŒ±ßaÆÁ«}:"üÚ´wð9´ÒQ«\ÄPÞYÝ…\~ÜÒ…7犉ì5rô@®#ûäÜ£»YY¹ÆÃ¬>XSuµ]w*}ùt¤"ùrtÎS eCâ{&$'¬›8ˈþ-Û‹\±W"ŠÈÂzILšÉFbÇd{¥¤ »Ö¬1ªl‡±Ø¸lt?Â)#·±çaEˆ–¬¤Ey¥,+EùY´ ×J¡Ö’¸—Ðêb,ûÉÚ4vNÐ'çÝ}ÈJjÝ>}œ …TMÔÖ¢~osÚ5ŠSd Õ±˜ šU¬Ø/@ì8 ÍWز» Ê~9)ɃM›”¸5ÿlIWËíÄi–¹¸`æE=k#> 迉¦Å§ÊÈ-îÆ±J·ÊC#"oÁâEþöhÈQ³/D2oÆØØ”áb)ó­ÂÛÅÑ> Œmmc÷Hr=±OÎ=º÷ÊiÕ'Àþ~¸ …QíÔݪ®¶á2,ärÖf¶åàjÚ–bN­(Þ”[Ër»§ÙGÉÙ󚜔äªÆa)` giEà±­|]ä÷vÑe¯¦¬¢[¥‚\¶å ÞàÕ³ç±J)Sx/4λ6*Z(bØBrP¤¤Í±O{rdñ敽16ϳÑW ™Ù§ŒÜ#¹NÔ'çÝûˆ¥´Ùó™öS{ëºÛ?ž/îPdc{‘¥–´ÓcË;=D†r²B»ÈN¼KnŸœlÈÏ» ¹Ö$· ÙsÖõjëyk/ÁêîS5. Gr°WÚ¸¥x[a$Ð5íÆI¹6¹Ö¦¬¨¬ z­½bZó+ÈKAGCvÑôç0+á5ÄyEÔsó0j1¶°…-S·Ì)άÆî‘VäzrŸœ{tw““Ñ}‘û×t ÔÔ¾}oдÿiß=ç%Še¼UþI…ó§ylWá,6ì·Íëd¼ë„ý,»‘«ZP/qöðT|ØÁ÷ÓÛ!W4JIv¹¸¥¬,"r•$á©ÑÓ¶„\«¸ˆ—¦€]…Å.3ïâˆÎ£ÜyªFâÿPŠ×]á!WÑ€[©g—Ç'ìÔÊáÈ=B^'è“sî.Òº?šs¿š.…šÚØÍæ=çÝ÷œ—(–±."'J~ܼ%ñv×i¿x'›]V•,IjR‚^NJÒF)áH¤ÝÈÅÑ º«¤YϹ,j-âÜüèeñ«4³®ˆ…ýÉvù;ov¹Ž\n§MN=‰‘±„wG}l#qÄFë˜s¤OÎ=º»HËgŸ ÍÒ?&B‡r£-ÎÏ¡õŒG˜ùF$‚ó¯s 9ŽÑÜî\gOô¥úÊs N’uµ«¥ rîôÕ.E3±eA± Lÿ!-%.Ž Fk¨îÒÙÄbˆ,X‚ÏG(]nE·âÒ —qåqF€’šß,†•¤1²×#–rÎ ÞéÇ9B\ -¼¢¤Ÿ¼¯#£ÚÚ—dßJhgóFöDŽÖ#àÑv’>9÷èn'_6ûe-ëªåòè0~´ÅV<¬–1©†\+ORšä$9ñwî.<«JA²®sgøÑØÙÃ;_v*ó̲"%©7£Ò»Mr1zés¹6´k1!­ŽWöæ`™/¹R­”°k +œáÂÅÐZ«ß8:µ—¡B #¯ýáŒÓeþ±ë‰N'Ã÷.½«£ôíþ9AŸœ{t·“/™ûb¼4Ëð9ðè:„íQa©eLRúR²Jpv½ãäÿ^yûY´Ùÿº³ÜoÄœÂÙH±²r‘’"ó÷Éå•¢£uÅb¡Ïi¯ÌšðÃâ–µh-@[\ÀŒ+&ì²?33ëBìŠÄ7•× ]Ì…"q1\t+_Çq‰wü舨Îg*¥Èïe ·NÞ#¹NÔ'çÝmT•ËýÈÕUÇ%S_Ž´Gâï[ÃØäYèQN²šå¬Å‡È ÇzòckI×…ó :‹Š‹O ‘(ËŒ[ƒ¯zéx¨h_qQÿl¤ˆ5{sÑîA˜ñ=p+63°qY¼B²™sÀ®A¯ôºÜkµó†Ï ½\|@=ç*­ufë ­^æ´§9äZ«S©gÕ^{o½$ϱ˜ü^7à-†žcSÏ‚tÅ„üZsØc3rPœŸôɹGw3Õ%²Ë+¢ýþP¨Oºë2± KKÉ’|¦²Fÿt{°““MRÍ{êb«ó>=z*Y{0§rìe´¨GÔqתX»6íÐ1m.¬¿:ÌwxÆ•rY Ñ¢Ö–+&äÊÉKbMžõ\"òiÐs0Æ.ŽÊ·¢ùζv€[ˆZ ¨µäb]1#}± ¿ˆ{DââÞ'çÝMÔ$‡DayžNûßêÐYçù‰ü¹´œD—`}”œ°†²’5øR4•ä"éÅÝÌÞåÞ«R’ïA®¹Äžá‚;u¬×ÓÒÔVf\K˜kYm1%äÚr!n±wDAصôÙ©|cù8p| ¶â£n†ó-¶níèÉè;fçrk¹rA®rìiF®!úäÜ£»‰š¤±?ryžNûÞk_–ï¾ü¼}‹hUñ3³—‚KÚ[<'ïqmfI«g,%ü…ß*IÑ«o*ÿ)íD{Ê‚¿ï’Ñ/£(œ1e®ð½ r‘ô:µ³•¥àVšb þ6²Ms«¯-IC4ôì¹E+([øm`Þe× °Im¤ nÅ…m_Ùã³ìŽj«#2b-àg[ì²»~8žjBûšGîŠg}‚>9÷è®S³,~ýÈuˆ}ÓûöåÏxô$äâ}rË„3`5ËÉV¼ $N±‹¬ RÂOͤ$õ]¤„Wc3Ø@ÜfœsdáJÀb,h§¢Ý¥h5ŵBƒ\[Â+,¥ý‹lôèM¨µ…ÿÛ g^Èæ`„[°Ž‰:b–3öÕ_Ä+3w+¹0«ôÓë¨q‘ø‡î“sî:5Kb_ä:æ E]o¶¹.»‘+é!']e™¢#ñ¾¼ªœðÞ˜-ù9Uãæñ×#_‘Ï%Å Nk¥J ¯(‚µVQÿ0ÓÇäÊÀJŽ:Ûf\°ŠÈekmÊ**¢¥ý+žr-ÉÆåkÛ€\‘0¥wÏd¾ž[„[ ˜¤äT°r¹äâÜY+r´G£KÒ'çÝUj“Ã~È5>Ö Míï¶çæ¥a×QÈÅ»×e‡¯É ÆcWyu\†0´þ&J/YÂî8ø¾ó÷ÜykÕ FŒâÜd+¿¬@4Y¸ý>ä1¡eË Wi £Ö2ZÀ¬ËZ»R;/²«€rmkD#™u¡Õž#oqÔ¯ùºrzZ´¡Y\´¶·ÄÌáõÑ{DE—¸O.‹Úe°r3ÃSûÛõÛ¹yIÔ¢-¦ûäÄËÏ16Ûä„w ±&±óR¥•`¦µDÆl ¾¿V¥x~åkòÛdÜŠ%Þ1ûÍ3rY‹%¯ˆ*rÍ+¥Šas…[k²p%ÎËfthG+MË6uo r=±GÌ8QŸœ{tûÔ.¿äjÏ qçÎGG!—'+"1›V9ao¤‚¢¶ë˜î eOѾ ó<‰É/>ò ølÕ~޳ŒY½¶ G ÀƵäÚÜ*¢•A®Ü”áοJ°Ñ³_DäR“ŽÈÞ[KÚ[dµÓx»nKÓ2F®¥ ÄÈ="½ï“snM]Ò×gÇõ×BÍo9÷èÖÔ%}¿&ä:†]wž‹¹6â·Í¾ìY°‚8 ÎÇÀŒjÙ8™™KDö#wñª0B ~ß³4Q: ®ýU3é° ó:<®ƼQé†Xìµ[ŠrÌur̪­x9¥„]šYäZ¼Ê ¹LÅæÿÜà× V·²ëº(Ïd¡§Â¸9U*kÒI—äÕ€®8'_× 9÷èvÔ-yýVÖ¾:Œûùwj@.·ïoMV”—‚m*쵨³vmØ×QyU¿çn•}-OÓ…5&ŠªBÑj"Ê ³¤ˆ”pý ñèty%6°ëgž¡lç"‹y´C.ƒ\ ÐqÖewÈ…v®U­hìÒ»ƒ° ·Rеê#W>eÇksrcÚ»TºâÈ=bÆÀ‰úäÜ£ÛQ·äýÚë¶¶;ÏEȥ׸JÑZKèËžT$Er*ÏÆ…''™›ë›‡ñþTdFmu”V‹ÛÈöá÷2Ó¼J‰h%è™Í^”N^Üü #:,R·î¾®=MN´Nå®g›.3Ž„<¶àÅ…‘ªŠIº!9÷èFÚ/qr-ã0þŸ†z#—±ûåÄÉÈä„×áÙ"• ~¹YX»ÄV×µª±Ž3Á-´G£ïø‚¢Íp,åÄRÎ(zs„{q¹J»¬®8—uäÊ+%V¹ÑbKkÈUPdŠ"Ú˜³Ö/b «‹ncÔ¡Ý?'è“sn¤ýòöëD®Ã#ñ×ï;‘/OWÑù³V r’TJV‘ŽúÄs#•`ß³µŸ‘óÀÂçQJœÆ¥Ê8OµgAÇŒv•˜¨%EçšSšeÃÚá‚VsªËÏv†1ìs¹"¥kr±…¾ˆJsí2Þ™Ùá.M{ódàX'é“snK}¤­;óÍ×KÝ8Ž—cQOäòõ_NâJ©[UR’Öè\»>rRýÞW-e9µ†÷)Õ†çZ;БŏµÒ6!סQaëƒSXgÛ‹ÖŠ9‰*%tJe€”PƒH¤t)ëXEZ´<¿z^ÏPj0¦C.ˆ*Ñfœ‡•CÎjØ8ôd³'»XççÊÊUÔ9÷è¶ÔGÖ~­Èµ/Wîq܇z#—¶|tˉ‹Yàô•”æ[. }’rŒóµh>Ú~ïK‰;›«Ù¿ó×·5äZ)¬¥ò(E߈ò-fŒ^2{Š)R"WÕÓ´à Ù Œy¬sº9[3r­À®fÑk>ce27úm {¡óÞÈ5XØ8ô§é“snK}d­+7ý×Mí8ž›ãPOäÒÞ n§/z>FÛþ‡ £sø=QÚJ"úÜ–²Ë°]§Ÿ”ðZ{®ö°¸•/ŒT…õ¯02„ W·–2óÊ0k™ü‘¾‡³¦T¼¹êÈå,f)D´$ö–ó©ˆiÖ…zŒè¶v5s]fjÜQ¶ë¸7r Ø#ûç$}rîÑm©¬MÈ$r±gNVª­–G+GIvk„xŸþ’Û­Í;ÑVâ|­"ñŠt_éæÂÏefÁö¬Ô½bä‚ÜdKô„ \Ön†´$‹U©vò€.h‹×É_”¢Åg°ª¨÷S—ä˺›Ù‚P‰cÌò‰µ~®þžK.Gç9Vœ+3ÚâÜ´yYc-ÆŒÜ#2ç¼OÎ=º-õ‘µ_/r1_F®\Fû ¿èZFÜ÷×y8TW²t¼•¤"%±è.Ú"Ü\\TfmOf)É¥=.¯â"Råâ3ÏV©• ×Ê‹øçkE>£ì¥ÊÙ3Ö^ ˆfäÊ)q†C¯H¬f;A¯&äbmQ#×\k´!;× úäÜ£»¯¤MÈ$rÕ½}ü¿«Å}}w&mö÷k›±[™oz†Ž+ìîÄ:ã”}À—J_á|@.—çG¯*"r1j‘·(!WAVûD¼xÆ%ÙÊÄ—Õ߃½PÙÈ4~qôf´Ýïr•€]% —ÕK£-¦ÖÒE³£‘{ÄŒõɹG÷±Èu 95sàiüƒÌ¨M*#6“ï©+¹ÏþºR]N|KŠÞA‘½Å­tµ¤ëKSuGDq¶`¯©JÉR}ýqÀåËØv±« œ­¹V¹ô.ÃP‹ý¸üÈUSÝfFiobÎA;—õF¶oiäÚr•dçÚš/Ì|#ÒŒÜ#”µì}rîÑ=!×~ªr ›Wþ]礆,¡¬K$jì³¥…3ÔørRᮆ*jÍÕ:W\{Š»ÓE‘ßH´š¢zƲÆö–7Zã‡]?)íTtZžÃ.—eÚΪր\k™uåu-1›·’C×äJ¡æq¨=ÆžeK{装×WÑ9µ¹hÍt-7ï¸ñò!ŽÔ#2ç¼OÎ=º'äÚOUè£Çòs zöœs´Ów“ǹûº&J†|+±ÖeÚeÅÙ·$§– ˜Îùà<'ù‹®ó5—Ø­ß»ÈTÚ~‰»¬ ¹¶ ¹xW!ï1‹½ ×Jô?—/Ã/ï"|Uãs±ç¢jsYkÄŒB¥‡\Wg ÈUÄe¥‹s¼ŽÚ#ðõ:IŸœ{tOȵŸª¨ž9†ŸcA®B};}û­ÓîxÍÛ·Õ²…)¯?vƒŸÉÔ•-åЪz±Œ€BI´ÜGë÷,‘N6Q[\z^¥å!Þdrm¹½VàAæ1—¢dÊàŠno5F¶á e\Cê!WIÙ„r­à¯x¤î`ÿÏlôØåØ=b×OÓ'çÝrõ!ŸöoÿÜ1==r §ìH&PN䛬4—ê*–osqyF]ô†JlN/3Î.6ò½—Bq˜W”åÔÊI©òŸ²m…%ÚíˆDmÆå(Ûyö)ÖçÜžhÀ(…\Œ<·¹$›br¡5ý¾ÐÖ5§¸_%xËw!×B g3#÷øs¤OÎ=º'äêCÍhã]óÑñ‰« Ù?涪ù¢.ÄúZ_Ò_wÙK¨$„%C?É›ƒ‘ŒlEBP¹YB)ôÒž\Véyeqyº 5&K}IØ¥m\ ëíŒÜ¶õ¨§/r-¸oÑe`ܨ5LÞ”©Y×´CÖQg\QüÕ¬-Ú9—tƒ¹¨ B®{ÄŒõɹG÷„\}¨™mü«9™Q‹c³òÕ%Å­ ¥ž]ÉEF©Ë‹Ê×*ßl–_"wd×q¥¤¨€™ä•_H†æ j(âùÈOÌÈ:¿ú%ÉX§­§/\ÚËb%¹¶ ÓôœË!×NìZ\4rÙ}F˸ ½ÍD½¤öØ#ä°OÎ=º'äêCÍМ8œ£§'¹œ¬ø…%…õ?ò@“Ÿ5{‡¦,)JOtR²‘9˜.K°¤d É9ü¶‰æyˆ–’\¤žR·¢YWŠØ%ó%¶­‡\Œ]ìiÁó-ÆÅº+Ô’| VÝf Ù: st{®-rAâhóÆË±{ÄC®AûäÜ£{B®>äsÿfmñXŽžžÌ¨Å±ÈÒ²¬Z^EÒùßµ¬,euËÑ´TúI¤¬\ëŠ,T–4WÊ!r|bþÏåH.rRHî@žqä ¹ÌÊë¼m1ŸÔØÖ9ÊÍ1Èåc˜>SÆÎºïÖeÿxo­`¦µhD®H\c÷ˆB®ûäÜ£»¯”ùÈuZœ¸<ò9à,\Oãé© ËŽÊLÉËRF$Y§u'-+¼¥MN⊤””“ËJ¾çµ„ ¥¤ðô“ìLæµøjä/œKp­,m]½éF.´Ï« ÝßÊOA1R½@!º-±Ÿ%h‹y¼6õ%Ã5»GÌ8QŸœ{t÷•² ¹|¯ˆ!xzj2£ÖÊÆã’F#K ~YÅ‹Çó&MÈãÈí^Õtöb…¥d%zb ÊK°•áÌ“.+™q¸6hÿ¤’f] ª5¦uFŽ‹z,rY´Š©eÜFŒºZÆ:KYZ‘ªvX¯iõƕ䣵k‹X_œ$c÷ˆB®ûäÜ£»¯”MÈÕׇþ¢+VÒ²Â_Ûüi<ÍÄ_ϲñÖíw()1­ê¸nl:Ï.ÛÏ„\¦x5»9¶Ó!à–w? W{;@WĽ݈\8ƒwo|«Œ,ä A2œñ ¡WûIW”Á£íØG I—€^Ñ¡þs·sßUrõÝ·xQÈ v¡…åŠm£úâÛwIaï"Ž1@+\öNÚ¢|ˆz WʈÐ,¿tݪ³–}È%Ù÷!Wcí¹`Îçp.×øÄnä]Ñú–Ù] ÑÎíÚg ¹j=Ò}/Ùç¥G ¾Ù¹p¶UP­lÛžP}ãÄ\÷ò,0—™{IØ·çÝüÞû®™+Päš“N„ãRÛZ`Ö9{ìZÖ¶øÛÚ5ØÞ™b´¨¹ØTÐkaÕÎE»ãPZÒ5çꮥó,Yê!Äq3Á-É+tx»ÅîšSÜÕí~Ô¢§'m=²È%=µY ýJôDÄÂ5­ÎòL\õ ]ra Ö²Êû‚È›âÜ£»[ÎøL¹~mØeß8HäšÓzÙ4•fäÂ5¯%S]·vÃÞ )ÜÚ`†‹v.‚”È,°ãºeg-ûkE±N7ÇêJ ¹ÀöLƒPë ç×zdÿ]äã.=5mÈyåi~yÄ1rù3óç´²‚°HÜZ¨Å/ò®8÷èn—3<Ær…ˆ\ fƒ_}õuq@ñW~%öØ-ùñÔö¸ÙŸöNÒKn•õC“c«7JJÇuÝÈÕ‰Žî}íŽD.7ãz*rÅQçÀçWz¤Ï]²ãšzj*ŧoA”ÓÊ,Û½>'/ÈŽ)‹½F.ò®8÷èn÷çßñç„\A"W)¾ßn--¢ñ íëFF+]Kñĵ𹲿oÙÛ’DØIœ+‹v.öF®E'þuâš¼#XÒŽµO+ä: ·¬ Œ¢RœéŸ_é‘>÷ЬXzê) r!^9ëV®Ö šËœ…{õ¸¨¢—)çÝu9óÿžËRúsô\$qõ Û…äzŽÐ!³G[K²_V·¯§$Ñ]Ø&ûuq½½cÅRìÀû´ÅÎuÏ=¸–ÈJDöäŠÄǵjÔ‰Të¹T Tt^Y³MbÀ¹…A®\­:°½ ¯¯OÈÓ$¢à½²£¼%Î=º›åÌ›ËRãè9È W¡ŠÆ.KÛF7!¡]*Úºª%é`{±w’6‰RV´fEßëfê\i’uœÍ:çuÜzÐ[ۑ˶¤£‡\­¨agTí5¨h;ÈÕ¦Gú=ÒÑR¶£—¢ßSÀÙ¼‘ÙóÍqßaW¹ˆ3â•›¨¯ANû²MçÝÝv.>óë¶sá‡ÍY"ª/[‘k£l`ü}ÍiÏmAké B%Æ5\{Ú€‡7ÆpºiäJ÷J2®‚­:‘«[_eÜêB®4îh%y•-p¾ÛzUÙêáõHGK©GØkÁõžoäHÖ«xÆs®˜Z0÷ŽkäJ.¹ô¹ ¹E.— ÂÅ0ö‘Kësùg´¤ps)ÁpÆÞiu’“í'ox;}{JÇuiçÌ-ë”ä‚lÈc W‚J$èî׺ ¹v^t´”û ßZõžäBÿ}·«)k–óèjC.w\cѹG÷~Iór‰\:o½-ÇØ®™ÁWYbè¡ÏÑ\}iqm^í¤Ã¤½P¬òR4EÈÊÓµúßwÎUõm¯ÔÒ-É;…j¶ØÝRÆ®Vܱ_ƒöà; »®Z ÷Fã9Õ#-åï jŒªGàlb=c$v"•Ê~§ÈG({Ü«ïƒý„e¨cž{pÏûú¢NÈ0r9ìâˆy϶Ré’zõ‘Dzó'Ç/v¢k­¬` ‡oí|”uøÖ=0Hí󨥹TtõεŽ-娫íȵìœMõE®ÖuGÝ#-MÔ¬Ëë< ÞÈÑìr&Í5äÚRäì W rýº-ôÍx?Ç Ê6è2Ú,(â'³­”˜Vh“/jöÅÅ+a;ùH®½9W¼Çîíd¤ãºöyÔÒ\*³Ä´ÅXd¶ÝFÕ­®ÈÅ|/:®Z´×¢{¤£¥¼é¼Vו9—è‰*G[3zI?ÃóuÄXíH»ÜÏ=º-1º®™2ʼn\kñ)_ʼK~³­¤l‚9¡Z)ãìí*ßiÒ"íjOÉ’bý¥{ðÀCÂöëºýŸö —Šp܉\i§¥-â}SíÚey‡wèƒ\ËöóºG:Zêôú¥ß#p6¥]÷‘Òú8j¢ëSÿëTE.ÏzC{1 ïȹG·%æB×5r‰\+¹’óÐʶRò æ´Û¯ ÿ—äIqŒÉ:F«äˆ\:2K.ÈÕ…HÎ’Öi»éÆ„ÈE¥¹ºý7”†ÕÚÊN|%Î[äê²ãC´œS=²§¥ì÷åõœMyÎóîŽM-q_kÊh‡¥ÌÐJ‰ [âZž9÷è¶Ä\èºæ×‹\í8ž›ã̹œ¾˜‰ˆ‘k!³®\r r\d•sUYÁ(Bç—ÈÑò:íÞîk¿¹ºeµ¹TŒöNäÊ;W(Açûtœ[÷B.è‘–sªG:jà©UOQx;ðŠPû˜è«´òÐKõ‰Þß z"ÏÛ]~]¸ëÜ£Ûs¡ëš&¹mçç×D]8–›ãÊ“Êvz‡\9i‹3¥dA×$µ1Žv »õ%{§H ï*±ÈÕ1GÙíèë½Ù9¡Ûª½¹V®t"×¢Ó+L{?õŠñP%zׂí‰-Wu#—ôHG nÅ/÷{Þ#£]÷«ûº¨ —êZaÔÈUªñ³¬+'äº|êâÀ±Ü‡$Û Ó3Á®œ,ôi‘8»Ê)+ÆZ»ì9üÞ²ç"W¦£âÏ.»̹Hç°NÇu³ +¥ígÓ •2íŒacÙw<Ãy9uê¿í¤«km±Ò#*r´×#5pöŽðâFZä"=qEQú3ÑcyÖ¥ú„4~è±pqv’¥Â.süÜ£Ûs¡ëš_+rusà8^ŽE*V„“•{Þ¶“²Ò/½¹VJ‹M1ýÄy—ì}¤½Ú‰D2ç¸Àñäòì¼×­:µÅNŸòt—ÍSø7›w"תsΕ¨½1q÷[jpY³»V +=b®Þ6õHG ¥7_R=­ˆ ¹\FÊŒìšC¦Ó9dåB슻àNÎ_{!×­*×=¹,n-²"+³N ½Í™Ýý B,—‡±‹ô©}øÕ¹ªÖòxÔy=ÒQCª°Ëë8»nE.îK¯OhÖåÖKÁª*rçÝL̉¶ómrÛÝ¡SÂÅq wÛ*ìZ{2‚úÄJÙÀ–bŽiÎ%Èaž.íOaëÙ)G¬·[[ä‡qÙ÷"W‡ÅÉh‰ˆ[Û¼ÓBoTÎî}ÌÇùj½¦Ë„ç>û«Ò#vŸdStÔŠ¿ò{Ζ ÚbJ39Æ<Õ'ÚŸK¼)JÏUf…çÝL̉¶ó¿FäêÇ&^ÆûSQri–ªS!_ûLYè#ƒZ[Ò#û‚\äíöÃu[èWÐvßW—&—vE4Zb‘­³M¶Ë£Näʺr&)íìÈÖ±'ÞûPíC®Ö7Õ=ÒQõ#—ë8»m°Ðg≑“Í·”iäÒØU Î~Èõ5cW_ôåáØ¤ü§õÞ3ÙµfÉ›19KêÖ¹¶4KÐÛî´r¢öÄíÛçGöhö êàû“k¸µÉç{æ\éäÊ(æUëìïäÈ¥z¤£êÌÓ¦{[¡¼"rA®œ°+w1ÄÄ3"bmQ¢K¬vñ81HxîÑíˆyÑ|öׇ\ý9Ѓã“̹œ…¾®-ni-‹#>£çuä"M‘-]hùÊÈLö±¹¨tÝq ÀÓ²d鸮sFÖí‰j5EƒZ±Ý¸Ø‰\ë´ËŸk)û—Û‘«3Ê2Y‰Ê½³Ð®XÒ#í5pˆgÖÖÛ¡•Òú2Ï»Øê¶®´EÕ'ì[÷F2r$ú$¼í&;÷èvļh>Û%·í| ™á€Ï…C¸~Jª!×Ê×m[=äâµïé‹1®,¢¾HþVctv.µ ,»½‹¤ ãºîˆT¾`fÎeç[‰A®Î(7¹º¢Ù’µ][ì‡\»NŽtEzV=ÒQõ­ª6Æ Èålõ™ —έRE.?8¯FOÈu¡töóï¤2Åj;Wr²"Ÿ‚ÄÜñŽ`äâ51÷µžÛšÛyJ3ˆ½Èµ'î`§ußèŠÛ<ê\›´ËuE±®ÊäÊ;3y–¾g'g—¶¨z¤£êòËR=‚­ ý†4W+$••E¯O< }Dèë¾M¨‡^˜Ës£é\·ÜvtN t(.¹6 µ6ÊÎUE®¥ìÁNPcÏ.´v­ îd¹â´ªÕÎSSsÙ ¹:÷T[Yj?›m¹ºµÅmÚ削ÙPm.çvm±rm÷D›è°èé騭¼J(=gw ¹ Z7®z¢–äšsÖ29n_øçó þÜ£[s£éܯ ¹žÂþü>5‘'êNô…Æ­Färn2òàì²:#é‹èïã[wÅ“¨«â¯½ÙcÉêŒúgjè@G\Uİ ]È•Ei—çÅ–²L\¼n±7îO˯G:j ‘˜Ò#pvKÙ‚µOï†ä=ݪOX#„7Y£Äp†ÝØAâÜ£[s£é\+Ï×@‡s ëÎs‘ —Žo©¢aÚöVKGæÊȳ‹<êɧ $îÌUö D®Íäâ+k–¬fbûrK-yWÑ“Ë`WÔí‘%iÇÌ3Ü›ÒjéÚ›×­¸¶>©}-Öï‘ö'‰ß]Lk…>rmr-ÉϘ}SZ•ô3 Kôh¹$þ ½×&^Ÿ{tkrü¨Ÿ;Ä›)tj~¿Ð‘ ¾§Û+—sŒ\[F1¸3­D>±5wú’e…|OÓwäË5ÏçV¥=6Ç5eж¥ÃFßNJÆwÝ«‹mäz¤çõÎÞUs±ßû’z3¦Eìòú„í ðìO£×]|Õ‹ˆrãˆùP?óëA®¶÷ë·FÑÏãC.ÉãâeO°íÝ‹\Œ]hç"ßz¸3/"΄¶¹rg‘9Mïä2³®lgþß>¹âtNصîÚ™ÝF.‚ƾ]èͤ{¤çs™uQÀÑ&äŠdž–Ψ}éÁ^ïà2n°…ž¬`ðVŠ\Çx3}-ØÕöv}«—Ç"Úù¡ÿGk,Ä7•9—ŽOλÒ8Û¥E_Dÿ¸“í$~œß.äŠô§è;Øk {LéÜ·ØEiž¦i"ó®M×Þì&Â|„$÷;çÑÞŸtô¼#R–+á/ÅŠp{¸m‰¥Ga„׋jÎål¢õüŒ—‡\í2økA®ö·ëã‹ÛÇc‘Ø8\Ñ>]ìÑ„\'ó¿Ó9îÌT¤z—k£Ëc<Ñ2rŠÞ3È•eK˜wmž€\‹4³>ö»½:ìôu∄jmdOîÛ*ù=ÒóÙßÀ=GKÊEàvpgsK·œ¿ŒÊq&øuñÈuøÞÿî0©ëÝö#WI-È%± l›A. PCV?B]÷^—T,ÈG"W÷Ž›´ÌšuÙ=@ëã+]¥…Á.œwA †dk}$z¶ÐÅRuù¡zÖP푞wÍÅn¥‘kMùŸ¹8nNB~ô©ß'l£§vèâ2pRÉsî:1/ü£‡Fa‘ºßlÿžó~Ä—Ç••*OÔ×h컼A”DZãŽ\ËHÇu»fŸ Š<Óbw²‘ç)¦àö]wÆç2W4úŒA ûµA¯% W†z#­3î7™ö‰ß“ÊÙèòî±ÕÎlF®Èï<~¬¥oײMouÑÈuxŒ—êý¡Q÷{íC®¾üKâÂQ©ÉIeÎÅ‘9Ù."³.Š×•(݃¾áíü¥˜ë{ç\±D²p1Ö—ÉÚhn[£ÅUN¬Ù¤ÛtaØSŠtÓ\…¹*ͼœ©a Qì·‚^Kš}YÍ˼9:޵äK¦oŽ© A}äjïîéàÕž1cÀÅL^å@W—A=‹r'(m†sbsdg¹Øfâ|»|ä2ÿ¶óZ¾ñ•³Ñ똛5)¡ßÒ¤´È%z⊳dvnX¹uI‹\삉’ùÝÚé-æ-=ìB{™¦mø`÷²ø…š#c—C°°kqT Xg\Êì+¡õ8œ=ŽÚ#¹6.¢-œÛJÑó®ƒûärÉ—Ìc˯婹ŮåúxrÇ—1¨7rI–ך¥*'z…Š¿õ('()æßvn›ëSòžàèk=ǨIIDÞ‘‘þÁ†Â`K «†k@&‰ ±k‹ø(¶&䢵E¹\aì*»R1Ug´:©)EK`—Õ5reÊrouFˆF+e;CO ~—‘{Ä W ú#—RýØudŸœ{tw‘–Íc‘ë’±«û«WúèªåR¨'r¹ýÒ›Êùºœ°/Ë îÄv’bþmç·Ê7›7}ßkšID?cƒ6[F.ÊïÓ€\%ÌÉ ä’s€]‰øG¤ä±íg]ˆ\™èЬR’%ŒtFô°g[WØ•‹Ý>–¸^ÁÖàåµ$»}Ì1¯Çì@®2ZS)©àïÛè }rîÑÝEZ:G®ËÄ®ævjìªjÍÈu9÷èî&'éýwÿt×sÔçõßö§æ@¿šÎM=‹ó-DÞ>;¶°ÔåDÇ1GY‰H;Y“\øR² ’W#ÒN8‚GÂÓÜU)±ùK3ðAµþ§6‡5Zè)«bÅB¿R‚ƸÌ€\°æèÙºœ‡D÷¬È+Ìa–¶Ø3n¡wDFöxô‰Mé_·â³§=Å÷²ØU@vl\g¹Gk >9÷èî&'¡vEß{ºk:?õ}kÿrõ¯é¼Ô¹Ø[Š£—øÞGÍr’+Ia9amd ¿£”l(ãÙ†ôóm‡Ÿ‰’5ŽjWÝ}ÂR²HîY²&äÒ^«¯ˆ}ÈÓŒkA³®°o ú"κØ?bN}ì·€[v]‘ýO¹"Á.D±Øy¨~meÖ…Ø5rä:QŸœ{tï#–ѾÈÕ%ÑãaSòÖø;cä:¬¦s’A.û•b޵äò$¸x—•½´^¶ –“¥ø¥ú2+›Ê**LAùp6•|ßɪB^DG˜ãqr†eŽ`—ÀÎê%Ø·K°m flí¼Ä+u{ªI/ļ֠ªÕEÔ3@:¶çÇ0ÛZrYí1¿T¶uE¸ŸwÁo<ßÊ+kŠ©·£±©Äåk{ƒb@áQ{Ä ×‰úäÜ£{?¡”âÞÕ~×v]9:µÑ¡oíì]Œ\ÇÔu."äR~59ñ%…#¸'Ϋ‹¿õüµÙGVâY#Ùx«î[’’ ÈËÎʬ³-˜#{•ž|, Kërïlank«´; a¤± =»™æÊ/æe¹rÐ.Á÷ËC.‹]>rñ #¯"Â>FÙÈ•Œ\1ín\›·²(FîÐOÒ'çÝ}ÈÊ)ïºßw_syØuÌ[ëû,r=¥¾ñÉ WÒ2ïOVXNTôç2vyfYZ8>=î‰@Vð;.;è¨ðêû–|´1Vz»Ì[hOf£×؉$;ÐÇ"X«+ÍïVS,­¶h£9lIhÕ/‡‹ä1ÑçÉÕ·Úâ’,b[Øyn-+ÈU*oúyбn6žÿü±È•—*κұ{Äz¢ž¦O /¤ý}¾ÆEǾµþËG®ãj—¹2Ø­¡öɵˉ³¾èÌ rm©d†¿ö¼«m+Y»rÞC ‘t |lTþ>+Øö{^šy•µ i/)ô”J@^2ƒ;J@”]%.ÄRçÍ 8€k¹V™ž²06ϹøžLíµ.ái%íº.h×b•زÕVèšd§ì]#öˆøs Þ'çÝ}IG:j:_=·_º/µ°…‡pàòÈ ×ä$ê”O;‘˜½ å×i±÷P¼–¾Ë"ƒ\è·É‰|Ñ#’–Žê™P´´Ñ.Áæauk¿±šZŸy&Á@]\­<æ íÙq¿¥€‘ؾÁ.ѱb±3q\?‡K@D®-ŤI(¢ îZ‘m~Ák„\ò¤‡ü±„_¸çz« ï…½>Ô[µ–G#—Kb5vÔ³Õ'çÝ}©{eÍq~è‡>á21˵¬ßêê%‘‡\ì=¤åd«¾ë(EïVI1ú;è;‘¾Ékë%èsˆðRÔŠ½#ß÷˜"ÿ¡MÝEƪ—$‡¥„± ç[UäÂ\?Î;‚g[hµ_‹¶¸•]@”ÿšì[A®’p}RçbC¨Õ\íÿ§¢5rœ‘{ÄŒõɹGw_êöf:TKl§ËÂ,Ý¢ ‘kEÑÑ)ã²²œ°„m()Å“Òßøäf 2‚«K“´_v^ÝË(*r"‘7‚-hƒ²˜Sd,˜í^lȾ¤ùÒšðÇjlɉ³£ÖèôEœĤ1²ô¡ö¸ _ÕXè¹n,ˆa)øûZÍÖrÚï³¥§ó>ÅX´?ÞíÃQntá3<KeƵ¥½@£öˆáÀ‰úäÜ£»/íó ?.±ª-é¿‹àRˆ« •øHôW´õ×YP±'¯3¡dq²¬œ¬Äë“£ý-aÖ’~à®èü SÎ{´6^Ù[“¥JKɦ†\ A®’2f°ÎÈ»£cÁ.`ðŠXJì|–µDœ(ÕŒ ­ôhëÚ]g)Ìšö)Ö‘Kã–ÖqãÈ=b8p¢>9÷èîK}víEÆÀ©ögöß¹y9dkVa·ãW—HÖ¥ô1_j´”Xך8üu0WÐË€þGï©e¾Ê7ùn1_D‹ÈüVš²6Ç ð©âh3[*¬¯ÅJ_sصTVú’<®v~9ƒYøÐ£ßŽÉfÍÒ¡.–Li‹ì ‘Ñ bäÊ<äŠy'#íÂÞŒÝ#ÏžŸªOÎ=ºûR3r…¦?Fþ[‰\:+MV³„dÄ}íµuØþËzÉl)àÆ|À‹]b%óšÝ ¾â…ù¹2²°6R±5Ò‘ˆ@'ªùbžïò-H‹=¿4r”âwÖùV”Ù‚£Ê8OP^•g+ýšü­ôÜ+Vš+èJì9ÈÅó*ŽfÃ{µêÖ+ò?Mrù;¬ãäª{Kðìjž zÄ ×‰úäÜ£»/µGýZ±«ú†!"—ì™+ÄÒ[]«ŠÙâ"1UvJƒÁ/üÆH^3 \+ßѾçB¼ 8CiÆ¿‘ øžc‰’—/‹%”Ø~åAR6$)V[É`^`](Ù§!oöÂ..Œ[uäbÜÒÈÅ»…pÖµ¤úÙÎ%„c¼û§¤ÕÿLf\M±!êÈåã–ÊÒˆ±#Æîƒ\'ê“sî¾Ô•?âëî¦Ye°ÈµUqV%%ÎêË;€9¦ [‰#°ªh9ë8DP@$؈wzvû=·:H,%5ßöÅ¢€²4Y¤ä¿óVNr¶±ˆ=8çLˆ²R_*¼r¥ª-f™³R›û r9û}¡4EŽà<'´Ó‘mnå©‹iS ÁÇëÈ•¤^FÆj·G r¨OÎ=ºûRwή¯ »šß+Xäµx–çäd%ßëR²ë¹¯|þŠ¥™+ œXìØÂ¾AÔ¾p? •’%è#öËdØ’‚F²4ò±¢b)‡3 lTÙšoüŠl+(%k±(sN‡]%é*[¶·Ô0‹íñTÅŠàÕÆ‚<¿ªœcyÊ–<—ìŠb^A¡~È•x÷Ôpkì1Èu¢>9÷èîKû2<=ØÕöNA#WAž‰¬Tå„w¿q r–»*¿ Xädú—‹ÏÃ:Õ ´«‘$ ‰,À†b5’Õb½(MY›b%Å~çIVà _•’•X¢êȵ“øUóŠp+ùP‡A.öîbäâè],‡‰ò´ÜÀ¶àµ¨Ì¸|ä’5Ã}¸…"•HbÞŒÖ#¹NÔ'çÝ}©Mn¿6k}ûÛ„ˆ\O¸ o¼³þ²¿FºÛ’¤pæ¬ Å8qV¶¯A3±ºÉü¶f|£”lí×¾ï¬,H^ТRÐwÞIIö•-ÉIL^¡jß¡hp¼KQgv…ØY0ÛÈ%âóÛßð X‘=b{$‰Î;uOÄH«º±ŠR."„Û“¬££êx76œÃÈ=b‘ë4}rîÑÝ—ºäv|ì:ÕÓºÞ$HäbïÇDXÉHJÐfÂ^Ž£SGB/%:¯ÁóJÖÂHøP$'ØAÌ«6äªJ~ãYNrk6wÙõ¬L²ñ¸ìÓ £–‹ Ï3¥ˆ¢u-Èc‹‹F®µò¡ß@Ô7ë²r8§YyˆÑ^Å%y¾fƒ#×È=Ò€\õɹGw_ê–Û1±K?cÈçí›=‰\;Š&œÓ×]ûi[Êh%Þ}ãפŸ`Œ&Üeb½‡"MŒ¿öŠä$é@®ª„ †Âr²0×Y˰h'PãŠ4¹˜4Ö]61糯=ÜÞE\Êüƒ1!ÁØr“{ñ¸,v­·86D³Ë× w½ÞËè#!ØØ=Ò€\õɹGw_Ú'·ãi§A®ý­¹–¼ÛÄ­µÓW>cùo|IùÁ²BÑår°ªlhO¯]…Ç=$)ØŒPNÚµE-!VF6¦89Y‚]Ø}áS‘’´¢'êUC^;D∧%ù{3nm0ǵäüáý-n—"z¢jKÚ†2ÁòE[ö!W?d«"×h=Ò€\õɹGw_Ú/·»ÝèU­yˆ'õkwȵ¡ø¬¸,~;’Ú…±61ŸggÇÜÒ»©„ˆMV?YR„™Dâù=¹bsú?f’‰'%¯R‡\¹ì¥Ö6wYO£¹”Ã-˜i¹M)O{†ëXõK@.·²h5E½»º)îü±øEëŒc÷È‘ÈÕ£OÎ=ºûR¹»†F®þm¹Jòyd9ÙŠ—JJR±¯¨¬i5 ãØø[XK("”N'T{ì8›u ûŠ— ¹h…_¢¹”‚\ägA9ý]Öí®v¥Jû‘ }+"Ú·8ráѳOÎ=ºûÒ¡r{*ô¹G-K"WFÚÍm¾V"Ðî«WÞíߘ±j#ñ3Ñ÷qA{|ç™ $?ªÔÚUÀc;§½;Úg’¯6—ymç"79ùlG°_n…6°¤ÏÕZE«‘Ý;Î[ çZ‰DgΟ¸ÀÞœ Käa׊¼+]„•ÄãB=#C,”gj“¶ØN:²` ÑœGíòD=AŸœ{t÷¥Ãåö8|èWoÓïǶ«ï}A"—]ÃJÈS(¦ü œéj2…õ’%äUØJÄ»˜¾ðkʪ€r²9YACŒœbãlENReNwrâ¤$ó¤d-yÄPJØh!þK¹X'L=ÜÊÕâ#‘[Œ>åιzèC±€(sÙÉ>¨ŒJû¢Úì#±Ð«˜¨#öíþ9AŸœ{t÷¥ãäöèåj9¼Æ§´&päJEN–”ßjÙXVâ9Ä~ݸ öà¼QNP;³"P‚޲ƒ(*ìX©/}&»P2”‘?6TIž¢^TyoÆQF)΢è#·KÁ.=ç⨟¸ƒ1TŽ£Ã6®~QmúQ"s®‘{bEœ¤OÎ=ºûÒñr[G¯áüÆlC È…y®¬œØ]¼ö[n3òå’‹=ƒßr #`í)¼Ïý"3ÊÈ®åÄé&…h'8ó) Ô†,+‰è(ÈK¢¾ú)ÈÈvš8)ÉÈÅtásE¹}Ø*±8wâ’æ|X–Œa€\KŠù™Áü,’UH7Â"×ZâEçbãb?,F)ý{[iG.ŒË5rœ¨OÎ=ºûÒÓä¶ 9ÆÙ)4Ü“ƒD®ü±#òmÜ€>Âùíÿ1eE¶%‡|+ðxÄ¿™Šy¾k”“%}ã1–] HR(9aû ¬WAd¨bª$jK2²)q;NJ˜]­3åý@‘Wç8Wˆµ¢¸yøS°Kæ\.VqumÑÚn"°o¡%ËÙæi‡´ÊTÁZÞáÈ•`^hÊü3j€¥ï$}rîÑÝ—ž.·Ír:úyA"~×ÁFBøì÷Ýfd¤Ä$)('kÈ?“·ób­äûÞ$'ec€µ=Ê"½4ãbBÉw>! D¢ÛÁ_%Eá\ѼˆW]4á ͳØk ã¤Çôœ…ŠôYªÚ ®ì\9Í`¶Uɯ¸$û¼‹‘ƒU|$ÂCr5g†õí\1x ®ÈbÔhÎ'é“sî¾4ŒÜ¶£Éøušg‰\çi R‚öÈ~Ï©X9‰IN$'1ÉÈr–ò}kr‚ÙÁ8¿ô–<pM~gµø¦'´n ‘p¶9x¥t;Ôç*8#’Â’È™8ëZPkEãVž¨¹h;¸ë§êCŸˆ?„[?Œ9‚)ù©wÅãÚ‡\ˆ‚h›ÏTä­‘z„ö? OÎ=ºûÒ°rÛ…`Ç!Ìð5V)HäÂï:ÆJ)@F"Œ”D;,ô…OÈ®¢å„3ú•«KN8Æ<ìŠð¡O=]gçys-(æüJåSLÄ÷j 4rÕ-ôû+’øÍ ÚI=jœ¨OÎ=ºûÒ)ävÚ´aϱ÷=BD.Xk_½×®¯£%ÅÊÉÖ” ü‹²‚Va\ÇŠ`ý òJd<ö°Ì$×L ö`·°äÊ »ŒÁÉΰ%=­Å%i#¹çÓ°‰9.”XÓ7//#± ûÕÆÓoVr†Öaß"Ï·P–KÒvh'žDäbìªDw ô’¼‰„¼ÚØìßÅ^hßÚnå†ñ¨ŽÚ#‚\ƒ÷ɹGw_:܆Cã#Sȵ +Š]¯²¿'('æÛÎr²ý$!Ý„å$!½DK K¬““DrJsf´ gd.EB\^™‚,éI„/'ìíÎz ÎPWLr1JU‘k%5Ã\ svÑ,«¤œ°kŠÏÅywjÇâ›IrÑîÀD!WÒ¹2±Ì³Wöø‘{äÙóSõɹGw_:µÜ^2f!‰\¸f•ÐzUFvà¹È k')ÈÑ’"Ø5{Ž_ç¬Ô¶ ?ù ¢D°SŽó}a¬™ÊÞPÀ7ÞÇ^ d+ŠïÏŠŸïo+þò)ÙšW¤ß¬kȵV™kbˆ¡óžr¯‚¢9ëHÎ%íXÔvuðõlô±B®æ¸nÏúŸrÁ< б{Ä"×iúäÜ£»/+·—‚Vš‚D®Xl¿h=ßÁžrBÇÑ,ûL È‰ŠŸÎö”“RbBqÎÂÂEu;ž•- ©ä†OÅ£4{úÎix‚[x ®ðoÕÌÁɡ˹s[Ž‚êgˆuyË8{=fFÓÞòˆT%ØËKç&kC.¶ÍcnÅTf\#÷ÄVCSx äÚb9Ñäl- ÒK Ò økçäíèô$–”“I æiÅ,+ñwç(¥;‘S™$`«"ÔH.y–#±©Ù£>h+.%ïiÔˆ\âÉõF¬+‰ïéBržºLg’5°ËíºÖ³®9ÅN΄ û ½OKšq¡…+3ü¹G NÔ'§½CiWáÉíм9ˉ³§´ã$%9á/õ«Ù§^‹bCØLsÃÙñ{䡼m'è“SŽÜ!mBáÉíО=WëUsZkOH>b±§`YJÄ`”ëïXzz®õ³¤?”5”„òH²?¿ñ$ ð?eµðþßy2¤cgñÕ»Jí-G0„â,õkñ@U–fëÍäÙèW*†=G›ZP>°|Q”®ö1f©ö4EdªúÔÇ2 ŠdŸcJÈe½!pw¢ìM»G¹NÒ'§µC[²Ã“Û¡)<r±”Ø’ü¤ò}çè Šµx´—²)ÍDË }åÅ®¢‘ wHƒm˜ ï«e'R’ƒ/%þŠ>zËïÐF/¶%ðÜÇ.ðÃÔØµ–8öl©_xûX!Ï»ü}Ô¾^{Ñ;ä‚\Øhã‚ø¦6ÊyCŒÝ#r Ú'§±µ¦9×p rí”8¿l”“Œ~[?7ßÙ¦bå„v™PÌàD¾òNJÖ åNNâÁÍß÷ª”TK)ßp´¹Džæ²­ø"±··gë’½ÂkðMZhô®HaW©²o viä˜Î[És½ 9ŸIÃÅwÖ¾¨>r%à±0‡7‚[1yœŽÚ#€\'é“¡G«žk 9ë On‡¦ð8€v.‘‘„t‘TÅâˆvjKÙe0òânn=_̼&'[‘“\åç)zJÉZ²÷Dn‰Øc8¢ "zK¢ø–¢|Fôï\¢xz‘Á‡Þí·ã¼f¥xI,”Þ9P­…ÊF,õŒRˆ`ŒKÁ5§9ºUHë;_€W;ªY;¹G r¨O†©¾†8i‹ÃRx®H­Z%$# ŠBPHnÎæ‡QΗ´³·.' O/ÁlYsÚ뛑Û{Âa-%e¥°åXgk ¯-.ÉÚÅ1>c)EhÑqsˆr“©µ±Xv¸]¥ÄÉ[:zxŸ¹Ú´Lu³LY” ½¹æfv”ƒW: óy¹G¹NÒ'CÒª]khÍðävh äCŸOv*‘S–jåªT^CÅGwrRÕM5‹Ê\ä$%ñ)áìÔ‘ ÑKdåž‘+ã²ptu\n×5Gt»WÀÚÌóå›äv1&*jDY5ªUÈì£?/Ýîjçßn¸¶2¬…+e=‘b׌Ü#¹é“Ý®Ú'CŒÐ1üÊÓۡ)<äJ(Ò&JHN1ƒÙWˆsýé,¥˜‡´)Y×ìÁ¾”lHJbÊCÍ+u9é&eMJÖ•Â’Ã{ ùo–çU„Øåâ‚¥žü#"°Õ—­K¡—dÐ? Y9sñºÐ×kIØÅYµ}/ ‡]¸~‡eE™‚䚃®Î.iÍmZéØ=Bȵ·OŽß%|ì½fÔš"% Oáqæ\IEJxW gøÃ,Y[Ê*“’œà÷}U[ƒ_îE.ö>äÚfÎcÁZ’rí‘k­b šöyŽA\ÊYÁ./=`—è;´Ò/;² ²vE´†±«Tq$¹èÝ=L#äâýÐ6/®X4DÞa=jríí“qpkήSÌÀ“ۡ)<är¶_Œ¾©sŽÎ%+SLr²¤¸›[‰F•‚Œ ¦C$»lU‰AWÌD/ጮÕÕö²¢‰”jÆ¥2ûnñ:ÞCçâÎ#F±o×VöZëH6Û`E¬x|¡¹˽ÎÉ•*äZ{³.|{·¹¤ü±GuKȵˆ…Ú]ÍÖ­‘{D´ÅÎ> ¹,2µ¡Öip+D¹šÂãD¹É$‹ K‰³¡DžŒ`&¿”Ö±úÉɆ$%&‹°/#+ù¶Wײ|ÓV–M ·4r-h‘uF‡\ŠŒW. ØEÈåG(®a—Ú”‹Ÿ—?çbäZ޹9׺¹’9èŠøÉGdÛJÆîB®Î>·ÚQëT¸¢ÜMáq€" ò*;¯\¡w#~ßQ1J“”~Ãhçxõ‘^ÍÂo|êIˆ™?Q^ )ÙNé‡ë†ïÿN¡–‹¹â‹× šW9ú ͺØ~û‚ ryv¯JöE·³e+új!;cð’¨"W»›×´¿óa»˜6;¹ Ðc¥!fc÷yEtôɸ¸5~¤—ðävh ¹P#YÊjûZ¼#ú¢g‰Lm` W±@J<9Y4Ê ÚW¶´Ç7ÕbgP°¥‹¿§ððj^³le5äÂßX'äì¬/–”YPbwrq> fôr¾–ˆ¥Ø.ç%QµhµyEÄâ1‡œ°9Ù¹·²±{„|è;údlä»Â“Û¡)<@zþ®¯)o¯Z¡e ùd¸,!^0~ÝœD°ß¥YN ‰i‡Ú¢’«öB.žgE÷ÔͰªÈå":£½kMqQ]æš*r•ìªx|©(/[Ñ]W´Ò“g„C®¥ø¡:_Tö£g/úH«¤8óŒZ9d!µGT¬ˆ–>¹Ü:%š…'·CSx0Èå¾ë¥ZmŸË×½IYÒ—½€q"%äñ¸_Nv›À®^) ɶªK[Üxv­ØC­æ9—=SKɸUÕýØÅEÍbó8Æ.UbAQ»¶vâ³î¼S“TEN!4Ĉ°~¨kð„ÈAKÌa¶5r¨ø\­}rnä:í,,<¹šÂã ×Zü„6 %[ÉônådE^B\JÖJÄã±[N¬n‚¹pǵ’š%¸ÉB¿®ØäN˜6Ú¹´…*•]A.wFÝB_jÕ×µO<[½X ¬{E4åØÐØ•{ØÅs¯5e¿vYÍÖdÛÊ…Œ\.“#×v[7!×rì‘hÎ}Òˆ]^Ÿðq×']#1ªršÂ“Û¡)<äÚˆ6â<…Reöu‘-gvfiñä¤p1ƒaOߊVÙ¶"'EÃ÷Ý×õ¾›xFz{äÈ>_×Y?të0?’ër‰=¸T+› r¹Ìf®¬Ud/kwڢΠÄèÅ3¯B°+Uv.‰CH°Ò¯ Ç¢ó5µGç\µ>é˜uIŸn©iuŸ.·B”Û¡)<äÚ6x8¦°êŽ’Ò&'$+*/ªÛe¬ִåµÅŠM%ÛzRRõ™×Ñ:9z ¯.&JgÔš¢ËöÁœ«Š]UäjÊ´¹V:~„®R¡Ö²¹p÷ĸ1ó®5aë‰#÷HÝÎÕÜ'mØ¥û„´EâyÓˆóÑi?rM9»Æ ð8`k§¤Äùåð¿]¹ê’«›DžœpÌàR¼œxÇILúÊ ¼Z¯+Õ>EöBO#‡]Õ(éUúÜÓ#}ÿ‰œ°«Š\;/3jÙ¹ÖäQŸbV3Á®šm-ȵ ¹ìê¢Í‘BdÁÐ -ó#÷HÝ+Âõ‰ Ô¦Q_ÜÓ'ÕÑVE¦ËÀ­åvh Ïž+a/!»ÖŽÿÖW®´-Eçêòã×­ÄsMzÊNö-æžÇváE àìÒ+‰HšK è•Ò]œt—çñ©j»¯æ¬!ìiÔèÕ¹6½+wyͽVÊÆåbúÈ‘¾h9Ñڻоµ»G rµô‰B(è“ìêì=Òšq©¹ÆÒÓۡ)<äŠ=)qëí+ñòåD¯_é3y°®¤¢AÑ>¹Hüèq#¢Òª¡¸HÊîZƯ†u0/OlUƒ¬æ¹xÖ…³B/ãv±­« ¹ÐÒU"¥„\%ZæÇîƒ\-}"øD}Ò€\•>cÒ'<ÊšPëRl\–“ۡ)<äJIFä„ÅIH»œ¸ìÍï<§È@çÈšs4>Â/ÎVÊs0÷ůfjeÇcÞèU¡ã §‚\ÎîUÍ ødm±1ãF&è«(õÎU!—X¤Ö‚\6‡Æ–ËØ=b«µO y}Ò€]ªOäõ‰¥vDšër(<äÊHJ ú»¾R—“-ØR\&çTäÄ´ï`–¬ X‚1~(–­È K ïs‘õ=–hX|—Y‹"˜r”|è9âµÇWíùO¶ÐrU3np†Fô’ØyØUE.ääì\ X_LŒ~8'-1»Gž=¯ö  OcŸ4 —×'tŒú¤ .ES´žÜMáq‹¿îV>PN´dtËIÖ('ø¥_Q¦–“­”*z%z©lx·Â®¬‚[;ñöª#®#V×"Ÿì¡ËeÜÐØÅ±R×S°Š\ÈÍ5d,[þÛ˜§%ŽØ#¹TŸ"µôIv©>!m‘ú¤ }º‘kÜùWxr;4…Ç r$#Z.JŒWR´¹‚Ûcâ´W\VÒ ÊIˆ‹S€`HZjñ»Rgïvsµ6‰ë“+‰‘êÇGM*º!z¦ªÄ9ç ‚8âC_6¢–Ί û® n5Å6ÞÐjc–%0ãÒÞ]9Íy0ÒM<]Afkœ]Å^Ä­tì1È%}¢ð¨¥OËë°ŠQŸ;ãšv\MáqÀ [ÙšR—“Rä„õ''uIáõ¬µB'»Öv9äÂYëˆZ£éB®êî ô?ukó±úÿN ¸óºa÷OQ)ˆ\©DŒ¨"—Ë+ÁÈÅóËMÅKÂG®œ°+!ïçÿ0jr™>Ñ8ÒÕ' ØÕÒ'ÇëŠãRxr;4…ǃ\,#K²ªTåd³GNª…׳Ès[é%(ÇkÂ.9ÔÉIâYaD¿Tȵ héëf{ö.’zÚ\#yæ#5ëZËŽk[ËJágçjÆ­5{Õãû¸Õ;ñ]š©K ‘¹JðŸgäB/Óâlåj'õH=bËí}}Ò8ëjì“Ë·Í#…'·CSx0ÈUxëWu9Ù‚M¦º"ß.)™h'8³ªÎ¹Ö*f(c—Z¥WÖ0>ÇÞGiÅ·kUñ D[‹Ÿ“†ñk^‰ð•rž ŠÏ¥wX×)ÃX™Ë&[Ç­•øGhËœ± Ÿ—{¥„\¸ª˜ÉL+WúájìyöÜ›mõè“ì’>¿V¬96º.äšö-žƒÂã€A®I ¯bÕý·ò_Ql''õ±89cƒ‹ÇÎ>ÜŒ]5ô¢U¹MíøVEÉ)<är±<µ®²Vø¥c航dÅ7ÈåGãÊ+»!ÙV¦3ÐwáVªü8о͙±W4ç*¹rA.ç¿ Öˆ=â«oŸìC.ú{Õië²p+D¹šÂã€A.gíÝ''Eƒ¤Ôe%9aíÄí:ÁH \ÁÊRiÙQ¾з§”ºðÊ*ÓûXÜü‹WýhЙä[tqç«%Mq“¹\ƒ:.>kвœ{«Èµ6HÒH¬\)¬*&âÁ6­‘{„‘ë>iÀ.êA®ÂþÞ4æÚ‘ë\Zcxr;4…ǃ\ìÙ¸¦/}ENÈÛ{MZL]Nª%¡ÈPì³½¢Ø/…øC®DBJÙ ìVYFh•^,ôŒ\nnÅù,–äQ…¥Š\þÜh-»TÈW [î#eÝg‹¯WFâ7¿jD®%ùD gž1¥å ý$Öh£^¢®˜(?ˆ%­nÆî‘gÏï“ä’BØ'—í9ï(<¹šÂã€A®-IË>9ñ}¹7â¹Ý&'¬¸¸ É/¡åDKK³G²ºÈÚbr±¯¤->r5gžuó®Ø ¯GÎißJ¤â²7X$3®6äB'În”‹/ABø»ÿD.ÔDJs®5ñ}„¡y–é@®ƒû¤»4r.LÈ …ÇÐù¿Rkñ(E;°Êl*:Œ½£nÖº Û„í ‹õ;ÁíÖÚ‹.òˆÚò¿0ãʹÜ~”…²Ùónǵì},d>¶TZä ÐKâPQt*_³¬eòvûðÎp¾VãfîazÚÚ—Å­YèK²ÏCÚŒ$"o—½g„aÔ°=bëˆ>i@.èù½h²s]ž¦h)<¹šÂãh‹*l9áïøö×5Ë gÇš{2Âö`¥ »¼Žû⤤.'úËÊN!Wá!×¢†\…ºbI–0mÇ/(.+F Ú¨üM–±\©#†ùk¹² nÍie±„X© Åq^Áœ+¯yF.k¡×»©OÚ#„[KšsÕ'Øu$rMþ\ç¥ð8 È¥½„V¢ ß£/'žnBÑ tÉ*ÑUªÈU=¿®}Ìe5dçâ²VüµF‡gÚþå"¸, ¦4kœ+/Û Ó'«EG «ZÒܾ>‡Z1GŽ@Ö›+ëºåoû¬¹RÉõêö'ŽÒ#vÖeë¨>i™uQD Ë¡ú^ÄKÄ­åvh „\ÚÃQKC›œ¸¬ ›Zl¨}ÈUT¥¤ðV KeŸ×qXœÈq[Xgc¼òÿZŠ~I(Ñ©´ÎÙdÙ/=\tk˜kÚq­w‰'äåÖEKx«¢Dð>k\ÎÒ¥­í#ô¢‡][<®O°«¿ˆµïå¶fä:7n…(·CSx µÅ-Å]a‰`y@KqUNXVÖp´Š£«pÂ-ÌàåÛ]V•R‘ñëdÏÎT´FD™•Øœ_\tƒ…ÄŸÑQ2ù °Æ WæÕ¸Î´…‹Öêk™ùúç’êåèÕ]«+%T·®ˆ»¬ÙJÏ~ëñzÄ!èŽ÷IrÁL ~«ùз͸ÎOáÉíÐÈBÏë{KÊ9qEï=ῌLÕNGªŠ½ˆ‹š”T4/¢D¢Öï B¬µ²ZáO*_F¯¼ýâê9äÂø,‡]¬až¶XÕ?9º ÇEõ÷h®áí3Ê÷ùR‰á<#8ªÍˆ=¢‘ ÐëÀ>iÀ.zÛ¹.¿Â“Û¡)<8ä²ÚÈŠ/'ëF9ÑûSJ©Á­kiIYj%b;vWä*ON!šŠ²K,UD®„æ^ ˆ9Œ»}6Þúã×RéoI½xÆ•PDP´ŸáªãÆß/äåÁA ½¯jäbÿ‡Z+XS´3M;ãÂù{rqÔæ˜üQ]d›Q{ÄßýèÕ»O‹#£ný(7—‹[!ÊíÐ|äIq»âXÿðåÄIî æ]¿,'UdÊ•”@ã=Èåü‰`àcÆ^AäÚf»rqf—ß‚±Ë×sÔî¹Ðnó-•—~.y­µW„ÿ¥`Wža¾ë]º«ø¨äÅ…3xu ±¹8l^G®1zäÙsÛ'vÐ' Ø%}²¹.·B”Û¡)<ˆ½ŽD K)ß~öd?£œbâ-ȲŒ’y‘¢,-h·Þ|"5†q~ŽØÉ>öù>î¥x­¿ô:"=ͼ¥.нøª•É…ìÎÁ:-rÅ›5 ÔíÔæ|Ö;zƆðСGqÎ#ç0Ûâì`KAÖså;?—ìd¼÷§ $¹G rQŸrÐ'M³.îí­u¹¸¢ÜMáq ¹J¯¬ÅVìd¨ôì5¼s…æ I5ÊÏ8v”¿qkÞ\+‘’¹ÒcB¯…\5?Ñ¢¢)ºÈ Ù½<$”(ìöüRẺœg½‡\ 5Ûb»iœuí0C#³f]ñR(<¹šÂã@rù™ßWÞ¹­¬w±¤äâEÙ-*ƒhz;±» ÆÈgSò‚\È·}åI‰¶paÑÙÔÏÏèE²÷bäÙÙcí‰4ÈÅØ–Òޢ꜋ýíygõBf\ø”HPu.±PWΖD{u\F®Åž÷‘«žÛçÄ=b«¡O<ͱ³Ošf]ðïÚùk]2n…(·CSxh@.Šãlx­]V»VdW©GN÷£®°”ÐÉÈ3έ¥q‹÷šèLAlc×y¯KµÜåêE¼w»Ùk¡ÄüpκÈÃÞYé•méE¤‘ª `¸®È{rœa’'ü´8äXL3l‰U„›’¬ë£öˆ }¢koŸÔ‘ «hG®Ë®ðävh ½kíIŠ¿N_ȾaÎjZÛ,Ökü€ŸÑTïùÝRž§ëq,½WÇÏÏè0‹´Á%¯ªÏ‚A.'‘©ZcÜʪ¢ÎVïb‚¡®h±QǵÀœ?Ù¸@ #är9_n¡m>§?mYÉNÜ#°JÓÐ'‚[{û¤¹–¼~xÙ¸¢ÜMáq ‡¶¸òdÉåÍâùXy$¥°sx©dÅE>à;–àqä¢à%)瑯Æ*pqUp×¢ó¸ò£¿ûÈûÅŲ§â¯û˘òšë³Lg¤-Å3µêQpìfÀBö–ߤœ#vš"XDcõ*]ýçqnÄ®#׉{"zwö‰Ì¿Zûä0ä:÷¨¯Rxr;4…ÇúR¤ÉyikO¢X"µèüõ̦<#X€”nU&y-%zõÝÅVÁØ\âqÕ‰\‘*Œ\:±ÊîÚcmh ³.OQÊeŸßH$ Œ±ãä:v:ë@;² [»0Í~8.io.ªV5ÞŒõ=&\ñ±ËáVF³¢9G±Â]{„6èYæk޼ÇÛÕë!£D,hW ïlB+î9,ˆOh3g{#c’ó˵G$çæ}‚Ú`µO&ä •Âãi‹N;q¶»™¬’ù^C Êx(ráO΂ªâQÁW>á<òbeOeÎÃ1± /^`U{Sq r­ÅÃÊÍ…È›I¼Ç‰z¸íhÇ–2ñ‡Ú<=sz!.f¼š(ktsÁ¢%aJN\‹)® ÓuØQ{„ì\Gõ‰Ì¿ OÂÄ­åvh jm‘÷’ð ë ¬_ñ7žíUœ£¹n TØ'sA»^Ôþ`°­¬iõÊ¢…Þá\dÎÔŬñc êýÖ1E'Å(ð²ÛbÁ¯Å>í"ñÍe¾”§…磱“lÛ¥—±›½Ã Îx²£ˆð.ÒCAïÍ6tg¯É:îÇA±GÀ+âè>!ä¢>™+L fÔJþQŠªÂEb£Ía?ªÉIÞ[NXV–`ñáÜÎXœÕ~-È+RâÇ•wž[µ‹™£”ºH¹–4ß¹ʆæ(KÛúŽÁÌl8 ŸF0—Ðy´®%¢•Ê|(Ö(½ûÇùváœ+ìr~#öxE<¡O» OBÄ­åvh 0ãØé‡üådw!Ñxw\¡æÝr²’9¯û§¤+%$»€䋹ƒ¨éÖª²•&:†ŽÐÀûY“äØœ‰Q#æhMdÏú†.ÔŒƒQã[YìJ$Ž…Îäµ&'?kwAÈÅÖ§‡\l¥ç¢g] ù¢òúâ&)ÇîÃAú$T]1D¹šÂãï¶uEyQ£µ‡íÏXÝòHªæ<­fà*iÖa%+ªŒÁî|¸éû.»¤]ôÑ…ÄÂÒä¢Þ¬+¾õ½æGkÊ6'ÏЂڟ“¦›¹,<8ó²v¯By¯ºÂGWì// ·B”Û¡)< r©Õ5öHÁÒSŠ?FRçÌÊΦ‚Ò±ON8sDäÊP>1S!Dtqüòné½:¹Öàéå#¯ö• ³Æûf¼Ú§#¯M{pŸC+IÌE åÕ]ÈåÇ-]xs®˜xÀþX#÷HäêÙ'r…Jáq@|‰ØÀ™b ´lH|Ï„ä„ugÑ¿e{‘+öJDYX/‰I3ÙHì˜l/r5aך5F•í0—îG8eä6ö<¬Ñ’•´(¯”e¥(?‹äZ)ÔZ÷Z]Œeÿ"Y›ÆîâÀ@}n…(·CSx€,¡:>VA³Šûˆ'¡ù [vdAÙ/'%YcP£i“·æŸƒ-‰ãj¹8ÍØå#̼h£gmÄgý71ôøT¹ÅÝ86BéVyˆbDä-X¼Èßkjö…HæÍ¸›2\,e¾Ux»#Ú”±­mìé@®#ûdB®Ð(<„×â¡iâÀИæ\áQx¯ÅCÓÄ1ë²±káq ¼M†å@ˆVúi „ÇðZ<4M¹.»¦1ÂkñÐ4q`HtãÖ„\—Jáq ¼MÆC.}ÍpÏ|:Mc <„×â¡iâÀpè7㺼Ø4Âã@x-š&Œ‡\Mù‡zöSháq ¼M†âÀ~Ür8Õ|ô\4ð8^‹‡¦‰c"—F©ËA¯i „ÇðZ<4M†MÕ\þ]C´áXšÆ@x¯ÅCÓÄq‘«ŽQrŸÂã@x-š& Áf|ê‡\ÕzžÞšCiáq ¼MÆF®vl:—æ8ð8^‹‡¦‰Oç@6Š\ç®i „ÇðZ<4Mx*Ú± m]íȶ¿æ§µ¬/Mc <„×â¡iâÀðÈåÎ컢O½Ok]šÆ@x¯ÅCÓÄÓ#×qØuøíXšÆ@x¯ÅCÓħp ]SijüïÓf]§F¯i „ÇðZ<4M8žû0ÉŠ­ëôè5ð8^‹‡¦‰Çr`? \XÏ„\§¥ð8^‹‡¦‰Ãj‹þYí!ÿì:­½~áq ¼MŽã@ŸyTÇž‚\]5?•¦1ÂkñÐ4qàô›Eµï¯~v =ÿšÆ@x¯ÅCÓÄÃ9ÐWû›+ áµxhš8p(úû—j_ú¾÷ÚŠ!háq ¼M޵síÇ =7ë×!Ï?önŸ¦1ÂkñÐ4qà0‚Auä»&mqh áµxhš8p›;¹ž>_«Ò4Âã@x-š&ôçÀ¡øÓœañiØ5šÆ@x¯ÅCÓÄ~8fÎ4$r µ,Mc <„×â¡iâ@‡;mÈu v·¦1"ÂkñÐ4q`?Ž/ ‰\§¤i „ÇðZ<4M8ÔŸëpä:»ÆAµi „ÇðZ<4M8ÌŸë¹’\ÇÔ4!×8ÂkñÐ4q ›OÑòê‘­kB®q(< ÙâúH<ÖÊgÏÏÑÆóÚu|êÇãÖþw¼ž„'·CSx¹žÚê ¹ÚÇÀ±Qjú¾_[}cs(<¹šÂã@ÈÈ5L«™a¶~ê;ú½Ã!Ç›j<‡Â“Û¡)<„‰\õ¹Îßái4ru½WûççOxr;4…ÇÐk¸Ö25s Ä79–Ú8Pý»û ö½Só[_w“ۡ)<„ƒ\õӧnûtxïs85qà°•À>ïÓvÍ%p&<¹šÂã@È5\ ›hÂ|«C¨ÎCp«ÿ»LÈu¹.¹†k_3õÛµÞ{õ§ã8ÀGŸþüóó&<¹šÂãÀe#×pmk§ãíÓ—ÿný¨Ï¾ÅqiŒ·ÖžÜMáqàr‘k¸vuÓÓö¾\þûí'ŸížìcÒXÜMáqà2‘k¸6í§§î7á»Is ¯-ê´4Ö›3…'·CSx¸<ä®=ýhˆˆ !¼g;9ì󯋯yoGáÉíÐ. ¹†kK*Û`ïÚLçZ£¸΄'·CSx¸$ä®%‡Ð±óm›Èíj»â©ïzéœ On‡¦ð8p9È5\;£§p Ä÷­r`ßîé§õîeó%<¹šÂãÀ¥ ×p­8”žÆ߸J–}vI?¥/›+áÉíÐ.¹†kÃáôT„øÎ>Ù8?õ£§hãå½;Rxr;4…Çó#×pÏ?ŽžÎ0ßÛQÓîŸÓ´ïÒÞœ)<¹šÂãÀ¹‘k¸§KCp Ì7G²Qaý¿/§mcQxr;4…Çó"×pÏ>ž†â@ˆïŽö-íÏu)í—“ۡ)<œ¹†{òSh8„÷öØ ^[¼Œ6ƒÂ“Û¡)<œ ¹†{êSé×ËnFâ?o[ÎKáÉíÐÎmç:ÖÊ!3hƒáøþBœ»禉áqà<Èu1cðÎa‘«ÿ› Ç÷ãȵ"¼Q;4Mç@®C®== \}ßí©í~é„7j‡¦‰áq`|ä:äÚ1dß_Y¢Ec¶~ oÔMÂãÀØÈuȵãÈ}Ý›éé­÷ žJáÚ¡iâ@x¹¹v,™oö jËÆ~‹§Px£vhš8BC®áZË4d¾ÅCjþMŽ¥ðFíÐ4q <Œ‰\‡\;ž¬·sà©-<ÇÛCáÚ¡iâ@x¹¹vL92Sì!÷Ÿî¥ðFíÐ4q <Œ…\‡\;®”™)ö{Oõ>‡Sx£vhš8ÆA®C®[ƇÌ6xȽ§x—ã(¼Q;4M—Ž\õ®†ÌqȽC¿ÇñÞ¨š&„Ç1ëkÇ—î~˜ëk¦‰áqà’‘k¸–uQÛâ ¹.&„ÇÓ#×!מC²áÀ„\_'M—‹\ÇÓa­~Çu¿·} §‡¥ðFíÐ4q <œ¹¹Vß5,rt=ÿ0ä:ÖÓá)m=5…7j‡¦‰áqà´Èuȵþ]‡ Éñ8`ï<¹ŽótªÅ§ ðFíÐ4q <\rí;?4Œƒ\õ»žÖê!)¼Q;4M§D®C®­Þs’<0ÃóaÏ;¦5÷|( oÔMÂãÀe!×¾ó§~æÀaO<¦=÷} oÔMÂãÀéëkë÷ôǧÒa1Q»[xÈ;Õþ§Sx£vhš8. ¹ö?ܵûÚ}Ïšë2iâ@x8rrmÓcáVrýúhâ@x¹†k/Rú>ýð¶MÈu‰4q <\ rí;:y?,šs÷uûŸ6!×%ÒÄð8pä:äÚæëÛãêWãáþ\‡¼ÇSx4…7j‡¦‰áq $ä*„}rõ]=<ìÙîú>׎CáÚ¡iâ@x¸äÚwÞ]õTÌjzB;rõ³ÁOÈ>M§@®C®¹ŽmïS‘ëP pB®Ë£‰áqàüȵ^j8Ôrõu!W¿ÕÃCÛ1!×¥ÑÄð8r5}*n!u#W?ü„\aÓÄð80/MÈu äj>:”ô·í¸Þ×–¦öö{â„\ÇÞ[=êÿÍUê+°T#ølÛUûÛÜuÏ15ŽGr \ÍGñLmºp­í*Ö»fWÃ"^Ý÷ÚÓS8ÈåoB¦ê¿þÙ6\¹ÚÛ}\cÑ„\‡\Û/ò`óÑ.äêóä ¹…„\]3*>ÊÿWÏ<¹ªçúÏçªw·½×yiB®C®íƒ\ÍGùÌ¡¨U¯E#W—^8!×át*[U32¹³ÍøÐ…=‡#WWýûžÜþfç£ ¹¹v?r5ugŽÁ­ê¹ºfW}Z|Èóû_{j¹êø¡e¹ûìÐ5»{ûh‹ýf\ûî»Tìšk¨kA®Ã[;!—¥iÎu(rí«½ûÉíov>šk¨k»‘«úw35ß[%¹ºô ¹£Ë¶sŠ\‡èƒ‡¡Þ%Я¹¹öxäªþ½³º¯¯"Wûìj›»Îí©)$ä:~m± [C®¶ãÇÜ{)4!Wÿk÷#WóÑ&ä:dß³eru=½»æî'{í©)äzš?W;²ôåÀS°ç’qkB®á®í‡súâVýÚþȵ¯Õrùt™>ôMgûsà’Ñç)4!×P×\mÖvÅ„\áÚ¡iâ@x¹ÜoZkl«Ó¿Îå}‹}Ú7!××IÂãÀׄ\ü³ŸŸ˜F®z{. YNMáÚ¡iÚqÞ¸\äêsÔ÷eàŸu±:ÛÒwLÈõë±s=ÕB¿ÿ¹ûüÐ.•&äêÚÑ‹úº ¾ÖG.¾gB®_ rµ{TX<Ý×}Ÿ‡ì%cׄ\C];r5Ϲôµöß ¹ÂA®§xEtÝ‹ÈÕ¯ m´ßCöð:Ç£ ¹†ºöxäâëÈÕ\kx}64…ƒ\Ç{¢vï~ìF®¦ÙX}NÖ…MÝ­¾ O .µÅC"—¶qÕë¼TŒG!!×q»öáà¾9×þ]ß]Ø´ïïK ð¤ ¼wS¹|ËV}m8œÂB®cv\Ÿ¹ºž·õ.“‚ðZ<4M¹ºõ®~ZÙq5w·p¿«Ÿ…­þw­÷(<)¯ÅÝTŸsuϸ¾>NÓœ«…¾ǺgUÓœë4V‹·sU«×NAa!×9ì\Õ¿A®ÉÎuúÚ×'äÚO!!×9Ö«WkÞ¯ãNk‹ÃÓׇ\uM±ª7Nþ\>…ƒ\§õçêg_;î­&®¡ékF®êµr5S8Èõ´{Ûg>ýãsß²§Ü{zšk¨k‡Ú·Ø<ÓwOÈõkA.=¯òŸërqkB®á®mC.ÿ¸ï%Ï?ÛW}qB.¤ðFíÐ4q <|MÈÕí Ñ4³Ç§ø\áÚ¡iâ@x¹Ú´Äfm±z®¹Úfmr}4q <\.r5]ѹú<ÛG®ú}rýºhâ@x¹ôñæyÕþšõ}SîŸðFíÐ4q <|YËšõÀ¶û}šò-†7j‡¦‰áqàkÎqí®ìºb¨×r…KÂã@˜ÈÕŒH‡·öäÚ÷ŒÃZ0!×%ÑÄð8pNäÚ‡‡"סÚjrµ×5!××KÂãÀe#W·OV³Ø÷ÙMÈÕ^ÏþÚ'ä —&„ÇKG®&/w¦ ¹úÖ[G®®:öÕÜ5ÝÕ}¯==…7j‡¦‰áq`häê+‘ýàXäªÞÝuEäjóãÞ}B®K£‰áqàò‘«Ë â©-¶Äh¯»Ï'ä ™&„Ç«Û â©­æÝ?OA®ÃÚ2êCáÚ¡iâ@x¹úÉäpÈõT `m±­Ö>Ïš+lš8Î\}½Ý›>½ìÝÈÕç9‡¶bB®K£‰áqàüȵ ôUíÈu à}]ÈÕï)‡µáøöžŠÂµCÓÄð8ðõ ×ahàîy*rúü ¹.&„ÇS ×áÞ ûÎóUûkÿóë×¶#W¿šû=·~}ŸkÇ¡ðFíÐ4q <„„\ÇÐþÚÚ««¾þïñEáÚ¡iâ@x¸ äÚ‡§”÷fLÈõk¢‰áqà4ȵ_.E®á%¾‰}Ÿ~xÛ&äºDš8.¹öaÂéЫÊCž|h»NõO£ðFíÐ4q <„‰\CʽÏCž{x«&äºLš8N…\û$ópT8z9öÌcZ4!×eÒÄð8p:äê–Ícpáp¤èCm;®»ŸxL{†oû0Þ¨š&„ÇËB®}Èp8Zì§¶×Ç´o(îŒKáÚ¡iâ@x8%ræêßÓKNµãú˜Ö§µzH oÔMÂãÀå!W¿}>‡¡FW G®cÚðôöžŽÂµCÓÄð8pZäêÅætè¦ÃÛx(r÷ôÃ[:…7j‡¦‰áqà‘ëŠûêÙÿ´Ã«ßóžÂ™ñ)¼Q;4M§F®¾ñ·Î'ׇp`B®¯“&„ÇKE®ñ$»?Žmóyßo?…7j‡¦‰áqàôÈÕ7þÖ¹¤»/Žoï„\—NÂãÀe#×òÝÇ·ö|o֗µCÓÄð80r=-þÖpík¦>xJ['äº|š8ÆA®C¢ØŒ-ãû8ð´–žë­¡ðFíÐ4q <Œ…\‡Æ‚OÊ»9ð´vžë£ðFíÐ4q <„\§”ôv<µçyŸÃ)¼Q;4Mã!×áQlÆ‘ö6<µ}çx—ã(¼Q;4Mc"×áQlÆøÃ¢9÷~C¿ÇñÞ¨š&„Çq‘ë˜(6§–úâ9÷m׸ïð4 oÔMÂãÀØÈuL›ÓʽæÀP­÷ öѾç ?Æ¿÷it9rÛotœV  ñ‘ëi± šêz!†lÍX-ïOÝOn 8Œ{ïSéRä–ÇE÷øèwÕat)èO¡#×SQ`øX§osó{¸:Ýü6µõãYW¯×âî«Æóhú«Þ¾f.µÅç÷ì{¿¦whâOÓS\\Üê;6=±ù7ÄÜ]#µÕÒT‡¾§~Eûïxýþ‘ÒLrõ£¡‘ËõÝám¹NÓÚýoã~ê1ìÏcÚÎò¬³zmý ÕyQµ¶*ZuÝÝ}os;ü7¨×ê#Rý÷¶:5šÚRGïêoúßæŸîwýoó±¶«ëW 5’&äº,êÓ¶ ¹ö#·wr5Ëu›d·ßëjh’äæw階\ÍÏnÿÍŸ5ÕÏVù¨ÛY½Ë¯¿íÿèSÇÓ„\ç‘ܧÐVžs½ÿi‘«Š@uôášÛf-MÇÛïmz³îwiGÒ¶{ýsÎÖÙÖ–*žTëB®j-Uww5ÕP¿§ýŽãiB®sÉîñ4Îûö¾Ü¸ýDÓÙýv®¦úšŸX–wõ¯¶{õ}u×ß ŽMoÐtÿrØ]­§úì¦gŠ\]s¦]…šß¨zþé£iB®Ci¸§KÃpà2ß¼û)þœ«Ï—Ð_Žú½Ý¾3zÎÕU[÷œ«Ž/M}|#¾‰&äºL î¢!8p©ïýTäj×Ý.ž†\z¾t8rùzÜ„\ãÓù‘ëÜ}ùt„øÖšš9Ч•Oy‹§rà)<¬¾{Et_¯5ï¶íêåKëwMr…'ÅOã@˜ïìSx£vhš8.¹Î)ÇOá@˜o\¥ðFíÐ4q <\ rO–ç@ˆoÛDáÚ¡iâ@x¸$ä:4Ëßµ™ÂµCÓÄð8pYÈuy>†a¾i ï‹;T}cQß,*Ãc¸H |;×äY^÷lÚï»ÞÜÿïzk›ùåõ߭ζ§éëýHGúLõIþ]o¥[â×Õ>ëjoõ©iB®!i¸–uQ\úÛÕ¿ägêg|äÒ5øm¬ÖU?Þ5Ûª^Õ4ßhÃ˶š›žÌínosý.\>þµ¿ãþë\ïzzó»=kh®um4dŽëó¾Yrùϫ˅–Û&ùk—ø¦3Õw«Ë§»¦?rùµ¶#W½ÍçÛ°û7mn¹¾žŸkxºtä:ŒkÚÏPÞªYZšåWKx5ÆKóÌ¡ Gô_Ýó æö8é¬>Ñ¿²Ê­ús«w5×ÐŒ´UìÖ-nººë­Û¸} rÕë:MÈŠ”;2Sìyß©.ÃMó÷VNnýy ÿÛ4q­¯^íK~“šÚ㮫ž­¢ˆÿÍÏÕï­¯óïh~SÎ¥ïhººÚæêsª­òyæs¨Î-õÙSÒ„\§¤áZªiÈ|‹ç}›¦/}Ÿ«ûÌ:û×{ù³Œ}Ïî_cÛ=mÇ›"”õ{Òéišs5SHÈu‰¯s ¼÷hÓAúÜÕ¹šê|Ú{œ ¹½«Š\‡c×éðeB®f ¹†–ü!³–£ýõv÷“=wM?ÌÓHQWk›ÏµÏ©øúÃ8\­Ø÷ÇšuArMOoõYËÆmùPÞ¨š&„ÇБë)H€÷ ™Aã´í=…7j‡¦‰áqàëA®&êÓ¶ ¹ÂµCÓÄð8^‹‡¦‰&„ÇðZ<4M˜80q <„×â¡iâÀĉáq ¼M&Láµxhš80q`â@x¯ÅCÓĉÂã@x-š&L˜8ÂkñÐ4q`âÀÄð8^‹‡¦‰&„ÇðZ<4M˜80q <„×â¡iâÀĉáq ¼M&Láµxhš80q`â@x¯ÅCÓĉÂã@x-š&L˜8ÂkñÐ4q`âÀÄð8^‹‡¦‰&„ÇðZ<4M˜80q <„×â¡iâÀĉáq ¼M&Láµxhš80q`â@x¯ÅCÓĉÂã@x-š&L˜8ÂkñÐ4q`âÀÄð8^‹‡¦‰&„ÇðZ<4M˜80q <„×â¡iâÀĉáq ¼M&Láµxhš80q`â@x¯ÅCÓĉÂã@x-š&L˜8ÂkñÐ4q`âÀÄð8^‹‡¦‰&„ÇðZ<4M˜80q <„×â¡iâÀĉáq ¼M&Láµxhš80q`â@x¯ÅCÓĉÂã@x-š&L˜8ÂkñÐ4q`âÀÄð8^‹‡¦‰&„ÇðZ<4M˜80q <„×â¡iâÀĉáq ¼M&Láµxhš80q`â@x¯ÅCÓĉÂã@x-š&L˜8ÂkñÐ4q`âÀÄð8^‹‡¦‰&„ÇðZ<4M˜80q <„×â¡iâÀĉáq ¼M&Láµxhš80q`â@x¯ÅCÓĉÂã@x-š&L˜8ÂkñÐ4q`âÀÄð8^‹‡¦‰&„ÇðZ<4M˜80q <„×â¡iâÀĉáq ¼M&Láµxhš80q`â@x¯ÅCÓĉÂã@x-š&L˜8ÂkñÐ4q`âÀÄð8^‹‡¦‰&„ÇðZ<4M˜80q <„×â¡iâÀĉáq ¼M&Láµxhš80q`â@x¯ÅCÓĉÂã@x-š&L˜8ÂkñÐ4q`âÀÄð8ðìù6®”È”ùv¾ÙAÙšb©„²6e%¥0eiÊJnJfJ %1%–™2ßÌË”­)¶:¤µ)+)…)K( SrS2(©)‰)±”È”¹-ë)[S y¶ºµ¥•””%”…)¹)”Ô”äÙóu²Ž¥D¦ÌmYíLÙš‚/kg+C*¤,MY˜’CÉLIMI Ä¦DRæ«y±3e Å2Ͼ,4ªr´4eaJ%3%5%›I™óåΔ-ÛÈ<û²¶i…K (¹)™))”di8°ŒM‰¤Ì—óÅÊÖ۹ЖyöU…[!RnJfJ %1%†Q™Û’ïLÙšƒÅv®í d]N¯›Cmu¹¥ JjJbJ %¢2·%Û™²5 Û¹ÐYA^Ø6ªCJMI ÄÏžgq™2ç’îLÙB±ÃÙ?.¶smg¤K)ö…¡¶ÂÔR%6%2eÎ%Ù™²…bÅÃç5;Xlç.¥í C±BK±)”9–xÅ ®4 ;íàƒÁ/©`‡Xš—¡y¶ºØRôìy™2Çí X(°¢ ¢fƒ†²zn¸ØîµÝ ´/ „ê"Ks.ó)-P@t­ A¡,‹í\ì Ë<û²Ø8[Õ„\rMÈ5!ׄ\rMÈ5!ׄ\rMÈ5!ׄ\rMÈ5!ׄ\rMÈ5!ׄ\rMÈõkF.8¼Ær,ríV®\rðç]ȵË]é\;« ¹ö#×ÖÒfB® ¹Nƒ\x‘Ë`×È¥q‹°ëâ‘Kã–)Ù„\rMÈr¡¶¨°ëäBm‘~¹P[´È%Ø5!ׄ\r€\ÚÎu,ri;W(È¥í\rMÈ5!×pȵÛÚâ#PÓȵÛpa䢿ËMŒpeK³+@.ú µÅväRº$uâ“F.B,…\æ§ ;(ˆ\ô»‡\p @@#±…‘‹þÔBáfäÚ-¸T‘ çVŒ\4Ó"䢿rí@ráßæHB?¹ð'#ý¬£ß rÁo #×.Á¢‘kg8 Ça(îb¿0rÑ_+úiˆÜýVC.8>·Èµƒ‚ÈE¿ríæ\¹`Øí4rá8*ȸ´uȵ%ÊÖôSk `F.ú Gä2¿™Éȵ-±häâcæ(0o»ö‹E®Ú± ¹.¹høl» r9ÔrØ%õB.ßÎUG.}ޱ«Š\5K×È…G¥¹nvu ×Î+¹\©#—oçjB.Æ-Á/™s¹Ò¹Ÿ»Œèáï¹»š‘«vô@äìbÜ¢9—Ã-3¬wMÈåPKЫ¹ªäæ\®ôG.‡Q€]¹¶~Y÷E®íjB®ó#ý ê¡” —þW‘ uÅ}ÈÅzžqU‘KŽ&»|ä¼ÚŽ\ô7t¸Ã.Â(Ðé÷Vä¢ß@[tØÅÈų.#–rÉÑõ>ä²êI¹xÖe0ªr 6åôS!—ØjÖ5'lRÚ¢àÕjXä¢ßA[´ÈeP©‚\uÜbìjB.;A¯#W¶ìê…\‚Y[ú)ÈeµE‡\Œ]Z[¬#cׄ\—\u;W}ÎurµÛ¹èعº‘«ÝÎÕ¹œK#—³síG®f;—C®}ú¾È…v®C‘ í\<çrv.O_œ vU í\¹œ«r-ÔìŠí\¹œ«Ž\ÎÎu8r¡ëpäB;ϹØÎ¥ç\ìRÈÅv.D.Ä® ¹Î\N[Ä9W“+<ärÚ¢žsyúâäªê‹C —î!‘«ÛÎu:äÊw ·r9m±:çÜ2ÈÕ=çb;×ÐÈÕeçÚ\»&äº`äRgr ‹\E‹käÒv.mQ°ëäråÈålô§A.…[ÞÚ¢`ׄ\Ž\Ív.°teá"שì\OG®Bf\Ck‹ÎBßä!öù#Ë`×ÁÚâÓ‘ËzE \U }“W„Øç'äºhäBì:ÞBØ5…ÞbW»…¾ ¹Ì_•9Wr”j@.ƒLs®>úº}“…°‹tÅâ =b×S-ômÈUµÐw!bW? =`×^äªús F‰ ý¹úY軞l¡Ÿ+ äêë¡þjðŠÐå©^„R-^Œ\;UrÁ_GyExzá^mû«È×ü"öyExÇôŠpž¨û¼"Úì\ý‘kŸWD¹ª^„S[_WÜï¡Ë±^εê1!×¥!W³'j«7W‹?—­'{¢2r5y¢v!×:sÈu¸'ªÂ­=Q}úvOTF.mçò}è›=QnõðDõ‘K{¢V‘«Éõä:ÖÕ_[lÒ¹4vù>ôÍž¨‚gq?OTÍ´u¾¹¦µÅq‘«Ñ…f{Èî­-^B”­->e÷¶s]V”mçzÚîŸ6äâÝ?‡h‹ÇíþÙçÏõ´(7ÚÎõ´Ý?íÈ5ùs} Èåæ\çF.žuýzËŸsõÝ·Xñ ? ¹š×G®vú¡‘ËŸsõÛ·Xñ Ÿ|èƒG.Ü·x9ȵ^NÈuÈŽkÁ­†×OñŠ8¹Úö-^r9ìjó¡Ÿö-þ:bEL1Q§˜¨SLÔ ¹&äškB® ¹&äškB® ¹&äškB® ¹&äškB® ¹&äškB® ¹&äškB® ¹&äškB® ¹†B®ù¯œ&L˜8ÂkñÐ4q`âÀÄð8^‹‡¦‰&„ÇðZ<4M˜80q <„×â¡iâÀĉáq ¼M&Láµxhš80q`â@x¯ÅCÓĉÂã@x-š&L˜8ÂkñÐ4q`âÀÄð8ðìùóíí›ïﯼ¹þÉü±¾~wsûýý݇»w¿yÍç³77¯go>š½²g~óì7Ïž›ÿf»›×ÿ4»»÷òíýõõûëO/ßÝ_}zóúáæîŧ‡—ßÿ€•¼xüùÑ^¿úüøþîþŸfåû«û׳?ÜÝ}¼y€Êìé?^¿¹~{s{óxswû0ûÉÔó~öpõãõìáî£ùçÓÕëëÙÍíìñýõìîóã§Ï³·¦/f³?½¿~¸ž]Ý›ÿ?<ÜÙªì5W殫øýûÍnv÷éúþêñîþáÅož½üëìË;[÷ßfæ™æï7ß_?˜Ó|ȼ}¹½þéÓÕã{¾ìãìËÇ»¯ïøÀ‡Ù—7·êÀëٗןïõ%ïÍ‘wתsÔ4öK:û&ž}˜a¥¿y6³d=Ÿ]ÿl^ÿ+Ç?æü']w{ý®z]ÃÞξ6}àÖ¼ý‡Ù—ë;}dG¬˜ýøîÿ³+-O?Ì*¼x¹ûÿ"¬¡z™¹ðA½ììáñþî/Rdz/Þs蕾ºµøºxkS³Jÿ¬;Þ¥_ ¯þ¡­M•w>¤UÝÜëU‰©æÝìKdFùýÕ/fXÃ%/M}o_»Ça`®äg~k¸}ýhäñ>ò;àúÞþ?àö×ù œçÃ÷¦ IïJþˆ¸÷JWbåó;+åWnþï5ˆ'°®1²9ŸÙrÿÞöåãÕý_fîAWî®ÞÌ>Ý}"I0ôúîóíãã\Í®|û·ÙÍÛæ ¸àW¤pÅÿ¨\ðáúêž.pÝbšµ±mlg^į'ëo°ïö¶_ó›[ÿt‘…ŸnÞ¸!ûäðÿ¹»¹å£ÿ,G__}âƒÿ?Þ<^2?øø8þæêA*½#o?\=ºçÿ/+n7RÙÿxRGìhùáúÑ@¢(æÐÕç3þΡ¹z¼~a/úí«W¯ÿò_ ï>=¾˜É ý×´lf_ã¿Î^}~|üæúöÍÃ5•7oþÞ¶ëü–ªüÁÖ8û2Ÿ½3UýdFâÿ1ÿÿóìÏÿi~¼QÚ~ül^Ä|ªfwo¡m÷ׯ¯nß}¸v_šÙ[3¾¿{xüáõýͧÇÙÍÇO®?^ß>ÂöËGŸ¹7w³Û;uÞŒ³?\ÿxýaÏÞ^_=~6¨_º›‡™ùïêvöÝ¿–ÿö/ßÿaû§­­æš[ó_gw·~ýÝϳ_fÀ„Ùûë›w/^¼ø;Û®¶¼íúý$þÃý[†)‚s}óçàÌ«Õ/­˜»øµ|Gíeº»Í#g/m«à1?½¿¶ŸE#îà߾؆Ù|ýÁ|äAlèÞº—ž[½›>6öþ‡Æû_Óý¶Aµ»¡•öÞ× ÷6öÿÃõÛæ;Ó{<¤Çn_øüÆÌx®fñü¹ýóþúêÁÎfx²bo{°pˆãÁÜcdìúááêÞôåÝìÝõãÌž6ވ؇«{{ÐÞ÷ÏW?^áÍÐ…¦ _Ì<ê 4ÅþÅ`'¿|2˜ ¿Zœøxõ—k{ñß¾<¼¾ú€¿òK[…¿_™‰sæ)/ÕÛ*Ö}‰^Ä3ÃÅŒ¿ýí‹5íû›ÔìÄûÓõkó1˜ýx}ÿ@ü”.½¬üp÷Îã,šÌÌ@2}kYðÚ<àæöóµ­æêõýÝÃà g×ï¬Y‘ù-ôÀGóÁzeG«™c¾©ŠåÕ3/ýüî½­åãÝ[÷§û›[óÃïëëöIo,¿ME¯ïîíðøðË‹¿GX§¦~±L63¿{óXl¥aLJëÛwvâvýW{šç?ð;vоÃÖöæîí[Ãrù‚¸O„…ÍÇë[ûzxàËGûE4ÂF KGcÓÄO¿P—SõŸ ø=Ò¡döM„“·ϯ`H˜ž‘s­§®Þ¼™=üõþ±zåÿIð"îp—×¾Ùùå}Sû¡ÿLÿ˜N§È4úCßañhúÍ3†}ÌŽQ,ö?N•YÉW÷7W¯¬’bÇÊÃÕÛëÇ_^ÀÇâÃã•ýÀ³~þ5@ò‹û!—ÿ"è7O~îL«îï¯n  ÿiûÇ]ýé»û×Õf¿ýõåßàíÿ8[¥ß@½oôÎ~ñ^~úi–=åÓûÙ¢ˆfü—¬÷ŸAÄf/ß>~š½½ò$NµÀLŒJ÷`[Ïg0PJ>~°cuïÕïê÷Wô;Öú§ëæe,b}¼z¼¿1ðe+z€?~~Üê¿ñFÛö­âf¿ýü`~ÿ§Ùïà¼ôïñwäÅïíõöo{µBõ§™…NˆðXÕæbêyw÷7ü1–ÇJ˜~ÿpe¦ fª‘_4EäKñ´0\=ÖŒ$£ÁÞÚ¹A;h®\7mSøñtšßMýi*öºRÕ|/5™ž„¯é']íÛ35´Gl¥òUYyf ú¾yõýÎ|&ÿ»WwvÆùûß™ê~ÿ»{麓:‡ëùb’ë›úWúm½fÛAs¿ÿòP.4RÔ Q„øNŽw­ƒÃŒ%¦ýîA?Ïÿ»_æð×`€\3ûò×ÙüEÿËkòÇûó-\óåßÕ“6¦F£¯ÙZ^Ì~ûó|öË|ös4û%‚C–‘˜}Û Ëgf?̰UÅ÷w~±[m⣙qýˆó6>j´bs'!Säij@ Q3¬¥ÛŒ¿¿\ßÎÚ~ø›PxuÔ_HÿÛÛ¾Õ¿}ÿz³ŸãÙ/ñìÅ‹ðÿÏ·³_àÛf/ÀW•›Þ–êã集ǔûSÖóÐú;Åi|Ìnßcì_ä>£*ÿC­v£ƒþxõÁv»µ ˜kþíþñ?ÿ`µå†Q*ÓÜêG…çÿnB€êAí:£@¸k~þ±vÞ† eN[H ªñØ/x¬&ÂxµVÌb0ù:ª¬ýB+È|1NnÁRÍ2YǸº-—C`¿ýÐÚ‹nïˆÝ»pùÝÄÚN.~ìâåûn¾­sóÞ~‚ ;Å©xjjÖ™_¨=üã¶´l¶?e3¾ËË«:cùÌO§ëû²ï‰{Ø>>SiýmKëkÜä·¶«‰O¦s̓ìð7íù(W´ÝªM- é¶ ëÞ5îtÕv¡çõc{C½fšök¡Ñ(³k±71iz[§kìí´½Ukä­«´¡g;Õ,¹G;­@¿?¦qÞƒº†ÁaMjÿè(ç;tøeôIÐ'A¿$Aßô-0Wܾ³ëøÛÌ øú£•cóê3Vwø&"ñ0Xððþî§™§ÂXwPo^Ï>}¸3møåã«» ýü‹QŠf_^>Üü_%„m)Î,0iþbo²wÇ/D“¶ÇÄWEf}/¬ÜúKín;²‡j·~úðÙjpýomÖ°kïÃ/ÐÑèúù,Éç¶+™_¾…kš.q}úòÕÝϳY•e°–÷ĺ1mçšß§rµ]°¹wmƒçžâ±-O–6ãõÍm­³w¹“Ýu¿à¹2ßÇfNZÓ›=ÓÙ×T‘ëWǘËlŸ?  Úæôð{»¾ÿ(Æø;óz²=<^ÝCu_´†Ò2¨ñIƒ#<ÿJ/-šË,ÍȘ:ˆmÜ¿‹$Ü\}¼»}sÀývìý»“º¿÷ío½ûM™ñÕÞüh9¯V]¬ZÀUô¯á­_…‚S° Þ}üt÷póH ÷³ÏÖäaóì²ñì?no^ß½¹& ÷”ÿ¸Å®œ}ºº¼±FÔû™Ñz?_ƒùêêvv}kî±@kó/p%ÓÎóÞξТ¾3·¶úòÅíÝ#,~ÃõñVAé^w‹­ ‘~Ùp›m(™ ÿrý‹k’µÚ½µ.•¦êÛëŸø0¨~ùÍ3qA°O¥•pp$åõir&µ=ËË´öôËÝw›¼8ž{¹åfø³;[íËyÀ¿ÚVùçT}öÀõ­™Ç ÿ±¹‡¿ïÃ_®º~ÓüÖ•sg~wøËžû5'æIÿÝíë+™5W/zûìË[>|~ûÖTgù‚ÏšY§è¸>ij/Š74Çyýãà rî¯?]_ÁÃÕUþ@®g¨ˆï››ÑÞpKÆÎ FÀÍÃ"ßâ|r%ê Óº[ýê¼²ªÆ‰ž-›\DÜáêØ€>øîöíÝì/·w?Áˆ ÏwÆ:ÿÀµß=^}¸y½3¹\n˜ÍþlÞK¿²wƒ­Å~•lMràõ^ß=Àg+ÜûO¬ˆ=I¬I›í¼,èlã¹ú¨0²!ìi)AQ`Ç7߈@ù'¾àñ·¿|ЃÝ|%NNîØÛ[_(~÷;«ûšë~°¬o ^KutæOÖjNüK¥Eθn{ì_®>ÁM±ùC„ôÏ`‹³ ”¾2[‘,û£üÿ=·ü¶.ìÏg¸zd(ð/±>6xÉ·÷××i¸$ž9ÂK¾ÿ|ûúñ3¬5]9Á W÷÷w?=4]›¡ƒ×¼ÿ·O-ŒôàE󯝮Às·¹þô?¯a½çÏ¿y&óò›ÿ(¿Ôð%b¶©ëý¯ˆ­YŸrrT}0Èrx‰3ªF4÷žõ)núµª½šÿÙmê—<ë2‹ü­e†VóÌá>nÕïö‡;a4®›+‰ü×ÏÒx þˆ]õ[ûí¿F—Ó\T¼›Ñ´Â*šö&5¸ã,7 #gŒžý§{O|°Çåi¿ýLÇí?³ÿßg»éäûã-<¦6f³ï~ø78Éã~£ÿ9JidÅËn?ùñÚO{üÏöh1‡#ø7†ø7…3ø7Çn]À¿Kø÷ þ}ÿ¾¯á_øHþ猧gІ*p@vp Yæ@e¸Îfï[_þw¿£÷{¹úðéý¿F<{¹¾~¼BÑÅ—~ùíÕÇrA:{¹±®l$âÈ‹—ÛO7ÌG®Ì^þo¯Ž…¹@ÿ½œ½üÓûk¯ŽÂ|sîèdáËÿqõé“;ðjöòW_½¹¢¿_Ï^þËgUÁ›™t3÷ŒëÙËÿçf¦¼½ü·7F£ÁV^™^ÿþÆUpe8ñÇ÷wrý•yñnÞ}”\™7ÿÓÕgwyíÿÀ×Vµ˜wÿþý»È¼zÉÃóîß?¨ Û¬ëwНLK®TŸ¼2}òJóó•iÚ;Õ'¯Òºª:Lã®UŸ¼2íú¿^¦aÞߦ]~Ÿ¼2M»Q}òÊôÉ_tŸ¼2}òAõÉ+Ó'UŸ¼2}r«úä•铟uŸ¼2}r§úäµé“OªO^NÜ«>ym8ñ`û$â à¿ '¯T^>|V|x[Ç›ÈUiøðZuØkÃs½ª¡°m4D/®­ ³iô­ÓXšÞÜÙ©ñ{¸àMDœŒ\%ob+(o2h†ãÄ›œž7ýþ÷3VÃ1â“úÈ´#EŒXÏsBŠÆOÐax™zÿ˧÷×·3!{8ªæSæÕ@^·tÌtÛõGp­õ.5¼ÿëç»Çkë"X©¥ S༡jº¢ãfbúî8µÀáWúðµWÓk:õæÕûU×w}Dððµ;Œpu½u§\=fnõòÍÕ»w×÷Þ+˜™6Wûo[ 7½p­Z›¡üɼîÝÿR3P®?|¸1ƒé¡Âi3â;Ð ðú«-™Ã9ë­þpuû†§æ!oï¯^«ÉŸâs ÷wŸ¡º{>l/¾û|¯ó)3žßÞüxͧT]¹•П½{ìá…•¢¯o+•ÙSfÀ*@CefÜZçœJÃ^ñèók³§LŸ~º2*©íê† ¯éô}ó—ĉ›Û·úKâ„>̧ˆ|JÕeúÿîöÚ»Ç6}ÿøÓ]µ*8•X$1Ÿ÷†Ê­µÊ˜­•êì)fkCeÄÖê[ [ýÚì)ÍÖ† =¶êóûÍ¢¨u0»ymÔf·ªäb¹˜§C4C>àŒzõÒ<Ãî(¹úà¸7á¬ïû››·ou/Í-˜ý|óðh„îæJáÀÜ~ƒ?~züÅNÕõ9Í f>ÙS ˜‰¾±¾åªÛs´»K_l{ ÀÒ;§LÏ=|~ýþñý•®Çºµßß½ùüÚ«Çb÷ÃçäèÕc±ûãÍíç’™C }¥iùÕƒ…燿à—Ð*êàfaÛ¾çë«ÞóÞ@ ­¿¼©Þ#6ÉnòþŇÚ+áñ°é’WW ~Õ)ÓÐwï쓯n@ÆK9®¥&¶s ØÏs]}åø FŠÎø^ýîÞk{’ÂŒàÞèW÷•–&f0ÀLBAõk+Ú¸WK]™föÊÛw÷Ÿ½Þ†S¦íf^v÷óõ_?ëh5;DìQu}nzÜ»ùñÊÂkï똛¦~¸~x¨V”Ùit6ó\a—í/ÞϯüQn±‹OÙtï[ð2Ìøpý³»À‹ã-R›U1^ßÜ¿þpm×Ô¬ÁÇ?~þðxóéÃ/2575|2ó2˜KM­Òjçžn`Èõv Z|*ödžª+¡¡Q¹ÁÎÓyE¤r*“Id˜¼Û@,FÀb°ø|¶úðpç6ši€™Çünúpó—ë¿›Iﯬt›—r{L!>ÂWfD¾ú pAŒ˜/šž°¥ËhÍ8zÚizá;;yü¬?¶v.÷ÇÊa:e§Tb®í®åƒKo•„eVÁºþ¤f¤Å¶6Þý¤¦žªÇp—‘ô¬¦ §*3R«0Ãñ7w?ݪËS:üêîñ½_Ó~vmFú&rg¸¤Mðaž¨ò©Äz#v^8“º3¶ íÃìåÿ¾úô–MJÎn䌕ï¬07ö˜ÑrJ¾³a4 Å[´>;{¤öÜh«åÂHÃéDYæ­ù Ü™#Póáyoýç¥'y^Ãu&l‘FeWþLóš3دè+N_&Ûà×ð/ª7X¢2°DeûSýˆÈ?àÞ¼€¯ð˜¥r¨.ƒ‡À:•¿¥¹?üÀNŠ©ºEÂNö’áGN8lþ}…÷¾2pï‡öÄÊ*(èQ¸ÊÛØoÿË£Ÿ[Ü¢è™.=¤@zù߯?üxm§‰ö¯Ê"®×aêz’æz|æ´2™ò§›×ßüñîãÕm7[KðžýìðX7Ñ_\¨qÀ=OÝÞçåÿåîö"½iâ€:û²´šëõ}' Üõĺi?'ÔüN|oŸqQypµŠc†ÅÆÌóîÞ5q…Îô”¼úpQ¡ûŽ“õÐa„+üîÖ.ŵ²OĸåXæàÍOá{ü0l²K´fjg7ÓV]v~ûÏ›ÿ1‹^D/åï-ÓÔŽ¤Ë]¨t©;‘®Êƒ–.ëfÿï0©‰Câ¼@Ý÷Ž=ØÉ ,³ÛKíúÃìÏ_°ž¿Íè—µüö;öÝßh©PüÒð¸›Òu>Ùzš6|×Ü['bDßV¨N¸%Ü–?u·¤×hø?æOòè?}çŽ53áOëýOî7Ž{üž.8dùþ}ZpÀ8°Ü޲³ )÷=¿äg•òüò;w¬™ e÷(¨ïiÚÐÝu?'z7ã€Aq`S@í»º·ÛŒmPk«¸Fó9 Jì¾—oð²/ó lÅõÏÖgU…$²ôWå¤f#ã©ST#Ç 4÷ê0™Ÿ?h×@¢J@Bç²ûòÍÍçW¿”¶¦¹úd]ÁÌgÒ™þ½°.XüϲBZ¢júg8#× ×Ëò•œ’óîÎ×x§_±wûÇzÍüô—å/êÁÍO¿SÕ/–•vòžž/à¾ó'85³^+U2o|ÿ¼Èøúw÷p ›7_ÿ¯åú¿À[?øö¾ƒÅß¾ë`ñ·¯:Xüíë},þöc‹¿ýe‹¿½ë`ñ·Ÿ:XüíO,þxì±Øjgñ·ÀcÅßþ¥ÂâïºXü]‹¿ëbñw{Yü]‹¿ÛËâïºXü]‹¿ëbñwu×Åâïê,þN±ø÷¿ŸþIø§B̹¦!tÓ!½ ¤Æb&„4³x‚f©±ø».×Åâ BªbÃ07!ȼ¥%Œ ª¯^u]ÿº~ýÇ®ë©_×uý§úõ?u¶Ÿð@]xÐzý›êõÍx}ÓPáA¤¯Õ@„ž4}ìºþ—zýw]íùT¿þ§ˆtÇJ÷—ný@”î–~WgÈtëõ¯ë×캾Î0”Ú¶ëë ë#«Þõ–a׿©^¯¦dõÕO“¤ ©íß1h`MR[¯¯¼o»^›¤¶^œ¤z×w ¼oëo’ÔA$õ9ǃ{{gDCœ¾;»]ïúaöþêöÍ\¸úpóî|ëîÞάOÌç!já[ˆ¾myß轺¼íþúZêV1ÿhß.„–{õᇶ…?~q|¾ÿYÿñ‹Žx 1©©µv}øÒ Ü?<Ö}xLCßBãy›¤}‹ûëÇÏ÷BƒÏ¼º¹}£c\úh¥‘š bs>IŽÿ#ÄÏ6µ^Íþ΃ý;HÓÕ2ûÉF¹»»ýÆ:Ñ’»ljþžÿ=öy¬÷wØ{'_ð;[íïáž[»‰»{ ®íï!>’erP‰fïÈìó7wÚ-`àzõËcu,ºˆÈ%¯Û.¡ºcŠsÆþ"²éÓ¶[oˆ„f6îyôúÔÆâ°áÞÉs½Þ§ïn~$ø€ãóJOáÎñßÁöoÃF{ýnë4AÔØ;©ÐÛêvØLÌn´I ¹”VÃëßšW5uÕ_ð5òÎw6’º=fXýêúñ§kó†o®mÜ æmmž,Axm”=kÙ´ƒÐ>”.çh¯¢'þÀÓ E.xG¾ØÇn¾W›ì®îoî>ÛøÁv‡®Ì65Èû§ ò:dÞ×6ÐÀ'ÿ•M£??P$_+Wo®¼y ïÂ-ÚB ¾ù®­³®vôK…›{Ú2ˆ²_ IßMöºW–iŸ?½1<¶¿þMÅ–i|GäÃo©¸ÜpÜÊKûêýú4Þ€Çë‡Gˆªþp}ÍhZÁáW¯ß_+è÷@!>%û2ˆìcà¸wz›‘)˜*—5’@ ½þ«z•?^Ý¿¯~G/ˆÞÃÜz!sÂsú®æâ¯€?s—ÖCÊÜ» UŸ¬½Ê3‚‘z_]¿¾úüÍ€Ý56{ÝÃì'³ßÞþêáï“™â%á-0ÜÛðì··ðmîOù(r >ë e(Ѽ0²sÅŸ-ðlˆ¦¨6¬€»Ñ›"ɤ gñ¬ò;œ–³W7ïoÞ>ª³vì%¸ˆ¼yßÎßb>;ÏŠþö½…Cߘ¿ç®\8 ×vnþeF#J½­Ê½¾päúç›GmžÜ€å2‹øÞî5ädŒOúü©Î0\…5Ÿ½ðDþ¤„ÃÈ!”Óðî<-·¿SÄ›òãáÑûÈÑôJ4•GóóÕgHÑeïÉ:ô-§ùíšä¨X&µíÇ_ŸC4›,a¿àƒÅ$Š ðáQL_ûG ?ÿ£k®YI CÁà™¿d.ÃÙ_}¿þùúµk¢œ­œÙæEü÷ÙG>7ý­òš5»%³f‡cÖ=ɲã÷³×½ÔüÂ](ï„NlX›ŽymfáqGDPõ=¥/=¿"-½Wµwÿ{-œù_飿nÅ¿ë·ê»šëÁ!T†<™÷—k3kcHÔÍ¼.ä³ùáÈQ¢¹ÁFÌçǻҫÓy5T¾w}Nçj¸ˆÇUf­û¨¹uöü·µ=ñŰÇ^M)›šYS¹à)lÙ\=¼7ßÜÏû¸“ Ë?+–àdÈý 38H>X}çøy÷øØ‡ŸépüŒ€ŸsÅ”$dþ Zµ—Ù(âŠÚÄ,Ò·sÌѽlk»é)¬üÖ:‰=öãg>&?!) eë ”·ÿöãõý««û6v.ºÙ 1éœíþÚfÖ4*[*ÛóÌExŒRL¿¥Ô@î¥Áéßnc¶sJxûÛ뇇ÙÛû»ž§b¨¸£x3L='ÛþÎNŒI­R!àð¨mCëX]¬;$‹€¤8‡¬¾”9Ê÷üê¶YÓy¶ö®dÑF)Ų¼ªëær‘â¬ß†? ßZá.VàHÛÛ¼¬¡ V¿#Õ«Þ܆{Ý:Ž!ì~Ý߃æY•»š‚†þí‹2‡`Ïεø8”¬T=‚š¶ÿ•n¹Óçb-°ìõ¹2£ÙZ±~º1z7è½»scMù¾=µÝ~þ½ý÷óïçûŸá_ó;Öª/þú%E‹ÐG·QÚñA¡±-:‰èmòQ4ê^½~ý™,û«v©ÁÜñîúÖ†F¹†cWlœbyÜ «­ ФšóŸ:ñ,"•ËK zÒÂdå]¸¬ÒWik À;_P¸ü_ÍÿùŒ?ì_ΈN6B÷·˜°íÖBRy¿ÍüAè.ÿÙ]þóÞËí;ÀËõë·_þ³»¼½ö†4rÕ®·Ç(ôsãÐìË4ʳí¸VáSµ¯«ÝÙËß~xß=ˆ VÜUZoÆé's´¨EÈì/_òŸ­Â¶ÂT¥¸iNàµAŽRS´ìåçÍí[ˆþÝÞR¾‚#‹>§„Öv¦À“½3¡éZ;ͪ_;Ò»ÊÍí/+—Ôű,X(Æ_Ž)þ„=×[–ƒžïƒóéþæêñº}UXÍ%ÛßW]„_Y–þ¢'d}¯. ÂÁ…¶ýÒ.,ÒÚ$äôâc^…õÕG{™:þ!³¿ê“ðz•jð–YξIyv,Pa¯øw1E’z*¹Em™;Ò‚Íÿ K%©|cü|â6ÓB{ÈΨíaÿ£Ã3ú—úò—o“åþÇãÍÓŠë̗ͳYmÀÞÇÈ…3ûíü·ÏŸ>]ßÿã¬üoDïgëÿÆkVÿ8ûÃÓãß#H¿¾ƒ%"¼Óœº~û¨oüãƒà,6þ ¸ÙøÆ_˜¦½öõà¥Ív\«5¹¿YCÛZ.GÝ«ù¦²á¦¹¾`Ýp©ªRÍôUÐæ?~\W›ÿ¸ï¾ÎÆwÝí¿Eו ¯S»œšÑï¥Ê~ww¾Úþ:üÜ}Ãk–6𠻣âêÐìËG0mIºŸŠÆLóT Qä­±áJ…ÒŠù«&€“]YÖ˜ý{C6¡ë[Œêözcó8I~þ|{ûæ{ó°»w ¬Ï×6³™úXEîáêGnr%=ð6ÔðA›ÊÞf°WÉÜóÌÆ7çÿ\"q«7Ì]öíß<Ëçó™ýŸò|Ûû”àÜ<Œ²¶ÿæ™ËjmÔ!•²×4SgÄ5í(^DKËÉ~æ/ò¸ˆùÙ·ݵôh‡Aÿ(3ˆcDÏþL_äK;âùgÏvì©¥_;–i5ØŸÉ‹$JMMü³;ºjéÓŽèEbcj.sø¿HRÓ§ò³o;ºké׎FzŽ?_äÙÂÖH?û·£«–~í(¢j€Ÿ/¢E´\ÈÏþíèªe;â8Ã/tŒ_ì–IŠŽáèf(QÛ åýõLÍ;â4}±Ìâ~Ï ˆ8ûòæþê§@£Ö*ÒIÞóQ}_göñúñýÝHü¨ž•¤ËišüZ¸"Ëó7õ¸Ô~æË_íáó'«qkòˆHòážs÷ùц6¼{ËFÙç°Ï(9¹Dköñ‹ÔÆ*èÓŽÊÔ¹­ÿýOÿò‡Ù£B|¾zw­y»0ó"¯wÈw~¡Ðf6€©7)kF`qÒãäò/»ÓñœæÔsÿt”5ÞýÞ?]½›O'ÍÏÆxï|¶z3M›Ÿ ÙkÝéêÍ|:o~²MëÎVo¦³‹æ'¿¹{t'«·¾Å³EócÁÐÎ'k·ÂÙtÞüTÈUëN×næóqó“!o­;Ýt;œOZÞ#Û» êïÍWT-¨òšC7äZ@þtó-td½¾ûÙ*ݶvøŸvúþ??<^²¿˜ãÿoõTþýýZ4ÙFeSUö+;D "ÑÒiûPIüKǨ,—dNàú¾³vCÕzsèݼ±"æs>ðß1á½:býÍ¿¿¾·UîníjþÒµ¼ï›lø,òÀø³móȹhsõxõÃÝçû×׳ßÎþ÷¬ñ?Sÿû{ªä÷¿Ÿ=”þ¼¦$¸}à Q"¶!ÿç>;afæz‹d9KI—mÁÈæ(öVœAò;IÃJÓë$o¿®–›}꿃ý³Ê 5Þ–ÄŸì”럭µöÿüæÙíõO¸‡²Ê§æRí3¿¿yöMÃ1>ôMÓuú yÊØHגȶ$²-ù³ˆyF§cúÉ{vdóyƒ_1wö9^äß=Û7ØÙg ûÏÝÏÈðLóÑ„~¦¶¾óxçŸjpà$ü›œn”_"†úX›½Ò¦¤*–)UÁ¿X ‰þéMä¿É©™å-²ðozÄÖ-'yàÇ~àjìnÇ~àŸÆ~à¾ú>\w<ðßá?»4p ‘=0Ž©½×0íRãŸî¯n>\ßêã¿í~óìÿNо src/test/resources/ps/TestTaggedString.ps0000644000175000017500000011505010344614150020066 0ustar user01user01%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 20 118 575 673 %%Creator: FreeHEP Graphics2D Driver %%Producer: org.freehep.graphicsio.ps.PSGraphics2D %%For: %%Title: %%LanguageLevel: 3 %%EndComments %%BeginProlog 100 dict dup begin % % File: org/freehep/graphicsio.ps/PSProlog.txt % Author: Charles Loomis % % Redefinitions which save some space in the output file. These are also % the same as the PDF operators. /q {gsave} def /Q {grestore} def /n {newpath} def /m {moveto} def /l {lineto} def /c {curveto} def /h {closepath} def /re {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath} def /f {fill} def /f* {eofill} def /F {gsave vg&FC fill grestore} def /F* {gsave vg&FC eofill grestore} def /s {closepath stroke} def /S {stroke} def /b {closepath gsave vg&FC fill grestore gsave stroke grestore newpath} def /B {gsave vg&FC fill grestore gsave stroke grestore newpath} def /b* {closepath gsave vg&FC eofill grestore gsave stroke grestore newpath} def /B* {gsave vg&FC eofill grestore gsave stroke grestore newpath} def /g {1 array astore /vg&fcolor exch def} def /G {setgray} def /k {4 array astore /vg&fcolor exch def} def /K {setcmykcolor} def /rg {3 array astore /vg&fcolor exch def} def /RG {setrgbcolor} def % Initialize the fill color. 0 0 0 rg /vg&FC {mark vg&fcolor aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /vg&DFC {/vg&fcolor exch def} def /vg&C {mark exch aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /w {setlinewidth} def /j {setlinejoin} def /J {setlinecap} def /M {setmiterlimit} def /d {setdash} def /i {setflat} def /W {clip} def /W* {eoclip} def % Setup the default graphics state. % (black; 1 pt. linewidth; miter join; butt-ends; solid) /defaultGraphicsState {0 g 1 w 0 j 0 J [] 0 d} def % Emulation of the rectangle operators for PostScript implementations % which do not implement all Level 2 features. This is an INCOMPLETE % emulation; only the "x y width height rect..." form is emulated. /*rf {gsave newpath re fill grestore} def /*rs {gsave newpath re stroke grestore} def /*rc {newpath re clip} def /rf /rectfill where {pop /rectfill}{/*rf} ifelse load def /rs /rectstroke where {pop /rectstroke}{/*rs} ifelse load def /rc /rectclip where {pop /rectclip}{/*rc} ifelse load def % Emulation of the selectfont operator. This includes a 20% increase in % the fontsize which is necessary to get sizes similar to the Java fonts. /*sf {exch findfont exch dup type /arraytype eq {makefont}{scalefont} ifelse setfont} bind def /sf /selectfont where {pop {1.2 mul selectfont}}{{1.2 mul *sf}} ifelse def % Special version of stroke which allows the dash pattern to continue % across path segments. (This may be needed for PostScript although % modern printers seem to do this correctly.) /vg&stroke { currentdash pop length 0 eq {stroke} { currentdash /vg&doffset exch def pop flattenpath {m vg&resetdash} {2 copy currentpoint 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt 3 1 roll l currentdash 3 -1 roll add setdash} {} {h vg&resetdash} pathforall stroke vg&resetdash } ifelse } def /vg&resetdash {currentdash pop vg&doffset setdash} def % Initialize variables for safety. /delta 0 def /xv 0 def /yv 0 def /width 0 def /height 0 def % Initialize to portrait INTERNATIONAL (Letter-height, A4-width) page. /pw 595 def /ph 791 def /po true def /ftp false def % Initialize margins to 20 points. /ml 20 def /mr 20 def /mt 20 def /mb 20 def % Temporary matrices. /smatrix 0 def /nmatrix 0 def % set page size (usage: setpagesize) /setpagesize {/ph exch def /pw exch def} def % set page orientation (usage: portrait or landscape) /portrait {/po true def} def /landscape {/po false def} def % force natural size for image (usage: naturalsize) /naturalsize {/ftp false def} def % resize image to fill page (usage: fittopage) /fittopage {/ftp true def} def % set margins of the page (usage: setmargins) /setmargins {/mr exch def /mt exch def /mb exch def /ml exch def} def % set the graphic's size (usage: setsize) /setsize {/gh exch def /gw exch def} def % set the graphic's origin (usage: setorigin) /setorigin {/gy exch def /gx exch def} def % calculate image center /imagecenter {pw ml sub mr sub 2 div ml add ph mt sub mb sub 2 div mb add} def % calculate the necessary scaling /imagescale {po {gw}{gh} ifelse pw ml sub mr sub div po {gh}{gw} ifelse ph mt sub mb sub div 2 copy lt {exch} if pop ftp not {1 2 copy lt {exch} if pop} if 1 exch div /sfactor exch def /gw gw sfactor mul def /gh gh sfactor mul def} def % calculate image origin /imageorigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div po {add}{sub} ifelse} def % calculate the clipping origin /cliporigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub floor ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div sub floor} def % Set the clipping region to the bounding box. /cliptobounds {cliporigin po {gw}{gh} ifelse 1 add po {gh}{gw} ifelse 1 add rc} def % set the base transformation matrix (usage: setbasematrix) /setbasematrix {imageorigin translate po {0}{90} ifelse rotate sfactor sfactor neg scale /defaultmatrix matrix currentmatrix def} def % The lower-right bias in drawing 1 pt. wide lines. /bias {q 0.5 0.5 translate} def /unbias {Q} def % Draw a line. (x0 y0 x1 y1 line) /L {bias n m l S unbias} def % Polyline primitive. /polyline {n m 1 exch 1 exch {pop currentfile token pop currentfile token pop l} for } def % Draw a polyline (n x0 y0 OPL x1 y1 x2 y2 ... ... xn yn) /OPL {bias polyline S unbias} def % Draw a closed polyline (n x0 y0 CPL x1 y1 x2 y2 ... ... xn yn) /CPL {bias polyline s unbias} def % Draw a filled polyline (n x0 y0 FPL x1 y1 x2 y2 ... ... xn yn) /FPL {polyline h f*} def % Draw an oval. (x y w h OVL) /OVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width currentlinewidth sub 2 div height currentlinewidth sub 2 div neg scale n 0 0 1 5 -2 roll arc smatrix setmatrix S} def % Draw a filled oval. (x y w h FOVL) /FOVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width 2 div height 2 div neg scale n 0 0 m 0 0 1 5 -2 roll arc h smatrix setmatrix f} def % Draw a rounded rectangle. (x y w h arcwidth archeight RREC) /RREC {matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix s} def % Draw a filled rounded rectangle. (x y w h arcwidth archeight FRREC) /FRREC{matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix h f} def % Draw a string. (string x y STR) /STR {q m 1 -1 scale recshow Q} def % Define basic plot symbols. /xys {/siz exch def /yv exch def /xv exch def} def /hline {xys n xv siz 2. div sub yv m siz 0 rlineto S} def /vline {xys n xv yv siz 2. div sub m 0 siz rlineto S} def /plus {xys n xv yv siz 2. div sub m 0 siz rlineto xv siz 2. div sub yv m siz 0 rlineto S} def /dot {n 2. div 0 360 arc s} def /fdot {n 2. div 0 360 arc h f} def /box {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rs} def /fbox {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rf} def /tridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto s} def /ftridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto h f} def % Symbols defined in terms of the others. /star {3 copy cross plus} def /cross {xys q xv yv translate 45 rotate 0 0 siz plus Q} def /diamond {xys q xv yv translate 45 rotate 0 0 siz box Q} def /fdiamond {xys q xv yv translate 45 rotate 0 0 siz fbox Q} def /triup {xys q xv yv translate 180 rotate 0 0 siz tridn Q} def /ftriup {xys q xv yv translate 180 rotate 0 0 siz ftridn Q} def % Define the composite fonts used to print Unicode strings. % Undefine particular values in an encoding array. /vg&undef { {exch dup 3 -1 roll /.notdef put} forall } def /vg&redef { {3 -1 roll dup 4 2 roll put} forall } def % usage: key encoding basefontname vg&newbasefont font /vg&newbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def currentdict end definefont } def % usage: key encoding basefontname vg&newskewedbasefont font /vg&newskewedbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def exch FontMatrix exch matrix concatmatrix /FontMatrix exch def currentdict end definefont } def % usage: basekey suffix vg&nconcat name /vg&nconcat { 2 {dup length string cvs exch} repeat dup length 3 -1 roll dup length 3 -1 roll add string dup 0 4 -1 roll dup length 5 1 roll putinterval dup 4 -2 roll exch putinterval cvn } def %usage: fontname vg&skewmatrix matrix /vg&skewmatrix { findfont dup /FontInfo known { /FontInfo get dup /ItalicAngle known { [ 1 0 4 -1 roll /ItalicAngle get neg dup sin exch cos div 1 0 0 ] } {pop matrix} ifelse } {pop matrix} ifelse } def % usage: newfontname basefontname vg&newcompositefont -- /vg&newcompositefont { /vg&fstyle exch def /vg&bfont exch def /vg&fname exch def << /FontStyleBits vg&fstyle /FontType 0 /FontMatrix matrix /FontName vg&fname /FMapType 2 /Encoding [ 0 1 255 {pop 6} for ] dup 16#00 0 put % Latin dup 16#03 1 put % Greek dup 16#20 2 put % Punctuation dup 16#21 3 put % Arrows dup 16#22 4 put % MathOps dup 16#27 5 put % Dingbats /FDepVector [ vg&bfont /-UC-Latin vg&nconcat UCLatinEncoding vg&bfont vg&newbasefont vg&bfont vg&skewmatrix vg&bfont /-UC-Greek vg&nconcat UCGreekEncoding /Symbol vg&newskewedbasefont vg&bfont /-UC-Punctuation vg&nconcat UCPunctuationEncoding vg&bfont vg&newbasefont /Arrows-UC findfont /MathOps-UC findfont /Dingbats-UC findfont /Undefined-UC findfont ] >> vg&fname exch definefont pop } def % Null encoding vector (all elements set to .notdef) /NullEncoding [ 256 {/.notdef} repeat ] def % Unicode Latin encoding (unicode codes \u0000-\u00ff) /UCLatinEncoding ISOLatin1Encoding dup length array copy dup 16#60 /grave put [ 16#90 16#91 16#92 16#93 16#94 16#95 16#96 16#97 16#98 16#9a 16#9b 16#9d 16#9e 16#9f ] vg&undef def % Unicode Greek encoding (unicode codes \u0370-\u03ff) /UCGreekEncoding NullEncoding dup length array copy << 16#91 /Alpha 16#92 /Beta 16#93 /Gamma 16#94 /Delta 16#95 /Epsilon 16#96 /Zeta 16#97 /Eta 16#98 /Theta 16#99 /Iota 16#9a /Kappa 16#9b /Lambda 16#9c /Mu 16#9d /Nu 16#9e /Xi 16#9f /Omicron 16#a0 /Pi 16#a1 /Rho 16#a3 /Sigma 16#a4 /Tau 16#a5 /Upsilon 16#a6 /Phi 16#a7 /Chi 16#a8 /Psi 16#a9 /Omega 16#b1 /alpha 16#b2 /beta 16#b3 /gamma 16#b4 /delta 16#b5 /epsilon 16#b6 /zeta 16#b7 /eta 16#b8 /theta 16#b9 /iota 16#ba /kappa 16#bb /lambda 16#bc /mu 16#bd /nu 16#be /xi 16#bf /omicron 16#c0 /pi 16#c1 /rho 16#c2 /sigma1 16#c3 /sigma 16#c4 /tau 16#c5 /upsilon 16#c6 /phi1 16#c7 /chi 16#c8 /psi 16#c9 /omega 16#7e /semicolon 16#87 /dotmath 16#d1 /theta1 16#d2 /Upsilon1 16#d5 /phi 16#d6 /omega1 >> vg&redef def % Unicode punctuation encoding (unicode codes \u2000-\u206f) /UCPunctuationEncoding NullEncoding dup length array copy << 16#10 /hyphen 16#11 /hyphen 16#12 /endash 16#13 /emdash 16#18 /quoteleft 16#19 /quoteright 16#1a /quotesinglbase 16#1b /quotesingle 16#1c /quotedblleft 16#1d /quotedblright 16#1e /quotedblbase 16#1f /quotedbl 16#20 /dagger 16#21 /daggerdbl 16#22 /bullet 16#24 /period 16#26 /ellipsis 16#27 /periodcentered 16#30 /perthousand 16#44 /fraction 16#70 /zerosuperior 16#74 /foursuperior 16#75 /fivesuperior 16#76 /sixsuperior 16#77 /sevensuperior 16#78 /eightsuperior 16#79 /ninesuperior 16#7b /hyphensuperior 16#7d /parenleftsuperior 16#7e /parenrightsuperior 16#80 /zeroinferior 16#84 /fourinferior 16#85 /fiveinferior 16#81 /oneinferior 16#82 /twoinferior 16#83 /threeinferior 16#86 /sixinferior 16#87 /seveninferior 16#88 /eightinferior 16#89 /nineinferior 16#8b /hypheninferior 16#8d /parenleftinferior 16#8e /parenrightinferior >> vg&redef def % Unicode mathematical operators encoding (unicode codes \u2200-\u22ff) /UCMathOpsEncoding NullEncoding dup length array copy << 16#00 /universal 16#02 /partialdiff 16#03 /existential 16#05 /emptyset 16#06 /Delta 16#07 /gradient 16#08 /element 16#09 /notelement 16#0b /suchthat 16#0f /product 16#11 /summation 16#12 /minus 16#15 /fraction 16#17 /asteriskmath 16#19 /bullet 16#1a /radical 16#1d /proportional 16#1e /infinity 16#20 /angle 16#23 /bar 16#27 /logicaland 16#28 /logicalor 16#29 /intersection 16#2a /union 16#2b /integral 16#34 /therefore 16#36 /colon 16#3c /similar 16#45 /congruent 16#48 /approxequal 16#60 /notequal 16#61 /equivalence 16#64 /lessequal 16#65 /greaterequal 16#82 /propersubset 16#83 /propersuperset 16#86 /reflexsubset 16#87 /reflexsuperset 16#95 /circleplus 16#97 /circlemultiply 16#a5 /perpendicular 16#03 /existential 16#c0 /logicaland 16#c1 /logicalor 16#c2 /intersection 16#c3 /union 16#c4 /diamond 16#c5 /dotmath >> vg&redef def % Unicode arrows encoding (unicode codes \u2190-\u21ff) % Also includes those "Letterlike" unicode characters % which are available in the symbol font. (unicode codes \u2100-\u214f) /UCArrowsEncoding NullEncoding dup length array copy << 16#11 /Ifraktur 16#1c /Rfraktur 16#22 /trademarkserif 16#35 /aleph 16#90 /arrowleft 16#91 /arrowup 16#92 /arrowright 16#93 /arrowdown 16#94 /arrowboth 16#d0 /arrowdblleft 16#d1 /arrowdblup 16#d2 /arrowdblright 16#d3 /arrowdbldown 16#d4 /arrowdblboth >> vg&redef def /ZapfDingbats findfont /Encoding get dup length array copy /UCDingbatsEncoding exch def 16#20 1 16#7f { dup 16#20 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for 16#a0 1 16#ff { dup 16#40 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for UCDingbatsEncoding [ 16#c0 1 16#ff {} for ] vg&undef [ 16#00 16#05 16#0a 16#0b 16#28 16#4c 16#4e 16#53 16#54 16#55 16#57 16#5f 16#60 16#68 16#69 16#6a 16#6b 16#6c 16#6d 16#6e 16#6f 16#70 16#71 16#72 16#73 16#74 16#75 16#95 16#96 16#97 16#b0 16#bf ] vg&undef pop % Define the base fonts which don't change. /Undefined-UC NullEncoding /Helvetica vg&newbasefont pop /MathOps-UC UCMathOpsEncoding /Symbol vg&newbasefont pop /Arrows-UC UCArrowsEncoding /Symbol vg&newbasefont pop /Dingbats-UC UCDingbatsEncoding /ZapfDingbats vg&newbasefont pop % Make the SansSerif composite fonts. /SansSerif /Helvetica 16#00 vg&newcompositefont /SansSerif-Bold /Helvetica-Bold 16#01 vg&newcompositefont /SansSerif-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /SansSerif-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Serif composite fonts. /Serif /Times-Roman 16#00 vg&newcompositefont /Serif-Bold /Times-Bold 16#01 vg&newcompositefont /Serif-Italic /Times-Italic 16#02 vg&newcompositefont /Serif-BoldItalic /Times-BoldItalic 16#03 vg&newcompositefont % Make the Monospaced composite fonts. /Monospaced /Courier 16#00 vg&newcompositefont /Monospaced-Bold /Courier-Bold 16#01 vg&newcompositefont /Monospaced-Italic /Courier-Oblique 16#02 vg&newcompositefont /Monospaced-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont % Make the Dialog composite fonts. /Dialog /Helvetica 16#00 vg&newcompositefont /Dialog-Bold /Helvetica-Bold 16#01 vg&newcompositefont /Dialog-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /Dialog-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the DialogInput composite fonts. /DialogInput /Helvetica 16#00 vg&newcompositefont /DialogInput-Bold /Helvetica-Bold 16#01 vg&newcompositefont /DialogInput-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /DialogInput-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Typewriter composite fonts (JDK 1.1 only). /Typewriter /Courier 16#00 vg&newcompositefont /Typewriter-Bold /Courier-Bold 16#01 vg&newcompositefont /Typewriter-Italic /Courier-Oblique 16#02 vg&newcompositefont /Typewriter-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont /cfontH { dup /fontsize exch def /SansSerif exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHB { dup /fontsize exch def /SansSerif-Bold exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHI { dup /fontsize exch def /SansSerif-Italic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHBI { dup /fontsize exch def /SansSerif-BoldItalic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontT { dup /fontsize exch def /Serif exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTB { dup /fontsize exch def /Serif-Bold exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTI { dup /fontsize exch def /Serif-Italic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTBI { dup /fontsize exch def /Serif-BoldItalic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontC { dup /fontsize exch def /Typewriter exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCB { dup /fontsize exch def /Typewriter-Bold exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCI { dup /fontsize exch def /Typewriter-Italic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCBI { dup /fontsize exch def /Typewriter-BoldItalic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def % Darken or lighten the current color. /darken {0.7 exch exp 3 copy q 4 -1 roll vg&C currentrgbcolor 3 {4 -2 roll mul} repeat 3 array astore Q} def /displayColorMap << /Cr [1.00 0.00 0.00] /Cg [0.00 1.00 0.00] /Cb [0.00 0.00 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.00 0.00] /CGg [0.00 1.00 0.00] /CGb [0.00 0.00 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.00 0.00] /CIg [0.00 1.00 0.00] /CIb [0.00 0.00 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /printColorMap << /Cr [1.00 0.33 0.33] /Cg [0.33 1.00 0.33] /Cb [0.33 0.33 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.33 0.33] /CGg [0.33 1.00 0.33] /CGb [0.33 0.33 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.33 0.33] /CIg [0.33 1.00 0.33] /CIb [0.33 0.33 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /grayColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [0.75] /CGg [1 ] /CGb [0.50] /CGc [0.75] /CGm [0.50] /CGy [1 ] /CGo [0.75] /CGp [1 ] /CGw [0 ] /CGgrl [0.25] /CGgr [0.50] /CGgrd [0.75] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def /bwColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [1 ] /CGg [1 ] /CGb [1 ] /CGc [1 ] /CGm [1 ] /CGy [1 ] /CGo [1 ] /CGp [1 ] /CGw [0 ] /CGgrl [1 ] /CGgr [1 ] /CGgrd [1 ] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def % % The following routines handle the alignment of and printing of % tagged strings. % % Predefine the bounding box values. /bbllx 0 def /bblly 0 def /bburx 0 def /bbury 0 def % This routine pops the first unicode character off of a string and returns % the remainder of the string, the character code of first character, % and a "true" if the string was non-zero length. % popfirst % popfirst /popfirst { dup length 1 gt {dup 0 get /vg&fbyte exch def dup 1 get /vg&cbyte exch def dup length 2 sub 2 exch getinterval true} {pop false} ifelse } def % This routine shows a single unicode character given the font and % character codes. % unicharshow -- /unicharshow { 2 string dup 0 5 -1 roll put dup 1 4 -1 roll put internalshow } def % This is an internal routine to alternate between determining the % bounding box for stringsize and showing the string for recshow. % internalshow -- /internalshow {show} def % This is an internal routine to alternate between determining the % bounding box for stringsize and stroking various ornaments. % internalstroke -- /internalstroke {S} def % Sets up internalshow to use the null device to determine string size. % -- nullinternalshow -- /nullinternalshow {/internalshow {false charpath flattenpath pathbbox updatebbox} def} def % Sets up internalstroke to use the null device to determine string size. % -- nullinternalstroke -- /nullinternalstroke { /internalstroke {flattenpath pathbbox updatebbox} def} def % This routine tests to see if the character code matches the first % character of a string. % testchar /testchar {exch dup 3 -1 roll 0 get eq} def % Raise the text baseline for superscripts. % -- raise -- /raise { 0 fontsize 2 div rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-raise the text baseline for superscripts. % -- unraise -- /unraise { /fontsize fontsize 1.5 mul def 0 fontsize 2 div neg rmoveto } def % Lower the text baseline for subscripts. % -- lower -- /lower { 0 fontsize 3 div neg rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-lower the text baseline for subscripts. % -- unlower -- /unlower { /fontsize fontsize 1.5 mul def 0 fontsize 3 div rmoveto } def % Compare the top two elements on the stack and leave only the % larger one. /maxval {2 copy gt {pop} {exch pop} ifelse} def % Tokenize a string. Do not use the usual PostScript token because % parentheses will not be interpreted correctly because of rescanning % of the string. /vg&token {/vg&string exch def /vg&index -1 def /vg&level 0 def 0 2 vg&string length 2 sub { dup dup 1 add exch vg&string exch get 8 bitshift vg&string 3 -1 roll get or dup 16#f0fe eq {pop 1}{16#f0ff eq {-1}{0} ifelse} ifelse /vg&level exch vg&level add def vg&level 0 eq {/vg&index exch def exit} if pop } for vg&index 0 ge { vg&string vg&index 2 add dup vg&string length exch sub getinterval vg&index 2 gt {vg&string 2 vg&index 2 sub getinterval}{()} ifelse true} {false} ifelse } bind def % Recursively show an unicode string. % recshow -- /recshow { popfirst { % Test to see if this is a string attribute. vg&fbyte 16#f0 and 16#e0 eq { q % Font style. currentfont dup /FontStyleBits known {/FontStyleBits get}{pop 0} ifelse vg&cbyte or vg&fontstyles exch get fontsize exch exec vg&token pop recshow currentpoint Q m recshow } { vg&fbyte 16#F8 and 16#F0 eq { % Superscript and/or subscript. vg&cbyte 16#00 eq { vg&token pop exch vg&token pop 3 -1 roll q raise recshow unraise currentpoint pop Q exch q lower recshow unlower currentpoint pop Q maxval currentpoint exch pop m recshow } if % Strikeout. vg&cbyte 16#01 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll fontsize 3 div add moveto fontsize 3 div add lineto internalstroke Q recshow} if % Underline. vg&cbyte 16#02 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dashed underline. vg&cbyte 16#03 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J [ vg&uthick 5 mul vg&uthick 2 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dotted underline. vg&cbyte 16#04 eq { vg&token pop currentpoint 3 -1 roll recshow q 1 J [ 0 vg&uthick 3 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Thick underline. vg&cbyte 16#05 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Gray thick underline. vg&cbyte 16#06 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w 0.5 setgray currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Overbar. vg&cbyte 16#07 eq { vg&token pop dup stringsize relative 4 1 roll pop pop exch 3 -1 roll recshow q 0 J vg&underline vg&uthick w vg&uoffset neg add dup currentpoint pop exch m l internalstroke Q recshow} if } { vg&fbyte vg&cbyte unicharshow recshow } ifelse } ifelse } if } def % Get the underline position and thickness from the current font. /vg&underline { currentfont dup /FontType get 0 eq {/FDepVector get 0 get} if dup dup /FontInfo known { /FontInfo get dup dup /UnderlinePosition known { /UnderlinePosition get /vg&uoffset exch def } { pop /vg&uoffset 0 def } ifelse dup /UnderlineThickness known { /UnderlineThickness get /vg&uthick exch def } { pop /vg&uthick 0 def } ifelse } { pop /vg&uoffset 0 def /vg&uthick 0 def } ifelse /FontMatrix get currentfont dup /FontType get 0 eq {/FontMatrix get matrix concatmatrix}{pop} ifelse dup 0 vg&uoffset 3 -1 roll transform /vg&uoffset exch def pop 0 vg&uthick 3 -1 roll transform /vg&uthick exch def pop } def % Make a frame with the coordinates on the stack. % frame -- /frame {4 copy m 3 1 roll exch l 4 -2 roll l l h} def % Resets the accumulated bounding box to a degenerate box at the % current point. % -- resetbbox -- /resetbbox { currentpoint 2 copy /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Update the accumulated bounding box. % updatebbox -- /updatebbox { dup bbury gt {/bbury exch def} {pop} ifelse dup bburx gt {/bburx exch def} {pop} ifelse dup bblly lt {/bblly exch def} {pop} ifelse dup bbllx lt {/bbllx exch def} {pop} ifelse } def % Set the bounding box to the values on the stack. % updatebbox -- /restorebbox { /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Push the accumulated bounding box onto the stack. % -- pushbbox /pushbbox {bbllx bblly bburx bbury} def % Make the relative bounding box relative to the currentpoint. % inflate /inflate { 2 {fontsize 0.2 mul add 4 1 roll} repeat 2 {fontsize 0.2 mul sub 4 1 roll} repeat } def % Make the relative bounding box relative to the currentpoint. % relative /relative { currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll } def % Returns the size of a string appropriate for recshow. % stringsize /stringsize { pushbbox /internalshow load /internalstroke load 7 -1 roll q nulldevice 0 0 m nullinternalshow nullinternalstroke resetbbox recshow /internalstroke exch def /internalshow exch def pushbbox 8 -4 roll restorebbox Q } def % Calculate values for string positioning. /calcval {4 copy 3 -1 roll sub /widy exch def sub neg /widx exch def pop pop /dy exch def /dx exch def} def % Utilities to position a string. % First letter (U=upper, C=center, B=baseline, L=lower) % Second letter (L=left, C=center, R=right) /align [ {calcval dx neg widy dy add neg rmoveto} % UL {calcval dx neg widy 2 div dy add neg rmoveto} % CL {calcval dx neg 0 rmoveto} % BL {calcval dx neg dy neg rmoveto} % LL {calcval widx dx add neg widy dy add neg rmoveto} % UR {calcval widx dx add neg widy 2 div dy add neg rmoveto} % CR {calcval widx dx add neg 0 rmoveto} % BR {calcval widx dx add neg dy neg rmoveto} % LR {calcval widx 2 div dx add neg widy dy add neg rmoveto} % UC {calcval widx 2 div dx add neg widy 2 div dy add neg rmoveto} % CC {calcval widx 2 div dx add neg 0 rmoveto} % BC {calcval widx 2 div dx add neg dy neg rmoveto} % LC ] def /vg&str {m q 1 -1 scale dup stringsize 4 copy align 11 -1 roll get exec q inflate relative frame exch exec Q recshow Q} def end /procDict exch def %%EndProlog %%BeginSetup save procDict begin printColorMap begin 595 791 setpagesize 20 20 20 20 setmargins 0 0 setorigin 600 600 setsize fittopage portrait imagescale cliptobounds setbasematrix /Helvetica 10 sf defaultGraphicsState %%EndSetup 0.00000 0.00000 0.00000 RG [ 1.00000 0.00000 0.00000 1.00000 0.00000 0.00000 ] defaultmatrix matrix concatmatrix setmatrix 1.00000 w 2 J 0 j 10.0000 M [ ] 0.00000 d .800000 .800000 .800000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG q 0 0 600 600 rc 1.00000 1.00000 1.00000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG 0.00000 150.000 moveto q 1 -1 scale /SansSerif findfont 30.0 scalefont setfont (\000A\000n\000t) show Q 45.0293 134.919 moveto q 1 -1 scale /SansSerif-Bold findfont 20.0 scalefont setfont (\000B\000u\000l\000l) show Q 82.8027 150.000 moveto q 1 -1 scale /SansSerif findfont 30.0 scalefont setfont (\000C\000a\000t) show Q 129.487 165.081 moveto q 1 -1 scale /SansSerif-Italic findfont 20.0 scalefont setfont (\000D\000o\000g) show Q 166.177 150.000 moveto q 1 -1 scale /SansSerif findfont 30.0 scalefont setfont (\000E\000e\000l) show Q 209.536 134.919 moveto q 1 -1 scale /SansSerif findfont 20.0 scalefont setfont (\000F\000r\000o\000g) show Q 250.659 150.000 moveto q 1 -1 scale /SansSerif findfont 30.0 scalefont setfont (\000G\000e\000c\000k\000o) show Q 337.363 165.081 moveto q 1 -1 scale /SansSerif findfont 20.0 scalefont setfont (\000H\000o\000g) show Q 0.00000 300.000 moveto q 1 -1 scale /Serif findfont 30.0 scalefont setfont (\000A\000n\000t) show Q 45.0000 284.919 moveto q 1 -1 scale /Serif-Bold findfont 20.0 scalefont setfont (\000B\000u\000l\000l) show Q 80.5762 300.000 moveto q 1 -1 scale /Serif findfont 30.0 scalefont setfont (\000C\000a\000t) show Q 122.236 315.081 moveto q 1 -1 scale /Serif-Italic findfont 20.0 scalefont setfont (\000D\000o\000g) show Q 156.680 300.000 moveto q 1 -1 scale /Serif findfont 30.0 scalefont setfont (\000E\000e\000l) show Q 196.655 284.919 moveto q 1 -1 scale /Serif findfont 20.0 scalefont setfont (\000F\000r\000o\000g) show Q 234.438 300.000 moveto q 1 -1 scale /Serif findfont 30.0 scalefont setfont (\000G\000e\000c\000k\000o) show Q 312.734 315.081 moveto q 1 -1 scale /Serif findfont 20.0 scalefont setfont (\000H\000o\000g) show Q 0.00000 450.000 moveto q 1 -1 scale /Monospaced findfont 30.0 scalefont setfont (\000A\000n\000t) show Q 54.0088 434.919 moveto q 1 -1 scale /Monospaced-Bold findfont 20.0 scalefont setfont (\000B\000u\000l\000l) show Q 102.017 450.000 moveto q 1 -1 scale /Monospaced findfont 30.0 scalefont setfont (\000C\000a\000t) show Q 156.025 465.081 moveto q 1 -1 scale /Monospaced-Italic findfont 20.0 scalefont setfont (\000D\000o\000g) show Q 192.031 450.000 moveto q 1 -1 scale /Monospaced findfont 30.0 scalefont setfont (\000E\000e\000l) show Q 246.040 434.919 moveto q 1 -1 scale /Monospaced findfont 20.0 scalefont setfont (\000F\000r\000o\000g) show Q 294.048 450.000 moveto q 1 -1 scale /Monospaced findfont 30.0 scalefont setfont (\000G\000e\000c\000k\000o) show Q 384.062 465.081 moveto q 1 -1 scale /Monospaced findfont 20.0 scalefont setfont (\000H\000o\000g) show Q Q end end restore showpage %%Trailer %%EOF src/test/resources/ps/TestSymbols2D.ps0000644000175000017500000011406310344614150017325 0ustar user01user01%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 20 118 575 673 %%Creator: FreeHEP Graphics2D Driver %%Producer: org.freehep.graphicsio.ps.PSGraphics2D %%For: %%Title: %%LanguageLevel: 3 %%EndComments %%BeginProlog 100 dict dup begin % % File: org/freehep/graphicsio.ps/PSProlog.txt % Author: Charles Loomis % % Redefinitions which save some space in the output file. These are also % the same as the PDF operators. /q {gsave} def /Q {grestore} def /n {newpath} def /m {moveto} def /l {lineto} def /c {curveto} def /h {closepath} def /re {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath} def /f {fill} def /f* {eofill} def /F {gsave vg&FC fill grestore} def /F* {gsave vg&FC eofill grestore} def /s {closepath stroke} def /S {stroke} def /b {closepath gsave vg&FC fill grestore gsave stroke grestore newpath} def /B {gsave vg&FC fill grestore gsave stroke grestore newpath} def /b* {closepath gsave vg&FC eofill grestore gsave stroke grestore newpath} def /B* {gsave vg&FC eofill grestore gsave stroke grestore newpath} def /g {1 array astore /vg&fcolor exch def} def /G {setgray} def /k {4 array astore /vg&fcolor exch def} def /K {setcmykcolor} def /rg {3 array astore /vg&fcolor exch def} def /RG {setrgbcolor} def % Initialize the fill color. 0 0 0 rg /vg&FC {mark vg&fcolor aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /vg&DFC {/vg&fcolor exch def} def /vg&C {mark exch aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /w {setlinewidth} def /j {setlinejoin} def /J {setlinecap} def /M {setmiterlimit} def /d {setdash} def /i {setflat} def /W {clip} def /W* {eoclip} def % Setup the default graphics state. % (black; 1 pt. linewidth; miter join; butt-ends; solid) /defaultGraphicsState {0 g 1 w 0 j 0 J [] 0 d} def % Emulation of the rectangle operators for PostScript implementations % which do not implement all Level 2 features. This is an INCOMPLETE % emulation; only the "x y width height rect..." form is emulated. /*rf {gsave newpath re fill grestore} def /*rs {gsave newpath re stroke grestore} def /*rc {newpath re clip} def /rf /rectfill where {pop /rectfill}{/*rf} ifelse load def /rs /rectstroke where {pop /rectstroke}{/*rs} ifelse load def /rc /rectclip where {pop /rectclip}{/*rc} ifelse load def % Emulation of the selectfont operator. This includes a 20% increase in % the fontsize which is necessary to get sizes similar to the Java fonts. /*sf {exch findfont exch dup type /arraytype eq {makefont}{scalefont} ifelse setfont} bind def /sf /selectfont where {pop {1.2 mul selectfont}}{{1.2 mul *sf}} ifelse def % Special version of stroke which allows the dash pattern to continue % across path segments. (This may be needed for PostScript although % modern printers seem to do this correctly.) /vg&stroke { currentdash pop length 0 eq {stroke} { currentdash /vg&doffset exch def pop flattenpath {m vg&resetdash} {2 copy currentpoint 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt 3 1 roll l currentdash 3 -1 roll add setdash} {} {h vg&resetdash} pathforall stroke vg&resetdash } ifelse } def /vg&resetdash {currentdash pop vg&doffset setdash} def % Initialize variables for safety. /delta 0 def /xv 0 def /yv 0 def /width 0 def /height 0 def % Initialize to portrait INTERNATIONAL (Letter-height, A4-width) page. /pw 595 def /ph 791 def /po true def /ftp false def % Initialize margins to 20 points. /ml 20 def /mr 20 def /mt 20 def /mb 20 def % Temporary matrices. /smatrix 0 def /nmatrix 0 def % set page size (usage: setpagesize) /setpagesize {/ph exch def /pw exch def} def % set page orientation (usage: portrait or landscape) /portrait {/po true def} def /landscape {/po false def} def % force natural size for image (usage: naturalsize) /naturalsize {/ftp false def} def % resize image to fill page (usage: fittopage) /fittopage {/ftp true def} def % set margins of the page (usage: setmargins) /setmargins {/mr exch def /mt exch def /mb exch def /ml exch def} def % set the graphic's size (usage: setsize) /setsize {/gh exch def /gw exch def} def % set the graphic's origin (usage: setorigin) /setorigin {/gy exch def /gx exch def} def % calculate image center /imagecenter {pw ml sub mr sub 2 div ml add ph mt sub mb sub 2 div mb add} def % calculate the necessary scaling /imagescale {po {gw}{gh} ifelse pw ml sub mr sub div po {gh}{gw} ifelse ph mt sub mb sub div 2 copy lt {exch} if pop ftp not {1 2 copy lt {exch} if pop} if 1 exch div /sfactor exch def /gw gw sfactor mul def /gh gh sfactor mul def} def % calculate image origin /imageorigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div po {add}{sub} ifelse} def % calculate the clipping origin /cliporigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub floor ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div sub floor} def % Set the clipping region to the bounding box. /cliptobounds {cliporigin po {gw}{gh} ifelse 1 add po {gh}{gw} ifelse 1 add rc} def % set the base transformation matrix (usage: setbasematrix) /setbasematrix {imageorigin translate po {0}{90} ifelse rotate sfactor sfactor neg scale /defaultmatrix matrix currentmatrix def} def % The lower-right bias in drawing 1 pt. wide lines. /bias {q 0.5 0.5 translate} def /unbias {Q} def % Draw a line. (x0 y0 x1 y1 line) /L {bias n m l S unbias} def % Polyline primitive. /polyline {n m 1 exch 1 exch {pop currentfile token pop currentfile token pop l} for } def % Draw a polyline (n x0 y0 OPL x1 y1 x2 y2 ... ... xn yn) /OPL {bias polyline S unbias} def % Draw a closed polyline (n x0 y0 CPL x1 y1 x2 y2 ... ... xn yn) /CPL {bias polyline s unbias} def % Draw a filled polyline (n x0 y0 FPL x1 y1 x2 y2 ... ... xn yn) /FPL {polyline h f*} def % Draw an oval. (x y w h OVL) /OVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width currentlinewidth sub 2 div height currentlinewidth sub 2 div neg scale n 0 0 1 5 -2 roll arc smatrix setmatrix S} def % Draw a filled oval. (x y w h FOVL) /FOVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width 2 div height 2 div neg scale n 0 0 m 0 0 1 5 -2 roll arc h smatrix setmatrix f} def % Draw a rounded rectangle. (x y w h arcwidth archeight RREC) /RREC {matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix s} def % Draw a filled rounded rectangle. (x y w h arcwidth archeight FRREC) /FRREC{matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix h f} def % Draw a string. (string x y STR) /STR {q m 1 -1 scale recshow Q} def % Define basic plot symbols. /xys {/siz exch def /yv exch def /xv exch def} def /hline {xys n xv siz 2. div sub yv m siz 0 rlineto S} def /vline {xys n xv yv siz 2. div sub m 0 siz rlineto S} def /plus {xys n xv yv siz 2. div sub m 0 siz rlineto xv siz 2. div sub yv m siz 0 rlineto S} def /dot {n 2. div 0 360 arc s} def /fdot {n 2. div 0 360 arc h f} def /box {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rs} def /fbox {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rf} def /tridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto s} def /ftridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto h f} def % Symbols defined in terms of the others. /star {3 copy cross plus} def /cross {xys q xv yv translate 45 rotate 0 0 siz plus Q} def /diamond {xys q xv yv translate 45 rotate 0 0 siz box Q} def /fdiamond {xys q xv yv translate 45 rotate 0 0 siz fbox Q} def /triup {xys q xv yv translate 180 rotate 0 0 siz tridn Q} def /ftriup {xys q xv yv translate 180 rotate 0 0 siz ftridn Q} def % Define the composite fonts used to print Unicode strings. % Undefine particular values in an encoding array. /vg&undef { {exch dup 3 -1 roll /.notdef put} forall } def /vg&redef { {3 -1 roll dup 4 2 roll put} forall } def % usage: key encoding basefontname vg&newbasefont font /vg&newbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def currentdict end definefont } def % usage: key encoding basefontname vg&newskewedbasefont font /vg&newskewedbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def exch FontMatrix exch matrix concatmatrix /FontMatrix exch def currentdict end definefont } def % usage: basekey suffix vg&nconcat name /vg&nconcat { 2 {dup length string cvs exch} repeat dup length 3 -1 roll dup length 3 -1 roll add string dup 0 4 -1 roll dup length 5 1 roll putinterval dup 4 -2 roll exch putinterval cvn } def %usage: fontname vg&skewmatrix matrix /vg&skewmatrix { findfont dup /FontInfo known { /FontInfo get dup /ItalicAngle known { [ 1 0 4 -1 roll /ItalicAngle get neg dup sin exch cos div 1 0 0 ] } {pop matrix} ifelse } {pop matrix} ifelse } def % usage: newfontname basefontname vg&newcompositefont -- /vg&newcompositefont { /vg&fstyle exch def /vg&bfont exch def /vg&fname exch def << /FontStyleBits vg&fstyle /FontType 0 /FontMatrix matrix /FontName vg&fname /FMapType 2 /Encoding [ 0 1 255 {pop 6} for ] dup 16#00 0 put % Latin dup 16#03 1 put % Greek dup 16#20 2 put % Punctuation dup 16#21 3 put % Arrows dup 16#22 4 put % MathOps dup 16#27 5 put % Dingbats /FDepVector [ vg&bfont /-UC-Latin vg&nconcat UCLatinEncoding vg&bfont vg&newbasefont vg&bfont vg&skewmatrix vg&bfont /-UC-Greek vg&nconcat UCGreekEncoding /Symbol vg&newskewedbasefont vg&bfont /-UC-Punctuation vg&nconcat UCPunctuationEncoding vg&bfont vg&newbasefont /Arrows-UC findfont /MathOps-UC findfont /Dingbats-UC findfont /Undefined-UC findfont ] >> vg&fname exch definefont pop } def % Null encoding vector (all elements set to .notdef) /NullEncoding [ 256 {/.notdef} repeat ] def % Unicode Latin encoding (unicode codes \u0000-\u00ff) /UCLatinEncoding ISOLatin1Encoding dup length array copy dup 16#60 /grave put [ 16#90 16#91 16#92 16#93 16#94 16#95 16#96 16#97 16#98 16#9a 16#9b 16#9d 16#9e 16#9f ] vg&undef def % Unicode Greek encoding (unicode codes \u0370-\u03ff) /UCGreekEncoding NullEncoding dup length array copy << 16#91 /Alpha 16#92 /Beta 16#93 /Gamma 16#94 /Delta 16#95 /Epsilon 16#96 /Zeta 16#97 /Eta 16#98 /Theta 16#99 /Iota 16#9a /Kappa 16#9b /Lambda 16#9c /Mu 16#9d /Nu 16#9e /Xi 16#9f /Omicron 16#a0 /Pi 16#a1 /Rho 16#a3 /Sigma 16#a4 /Tau 16#a5 /Upsilon 16#a6 /Phi 16#a7 /Chi 16#a8 /Psi 16#a9 /Omega 16#b1 /alpha 16#b2 /beta 16#b3 /gamma 16#b4 /delta 16#b5 /epsilon 16#b6 /zeta 16#b7 /eta 16#b8 /theta 16#b9 /iota 16#ba /kappa 16#bb /lambda 16#bc /mu 16#bd /nu 16#be /xi 16#bf /omicron 16#c0 /pi 16#c1 /rho 16#c2 /sigma1 16#c3 /sigma 16#c4 /tau 16#c5 /upsilon 16#c6 /phi1 16#c7 /chi 16#c8 /psi 16#c9 /omega 16#7e /semicolon 16#87 /dotmath 16#d1 /theta1 16#d2 /Upsilon1 16#d5 /phi 16#d6 /omega1 >> vg&redef def % Unicode punctuation encoding (unicode codes \u2000-\u206f) /UCPunctuationEncoding NullEncoding dup length array copy << 16#10 /hyphen 16#11 /hyphen 16#12 /endash 16#13 /emdash 16#18 /quoteleft 16#19 /quoteright 16#1a /quotesinglbase 16#1b /quotesingle 16#1c /quotedblleft 16#1d /quotedblright 16#1e /quotedblbase 16#1f /quotedbl 16#20 /dagger 16#21 /daggerdbl 16#22 /bullet 16#24 /period 16#26 /ellipsis 16#27 /periodcentered 16#30 /perthousand 16#44 /fraction 16#70 /zerosuperior 16#74 /foursuperior 16#75 /fivesuperior 16#76 /sixsuperior 16#77 /sevensuperior 16#78 /eightsuperior 16#79 /ninesuperior 16#7b /hyphensuperior 16#7d /parenleftsuperior 16#7e /parenrightsuperior 16#80 /zeroinferior 16#84 /fourinferior 16#85 /fiveinferior 16#81 /oneinferior 16#82 /twoinferior 16#83 /threeinferior 16#86 /sixinferior 16#87 /seveninferior 16#88 /eightinferior 16#89 /nineinferior 16#8b /hypheninferior 16#8d /parenleftinferior 16#8e /parenrightinferior >> vg&redef def % Unicode mathematical operators encoding (unicode codes \u2200-\u22ff) /UCMathOpsEncoding NullEncoding dup length array copy << 16#00 /universal 16#02 /partialdiff 16#03 /existential 16#05 /emptyset 16#06 /Delta 16#07 /gradient 16#08 /element 16#09 /notelement 16#0b /suchthat 16#0f /product 16#11 /summation 16#12 /minus 16#15 /fraction 16#17 /asteriskmath 16#19 /bullet 16#1a /radical 16#1d /proportional 16#1e /infinity 16#20 /angle 16#23 /bar 16#27 /logicaland 16#28 /logicalor 16#29 /intersection 16#2a /union 16#2b /integral 16#34 /therefore 16#36 /colon 16#3c /similar 16#45 /congruent 16#48 /approxequal 16#60 /notequal 16#61 /equivalence 16#64 /lessequal 16#65 /greaterequal 16#82 /propersubset 16#83 /propersuperset 16#86 /reflexsubset 16#87 /reflexsuperset 16#95 /circleplus 16#97 /circlemultiply 16#a5 /perpendicular 16#03 /existential 16#c0 /logicaland 16#c1 /logicalor 16#c2 /intersection 16#c3 /union 16#c4 /diamond 16#c5 /dotmath >> vg&redef def % Unicode arrows encoding (unicode codes \u2190-\u21ff) % Also includes those "Letterlike" unicode characters % which are available in the symbol font. (unicode codes \u2100-\u214f) /UCArrowsEncoding NullEncoding dup length array copy << 16#11 /Ifraktur 16#1c /Rfraktur 16#22 /trademarkserif 16#35 /aleph 16#90 /arrowleft 16#91 /arrowup 16#92 /arrowright 16#93 /arrowdown 16#94 /arrowboth 16#d0 /arrowdblleft 16#d1 /arrowdblup 16#d2 /arrowdblright 16#d3 /arrowdbldown 16#d4 /arrowdblboth >> vg&redef def /ZapfDingbats findfont /Encoding get dup length array copy /UCDingbatsEncoding exch def 16#20 1 16#7f { dup 16#20 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for 16#a0 1 16#ff { dup 16#40 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for UCDingbatsEncoding [ 16#c0 1 16#ff {} for ] vg&undef [ 16#00 16#05 16#0a 16#0b 16#28 16#4c 16#4e 16#53 16#54 16#55 16#57 16#5f 16#60 16#68 16#69 16#6a 16#6b 16#6c 16#6d 16#6e 16#6f 16#70 16#71 16#72 16#73 16#74 16#75 16#95 16#96 16#97 16#b0 16#bf ] vg&undef pop % Define the base fonts which don't change. /Undefined-UC NullEncoding /Helvetica vg&newbasefont pop /MathOps-UC UCMathOpsEncoding /Symbol vg&newbasefont pop /Arrows-UC UCArrowsEncoding /Symbol vg&newbasefont pop /Dingbats-UC UCDingbatsEncoding /ZapfDingbats vg&newbasefont pop % Make the SansSerif composite fonts. /SansSerif /Helvetica 16#00 vg&newcompositefont /SansSerif-Bold /Helvetica-Bold 16#01 vg&newcompositefont /SansSerif-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /SansSerif-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Serif composite fonts. /Serif /Times-Roman 16#00 vg&newcompositefont /Serif-Bold /Times-Bold 16#01 vg&newcompositefont /Serif-Italic /Times-Italic 16#02 vg&newcompositefont /Serif-BoldItalic /Times-BoldItalic 16#03 vg&newcompositefont % Make the Monospaced composite fonts. /Monospaced /Courier 16#00 vg&newcompositefont /Monospaced-Bold /Courier-Bold 16#01 vg&newcompositefont /Monospaced-Italic /Courier-Oblique 16#02 vg&newcompositefont /Monospaced-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont % Make the Dialog composite fonts. /Dialog /Helvetica 16#00 vg&newcompositefont /Dialog-Bold /Helvetica-Bold 16#01 vg&newcompositefont /Dialog-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /Dialog-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the DialogInput composite fonts. /DialogInput /Helvetica 16#00 vg&newcompositefont /DialogInput-Bold /Helvetica-Bold 16#01 vg&newcompositefont /DialogInput-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /DialogInput-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Typewriter composite fonts (JDK 1.1 only). /Typewriter /Courier 16#00 vg&newcompositefont /Typewriter-Bold /Courier-Bold 16#01 vg&newcompositefont /Typewriter-Italic /Courier-Oblique 16#02 vg&newcompositefont /Typewriter-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont /cfontH { dup /fontsize exch def /SansSerif exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHB { dup /fontsize exch def /SansSerif-Bold exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHI { dup /fontsize exch def /SansSerif-Italic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHBI { dup /fontsize exch def /SansSerif-BoldItalic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontT { dup /fontsize exch def /Serif exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTB { dup /fontsize exch def /Serif-Bold exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTI { dup /fontsize exch def /Serif-Italic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTBI { dup /fontsize exch def /Serif-BoldItalic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontC { dup /fontsize exch def /Typewriter exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCB { dup /fontsize exch def /Typewriter-Bold exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCI { dup /fontsize exch def /Typewriter-Italic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCBI { dup /fontsize exch def /Typewriter-BoldItalic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def % Darken or lighten the current color. /darken {0.7 exch exp 3 copy q 4 -1 roll vg&C currentrgbcolor 3 {4 -2 roll mul} repeat 3 array astore Q} def /displayColorMap << /Cr [1.00 0.00 0.00] /Cg [0.00 1.00 0.00] /Cb [0.00 0.00 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.00 0.00] /CGg [0.00 1.00 0.00] /CGb [0.00 0.00 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.00 0.00] /CIg [0.00 1.00 0.00] /CIb [0.00 0.00 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /printColorMap << /Cr [1.00 0.33 0.33] /Cg [0.33 1.00 0.33] /Cb [0.33 0.33 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.33 0.33] /CGg [0.33 1.00 0.33] /CGb [0.33 0.33 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.33 0.33] /CIg [0.33 1.00 0.33] /CIb [0.33 0.33 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /grayColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [0.75] /CGg [1 ] /CGb [0.50] /CGc [0.75] /CGm [0.50] /CGy [1 ] /CGo [0.75] /CGp [1 ] /CGw [0 ] /CGgrl [0.25] /CGgr [0.50] /CGgrd [0.75] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def /bwColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [1 ] /CGg [1 ] /CGb [1 ] /CGc [1 ] /CGm [1 ] /CGy [1 ] /CGo [1 ] /CGp [1 ] /CGw [0 ] /CGgrl [1 ] /CGgr [1 ] /CGgrd [1 ] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def % % The following routines handle the alignment of and printing of % tagged strings. % % Predefine the bounding box values. /bbllx 0 def /bblly 0 def /bburx 0 def /bbury 0 def % This routine pops the first unicode character off of a string and returns % the remainder of the string, the character code of first character, % and a "true" if the string was non-zero length. % popfirst % popfirst /popfirst { dup length 1 gt {dup 0 get /vg&fbyte exch def dup 1 get /vg&cbyte exch def dup length 2 sub 2 exch getinterval true} {pop false} ifelse } def % This routine shows a single unicode character given the font and % character codes. % unicharshow -- /unicharshow { 2 string dup 0 5 -1 roll put dup 1 4 -1 roll put internalshow } def % This is an internal routine to alternate between determining the % bounding box for stringsize and showing the string for recshow. % internalshow -- /internalshow {show} def % This is an internal routine to alternate between determining the % bounding box for stringsize and stroking various ornaments. % internalstroke -- /internalstroke {S} def % Sets up internalshow to use the null device to determine string size. % -- nullinternalshow -- /nullinternalshow {/internalshow {false charpath flattenpath pathbbox updatebbox} def} def % Sets up internalstroke to use the null device to determine string size. % -- nullinternalstroke -- /nullinternalstroke { /internalstroke {flattenpath pathbbox updatebbox} def} def % This routine tests to see if the character code matches the first % character of a string. % testchar /testchar {exch dup 3 -1 roll 0 get eq} def % Raise the text baseline for superscripts. % -- raise -- /raise { 0 fontsize 2 div rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-raise the text baseline for superscripts. % -- unraise -- /unraise { /fontsize fontsize 1.5 mul def 0 fontsize 2 div neg rmoveto } def % Lower the text baseline for subscripts. % -- lower -- /lower { 0 fontsize 3 div neg rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-lower the text baseline for subscripts. % -- unlower -- /unlower { /fontsize fontsize 1.5 mul def 0 fontsize 3 div rmoveto } def % Compare the top two elements on the stack and leave only the % larger one. /maxval {2 copy gt {pop} {exch pop} ifelse} def % Tokenize a string. Do not use the usual PostScript token because % parentheses will not be interpreted correctly because of rescanning % of the string. /vg&token {/vg&string exch def /vg&index -1 def /vg&level 0 def 0 2 vg&string length 2 sub { dup dup 1 add exch vg&string exch get 8 bitshift vg&string 3 -1 roll get or dup 16#f0fe eq {pop 1}{16#f0ff eq {-1}{0} ifelse} ifelse /vg&level exch vg&level add def vg&level 0 eq {/vg&index exch def exit} if pop } for vg&index 0 ge { vg&string vg&index 2 add dup vg&string length exch sub getinterval vg&index 2 gt {vg&string 2 vg&index 2 sub getinterval}{()} ifelse true} {false} ifelse } bind def % Recursively show an unicode string. % recshow -- /recshow { popfirst { % Test to see if this is a string attribute. vg&fbyte 16#f0 and 16#e0 eq { q % Font style. currentfont dup /FontStyleBits known {/FontStyleBits get}{pop 0} ifelse vg&cbyte or vg&fontstyles exch get fontsize exch exec vg&token pop recshow currentpoint Q m recshow } { vg&fbyte 16#F8 and 16#F0 eq { % Superscript and/or subscript. vg&cbyte 16#00 eq { vg&token pop exch vg&token pop 3 -1 roll q raise recshow unraise currentpoint pop Q exch q lower recshow unlower currentpoint pop Q maxval currentpoint exch pop m recshow } if % Strikeout. vg&cbyte 16#01 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll fontsize 3 div add moveto fontsize 3 div add lineto internalstroke Q recshow} if % Underline. vg&cbyte 16#02 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dashed underline. vg&cbyte 16#03 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J [ vg&uthick 5 mul vg&uthick 2 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dotted underline. vg&cbyte 16#04 eq { vg&token pop currentpoint 3 -1 roll recshow q 1 J [ 0 vg&uthick 3 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Thick underline. vg&cbyte 16#05 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Gray thick underline. vg&cbyte 16#06 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w 0.5 setgray currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Overbar. vg&cbyte 16#07 eq { vg&token pop dup stringsize relative 4 1 roll pop pop exch 3 -1 roll recshow q 0 J vg&underline vg&uthick w vg&uoffset neg add dup currentpoint pop exch m l internalstroke Q recshow} if } { vg&fbyte vg&cbyte unicharshow recshow } ifelse } ifelse } if } def % Get the underline position and thickness from the current font. /vg&underline { currentfont dup /FontType get 0 eq {/FDepVector get 0 get} if dup dup /FontInfo known { /FontInfo get dup dup /UnderlinePosition known { /UnderlinePosition get /vg&uoffset exch def } { pop /vg&uoffset 0 def } ifelse dup /UnderlineThickness known { /UnderlineThickness get /vg&uthick exch def } { pop /vg&uthick 0 def } ifelse } { pop /vg&uoffset 0 def /vg&uthick 0 def } ifelse /FontMatrix get currentfont dup /FontType get 0 eq {/FontMatrix get matrix concatmatrix}{pop} ifelse dup 0 vg&uoffset 3 -1 roll transform /vg&uoffset exch def pop 0 vg&uthick 3 -1 roll transform /vg&uthick exch def pop } def % Make a frame with the coordinates on the stack. % frame -- /frame {4 copy m 3 1 roll exch l 4 -2 roll l l h} def % Resets the accumulated bounding box to a degenerate box at the % current point. % -- resetbbox -- /resetbbox { currentpoint 2 copy /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Update the accumulated bounding box. % updatebbox -- /updatebbox { dup bbury gt {/bbury exch def} {pop} ifelse dup bburx gt {/bburx exch def} {pop} ifelse dup bblly lt {/bblly exch def} {pop} ifelse dup bbllx lt {/bbllx exch def} {pop} ifelse } def % Set the bounding box to the values on the stack. % updatebbox -- /restorebbox { /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Push the accumulated bounding box onto the stack. % -- pushbbox /pushbbox {bbllx bblly bburx bbury} def % Make the relative bounding box relative to the currentpoint. % inflate /inflate { 2 {fontsize 0.2 mul add 4 1 roll} repeat 2 {fontsize 0.2 mul sub 4 1 roll} repeat } def % Make the relative bounding box relative to the currentpoint. % relative /relative { currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll } def % Returns the size of a string appropriate for recshow. % stringsize /stringsize { pushbbox /internalshow load /internalstroke load 7 -1 roll q nulldevice 0 0 m nullinternalshow nullinternalstroke resetbbox recshow /internalstroke exch def /internalshow exch def pushbbox 8 -4 roll restorebbox Q } def % Calculate values for string positioning. /calcval {4 copy 3 -1 roll sub /widy exch def sub neg /widx exch def pop pop /dy exch def /dx exch def} def % Utilities to position a string. % First letter (U=upper, C=center, B=baseline, L=lower) % Second letter (L=left, C=center, R=right) /align [ {calcval dx neg widy dy add neg rmoveto} % UL {calcval dx neg widy 2 div dy add neg rmoveto} % CL {calcval dx neg 0 rmoveto} % BL {calcval dx neg dy neg rmoveto} % LL {calcval widx dx add neg widy dy add neg rmoveto} % UR {calcval widx dx add neg widy 2 div dy add neg rmoveto} % CR {calcval widx dx add neg 0 rmoveto} % BR {calcval widx dx add neg dy neg rmoveto} % LR {calcval widx 2 div dx add neg widy dy add neg rmoveto} % UC {calcval widx 2 div dx add neg widy 2 div dy add neg rmoveto} % CC {calcval widx 2 div dx add neg 0 rmoveto} % BC {calcval widx 2 div dx add neg dy neg rmoveto} % LC ] def /vg&str {m q 1 -1 scale dup stringsize 4 copy align 11 -1 roll get exec q inflate relative frame exch exec Q recshow Q} def end /procDict exch def %%EndProlog %%BeginSetup save procDict begin printColorMap begin 595 791 setpagesize 20 20 20 20 setmargins 0 0 setorigin 600 600 setsize fittopage portrait imagescale cliptobounds setbasematrix /Helvetica 10 sf defaultGraphicsState %%EndSetup 0.00000 0.00000 0.00000 RG [ 1.00000 0.00000 0.00000 1.00000 0.00000 0.00000 ] defaultmatrix matrix concatmatrix setmatrix 1.00000 w 2 J 0 j 10.0000 M [ ] 0.00000 d .800000 .800000 .800000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG q 0 0 600 600 rc 1.00000 0.00000 0.00000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG 60.0000 37.0000 50.0000 vline 180.000 37.0000 50.0000 hline 300.000 37.0000 50.0000 plus 420.000 37.0000 50.0000 cross 540.000 37.0000 50.0000 star 5.00000 w 60.0000 112.000 50.0000 vline 180.000 112.000 50.0000 hline 300.000 112.000 50.0000 plus 420.000 112.000 50.0000 cross 540.000 112.000 50.0000 star 1.00000 w 60.0000 187.000 50.0000 dot 180.000 187.000 50.0000 box 300.000 187.000 50.0000 triup 420.000 187.000 50.0000 tridn 540.000 187.000 50.0000 diamond 5.00000 w 60.0000 262.000 50.0000 dot 180.000 262.000 50.0000 box 300.000 262.000 50.0000 triup 420.000 262.000 50.0000 tridn 540.000 262.000 50.0000 diamond 1.00000 w 60.0000 337.000 50.0000 fdot 180.000 337.000 50.0000 fbox 300.000 337.000 50.0000 ftriup 420.000 337.000 50.0000 ftridn 540.000 337.000 50.0000 fdiamond 5.00000 w 60.0000 412.000 50.0000 fdot 180.000 412.000 50.0000 fbox 300.000 412.000 50.0000 ftriup 420.000 412.000 50.0000 ftridn 540.000 412.000 50.0000 fdiamond 1.00000 w 0.00000 1.00000 1.00000 RG 60.0000 487.000 50.0000 fdot 0.00000 0.00000 0.00000 RG 60.0000 487.000 50.0000 dot 0.00000 1.00000 1.00000 RG 180.000 487.000 50.0000 fbox 0.00000 0.00000 0.00000 RG 180.000 487.000 50.0000 box 0.00000 1.00000 1.00000 RG 300.000 487.000 50.0000 ftriup 0.00000 0.00000 0.00000 RG 300.000 487.000 50.0000 triup 0.00000 1.00000 1.00000 RG 420.000 487.000 50.0000 ftridn 0.00000 0.00000 0.00000 RG 420.000 487.000 50.0000 tridn 0.00000 1.00000 1.00000 RG 540.000 487.000 50.0000 fdiamond 0.00000 0.00000 0.00000 RG 540.000 487.000 50.0000 diamond 5.00000 w 0.00000 1.00000 1.00000 RG 60.0000 562.000 50.0000 fdot 0.00000 0.00000 0.00000 RG 60.0000 562.000 50.0000 dot 0.00000 1.00000 1.00000 RG 180.000 562.000 50.0000 fbox 0.00000 0.00000 0.00000 RG 180.000 562.000 50.0000 box 0.00000 1.00000 1.00000 RG 300.000 562.000 50.0000 ftriup 0.00000 0.00000 0.00000 RG 300.000 562.000 50.0000 triup 0.00000 1.00000 1.00000 RG 420.000 562.000 50.0000 ftridn 0.00000 0.00000 0.00000 RG 420.000 562.000 50.0000 tridn 0.00000 1.00000 1.00000 RG 540.000 562.000 50.0000 fdiamond 0.00000 0.00000 0.00000 RG 540.000 562.000 50.0000 diamond Q end end restore showpage %%Trailer %%EOF src/test/resources/ps/TestClip.ps0000644000175000017500000015356710344614150016412 0ustar user01user01%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 20 118 575 673 %%Creator: FreeHEP Graphics2D Driver %%Producer: org.freehep.graphicsio.ps.PSGraphics2D %%For: %%Title: %%LanguageLevel: 3 %%EndComments %%BeginProlog 100 dict dup begin % % File: org/freehep/graphicsio.ps/PSProlog.txt % Author: Charles Loomis % % Redefinitions which save some space in the output file. These are also % the same as the PDF operators. /q {gsave} def /Q {grestore} def /n {newpath} def /m {moveto} def /l {lineto} def /c {curveto} def /h {closepath} def /re {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath} def /f {fill} def /f* {eofill} def /F {gsave vg&FC fill grestore} def /F* {gsave vg&FC eofill grestore} def /s {closepath stroke} def /S {stroke} def /b {closepath gsave vg&FC fill grestore gsave stroke grestore newpath} def /B {gsave vg&FC fill grestore gsave stroke grestore newpath} def /b* {closepath gsave vg&FC eofill grestore gsave stroke grestore newpath} def /B* {gsave vg&FC eofill grestore gsave stroke grestore newpath} def /g {1 array astore /vg&fcolor exch def} def /G {setgray} def /k {4 array astore /vg&fcolor exch def} def /K {setcmykcolor} def /rg {3 array astore /vg&fcolor exch def} def /RG {setrgbcolor} def % Initialize the fill color. 0 0 0 rg /vg&FC {mark vg&fcolor aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /vg&DFC {/vg&fcolor exch def} def /vg&C {mark exch aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /w {setlinewidth} def /j {setlinejoin} def /J {setlinecap} def /M {setmiterlimit} def /d {setdash} def /i {setflat} def /W {clip} def /W* {eoclip} def % Setup the default graphics state. % (black; 1 pt. linewidth; miter join; butt-ends; solid) /defaultGraphicsState {0 g 1 w 0 j 0 J [] 0 d} def % Emulation of the rectangle operators for PostScript implementations % which do not implement all Level 2 features. This is an INCOMPLETE % emulation; only the "x y width height rect..." form is emulated. /*rf {gsave newpath re fill grestore} def /*rs {gsave newpath re stroke grestore} def /*rc {newpath re clip} def /rf /rectfill where {pop /rectfill}{/*rf} ifelse load def /rs /rectstroke where {pop /rectstroke}{/*rs} ifelse load def /rc /rectclip where {pop /rectclip}{/*rc} ifelse load def % Emulation of the selectfont operator. This includes a 20% increase in % the fontsize which is necessary to get sizes similar to the Java fonts. /*sf {exch findfont exch dup type /arraytype eq {makefont}{scalefont} ifelse setfont} bind def /sf /selectfont where {pop {1.2 mul selectfont}}{{1.2 mul *sf}} ifelse def % Special version of stroke which allows the dash pattern to continue % across path segments. (This may be needed for PostScript although % modern printers seem to do this correctly.) /vg&stroke { currentdash pop length 0 eq {stroke} { currentdash /vg&doffset exch def pop flattenpath {m vg&resetdash} {2 copy currentpoint 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt 3 1 roll l currentdash 3 -1 roll add setdash} {} {h vg&resetdash} pathforall stroke vg&resetdash } ifelse } def /vg&resetdash {currentdash pop vg&doffset setdash} def % Initialize variables for safety. /delta 0 def /xv 0 def /yv 0 def /width 0 def /height 0 def % Initialize to portrait INTERNATIONAL (Letter-height, A4-width) page. /pw 595 def /ph 791 def /po true def /ftp false def % Initialize margins to 20 points. /ml 20 def /mr 20 def /mt 20 def /mb 20 def % Temporary matrices. /smatrix 0 def /nmatrix 0 def % set page size (usage: setpagesize) /setpagesize {/ph exch def /pw exch def} def % set page orientation (usage: portrait or landscape) /portrait {/po true def} def /landscape {/po false def} def % force natural size for image (usage: naturalsize) /naturalsize {/ftp false def} def % resize image to fill page (usage: fittopage) /fittopage {/ftp true def} def % set margins of the page (usage: setmargins) /setmargins {/mr exch def /mt exch def /mb exch def /ml exch def} def % set the graphic's size (usage: setsize) /setsize {/gh exch def /gw exch def} def % set the graphic's origin (usage: setorigin) /setorigin {/gy exch def /gx exch def} def % calculate image center /imagecenter {pw ml sub mr sub 2 div ml add ph mt sub mb sub 2 div mb add} def % calculate the necessary scaling /imagescale {po {gw}{gh} ifelse pw ml sub mr sub div po {gh}{gw} ifelse ph mt sub mb sub div 2 copy lt {exch} if pop ftp not {1 2 copy lt {exch} if pop} if 1 exch div /sfactor exch def /gw gw sfactor mul def /gh gh sfactor mul def} def % calculate image origin /imageorigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div po {add}{sub} ifelse} def % calculate the clipping origin /cliporigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub floor ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div sub floor} def % Set the clipping region to the bounding box. /cliptobounds {cliporigin po {gw}{gh} ifelse 1 add po {gh}{gw} ifelse 1 add rc} def % set the base transformation matrix (usage: setbasematrix) /setbasematrix {imageorigin translate po {0}{90} ifelse rotate sfactor sfactor neg scale /defaultmatrix matrix currentmatrix def} def % The lower-right bias in drawing 1 pt. wide lines. /bias {q 0.5 0.5 translate} def /unbias {Q} def % Draw a line. (x0 y0 x1 y1 line) /L {bias n m l S unbias} def % Polyline primitive. /polyline {n m 1 exch 1 exch {pop currentfile token pop currentfile token pop l} for } def % Draw a polyline (n x0 y0 OPL x1 y1 x2 y2 ... ... xn yn) /OPL {bias polyline S unbias} def % Draw a closed polyline (n x0 y0 CPL x1 y1 x2 y2 ... ... xn yn) /CPL {bias polyline s unbias} def % Draw a filled polyline (n x0 y0 FPL x1 y1 x2 y2 ... ... xn yn) /FPL {polyline h f*} def % Draw an oval. (x y w h OVL) /OVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width currentlinewidth sub 2 div height currentlinewidth sub 2 div neg scale n 0 0 1 5 -2 roll arc smatrix setmatrix S} def % Draw a filled oval. (x y w h FOVL) /FOVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width 2 div height 2 div neg scale n 0 0 m 0 0 1 5 -2 roll arc h smatrix setmatrix f} def % Draw a rounded rectangle. (x y w h arcwidth archeight RREC) /RREC {matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix s} def % Draw a filled rounded rectangle. (x y w h arcwidth archeight FRREC) /FRREC{matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix h f} def % Draw a string. (string x y STR) /STR {q m 1 -1 scale recshow Q} def % Define basic plot symbols. /xys {/siz exch def /yv exch def /xv exch def} def /hline {xys n xv siz 2. div sub yv m siz 0 rlineto S} def /vline {xys n xv yv siz 2. div sub m 0 siz rlineto S} def /plus {xys n xv yv siz 2. div sub m 0 siz rlineto xv siz 2. div sub yv m siz 0 rlineto S} def /dot {n 2. div 0 360 arc s} def /fdot {n 2. div 0 360 arc h f} def /box {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rs} def /fbox {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rf} def /tridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto s} def /ftridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto h f} def % Symbols defined in terms of the others. /star {3 copy cross plus} def /cross {xys q xv yv translate 45 rotate 0 0 siz plus Q} def /diamond {xys q xv yv translate 45 rotate 0 0 siz box Q} def /fdiamond {xys q xv yv translate 45 rotate 0 0 siz fbox Q} def /triup {xys q xv yv translate 180 rotate 0 0 siz tridn Q} def /ftriup {xys q xv yv translate 180 rotate 0 0 siz ftridn Q} def % Define the composite fonts used to print Unicode strings. % Undefine particular values in an encoding array. /vg&undef { {exch dup 3 -1 roll /.notdef put} forall } def /vg&redef { {3 -1 roll dup 4 2 roll put} forall } def % usage: key encoding basefontname vg&newbasefont font /vg&newbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def currentdict end definefont } def % usage: key encoding basefontname vg&newskewedbasefont font /vg&newskewedbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def exch FontMatrix exch matrix concatmatrix /FontMatrix exch def currentdict end definefont } def % usage: basekey suffix vg&nconcat name /vg&nconcat { 2 {dup length string cvs exch} repeat dup length 3 -1 roll dup length 3 -1 roll add string dup 0 4 -1 roll dup length 5 1 roll putinterval dup 4 -2 roll exch putinterval cvn } def %usage: fontname vg&skewmatrix matrix /vg&skewmatrix { findfont dup /FontInfo known { /FontInfo get dup /ItalicAngle known { [ 1 0 4 -1 roll /ItalicAngle get neg dup sin exch cos div 1 0 0 ] } {pop matrix} ifelse } {pop matrix} ifelse } def % usage: newfontname basefontname vg&newcompositefont -- /vg&newcompositefont { /vg&fstyle exch def /vg&bfont exch def /vg&fname exch def << /FontStyleBits vg&fstyle /FontType 0 /FontMatrix matrix /FontName vg&fname /FMapType 2 /Encoding [ 0 1 255 {pop 6} for ] dup 16#00 0 put % Latin dup 16#03 1 put % Greek dup 16#20 2 put % Punctuation dup 16#21 3 put % Arrows dup 16#22 4 put % MathOps dup 16#27 5 put % Dingbats /FDepVector [ vg&bfont /-UC-Latin vg&nconcat UCLatinEncoding vg&bfont vg&newbasefont vg&bfont vg&skewmatrix vg&bfont /-UC-Greek vg&nconcat UCGreekEncoding /Symbol vg&newskewedbasefont vg&bfont /-UC-Punctuation vg&nconcat UCPunctuationEncoding vg&bfont vg&newbasefont /Arrows-UC findfont /MathOps-UC findfont /Dingbats-UC findfont /Undefined-UC findfont ] >> vg&fname exch definefont pop } def % Null encoding vector (all elements set to .notdef) /NullEncoding [ 256 {/.notdef} repeat ] def % Unicode Latin encoding (unicode codes \u0000-\u00ff) /UCLatinEncoding ISOLatin1Encoding dup length array copy dup 16#60 /grave put [ 16#90 16#91 16#92 16#93 16#94 16#95 16#96 16#97 16#98 16#9a 16#9b 16#9d 16#9e 16#9f ] vg&undef def % Unicode Greek encoding (unicode codes \u0370-\u03ff) /UCGreekEncoding NullEncoding dup length array copy << 16#91 /Alpha 16#92 /Beta 16#93 /Gamma 16#94 /Delta 16#95 /Epsilon 16#96 /Zeta 16#97 /Eta 16#98 /Theta 16#99 /Iota 16#9a /Kappa 16#9b /Lambda 16#9c /Mu 16#9d /Nu 16#9e /Xi 16#9f /Omicron 16#a0 /Pi 16#a1 /Rho 16#a3 /Sigma 16#a4 /Tau 16#a5 /Upsilon 16#a6 /Phi 16#a7 /Chi 16#a8 /Psi 16#a9 /Omega 16#b1 /alpha 16#b2 /beta 16#b3 /gamma 16#b4 /delta 16#b5 /epsilon 16#b6 /zeta 16#b7 /eta 16#b8 /theta 16#b9 /iota 16#ba /kappa 16#bb /lambda 16#bc /mu 16#bd /nu 16#be /xi 16#bf /omicron 16#c0 /pi 16#c1 /rho 16#c2 /sigma1 16#c3 /sigma 16#c4 /tau 16#c5 /upsilon 16#c6 /phi1 16#c7 /chi 16#c8 /psi 16#c9 /omega 16#7e /semicolon 16#87 /dotmath 16#d1 /theta1 16#d2 /Upsilon1 16#d5 /phi 16#d6 /omega1 >> vg&redef def % Unicode punctuation encoding (unicode codes \u2000-\u206f) /UCPunctuationEncoding NullEncoding dup length array copy << 16#10 /hyphen 16#11 /hyphen 16#12 /endash 16#13 /emdash 16#18 /quoteleft 16#19 /quoteright 16#1a /quotesinglbase 16#1b /quotesingle 16#1c /quotedblleft 16#1d /quotedblright 16#1e /quotedblbase 16#1f /quotedbl 16#20 /dagger 16#21 /daggerdbl 16#22 /bullet 16#24 /period 16#26 /ellipsis 16#27 /periodcentered 16#30 /perthousand 16#44 /fraction 16#70 /zerosuperior 16#74 /foursuperior 16#75 /fivesuperior 16#76 /sixsuperior 16#77 /sevensuperior 16#78 /eightsuperior 16#79 /ninesuperior 16#7b /hyphensuperior 16#7d /parenleftsuperior 16#7e /parenrightsuperior 16#80 /zeroinferior 16#84 /fourinferior 16#85 /fiveinferior 16#81 /oneinferior 16#82 /twoinferior 16#83 /threeinferior 16#86 /sixinferior 16#87 /seveninferior 16#88 /eightinferior 16#89 /nineinferior 16#8b /hypheninferior 16#8d /parenleftinferior 16#8e /parenrightinferior >> vg&redef def % Unicode mathematical operators encoding (unicode codes \u2200-\u22ff) /UCMathOpsEncoding NullEncoding dup length array copy << 16#00 /universal 16#02 /partialdiff 16#03 /existential 16#05 /emptyset 16#06 /Delta 16#07 /gradient 16#08 /element 16#09 /notelement 16#0b /suchthat 16#0f /product 16#11 /summation 16#12 /minus 16#15 /fraction 16#17 /asteriskmath 16#19 /bullet 16#1a /radical 16#1d /proportional 16#1e /infinity 16#20 /angle 16#23 /bar 16#27 /logicaland 16#28 /logicalor 16#29 /intersection 16#2a /union 16#2b /integral 16#34 /therefore 16#36 /colon 16#3c /similar 16#45 /congruent 16#48 /approxequal 16#60 /notequal 16#61 /equivalence 16#64 /lessequal 16#65 /greaterequal 16#82 /propersubset 16#83 /propersuperset 16#86 /reflexsubset 16#87 /reflexsuperset 16#95 /circleplus 16#97 /circlemultiply 16#a5 /perpendicular 16#03 /existential 16#c0 /logicaland 16#c1 /logicalor 16#c2 /intersection 16#c3 /union 16#c4 /diamond 16#c5 /dotmath >> vg&redef def % Unicode arrows encoding (unicode codes \u2190-\u21ff) % Also includes those "Letterlike" unicode characters % which are available in the symbol font. (unicode codes \u2100-\u214f) /UCArrowsEncoding NullEncoding dup length array copy << 16#11 /Ifraktur 16#1c /Rfraktur 16#22 /trademarkserif 16#35 /aleph 16#90 /arrowleft 16#91 /arrowup 16#92 /arrowright 16#93 /arrowdown 16#94 /arrowboth 16#d0 /arrowdblleft 16#d1 /arrowdblup 16#d2 /arrowdblright 16#d3 /arrowdbldown 16#d4 /arrowdblboth >> vg&redef def /ZapfDingbats findfont /Encoding get dup length array copy /UCDingbatsEncoding exch def 16#20 1 16#7f { dup 16#20 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for 16#a0 1 16#ff { dup 16#40 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for UCDingbatsEncoding [ 16#c0 1 16#ff {} for ] vg&undef [ 16#00 16#05 16#0a 16#0b 16#28 16#4c 16#4e 16#53 16#54 16#55 16#57 16#5f 16#60 16#68 16#69 16#6a 16#6b 16#6c 16#6d 16#6e 16#6f 16#70 16#71 16#72 16#73 16#74 16#75 16#95 16#96 16#97 16#b0 16#bf ] vg&undef pop % Define the base fonts which don't change. /Undefined-UC NullEncoding /Helvetica vg&newbasefont pop /MathOps-UC UCMathOpsEncoding /Symbol vg&newbasefont pop /Arrows-UC UCArrowsEncoding /Symbol vg&newbasefont pop /Dingbats-UC UCDingbatsEncoding /ZapfDingbats vg&newbasefont pop % Make the SansSerif composite fonts. /SansSerif /Helvetica 16#00 vg&newcompositefont /SansSerif-Bold /Helvetica-Bold 16#01 vg&newcompositefont /SansSerif-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /SansSerif-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Serif composite fonts. /Serif /Times-Roman 16#00 vg&newcompositefont /Serif-Bold /Times-Bold 16#01 vg&newcompositefont /Serif-Italic /Times-Italic 16#02 vg&newcompositefont /Serif-BoldItalic /Times-BoldItalic 16#03 vg&newcompositefont % Make the Monospaced composite fonts. /Monospaced /Courier 16#00 vg&newcompositefont /Monospaced-Bold /Courier-Bold 16#01 vg&newcompositefont /Monospaced-Italic /Courier-Oblique 16#02 vg&newcompositefont /Monospaced-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont % Make the Dialog composite fonts. /Dialog /Helvetica 16#00 vg&newcompositefont /Dialog-Bold /Helvetica-Bold 16#01 vg&newcompositefont /Dialog-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /Dialog-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the DialogInput composite fonts. /DialogInput /Helvetica 16#00 vg&newcompositefont /DialogInput-Bold /Helvetica-Bold 16#01 vg&newcompositefont /DialogInput-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /DialogInput-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Typewriter composite fonts (JDK 1.1 only). /Typewriter /Courier 16#00 vg&newcompositefont /Typewriter-Bold /Courier-Bold 16#01 vg&newcompositefont /Typewriter-Italic /Courier-Oblique 16#02 vg&newcompositefont /Typewriter-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont /cfontH { dup /fontsize exch def /SansSerif exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHB { dup /fontsize exch def /SansSerif-Bold exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHI { dup /fontsize exch def /SansSerif-Italic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHBI { dup /fontsize exch def /SansSerif-BoldItalic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontT { dup /fontsize exch def /Serif exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTB { dup /fontsize exch def /Serif-Bold exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTI { dup /fontsize exch def /Serif-Italic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTBI { dup /fontsize exch def /Serif-BoldItalic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontC { dup /fontsize exch def /Typewriter exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCB { dup /fontsize exch def /Typewriter-Bold exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCI { dup /fontsize exch def /Typewriter-Italic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCBI { dup /fontsize exch def /Typewriter-BoldItalic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def % Darken or lighten the current color. /darken {0.7 exch exp 3 copy q 4 -1 roll vg&C currentrgbcolor 3 {4 -2 roll mul} repeat 3 array astore Q} def /displayColorMap << /Cr [1.00 0.00 0.00] /Cg [0.00 1.00 0.00] /Cb [0.00 0.00 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.00 0.00] /CGg [0.00 1.00 0.00] /CGb [0.00 0.00 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.00 0.00] /CIg [0.00 1.00 0.00] /CIb [0.00 0.00 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /printColorMap << /Cr [1.00 0.33 0.33] /Cg [0.33 1.00 0.33] /Cb [0.33 0.33 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.33 0.33] /CGg [0.33 1.00 0.33] /CGb [0.33 0.33 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.33 0.33] /CIg [0.33 1.00 0.33] /CIb [0.33 0.33 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /grayColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [0.75] /CGg [1 ] /CGb [0.50] /CGc [0.75] /CGm [0.50] /CGy [1 ] /CGo [0.75] /CGp [1 ] /CGw [0 ] /CGgrl [0.25] /CGgr [0.50] /CGgrd [0.75] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def /bwColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [1 ] /CGg [1 ] /CGb [1 ] /CGc [1 ] /CGm [1 ] /CGy [1 ] /CGo [1 ] /CGp [1 ] /CGw [0 ] /CGgrl [1 ] /CGgr [1 ] /CGgrd [1 ] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def % % The following routines handle the alignment of and printing of % tagged strings. % % Predefine the bounding box values. /bbllx 0 def /bblly 0 def /bburx 0 def /bbury 0 def % This routine pops the first unicode character off of a string and returns % the remainder of the string, the character code of first character, % and a "true" if the string was non-zero length. % popfirst % popfirst /popfirst { dup length 1 gt {dup 0 get /vg&fbyte exch def dup 1 get /vg&cbyte exch def dup length 2 sub 2 exch getinterval true} {pop false} ifelse } def % This routine shows a single unicode character given the font and % character codes. % unicharshow -- /unicharshow { 2 string dup 0 5 -1 roll put dup 1 4 -1 roll put internalshow } def % This is an internal routine to alternate between determining the % bounding box for stringsize and showing the string for recshow. % internalshow -- /internalshow {show} def % This is an internal routine to alternate between determining the % bounding box for stringsize and stroking various ornaments. % internalstroke -- /internalstroke {S} def % Sets up internalshow to use the null device to determine string size. % -- nullinternalshow -- /nullinternalshow {/internalshow {false charpath flattenpath pathbbox updatebbox} def} def % Sets up internalstroke to use the null device to determine string size. % -- nullinternalstroke -- /nullinternalstroke { /internalstroke {flattenpath pathbbox updatebbox} def} def % This routine tests to see if the character code matches the first % character of a string. % testchar /testchar {exch dup 3 -1 roll 0 get eq} def % Raise the text baseline for superscripts. % -- raise -- /raise { 0 fontsize 2 div rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-raise the text baseline for superscripts. % -- unraise -- /unraise { /fontsize fontsize 1.5 mul def 0 fontsize 2 div neg rmoveto } def % Lower the text baseline for subscripts. % -- lower -- /lower { 0 fontsize 3 div neg rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-lower the text baseline for subscripts. % -- unlower -- /unlower { /fontsize fontsize 1.5 mul def 0 fontsize 3 div rmoveto } def % Compare the top two elements on the stack and leave only the % larger one. /maxval {2 copy gt {pop} {exch pop} ifelse} def % Tokenize a string. Do not use the usual PostScript token because % parentheses will not be interpreted correctly because of rescanning % of the string. /vg&token {/vg&string exch def /vg&index -1 def /vg&level 0 def 0 2 vg&string length 2 sub { dup dup 1 add exch vg&string exch get 8 bitshift vg&string 3 -1 roll get or dup 16#f0fe eq {pop 1}{16#f0ff eq {-1}{0} ifelse} ifelse /vg&level exch vg&level add def vg&level 0 eq {/vg&index exch def exit} if pop } for vg&index 0 ge { vg&string vg&index 2 add dup vg&string length exch sub getinterval vg&index 2 gt {vg&string 2 vg&index 2 sub getinterval}{()} ifelse true} {false} ifelse } bind def % Recursively show an unicode string. % recshow -- /recshow { popfirst { % Test to see if this is a string attribute. vg&fbyte 16#f0 and 16#e0 eq { q % Font style. currentfont dup /FontStyleBits known {/FontStyleBits get}{pop 0} ifelse vg&cbyte or vg&fontstyles exch get fontsize exch exec vg&token pop recshow currentpoint Q m recshow } { vg&fbyte 16#F8 and 16#F0 eq { % Superscript and/or subscript. vg&cbyte 16#00 eq { vg&token pop exch vg&token pop 3 -1 roll q raise recshow unraise currentpoint pop Q exch q lower recshow unlower currentpoint pop Q maxval currentpoint exch pop m recshow } if % Strikeout. vg&cbyte 16#01 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll fontsize 3 div add moveto fontsize 3 div add lineto internalstroke Q recshow} if % Underline. vg&cbyte 16#02 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dashed underline. vg&cbyte 16#03 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J [ vg&uthick 5 mul vg&uthick 2 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dotted underline. vg&cbyte 16#04 eq { vg&token pop currentpoint 3 -1 roll recshow q 1 J [ 0 vg&uthick 3 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Thick underline. vg&cbyte 16#05 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Gray thick underline. vg&cbyte 16#06 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w 0.5 setgray currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Overbar. vg&cbyte 16#07 eq { vg&token pop dup stringsize relative 4 1 roll pop pop exch 3 -1 roll recshow q 0 J vg&underline vg&uthick w vg&uoffset neg add dup currentpoint pop exch m l internalstroke Q recshow} if } { vg&fbyte vg&cbyte unicharshow recshow } ifelse } ifelse } if } def % Get the underline position and thickness from the current font. /vg&underline { currentfont dup /FontType get 0 eq {/FDepVector get 0 get} if dup dup /FontInfo known { /FontInfo get dup dup /UnderlinePosition known { /UnderlinePosition get /vg&uoffset exch def } { pop /vg&uoffset 0 def } ifelse dup /UnderlineThickness known { /UnderlineThickness get /vg&uthick exch def } { pop /vg&uthick 0 def } ifelse } { pop /vg&uoffset 0 def /vg&uthick 0 def } ifelse /FontMatrix get currentfont dup /FontType get 0 eq {/FontMatrix get matrix concatmatrix}{pop} ifelse dup 0 vg&uoffset 3 -1 roll transform /vg&uoffset exch def pop 0 vg&uthick 3 -1 roll transform /vg&uthick exch def pop } def % Make a frame with the coordinates on the stack. % frame -- /frame {4 copy m 3 1 roll exch l 4 -2 roll l l h} def % Resets the accumulated bounding box to a degenerate box at the % current point. % -- resetbbox -- /resetbbox { currentpoint 2 copy /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Update the accumulated bounding box. % updatebbox -- /updatebbox { dup bbury gt {/bbury exch def} {pop} ifelse dup bburx gt {/bburx exch def} {pop} ifelse dup bblly lt {/bblly exch def} {pop} ifelse dup bbllx lt {/bbllx exch def} {pop} ifelse } def % Set the bounding box to the values on the stack. % updatebbox -- /restorebbox { /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Push the accumulated bounding box onto the stack. % -- pushbbox /pushbbox {bbllx bblly bburx bbury} def % Make the relative bounding box relative to the currentpoint. % inflate /inflate { 2 {fontsize 0.2 mul add 4 1 roll} repeat 2 {fontsize 0.2 mul sub 4 1 roll} repeat } def % Make the relative bounding box relative to the currentpoint. % relative /relative { currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll } def % Returns the size of a string appropriate for recshow. % stringsize /stringsize { pushbbox /internalshow load /internalstroke load 7 -1 roll q nulldevice 0 0 m nullinternalshow nullinternalstroke resetbbox recshow /internalstroke exch def /internalshow exch def pushbbox 8 -4 roll restorebbox Q } def % Calculate values for string positioning. /calcval {4 copy 3 -1 roll sub /widy exch def sub neg /widx exch def pop pop /dy exch def /dx exch def} def % Utilities to position a string. % First letter (U=upper, C=center, B=baseline, L=lower) % Second letter (L=left, C=center, R=right) /align [ {calcval dx neg widy dy add neg rmoveto} % UL {calcval dx neg widy 2 div dy add neg rmoveto} % CL {calcval dx neg 0 rmoveto} % BL {calcval dx neg dy neg rmoveto} % LL {calcval widx dx add neg widy dy add neg rmoveto} % UR {calcval widx dx add neg widy 2 div dy add neg rmoveto} % CR {calcval widx dx add neg 0 rmoveto} % BR {calcval widx dx add neg dy neg rmoveto} % LR {calcval widx 2 div dx add neg widy dy add neg rmoveto} % UC {calcval widx 2 div dx add neg widy 2 div dy add neg rmoveto} % CC {calcval widx 2 div dx add neg 0 rmoveto} % BC {calcval widx 2 div dx add neg dy neg rmoveto} % LC ] def /vg&str {m q 1 -1 scale dup stringsize 4 copy align 11 -1 roll get exec q inflate relative frame exch exec Q recshow Q} def end /procDict exch def %%EndProlog %%BeginSetup save procDict begin printColorMap begin 595 791 setpagesize 20 20 20 20 setmargins 0 0 setorigin 600 600 setsize fittopage portrait imagescale cliptobounds setbasematrix /Helvetica 10 sf defaultGraphicsState %%EndSetup 0.00000 0.00000 0.00000 RG [ 1.00000 0.00000 0.00000 1.00000 0.00000 0.00000 ] defaultmatrix matrix concatmatrix setmatrix 1.00000 w 2 J 0 j 10.0000 M [ ] 0.00000 d .800000 .800000 .800000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG q 0 0 600 600 rc .752941 .752941 .752941 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG q 10.0000 20.0000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont (\000N\000o\000C\000l\000i\000p) show Q 8.00000 8.00000 scale 1.25000 1.25000 translate 10.6250 0.00000 translate 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 7.00000 1.00000 l 7.00000 3.00000 l 1.00000 3.00000 l 1.00000 1.00000 l h S 0.00000 0.00000 0.00000 RG .375000 w newpath 0.00000 2.00000 m 2.00000 2.00000 l 3.00000 1.00000 l 4.00000 1.00000 l 5.00000 0.00000 l 6.00000 2.00000 l 8.00000 2.00000 l 8.00000 0.00000 l 0.00000 0.00000 l h S 10.6250 0.00000 translate 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 1.00000 3.00000 l 7.00000 3.00000 l 7.00000 1.00000 l 5.00000 1.00000 l 4.00000 3.00000 l 3.00000 1.00000 l h S 0.00000 0.00000 0.00000 RG .375000 w newpath 0.00000 0.00000 m 8.00000 0.00000 l 8.00000 2.00000 l 0.00000 2.00000 l 0.00000 0.00000 l h S 10.6250 0.00000 translate 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 7.00000 1.00000 l 7.00000 3.00000 l 1.00000 3.00000 l 1.00000 1.00000 l h S 0.00000 0.00000 0.00000 RG .375000 w newpath 0.00000 2.00000 m 2.00000 2.00000 l 3.00000 1.00000 l 5.00000 1.00000 l 6.00000 2.00000 l 8.00000 2.00000 l 8.00000 0.00000 l 0.00000 0.00000 l h S 10.6250 0.00000 translate 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 7.00000 1.00000 l 7.00000 3.00000 l 1.00000 3.00000 l 1.00000 1.00000 l h S 0.00000 0.00000 0.00000 RG .375000 w newpath 6.00000 2.00000 m 6.00000 3.10457 5.10457 4.00000 4.00000 4.00000 c 2.89543 4.00000 2.00000 3.10457 2.00000 2.00000 c 2.00000 .895431 2.89543 0.00000 4.00000 0.00000 c 5.10457 0.00000 6.00000 .895431 6.00000 2.00000 c h S 10.6250 0.00000 translate 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 7.00000 1.00000 l 7.00000 3.00000 l 1.00000 3.00000 l 1.00000 1.00000 l h S 0.00000 0.00000 0.00000 RG .375000 w newpath 0.00000 2.00000 m 3.00000 2.00000 l 4.00000 1.00000 l 5.00000 2.00000 l 8.00000 2.00000 l 8.00000 0.00000 l 0.00000 0.00000 l h S 10.6250 0.00000 translate 1.00000 0.00000 0.00000 RG .125000 w newpath 7.00000 2.00000 m 7.00000 2.55228 5.65685 3.00000 4.00000 3.00000 c 2.34315 3.00000 1.00000 2.55228 1.00000 2.00000 c 1.00000 1.44772 2.34315 1.00000 4.00000 1.00000 c 5.65685 1.00000 7.00000 1.44772 7.00000 2.00000 c h S 0.00000 0.00000 0.00000 RG .375000 w newpath 6.00000 2.00000 m 6.00000 3.10457 5.10457 4.00000 4.00000 4.00000 c 2.89543 4.00000 2.00000 3.10457 2.00000 2.00000 c 2.00000 .895431 2.89543 0.00000 4.00000 0.00000 c 5.10457 0.00000 6.00000 .895431 6.00000 2.00000 c h S Q q 10.0000 120.000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont (\000J\000a\000v\000a\000C\000l\000i\000p) show Q 8.00000 8.00000 scale 1.25000 13.7500 translate 10.6250 0.00000 translate q 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 7.00000 1.00000 l 7.00000 3.00000 l 1.00000 3.00000 l 1.00000 1.00000 l h S 1.00000 1.00000 6.00000 2.00000 rc 0.00000 0.00000 0.00000 RG .375000 w newpath 0.00000 2.00000 m 2.00000 2.00000 l 3.00000 1.00000 l 4.00000 1.00000 l 5.00000 0.00000 l 6.00000 2.00000 l 8.00000 2.00000 l 8.00000 0.00000 l 0.00000 0.00000 l h S Q 10.6250 0.00000 translate q 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 1.00000 3.00000 l 7.00000 3.00000 l 7.00000 1.00000 l 5.00000 1.00000 l 4.00000 3.00000 l 3.00000 1.00000 l h S newpath 1.00000 1.00000 m 1.00000 3.00000 l 7.00000 3.00000 l 7.00000 1.00000 l 5.00000 1.00000 l 4.00000 3.00000 l 3.00000 1.00000 l h W 0.00000 0.00000 0.00000 RG .375000 w newpath 0.00000 0.00000 m 8.00000 0.00000 l 8.00000 2.00000 l 0.00000 2.00000 l 0.00000 0.00000 l h S Q 10.6250 0.00000 translate q 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 7.00000 1.00000 l 7.00000 3.00000 l 1.00000 3.00000 l 1.00000 1.00000 l h S 1.00000 1.00000 6.00000 2.00000 rc 0.00000 0.00000 0.00000 RG .375000 w newpath 0.00000 2.00000 m 2.00000 2.00000 l 3.00000 1.00000 l 5.00000 1.00000 l 6.00000 2.00000 l 8.00000 2.00000 l 8.00000 0.00000 l 0.00000 0.00000 l h S Q 10.6250 0.00000 translate q 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 7.00000 1.00000 l 7.00000 3.00000 l 1.00000 3.00000 l 1.00000 1.00000 l h S 1.00000 1.00000 6.00000 2.00000 rc 0.00000 0.00000 0.00000 RG .375000 w newpath 6.00000 2.00000 m 6.00000 3.10457 5.10457 4.00000 4.00000 4.00000 c 2.89543 4.00000 2.00000 3.10457 2.00000 2.00000 c 2.00000 .895431 2.89543 0.00000 4.00000 0.00000 c 5.10457 0.00000 6.00000 .895431 6.00000 2.00000 c h S Q 10.6250 0.00000 translate q 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 7.00000 1.00000 l 7.00000 3.00000 l 1.00000 3.00000 l 1.00000 1.00000 l h S 1.00000 1.00000 6.00000 2.00000 rc 0.00000 0.00000 0.00000 RG .375000 w newpath 0.00000 2.00000 m 3.00000 2.00000 l 4.00000 1.00000 l 5.00000 2.00000 l 8.00000 2.00000 l 8.00000 0.00000 l 0.00000 0.00000 l h S Q 10.6250 0.00000 translate q 1.00000 0.00000 0.00000 RG .125000 w newpath 7.00000 2.00000 m 7.00000 2.55228 5.65685 3.00000 4.00000 3.00000 c 2.34315 3.00000 1.00000 2.55228 1.00000 2.00000 c 1.00000 1.44772 2.34315 1.00000 4.00000 1.00000 c 5.65685 1.00000 7.00000 1.44772 7.00000 2.00000 c h S newpath 7.00000 2.00000 m 7.00000 2.55228 5.65685 3.00000 4.00000 3.00000 c 2.34315 3.00000 1.00000 2.55228 1.00000 2.00000 c 1.00000 1.44772 2.34315 1.00000 4.00000 1.00000 c 5.65685 1.00000 7.00000 1.44772 7.00000 2.00000 c h W 0.00000 0.00000 0.00000 RG .375000 w newpath 6.00000 2.00000 m 6.00000 3.10457 5.10457 4.00000 4.00000 4.00000 c 2.89543 4.00000 2.00000 3.10457 2.00000 2.00000 c 2.00000 .895431 2.89543 0.00000 4.00000 0.00000 c 5.10457 0.00000 6.00000 .895431 6.00000 2.00000 c h S Q Q q 10.0000 220.000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont (\000O\000u\000r\000C\000l\000i\000p) show Q 8.00000 8.00000 scale 1.25000 26.2500 translate 10.6250 0.00000 translate q 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 7.00000 1.00000 l 7.00000 3.00000 l 1.00000 3.00000 l 1.00000 1.00000 l h S 0.00000 0.00000 0.00000 RG .375000 w newpath 1.00000 1.00000 m 1.00000 2.00000 l 2.00000 2.00000 l 3.00000 1.00000 l h 5.50000 1.00000 m 6.00000 2.00000 l 7.00000 2.00000 l 7.00000 1.00000 l h S Q 10.6250 0.00000 translate q 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 1.00000 3.00000 l 7.00000 3.00000 l 7.00000 1.00000 l 5.00000 1.00000 l 4.00000 3.00000 l 3.00000 1.00000 l h S 0.00000 0.00000 0.00000 RG .375000 w newpath 1.00000 1.00000 m 1.00000 2.00000 l 3.50000 2.00000 l 3.00000 1.00000 l h 5.00000 1.00000 m 4.50000 2.00000 l 7.00000 2.00000 l 7.00000 1.00000 l h S Q 10.6250 0.00000 translate q 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 7.00000 1.00000 l 7.00000 3.00000 l 1.00000 3.00000 l 1.00000 1.00000 l h S 0.00000 0.00000 0.00000 RG .375000 w newpath 1.00000 1.00000 m 1.00000 2.00000 l 2.00000 2.00000 l 3.00000 1.00000 l h 5.00000 1.00000 m 6.00000 2.00000 l 7.00000 2.00000 l 7.00000 1.00000 l h S Q 10.6250 0.00000 translate q 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 7.00000 1.00000 l 7.00000 3.00000 l 1.00000 3.00000 l 1.00000 1.00000 l h S 0.00000 0.00000 0.00000 RG .375000 w newpath 2.26756 1.00000 m 2.09739 1.29417 2.00000 1.63571 2.00000 2.00000 c 2.00000 2.36429 2.09739 2.70583 2.26756 3.00000 c 5.73244 3.00000 l 5.90261 2.70583 6.00000 2.36429 6.00000 2.00000 c 6.00000 1.63571 5.90261 1.29417 5.73244 1.00000 c h S Q 10.6250 0.00000 translate q 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 7.00000 1.00000 l 7.00000 3.00000 l 1.00000 3.00000 l 1.00000 1.00000 l h S 0.00000 0.00000 0.00000 RG .375000 w newpath 1.00000 1.00000 m 1.00000 2.00000 l 3.00000 2.00000 l 4.00000 1.00000 l h 4.00000 1.00000 m 5.00000 2.00000 l 7.00000 2.00000 l 7.00000 1.00000 l h S Q 10.6250 0.00000 translate q 1.00000 0.00000 0.00000 RG .125000 w newpath 7.00000 2.00000 m 7.00000 2.55228 5.65685 3.00000 4.00000 3.00000 c 2.34315 3.00000 1.00000 2.55228 1.00000 2.00000 c 1.00000 1.44772 2.34315 1.00000 4.00000 1.00000 c 5.65685 1.00000 7.00000 1.44772 7.00000 2.00000 c h S 0.00000 0.00000 0.00000 RG .375000 w newpath 4.00000 1.00000 m 3.30760 1.00000 2.66998 1.07819 2.16229 1.20953 c 2.16229 1.20953 l 2.05785 1.45199 2.00000 1.71924 2.00000 2.00000 c 2.00000 2.28076 2.05785 2.54801 2.16229 2.79047 c 2.16229 2.79047 l 2.66998 2.92181 3.30760 3.00000 4.00000 3.00000 c 4.69240 3.00000 5.33002 2.92181 5.83771 2.79047 c 5.83771 2.79047 l 5.94215 2.54801 6.00000 2.28076 6.00000 2.00000 c 6.00000 1.71924 5.94215 1.45199 5.83771 1.20953 c 5.83771 1.20953 l 5.33002 1.07819 4.69240 1.00000 4.00000 1.00000 c h S Q Q q 10.0000 320.000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont (\000N\000o\000C\000l\000i\000p) show Q 8.00000 8.00000 scale 1.25000 38.7500 translate 10.6250 0.00000 translate 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 7.00000 1.00000 l 7.00000 3.00000 l 1.00000 3.00000 l 1.00000 1.00000 l h S 0.00000 0.00000 0.00000 RG .375000 w newpath 0.00000 2.00000 m 2.00000 2.00000 l 3.00000 1.00000 l 4.00000 1.00000 l 5.00000 0.00000 l 6.00000 2.00000 l 8.00000 2.00000 l 8.00000 0.00000 l 0.00000 0.00000 l h f 10.6250 0.00000 translate 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 1.00000 3.00000 l 7.00000 3.00000 l 7.00000 1.00000 l 5.00000 1.00000 l 4.00000 3.00000 l 3.00000 1.00000 l h S 0.00000 0.00000 0.00000 RG .375000 w newpath 0.00000 0.00000 m 8.00000 0.00000 l 8.00000 2.00000 l 0.00000 2.00000 l 0.00000 0.00000 l h f 10.6250 0.00000 translate 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 7.00000 1.00000 l 7.00000 3.00000 l 1.00000 3.00000 l 1.00000 1.00000 l h S 0.00000 0.00000 0.00000 RG .375000 w newpath 0.00000 2.00000 m 2.00000 2.00000 l 3.00000 1.00000 l 5.00000 1.00000 l 6.00000 2.00000 l 8.00000 2.00000 l 8.00000 0.00000 l 0.00000 0.00000 l h f 10.6250 0.00000 translate 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 7.00000 1.00000 l 7.00000 3.00000 l 1.00000 3.00000 l 1.00000 1.00000 l h S 0.00000 0.00000 0.00000 RG .375000 w newpath 6.00000 2.00000 m 6.00000 3.10457 5.10457 4.00000 4.00000 4.00000 c 2.89543 4.00000 2.00000 3.10457 2.00000 2.00000 c 2.00000 .895431 2.89543 0.00000 4.00000 0.00000 c 5.10457 0.00000 6.00000 .895431 6.00000 2.00000 c h f 10.6250 0.00000 translate 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 7.00000 1.00000 l 7.00000 3.00000 l 1.00000 3.00000 l 1.00000 1.00000 l h S 0.00000 0.00000 0.00000 RG .375000 w newpath 0.00000 2.00000 m 3.00000 2.00000 l 4.00000 1.00000 l 5.00000 2.00000 l 8.00000 2.00000 l 8.00000 0.00000 l 0.00000 0.00000 l h f 10.6250 0.00000 translate 1.00000 0.00000 0.00000 RG .125000 w newpath 7.00000 2.00000 m 7.00000 2.55228 5.65685 3.00000 4.00000 3.00000 c 2.34315 3.00000 1.00000 2.55228 1.00000 2.00000 c 1.00000 1.44772 2.34315 1.00000 4.00000 1.00000 c 5.65685 1.00000 7.00000 1.44772 7.00000 2.00000 c h S 0.00000 0.00000 0.00000 RG .375000 w newpath 6.00000 2.00000 m 6.00000 3.10457 5.10457 4.00000 4.00000 4.00000 c 2.89543 4.00000 2.00000 3.10457 2.00000 2.00000 c 2.00000 .895431 2.89543 0.00000 4.00000 0.00000 c 5.10457 0.00000 6.00000 .895431 6.00000 2.00000 c h f Q q 10.0000 420.000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont (\000J\000a\000v\000a\000C\000l\000i\000p) show Q 8.00000 8.00000 scale 1.25000 51.2500 translate 10.6250 0.00000 translate q 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 7.00000 1.00000 l 7.00000 3.00000 l 1.00000 3.00000 l 1.00000 1.00000 l h S 1.00000 1.00000 6.00000 2.00000 rc 0.00000 0.00000 0.00000 RG .375000 w newpath 0.00000 2.00000 m 2.00000 2.00000 l 3.00000 1.00000 l 4.00000 1.00000 l 5.00000 0.00000 l 6.00000 2.00000 l 8.00000 2.00000 l 8.00000 0.00000 l 0.00000 0.00000 l h f Q 10.6250 0.00000 translate q 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 1.00000 3.00000 l 7.00000 3.00000 l 7.00000 1.00000 l 5.00000 1.00000 l 4.00000 3.00000 l 3.00000 1.00000 l h S newpath 1.00000 1.00000 m 1.00000 3.00000 l 7.00000 3.00000 l 7.00000 1.00000 l 5.00000 1.00000 l 4.00000 3.00000 l 3.00000 1.00000 l h W 0.00000 0.00000 0.00000 RG .375000 w newpath 0.00000 0.00000 m 8.00000 0.00000 l 8.00000 2.00000 l 0.00000 2.00000 l 0.00000 0.00000 l h f Q 10.6250 0.00000 translate q 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 7.00000 1.00000 l 7.00000 3.00000 l 1.00000 3.00000 l 1.00000 1.00000 l h S 1.00000 1.00000 6.00000 2.00000 rc 0.00000 0.00000 0.00000 RG .375000 w newpath 0.00000 2.00000 m 2.00000 2.00000 l 3.00000 1.00000 l 5.00000 1.00000 l 6.00000 2.00000 l 8.00000 2.00000 l 8.00000 0.00000 l 0.00000 0.00000 l h f Q 10.6250 0.00000 translate q 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 7.00000 1.00000 l 7.00000 3.00000 l 1.00000 3.00000 l 1.00000 1.00000 l h S 1.00000 1.00000 6.00000 2.00000 rc 0.00000 0.00000 0.00000 RG .375000 w newpath 6.00000 2.00000 m 6.00000 3.10457 5.10457 4.00000 4.00000 4.00000 c 2.89543 4.00000 2.00000 3.10457 2.00000 2.00000 c 2.00000 .895431 2.89543 0.00000 4.00000 0.00000 c 5.10457 0.00000 6.00000 .895431 6.00000 2.00000 c h f Q 10.6250 0.00000 translate q 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 7.00000 1.00000 l 7.00000 3.00000 l 1.00000 3.00000 l 1.00000 1.00000 l h S 1.00000 1.00000 6.00000 2.00000 rc 0.00000 0.00000 0.00000 RG .375000 w newpath 0.00000 2.00000 m 3.00000 2.00000 l 4.00000 1.00000 l 5.00000 2.00000 l 8.00000 2.00000 l 8.00000 0.00000 l 0.00000 0.00000 l h f Q 10.6250 0.00000 translate q 1.00000 0.00000 0.00000 RG .125000 w newpath 7.00000 2.00000 m 7.00000 2.55228 5.65685 3.00000 4.00000 3.00000 c 2.34315 3.00000 1.00000 2.55228 1.00000 2.00000 c 1.00000 1.44772 2.34315 1.00000 4.00000 1.00000 c 5.65685 1.00000 7.00000 1.44772 7.00000 2.00000 c h S newpath 7.00000 2.00000 m 7.00000 2.55228 5.65685 3.00000 4.00000 3.00000 c 2.34315 3.00000 1.00000 2.55228 1.00000 2.00000 c 1.00000 1.44772 2.34315 1.00000 4.00000 1.00000 c 5.65685 1.00000 7.00000 1.44772 7.00000 2.00000 c h W 0.00000 0.00000 0.00000 RG .375000 w newpath 6.00000 2.00000 m 6.00000 3.10457 5.10457 4.00000 4.00000 4.00000 c 2.89543 4.00000 2.00000 3.10457 2.00000 2.00000 c 2.00000 .895431 2.89543 0.00000 4.00000 0.00000 c 5.10457 0.00000 6.00000 .895431 6.00000 2.00000 c h f Q Q q 10.0000 520.000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont (\000A\000r\000e\000a\000C\000l\000i\000p) show Q 8.00000 8.00000 scale 1.25000 63.7500 translate 10.6250 0.00000 translate q 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 7.00000 1.00000 l 7.00000 3.00000 l 1.00000 3.00000 l 1.00000 1.00000 l h S 0.00000 0.00000 0.00000 RG .375000 w newpath 1.00000 1.00000 m 1.00000 2.00000 l 2.00000 2.00000 l 3.00000 1.00000 l h 5.50000 1.00000 m 6.00000 2.00000 l 7.00000 2.00000 l 7.00000 1.00000 l h f Q 10.6250 0.00000 translate q 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 1.00000 3.00000 l 7.00000 3.00000 l 7.00000 1.00000 l 5.00000 1.00000 l 4.00000 3.00000 l 3.00000 1.00000 l h S 0.00000 0.00000 0.00000 RG .375000 w newpath 1.00000 1.00000 m 1.00000 2.00000 l 3.50000 2.00000 l 3.00000 1.00000 l h 5.00000 1.00000 m 4.50000 2.00000 l 7.00000 2.00000 l 7.00000 1.00000 l h f Q 10.6250 0.00000 translate q 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 7.00000 1.00000 l 7.00000 3.00000 l 1.00000 3.00000 l 1.00000 1.00000 l h S 0.00000 0.00000 0.00000 RG .375000 w newpath 1.00000 1.00000 m 1.00000 2.00000 l 2.00000 2.00000 l 3.00000 1.00000 l h 5.00000 1.00000 m 6.00000 2.00000 l 7.00000 2.00000 l 7.00000 1.00000 l h f Q 10.6250 0.00000 translate q 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 7.00000 1.00000 l 7.00000 3.00000 l 1.00000 3.00000 l 1.00000 1.00000 l h S 0.00000 0.00000 0.00000 RG .375000 w newpath 2.26756 1.00000 m 2.09739 1.29417 2.00000 1.63571 2.00000 2.00000 c 2.00000 2.36429 2.09739 2.70583 2.26756 3.00000 c 5.73244 3.00000 l 5.90261 2.70583 6.00000 2.36429 6.00000 2.00000 c 6.00000 1.63571 5.90261 1.29417 5.73244 1.00000 c h f Q 10.6250 0.00000 translate q 1.00000 0.00000 0.00000 RG .125000 w newpath 1.00000 1.00000 m 7.00000 1.00000 l 7.00000 3.00000 l 1.00000 3.00000 l 1.00000 1.00000 l h S 0.00000 0.00000 0.00000 RG .375000 w newpath 1.00000 1.00000 m 1.00000 2.00000 l 3.00000 2.00000 l 4.00000 1.00000 l h 4.00000 1.00000 m 5.00000 2.00000 l 7.00000 2.00000 l 7.00000 1.00000 l h f Q 10.6250 0.00000 translate q 1.00000 0.00000 0.00000 RG .125000 w newpath 7.00000 2.00000 m 7.00000 2.55228 5.65685 3.00000 4.00000 3.00000 c 2.34315 3.00000 1.00000 2.55228 1.00000 2.00000 c 1.00000 1.44772 2.34315 1.00000 4.00000 1.00000 c 5.65685 1.00000 7.00000 1.44772 7.00000 2.00000 c h S 0.00000 0.00000 0.00000 RG .375000 w newpath 4.00000 1.00000 m 3.30760 1.00000 2.66998 1.07819 2.16229 1.20953 c 2.16229 1.20953 l 2.05785 1.45199 2.00000 1.71924 2.00000 2.00000 c 2.00000 2.28076 2.05785 2.54801 2.16229 2.79047 c 2.16229 2.79047 l 2.66998 2.92181 3.30760 3.00000 4.00000 3.00000 c 4.69240 3.00000 5.33002 2.92181 5.83771 2.79047 c 5.83771 2.79047 l 5.94215 2.54801 6.00000 2.28076 6.00000 2.00000 c 6.00000 1.71924 5.94215 1.45199 5.83771 1.20953 c 5.83771 1.20953 l 5.33002 1.07819 4.69240 1.00000 4.00000 1.00000 c h f Q Q Q end end restore showpage %%Trailer %%EOF src/test/resources/ps/TestShapes.ps0000644000175000017500000012551610344614150016737 0ustar user01user01%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 20 118 575 673 %%Creator: FreeHEP Graphics2D Driver %%Producer: org.freehep.graphicsio.ps.PSGraphics2D %%For: %%Title: %%LanguageLevel: 3 %%EndComments %%BeginProlog 100 dict dup begin % % File: org/freehep/graphicsio.ps/PSProlog.txt % Author: Charles Loomis % % Redefinitions which save some space in the output file. These are also % the same as the PDF operators. /q {gsave} def /Q {grestore} def /n {newpath} def /m {moveto} def /l {lineto} def /c {curveto} def /h {closepath} def /re {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath} def /f {fill} def /f* {eofill} def /F {gsave vg&FC fill grestore} def /F* {gsave vg&FC eofill grestore} def /s {closepath stroke} def /S {stroke} def /b {closepath gsave vg&FC fill grestore gsave stroke grestore newpath} def /B {gsave vg&FC fill grestore gsave stroke grestore newpath} def /b* {closepath gsave vg&FC eofill grestore gsave stroke grestore newpath} def /B* {gsave vg&FC eofill grestore gsave stroke grestore newpath} def /g {1 array astore /vg&fcolor exch def} def /G {setgray} def /k {4 array astore /vg&fcolor exch def} def /K {setcmykcolor} def /rg {3 array astore /vg&fcolor exch def} def /RG {setrgbcolor} def % Initialize the fill color. 0 0 0 rg /vg&FC {mark vg&fcolor aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /vg&DFC {/vg&fcolor exch def} def /vg&C {mark exch aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /w {setlinewidth} def /j {setlinejoin} def /J {setlinecap} def /M {setmiterlimit} def /d {setdash} def /i {setflat} def /W {clip} def /W* {eoclip} def % Setup the default graphics state. % (black; 1 pt. linewidth; miter join; butt-ends; solid) /defaultGraphicsState {0 g 1 w 0 j 0 J [] 0 d} def % Emulation of the rectangle operators for PostScript implementations % which do not implement all Level 2 features. This is an INCOMPLETE % emulation; only the "x y width height rect..." form is emulated. /*rf {gsave newpath re fill grestore} def /*rs {gsave newpath re stroke grestore} def /*rc {newpath re clip} def /rf /rectfill where {pop /rectfill}{/*rf} ifelse load def /rs /rectstroke where {pop /rectstroke}{/*rs} ifelse load def /rc /rectclip where {pop /rectclip}{/*rc} ifelse load def % Emulation of the selectfont operator. This includes a 20% increase in % the fontsize which is necessary to get sizes similar to the Java fonts. /*sf {exch findfont exch dup type /arraytype eq {makefont}{scalefont} ifelse setfont} bind def /sf /selectfont where {pop {1.2 mul selectfont}}{{1.2 mul *sf}} ifelse def % Special version of stroke which allows the dash pattern to continue % across path segments. (This may be needed for PostScript although % modern printers seem to do this correctly.) /vg&stroke { currentdash pop length 0 eq {stroke} { currentdash /vg&doffset exch def pop flattenpath {m vg&resetdash} {2 copy currentpoint 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt 3 1 roll l currentdash 3 -1 roll add setdash} {} {h vg&resetdash} pathforall stroke vg&resetdash } ifelse } def /vg&resetdash {currentdash pop vg&doffset setdash} def % Initialize variables for safety. /delta 0 def /xv 0 def /yv 0 def /width 0 def /height 0 def % Initialize to portrait INTERNATIONAL (Letter-height, A4-width) page. /pw 595 def /ph 791 def /po true def /ftp false def % Initialize margins to 20 points. /ml 20 def /mr 20 def /mt 20 def /mb 20 def % Temporary matrices. /smatrix 0 def /nmatrix 0 def % set page size (usage: setpagesize) /setpagesize {/ph exch def /pw exch def} def % set page orientation (usage: portrait or landscape) /portrait {/po true def} def /landscape {/po false def} def % force natural size for image (usage: naturalsize) /naturalsize {/ftp false def} def % resize image to fill page (usage: fittopage) /fittopage {/ftp true def} def % set margins of the page (usage: setmargins) /setmargins {/mr exch def /mt exch def /mb exch def /ml exch def} def % set the graphic's size (usage: setsize) /setsize {/gh exch def /gw exch def} def % set the graphic's origin (usage: setorigin) /setorigin {/gy exch def /gx exch def} def % calculate image center /imagecenter {pw ml sub mr sub 2 div ml add ph mt sub mb sub 2 div mb add} def % calculate the necessary scaling /imagescale {po {gw}{gh} ifelse pw ml sub mr sub div po {gh}{gw} ifelse ph mt sub mb sub div 2 copy lt {exch} if pop ftp not {1 2 copy lt {exch} if pop} if 1 exch div /sfactor exch def /gw gw sfactor mul def /gh gh sfactor mul def} def % calculate image origin /imageorigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div po {add}{sub} ifelse} def % calculate the clipping origin /cliporigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub floor ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div sub floor} def % Set the clipping region to the bounding box. /cliptobounds {cliporigin po {gw}{gh} ifelse 1 add po {gh}{gw} ifelse 1 add rc} def % set the base transformation matrix (usage: setbasematrix) /setbasematrix {imageorigin translate po {0}{90} ifelse rotate sfactor sfactor neg scale /defaultmatrix matrix currentmatrix def} def % The lower-right bias in drawing 1 pt. wide lines. /bias {q 0.5 0.5 translate} def /unbias {Q} def % Draw a line. (x0 y0 x1 y1 line) /L {bias n m l S unbias} def % Polyline primitive. /polyline {n m 1 exch 1 exch {pop currentfile token pop currentfile token pop l} for } def % Draw a polyline (n x0 y0 OPL x1 y1 x2 y2 ... ... xn yn) /OPL {bias polyline S unbias} def % Draw a closed polyline (n x0 y0 CPL x1 y1 x2 y2 ... ... xn yn) /CPL {bias polyline s unbias} def % Draw a filled polyline (n x0 y0 FPL x1 y1 x2 y2 ... ... xn yn) /FPL {polyline h f*} def % Draw an oval. (x y w h OVL) /OVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width currentlinewidth sub 2 div height currentlinewidth sub 2 div neg scale n 0 0 1 5 -2 roll arc smatrix setmatrix S} def % Draw a filled oval. (x y w h FOVL) /FOVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width 2 div height 2 div neg scale n 0 0 m 0 0 1 5 -2 roll arc h smatrix setmatrix f} def % Draw a rounded rectangle. (x y w h arcwidth archeight RREC) /RREC {matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix s} def % Draw a filled rounded rectangle. (x y w h arcwidth archeight FRREC) /FRREC{matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix h f} def % Draw a string. (string x y STR) /STR {q m 1 -1 scale recshow Q} def % Define basic plot symbols. /xys {/siz exch def /yv exch def /xv exch def} def /hline {xys n xv siz 2. div sub yv m siz 0 rlineto S} def /vline {xys n xv yv siz 2. div sub m 0 siz rlineto S} def /plus {xys n xv yv siz 2. div sub m 0 siz rlineto xv siz 2. div sub yv m siz 0 rlineto S} def /dot {n 2. div 0 360 arc s} def /fdot {n 2. div 0 360 arc h f} def /box {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rs} def /fbox {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rf} def /tridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto s} def /ftridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto h f} def % Symbols defined in terms of the others. /star {3 copy cross plus} def /cross {xys q xv yv translate 45 rotate 0 0 siz plus Q} def /diamond {xys q xv yv translate 45 rotate 0 0 siz box Q} def /fdiamond {xys q xv yv translate 45 rotate 0 0 siz fbox Q} def /triup {xys q xv yv translate 180 rotate 0 0 siz tridn Q} def /ftriup {xys q xv yv translate 180 rotate 0 0 siz ftridn Q} def % Define the composite fonts used to print Unicode strings. % Undefine particular values in an encoding array. /vg&undef { {exch dup 3 -1 roll /.notdef put} forall } def /vg&redef { {3 -1 roll dup 4 2 roll put} forall } def % usage: key encoding basefontname vg&newbasefont font /vg&newbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def currentdict end definefont } def % usage: key encoding basefontname vg&newskewedbasefont font /vg&newskewedbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def exch FontMatrix exch matrix concatmatrix /FontMatrix exch def currentdict end definefont } def % usage: basekey suffix vg&nconcat name /vg&nconcat { 2 {dup length string cvs exch} repeat dup length 3 -1 roll dup length 3 -1 roll add string dup 0 4 -1 roll dup length 5 1 roll putinterval dup 4 -2 roll exch putinterval cvn } def %usage: fontname vg&skewmatrix matrix /vg&skewmatrix { findfont dup /FontInfo known { /FontInfo get dup /ItalicAngle known { [ 1 0 4 -1 roll /ItalicAngle get neg dup sin exch cos div 1 0 0 ] } {pop matrix} ifelse } {pop matrix} ifelse } def % usage: newfontname basefontname vg&newcompositefont -- /vg&newcompositefont { /vg&fstyle exch def /vg&bfont exch def /vg&fname exch def << /FontStyleBits vg&fstyle /FontType 0 /FontMatrix matrix /FontName vg&fname /FMapType 2 /Encoding [ 0 1 255 {pop 6} for ] dup 16#00 0 put % Latin dup 16#03 1 put % Greek dup 16#20 2 put % Punctuation dup 16#21 3 put % Arrows dup 16#22 4 put % MathOps dup 16#27 5 put % Dingbats /FDepVector [ vg&bfont /-UC-Latin vg&nconcat UCLatinEncoding vg&bfont vg&newbasefont vg&bfont vg&skewmatrix vg&bfont /-UC-Greek vg&nconcat UCGreekEncoding /Symbol vg&newskewedbasefont vg&bfont /-UC-Punctuation vg&nconcat UCPunctuationEncoding vg&bfont vg&newbasefont /Arrows-UC findfont /MathOps-UC findfont /Dingbats-UC findfont /Undefined-UC findfont ] >> vg&fname exch definefont pop } def % Null encoding vector (all elements set to .notdef) /NullEncoding [ 256 {/.notdef} repeat ] def % Unicode Latin encoding (unicode codes \u0000-\u00ff) /UCLatinEncoding ISOLatin1Encoding dup length array copy dup 16#60 /grave put [ 16#90 16#91 16#92 16#93 16#94 16#95 16#96 16#97 16#98 16#9a 16#9b 16#9d 16#9e 16#9f ] vg&undef def % Unicode Greek encoding (unicode codes \u0370-\u03ff) /UCGreekEncoding NullEncoding dup length array copy << 16#91 /Alpha 16#92 /Beta 16#93 /Gamma 16#94 /Delta 16#95 /Epsilon 16#96 /Zeta 16#97 /Eta 16#98 /Theta 16#99 /Iota 16#9a /Kappa 16#9b /Lambda 16#9c /Mu 16#9d /Nu 16#9e /Xi 16#9f /Omicron 16#a0 /Pi 16#a1 /Rho 16#a3 /Sigma 16#a4 /Tau 16#a5 /Upsilon 16#a6 /Phi 16#a7 /Chi 16#a8 /Psi 16#a9 /Omega 16#b1 /alpha 16#b2 /beta 16#b3 /gamma 16#b4 /delta 16#b5 /epsilon 16#b6 /zeta 16#b7 /eta 16#b8 /theta 16#b9 /iota 16#ba /kappa 16#bb /lambda 16#bc /mu 16#bd /nu 16#be /xi 16#bf /omicron 16#c0 /pi 16#c1 /rho 16#c2 /sigma1 16#c3 /sigma 16#c4 /tau 16#c5 /upsilon 16#c6 /phi1 16#c7 /chi 16#c8 /psi 16#c9 /omega 16#7e /semicolon 16#87 /dotmath 16#d1 /theta1 16#d2 /Upsilon1 16#d5 /phi 16#d6 /omega1 >> vg&redef def % Unicode punctuation encoding (unicode codes \u2000-\u206f) /UCPunctuationEncoding NullEncoding dup length array copy << 16#10 /hyphen 16#11 /hyphen 16#12 /endash 16#13 /emdash 16#18 /quoteleft 16#19 /quoteright 16#1a /quotesinglbase 16#1b /quotesingle 16#1c /quotedblleft 16#1d /quotedblright 16#1e /quotedblbase 16#1f /quotedbl 16#20 /dagger 16#21 /daggerdbl 16#22 /bullet 16#24 /period 16#26 /ellipsis 16#27 /periodcentered 16#30 /perthousand 16#44 /fraction 16#70 /zerosuperior 16#74 /foursuperior 16#75 /fivesuperior 16#76 /sixsuperior 16#77 /sevensuperior 16#78 /eightsuperior 16#79 /ninesuperior 16#7b /hyphensuperior 16#7d /parenleftsuperior 16#7e /parenrightsuperior 16#80 /zeroinferior 16#84 /fourinferior 16#85 /fiveinferior 16#81 /oneinferior 16#82 /twoinferior 16#83 /threeinferior 16#86 /sixinferior 16#87 /seveninferior 16#88 /eightinferior 16#89 /nineinferior 16#8b /hypheninferior 16#8d /parenleftinferior 16#8e /parenrightinferior >> vg&redef def % Unicode mathematical operators encoding (unicode codes \u2200-\u22ff) /UCMathOpsEncoding NullEncoding dup length array copy << 16#00 /universal 16#02 /partialdiff 16#03 /existential 16#05 /emptyset 16#06 /Delta 16#07 /gradient 16#08 /element 16#09 /notelement 16#0b /suchthat 16#0f /product 16#11 /summation 16#12 /minus 16#15 /fraction 16#17 /asteriskmath 16#19 /bullet 16#1a /radical 16#1d /proportional 16#1e /infinity 16#20 /angle 16#23 /bar 16#27 /logicaland 16#28 /logicalor 16#29 /intersection 16#2a /union 16#2b /integral 16#34 /therefore 16#36 /colon 16#3c /similar 16#45 /congruent 16#48 /approxequal 16#60 /notequal 16#61 /equivalence 16#64 /lessequal 16#65 /greaterequal 16#82 /propersubset 16#83 /propersuperset 16#86 /reflexsubset 16#87 /reflexsuperset 16#95 /circleplus 16#97 /circlemultiply 16#a5 /perpendicular 16#03 /existential 16#c0 /logicaland 16#c1 /logicalor 16#c2 /intersection 16#c3 /union 16#c4 /diamond 16#c5 /dotmath >> vg&redef def % Unicode arrows encoding (unicode codes \u2190-\u21ff) % Also includes those "Letterlike" unicode characters % which are available in the symbol font. (unicode codes \u2100-\u214f) /UCArrowsEncoding NullEncoding dup length array copy << 16#11 /Ifraktur 16#1c /Rfraktur 16#22 /trademarkserif 16#35 /aleph 16#90 /arrowleft 16#91 /arrowup 16#92 /arrowright 16#93 /arrowdown 16#94 /arrowboth 16#d0 /arrowdblleft 16#d1 /arrowdblup 16#d2 /arrowdblright 16#d3 /arrowdbldown 16#d4 /arrowdblboth >> vg&redef def /ZapfDingbats findfont /Encoding get dup length array copy /UCDingbatsEncoding exch def 16#20 1 16#7f { dup 16#20 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for 16#a0 1 16#ff { dup 16#40 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for UCDingbatsEncoding [ 16#c0 1 16#ff {} for ] vg&undef [ 16#00 16#05 16#0a 16#0b 16#28 16#4c 16#4e 16#53 16#54 16#55 16#57 16#5f 16#60 16#68 16#69 16#6a 16#6b 16#6c 16#6d 16#6e 16#6f 16#70 16#71 16#72 16#73 16#74 16#75 16#95 16#96 16#97 16#b0 16#bf ] vg&undef pop % Define the base fonts which don't change. /Undefined-UC NullEncoding /Helvetica vg&newbasefont pop /MathOps-UC UCMathOpsEncoding /Symbol vg&newbasefont pop /Arrows-UC UCArrowsEncoding /Symbol vg&newbasefont pop /Dingbats-UC UCDingbatsEncoding /ZapfDingbats vg&newbasefont pop % Make the SansSerif composite fonts. /SansSerif /Helvetica 16#00 vg&newcompositefont /SansSerif-Bold /Helvetica-Bold 16#01 vg&newcompositefont /SansSerif-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /SansSerif-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Serif composite fonts. /Serif /Times-Roman 16#00 vg&newcompositefont /Serif-Bold /Times-Bold 16#01 vg&newcompositefont /Serif-Italic /Times-Italic 16#02 vg&newcompositefont /Serif-BoldItalic /Times-BoldItalic 16#03 vg&newcompositefont % Make the Monospaced composite fonts. /Monospaced /Courier 16#00 vg&newcompositefont /Monospaced-Bold /Courier-Bold 16#01 vg&newcompositefont /Monospaced-Italic /Courier-Oblique 16#02 vg&newcompositefont /Monospaced-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont % Make the Dialog composite fonts. /Dialog /Helvetica 16#00 vg&newcompositefont /Dialog-Bold /Helvetica-Bold 16#01 vg&newcompositefont /Dialog-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /Dialog-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the DialogInput composite fonts. /DialogInput /Helvetica 16#00 vg&newcompositefont /DialogInput-Bold /Helvetica-Bold 16#01 vg&newcompositefont /DialogInput-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /DialogInput-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Typewriter composite fonts (JDK 1.1 only). /Typewriter /Courier 16#00 vg&newcompositefont /Typewriter-Bold /Courier-Bold 16#01 vg&newcompositefont /Typewriter-Italic /Courier-Oblique 16#02 vg&newcompositefont /Typewriter-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont /cfontH { dup /fontsize exch def /SansSerif exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHB { dup /fontsize exch def /SansSerif-Bold exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHI { dup /fontsize exch def /SansSerif-Italic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHBI { dup /fontsize exch def /SansSerif-BoldItalic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontT { dup /fontsize exch def /Serif exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTB { dup /fontsize exch def /Serif-Bold exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTI { dup /fontsize exch def /Serif-Italic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTBI { dup /fontsize exch def /Serif-BoldItalic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontC { dup /fontsize exch def /Typewriter exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCB { dup /fontsize exch def /Typewriter-Bold exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCI { dup /fontsize exch def /Typewriter-Italic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCBI { dup /fontsize exch def /Typewriter-BoldItalic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def % Darken or lighten the current color. /darken {0.7 exch exp 3 copy q 4 -1 roll vg&C currentrgbcolor 3 {4 -2 roll mul} repeat 3 array astore Q} def /displayColorMap << /Cr [1.00 0.00 0.00] /Cg [0.00 1.00 0.00] /Cb [0.00 0.00 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.00 0.00] /CGg [0.00 1.00 0.00] /CGb [0.00 0.00 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.00 0.00] /CIg [0.00 1.00 0.00] /CIb [0.00 0.00 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /printColorMap << /Cr [1.00 0.33 0.33] /Cg [0.33 1.00 0.33] /Cb [0.33 0.33 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.33 0.33] /CGg [0.33 1.00 0.33] /CGb [0.33 0.33 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.33 0.33] /CIg [0.33 1.00 0.33] /CIb [0.33 0.33 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /grayColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [0.75] /CGg [1 ] /CGb [0.50] /CGc [0.75] /CGm [0.50] /CGy [1 ] /CGo [0.75] /CGp [1 ] /CGw [0 ] /CGgrl [0.25] /CGgr [0.50] /CGgrd [0.75] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def /bwColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [1 ] /CGg [1 ] /CGb [1 ] /CGc [1 ] /CGm [1 ] /CGy [1 ] /CGo [1 ] /CGp [1 ] /CGw [0 ] /CGgrl [1 ] /CGgr [1 ] /CGgrd [1 ] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def % % The following routines handle the alignment of and printing of % tagged strings. % % Predefine the bounding box values. /bbllx 0 def /bblly 0 def /bburx 0 def /bbury 0 def % This routine pops the first unicode character off of a string and returns % the remainder of the string, the character code of first character, % and a "true" if the string was non-zero length. % popfirst % popfirst /popfirst { dup length 1 gt {dup 0 get /vg&fbyte exch def dup 1 get /vg&cbyte exch def dup length 2 sub 2 exch getinterval true} {pop false} ifelse } def % This routine shows a single unicode character given the font and % character codes. % unicharshow -- /unicharshow { 2 string dup 0 5 -1 roll put dup 1 4 -1 roll put internalshow } def % This is an internal routine to alternate between determining the % bounding box for stringsize and showing the string for recshow. % internalshow -- /internalshow {show} def % This is an internal routine to alternate between determining the % bounding box for stringsize and stroking various ornaments. % internalstroke -- /internalstroke {S} def % Sets up internalshow to use the null device to determine string size. % -- nullinternalshow -- /nullinternalshow {/internalshow {false charpath flattenpath pathbbox updatebbox} def} def % Sets up internalstroke to use the null device to determine string size. % -- nullinternalstroke -- /nullinternalstroke { /internalstroke {flattenpath pathbbox updatebbox} def} def % This routine tests to see if the character code matches the first % character of a string. % testchar /testchar {exch dup 3 -1 roll 0 get eq} def % Raise the text baseline for superscripts. % -- raise -- /raise { 0 fontsize 2 div rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-raise the text baseline for superscripts. % -- unraise -- /unraise { /fontsize fontsize 1.5 mul def 0 fontsize 2 div neg rmoveto } def % Lower the text baseline for subscripts. % -- lower -- /lower { 0 fontsize 3 div neg rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-lower the text baseline for subscripts. % -- unlower -- /unlower { /fontsize fontsize 1.5 mul def 0 fontsize 3 div rmoveto } def % Compare the top two elements on the stack and leave only the % larger one. /maxval {2 copy gt {pop} {exch pop} ifelse} def % Tokenize a string. Do not use the usual PostScript token because % parentheses will not be interpreted correctly because of rescanning % of the string. /vg&token {/vg&string exch def /vg&index -1 def /vg&level 0 def 0 2 vg&string length 2 sub { dup dup 1 add exch vg&string exch get 8 bitshift vg&string 3 -1 roll get or dup 16#f0fe eq {pop 1}{16#f0ff eq {-1}{0} ifelse} ifelse /vg&level exch vg&level add def vg&level 0 eq {/vg&index exch def exit} if pop } for vg&index 0 ge { vg&string vg&index 2 add dup vg&string length exch sub getinterval vg&index 2 gt {vg&string 2 vg&index 2 sub getinterval}{()} ifelse true} {false} ifelse } bind def % Recursively show an unicode string. % recshow -- /recshow { popfirst { % Test to see if this is a string attribute. vg&fbyte 16#f0 and 16#e0 eq { q % Font style. currentfont dup /FontStyleBits known {/FontStyleBits get}{pop 0} ifelse vg&cbyte or vg&fontstyles exch get fontsize exch exec vg&token pop recshow currentpoint Q m recshow } { vg&fbyte 16#F8 and 16#F0 eq { % Superscript and/or subscript. vg&cbyte 16#00 eq { vg&token pop exch vg&token pop 3 -1 roll q raise recshow unraise currentpoint pop Q exch q lower recshow unlower currentpoint pop Q maxval currentpoint exch pop m recshow } if % Strikeout. vg&cbyte 16#01 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll fontsize 3 div add moveto fontsize 3 div add lineto internalstroke Q recshow} if % Underline. vg&cbyte 16#02 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dashed underline. vg&cbyte 16#03 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J [ vg&uthick 5 mul vg&uthick 2 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dotted underline. vg&cbyte 16#04 eq { vg&token pop currentpoint 3 -1 roll recshow q 1 J [ 0 vg&uthick 3 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Thick underline. vg&cbyte 16#05 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Gray thick underline. vg&cbyte 16#06 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w 0.5 setgray currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Overbar. vg&cbyte 16#07 eq { vg&token pop dup stringsize relative 4 1 roll pop pop exch 3 -1 roll recshow q 0 J vg&underline vg&uthick w vg&uoffset neg add dup currentpoint pop exch m l internalstroke Q recshow} if } { vg&fbyte vg&cbyte unicharshow recshow } ifelse } ifelse } if } def % Get the underline position and thickness from the current font. /vg&underline { currentfont dup /FontType get 0 eq {/FDepVector get 0 get} if dup dup /FontInfo known { /FontInfo get dup dup /UnderlinePosition known { /UnderlinePosition get /vg&uoffset exch def } { pop /vg&uoffset 0 def } ifelse dup /UnderlineThickness known { /UnderlineThickness get /vg&uthick exch def } { pop /vg&uthick 0 def } ifelse } { pop /vg&uoffset 0 def /vg&uthick 0 def } ifelse /FontMatrix get currentfont dup /FontType get 0 eq {/FontMatrix get matrix concatmatrix}{pop} ifelse dup 0 vg&uoffset 3 -1 roll transform /vg&uoffset exch def pop 0 vg&uthick 3 -1 roll transform /vg&uthick exch def pop } def % Make a frame with the coordinates on the stack. % frame -- /frame {4 copy m 3 1 roll exch l 4 -2 roll l l h} def % Resets the accumulated bounding box to a degenerate box at the % current point. % -- resetbbox -- /resetbbox { currentpoint 2 copy /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Update the accumulated bounding box. % updatebbox -- /updatebbox { dup bbury gt {/bbury exch def} {pop} ifelse dup bburx gt {/bburx exch def} {pop} ifelse dup bblly lt {/bblly exch def} {pop} ifelse dup bbllx lt {/bbllx exch def} {pop} ifelse } def % Set the bounding box to the values on the stack. % updatebbox -- /restorebbox { /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Push the accumulated bounding box onto the stack. % -- pushbbox /pushbbox {bbllx bblly bburx bbury} def % Make the relative bounding box relative to the currentpoint. % inflate /inflate { 2 {fontsize 0.2 mul add 4 1 roll} repeat 2 {fontsize 0.2 mul sub 4 1 roll} repeat } def % Make the relative bounding box relative to the currentpoint. % relative /relative { currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll } def % Returns the size of a string appropriate for recshow. % stringsize /stringsize { pushbbox /internalshow load /internalstroke load 7 -1 roll q nulldevice 0 0 m nullinternalshow nullinternalstroke resetbbox recshow /internalstroke exch def /internalshow exch def pushbbox 8 -4 roll restorebbox Q } def % Calculate values for string positioning. /calcval {4 copy 3 -1 roll sub /widy exch def sub neg /widx exch def pop pop /dy exch def /dx exch def} def % Utilities to position a string. % First letter (U=upper, C=center, B=baseline, L=lower) % Second letter (L=left, C=center, R=right) /align [ {calcval dx neg widy dy add neg rmoveto} % UL {calcval dx neg widy 2 div dy add neg rmoveto} % CL {calcval dx neg 0 rmoveto} % BL {calcval dx neg dy neg rmoveto} % LL {calcval widx dx add neg widy dy add neg rmoveto} % UR {calcval widx dx add neg widy 2 div dy add neg rmoveto} % CR {calcval widx dx add neg 0 rmoveto} % BR {calcval widx dx add neg dy neg rmoveto} % LR {calcval widx 2 div dx add neg widy dy add neg rmoveto} % UC {calcval widx 2 div dx add neg widy 2 div dy add neg rmoveto} % CC {calcval widx 2 div dx add neg 0 rmoveto} % BC {calcval widx 2 div dx add neg dy neg rmoveto} % LC ] def /vg&str {m q 1 -1 scale dup stringsize 4 copy align 11 -1 roll get exec q inflate relative frame exch exec Q recshow Q} def end /procDict exch def %%EndProlog %%BeginSetup save procDict begin printColorMap begin 595 791 setpagesize 20 20 20 20 setmargins 0 0 setorigin 600 600 setsize fittopage portrait imagescale cliptobounds setbasematrix /Helvetica 10 sf defaultGraphicsState %%EndSetup 0.00000 0.00000 0.00000 RG [ 1.00000 0.00000 0.00000 1.00000 0.00000 0.00000 ] defaultmatrix matrix concatmatrix setmatrix 1.00000 w 2 J 0 j 10.0000 M [ ] 0.00000 d 1.00000 1.00000 1.00000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG q 0 0 600 600 rc 1.00000 1.00000 1.00000 RG 0.00000 0.00000 600.000 600.000 rf 1.00000 0.00000 0.00000 RG 95.0000 7.00000 5.00000 67.0000 L 0.00000 1.00000 0.00000 RG bias 105.000 7.00000 90.0000 61.0000 rs unbias 0.00000 0.00000 1.00000 RG 205.000 7.00000 90.0000 61.0000 50.0000 50.0000 RREC 0.00000 1.00000 1.00000 RG 90.0000 225.000 305.000 7.00000 90.0000 61.0000 OVL 1.00000 0.00000 1.00000 RG 0 360 405.000 7.00000 90.0000 61.0000 OVL 1.00000 1.00000 0.00000 RG 3 505 7 CPL 595 68 505 68 595 7 1.00000 0.00000 0.00000 RG 3 5 82 OPL 95 143 5 143 95 82 0.00000 1.00000 0.00000 RG 105.000 82.0000 90.0000 61.0000 rf 0.00000 0.00000 0.00000 RG bias 105.000 82.0000 90.0000 61.0000 rs unbias 0.00000 0.00000 1.00000 RG 205.000 82.0000 90.0000 61.0000 50.0000 50.0000 FRREC 0.00000 0.00000 0.00000 RG 0.00000 1.00000 1.00000 RG 90.0000 225.000 305.000 82.0000 90.0000 61.0000 FOVL 0.00000 0.00000 0.00000 RG 1.00000 0.00000 1.00000 RG 0 360 405.000 82.0000 90.0000 61.0000 FOVL 0.00000 0.00000 0.00000 RG 1.00000 1.00000 0.00000 RG 3 505 82 FPL 595 143 505 143 595 82 0.00000 0.00000 0.00000 RG 3 505 82 CPL 595 143 505 143 595 82 5.00000 w 1.00000 0.00000 0.00000 RG 95.0000 157.000 5.00000 217.000 L 0.00000 1.00000 0.00000 RG bias 105.000 157.000 90.0000 61.0000 rs unbias 0.00000 0.00000 1.00000 RG 205.000 157.000 90.0000 61.0000 50.0000 50.0000 RREC 0.00000 1.00000 1.00000 RG 90.0000 225.000 305.000 157.000 90.0000 61.0000 OVL 1.00000 0.00000 1.00000 RG 0 360 405.000 157.000 90.0000 61.0000 OVL 1.00000 1.00000 0.00000 RG 3 505 157 CPL 595 218 505 218 595 157 1.00000 0.00000 0.00000 RG 3 5 232 OPL 95 293 5 293 95 232 0.00000 1.00000 0.00000 RG 105.000 232.000 90.0000 61.0000 rf 0.00000 0.00000 0.00000 RG bias 105.000 232.000 90.0000 61.0000 rs unbias 0.00000 0.00000 1.00000 RG 205.000 232.000 90.0000 61.0000 50.0000 50.0000 FRREC 0.00000 0.00000 0.00000 RG 0.00000 1.00000 1.00000 RG 90.0000 225.000 305.000 232.000 90.0000 61.0000 FOVL 0.00000 0.00000 0.00000 RG 1.00000 0.00000 1.00000 RG 0 360 405.000 232.000 90.0000 61.0000 FOVL 0.00000 0.00000 0.00000 RG 1.00000 1.00000 0.00000 RG 3 505 232 FPL 595 293 505 293 595 232 0.00000 0.00000 0.00000 RG 3 505 232 CPL 595 293 505 293 595 232 5.00000 307.000 moveto q 1 -1 scale /SansSerif findfont 14.0 scalefont setfont (\000S\000a\000n\000s\000S\000e\000r\000i\000f\000:\000 \000T\000h\000e\000 \000q\000u\000i\000c\000k\000 \000b\000r\000o\000w\000n\000 \000f\000o\000x\000 \000j\000u\000m\000p\000e\000d\000 \000o\000v\000e\000r\000 \000t\000h\000e\000 \000l\000a\000z\000y\000 \000d\000o\000g\000.) show Q 5.00000 323.000 moveto q 1 -1 scale /SansSerif-Bold findfont 14.0 scalefont setfont (\000S\000a\000n\000s\000S\000e\000r\000i\000f\000 \000\050\000b\000o\000l\000d\000\051\000:\000 \000T\000h\000e\000 \000q\000u\000i\000c\000k\000 \000b\000r\000o\000w\000n\000 \000f\000o\000x\000 \000j\000u\000m\000p\000e\000d\000 \000o\000v\000e\000r\000 \000t\000h\000e\000 \000l\000a\000z\000y\000 \000d\000o\000g\000.) show Q 5.00000 339.000 moveto q 1 -1 scale /SansSerif-Italic findfont 14.0 scalefont setfont (\000S\000a\000n\000s\000S\000e\000r\000i\000f\000 \000\050\000i\000t\000a\000l\000i\000c\000\051\000:\000 \000T\000h\000e\000 \000q\000u\000i\000c\000k\000 \000b\000r\000o\000w\000n\000 \000f\000o\000x\000 \000j\000u\000m\000p\000e\000d\000 \000o\000v\000e\000r\000 \000t\000h\000e\000 \000l\000a\000z\000y\000 \000d\000o\000g\000.) show Q 5.00000 355.000 moveto q 1 -1 scale /Serif findfont 14.0 scalefont setfont (\000S\000e\000r\000i\000f\000:\000 \000T\000h\000e\000 \000q\000u\000i\000c\000k\000 \000b\000r\000o\000w\000n\000 \000f\000o\000x\000 \000j\000u\000m\000p\000e\000d\000 \000o\000v\000e\000r\000 \000t\000h\000e\000 \000l\000a\000z\000y\000 \000d\000o\000g\000.) show Q 5.00000 371.000 moveto q 1 -1 scale /Serif-Bold findfont 14.0 scalefont setfont (\000S\000e\000r\000i\000f\000 \000\050\000b\000o\000l\000d\000\051\000:\000 \000T\000h\000e\000 \000q\000u\000i\000c\000k\000 \000b\000r\000o\000w\000n\000 \000f\000o\000x\000 \000j\000u\000m\000p\000e\000d\000 \000o\000v\000e\000r\000 \000t\000h\000e\000 \000l\000a\000z\000y\000 \000d\000o\000g\000.) show Q 5.00000 387.000 moveto q 1 -1 scale /Serif-Italic findfont 14.0 scalefont setfont (\000S\000e\000r\000i\000f\000 \000\050\000i\000t\000a\000l\000i\000c\000\051\000:\000 \000T\000h\000e\000 \000q\000u\000i\000c\000k\000 \000b\000r\000o\000w\000n\000 \000f\000o\000x\000 \000j\000u\000m\000p\000e\000d\000 \000o\000v\000e\000r\000 \000t\000h\000e\000 \000l\000a\000z\000y\000 \000d\000o\000g\000.) show Q 5.00000 403.000 moveto q 1 -1 scale /Monospaced findfont 14.0 scalefont setfont (\000M\000o\000n\000o\000s\000p\000a\000c\000e\000d\000:\000 \000T\000h\000e\000 \000q\000u\000i\000c\000k\000 \000b\000r\000o\000w\000n\000 \000f\000o\000x\000 \000j\000u\000m\000p\000e\000d\000 \000o\000v\000e\000r\000 \000t\000h\000e\000 \000l\000a\000z\000y\000 \000d\000o\000g\000.) show Q 5.00000 419.000 moveto q 1 -1 scale /Monospaced-Bold findfont 14.0 scalefont setfont (\000M\000o\000n\000o\000s\000p\000a\000c\000e\000d\000 \000\050\000b\000o\000l\000d\000\051\000:\000 \000T\000h\000e\000 \000q\000u\000i\000c\000k\000 \000b\000r\000o\000w\000n\000 \000f\000o\000x\000 \000j\000u\000m\000p\000e\000d\000 \000o\000v\000e\000r\000 \000t\000h\000e\000 \000l\000a\000z\000y\000 \000d\000o\000g\000.) show Q 5.00000 435.000 moveto q 1 -1 scale /Monospaced-Italic findfont 14.0 scalefont setfont (\000M\000o\000n\000o\000s\000p\000a\000c\000e\000d\000 \000\050\000i\000t\000a\000l\000i\000c\000\051\000:\000 \000T\000h\000e\000 \000q\000u\000i\000c\000k\000 \000b\000r\000o\000w\000n\000 \000f\000o\000x\000 \000j\000u\000m\000p\000e\000d\000 \000o\000v\000e\000r\000 \000t\000h\000e\000 \000l\000a\000z\000y\000 \000d\000o\000g\000.) show Q 5.00000 451.000 moveto q 1 -1 scale /Symbol findfont 14.0 scalefont setfont (Symbol: The quick brown fox jumped over the lazy dog.) show Q 5.00000 467.000 moveto q 1 -1 scale /Symbol findfont 14.0 scalefont setfont (Symbol \(bold\): The quick brown fox jumped over the lazy dog.) show Q 5.00000 483.000 moveto q 1 -1 scale /Symbol findfont 14.0 scalefont setfont (Symbol \(italic\): The quick brown fox jumped over the lazy dog.) show Q 5.00000 499.000 moveto q 1 -1 scale /ZapfDingbats findfont 14.0 scalefont setfont (ZapfDingbats: The quick brown fox jumped over the lazy dog.) show Q 5.00000 515.000 moveto q 1 -1 scale /ZapfDingbats findfont 14.0 scalefont setfont (ZapfDingbats \(bold\): The quick brown fox jumped over the lazy dog.) show Q 5.00000 531.000 moveto q 1 -1 scale /ZapfDingbats findfont 14.0 scalefont setfont (ZapfDingbats \(italic\): The quick brown fox jumped over the lazy dog.) show Q 5.00000 547.000 moveto q 1 -1 scale /Monospaced findfont 14.0 scalefont setfont (\000U\000n\000b\000a\000l\000a\000n\000c\000e\000d\000 \000\050\000\050\000 \000\051\000\051\000 \000\051\000\051\000\051\000 \000\050\000\050\000\050\000 \000T\000E\000S\000T\000!\000 \000\051\000T\000\050\000 \000\050\000T\000\051) show Q Q end end restore showpage %%Trailer %%EOF src/test/resources/ps/TestTransforms.ps0000644000175000017500000011372010344614150017644 0ustar user01user01%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 20 118 575 673 %%Creator: FreeHEP Graphics2D Driver %%Producer: org.freehep.graphicsio.ps.PSGraphics2D %%For: %%Title: %%LanguageLevel: 3 %%EndComments %%BeginProlog 100 dict dup begin % % File: org/freehep/graphicsio.ps/PSProlog.txt % Author: Charles Loomis % % Redefinitions which save some space in the output file. These are also % the same as the PDF operators. /q {gsave} def /Q {grestore} def /n {newpath} def /m {moveto} def /l {lineto} def /c {curveto} def /h {closepath} def /re {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath} def /f {fill} def /f* {eofill} def /F {gsave vg&FC fill grestore} def /F* {gsave vg&FC eofill grestore} def /s {closepath stroke} def /S {stroke} def /b {closepath gsave vg&FC fill grestore gsave stroke grestore newpath} def /B {gsave vg&FC fill grestore gsave stroke grestore newpath} def /b* {closepath gsave vg&FC eofill grestore gsave stroke grestore newpath} def /B* {gsave vg&FC eofill grestore gsave stroke grestore newpath} def /g {1 array astore /vg&fcolor exch def} def /G {setgray} def /k {4 array astore /vg&fcolor exch def} def /K {setcmykcolor} def /rg {3 array astore /vg&fcolor exch def} def /RG {setrgbcolor} def % Initialize the fill color. 0 0 0 rg /vg&FC {mark vg&fcolor aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /vg&DFC {/vg&fcolor exch def} def /vg&C {mark exch aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /w {setlinewidth} def /j {setlinejoin} def /J {setlinecap} def /M {setmiterlimit} def /d {setdash} def /i {setflat} def /W {clip} def /W* {eoclip} def % Setup the default graphics state. % (black; 1 pt. linewidth; miter join; butt-ends; solid) /defaultGraphicsState {0 g 1 w 0 j 0 J [] 0 d} def % Emulation of the rectangle operators for PostScript implementations % which do not implement all Level 2 features. This is an INCOMPLETE % emulation; only the "x y width height rect..." form is emulated. /*rf {gsave newpath re fill grestore} def /*rs {gsave newpath re stroke grestore} def /*rc {newpath re clip} def /rf /rectfill where {pop /rectfill}{/*rf} ifelse load def /rs /rectstroke where {pop /rectstroke}{/*rs} ifelse load def /rc /rectclip where {pop /rectclip}{/*rc} ifelse load def % Emulation of the selectfont operator. This includes a 20% increase in % the fontsize which is necessary to get sizes similar to the Java fonts. /*sf {exch findfont exch dup type /arraytype eq {makefont}{scalefont} ifelse setfont} bind def /sf /selectfont where {pop {1.2 mul selectfont}}{{1.2 mul *sf}} ifelse def % Special version of stroke which allows the dash pattern to continue % across path segments. (This may be needed for PostScript although % modern printers seem to do this correctly.) /vg&stroke { currentdash pop length 0 eq {stroke} { currentdash /vg&doffset exch def pop flattenpath {m vg&resetdash} {2 copy currentpoint 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt 3 1 roll l currentdash 3 -1 roll add setdash} {} {h vg&resetdash} pathforall stroke vg&resetdash } ifelse } def /vg&resetdash {currentdash pop vg&doffset setdash} def % Initialize variables for safety. /delta 0 def /xv 0 def /yv 0 def /width 0 def /height 0 def % Initialize to portrait INTERNATIONAL (Letter-height, A4-width) page. /pw 595 def /ph 791 def /po true def /ftp false def % Initialize margins to 20 points. /ml 20 def /mr 20 def /mt 20 def /mb 20 def % Temporary matrices. /smatrix 0 def /nmatrix 0 def % set page size (usage: setpagesize) /setpagesize {/ph exch def /pw exch def} def % set page orientation (usage: portrait or landscape) /portrait {/po true def} def /landscape {/po false def} def % force natural size for image (usage: naturalsize) /naturalsize {/ftp false def} def % resize image to fill page (usage: fittopage) /fittopage {/ftp true def} def % set margins of the page (usage: setmargins) /setmargins {/mr exch def /mt exch def /mb exch def /ml exch def} def % set the graphic's size (usage: setsize) /setsize {/gh exch def /gw exch def} def % set the graphic's origin (usage: setorigin) /setorigin {/gy exch def /gx exch def} def % calculate image center /imagecenter {pw ml sub mr sub 2 div ml add ph mt sub mb sub 2 div mb add} def % calculate the necessary scaling /imagescale {po {gw}{gh} ifelse pw ml sub mr sub div po {gh}{gw} ifelse ph mt sub mb sub div 2 copy lt {exch} if pop ftp not {1 2 copy lt {exch} if pop} if 1 exch div /sfactor exch def /gw gw sfactor mul def /gh gh sfactor mul def} def % calculate image origin /imageorigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div po {add}{sub} ifelse} def % calculate the clipping origin /cliporigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub floor ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div sub floor} def % Set the clipping region to the bounding box. /cliptobounds {cliporigin po {gw}{gh} ifelse 1 add po {gh}{gw} ifelse 1 add rc} def % set the base transformation matrix (usage: setbasematrix) /setbasematrix {imageorigin translate po {0}{90} ifelse rotate sfactor sfactor neg scale /defaultmatrix matrix currentmatrix def} def % The lower-right bias in drawing 1 pt. wide lines. /bias {q 0.5 0.5 translate} def /unbias {Q} def % Draw a line. (x0 y0 x1 y1 line) /L {bias n m l S unbias} def % Polyline primitive. /polyline {n m 1 exch 1 exch {pop currentfile token pop currentfile token pop l} for } def % Draw a polyline (n x0 y0 OPL x1 y1 x2 y2 ... ... xn yn) /OPL {bias polyline S unbias} def % Draw a closed polyline (n x0 y0 CPL x1 y1 x2 y2 ... ... xn yn) /CPL {bias polyline s unbias} def % Draw a filled polyline (n x0 y0 FPL x1 y1 x2 y2 ... ... xn yn) /FPL {polyline h f*} def % Draw an oval. (x y w h OVL) /OVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width currentlinewidth sub 2 div height currentlinewidth sub 2 div neg scale n 0 0 1 5 -2 roll arc smatrix setmatrix S} def % Draw a filled oval. (x y w h FOVL) /FOVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width 2 div height 2 div neg scale n 0 0 m 0 0 1 5 -2 roll arc h smatrix setmatrix f} def % Draw a rounded rectangle. (x y w h arcwidth archeight RREC) /RREC {matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix s} def % Draw a filled rounded rectangle. (x y w h arcwidth archeight FRREC) /FRREC{matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix h f} def % Draw a string. (string x y STR) /STR {q m 1 -1 scale recshow Q} def % Define basic plot symbols. /xys {/siz exch def /yv exch def /xv exch def} def /hline {xys n xv siz 2. div sub yv m siz 0 rlineto S} def /vline {xys n xv yv siz 2. div sub m 0 siz rlineto S} def /plus {xys n xv yv siz 2. div sub m 0 siz rlineto xv siz 2. div sub yv m siz 0 rlineto S} def /dot {n 2. div 0 360 arc s} def /fdot {n 2. div 0 360 arc h f} def /box {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rs} def /fbox {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rf} def /tridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto s} def /ftridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto h f} def % Symbols defined in terms of the others. /star {3 copy cross plus} def /cross {xys q xv yv translate 45 rotate 0 0 siz plus Q} def /diamond {xys q xv yv translate 45 rotate 0 0 siz box Q} def /fdiamond {xys q xv yv translate 45 rotate 0 0 siz fbox Q} def /triup {xys q xv yv translate 180 rotate 0 0 siz tridn Q} def /ftriup {xys q xv yv translate 180 rotate 0 0 siz ftridn Q} def % Define the composite fonts used to print Unicode strings. % Undefine particular values in an encoding array. /vg&undef { {exch dup 3 -1 roll /.notdef put} forall } def /vg&redef { {3 -1 roll dup 4 2 roll put} forall } def % usage: key encoding basefontname vg&newbasefont font /vg&newbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def currentdict end definefont } def % usage: key encoding basefontname vg&newskewedbasefont font /vg&newskewedbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def exch FontMatrix exch matrix concatmatrix /FontMatrix exch def currentdict end definefont } def % usage: basekey suffix vg&nconcat name /vg&nconcat { 2 {dup length string cvs exch} repeat dup length 3 -1 roll dup length 3 -1 roll add string dup 0 4 -1 roll dup length 5 1 roll putinterval dup 4 -2 roll exch putinterval cvn } def %usage: fontname vg&skewmatrix matrix /vg&skewmatrix { findfont dup /FontInfo known { /FontInfo get dup /ItalicAngle known { [ 1 0 4 -1 roll /ItalicAngle get neg dup sin exch cos div 1 0 0 ] } {pop matrix} ifelse } {pop matrix} ifelse } def % usage: newfontname basefontname vg&newcompositefont -- /vg&newcompositefont { /vg&fstyle exch def /vg&bfont exch def /vg&fname exch def << /FontStyleBits vg&fstyle /FontType 0 /FontMatrix matrix /FontName vg&fname /FMapType 2 /Encoding [ 0 1 255 {pop 6} for ] dup 16#00 0 put % Latin dup 16#03 1 put % Greek dup 16#20 2 put % Punctuation dup 16#21 3 put % Arrows dup 16#22 4 put % MathOps dup 16#27 5 put % Dingbats /FDepVector [ vg&bfont /-UC-Latin vg&nconcat UCLatinEncoding vg&bfont vg&newbasefont vg&bfont vg&skewmatrix vg&bfont /-UC-Greek vg&nconcat UCGreekEncoding /Symbol vg&newskewedbasefont vg&bfont /-UC-Punctuation vg&nconcat UCPunctuationEncoding vg&bfont vg&newbasefont /Arrows-UC findfont /MathOps-UC findfont /Dingbats-UC findfont /Undefined-UC findfont ] >> vg&fname exch definefont pop } def % Null encoding vector (all elements set to .notdef) /NullEncoding [ 256 {/.notdef} repeat ] def % Unicode Latin encoding (unicode codes \u0000-\u00ff) /UCLatinEncoding ISOLatin1Encoding dup length array copy dup 16#60 /grave put [ 16#90 16#91 16#92 16#93 16#94 16#95 16#96 16#97 16#98 16#9a 16#9b 16#9d 16#9e 16#9f ] vg&undef def % Unicode Greek encoding (unicode codes \u0370-\u03ff) /UCGreekEncoding NullEncoding dup length array copy << 16#91 /Alpha 16#92 /Beta 16#93 /Gamma 16#94 /Delta 16#95 /Epsilon 16#96 /Zeta 16#97 /Eta 16#98 /Theta 16#99 /Iota 16#9a /Kappa 16#9b /Lambda 16#9c /Mu 16#9d /Nu 16#9e /Xi 16#9f /Omicron 16#a0 /Pi 16#a1 /Rho 16#a3 /Sigma 16#a4 /Tau 16#a5 /Upsilon 16#a6 /Phi 16#a7 /Chi 16#a8 /Psi 16#a9 /Omega 16#b1 /alpha 16#b2 /beta 16#b3 /gamma 16#b4 /delta 16#b5 /epsilon 16#b6 /zeta 16#b7 /eta 16#b8 /theta 16#b9 /iota 16#ba /kappa 16#bb /lambda 16#bc /mu 16#bd /nu 16#be /xi 16#bf /omicron 16#c0 /pi 16#c1 /rho 16#c2 /sigma1 16#c3 /sigma 16#c4 /tau 16#c5 /upsilon 16#c6 /phi1 16#c7 /chi 16#c8 /psi 16#c9 /omega 16#7e /semicolon 16#87 /dotmath 16#d1 /theta1 16#d2 /Upsilon1 16#d5 /phi 16#d6 /omega1 >> vg&redef def % Unicode punctuation encoding (unicode codes \u2000-\u206f) /UCPunctuationEncoding NullEncoding dup length array copy << 16#10 /hyphen 16#11 /hyphen 16#12 /endash 16#13 /emdash 16#18 /quoteleft 16#19 /quoteright 16#1a /quotesinglbase 16#1b /quotesingle 16#1c /quotedblleft 16#1d /quotedblright 16#1e /quotedblbase 16#1f /quotedbl 16#20 /dagger 16#21 /daggerdbl 16#22 /bullet 16#24 /period 16#26 /ellipsis 16#27 /periodcentered 16#30 /perthousand 16#44 /fraction 16#70 /zerosuperior 16#74 /foursuperior 16#75 /fivesuperior 16#76 /sixsuperior 16#77 /sevensuperior 16#78 /eightsuperior 16#79 /ninesuperior 16#7b /hyphensuperior 16#7d /parenleftsuperior 16#7e /parenrightsuperior 16#80 /zeroinferior 16#84 /fourinferior 16#85 /fiveinferior 16#81 /oneinferior 16#82 /twoinferior 16#83 /threeinferior 16#86 /sixinferior 16#87 /seveninferior 16#88 /eightinferior 16#89 /nineinferior 16#8b /hypheninferior 16#8d /parenleftinferior 16#8e /parenrightinferior >> vg&redef def % Unicode mathematical operators encoding (unicode codes \u2200-\u22ff) /UCMathOpsEncoding NullEncoding dup length array copy << 16#00 /universal 16#02 /partialdiff 16#03 /existential 16#05 /emptyset 16#06 /Delta 16#07 /gradient 16#08 /element 16#09 /notelement 16#0b /suchthat 16#0f /product 16#11 /summation 16#12 /minus 16#15 /fraction 16#17 /asteriskmath 16#19 /bullet 16#1a /radical 16#1d /proportional 16#1e /infinity 16#20 /angle 16#23 /bar 16#27 /logicaland 16#28 /logicalor 16#29 /intersection 16#2a /union 16#2b /integral 16#34 /therefore 16#36 /colon 16#3c /similar 16#45 /congruent 16#48 /approxequal 16#60 /notequal 16#61 /equivalence 16#64 /lessequal 16#65 /greaterequal 16#82 /propersubset 16#83 /propersuperset 16#86 /reflexsubset 16#87 /reflexsuperset 16#95 /circleplus 16#97 /circlemultiply 16#a5 /perpendicular 16#03 /existential 16#c0 /logicaland 16#c1 /logicalor 16#c2 /intersection 16#c3 /union 16#c4 /diamond 16#c5 /dotmath >> vg&redef def % Unicode arrows encoding (unicode codes \u2190-\u21ff) % Also includes those "Letterlike" unicode characters % which are available in the symbol font. (unicode codes \u2100-\u214f) /UCArrowsEncoding NullEncoding dup length array copy << 16#11 /Ifraktur 16#1c /Rfraktur 16#22 /trademarkserif 16#35 /aleph 16#90 /arrowleft 16#91 /arrowup 16#92 /arrowright 16#93 /arrowdown 16#94 /arrowboth 16#d0 /arrowdblleft 16#d1 /arrowdblup 16#d2 /arrowdblright 16#d3 /arrowdbldown 16#d4 /arrowdblboth >> vg&redef def /ZapfDingbats findfont /Encoding get dup length array copy /UCDingbatsEncoding exch def 16#20 1 16#7f { dup 16#20 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for 16#a0 1 16#ff { dup 16#40 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for UCDingbatsEncoding [ 16#c0 1 16#ff {} for ] vg&undef [ 16#00 16#05 16#0a 16#0b 16#28 16#4c 16#4e 16#53 16#54 16#55 16#57 16#5f 16#60 16#68 16#69 16#6a 16#6b 16#6c 16#6d 16#6e 16#6f 16#70 16#71 16#72 16#73 16#74 16#75 16#95 16#96 16#97 16#b0 16#bf ] vg&undef pop % Define the base fonts which don't change. /Undefined-UC NullEncoding /Helvetica vg&newbasefont pop /MathOps-UC UCMathOpsEncoding /Symbol vg&newbasefont pop /Arrows-UC UCArrowsEncoding /Symbol vg&newbasefont pop /Dingbats-UC UCDingbatsEncoding /ZapfDingbats vg&newbasefont pop % Make the SansSerif composite fonts. /SansSerif /Helvetica 16#00 vg&newcompositefont /SansSerif-Bold /Helvetica-Bold 16#01 vg&newcompositefont /SansSerif-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /SansSerif-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Serif composite fonts. /Serif /Times-Roman 16#00 vg&newcompositefont /Serif-Bold /Times-Bold 16#01 vg&newcompositefont /Serif-Italic /Times-Italic 16#02 vg&newcompositefont /Serif-BoldItalic /Times-BoldItalic 16#03 vg&newcompositefont % Make the Monospaced composite fonts. /Monospaced /Courier 16#00 vg&newcompositefont /Monospaced-Bold /Courier-Bold 16#01 vg&newcompositefont /Monospaced-Italic /Courier-Oblique 16#02 vg&newcompositefont /Monospaced-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont % Make the Dialog composite fonts. /Dialog /Helvetica 16#00 vg&newcompositefont /Dialog-Bold /Helvetica-Bold 16#01 vg&newcompositefont /Dialog-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /Dialog-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the DialogInput composite fonts. /DialogInput /Helvetica 16#00 vg&newcompositefont /DialogInput-Bold /Helvetica-Bold 16#01 vg&newcompositefont /DialogInput-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /DialogInput-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Typewriter composite fonts (JDK 1.1 only). /Typewriter /Courier 16#00 vg&newcompositefont /Typewriter-Bold /Courier-Bold 16#01 vg&newcompositefont /Typewriter-Italic /Courier-Oblique 16#02 vg&newcompositefont /Typewriter-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont /cfontH { dup /fontsize exch def /SansSerif exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHB { dup /fontsize exch def /SansSerif-Bold exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHI { dup /fontsize exch def /SansSerif-Italic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHBI { dup /fontsize exch def /SansSerif-BoldItalic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontT { dup /fontsize exch def /Serif exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTB { dup /fontsize exch def /Serif-Bold exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTI { dup /fontsize exch def /Serif-Italic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTBI { dup /fontsize exch def /Serif-BoldItalic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontC { dup /fontsize exch def /Typewriter exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCB { dup /fontsize exch def /Typewriter-Bold exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCI { dup /fontsize exch def /Typewriter-Italic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCBI { dup /fontsize exch def /Typewriter-BoldItalic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def % Darken or lighten the current color. /darken {0.7 exch exp 3 copy q 4 -1 roll vg&C currentrgbcolor 3 {4 -2 roll mul} repeat 3 array astore Q} def /displayColorMap << /Cr [1.00 0.00 0.00] /Cg [0.00 1.00 0.00] /Cb [0.00 0.00 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.00 0.00] /CGg [0.00 1.00 0.00] /CGb [0.00 0.00 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.00 0.00] /CIg [0.00 1.00 0.00] /CIb [0.00 0.00 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /printColorMap << /Cr [1.00 0.33 0.33] /Cg [0.33 1.00 0.33] /Cb [0.33 0.33 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.33 0.33] /CGg [0.33 1.00 0.33] /CGb [0.33 0.33 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.33 0.33] /CIg [0.33 1.00 0.33] /CIb [0.33 0.33 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /grayColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [0.75] /CGg [1 ] /CGb [0.50] /CGc [0.75] /CGm [0.50] /CGy [1 ] /CGo [0.75] /CGp [1 ] /CGw [0 ] /CGgrl [0.25] /CGgr [0.50] /CGgrd [0.75] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def /bwColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [1 ] /CGg [1 ] /CGb [1 ] /CGc [1 ] /CGm [1 ] /CGy [1 ] /CGo [1 ] /CGp [1 ] /CGw [0 ] /CGgrl [1 ] /CGgr [1 ] /CGgrd [1 ] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def % % The following routines handle the alignment of and printing of % tagged strings. % % Predefine the bounding box values. /bbllx 0 def /bblly 0 def /bburx 0 def /bbury 0 def % This routine pops the first unicode character off of a string and returns % the remainder of the string, the character code of first character, % and a "true" if the string was non-zero length. % popfirst % popfirst /popfirst { dup length 1 gt {dup 0 get /vg&fbyte exch def dup 1 get /vg&cbyte exch def dup length 2 sub 2 exch getinterval true} {pop false} ifelse } def % This routine shows a single unicode character given the font and % character codes. % unicharshow -- /unicharshow { 2 string dup 0 5 -1 roll put dup 1 4 -1 roll put internalshow } def % This is an internal routine to alternate between determining the % bounding box for stringsize and showing the string for recshow. % internalshow -- /internalshow {show} def % This is an internal routine to alternate between determining the % bounding box for stringsize and stroking various ornaments. % internalstroke -- /internalstroke {S} def % Sets up internalshow to use the null device to determine string size. % -- nullinternalshow -- /nullinternalshow {/internalshow {false charpath flattenpath pathbbox updatebbox} def} def % Sets up internalstroke to use the null device to determine string size. % -- nullinternalstroke -- /nullinternalstroke { /internalstroke {flattenpath pathbbox updatebbox} def} def % This routine tests to see if the character code matches the first % character of a string. % testchar /testchar {exch dup 3 -1 roll 0 get eq} def % Raise the text baseline for superscripts. % -- raise -- /raise { 0 fontsize 2 div rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-raise the text baseline for superscripts. % -- unraise -- /unraise { /fontsize fontsize 1.5 mul def 0 fontsize 2 div neg rmoveto } def % Lower the text baseline for subscripts. % -- lower -- /lower { 0 fontsize 3 div neg rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-lower the text baseline for subscripts. % -- unlower -- /unlower { /fontsize fontsize 1.5 mul def 0 fontsize 3 div rmoveto } def % Compare the top two elements on the stack and leave only the % larger one. /maxval {2 copy gt {pop} {exch pop} ifelse} def % Tokenize a string. Do not use the usual PostScript token because % parentheses will not be interpreted correctly because of rescanning % of the string. /vg&token {/vg&string exch def /vg&index -1 def /vg&level 0 def 0 2 vg&string length 2 sub { dup dup 1 add exch vg&string exch get 8 bitshift vg&string 3 -1 roll get or dup 16#f0fe eq {pop 1}{16#f0ff eq {-1}{0} ifelse} ifelse /vg&level exch vg&level add def vg&level 0 eq {/vg&index exch def exit} if pop } for vg&index 0 ge { vg&string vg&index 2 add dup vg&string length exch sub getinterval vg&index 2 gt {vg&string 2 vg&index 2 sub getinterval}{()} ifelse true} {false} ifelse } bind def % Recursively show an unicode string. % recshow -- /recshow { popfirst { % Test to see if this is a string attribute. vg&fbyte 16#f0 and 16#e0 eq { q % Font style. currentfont dup /FontStyleBits known {/FontStyleBits get}{pop 0} ifelse vg&cbyte or vg&fontstyles exch get fontsize exch exec vg&token pop recshow currentpoint Q m recshow } { vg&fbyte 16#F8 and 16#F0 eq { % Superscript and/or subscript. vg&cbyte 16#00 eq { vg&token pop exch vg&token pop 3 -1 roll q raise recshow unraise currentpoint pop Q exch q lower recshow unlower currentpoint pop Q maxval currentpoint exch pop m recshow } if % Strikeout. vg&cbyte 16#01 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll fontsize 3 div add moveto fontsize 3 div add lineto internalstroke Q recshow} if % Underline. vg&cbyte 16#02 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dashed underline. vg&cbyte 16#03 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J [ vg&uthick 5 mul vg&uthick 2 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dotted underline. vg&cbyte 16#04 eq { vg&token pop currentpoint 3 -1 roll recshow q 1 J [ 0 vg&uthick 3 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Thick underline. vg&cbyte 16#05 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Gray thick underline. vg&cbyte 16#06 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w 0.5 setgray currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Overbar. vg&cbyte 16#07 eq { vg&token pop dup stringsize relative 4 1 roll pop pop exch 3 -1 roll recshow q 0 J vg&underline vg&uthick w vg&uoffset neg add dup currentpoint pop exch m l internalstroke Q recshow} if } { vg&fbyte vg&cbyte unicharshow recshow } ifelse } ifelse } if } def % Get the underline position and thickness from the current font. /vg&underline { currentfont dup /FontType get 0 eq {/FDepVector get 0 get} if dup dup /FontInfo known { /FontInfo get dup dup /UnderlinePosition known { /UnderlinePosition get /vg&uoffset exch def } { pop /vg&uoffset 0 def } ifelse dup /UnderlineThickness known { /UnderlineThickness get /vg&uthick exch def } { pop /vg&uthick 0 def } ifelse } { pop /vg&uoffset 0 def /vg&uthick 0 def } ifelse /FontMatrix get currentfont dup /FontType get 0 eq {/FontMatrix get matrix concatmatrix}{pop} ifelse dup 0 vg&uoffset 3 -1 roll transform /vg&uoffset exch def pop 0 vg&uthick 3 -1 roll transform /vg&uthick exch def pop } def % Make a frame with the coordinates on the stack. % frame -- /frame {4 copy m 3 1 roll exch l 4 -2 roll l l h} def % Resets the accumulated bounding box to a degenerate box at the % current point. % -- resetbbox -- /resetbbox { currentpoint 2 copy /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Update the accumulated bounding box. % updatebbox -- /updatebbox { dup bbury gt {/bbury exch def} {pop} ifelse dup bburx gt {/bburx exch def} {pop} ifelse dup bblly lt {/bblly exch def} {pop} ifelse dup bbllx lt {/bbllx exch def} {pop} ifelse } def % Set the bounding box to the values on the stack. % updatebbox -- /restorebbox { /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Push the accumulated bounding box onto the stack. % -- pushbbox /pushbbox {bbllx bblly bburx bbury} def % Make the relative bounding box relative to the currentpoint. % inflate /inflate { 2 {fontsize 0.2 mul add 4 1 roll} repeat 2 {fontsize 0.2 mul sub 4 1 roll} repeat } def % Make the relative bounding box relative to the currentpoint. % relative /relative { currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll } def % Returns the size of a string appropriate for recshow. % stringsize /stringsize { pushbbox /internalshow load /internalstroke load 7 -1 roll q nulldevice 0 0 m nullinternalshow nullinternalstroke resetbbox recshow /internalstroke exch def /internalshow exch def pushbbox 8 -4 roll restorebbox Q } def % Calculate values for string positioning. /calcval {4 copy 3 -1 roll sub /widy exch def sub neg /widx exch def pop pop /dy exch def /dx exch def} def % Utilities to position a string. % First letter (U=upper, C=center, B=baseline, L=lower) % Second letter (L=left, C=center, R=right) /align [ {calcval dx neg widy dy add neg rmoveto} % UL {calcval dx neg widy 2 div dy add neg rmoveto} % CL {calcval dx neg 0 rmoveto} % BL {calcval dx neg dy neg rmoveto} % LL {calcval widx dx add neg widy dy add neg rmoveto} % UR {calcval widx dx add neg widy 2 div dy add neg rmoveto} % CR {calcval widx dx add neg 0 rmoveto} % BR {calcval widx dx add neg dy neg rmoveto} % LR {calcval widx 2 div dx add neg widy dy add neg rmoveto} % UC {calcval widx 2 div dx add neg widy 2 div dy add neg rmoveto} % CC {calcval widx 2 div dx add neg 0 rmoveto} % BC {calcval widx 2 div dx add neg dy neg rmoveto} % LC ] def /vg&str {m q 1 -1 scale dup stringsize 4 copy align 11 -1 roll get exec q inflate relative frame exch exec Q recshow Q} def end /procDict exch def %%EndProlog %%BeginSetup save procDict begin printColorMap begin 595 791 setpagesize 20 20 20 20 setmargins 0 0 setorigin 600 600 setsize fittopage portrait imagescale cliptobounds setbasematrix /Helvetica 10 sf defaultGraphicsState %%EndSetup 0.00000 0.00000 0.00000 RG [ 1.00000 0.00000 0.00000 1.00000 0.00000 0.00000 ] defaultmatrix matrix concatmatrix setmatrix 1.00000 w 2 J 0 j 10.0000 M [ ] 0.00000 d .800000 .800000 .800000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG q 0 0 600 600 rc 1.00000 1.00000 1.00000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG q 5.00000 w 1 J 1 j 100.000 100.000 translate newpath 0.00000 0.00000 m 25.0000 50.0000 l -25.0000 50.0000 l 25.0000 -50.0000 l -25.0000 -50.0000 l h S Q q 5.00000 w 1 J 1 j 300.000 100.000 translate 45.0000 rotate newpath 0.00000 0.00000 m 25.0000 50.0000 l -25.0000 50.0000 l 25.0000 -50.0000 l -25.0000 -50.0000 l h f Q q 5.00000 w 1 J 1 j 500.000 100.000 translate 2.00000 .500000 scale 1.00000 0.00000 0.00000 rg newpath 0.00000 0.00000 m 25.0000 50.0000 l -25.0000 50.0000 l 25.0000 -50.0000 l -25.0000 -50.0000 l h B Q q 5.00000 w 1 J 1 j 100.000 300.000 translate [ 1.0 0.00000 1.00000 1.0 0.0 0.0 ] concat newpath 0.00000 0.00000 m 25.0000 50.0000 l -25.0000 50.0000 l 25.0000 -50.0000 l -25.0000 -50.0000 l h S Q q 5.00000 w 1 J 1 j 300.000 300.000 translate [ 1.0 1.00000 0.00000 1.0 0.0 0.0 ] concat newpath 0.00000 0.00000 m 25.0000 50.0000 l -25.0000 50.0000 l 25.0000 -50.0000 l -25.0000 -50.0000 l h S Q q 5.00000 w 1 J 1 j 500.000 300.000 translate 50.0000 50.0000 translate -45.0000 rotate -50.0000 -50.0000 translate newpath 0.00000 0.00000 m 25.0000 50.0000 l -25.0000 50.0000 l 25.0000 -50.0000 l -25.0000 -50.0000 l h S Q q 5.00000 w 1 J 1 j 100.000 500.000 translate [ 2.00000 0.00000 1.00000 .500000 50.0000 0.00000 ] concat newpath 0.00000 0.00000 m 25.0000 50.0000 l -25.0000 50.0000 l 25.0000 -50.0000 l -25.0000 -50.0000 l h S Q q 5.00000 w 1 J 1 j 300.000 500.000 translate [ .500000 1.00000 0.00000 2.00000 50.0000 -50.0000 ] concat newpath 0.00000 0.00000 m 25.0000 50.0000 l -25.0000 50.0000 l 25.0000 -50.0000 l -25.0000 -50.0000 l h S Q [ 1.00000 0.00000 0.00000 1.00000 400.000 400.000 ] defaultmatrix matrix concatmatrix setmatrix q 5.00000 w 1 J 1 j [ .500000 1.00000 0.00000 1.00000 0.00000 0.00000 ] concat newpath 0.00000 0.00000 m 25.0000 50.0000 l -25.0000 50.0000 l 25.0000 -50.0000 l -25.0000 -50.0000 l h S Q [ 1.00000 0.00000 0.00000 1.00000 0.00000 0.00000 ] defaultmatrix matrix concatmatrix setmatrix Q end end restore showpage %%Trailer %%EOF src/test/resources/ps/TestFontDerivation.ps0000644000175000017500000012626710344614150020453 0ustar user01user01%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 20 118 575 673 %%Creator: FreeHEP Graphics2D Driver %%Producer: org.freehep.graphicsio.ps.PSGraphics2D %%For: %%Title: %%LanguageLevel: 3 %%EndComments %%BeginProlog 100 dict dup begin % % File: org/freehep/graphicsio.ps/PSProlog.txt % Author: Charles Loomis % % Redefinitions which save some space in the output file. These are also % the same as the PDF operators. /q {gsave} def /Q {grestore} def /n {newpath} def /m {moveto} def /l {lineto} def /c {curveto} def /h {closepath} def /re {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath} def /f {fill} def /f* {eofill} def /F {gsave vg&FC fill grestore} def /F* {gsave vg&FC eofill grestore} def /s {closepath stroke} def /S {stroke} def /b {closepath gsave vg&FC fill grestore gsave stroke grestore newpath} def /B {gsave vg&FC fill grestore gsave stroke grestore newpath} def /b* {closepath gsave vg&FC eofill grestore gsave stroke grestore newpath} def /B* {gsave vg&FC eofill grestore gsave stroke grestore newpath} def /g {1 array astore /vg&fcolor exch def} def /G {setgray} def /k {4 array astore /vg&fcolor exch def} def /K {setcmykcolor} def /rg {3 array astore /vg&fcolor exch def} def /RG {setrgbcolor} def % Initialize the fill color. 0 0 0 rg /vg&FC {mark vg&fcolor aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /vg&DFC {/vg&fcolor exch def} def /vg&C {mark exch aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /w {setlinewidth} def /j {setlinejoin} def /J {setlinecap} def /M {setmiterlimit} def /d {setdash} def /i {setflat} def /W {clip} def /W* {eoclip} def % Setup the default graphics state. % (black; 1 pt. linewidth; miter join; butt-ends; solid) /defaultGraphicsState {0 g 1 w 0 j 0 J [] 0 d} def % Emulation of the rectangle operators for PostScript implementations % which do not implement all Level 2 features. This is an INCOMPLETE % emulation; only the "x y width height rect..." form is emulated. /*rf {gsave newpath re fill grestore} def /*rs {gsave newpath re stroke grestore} def /*rc {newpath re clip} def /rf /rectfill where {pop /rectfill}{/*rf} ifelse load def /rs /rectstroke where {pop /rectstroke}{/*rs} ifelse load def /rc /rectclip where {pop /rectclip}{/*rc} ifelse load def % Emulation of the selectfont operator. This includes a 20% increase in % the fontsize which is necessary to get sizes similar to the Java fonts. /*sf {exch findfont exch dup type /arraytype eq {makefont}{scalefont} ifelse setfont} bind def /sf /selectfont where {pop {1.2 mul selectfont}}{{1.2 mul *sf}} ifelse def % Special version of stroke which allows the dash pattern to continue % across path segments. (This may be needed for PostScript although % modern printers seem to do this correctly.) /vg&stroke { currentdash pop length 0 eq {stroke} { currentdash /vg&doffset exch def pop flattenpath {m vg&resetdash} {2 copy currentpoint 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt 3 1 roll l currentdash 3 -1 roll add setdash} {} {h vg&resetdash} pathforall stroke vg&resetdash } ifelse } def /vg&resetdash {currentdash pop vg&doffset setdash} def % Initialize variables for safety. /delta 0 def /xv 0 def /yv 0 def /width 0 def /height 0 def % Initialize to portrait INTERNATIONAL (Letter-height, A4-width) page. /pw 595 def /ph 791 def /po true def /ftp false def % Initialize margins to 20 points. /ml 20 def /mr 20 def /mt 20 def /mb 20 def % Temporary matrices. /smatrix 0 def /nmatrix 0 def % set page size (usage: setpagesize) /setpagesize {/ph exch def /pw exch def} def % set page orientation (usage: portrait or landscape) /portrait {/po true def} def /landscape {/po false def} def % force natural size for image (usage: naturalsize) /naturalsize {/ftp false def} def % resize image to fill page (usage: fittopage) /fittopage {/ftp true def} def % set margins of the page (usage: setmargins) /setmargins {/mr exch def /mt exch def /mb exch def /ml exch def} def % set the graphic's size (usage: setsize) /setsize {/gh exch def /gw exch def} def % set the graphic's origin (usage: setorigin) /setorigin {/gy exch def /gx exch def} def % calculate image center /imagecenter {pw ml sub mr sub 2 div ml add ph mt sub mb sub 2 div mb add} def % calculate the necessary scaling /imagescale {po {gw}{gh} ifelse pw ml sub mr sub div po {gh}{gw} ifelse ph mt sub mb sub div 2 copy lt {exch} if pop ftp not {1 2 copy lt {exch} if pop} if 1 exch div /sfactor exch def /gw gw sfactor mul def /gh gh sfactor mul def} def % calculate image origin /imageorigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div po {add}{sub} ifelse} def % calculate the clipping origin /cliporigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub floor ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div sub floor} def % Set the clipping region to the bounding box. /cliptobounds {cliporigin po {gw}{gh} ifelse 1 add po {gh}{gw} ifelse 1 add rc} def % set the base transformation matrix (usage: setbasematrix) /setbasematrix {imageorigin translate po {0}{90} ifelse rotate sfactor sfactor neg scale /defaultmatrix matrix currentmatrix def} def % The lower-right bias in drawing 1 pt. wide lines. /bias {q 0.5 0.5 translate} def /unbias {Q} def % Draw a line. (x0 y0 x1 y1 line) /L {bias n m l S unbias} def % Polyline primitive. /polyline {n m 1 exch 1 exch {pop currentfile token pop currentfile token pop l} for } def % Draw a polyline (n x0 y0 OPL x1 y1 x2 y2 ... ... xn yn) /OPL {bias polyline S unbias} def % Draw a closed polyline (n x0 y0 CPL x1 y1 x2 y2 ... ... xn yn) /CPL {bias polyline s unbias} def % Draw a filled polyline (n x0 y0 FPL x1 y1 x2 y2 ... ... xn yn) /FPL {polyline h f*} def % Draw an oval. (x y w h OVL) /OVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width currentlinewidth sub 2 div height currentlinewidth sub 2 div neg scale n 0 0 1 5 -2 roll arc smatrix setmatrix S} def % Draw a filled oval. (x y w h FOVL) /FOVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width 2 div height 2 div neg scale n 0 0 m 0 0 1 5 -2 roll arc h smatrix setmatrix f} def % Draw a rounded rectangle. (x y w h arcwidth archeight RREC) /RREC {matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix s} def % Draw a filled rounded rectangle. (x y w h arcwidth archeight FRREC) /FRREC{matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix h f} def % Draw a string. (string x y STR) /STR {q m 1 -1 scale recshow Q} def % Define basic plot symbols. /xys {/siz exch def /yv exch def /xv exch def} def /hline {xys n xv siz 2. div sub yv m siz 0 rlineto S} def /vline {xys n xv yv siz 2. div sub m 0 siz rlineto S} def /plus {xys n xv yv siz 2. div sub m 0 siz rlineto xv siz 2. div sub yv m siz 0 rlineto S} def /dot {n 2. div 0 360 arc s} def /fdot {n 2. div 0 360 arc h f} def /box {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rs} def /fbox {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rf} def /tridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto s} def /ftridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto h f} def % Symbols defined in terms of the others. /star {3 copy cross plus} def /cross {xys q xv yv translate 45 rotate 0 0 siz plus Q} def /diamond {xys q xv yv translate 45 rotate 0 0 siz box Q} def /fdiamond {xys q xv yv translate 45 rotate 0 0 siz fbox Q} def /triup {xys q xv yv translate 180 rotate 0 0 siz tridn Q} def /ftriup {xys q xv yv translate 180 rotate 0 0 siz ftridn Q} def % Define the composite fonts used to print Unicode strings. % Undefine particular values in an encoding array. /vg&undef { {exch dup 3 -1 roll /.notdef put} forall } def /vg&redef { {3 -1 roll dup 4 2 roll put} forall } def % usage: key encoding basefontname vg&newbasefont font /vg&newbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def currentdict end definefont } def % usage: key encoding basefontname vg&newskewedbasefont font /vg&newskewedbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def exch FontMatrix exch matrix concatmatrix /FontMatrix exch def currentdict end definefont } def % usage: basekey suffix vg&nconcat name /vg&nconcat { 2 {dup length string cvs exch} repeat dup length 3 -1 roll dup length 3 -1 roll add string dup 0 4 -1 roll dup length 5 1 roll putinterval dup 4 -2 roll exch putinterval cvn } def %usage: fontname vg&skewmatrix matrix /vg&skewmatrix { findfont dup /FontInfo known { /FontInfo get dup /ItalicAngle known { [ 1 0 4 -1 roll /ItalicAngle get neg dup sin exch cos div 1 0 0 ] } {pop matrix} ifelse } {pop matrix} ifelse } def % usage: newfontname basefontname vg&newcompositefont -- /vg&newcompositefont { /vg&fstyle exch def /vg&bfont exch def /vg&fname exch def << /FontStyleBits vg&fstyle /FontType 0 /FontMatrix matrix /FontName vg&fname /FMapType 2 /Encoding [ 0 1 255 {pop 6} for ] dup 16#00 0 put % Latin dup 16#03 1 put % Greek dup 16#20 2 put % Punctuation dup 16#21 3 put % Arrows dup 16#22 4 put % MathOps dup 16#27 5 put % Dingbats /FDepVector [ vg&bfont /-UC-Latin vg&nconcat UCLatinEncoding vg&bfont vg&newbasefont vg&bfont vg&skewmatrix vg&bfont /-UC-Greek vg&nconcat UCGreekEncoding /Symbol vg&newskewedbasefont vg&bfont /-UC-Punctuation vg&nconcat UCPunctuationEncoding vg&bfont vg&newbasefont /Arrows-UC findfont /MathOps-UC findfont /Dingbats-UC findfont /Undefined-UC findfont ] >> vg&fname exch definefont pop } def % Null encoding vector (all elements set to .notdef) /NullEncoding [ 256 {/.notdef} repeat ] def % Unicode Latin encoding (unicode codes \u0000-\u00ff) /UCLatinEncoding ISOLatin1Encoding dup length array copy dup 16#60 /grave put [ 16#90 16#91 16#92 16#93 16#94 16#95 16#96 16#97 16#98 16#9a 16#9b 16#9d 16#9e 16#9f ] vg&undef def % Unicode Greek encoding (unicode codes \u0370-\u03ff) /UCGreekEncoding NullEncoding dup length array copy << 16#91 /Alpha 16#92 /Beta 16#93 /Gamma 16#94 /Delta 16#95 /Epsilon 16#96 /Zeta 16#97 /Eta 16#98 /Theta 16#99 /Iota 16#9a /Kappa 16#9b /Lambda 16#9c /Mu 16#9d /Nu 16#9e /Xi 16#9f /Omicron 16#a0 /Pi 16#a1 /Rho 16#a3 /Sigma 16#a4 /Tau 16#a5 /Upsilon 16#a6 /Phi 16#a7 /Chi 16#a8 /Psi 16#a9 /Omega 16#b1 /alpha 16#b2 /beta 16#b3 /gamma 16#b4 /delta 16#b5 /epsilon 16#b6 /zeta 16#b7 /eta 16#b8 /theta 16#b9 /iota 16#ba /kappa 16#bb /lambda 16#bc /mu 16#bd /nu 16#be /xi 16#bf /omicron 16#c0 /pi 16#c1 /rho 16#c2 /sigma1 16#c3 /sigma 16#c4 /tau 16#c5 /upsilon 16#c6 /phi1 16#c7 /chi 16#c8 /psi 16#c9 /omega 16#7e /semicolon 16#87 /dotmath 16#d1 /theta1 16#d2 /Upsilon1 16#d5 /phi 16#d6 /omega1 >> vg&redef def % Unicode punctuation encoding (unicode codes \u2000-\u206f) /UCPunctuationEncoding NullEncoding dup length array copy << 16#10 /hyphen 16#11 /hyphen 16#12 /endash 16#13 /emdash 16#18 /quoteleft 16#19 /quoteright 16#1a /quotesinglbase 16#1b /quotesingle 16#1c /quotedblleft 16#1d /quotedblright 16#1e /quotedblbase 16#1f /quotedbl 16#20 /dagger 16#21 /daggerdbl 16#22 /bullet 16#24 /period 16#26 /ellipsis 16#27 /periodcentered 16#30 /perthousand 16#44 /fraction 16#70 /zerosuperior 16#74 /foursuperior 16#75 /fivesuperior 16#76 /sixsuperior 16#77 /sevensuperior 16#78 /eightsuperior 16#79 /ninesuperior 16#7b /hyphensuperior 16#7d /parenleftsuperior 16#7e /parenrightsuperior 16#80 /zeroinferior 16#84 /fourinferior 16#85 /fiveinferior 16#81 /oneinferior 16#82 /twoinferior 16#83 /threeinferior 16#86 /sixinferior 16#87 /seveninferior 16#88 /eightinferior 16#89 /nineinferior 16#8b /hypheninferior 16#8d /parenleftinferior 16#8e /parenrightinferior >> vg&redef def % Unicode mathematical operators encoding (unicode codes \u2200-\u22ff) /UCMathOpsEncoding NullEncoding dup length array copy << 16#00 /universal 16#02 /partialdiff 16#03 /existential 16#05 /emptyset 16#06 /Delta 16#07 /gradient 16#08 /element 16#09 /notelement 16#0b /suchthat 16#0f /product 16#11 /summation 16#12 /minus 16#15 /fraction 16#17 /asteriskmath 16#19 /bullet 16#1a /radical 16#1d /proportional 16#1e /infinity 16#20 /angle 16#23 /bar 16#27 /logicaland 16#28 /logicalor 16#29 /intersection 16#2a /union 16#2b /integral 16#34 /therefore 16#36 /colon 16#3c /similar 16#45 /congruent 16#48 /approxequal 16#60 /notequal 16#61 /equivalence 16#64 /lessequal 16#65 /greaterequal 16#82 /propersubset 16#83 /propersuperset 16#86 /reflexsubset 16#87 /reflexsuperset 16#95 /circleplus 16#97 /circlemultiply 16#a5 /perpendicular 16#03 /existential 16#c0 /logicaland 16#c1 /logicalor 16#c2 /intersection 16#c3 /union 16#c4 /diamond 16#c5 /dotmath >> vg&redef def % Unicode arrows encoding (unicode codes \u2190-\u21ff) % Also includes those "Letterlike" unicode characters % which are available in the symbol font. (unicode codes \u2100-\u214f) /UCArrowsEncoding NullEncoding dup length array copy << 16#11 /Ifraktur 16#1c /Rfraktur 16#22 /trademarkserif 16#35 /aleph 16#90 /arrowleft 16#91 /arrowup 16#92 /arrowright 16#93 /arrowdown 16#94 /arrowboth 16#d0 /arrowdblleft 16#d1 /arrowdblup 16#d2 /arrowdblright 16#d3 /arrowdbldown 16#d4 /arrowdblboth >> vg&redef def /ZapfDingbats findfont /Encoding get dup length array copy /UCDingbatsEncoding exch def 16#20 1 16#7f { dup 16#20 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for 16#a0 1 16#ff { dup 16#40 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for UCDingbatsEncoding [ 16#c0 1 16#ff {} for ] vg&undef [ 16#00 16#05 16#0a 16#0b 16#28 16#4c 16#4e 16#53 16#54 16#55 16#57 16#5f 16#60 16#68 16#69 16#6a 16#6b 16#6c 16#6d 16#6e 16#6f 16#70 16#71 16#72 16#73 16#74 16#75 16#95 16#96 16#97 16#b0 16#bf ] vg&undef pop % Define the base fonts which don't change. /Undefined-UC NullEncoding /Helvetica vg&newbasefont pop /MathOps-UC UCMathOpsEncoding /Symbol vg&newbasefont pop /Arrows-UC UCArrowsEncoding /Symbol vg&newbasefont pop /Dingbats-UC UCDingbatsEncoding /ZapfDingbats vg&newbasefont pop % Make the SansSerif composite fonts. /SansSerif /Helvetica 16#00 vg&newcompositefont /SansSerif-Bold /Helvetica-Bold 16#01 vg&newcompositefont /SansSerif-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /SansSerif-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Serif composite fonts. /Serif /Times-Roman 16#00 vg&newcompositefont /Serif-Bold /Times-Bold 16#01 vg&newcompositefont /Serif-Italic /Times-Italic 16#02 vg&newcompositefont /Serif-BoldItalic /Times-BoldItalic 16#03 vg&newcompositefont % Make the Monospaced composite fonts. /Monospaced /Courier 16#00 vg&newcompositefont /Monospaced-Bold /Courier-Bold 16#01 vg&newcompositefont /Monospaced-Italic /Courier-Oblique 16#02 vg&newcompositefont /Monospaced-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont % Make the Dialog composite fonts. /Dialog /Helvetica 16#00 vg&newcompositefont /Dialog-Bold /Helvetica-Bold 16#01 vg&newcompositefont /Dialog-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /Dialog-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the DialogInput composite fonts. /DialogInput /Helvetica 16#00 vg&newcompositefont /DialogInput-Bold /Helvetica-Bold 16#01 vg&newcompositefont /DialogInput-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /DialogInput-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Typewriter composite fonts (JDK 1.1 only). /Typewriter /Courier 16#00 vg&newcompositefont /Typewriter-Bold /Courier-Bold 16#01 vg&newcompositefont /Typewriter-Italic /Courier-Oblique 16#02 vg&newcompositefont /Typewriter-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont /cfontH { dup /fontsize exch def /SansSerif exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHB { dup /fontsize exch def /SansSerif-Bold exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHI { dup /fontsize exch def /SansSerif-Italic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHBI { dup /fontsize exch def /SansSerif-BoldItalic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontT { dup /fontsize exch def /Serif exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTB { dup /fontsize exch def /Serif-Bold exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTI { dup /fontsize exch def /Serif-Italic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTBI { dup /fontsize exch def /Serif-BoldItalic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontC { dup /fontsize exch def /Typewriter exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCB { dup /fontsize exch def /Typewriter-Bold exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCI { dup /fontsize exch def /Typewriter-Italic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCBI { dup /fontsize exch def /Typewriter-BoldItalic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def % Darken or lighten the current color. /darken {0.7 exch exp 3 copy q 4 -1 roll vg&C currentrgbcolor 3 {4 -2 roll mul} repeat 3 array astore Q} def /displayColorMap << /Cr [1.00 0.00 0.00] /Cg [0.00 1.00 0.00] /Cb [0.00 0.00 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.00 0.00] /CGg [0.00 1.00 0.00] /CGb [0.00 0.00 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.00 0.00] /CIg [0.00 1.00 0.00] /CIb [0.00 0.00 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /printColorMap << /Cr [1.00 0.33 0.33] /Cg [0.33 1.00 0.33] /Cb [0.33 0.33 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.33 0.33] /CGg [0.33 1.00 0.33] /CGb [0.33 0.33 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.33 0.33] /CIg [0.33 1.00 0.33] /CIb [0.33 0.33 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /grayColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [0.75] /CGg [1 ] /CGb [0.50] /CGc [0.75] /CGm [0.50] /CGy [1 ] /CGo [0.75] /CGp [1 ] /CGw [0 ] /CGgrl [0.25] /CGgr [0.50] /CGgrd [0.75] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def /bwColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [1 ] /CGg [1 ] /CGb [1 ] /CGc [1 ] /CGm [1 ] /CGy [1 ] /CGo [1 ] /CGp [1 ] /CGw [0 ] /CGgrl [1 ] /CGgr [1 ] /CGgrd [1 ] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def % % The following routines handle the alignment of and printing of % tagged strings. % % Predefine the bounding box values. /bbllx 0 def /bblly 0 def /bburx 0 def /bbury 0 def % This routine pops the first unicode character off of a string and returns % the remainder of the string, the character code of first character, % and a "true" if the string was non-zero length. % popfirst % popfirst /popfirst { dup length 1 gt {dup 0 get /vg&fbyte exch def dup 1 get /vg&cbyte exch def dup length 2 sub 2 exch getinterval true} {pop false} ifelse } def % This routine shows a single unicode character given the font and % character codes. % unicharshow -- /unicharshow { 2 string dup 0 5 -1 roll put dup 1 4 -1 roll put internalshow } def % This is an internal routine to alternate between determining the % bounding box for stringsize and showing the string for recshow. % internalshow -- /internalshow {show} def % This is an internal routine to alternate between determining the % bounding box for stringsize and stroking various ornaments. % internalstroke -- /internalstroke {S} def % Sets up internalshow to use the null device to determine string size. % -- nullinternalshow -- /nullinternalshow {/internalshow {false charpath flattenpath pathbbox updatebbox} def} def % Sets up internalstroke to use the null device to determine string size. % -- nullinternalstroke -- /nullinternalstroke { /internalstroke {flattenpath pathbbox updatebbox} def} def % This routine tests to see if the character code matches the first % character of a string. % testchar /testchar {exch dup 3 -1 roll 0 get eq} def % Raise the text baseline for superscripts. % -- raise -- /raise { 0 fontsize 2 div rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-raise the text baseline for superscripts. % -- unraise -- /unraise { /fontsize fontsize 1.5 mul def 0 fontsize 2 div neg rmoveto } def % Lower the text baseline for subscripts. % -- lower -- /lower { 0 fontsize 3 div neg rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-lower the text baseline for subscripts. % -- unlower -- /unlower { /fontsize fontsize 1.5 mul def 0 fontsize 3 div rmoveto } def % Compare the top two elements on the stack and leave only the % larger one. /maxval {2 copy gt {pop} {exch pop} ifelse} def % Tokenize a string. Do not use the usual PostScript token because % parentheses will not be interpreted correctly because of rescanning % of the string. /vg&token {/vg&string exch def /vg&index -1 def /vg&level 0 def 0 2 vg&string length 2 sub { dup dup 1 add exch vg&string exch get 8 bitshift vg&string 3 -1 roll get or dup 16#f0fe eq {pop 1}{16#f0ff eq {-1}{0} ifelse} ifelse /vg&level exch vg&level add def vg&level 0 eq {/vg&index exch def exit} if pop } for vg&index 0 ge { vg&string vg&index 2 add dup vg&string length exch sub getinterval vg&index 2 gt {vg&string 2 vg&index 2 sub getinterval}{()} ifelse true} {false} ifelse } bind def % Recursively show an unicode string. % recshow -- /recshow { popfirst { % Test to see if this is a string attribute. vg&fbyte 16#f0 and 16#e0 eq { q % Font style. currentfont dup /FontStyleBits known {/FontStyleBits get}{pop 0} ifelse vg&cbyte or vg&fontstyles exch get fontsize exch exec vg&token pop recshow currentpoint Q m recshow } { vg&fbyte 16#F8 and 16#F0 eq { % Superscript and/or subscript. vg&cbyte 16#00 eq { vg&token pop exch vg&token pop 3 -1 roll q raise recshow unraise currentpoint pop Q exch q lower recshow unlower currentpoint pop Q maxval currentpoint exch pop m recshow } if % Strikeout. vg&cbyte 16#01 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll fontsize 3 div add moveto fontsize 3 div add lineto internalstroke Q recshow} if % Underline. vg&cbyte 16#02 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dashed underline. vg&cbyte 16#03 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J [ vg&uthick 5 mul vg&uthick 2 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dotted underline. vg&cbyte 16#04 eq { vg&token pop currentpoint 3 -1 roll recshow q 1 J [ 0 vg&uthick 3 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Thick underline. vg&cbyte 16#05 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Gray thick underline. vg&cbyte 16#06 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w 0.5 setgray currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Overbar. vg&cbyte 16#07 eq { vg&token pop dup stringsize relative 4 1 roll pop pop exch 3 -1 roll recshow q 0 J vg&underline vg&uthick w vg&uoffset neg add dup currentpoint pop exch m l internalstroke Q recshow} if } { vg&fbyte vg&cbyte unicharshow recshow } ifelse } ifelse } if } def % Get the underline position and thickness from the current font. /vg&underline { currentfont dup /FontType get 0 eq {/FDepVector get 0 get} if dup dup /FontInfo known { /FontInfo get dup dup /UnderlinePosition known { /UnderlinePosition get /vg&uoffset exch def } { pop /vg&uoffset 0 def } ifelse dup /UnderlineThickness known { /UnderlineThickness get /vg&uthick exch def } { pop /vg&uthick 0 def } ifelse } { pop /vg&uoffset 0 def /vg&uthick 0 def } ifelse /FontMatrix get currentfont dup /FontType get 0 eq {/FontMatrix get matrix concatmatrix}{pop} ifelse dup 0 vg&uoffset 3 -1 roll transform /vg&uoffset exch def pop 0 vg&uthick 3 -1 roll transform /vg&uthick exch def pop } def % Make a frame with the coordinates on the stack. % frame -- /frame {4 copy m 3 1 roll exch l 4 -2 roll l l h} def % Resets the accumulated bounding box to a degenerate box at the % current point. % -- resetbbox -- /resetbbox { currentpoint 2 copy /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Update the accumulated bounding box. % updatebbox -- /updatebbox { dup bbury gt {/bbury exch def} {pop} ifelse dup bburx gt {/bburx exch def} {pop} ifelse dup bblly lt {/bblly exch def} {pop} ifelse dup bbllx lt {/bbllx exch def} {pop} ifelse } def % Set the bounding box to the values on the stack. % updatebbox -- /restorebbox { /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Push the accumulated bounding box onto the stack. % -- pushbbox /pushbbox {bbllx bblly bburx bbury} def % Make the relative bounding box relative to the currentpoint. % inflate /inflate { 2 {fontsize 0.2 mul add 4 1 roll} repeat 2 {fontsize 0.2 mul sub 4 1 roll} repeat } def % Make the relative bounding box relative to the currentpoint. % relative /relative { currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll } def % Returns the size of a string appropriate for recshow. % stringsize /stringsize { pushbbox /internalshow load /internalstroke load 7 -1 roll q nulldevice 0 0 m nullinternalshow nullinternalstroke resetbbox recshow /internalstroke exch def /internalshow exch def pushbbox 8 -4 roll restorebbox Q } def % Calculate values for string positioning. /calcval {4 copy 3 -1 roll sub /widy exch def sub neg /widx exch def pop pop /dy exch def /dx exch def} def % Utilities to position a string. % First letter (U=upper, C=center, B=baseline, L=lower) % Second letter (L=left, C=center, R=right) /align [ {calcval dx neg widy dy add neg rmoveto} % UL {calcval dx neg widy 2 div dy add neg rmoveto} % CL {calcval dx neg 0 rmoveto} % BL {calcval dx neg dy neg rmoveto} % LL {calcval widx dx add neg widy dy add neg rmoveto} % UR {calcval widx dx add neg widy 2 div dy add neg rmoveto} % CR {calcval widx dx add neg 0 rmoveto} % BR {calcval widx dx add neg dy neg rmoveto} % LR {calcval widx 2 div dx add neg widy dy add neg rmoveto} % UC {calcval widx 2 div dx add neg widy 2 div dy add neg rmoveto} % CC {calcval widx 2 div dx add neg 0 rmoveto} % BC {calcval widx 2 div dx add neg dy neg rmoveto} % LC ] def /vg&str {m q 1 -1 scale dup stringsize 4 copy align 11 -1 roll get exec q inflate relative frame exch exec Q recshow Q} def end /procDict exch def %%EndProlog %%BeginSetup save procDict begin printColorMap begin 595 791 setpagesize 20 20 20 20 setmargins 0 0 setorigin 600 600 setsize fittopage portrait imagescale cliptobounds setbasematrix /Helvetica 10 sf defaultGraphicsState %%EndSetup 0.00000 0.00000 0.00000 RG [ 1.00000 0.00000 0.00000 1.00000 0.00000 0.00000 ] defaultmatrix matrix concatmatrix setmatrix 1.00000 w 2 J 0 j 10.0000 M [ ] 0.00000 d .800000 .800000 .800000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG q 0 0 600 600 rc q 300.000 300.000 translate 1.00000 1.00000 1.00000 RG -300.000 -300.000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ 4.68956 -.826896 .826896 4.68956 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ 4.27133 -1.55464 1.55464 4.27133 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ 3.76533 -2.17391 2.17391 3.76533 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ 3.19185 -2.67828 2.67828 3.19185 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ 2.57115 -3.06418 3.06418 2.57115 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ 1.92308 -3.33087 3.33087 1.92308 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ 1.26674 -3.48034 3.48034 1.26674 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ .620172 -3.51717 3.51717 .620172 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ 0.00000 -3.44828 3.44828 0.00000 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ -.578827 -3.28269 3.28269 -.578827 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ -1.10329 -3.03127 3.03127 -1.10329 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ -1.56250 -2.70633 2.70633 -1.56250 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ -1.94784 -2.32135 2.32135 -1.94784 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ -2.25307 -1.89055 1.89055 -2.25307 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ -2.47436 -1.42857 1.42857 -2.47436 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ -2.61026 -.950056 .950056 -2.61026 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ -2.66164 -.469319 .469319 -2.66164 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ -2.63158 0.00000 0.00000 -2.63158 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ -2.52515 .445252 -.445252 -2.52515 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ -2.34923 .855050 -.855050 -2.34923 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ -2.11226 1.21951 -1.21951 -2.11226 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ -1.82392 1.53045 -1.53045 -1.82392 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ -1.49485 1.78150 -1.78150 -1.49485 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ -1.13636 1.96824 -1.96824 -1.13636 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ -.760045 2.08821 -2.08821 -.760045 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ -.377496 2.14089 -2.14089 -.377496 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ 0.00000 2.12766 -2.12766 0.00000 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ .361767 2.05168 -2.05168 .361767 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ .698000 1.91774 -1.91774 .698000 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ 1.00000 1.73205 -1.73205 1.00000 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ 1.26037 1.50205 -1.50205 1.26037 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ 1.47316 1.23613 -1.23613 1.47316 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ 1.63401 .943396 -.943396 1.63401 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ 1.74017 .633371 -.633371 1.74017 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ 1.79056 .315724 -.315724 1.79056 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q 0.00000 0.00000 1.00000 RG 0.00000 0.00000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont gsave [ 5.00000 0.00000 0.00000 5.00000 0.00000 0.00000 ] concat (\000F\000r\000e\000e\000H\000E\000P) show grestore Q Q Q end end restore showpage %%Trailer %%EOF src/test/resources/ps/TestColors.ps0000644000175000017500000011233410344614150016747 0ustar user01user01%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 20 118 575 673 %%Creator: FreeHEP Graphics2D Driver %%Producer: org.freehep.graphicsio.ps.PSGraphics2D %%For: %%Title: %%LanguageLevel: 3 %%EndComments %%BeginProlog 100 dict dup begin % % File: org/freehep/graphicsio.ps/PSProlog.txt % Author: Charles Loomis % % Redefinitions which save some space in the output file. These are also % the same as the PDF operators. /q {gsave} def /Q {grestore} def /n {newpath} def /m {moveto} def /l {lineto} def /c {curveto} def /h {closepath} def /re {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath} def /f {fill} def /f* {eofill} def /F {gsave vg&FC fill grestore} def /F* {gsave vg&FC eofill grestore} def /s {closepath stroke} def /S {stroke} def /b {closepath gsave vg&FC fill grestore gsave stroke grestore newpath} def /B {gsave vg&FC fill grestore gsave stroke grestore newpath} def /b* {closepath gsave vg&FC eofill grestore gsave stroke grestore newpath} def /B* {gsave vg&FC eofill grestore gsave stroke grestore newpath} def /g {1 array astore /vg&fcolor exch def} def /G {setgray} def /k {4 array astore /vg&fcolor exch def} def /K {setcmykcolor} def /rg {3 array astore /vg&fcolor exch def} def /RG {setrgbcolor} def % Initialize the fill color. 0 0 0 rg /vg&FC {mark vg&fcolor aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /vg&DFC {/vg&fcolor exch def} def /vg&C {mark exch aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /w {setlinewidth} def /j {setlinejoin} def /J {setlinecap} def /M {setmiterlimit} def /d {setdash} def /i {setflat} def /W {clip} def /W* {eoclip} def % Setup the default graphics state. % (black; 1 pt. linewidth; miter join; butt-ends; solid) /defaultGraphicsState {0 g 1 w 0 j 0 J [] 0 d} def % Emulation of the rectangle operators for PostScript implementations % which do not implement all Level 2 features. This is an INCOMPLETE % emulation; only the "x y width height rect..." form is emulated. /*rf {gsave newpath re fill grestore} def /*rs {gsave newpath re stroke grestore} def /*rc {newpath re clip} def /rf /rectfill where {pop /rectfill}{/*rf} ifelse load def /rs /rectstroke where {pop /rectstroke}{/*rs} ifelse load def /rc /rectclip where {pop /rectclip}{/*rc} ifelse load def % Emulation of the selectfont operator. This includes a 20% increase in % the fontsize which is necessary to get sizes similar to the Java fonts. /*sf {exch findfont exch dup type /arraytype eq {makefont}{scalefont} ifelse setfont} bind def /sf /selectfont where {pop {1.2 mul selectfont}}{{1.2 mul *sf}} ifelse def % Special version of stroke which allows the dash pattern to continue % across path segments. (This may be needed for PostScript although % modern printers seem to do this correctly.) /vg&stroke { currentdash pop length 0 eq {stroke} { currentdash /vg&doffset exch def pop flattenpath {m vg&resetdash} {2 copy currentpoint 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt 3 1 roll l currentdash 3 -1 roll add setdash} {} {h vg&resetdash} pathforall stroke vg&resetdash } ifelse } def /vg&resetdash {currentdash pop vg&doffset setdash} def % Initialize variables for safety. /delta 0 def /xv 0 def /yv 0 def /width 0 def /height 0 def % Initialize to portrait INTERNATIONAL (Letter-height, A4-width) page. /pw 595 def /ph 791 def /po true def /ftp false def % Initialize margins to 20 points. /ml 20 def /mr 20 def /mt 20 def /mb 20 def % Temporary matrices. /smatrix 0 def /nmatrix 0 def % set page size (usage: setpagesize) /setpagesize {/ph exch def /pw exch def} def % set page orientation (usage: portrait or landscape) /portrait {/po true def} def /landscape {/po false def} def % force natural size for image (usage: naturalsize) /naturalsize {/ftp false def} def % resize image to fill page (usage: fittopage) /fittopage {/ftp true def} def % set margins of the page (usage: setmargins) /setmargins {/mr exch def /mt exch def /mb exch def /ml exch def} def % set the graphic's size (usage: setsize) /setsize {/gh exch def /gw exch def} def % set the graphic's origin (usage: setorigin) /setorigin {/gy exch def /gx exch def} def % calculate image center /imagecenter {pw ml sub mr sub 2 div ml add ph mt sub mb sub 2 div mb add} def % calculate the necessary scaling /imagescale {po {gw}{gh} ifelse pw ml sub mr sub div po {gh}{gw} ifelse ph mt sub mb sub div 2 copy lt {exch} if pop ftp not {1 2 copy lt {exch} if pop} if 1 exch div /sfactor exch def /gw gw sfactor mul def /gh gh sfactor mul def} def % calculate image origin /imageorigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div po {add}{sub} ifelse} def % calculate the clipping origin /cliporigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub floor ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div sub floor} def % Set the clipping region to the bounding box. /cliptobounds {cliporigin po {gw}{gh} ifelse 1 add po {gh}{gw} ifelse 1 add rc} def % set the base transformation matrix (usage: setbasematrix) /setbasematrix {imageorigin translate po {0}{90} ifelse rotate sfactor sfactor neg scale /defaultmatrix matrix currentmatrix def} def % The lower-right bias in drawing 1 pt. wide lines. /bias {q 0.5 0.5 translate} def /unbias {Q} def % Draw a line. (x0 y0 x1 y1 line) /L {bias n m l S unbias} def % Polyline primitive. /polyline {n m 1 exch 1 exch {pop currentfile token pop currentfile token pop l} for } def % Draw a polyline (n x0 y0 OPL x1 y1 x2 y2 ... ... xn yn) /OPL {bias polyline S unbias} def % Draw a closed polyline (n x0 y0 CPL x1 y1 x2 y2 ... ... xn yn) /CPL {bias polyline s unbias} def % Draw a filled polyline (n x0 y0 FPL x1 y1 x2 y2 ... ... xn yn) /FPL {polyline h f*} def % Draw an oval. (x y w h OVL) /OVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width currentlinewidth sub 2 div height currentlinewidth sub 2 div neg scale n 0 0 1 5 -2 roll arc smatrix setmatrix S} def % Draw a filled oval. (x y w h FOVL) /FOVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width 2 div height 2 div neg scale n 0 0 m 0 0 1 5 -2 roll arc h smatrix setmatrix f} def % Draw a rounded rectangle. (x y w h arcwidth archeight RREC) /RREC {matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix s} def % Draw a filled rounded rectangle. (x y w h arcwidth archeight FRREC) /FRREC{matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix h f} def % Draw a string. (string x y STR) /STR {q m 1 -1 scale recshow Q} def % Define basic plot symbols. /xys {/siz exch def /yv exch def /xv exch def} def /hline {xys n xv siz 2. div sub yv m siz 0 rlineto S} def /vline {xys n xv yv siz 2. div sub m 0 siz rlineto S} def /plus {xys n xv yv siz 2. div sub m 0 siz rlineto xv siz 2. div sub yv m siz 0 rlineto S} def /dot {n 2. div 0 360 arc s} def /fdot {n 2. div 0 360 arc h f} def /box {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rs} def /fbox {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rf} def /tridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto s} def /ftridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto h f} def % Symbols defined in terms of the others. /star {3 copy cross plus} def /cross {xys q xv yv translate 45 rotate 0 0 siz plus Q} def /diamond {xys q xv yv translate 45 rotate 0 0 siz box Q} def /fdiamond {xys q xv yv translate 45 rotate 0 0 siz fbox Q} def /triup {xys q xv yv translate 180 rotate 0 0 siz tridn Q} def /ftriup {xys q xv yv translate 180 rotate 0 0 siz ftridn Q} def % Define the composite fonts used to print Unicode strings. % Undefine particular values in an encoding array. /vg&undef { {exch dup 3 -1 roll /.notdef put} forall } def /vg&redef { {3 -1 roll dup 4 2 roll put} forall } def % usage: key encoding basefontname vg&newbasefont font /vg&newbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def currentdict end definefont } def % usage: key encoding basefontname vg&newskewedbasefont font /vg&newskewedbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def exch FontMatrix exch matrix concatmatrix /FontMatrix exch def currentdict end definefont } def % usage: basekey suffix vg&nconcat name /vg&nconcat { 2 {dup length string cvs exch} repeat dup length 3 -1 roll dup length 3 -1 roll add string dup 0 4 -1 roll dup length 5 1 roll putinterval dup 4 -2 roll exch putinterval cvn } def %usage: fontname vg&skewmatrix matrix /vg&skewmatrix { findfont dup /FontInfo known { /FontInfo get dup /ItalicAngle known { [ 1 0 4 -1 roll /ItalicAngle get neg dup sin exch cos div 1 0 0 ] } {pop matrix} ifelse } {pop matrix} ifelse } def % usage: newfontname basefontname vg&newcompositefont -- /vg&newcompositefont { /vg&fstyle exch def /vg&bfont exch def /vg&fname exch def << /FontStyleBits vg&fstyle /FontType 0 /FontMatrix matrix /FontName vg&fname /FMapType 2 /Encoding [ 0 1 255 {pop 6} for ] dup 16#00 0 put % Latin dup 16#03 1 put % Greek dup 16#20 2 put % Punctuation dup 16#21 3 put % Arrows dup 16#22 4 put % MathOps dup 16#27 5 put % Dingbats /FDepVector [ vg&bfont /-UC-Latin vg&nconcat UCLatinEncoding vg&bfont vg&newbasefont vg&bfont vg&skewmatrix vg&bfont /-UC-Greek vg&nconcat UCGreekEncoding /Symbol vg&newskewedbasefont vg&bfont /-UC-Punctuation vg&nconcat UCPunctuationEncoding vg&bfont vg&newbasefont /Arrows-UC findfont /MathOps-UC findfont /Dingbats-UC findfont /Undefined-UC findfont ] >> vg&fname exch definefont pop } def % Null encoding vector (all elements set to .notdef) /NullEncoding [ 256 {/.notdef} repeat ] def % Unicode Latin encoding (unicode codes \u0000-\u00ff) /UCLatinEncoding ISOLatin1Encoding dup length array copy dup 16#60 /grave put [ 16#90 16#91 16#92 16#93 16#94 16#95 16#96 16#97 16#98 16#9a 16#9b 16#9d 16#9e 16#9f ] vg&undef def % Unicode Greek encoding (unicode codes \u0370-\u03ff) /UCGreekEncoding NullEncoding dup length array copy << 16#91 /Alpha 16#92 /Beta 16#93 /Gamma 16#94 /Delta 16#95 /Epsilon 16#96 /Zeta 16#97 /Eta 16#98 /Theta 16#99 /Iota 16#9a /Kappa 16#9b /Lambda 16#9c /Mu 16#9d /Nu 16#9e /Xi 16#9f /Omicron 16#a0 /Pi 16#a1 /Rho 16#a3 /Sigma 16#a4 /Tau 16#a5 /Upsilon 16#a6 /Phi 16#a7 /Chi 16#a8 /Psi 16#a9 /Omega 16#b1 /alpha 16#b2 /beta 16#b3 /gamma 16#b4 /delta 16#b5 /epsilon 16#b6 /zeta 16#b7 /eta 16#b8 /theta 16#b9 /iota 16#ba /kappa 16#bb /lambda 16#bc /mu 16#bd /nu 16#be /xi 16#bf /omicron 16#c0 /pi 16#c1 /rho 16#c2 /sigma1 16#c3 /sigma 16#c4 /tau 16#c5 /upsilon 16#c6 /phi1 16#c7 /chi 16#c8 /psi 16#c9 /omega 16#7e /semicolon 16#87 /dotmath 16#d1 /theta1 16#d2 /Upsilon1 16#d5 /phi 16#d6 /omega1 >> vg&redef def % Unicode punctuation encoding (unicode codes \u2000-\u206f) /UCPunctuationEncoding NullEncoding dup length array copy << 16#10 /hyphen 16#11 /hyphen 16#12 /endash 16#13 /emdash 16#18 /quoteleft 16#19 /quoteright 16#1a /quotesinglbase 16#1b /quotesingle 16#1c /quotedblleft 16#1d /quotedblright 16#1e /quotedblbase 16#1f /quotedbl 16#20 /dagger 16#21 /daggerdbl 16#22 /bullet 16#24 /period 16#26 /ellipsis 16#27 /periodcentered 16#30 /perthousand 16#44 /fraction 16#70 /zerosuperior 16#74 /foursuperior 16#75 /fivesuperior 16#76 /sixsuperior 16#77 /sevensuperior 16#78 /eightsuperior 16#79 /ninesuperior 16#7b /hyphensuperior 16#7d /parenleftsuperior 16#7e /parenrightsuperior 16#80 /zeroinferior 16#84 /fourinferior 16#85 /fiveinferior 16#81 /oneinferior 16#82 /twoinferior 16#83 /threeinferior 16#86 /sixinferior 16#87 /seveninferior 16#88 /eightinferior 16#89 /nineinferior 16#8b /hypheninferior 16#8d /parenleftinferior 16#8e /parenrightinferior >> vg&redef def % Unicode mathematical operators encoding (unicode codes \u2200-\u22ff) /UCMathOpsEncoding NullEncoding dup length array copy << 16#00 /universal 16#02 /partialdiff 16#03 /existential 16#05 /emptyset 16#06 /Delta 16#07 /gradient 16#08 /element 16#09 /notelement 16#0b /suchthat 16#0f /product 16#11 /summation 16#12 /minus 16#15 /fraction 16#17 /asteriskmath 16#19 /bullet 16#1a /radical 16#1d /proportional 16#1e /infinity 16#20 /angle 16#23 /bar 16#27 /logicaland 16#28 /logicalor 16#29 /intersection 16#2a /union 16#2b /integral 16#34 /therefore 16#36 /colon 16#3c /similar 16#45 /congruent 16#48 /approxequal 16#60 /notequal 16#61 /equivalence 16#64 /lessequal 16#65 /greaterequal 16#82 /propersubset 16#83 /propersuperset 16#86 /reflexsubset 16#87 /reflexsuperset 16#95 /circleplus 16#97 /circlemultiply 16#a5 /perpendicular 16#03 /existential 16#c0 /logicaland 16#c1 /logicalor 16#c2 /intersection 16#c3 /union 16#c4 /diamond 16#c5 /dotmath >> vg&redef def % Unicode arrows encoding (unicode codes \u2190-\u21ff) % Also includes those "Letterlike" unicode characters % which are available in the symbol font. (unicode codes \u2100-\u214f) /UCArrowsEncoding NullEncoding dup length array copy << 16#11 /Ifraktur 16#1c /Rfraktur 16#22 /trademarkserif 16#35 /aleph 16#90 /arrowleft 16#91 /arrowup 16#92 /arrowright 16#93 /arrowdown 16#94 /arrowboth 16#d0 /arrowdblleft 16#d1 /arrowdblup 16#d2 /arrowdblright 16#d3 /arrowdbldown 16#d4 /arrowdblboth >> vg&redef def /ZapfDingbats findfont /Encoding get dup length array copy /UCDingbatsEncoding exch def 16#20 1 16#7f { dup 16#20 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for 16#a0 1 16#ff { dup 16#40 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for UCDingbatsEncoding [ 16#c0 1 16#ff {} for ] vg&undef [ 16#00 16#05 16#0a 16#0b 16#28 16#4c 16#4e 16#53 16#54 16#55 16#57 16#5f 16#60 16#68 16#69 16#6a 16#6b 16#6c 16#6d 16#6e 16#6f 16#70 16#71 16#72 16#73 16#74 16#75 16#95 16#96 16#97 16#b0 16#bf ] vg&undef pop % Define the base fonts which don't change. /Undefined-UC NullEncoding /Helvetica vg&newbasefont pop /MathOps-UC UCMathOpsEncoding /Symbol vg&newbasefont pop /Arrows-UC UCArrowsEncoding /Symbol vg&newbasefont pop /Dingbats-UC UCDingbatsEncoding /ZapfDingbats vg&newbasefont pop % Make the SansSerif composite fonts. /SansSerif /Helvetica 16#00 vg&newcompositefont /SansSerif-Bold /Helvetica-Bold 16#01 vg&newcompositefont /SansSerif-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /SansSerif-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Serif composite fonts. /Serif /Times-Roman 16#00 vg&newcompositefont /Serif-Bold /Times-Bold 16#01 vg&newcompositefont /Serif-Italic /Times-Italic 16#02 vg&newcompositefont /Serif-BoldItalic /Times-BoldItalic 16#03 vg&newcompositefont % Make the Monospaced composite fonts. /Monospaced /Courier 16#00 vg&newcompositefont /Monospaced-Bold /Courier-Bold 16#01 vg&newcompositefont /Monospaced-Italic /Courier-Oblique 16#02 vg&newcompositefont /Monospaced-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont % Make the Dialog composite fonts. /Dialog /Helvetica 16#00 vg&newcompositefont /Dialog-Bold /Helvetica-Bold 16#01 vg&newcompositefont /Dialog-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /Dialog-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the DialogInput composite fonts. /DialogInput /Helvetica 16#00 vg&newcompositefont /DialogInput-Bold /Helvetica-Bold 16#01 vg&newcompositefont /DialogInput-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /DialogInput-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Typewriter composite fonts (JDK 1.1 only). /Typewriter /Courier 16#00 vg&newcompositefont /Typewriter-Bold /Courier-Bold 16#01 vg&newcompositefont /Typewriter-Italic /Courier-Oblique 16#02 vg&newcompositefont /Typewriter-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont /cfontH { dup /fontsize exch def /SansSerif exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHB { dup /fontsize exch def /SansSerif-Bold exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHI { dup /fontsize exch def /SansSerif-Italic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHBI { dup /fontsize exch def /SansSerif-BoldItalic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontT { dup /fontsize exch def /Serif exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTB { dup /fontsize exch def /Serif-Bold exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTI { dup /fontsize exch def /Serif-Italic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTBI { dup /fontsize exch def /Serif-BoldItalic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontC { dup /fontsize exch def /Typewriter exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCB { dup /fontsize exch def /Typewriter-Bold exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCI { dup /fontsize exch def /Typewriter-Italic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCBI { dup /fontsize exch def /Typewriter-BoldItalic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def % Darken or lighten the current color. /darken {0.7 exch exp 3 copy q 4 -1 roll vg&C currentrgbcolor 3 {4 -2 roll mul} repeat 3 array astore Q} def /displayColorMap << /Cr [1.00 0.00 0.00] /Cg [0.00 1.00 0.00] /Cb [0.00 0.00 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.00 0.00] /CGg [0.00 1.00 0.00] /CGb [0.00 0.00 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.00 0.00] /CIg [0.00 1.00 0.00] /CIb [0.00 0.00 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /printColorMap << /Cr [1.00 0.33 0.33] /Cg [0.33 1.00 0.33] /Cb [0.33 0.33 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.33 0.33] /CGg [0.33 1.00 0.33] /CGb [0.33 0.33 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.33 0.33] /CIg [0.33 1.00 0.33] /CIb [0.33 0.33 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /grayColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [0.75] /CGg [1 ] /CGb [0.50] /CGc [0.75] /CGm [0.50] /CGy [1 ] /CGo [0.75] /CGp [1 ] /CGw [0 ] /CGgrl [0.25] /CGgr [0.50] /CGgrd [0.75] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def /bwColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [1 ] /CGg [1 ] /CGb [1 ] /CGc [1 ] /CGm [1 ] /CGy [1 ] /CGo [1 ] /CGp [1 ] /CGw [0 ] /CGgrl [1 ] /CGgr [1 ] /CGgrd [1 ] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def % % The following routines handle the alignment of and printing of % tagged strings. % % Predefine the bounding box values. /bbllx 0 def /bblly 0 def /bburx 0 def /bbury 0 def % This routine pops the first unicode character off of a string and returns % the remainder of the string, the character code of first character, % and a "true" if the string was non-zero length. % popfirst % popfirst /popfirst { dup length 1 gt {dup 0 get /vg&fbyte exch def dup 1 get /vg&cbyte exch def dup length 2 sub 2 exch getinterval true} {pop false} ifelse } def % This routine shows a single unicode character given the font and % character codes. % unicharshow -- /unicharshow { 2 string dup 0 5 -1 roll put dup 1 4 -1 roll put internalshow } def % This is an internal routine to alternate between determining the % bounding box for stringsize and showing the string for recshow. % internalshow -- /internalshow {show} def % This is an internal routine to alternate between determining the % bounding box for stringsize and stroking various ornaments. % internalstroke -- /internalstroke {S} def % Sets up internalshow to use the null device to determine string size. % -- nullinternalshow -- /nullinternalshow {/internalshow {false charpath flattenpath pathbbox updatebbox} def} def % Sets up internalstroke to use the null device to determine string size. % -- nullinternalstroke -- /nullinternalstroke { /internalstroke {flattenpath pathbbox updatebbox} def} def % This routine tests to see if the character code matches the first % character of a string. % testchar /testchar {exch dup 3 -1 roll 0 get eq} def % Raise the text baseline for superscripts. % -- raise -- /raise { 0 fontsize 2 div rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-raise the text baseline for superscripts. % -- unraise -- /unraise { /fontsize fontsize 1.5 mul def 0 fontsize 2 div neg rmoveto } def % Lower the text baseline for subscripts. % -- lower -- /lower { 0 fontsize 3 div neg rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-lower the text baseline for subscripts. % -- unlower -- /unlower { /fontsize fontsize 1.5 mul def 0 fontsize 3 div rmoveto } def % Compare the top two elements on the stack and leave only the % larger one. /maxval {2 copy gt {pop} {exch pop} ifelse} def % Tokenize a string. Do not use the usual PostScript token because % parentheses will not be interpreted correctly because of rescanning % of the string. /vg&token {/vg&string exch def /vg&index -1 def /vg&level 0 def 0 2 vg&string length 2 sub { dup dup 1 add exch vg&string exch get 8 bitshift vg&string 3 -1 roll get or dup 16#f0fe eq {pop 1}{16#f0ff eq {-1}{0} ifelse} ifelse /vg&level exch vg&level add def vg&level 0 eq {/vg&index exch def exit} if pop } for vg&index 0 ge { vg&string vg&index 2 add dup vg&string length exch sub getinterval vg&index 2 gt {vg&string 2 vg&index 2 sub getinterval}{()} ifelse true} {false} ifelse } bind def % Recursively show an unicode string. % recshow -- /recshow { popfirst { % Test to see if this is a string attribute. vg&fbyte 16#f0 and 16#e0 eq { q % Font style. currentfont dup /FontStyleBits known {/FontStyleBits get}{pop 0} ifelse vg&cbyte or vg&fontstyles exch get fontsize exch exec vg&token pop recshow currentpoint Q m recshow } { vg&fbyte 16#F8 and 16#F0 eq { % Superscript and/or subscript. vg&cbyte 16#00 eq { vg&token pop exch vg&token pop 3 -1 roll q raise recshow unraise currentpoint pop Q exch q lower recshow unlower currentpoint pop Q maxval currentpoint exch pop m recshow } if % Strikeout. vg&cbyte 16#01 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll fontsize 3 div add moveto fontsize 3 div add lineto internalstroke Q recshow} if % Underline. vg&cbyte 16#02 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dashed underline. vg&cbyte 16#03 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J [ vg&uthick 5 mul vg&uthick 2 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dotted underline. vg&cbyte 16#04 eq { vg&token pop currentpoint 3 -1 roll recshow q 1 J [ 0 vg&uthick 3 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Thick underline. vg&cbyte 16#05 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Gray thick underline. vg&cbyte 16#06 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w 0.5 setgray currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Overbar. vg&cbyte 16#07 eq { vg&token pop dup stringsize relative 4 1 roll pop pop exch 3 -1 roll recshow q 0 J vg&underline vg&uthick w vg&uoffset neg add dup currentpoint pop exch m l internalstroke Q recshow} if } { vg&fbyte vg&cbyte unicharshow recshow } ifelse } ifelse } if } def % Get the underline position and thickness from the current font. /vg&underline { currentfont dup /FontType get 0 eq {/FDepVector get 0 get} if dup dup /FontInfo known { /FontInfo get dup dup /UnderlinePosition known { /UnderlinePosition get /vg&uoffset exch def } { pop /vg&uoffset 0 def } ifelse dup /UnderlineThickness known { /UnderlineThickness get /vg&uthick exch def } { pop /vg&uthick 0 def } ifelse } { pop /vg&uoffset 0 def /vg&uthick 0 def } ifelse /FontMatrix get currentfont dup /FontType get 0 eq {/FontMatrix get matrix concatmatrix}{pop} ifelse dup 0 vg&uoffset 3 -1 roll transform /vg&uoffset exch def pop 0 vg&uthick 3 -1 roll transform /vg&uthick exch def pop } def % Make a frame with the coordinates on the stack. % frame -- /frame {4 copy m 3 1 roll exch l 4 -2 roll l l h} def % Resets the accumulated bounding box to a degenerate box at the % current point. % -- resetbbox -- /resetbbox { currentpoint 2 copy /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Update the accumulated bounding box. % updatebbox -- /updatebbox { dup bbury gt {/bbury exch def} {pop} ifelse dup bburx gt {/bburx exch def} {pop} ifelse dup bblly lt {/bblly exch def} {pop} ifelse dup bbllx lt {/bbllx exch def} {pop} ifelse } def % Set the bounding box to the values on the stack. % updatebbox -- /restorebbox { /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Push the accumulated bounding box onto the stack. % -- pushbbox /pushbbox {bbllx bblly bburx bbury} def % Make the relative bounding box relative to the currentpoint. % inflate /inflate { 2 {fontsize 0.2 mul add 4 1 roll} repeat 2 {fontsize 0.2 mul sub 4 1 roll} repeat } def % Make the relative bounding box relative to the currentpoint. % relative /relative { currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll } def % Returns the size of a string appropriate for recshow. % stringsize /stringsize { pushbbox /internalshow load /internalstroke load 7 -1 roll q nulldevice 0 0 m nullinternalshow nullinternalstroke resetbbox recshow /internalstroke exch def /internalshow exch def pushbbox 8 -4 roll restorebbox Q } def % Calculate values for string positioning. /calcval {4 copy 3 -1 roll sub /widy exch def sub neg /widx exch def pop pop /dy exch def /dx exch def} def % Utilities to position a string. % First letter (U=upper, C=center, B=baseline, L=lower) % Second letter (L=left, C=center, R=right) /align [ {calcval dx neg widy dy add neg rmoveto} % UL {calcval dx neg widy 2 div dy add neg rmoveto} % CL {calcval dx neg 0 rmoveto} % BL {calcval dx neg dy neg rmoveto} % LL {calcval widx dx add neg widy dy add neg rmoveto} % UR {calcval widx dx add neg widy 2 div dy add neg rmoveto} % CR {calcval widx dx add neg 0 rmoveto} % BR {calcval widx dx add neg dy neg rmoveto} % LR {calcval widx 2 div dx add neg widy dy add neg rmoveto} % UC {calcval widx 2 div dx add neg widy 2 div dy add neg rmoveto} % CC {calcval widx 2 div dx add neg 0 rmoveto} % BC {calcval widx 2 div dx add neg dy neg rmoveto} % LC ] def /vg&str {m q 1 -1 scale dup stringsize 4 copy align 11 -1 roll get exec q inflate relative frame exch exec Q recshow Q} def end /procDict exch def %%EndProlog %%BeginSetup save procDict begin printColorMap begin 595 791 setpagesize 20 20 20 20 setmargins 0 0 setorigin 600 600 setsize fittopage portrait imagescale cliptobounds setbasematrix /Helvetica 10 sf defaultGraphicsState %%EndSetup 0.00000 0.00000 0.00000 RG [ 1.00000 0.00000 0.00000 1.00000 0.00000 0.00000 ] defaultmatrix matrix concatmatrix setmatrix 1.00000 w 2 J 0 j 10.0000 M [ ] 0.00000 d .800000 .800000 .800000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG q 0 0 600 600 rc 1.00000 1.00000 1.00000 RG 0.00000 0.00000 600.000 200.000 rf 0.00000 0.00000 0.00000 RG 0.00000 200.000 600.000 200.000 rf 1.00000 0.00000 0.00000 RG 0 360 59.0000 9.00000 110.000 110.000 FOVL 0.00000 1.00000 0.00000 RG 0 360 132.000 9.00000 110.000 110.000 FOVL 0.00000 0.00000 1.00000 RG 0 360 95.0000 82.0000 110.000 110.000 FOVL 0.00000 1.00000 1.00000 RG 0 360 359.000 9.00000 110.000 110.000 FOVL 1.00000 0.00000 1.00000 RG 0 360 432.000 9.00000 110.000 110.000 FOVL 1.00000 1.00000 0.00000 RG 0 360 395.000 82.0000 110.000 110.000 FOVL 1.00000 0.00000 0.00000 RG 0 360 59.0000 209.000 110.000 110.000 FOVL 0.00000 1.00000 0.00000 RG 0 360 132.000 209.000 110.000 110.000 FOVL 0.00000 0.00000 1.00000 RG 0 360 95.0000 282.000 110.000 110.000 FOVL 0.00000 1.00000 1.00000 RG 0 360 359.000 209.000 110.000 110.000 FOVL 1.00000 0.00000 1.00000 RG 0 360 432.000 209.000 110.000 110.000 FOVL 1.00000 1.00000 0.00000 RG 0 360 395.000 282.000 110.000 110.000 FOVL 1.00000 0.00000 0.00000 RG 0 360 59.0000 409.000 110.000 110.000 FOVL 0.00000 1.00000 0.00000 RG 0 360 132.000 409.000 110.000 110.000 FOVL 0.00000 0.00000 1.00000 RG 0 360 95.0000 482.000 110.000 110.000 FOVL 0.00000 1.00000 1.00000 RG 0 360 359.000 409.000 110.000 110.000 FOVL 1.00000 0.00000 1.00000 RG 0 360 432.000 409.000 110.000 110.000 FOVL 1.00000 1.00000 0.00000 RG 0 360 395.000 482.000 110.000 110.000 FOVL Q end end restore showpage %%Trailer %%EOF src/test/resources/ps/TestPrintColors.ps0000644000175000017500000017025010344614150017765 0ustar user01user01%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 20 118 575 673 %%Creator: FreeHEP Graphics2D Driver %%Producer: org.freehep.graphicsio.ps.PSGraphics2D %%For: %%Title: %%LanguageLevel: 3 %%EndComments %%BeginProlog 100 dict dup begin % % File: org/freehep/graphicsio.ps/PSProlog.txt % Author: Charles Loomis % % Redefinitions which save some space in the output file. These are also % the same as the PDF operators. /q {gsave} def /Q {grestore} def /n {newpath} def /m {moveto} def /l {lineto} def /c {curveto} def /h {closepath} def /re {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath} def /f {fill} def /f* {eofill} def /F {gsave vg&FC fill grestore} def /F* {gsave vg&FC eofill grestore} def /s {closepath stroke} def /S {stroke} def /b {closepath gsave vg&FC fill grestore gsave stroke grestore newpath} def /B {gsave vg&FC fill grestore gsave stroke grestore newpath} def /b* {closepath gsave vg&FC eofill grestore gsave stroke grestore newpath} def /B* {gsave vg&FC eofill grestore gsave stroke grestore newpath} def /g {1 array astore /vg&fcolor exch def} def /G {setgray} def /k {4 array astore /vg&fcolor exch def} def /K {setcmykcolor} def /rg {3 array astore /vg&fcolor exch def} def /RG {setrgbcolor} def % Initialize the fill color. 0 0 0 rg /vg&FC {mark vg&fcolor aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /vg&DFC {/vg&fcolor exch def} def /vg&C {mark exch aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /w {setlinewidth} def /j {setlinejoin} def /J {setlinecap} def /M {setmiterlimit} def /d {setdash} def /i {setflat} def /W {clip} def /W* {eoclip} def % Setup the default graphics state. % (black; 1 pt. linewidth; miter join; butt-ends; solid) /defaultGraphicsState {0 g 1 w 0 j 0 J [] 0 d} def % Emulation of the rectangle operators for PostScript implementations % which do not implement all Level 2 features. This is an INCOMPLETE % emulation; only the "x y width height rect..." form is emulated. /*rf {gsave newpath re fill grestore} def /*rs {gsave newpath re stroke grestore} def /*rc {newpath re clip} def /rf /rectfill where {pop /rectfill}{/*rf} ifelse load def /rs /rectstroke where {pop /rectstroke}{/*rs} ifelse load def /rc /rectclip where {pop /rectclip}{/*rc} ifelse load def % Emulation of the selectfont operator. This includes a 20% increase in % the fontsize which is necessary to get sizes similar to the Java fonts. /*sf {exch findfont exch dup type /arraytype eq {makefont}{scalefont} ifelse setfont} bind def /sf /selectfont where {pop {1.2 mul selectfont}}{{1.2 mul *sf}} ifelse def % Special version of stroke which allows the dash pattern to continue % across path segments. (This may be needed for PostScript although % modern printers seem to do this correctly.) /vg&stroke { currentdash pop length 0 eq {stroke} { currentdash /vg&doffset exch def pop flattenpath {m vg&resetdash} {2 copy currentpoint 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt 3 1 roll l currentdash 3 -1 roll add setdash} {} {h vg&resetdash} pathforall stroke vg&resetdash } ifelse } def /vg&resetdash {currentdash pop vg&doffset setdash} def % Initialize variables for safety. /delta 0 def /xv 0 def /yv 0 def /width 0 def /height 0 def % Initialize to portrait INTERNATIONAL (Letter-height, A4-width) page. /pw 595 def /ph 791 def /po true def /ftp false def % Initialize margins to 20 points. /ml 20 def /mr 20 def /mt 20 def /mb 20 def % Temporary matrices. /smatrix 0 def /nmatrix 0 def % set page size (usage: setpagesize) /setpagesize {/ph exch def /pw exch def} def % set page orientation (usage: portrait or landscape) /portrait {/po true def} def /landscape {/po false def} def % force natural size for image (usage: naturalsize) /naturalsize {/ftp false def} def % resize image to fill page (usage: fittopage) /fittopage {/ftp true def} def % set margins of the page (usage: setmargins) /setmargins {/mr exch def /mt exch def /mb exch def /ml exch def} def % set the graphic's size (usage: setsize) /setsize {/gh exch def /gw exch def} def % set the graphic's origin (usage: setorigin) /setorigin {/gy exch def /gx exch def} def % calculate image center /imagecenter {pw ml sub mr sub 2 div ml add ph mt sub mb sub 2 div mb add} def % calculate the necessary scaling /imagescale {po {gw}{gh} ifelse pw ml sub mr sub div po {gh}{gw} ifelse ph mt sub mb sub div 2 copy lt {exch} if pop ftp not {1 2 copy lt {exch} if pop} if 1 exch div /sfactor exch def /gw gw sfactor mul def /gh gh sfactor mul def} def % calculate image origin /imageorigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div po {add}{sub} ifelse} def % calculate the clipping origin /cliporigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub floor ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div sub floor} def % Set the clipping region to the bounding box. /cliptobounds {cliporigin po {gw}{gh} ifelse 1 add po {gh}{gw} ifelse 1 add rc} def % set the base transformation matrix (usage: setbasematrix) /setbasematrix {imageorigin translate po {0}{90} ifelse rotate sfactor sfactor neg scale /defaultmatrix matrix currentmatrix def} def % The lower-right bias in drawing 1 pt. wide lines. /bias {q 0.5 0.5 translate} def /unbias {Q} def % Draw a line. (x0 y0 x1 y1 line) /L {bias n m l S unbias} def % Polyline primitive. /polyline {n m 1 exch 1 exch {pop currentfile token pop currentfile token pop l} for } def % Draw a polyline (n x0 y0 OPL x1 y1 x2 y2 ... ... xn yn) /OPL {bias polyline S unbias} def % Draw a closed polyline (n x0 y0 CPL x1 y1 x2 y2 ... ... xn yn) /CPL {bias polyline s unbias} def % Draw a filled polyline (n x0 y0 FPL x1 y1 x2 y2 ... ... xn yn) /FPL {polyline h f*} def % Draw an oval. (x y w h OVL) /OVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width currentlinewidth sub 2 div height currentlinewidth sub 2 div neg scale n 0 0 1 5 -2 roll arc smatrix setmatrix S} def % Draw a filled oval. (x y w h FOVL) /FOVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width 2 div height 2 div neg scale n 0 0 m 0 0 1 5 -2 roll arc h smatrix setmatrix f} def % Draw a rounded rectangle. (x y w h arcwidth archeight RREC) /RREC {matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix s} def % Draw a filled rounded rectangle. (x y w h arcwidth archeight FRREC) /FRREC{matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix h f} def % Draw a string. (string x y STR) /STR {q m 1 -1 scale recshow Q} def % Define basic plot symbols. /xys {/siz exch def /yv exch def /xv exch def} def /hline {xys n xv siz 2. div sub yv m siz 0 rlineto S} def /vline {xys n xv yv siz 2. div sub m 0 siz rlineto S} def /plus {xys n xv yv siz 2. div sub m 0 siz rlineto xv siz 2. div sub yv m siz 0 rlineto S} def /dot {n 2. div 0 360 arc s} def /fdot {n 2. div 0 360 arc h f} def /box {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rs} def /fbox {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rf} def /tridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto s} def /ftridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto h f} def % Symbols defined in terms of the others. /star {3 copy cross plus} def /cross {xys q xv yv translate 45 rotate 0 0 siz plus Q} def /diamond {xys q xv yv translate 45 rotate 0 0 siz box Q} def /fdiamond {xys q xv yv translate 45 rotate 0 0 siz fbox Q} def /triup {xys q xv yv translate 180 rotate 0 0 siz tridn Q} def /ftriup {xys q xv yv translate 180 rotate 0 0 siz ftridn Q} def % Define the composite fonts used to print Unicode strings. % Undefine particular values in an encoding array. /vg&undef { {exch dup 3 -1 roll /.notdef put} forall } def /vg&redef { {3 -1 roll dup 4 2 roll put} forall } def % usage: key encoding basefontname vg&newbasefont font /vg&newbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def currentdict end definefont } def % usage: key encoding basefontname vg&newskewedbasefont font /vg&newskewedbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def exch FontMatrix exch matrix concatmatrix /FontMatrix exch def currentdict end definefont } def % usage: basekey suffix vg&nconcat name /vg&nconcat { 2 {dup length string cvs exch} repeat dup length 3 -1 roll dup length 3 -1 roll add string dup 0 4 -1 roll dup length 5 1 roll putinterval dup 4 -2 roll exch putinterval cvn } def %usage: fontname vg&skewmatrix matrix /vg&skewmatrix { findfont dup /FontInfo known { /FontInfo get dup /ItalicAngle known { [ 1 0 4 -1 roll /ItalicAngle get neg dup sin exch cos div 1 0 0 ] } {pop matrix} ifelse } {pop matrix} ifelse } def % usage: newfontname basefontname vg&newcompositefont -- /vg&newcompositefont { /vg&fstyle exch def /vg&bfont exch def /vg&fname exch def << /FontStyleBits vg&fstyle /FontType 0 /FontMatrix matrix /FontName vg&fname /FMapType 2 /Encoding [ 0 1 255 {pop 6} for ] dup 16#00 0 put % Latin dup 16#03 1 put % Greek dup 16#20 2 put % Punctuation dup 16#21 3 put % Arrows dup 16#22 4 put % MathOps dup 16#27 5 put % Dingbats /FDepVector [ vg&bfont /-UC-Latin vg&nconcat UCLatinEncoding vg&bfont vg&newbasefont vg&bfont vg&skewmatrix vg&bfont /-UC-Greek vg&nconcat UCGreekEncoding /Symbol vg&newskewedbasefont vg&bfont /-UC-Punctuation vg&nconcat UCPunctuationEncoding vg&bfont vg&newbasefont /Arrows-UC findfont /MathOps-UC findfont /Dingbats-UC findfont /Undefined-UC findfont ] >> vg&fname exch definefont pop } def % Null encoding vector (all elements set to .notdef) /NullEncoding [ 256 {/.notdef} repeat ] def % Unicode Latin encoding (unicode codes \u0000-\u00ff) /UCLatinEncoding ISOLatin1Encoding dup length array copy dup 16#60 /grave put [ 16#90 16#91 16#92 16#93 16#94 16#95 16#96 16#97 16#98 16#9a 16#9b 16#9d 16#9e 16#9f ] vg&undef def % Unicode Greek encoding (unicode codes \u0370-\u03ff) /UCGreekEncoding NullEncoding dup length array copy << 16#91 /Alpha 16#92 /Beta 16#93 /Gamma 16#94 /Delta 16#95 /Epsilon 16#96 /Zeta 16#97 /Eta 16#98 /Theta 16#99 /Iota 16#9a /Kappa 16#9b /Lambda 16#9c /Mu 16#9d /Nu 16#9e /Xi 16#9f /Omicron 16#a0 /Pi 16#a1 /Rho 16#a3 /Sigma 16#a4 /Tau 16#a5 /Upsilon 16#a6 /Phi 16#a7 /Chi 16#a8 /Psi 16#a9 /Omega 16#b1 /alpha 16#b2 /beta 16#b3 /gamma 16#b4 /delta 16#b5 /epsilon 16#b6 /zeta 16#b7 /eta 16#b8 /theta 16#b9 /iota 16#ba /kappa 16#bb /lambda 16#bc /mu 16#bd /nu 16#be /xi 16#bf /omicron 16#c0 /pi 16#c1 /rho 16#c2 /sigma1 16#c3 /sigma 16#c4 /tau 16#c5 /upsilon 16#c6 /phi1 16#c7 /chi 16#c8 /psi 16#c9 /omega 16#7e /semicolon 16#87 /dotmath 16#d1 /theta1 16#d2 /Upsilon1 16#d5 /phi 16#d6 /omega1 >> vg&redef def % Unicode punctuation encoding (unicode codes \u2000-\u206f) /UCPunctuationEncoding NullEncoding dup length array copy << 16#10 /hyphen 16#11 /hyphen 16#12 /endash 16#13 /emdash 16#18 /quoteleft 16#19 /quoteright 16#1a /quotesinglbase 16#1b /quotesingle 16#1c /quotedblleft 16#1d /quotedblright 16#1e /quotedblbase 16#1f /quotedbl 16#20 /dagger 16#21 /daggerdbl 16#22 /bullet 16#24 /period 16#26 /ellipsis 16#27 /periodcentered 16#30 /perthousand 16#44 /fraction 16#70 /zerosuperior 16#74 /foursuperior 16#75 /fivesuperior 16#76 /sixsuperior 16#77 /sevensuperior 16#78 /eightsuperior 16#79 /ninesuperior 16#7b /hyphensuperior 16#7d /parenleftsuperior 16#7e /parenrightsuperior 16#80 /zeroinferior 16#84 /fourinferior 16#85 /fiveinferior 16#81 /oneinferior 16#82 /twoinferior 16#83 /threeinferior 16#86 /sixinferior 16#87 /seveninferior 16#88 /eightinferior 16#89 /nineinferior 16#8b /hypheninferior 16#8d /parenleftinferior 16#8e /parenrightinferior >> vg&redef def % Unicode mathematical operators encoding (unicode codes \u2200-\u22ff) /UCMathOpsEncoding NullEncoding dup length array copy << 16#00 /universal 16#02 /partialdiff 16#03 /existential 16#05 /emptyset 16#06 /Delta 16#07 /gradient 16#08 /element 16#09 /notelement 16#0b /suchthat 16#0f /product 16#11 /summation 16#12 /minus 16#15 /fraction 16#17 /asteriskmath 16#19 /bullet 16#1a /radical 16#1d /proportional 16#1e /infinity 16#20 /angle 16#23 /bar 16#27 /logicaland 16#28 /logicalor 16#29 /intersection 16#2a /union 16#2b /integral 16#34 /therefore 16#36 /colon 16#3c /similar 16#45 /congruent 16#48 /approxequal 16#60 /notequal 16#61 /equivalence 16#64 /lessequal 16#65 /greaterequal 16#82 /propersubset 16#83 /propersuperset 16#86 /reflexsubset 16#87 /reflexsuperset 16#95 /circleplus 16#97 /circlemultiply 16#a5 /perpendicular 16#03 /existential 16#c0 /logicaland 16#c1 /logicalor 16#c2 /intersection 16#c3 /union 16#c4 /diamond 16#c5 /dotmath >> vg&redef def % Unicode arrows encoding (unicode codes \u2190-\u21ff) % Also includes those "Letterlike" unicode characters % which are available in the symbol font. (unicode codes \u2100-\u214f) /UCArrowsEncoding NullEncoding dup length array copy << 16#11 /Ifraktur 16#1c /Rfraktur 16#22 /trademarkserif 16#35 /aleph 16#90 /arrowleft 16#91 /arrowup 16#92 /arrowright 16#93 /arrowdown 16#94 /arrowboth 16#d0 /arrowdblleft 16#d1 /arrowdblup 16#d2 /arrowdblright 16#d3 /arrowdbldown 16#d4 /arrowdblboth >> vg&redef def /ZapfDingbats findfont /Encoding get dup length array copy /UCDingbatsEncoding exch def 16#20 1 16#7f { dup 16#20 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for 16#a0 1 16#ff { dup 16#40 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for UCDingbatsEncoding [ 16#c0 1 16#ff {} for ] vg&undef [ 16#00 16#05 16#0a 16#0b 16#28 16#4c 16#4e 16#53 16#54 16#55 16#57 16#5f 16#60 16#68 16#69 16#6a 16#6b 16#6c 16#6d 16#6e 16#6f 16#70 16#71 16#72 16#73 16#74 16#75 16#95 16#96 16#97 16#b0 16#bf ] vg&undef pop % Define the base fonts which don't change. /Undefined-UC NullEncoding /Helvetica vg&newbasefont pop /MathOps-UC UCMathOpsEncoding /Symbol vg&newbasefont pop /Arrows-UC UCArrowsEncoding /Symbol vg&newbasefont pop /Dingbats-UC UCDingbatsEncoding /ZapfDingbats vg&newbasefont pop % Make the SansSerif composite fonts. /SansSerif /Helvetica 16#00 vg&newcompositefont /SansSerif-Bold /Helvetica-Bold 16#01 vg&newcompositefont /SansSerif-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /SansSerif-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Serif composite fonts. /Serif /Times-Roman 16#00 vg&newcompositefont /Serif-Bold /Times-Bold 16#01 vg&newcompositefont /Serif-Italic /Times-Italic 16#02 vg&newcompositefont /Serif-BoldItalic /Times-BoldItalic 16#03 vg&newcompositefont % Make the Monospaced composite fonts. /Monospaced /Courier 16#00 vg&newcompositefont /Monospaced-Bold /Courier-Bold 16#01 vg&newcompositefont /Monospaced-Italic /Courier-Oblique 16#02 vg&newcompositefont /Monospaced-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont % Make the Dialog composite fonts. /Dialog /Helvetica 16#00 vg&newcompositefont /Dialog-Bold /Helvetica-Bold 16#01 vg&newcompositefont /Dialog-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /Dialog-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the DialogInput composite fonts. /DialogInput /Helvetica 16#00 vg&newcompositefont /DialogInput-Bold /Helvetica-Bold 16#01 vg&newcompositefont /DialogInput-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /DialogInput-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Typewriter composite fonts (JDK 1.1 only). /Typewriter /Courier 16#00 vg&newcompositefont /Typewriter-Bold /Courier-Bold 16#01 vg&newcompositefont /Typewriter-Italic /Courier-Oblique 16#02 vg&newcompositefont /Typewriter-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont /cfontH { dup /fontsize exch def /SansSerif exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHB { dup /fontsize exch def /SansSerif-Bold exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHI { dup /fontsize exch def /SansSerif-Italic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHBI { dup /fontsize exch def /SansSerif-BoldItalic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontT { dup /fontsize exch def /Serif exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTB { dup /fontsize exch def /Serif-Bold exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTI { dup /fontsize exch def /Serif-Italic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTBI { dup /fontsize exch def /Serif-BoldItalic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontC { dup /fontsize exch def /Typewriter exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCB { dup /fontsize exch def /Typewriter-Bold exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCI { dup /fontsize exch def /Typewriter-Italic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCBI { dup /fontsize exch def /Typewriter-BoldItalic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def % Darken or lighten the current color. /darken {0.7 exch exp 3 copy q 4 -1 roll vg&C currentrgbcolor 3 {4 -2 roll mul} repeat 3 array astore Q} def /displayColorMap << /Cr [1.00 0.00 0.00] /Cg [0.00 1.00 0.00] /Cb [0.00 0.00 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.00 0.00] /CGg [0.00 1.00 0.00] /CGb [0.00 0.00 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.00 0.00] /CIg [0.00 1.00 0.00] /CIb [0.00 0.00 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /printColorMap << /Cr [1.00 0.33 0.33] /Cg [0.33 1.00 0.33] /Cb [0.33 0.33 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.33 0.33] /CGg [0.33 1.00 0.33] /CGb [0.33 0.33 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.33 0.33] /CIg [0.33 1.00 0.33] /CIb [0.33 0.33 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /grayColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [0.75] /CGg [1 ] /CGb [0.50] /CGc [0.75] /CGm [0.50] /CGy [1 ] /CGo [0.75] /CGp [1 ] /CGw [0 ] /CGgrl [0.25] /CGgr [0.50] /CGgrd [0.75] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def /bwColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [1 ] /CGg [1 ] /CGb [1 ] /CGc [1 ] /CGm [1 ] /CGy [1 ] /CGo [1 ] /CGp [1 ] /CGw [0 ] /CGgrl [1 ] /CGgr [1 ] /CGgrd [1 ] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def % % The following routines handle the alignment of and printing of % tagged strings. % % Predefine the bounding box values. /bbllx 0 def /bblly 0 def /bburx 0 def /bbury 0 def % This routine pops the first unicode character off of a string and returns % the remainder of the string, the character code of first character, % and a "true" if the string was non-zero length. % popfirst % popfirst /popfirst { dup length 1 gt {dup 0 get /vg&fbyte exch def dup 1 get /vg&cbyte exch def dup length 2 sub 2 exch getinterval true} {pop false} ifelse } def % This routine shows a single unicode character given the font and % character codes. % unicharshow -- /unicharshow { 2 string dup 0 5 -1 roll put dup 1 4 -1 roll put internalshow } def % This is an internal routine to alternate between determining the % bounding box for stringsize and showing the string for recshow. % internalshow -- /internalshow {show} def % This is an internal routine to alternate between determining the % bounding box for stringsize and stroking various ornaments. % internalstroke -- /internalstroke {S} def % Sets up internalshow to use the null device to determine string size. % -- nullinternalshow -- /nullinternalshow {/internalshow {false charpath flattenpath pathbbox updatebbox} def} def % Sets up internalstroke to use the null device to determine string size. % -- nullinternalstroke -- /nullinternalstroke { /internalstroke {flattenpath pathbbox updatebbox} def} def % This routine tests to see if the character code matches the first % character of a string. % testchar /testchar {exch dup 3 -1 roll 0 get eq} def % Raise the text baseline for superscripts. % -- raise -- /raise { 0 fontsize 2 div rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-raise the text baseline for superscripts. % -- unraise -- /unraise { /fontsize fontsize 1.5 mul def 0 fontsize 2 div neg rmoveto } def % Lower the text baseline for subscripts. % -- lower -- /lower { 0 fontsize 3 div neg rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-lower the text baseline for subscripts. % -- unlower -- /unlower { /fontsize fontsize 1.5 mul def 0 fontsize 3 div rmoveto } def % Compare the top two elements on the stack and leave only the % larger one. /maxval {2 copy gt {pop} {exch pop} ifelse} def % Tokenize a string. Do not use the usual PostScript token because % parentheses will not be interpreted correctly because of rescanning % of the string. /vg&token {/vg&string exch def /vg&index -1 def /vg&level 0 def 0 2 vg&string length 2 sub { dup dup 1 add exch vg&string exch get 8 bitshift vg&string 3 -1 roll get or dup 16#f0fe eq {pop 1}{16#f0ff eq {-1}{0} ifelse} ifelse /vg&level exch vg&level add def vg&level 0 eq {/vg&index exch def exit} if pop } for vg&index 0 ge { vg&string vg&index 2 add dup vg&string length exch sub getinterval vg&index 2 gt {vg&string 2 vg&index 2 sub getinterval}{()} ifelse true} {false} ifelse } bind def % Recursively show an unicode string. % recshow -- /recshow { popfirst { % Test to see if this is a string attribute. vg&fbyte 16#f0 and 16#e0 eq { q % Font style. currentfont dup /FontStyleBits known {/FontStyleBits get}{pop 0} ifelse vg&cbyte or vg&fontstyles exch get fontsize exch exec vg&token pop recshow currentpoint Q m recshow } { vg&fbyte 16#F8 and 16#F0 eq { % Superscript and/or subscript. vg&cbyte 16#00 eq { vg&token pop exch vg&token pop 3 -1 roll q raise recshow unraise currentpoint pop Q exch q lower recshow unlower currentpoint pop Q maxval currentpoint exch pop m recshow } if % Strikeout. vg&cbyte 16#01 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll fontsize 3 div add moveto fontsize 3 div add lineto internalstroke Q recshow} if % Underline. vg&cbyte 16#02 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dashed underline. vg&cbyte 16#03 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J [ vg&uthick 5 mul vg&uthick 2 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dotted underline. vg&cbyte 16#04 eq { vg&token pop currentpoint 3 -1 roll recshow q 1 J [ 0 vg&uthick 3 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Thick underline. vg&cbyte 16#05 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Gray thick underline. vg&cbyte 16#06 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w 0.5 setgray currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Overbar. vg&cbyte 16#07 eq { vg&token pop dup stringsize relative 4 1 roll pop pop exch 3 -1 roll recshow q 0 J vg&underline vg&uthick w vg&uoffset neg add dup currentpoint pop exch m l internalstroke Q recshow} if } { vg&fbyte vg&cbyte unicharshow recshow } ifelse } ifelse } if } def % Get the underline position and thickness from the current font. /vg&underline { currentfont dup /FontType get 0 eq {/FDepVector get 0 get} if dup dup /FontInfo known { /FontInfo get dup dup /UnderlinePosition known { /UnderlinePosition get /vg&uoffset exch def } { pop /vg&uoffset 0 def } ifelse dup /UnderlineThickness known { /UnderlineThickness get /vg&uthick exch def } { pop /vg&uthick 0 def } ifelse } { pop /vg&uoffset 0 def /vg&uthick 0 def } ifelse /FontMatrix get currentfont dup /FontType get 0 eq {/FontMatrix get matrix concatmatrix}{pop} ifelse dup 0 vg&uoffset 3 -1 roll transform /vg&uoffset exch def pop 0 vg&uthick 3 -1 roll transform /vg&uthick exch def pop } def % Make a frame with the coordinates on the stack. % frame -- /frame {4 copy m 3 1 roll exch l 4 -2 roll l l h} def % Resets the accumulated bounding box to a degenerate box at the % current point. % -- resetbbox -- /resetbbox { currentpoint 2 copy /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Update the accumulated bounding box. % updatebbox -- /updatebbox { dup bbury gt {/bbury exch def} {pop} ifelse dup bburx gt {/bburx exch def} {pop} ifelse dup bblly lt {/bblly exch def} {pop} ifelse dup bbllx lt {/bbllx exch def} {pop} ifelse } def % Set the bounding box to the values on the stack. % updatebbox -- /restorebbox { /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Push the accumulated bounding box onto the stack. % -- pushbbox /pushbbox {bbllx bblly bburx bbury} def % Make the relative bounding box relative to the currentpoint. % inflate /inflate { 2 {fontsize 0.2 mul add 4 1 roll} repeat 2 {fontsize 0.2 mul sub 4 1 roll} repeat } def % Make the relative bounding box relative to the currentpoint. % relative /relative { currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll } def % Returns the size of a string appropriate for recshow. % stringsize /stringsize { pushbbox /internalshow load /internalstroke load 7 -1 roll q nulldevice 0 0 m nullinternalshow nullinternalstroke resetbbox recshow /internalstroke exch def /internalshow exch def pushbbox 8 -4 roll restorebbox Q } def % Calculate values for string positioning. /calcval {4 copy 3 -1 roll sub /widy exch def sub neg /widx exch def pop pop /dy exch def /dx exch def} def % Utilities to position a string. % First letter (U=upper, C=center, B=baseline, L=lower) % Second letter (L=left, C=center, R=right) /align [ {calcval dx neg widy dy add neg rmoveto} % UL {calcval dx neg widy 2 div dy add neg rmoveto} % CL {calcval dx neg 0 rmoveto} % BL {calcval dx neg dy neg rmoveto} % LL {calcval widx dx add neg widy dy add neg rmoveto} % UR {calcval widx dx add neg widy 2 div dy add neg rmoveto} % CR {calcval widx dx add neg 0 rmoveto} % BR {calcval widx dx add neg dy neg rmoveto} % LR {calcval widx 2 div dx add neg widy dy add neg rmoveto} % UC {calcval widx 2 div dx add neg widy 2 div dy add neg rmoveto} % CC {calcval widx 2 div dx add neg 0 rmoveto} % BC {calcval widx 2 div dx add neg dy neg rmoveto} % LC ] def /vg&str {m q 1 -1 scale dup stringsize 4 copy align 11 -1 roll get exec q inflate relative frame exch exec Q recshow Q} def end /procDict exch def %%EndProlog %%BeginSetup save procDict begin printColorMap begin 595 791 setpagesize 20 20 20 20 setmargins 0 0 setorigin 600 600 setsize fittopage portrait imagescale cliptobounds setbasematrix /Helvetica 10 sf defaultGraphicsState %%EndSetup 0.00000 0.00000 0.00000 RG [ 1.00000 0.00000 0.00000 1.00000 0.00000 0.00000 ] defaultmatrix matrix concatmatrix setmatrix 1.00000 w 2 J 0 j 10.0000 M [ ] 0.00000 d .800000 .800000 .800000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG q 0 0 600 600 rc q q 0.00000 0.00000 translate 0 0 600 600 rc q q .800000 .800000 .800000 RG 0.00000 0.00000 600.000 600.000 rf Q q q 400.000 546.000 translate 0 0 200 42 rc q 1.00000 1.00000 1.00000 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate 1.00000 1.00000 1.00000 RG 1.00000 1.00000 translate 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate Q Q q 200.000 546.000 translate 0 0 200 42 rc q 1.00000 1.00000 1.00000 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate 1.00000 1.00000 1.00000 RG 1.00000 1.00000 translate 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate Q Q q 0.00000 546.000 translate 0 0 200 42 rc q 0.00000 0.00000 0.00000 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 1.00000 1.00000 translate 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate Q Q q 400.000 504.000 translate 0 0 200 42 rc q 0.00000 0.00000 0.00000 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 1.00000 1.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate 0.00000 0.00000 0.00000 RG Q Q q 200.000 504.000 translate 0 0 200 42 rc q .0509804 .0509804 .0509804 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate .0509804 .0509804 .0509804 RG 1.00000 1.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate .0509804 .0509804 .0509804 RG Q Q q 0.00000 504.000 translate 0 0 200 42 rc q .250980 .250980 .250980 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate .250980 .250980 .250980 RG 1.00000 1.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate .250980 .250980 .250980 RG Q Q q 400.000 462.000 translate 0 0 200 42 rc q 0.00000 0.00000 0.00000 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 1.00000 1.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate 0.00000 0.00000 0.00000 RG Q Q q 200.000 462.000 translate 0 0 200 42 rc q .215686 .215686 .215686 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate .215686 .215686 .215686 RG 1.00000 1.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate .215686 .215686 .215686 RG Q Q q 0.00000 462.000 translate 0 0 200 42 rc q .501961 .501961 .501961 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate .501961 .501961 .501961 RG 1.00000 1.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate .501961 .501961 .501961 RG Q Q q 400.000 420.000 translate 0 0 200 42 rc q 0.00000 0.00000 0.00000 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 1.00000 1.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate 0.00000 0.00000 0.00000 RG Q Q q 200.000 420.000 translate 0 0 200 42 rc q .525490 .525490 .525490 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate .525490 .525490 .525490 RG 1.00000 1.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate .525490 .525490 .525490 RG Q Q q 0.00000 420.000 translate 0 0 200 42 rc q .752941 .752941 .752941 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate .752941 .752941 .752941 RG 1.00000 1.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate .752941 .752941 .752941 RG Q Q q 400.000 378.000 translate 0 0 200 42 rc q 0.00000 0.00000 0.00000 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate 1.00000 1.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate 0.00000 0.00000 0.00000 RG Q Q q 200.000 378.000 translate 0 0 200 42 rc q 0.00000 0.00000 0.00000 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate 1.00000 1.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate 0.00000 0.00000 0.00000 RG Q Q q 0.00000 378.000 translate 0 0 200 42 rc q 1.00000 1.00000 1.00000 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate 1.00000 1.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate 1.00000 1.00000 1.00000 RG Q Q q 400.000 336.000 translate 0 0 200 42 rc q 0.00000 0.00000 0.00000 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 1.00000 1.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate 0.00000 0.00000 0.00000 RG Q Q q 200.000 336.000 translate 0 0 200 42 rc q .552941 .552941 .552941 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate .552941 .552941 .552941 RG 1.00000 1.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate .552941 .552941 .552941 RG Q Q q 0.00000 336.000 translate 0 0 200 42 rc q 1.00000 .686275 .686275 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate 1.00000 .686275 .686275 RG 1.00000 1.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate 1.00000 .686275 .686275 RG Q Q q 400.000 294.000 translate 0 0 200 42 rc q 0.00000 0.00000 0.00000 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 1.00000 1.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate 0.00000 0.00000 0.00000 RG Q Q q 200.000 294.000 translate 0 0 200 42 rc q .627451 .627451 .627451 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate .627451 .627451 .627451 RG 1.00000 1.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate .627451 .627451 .627451 RG Q Q q 0.00000 294.000 translate 0 0 200 42 rc q 1.00000 .784314 0.00000 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate 1.00000 .784314 0.00000 RG 1.00000 1.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate 1.00000 .784314 0.00000 RG Q Q q 400.000 252.000 translate 0 0 200 42 rc q 0.00000 0.00000 0.00000 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 1.00000 1.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate 0.00000 0.00000 0.00000 RG Q Q q 200.000 252.000 translate 0 0 200 42 rc q .929412 .929412 .929412 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate .929412 .929412 .929412 RG 1.00000 1.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate .929412 .929412 .929412 RG Q Q q 0.00000 252.000 translate 0 0 200 42 rc q 1.00000 1.00000 0.00000 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate 1.00000 1.00000 0.00000 RG 1.00000 1.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate 1.00000 1.00000 0.00000 RG Q Q q 400.000 210.000 translate 0 0 200 42 rc q 0.00000 0.00000 0.00000 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 1.00000 1.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate 0.00000 0.00000 0.00000 RG Q Q q 200.000 210.000 translate 0 0 200 42 rc q .286275 .286275 .286275 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate .286275 .286275 .286275 RG 1.00000 1.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate .286275 .286275 .286275 RG Q Q q 0.00000 210.000 translate 0 0 200 42 rc q 1.00000 0.00000 1.00000 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate 1.00000 0.00000 1.00000 RG 1.00000 1.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate 1.00000 0.00000 1.00000 RG Q Q q 400.000 168.000 translate 0 0 200 42 rc q 0.00000 0.00000 0.00000 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 1.00000 1.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate 0.00000 0.00000 0.00000 RG Q Q q 200.000 168.000 translate 0 0 200 42 rc q .788235 .788235 .788235 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate .788235 .788235 .788235 RG 1.00000 1.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate .788235 .788235 .788235 RG Q Q q 0.00000 168.000 translate 0 0 200 42 rc q 0.00000 1.00000 1.00000 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate 0.00000 1.00000 1.00000 RG 1.00000 1.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate 0.00000 1.00000 1.00000 RG Q Q q 400.000 126.000 translate 0 0 200 42 rc q 0.00000 0.00000 0.00000 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 1.00000 1.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate 0.00000 0.00000 0.00000 RG Q Q q 200.000 126.000 translate 0 0 200 42 rc q .0705882 .0705882 .0705882 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate .0705882 .0705882 .0705882 RG 1.00000 1.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate .0705882 .0705882 .0705882 RG Q Q q 0.00000 126.000 translate 0 0 200 42 rc q 0.00000 0.00000 1.00000 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 1.00000 RG 1.00000 1.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate 0.00000 0.00000 1.00000 RG Q Q q 400.000 84.0000 translate 0 0 200 42 rc q 0.00000 0.00000 0.00000 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 1.00000 1.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate 0.00000 0.00000 0.00000 RG Q Q q 200.000 84.0000 translate 0 0 200 42 rc q .713725 .713725 .713725 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate .713725 .713725 .713725 RG 1.00000 1.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate .713725 .713725 .713725 RG Q Q q 0.00000 84.0000 translate 0 0 200 42 rc q 0.00000 1.00000 0.00000 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate 0.00000 1.00000 0.00000 RG 1.00000 1.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate 0.00000 1.00000 0.00000 RG Q Q q 400.000 42.0000 translate 0 0 200 42 rc q 0.00000 0.00000 0.00000 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 1.00000 1.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate 0.00000 0.00000 0.00000 RG Q Q q 200.000 42.0000 translate 0 0 200 42 rc q .215686 .215686 .215686 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate .215686 .215686 .215686 RG 1.00000 1.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate .215686 .215686 .215686 RG Q Q q 0.00000 42.0000 translate 0 0 200 42 rc q 1.00000 0.00000 0.00000 RG 3.00000 3.00000 194.000 36.0000 rf 0.00000 0.00000 translate 1.00000 1.00000 1.00000 RG 0.00000 0.00000 199.000 1.00000 rf 0.00000 1.00000 1.00000 41.0000 rf 1.00000 41.0000 199.000 1.00000 rf 199.000 0.00000 1.00000 41.0000 rf 0.00000 0.00000 translate 1.00000 0.00000 0.00000 RG 1.00000 1.00000 translate 0.00000 0.00000 0.00000 RG 0.00000 0.00000 196.000 2.00000 rf 0.00000 2.00000 2.00000 38.0000 rf 2.00000 38.0000 196.000 2.00000 rf 196.000 0.00000 2.00000 38.0000 rf -1.00000 -1.00000 translate 1.00000 0.00000 0.00000 RG Q Q q 400.000 0.00000 translate 0 0 200 42 rc q q 0.00000 26.0000 moveto q 1 -1 scale /Dialog-Bold findfont 12.0 scalefont setfont (\000B\000l\000a\000c\000k\000 \000a\000n\000d\000 \000W\000h\000i\000t\000e) show Q Q Q Q q 200.000 0.00000 translate 0 0 200 42 rc q q 0.00000 26.0000 moveto q 1 -1 scale /Dialog-Bold findfont 12.0 scalefont setfont (\000G\000r\000a\000y\000S\000c\000a\000l\000e) show Q Q Q Q q 0.00000 0.00000 translate 0 0 200 42 rc q q 0.00000 26.0000 moveto q 1 -1 scale /Dialog-Bold findfont 12.0 scalefont setfont (\000C\000o\000l\000o\000r) show Q Q Q Q Q Q Q Q Q end end restore showpage %%Trailer %%EOF src/test/resources/ps/TestAll.ps0000644000175000017500000012515710344614150016225 0ustar user01user01%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 20 118 575 673 %%Creator: FreeHEP Graphics2D Driver %%Producer: org.freehep.graphicsio.ps.PSGraphics2D %%For: %%Title: %%LanguageLevel: 3 %%EndComments %%BeginProlog 100 dict dup begin % % File: org/freehep/graphicsio.ps/PSProlog.txt % Author: Charles Loomis % % Redefinitions which save some space in the output file. These are also % the same as the PDF operators. /q {gsave} def /Q {grestore} def /n {newpath} def /m {moveto} def /l {lineto} def /c {curveto} def /h {closepath} def /re {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath} def /f {fill} def /f* {eofill} def /F {gsave vg&FC fill grestore} def /F* {gsave vg&FC eofill grestore} def /s {closepath stroke} def /S {stroke} def /b {closepath gsave vg&FC fill grestore gsave stroke grestore newpath} def /B {gsave vg&FC fill grestore gsave stroke grestore newpath} def /b* {closepath gsave vg&FC eofill grestore gsave stroke grestore newpath} def /B* {gsave vg&FC eofill grestore gsave stroke grestore newpath} def /g {1 array astore /vg&fcolor exch def} def /G {setgray} def /k {4 array astore /vg&fcolor exch def} def /K {setcmykcolor} def /rg {3 array astore /vg&fcolor exch def} def /RG {setrgbcolor} def % Initialize the fill color. 0 0 0 rg /vg&FC {mark vg&fcolor aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /vg&DFC {/vg&fcolor exch def} def /vg&C {mark exch aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /w {setlinewidth} def /j {setlinejoin} def /J {setlinecap} def /M {setmiterlimit} def /d {setdash} def /i {setflat} def /W {clip} def /W* {eoclip} def % Setup the default graphics state. % (black; 1 pt. linewidth; miter join; butt-ends; solid) /defaultGraphicsState {0 g 1 w 0 j 0 J [] 0 d} def % Emulation of the rectangle operators for PostScript implementations % which do not implement all Level 2 features. This is an INCOMPLETE % emulation; only the "x y width height rect..." form is emulated. /*rf {gsave newpath re fill grestore} def /*rs {gsave newpath re stroke grestore} def /*rc {newpath re clip} def /rf /rectfill where {pop /rectfill}{/*rf} ifelse load def /rs /rectstroke where {pop /rectstroke}{/*rs} ifelse load def /rc /rectclip where {pop /rectclip}{/*rc} ifelse load def % Emulation of the selectfont operator. This includes a 20% increase in % the fontsize which is necessary to get sizes similar to the Java fonts. /*sf {exch findfont exch dup type /arraytype eq {makefont}{scalefont} ifelse setfont} bind def /sf /selectfont where {pop {1.2 mul selectfont}}{{1.2 mul *sf}} ifelse def % Special version of stroke which allows the dash pattern to continue % across path segments. (This may be needed for PostScript although % modern printers seem to do this correctly.) /vg&stroke { currentdash pop length 0 eq {stroke} { currentdash /vg&doffset exch def pop flattenpath {m vg&resetdash} {2 copy currentpoint 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt 3 1 roll l currentdash 3 -1 roll add setdash} {} {h vg&resetdash} pathforall stroke vg&resetdash } ifelse } def /vg&resetdash {currentdash pop vg&doffset setdash} def % Initialize variables for safety. /delta 0 def /xv 0 def /yv 0 def /width 0 def /height 0 def % Initialize to portrait INTERNATIONAL (Letter-height, A4-width) page. /pw 595 def /ph 791 def /po true def /ftp false def % Initialize margins to 20 points. /ml 20 def /mr 20 def /mt 20 def /mb 20 def % Temporary matrices. /smatrix 0 def /nmatrix 0 def % set page size (usage: setpagesize) /setpagesize {/ph exch def /pw exch def} def % set page orientation (usage: portrait or landscape) /portrait {/po true def} def /landscape {/po false def} def % force natural size for image (usage: naturalsize) /naturalsize {/ftp false def} def % resize image to fill page (usage: fittopage) /fittopage {/ftp true def} def % set margins of the page (usage: setmargins) /setmargins {/mr exch def /mt exch def /mb exch def /ml exch def} def % set the graphic's size (usage: setsize) /setsize {/gh exch def /gw exch def} def % set the graphic's origin (usage: setorigin) /setorigin {/gy exch def /gx exch def} def % calculate image center /imagecenter {pw ml sub mr sub 2 div ml add ph mt sub mb sub 2 div mb add} def % calculate the necessary scaling /imagescale {po {gw}{gh} ifelse pw ml sub mr sub div po {gh}{gw} ifelse ph mt sub mb sub div 2 copy lt {exch} if pop ftp not {1 2 copy lt {exch} if pop} if 1 exch div /sfactor exch def /gw gw sfactor mul def /gh gh sfactor mul def} def % calculate image origin /imageorigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div po {add}{sub} ifelse} def % calculate the clipping origin /cliporigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub floor ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div sub floor} def % Set the clipping region to the bounding box. /cliptobounds {cliporigin po {gw}{gh} ifelse 1 add po {gh}{gw} ifelse 1 add rc} def % set the base transformation matrix (usage: setbasematrix) /setbasematrix {imageorigin translate po {0}{90} ifelse rotate sfactor sfactor neg scale /defaultmatrix matrix currentmatrix def} def % The lower-right bias in drawing 1 pt. wide lines. /bias {q 0.5 0.5 translate} def /unbias {Q} def % Draw a line. (x0 y0 x1 y1 line) /L {bias n m l S unbias} def % Polyline primitive. /polyline {n m 1 exch 1 exch {pop currentfile token pop currentfile token pop l} for } def % Draw a polyline (n x0 y0 OPL x1 y1 x2 y2 ... ... xn yn) /OPL {bias polyline S unbias} def % Draw a closed polyline (n x0 y0 CPL x1 y1 x2 y2 ... ... xn yn) /CPL {bias polyline s unbias} def % Draw a filled polyline (n x0 y0 FPL x1 y1 x2 y2 ... ... xn yn) /FPL {polyline h f*} def % Draw an oval. (x y w h OVL) /OVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width currentlinewidth sub 2 div height currentlinewidth sub 2 div neg scale n 0 0 1 5 -2 roll arc smatrix setmatrix S} def % Draw a filled oval. (x y w h FOVL) /FOVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width 2 div height 2 div neg scale n 0 0 m 0 0 1 5 -2 roll arc h smatrix setmatrix f} def % Draw a rounded rectangle. (x y w h arcwidth archeight RREC) /RREC {matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix s} def % Draw a filled rounded rectangle. (x y w h arcwidth archeight FRREC) /FRREC{matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix h f} def % Draw a string. (string x y STR) /STR {q m 1 -1 scale recshow Q} def % Define basic plot symbols. /xys {/siz exch def /yv exch def /xv exch def} def /hline {xys n xv siz 2. div sub yv m siz 0 rlineto S} def /vline {xys n xv yv siz 2. div sub m 0 siz rlineto S} def /plus {xys n xv yv siz 2. div sub m 0 siz rlineto xv siz 2. div sub yv m siz 0 rlineto S} def /dot {n 2. div 0 360 arc s} def /fdot {n 2. div 0 360 arc h f} def /box {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rs} def /fbox {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rf} def /tridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto s} def /ftridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto h f} def % Symbols defined in terms of the others. /star {3 copy cross plus} def /cross {xys q xv yv translate 45 rotate 0 0 siz plus Q} def /diamond {xys q xv yv translate 45 rotate 0 0 siz box Q} def /fdiamond {xys q xv yv translate 45 rotate 0 0 siz fbox Q} def /triup {xys q xv yv translate 180 rotate 0 0 siz tridn Q} def /ftriup {xys q xv yv translate 180 rotate 0 0 siz ftridn Q} def % Define the composite fonts used to print Unicode strings. % Undefine particular values in an encoding array. /vg&undef { {exch dup 3 -1 roll /.notdef put} forall } def /vg&redef { {3 -1 roll dup 4 2 roll put} forall } def % usage: key encoding basefontname vg&newbasefont font /vg&newbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def currentdict end definefont } def % usage: key encoding basefontname vg&newskewedbasefont font /vg&newskewedbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def exch FontMatrix exch matrix concatmatrix /FontMatrix exch def currentdict end definefont } def % usage: basekey suffix vg&nconcat name /vg&nconcat { 2 {dup length string cvs exch} repeat dup length 3 -1 roll dup length 3 -1 roll add string dup 0 4 -1 roll dup length 5 1 roll putinterval dup 4 -2 roll exch putinterval cvn } def %usage: fontname vg&skewmatrix matrix /vg&skewmatrix { findfont dup /FontInfo known { /FontInfo get dup /ItalicAngle known { [ 1 0 4 -1 roll /ItalicAngle get neg dup sin exch cos div 1 0 0 ] } {pop matrix} ifelse } {pop matrix} ifelse } def % usage: newfontname basefontname vg&newcompositefont -- /vg&newcompositefont { /vg&fstyle exch def /vg&bfont exch def /vg&fname exch def << /FontStyleBits vg&fstyle /FontType 0 /FontMatrix matrix /FontName vg&fname /FMapType 2 /Encoding [ 0 1 255 {pop 6} for ] dup 16#00 0 put % Latin dup 16#03 1 put % Greek dup 16#20 2 put % Punctuation dup 16#21 3 put % Arrows dup 16#22 4 put % MathOps dup 16#27 5 put % Dingbats /FDepVector [ vg&bfont /-UC-Latin vg&nconcat UCLatinEncoding vg&bfont vg&newbasefont vg&bfont vg&skewmatrix vg&bfont /-UC-Greek vg&nconcat UCGreekEncoding /Symbol vg&newskewedbasefont vg&bfont /-UC-Punctuation vg&nconcat UCPunctuationEncoding vg&bfont vg&newbasefont /Arrows-UC findfont /MathOps-UC findfont /Dingbats-UC findfont /Undefined-UC findfont ] >> vg&fname exch definefont pop } def % Null encoding vector (all elements set to .notdef) /NullEncoding [ 256 {/.notdef} repeat ] def % Unicode Latin encoding (unicode codes \u0000-\u00ff) /UCLatinEncoding ISOLatin1Encoding dup length array copy dup 16#60 /grave put [ 16#90 16#91 16#92 16#93 16#94 16#95 16#96 16#97 16#98 16#9a 16#9b 16#9d 16#9e 16#9f ] vg&undef def % Unicode Greek encoding (unicode codes \u0370-\u03ff) /UCGreekEncoding NullEncoding dup length array copy << 16#91 /Alpha 16#92 /Beta 16#93 /Gamma 16#94 /Delta 16#95 /Epsilon 16#96 /Zeta 16#97 /Eta 16#98 /Theta 16#99 /Iota 16#9a /Kappa 16#9b /Lambda 16#9c /Mu 16#9d /Nu 16#9e /Xi 16#9f /Omicron 16#a0 /Pi 16#a1 /Rho 16#a3 /Sigma 16#a4 /Tau 16#a5 /Upsilon 16#a6 /Phi 16#a7 /Chi 16#a8 /Psi 16#a9 /Omega 16#b1 /alpha 16#b2 /beta 16#b3 /gamma 16#b4 /delta 16#b5 /epsilon 16#b6 /zeta 16#b7 /eta 16#b8 /theta 16#b9 /iota 16#ba /kappa 16#bb /lambda 16#bc /mu 16#bd /nu 16#be /xi 16#bf /omicron 16#c0 /pi 16#c1 /rho 16#c2 /sigma1 16#c3 /sigma 16#c4 /tau 16#c5 /upsilon 16#c6 /phi1 16#c7 /chi 16#c8 /psi 16#c9 /omega 16#7e /semicolon 16#87 /dotmath 16#d1 /theta1 16#d2 /Upsilon1 16#d5 /phi 16#d6 /omega1 >> vg&redef def % Unicode punctuation encoding (unicode codes \u2000-\u206f) /UCPunctuationEncoding NullEncoding dup length array copy << 16#10 /hyphen 16#11 /hyphen 16#12 /endash 16#13 /emdash 16#18 /quoteleft 16#19 /quoteright 16#1a /quotesinglbase 16#1b /quotesingle 16#1c /quotedblleft 16#1d /quotedblright 16#1e /quotedblbase 16#1f /quotedbl 16#20 /dagger 16#21 /daggerdbl 16#22 /bullet 16#24 /period 16#26 /ellipsis 16#27 /periodcentered 16#30 /perthousand 16#44 /fraction 16#70 /zerosuperior 16#74 /foursuperior 16#75 /fivesuperior 16#76 /sixsuperior 16#77 /sevensuperior 16#78 /eightsuperior 16#79 /ninesuperior 16#7b /hyphensuperior 16#7d /parenleftsuperior 16#7e /parenrightsuperior 16#80 /zeroinferior 16#84 /fourinferior 16#85 /fiveinferior 16#81 /oneinferior 16#82 /twoinferior 16#83 /threeinferior 16#86 /sixinferior 16#87 /seveninferior 16#88 /eightinferior 16#89 /nineinferior 16#8b /hypheninferior 16#8d /parenleftinferior 16#8e /parenrightinferior >> vg&redef def % Unicode mathematical operators encoding (unicode codes \u2200-\u22ff) /UCMathOpsEncoding NullEncoding dup length array copy << 16#00 /universal 16#02 /partialdiff 16#03 /existential 16#05 /emptyset 16#06 /Delta 16#07 /gradient 16#08 /element 16#09 /notelement 16#0b /suchthat 16#0f /product 16#11 /summation 16#12 /minus 16#15 /fraction 16#17 /asteriskmath 16#19 /bullet 16#1a /radical 16#1d /proportional 16#1e /infinity 16#20 /angle 16#23 /bar 16#27 /logicaland 16#28 /logicalor 16#29 /intersection 16#2a /union 16#2b /integral 16#34 /therefore 16#36 /colon 16#3c /similar 16#45 /congruent 16#48 /approxequal 16#60 /notequal 16#61 /equivalence 16#64 /lessequal 16#65 /greaterequal 16#82 /propersubset 16#83 /propersuperset 16#86 /reflexsubset 16#87 /reflexsuperset 16#95 /circleplus 16#97 /circlemultiply 16#a5 /perpendicular 16#03 /existential 16#c0 /logicaland 16#c1 /logicalor 16#c2 /intersection 16#c3 /union 16#c4 /diamond 16#c5 /dotmath >> vg&redef def % Unicode arrows encoding (unicode codes \u2190-\u21ff) % Also includes those "Letterlike" unicode characters % which are available in the symbol font. (unicode codes \u2100-\u214f) /UCArrowsEncoding NullEncoding dup length array copy << 16#11 /Ifraktur 16#1c /Rfraktur 16#22 /trademarkserif 16#35 /aleph 16#90 /arrowleft 16#91 /arrowup 16#92 /arrowright 16#93 /arrowdown 16#94 /arrowboth 16#d0 /arrowdblleft 16#d1 /arrowdblup 16#d2 /arrowdblright 16#d3 /arrowdbldown 16#d4 /arrowdblboth >> vg&redef def /ZapfDingbats findfont /Encoding get dup length array copy /UCDingbatsEncoding exch def 16#20 1 16#7f { dup 16#20 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for 16#a0 1 16#ff { dup 16#40 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for UCDingbatsEncoding [ 16#c0 1 16#ff {} for ] vg&undef [ 16#00 16#05 16#0a 16#0b 16#28 16#4c 16#4e 16#53 16#54 16#55 16#57 16#5f 16#60 16#68 16#69 16#6a 16#6b 16#6c 16#6d 16#6e 16#6f 16#70 16#71 16#72 16#73 16#74 16#75 16#95 16#96 16#97 16#b0 16#bf ] vg&undef pop % Define the base fonts which don't change. /Undefined-UC NullEncoding /Helvetica vg&newbasefont pop /MathOps-UC UCMathOpsEncoding /Symbol vg&newbasefont pop /Arrows-UC UCArrowsEncoding /Symbol vg&newbasefont pop /Dingbats-UC UCDingbatsEncoding /ZapfDingbats vg&newbasefont pop % Make the SansSerif composite fonts. /SansSerif /Helvetica 16#00 vg&newcompositefont /SansSerif-Bold /Helvetica-Bold 16#01 vg&newcompositefont /SansSerif-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /SansSerif-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Serif composite fonts. /Serif /Times-Roman 16#00 vg&newcompositefont /Serif-Bold /Times-Bold 16#01 vg&newcompositefont /Serif-Italic /Times-Italic 16#02 vg&newcompositefont /Serif-BoldItalic /Times-BoldItalic 16#03 vg&newcompositefont % Make the Monospaced composite fonts. /Monospaced /Courier 16#00 vg&newcompositefont /Monospaced-Bold /Courier-Bold 16#01 vg&newcompositefont /Monospaced-Italic /Courier-Oblique 16#02 vg&newcompositefont /Monospaced-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont % Make the Dialog composite fonts. /Dialog /Helvetica 16#00 vg&newcompositefont /Dialog-Bold /Helvetica-Bold 16#01 vg&newcompositefont /Dialog-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /Dialog-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the DialogInput composite fonts. /DialogInput /Helvetica 16#00 vg&newcompositefont /DialogInput-Bold /Helvetica-Bold 16#01 vg&newcompositefont /DialogInput-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /DialogInput-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Typewriter composite fonts (JDK 1.1 only). /Typewriter /Courier 16#00 vg&newcompositefont /Typewriter-Bold /Courier-Bold 16#01 vg&newcompositefont /Typewriter-Italic /Courier-Oblique 16#02 vg&newcompositefont /Typewriter-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont /cfontH { dup /fontsize exch def /SansSerif exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHB { dup /fontsize exch def /SansSerif-Bold exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHI { dup /fontsize exch def /SansSerif-Italic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHBI { dup /fontsize exch def /SansSerif-BoldItalic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontT { dup /fontsize exch def /Serif exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTB { dup /fontsize exch def /Serif-Bold exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTI { dup /fontsize exch def /Serif-Italic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTBI { dup /fontsize exch def /Serif-BoldItalic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontC { dup /fontsize exch def /Typewriter exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCB { dup /fontsize exch def /Typewriter-Bold exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCI { dup /fontsize exch def /Typewriter-Italic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCBI { dup /fontsize exch def /Typewriter-BoldItalic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def % Darken or lighten the current color. /darken {0.7 exch exp 3 copy q 4 -1 roll vg&C currentrgbcolor 3 {4 -2 roll mul} repeat 3 array astore Q} def /displayColorMap << /Cr [1.00 0.00 0.00] /Cg [0.00 1.00 0.00] /Cb [0.00 0.00 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.00 0.00] /CGg [0.00 1.00 0.00] /CGb [0.00 0.00 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.00 0.00] /CIg [0.00 1.00 0.00] /CIb [0.00 0.00 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /printColorMap << /Cr [1.00 0.33 0.33] /Cg [0.33 1.00 0.33] /Cb [0.33 0.33 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.33 0.33] /CGg [0.33 1.00 0.33] /CGb [0.33 0.33 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.33 0.33] /CIg [0.33 1.00 0.33] /CIb [0.33 0.33 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /grayColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [0.75] /CGg [1 ] /CGb [0.50] /CGc [0.75] /CGm [0.50] /CGy [1 ] /CGo [0.75] /CGp [1 ] /CGw [0 ] /CGgrl [0.25] /CGgr [0.50] /CGgrd [0.75] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def /bwColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [1 ] /CGg [1 ] /CGb [1 ] /CGc [1 ] /CGm [1 ] /CGy [1 ] /CGo [1 ] /CGp [1 ] /CGw [0 ] /CGgrl [1 ] /CGgr [1 ] /CGgrd [1 ] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def % % The following routines handle the alignment of and printing of % tagged strings. % % Predefine the bounding box values. /bbllx 0 def /bblly 0 def /bburx 0 def /bbury 0 def % This routine pops the first unicode character off of a string and returns % the remainder of the string, the character code of first character, % and a "true" if the string was non-zero length. % popfirst % popfirst /popfirst { dup length 1 gt {dup 0 get /vg&fbyte exch def dup 1 get /vg&cbyte exch def dup length 2 sub 2 exch getinterval true} {pop false} ifelse } def % This routine shows a single unicode character given the font and % character codes. % unicharshow -- /unicharshow { 2 string dup 0 5 -1 roll put dup 1 4 -1 roll put internalshow } def % This is an internal routine to alternate between determining the % bounding box for stringsize and showing the string for recshow. % internalshow -- /internalshow {show} def % This is an internal routine to alternate between determining the % bounding box for stringsize and stroking various ornaments. % internalstroke -- /internalstroke {S} def % Sets up internalshow to use the null device to determine string size. % -- nullinternalshow -- /nullinternalshow {/internalshow {false charpath flattenpath pathbbox updatebbox} def} def % Sets up internalstroke to use the null device to determine string size. % -- nullinternalstroke -- /nullinternalstroke { /internalstroke {flattenpath pathbbox updatebbox} def} def % This routine tests to see if the character code matches the first % character of a string. % testchar /testchar {exch dup 3 -1 roll 0 get eq} def % Raise the text baseline for superscripts. % -- raise -- /raise { 0 fontsize 2 div rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-raise the text baseline for superscripts. % -- unraise -- /unraise { /fontsize fontsize 1.5 mul def 0 fontsize 2 div neg rmoveto } def % Lower the text baseline for subscripts. % -- lower -- /lower { 0 fontsize 3 div neg rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-lower the text baseline for subscripts. % -- unlower -- /unlower { /fontsize fontsize 1.5 mul def 0 fontsize 3 div rmoveto } def % Compare the top two elements on the stack and leave only the % larger one. /maxval {2 copy gt {pop} {exch pop} ifelse} def % Tokenize a string. Do not use the usual PostScript token because % parentheses will not be interpreted correctly because of rescanning % of the string. /vg&token {/vg&string exch def /vg&index -1 def /vg&level 0 def 0 2 vg&string length 2 sub { dup dup 1 add exch vg&string exch get 8 bitshift vg&string 3 -1 roll get or dup 16#f0fe eq {pop 1}{16#f0ff eq {-1}{0} ifelse} ifelse /vg&level exch vg&level add def vg&level 0 eq {/vg&index exch def exit} if pop } for vg&index 0 ge { vg&string vg&index 2 add dup vg&string length exch sub getinterval vg&index 2 gt {vg&string 2 vg&index 2 sub getinterval}{()} ifelse true} {false} ifelse } bind def % Recursively show an unicode string. % recshow -- /recshow { popfirst { % Test to see if this is a string attribute. vg&fbyte 16#f0 and 16#e0 eq { q % Font style. currentfont dup /FontStyleBits known {/FontStyleBits get}{pop 0} ifelse vg&cbyte or vg&fontstyles exch get fontsize exch exec vg&token pop recshow currentpoint Q m recshow } { vg&fbyte 16#F8 and 16#F0 eq { % Superscript and/or subscript. vg&cbyte 16#00 eq { vg&token pop exch vg&token pop 3 -1 roll q raise recshow unraise currentpoint pop Q exch q lower recshow unlower currentpoint pop Q maxval currentpoint exch pop m recshow } if % Strikeout. vg&cbyte 16#01 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll fontsize 3 div add moveto fontsize 3 div add lineto internalstroke Q recshow} if % Underline. vg&cbyte 16#02 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dashed underline. vg&cbyte 16#03 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J [ vg&uthick 5 mul vg&uthick 2 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dotted underline. vg&cbyte 16#04 eq { vg&token pop currentpoint 3 -1 roll recshow q 1 J [ 0 vg&uthick 3 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Thick underline. vg&cbyte 16#05 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Gray thick underline. vg&cbyte 16#06 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w 0.5 setgray currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Overbar. vg&cbyte 16#07 eq { vg&token pop dup stringsize relative 4 1 roll pop pop exch 3 -1 roll recshow q 0 J vg&underline vg&uthick w vg&uoffset neg add dup currentpoint pop exch m l internalstroke Q recshow} if } { vg&fbyte vg&cbyte unicharshow recshow } ifelse } ifelse } if } def % Get the underline position and thickness from the current font. /vg&underline { currentfont dup /FontType get 0 eq {/FDepVector get 0 get} if dup dup /FontInfo known { /FontInfo get dup dup /UnderlinePosition known { /UnderlinePosition get /vg&uoffset exch def } { pop /vg&uoffset 0 def } ifelse dup /UnderlineThickness known { /UnderlineThickness get /vg&uthick exch def } { pop /vg&uthick 0 def } ifelse } { pop /vg&uoffset 0 def /vg&uthick 0 def } ifelse /FontMatrix get currentfont dup /FontType get 0 eq {/FontMatrix get matrix concatmatrix}{pop} ifelse dup 0 vg&uoffset 3 -1 roll transform /vg&uoffset exch def pop 0 vg&uthick 3 -1 roll transform /vg&uthick exch def pop } def % Make a frame with the coordinates on the stack. % frame -- /frame {4 copy m 3 1 roll exch l 4 -2 roll l l h} def % Resets the accumulated bounding box to a degenerate box at the % current point. % -- resetbbox -- /resetbbox { currentpoint 2 copy /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Update the accumulated bounding box. % updatebbox -- /updatebbox { dup bbury gt {/bbury exch def} {pop} ifelse dup bburx gt {/bburx exch def} {pop} ifelse dup bblly lt {/bblly exch def} {pop} ifelse dup bbllx lt {/bbllx exch def} {pop} ifelse } def % Set the bounding box to the values on the stack. % updatebbox -- /restorebbox { /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Push the accumulated bounding box onto the stack. % -- pushbbox /pushbbox {bbllx bblly bburx bbury} def % Make the relative bounding box relative to the currentpoint. % inflate /inflate { 2 {fontsize 0.2 mul add 4 1 roll} repeat 2 {fontsize 0.2 mul sub 4 1 roll} repeat } def % Make the relative bounding box relative to the currentpoint. % relative /relative { currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll } def % Returns the size of a string appropriate for recshow. % stringsize /stringsize { pushbbox /internalshow load /internalstroke load 7 -1 roll q nulldevice 0 0 m nullinternalshow nullinternalstroke resetbbox recshow /internalstroke exch def /internalshow exch def pushbbox 8 -4 roll restorebbox Q } def % Calculate values for string positioning. /calcval {4 copy 3 -1 roll sub /widy exch def sub neg /widx exch def pop pop /dy exch def /dx exch def} def % Utilities to position a string. % First letter (U=upper, C=center, B=baseline, L=lower) % Second letter (L=left, C=center, R=right) /align [ {calcval dx neg widy dy add neg rmoveto} % UL {calcval dx neg widy 2 div dy add neg rmoveto} % CL {calcval dx neg 0 rmoveto} % BL {calcval dx neg dy neg rmoveto} % LL {calcval widx dx add neg widy dy add neg rmoveto} % UR {calcval widx dx add neg widy 2 div dy add neg rmoveto} % CR {calcval widx dx add neg 0 rmoveto} % BR {calcval widx dx add neg dy neg rmoveto} % LR {calcval widx 2 div dx add neg widy dy add neg rmoveto} % UC {calcval widx 2 div dx add neg widy 2 div dy add neg rmoveto} % CC {calcval widx 2 div dx add neg 0 rmoveto} % BC {calcval widx 2 div dx add neg dy neg rmoveto} % LC ] def /vg&str {m q 1 -1 scale dup stringsize 4 copy align 11 -1 roll get exec q inflate relative frame exch exec Q recshow Q} def end /procDict exch def %%EndProlog %%BeginSetup save procDict begin printColorMap begin 595 791 setpagesize 20 20 20 20 setmargins 0 0 setorigin 600 600 setsize fittopage portrait imagescale cliptobounds setbasematrix /Helvetica 10 sf defaultGraphicsState %%EndSetup 0.00000 0.00000 0.00000 RG [ 1.00000 0.00000 0.00000 1.00000 0.00000 0.00000 ] defaultmatrix matrix concatmatrix setmatrix 1.00000 w 2 J 0 j 10.0000 M [ ] 0.00000 d .800000 .800000 .800000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG q 0 0 600 600 rc 1.00000 1.00000 1.00000 RG 0.00000 0.00000 600.000 600.000 rf << /PatternType 2 /Shading << /ShadingType 2 /ColorSpace /DeviceRGB /Coords [0.0 10.0 600.0 10.0] /Function << /FunctionType 2 /Domain [0 1] /Range [0 1 0 1 0 1] /C0 [0.0 0.0 1.0] /C1 [1.0 1.0 1.0] /N 1 >> /Extend [true true] >> >> matrix makepattern setpattern 0.00000 10.0000 600.000 30.0000 rf << /PatternType 2 /Shading << /ShadingType 2 /ColorSpace /DeviceRGB /Coords [0.0 10.0 600.0 10.0] /Function << /FunctionType 2 /Domain [0 1] /Range [0 1 0 1 0 1] /C0 [0.0 0.0 0.0] /C1 [0.0 0.0 1.0] /N 1 >> /Extend [true true] >> >> matrix makepattern setpattern 10.0000 30.0000 moveto q 1 -1 scale /Helvetica-Bold findfont 18.0 scalefont setfont (Testing org.freehep.graphicsio.ps.PSGraphics2D) show Q 0.00000 0.00000 0.00000 RG 37.5000 112.500 150.000 150.000 rf 1.00000 1.00000 1.00000 RG 0 360 37.5000 112.500 150.000 150.000 FOVL 0.00000 0.00000 0.00000 RG 59.4670 134.467 106.066 106.066 rf 1.00000 1.00000 1.00000 RG 0 360 59.4670 134.467 106.066 106.066 FOVL 0.00000 0.00000 0.00000 RG 75.0000 150.000 75.0000 75.0000 rf 1.00000 1.00000 1.00000 RG 0 360 75.0000 150.000 75.0000 75.0000 FOVL 0.00000 0.00000 0.00000 RG 85.9835 160.983 53.0330 53.0330 rf 1.00000 1.00000 1.00000 RG 0 360 85.9835 160.983 53.0330 53.0330 FOVL 0.00000 0.00000 0.00000 RG 93.7500 168.750 37.5000 37.5000 rf 1.00000 1.00000 1.00000 RG 0 360 93.7500 168.750 37.5000 37.5000 FOVL 0.00000 0.00000 0.00000 RG 99.2417 174.242 26.5165 26.5165 rf 1.00000 1.00000 1.00000 RG 0 360 99.2417 174.242 26.5165 26.5165 FOVL 0.00000 0.00000 0.00000 RG 103.125 178.125 18.7500 18.7500 rf 1.00000 1.00000 1.00000 RG 0 360 103.125 178.125 18.7500 18.7500 FOVL 0.00000 0.00000 0.00000 RG 105.871 180.871 13.2583 13.2583 rf 1.00000 1.00000 1.00000 RG 0 360 105.871 180.871 13.2583 13.2583 FOVL 0.00000 0.00000 0.00000 RG 107.812 182.812 9.37500 9.37500 rf 1.00000 1.00000 1.00000 RG 0 360 107.812 182.812 9.37500 9.37500 FOVL 0.00000 0.00000 0.00000 RG 109.185 184.185 6.62913 6.62913 rf 1.00000 1.00000 1.00000 RG 0 360 109.185 184.185 6.62913 6.62913 FOVL 0.00000 0.00000 0.00000 RG 110.156 185.156 4.68750 4.68750 rf 1.00000 1.00000 1.00000 RG 0 360 110.156 185.156 4.68750 4.68750 FOVL 0.00000 0.00000 0.00000 RG 110.843 185.843 3.31456 3.31456 rf 1.00000 1.00000 1.00000 RG 0 360 110.843 185.843 3.31456 3.31456 FOVL 0.00000 0.00000 0.00000 RG 111.328 186.328 2.34375 2.34375 rf 1.00000 1.00000 1.00000 RG 0 360 111.328 186.328 2.34375 2.34375 FOVL 0.00000 0.00000 0.00000 RG 111.671 186.671 1.65728 1.65728 rf 1.00000 1.00000 1.00000 RG 0 360 111.671 186.671 1.65728 1.65728 FOVL 0.00000 0.00000 0.00000 RG 111.914 186.914 1.17187 1.17187 rf 1.00000 1.00000 1.00000 RG 0 360 111.914 186.914 1.17187 1.17187 FOVL 0.00000 0.00000 0.00000 RG 225.000 122.500 moveto q 1 -1 scale /Times-Roman findfont 11.0 scalefont setfont (The ) show Q 244.852 122.500 moveto q 1 -1 scale /Times-Italic findfont 11.0 scalefont setfont (drawString) show Q 294.362 122.500 moveto q 1 -1 scale /Times-Roman findfont 11.0 scalefont setfont ( methods in ) show Q 348.444 122.500 moveto q 1 -1 scale /Times-Italic findfont 11.0 scalefont setfont (VectorGraphics) show Q 418.708 122.500 moveto q 1 -1 scale /Times-Roman findfont 11.0 scalefont setfont ( support) show Q 225.000 136.500 moveto q 1 -1 scale /Times-Roman findfont 11.0 scalefont setfont (output of strings using a subset of the ) show Q 392.433 136.500 moveto q 1 -1 scale /Times-Bold findfont 11.0 scalefont setfont (HTML language) show Q 470.969 136.500 moveto q 1 -1 scale /Times-Roman findfont 11.0 scalefont setfont (.) show Q 1.00000 0.00000 0.00000 RG 300.000 187.500 12.0000 vline 300.000 202.500 10.0000 vline 315.000 187.500 12.0000 hline 315.000 202.500 10.0000 hline 330.000 187.500 12.0000 plus 330.000 202.500 10.0000 plus 345.000 187.500 12.0000 cross 345.000 202.500 10.0000 cross 360.000 187.500 12.0000 star 360.000 202.500 10.0000 star 375.000 187.500 12.0000 dot 375.000 202.500 10.0000 fdot 390.000 187.500 12.0000 box 390.000 202.500 10.0000 fbox 405.000 187.500 12.0000 triup 405.000 202.500 10.0000 ftriup 420.000 187.500 12.0000 tridn 420.000 202.500 10.0000 ftridn 435.000 187.500 12.0000 diamond 435.000 202.500 10.0000 fdiamond << /PatternType 1 /PaintType 1 /TilingType 1 /BBox [0 0 200 200] /XStep 200.0 /YStep 200.0 /PaintProc { begin /DeviceRGB setcolorspace 0 0 translate 200 200 scale << /ImageType 1 /Width 200 /Height 200 /BitsPerComponent 8 /Decode [0 1 0 1 0 1] /ImageMatrix [200 0 0 200 0 0] /DataSource ( Z Z Z Z Z Z Z Z Z ZZ ZZ ZZ ZZ ZZ ZZ ZZ Z) >> image end } bind >> matrix makepattern setpattern 0.00000 300.000 300.000 300.000 rf 0.00000 0.00000 0.00000 RG 5.31738 450.000 moveto q 1 -1 scale /ZapfDingbats findfont 60.0 scalefont setfont (I) show /Impact-Bold findfont 60.0 scalefont setfont (Impact) show /ZapfDingbats findfont 60.0 scalefont setfont (I) show Q q 300.000 300.000 translate 8.00000 w 0 J 2 j newpath 0.00000 0.00000 m 25.0000 50.0000 l -25.0000 50.0000 l 25.0000 -50.0000 l -25.0000 -50.0000 l h S q 3.00000 w 1 J 1 j [ 10.0000 5.00000 2.00000 5.00000 ] 0.00000 d 36.0000 rotate newpath 0.00000 0.00000 m 25.0000 50.0000 l -25.0000 50.0000 l 25.0000 -50.0000 l -25.0000 -50.0000 l h S Q 1.00000 w [ 1.0 .500000 .500000 1.0 0.0 0.0 ] concat newpath 0.00000 0.00000 m 25.0000 50.0000 l -25.0000 50.0000 l 25.0000 -50.0000 l -25.0000 -50.0000 l h S Q q 450.000 450.000 translate 0 360 -60.0000 -60.0000 120.000 120.000 FOVL 4.00000 w 1 J 1 j 0 360 -84.0000 -84.0000 168.000 168.000 OVL 0.00000 -66.0000 moveto q 1 -1 scale /Times-Bold findfont 16.0 scalefont setfont (O) show Q 45.0000 rotate 0.00000 -66.0000 moveto q 1 -1 scale /Times-Bold findfont 16.0 scalefont setfont (R) show Q 45.0000 rotate 0.00000 -66.0000 moveto q 1 -1 scale /Times-Bold findfont 16.0 scalefont setfont (A) show Q 45.0000 rotate 0.00000 -66.0000 moveto q 1 -1 scale /Times-Bold findfont 16.0 scalefont setfont (E) show Q 45.0000 rotate 0.00000 -66.0000 moveto q 1 -1 scale /Times-Bold findfont 16.0 scalefont setfont (T) show Q 45.0000 rotate 0.00000 -66.0000 moveto q 1 -1 scale /Times-Bold findfont 16.0 scalefont setfont (L) show Q 45.0000 rotate 0.00000 -66.0000 moveto q 1 -1 scale /Times-Bold findfont 16.0 scalefont setfont (A) show Q 45.0000 rotate 0.00000 -66.0000 moveto q 1 -1 scale /Times-Bold findfont 16.0 scalefont setfont (B) show Q 45.0000 rotate Q Q end end restore showpage %%Trailer %%EOF src/test/resources/ps/TestTransparency.ps.gz0000644000175000017500000033564710343577250020624 0ustar user01user01‹¬.ÜAorg\freehep\graphicsio\ps\test\TestTransparency.ref.psìc!]È™6[Ìþv6A›Æ¬e ïìYIqh£bát–e.o,+¶i仨;•PÝUÍŠƒmb-ÿ¼¹£/ûqðŸíÒ©Õç‡hu·õöblfl3€(ÏùšP<à7 `ˆå* ÓÈü¬-Jk¹Á€Û—ü'"’õ µp:ŒöfòA)‘Ï|— ŽÏså<Žþ4<É„c³Ïð¿|F}VÛ$<¿aµ K²Lfz$À'€[–’LÀøþþ–EÓn„!|¸ã0~j!Ä‚ç¡v ¨uŠ:î6„B2Ý ÆíÜ×{õ¿Oýní—ä"LË(¬Cöw þ]F©þh¡Ï 𓨅à‡ya™F™Æ¼¬åÿ‡[d™ýƒÒ“Áh¹%¤D ñ*.™™g`ÐðRôé©óàæØ.+{Ìvè#Ívãó«²<iX¼€I%ŽÂoQOÅÓÌœWÈ‘múl¬–‰¿Ã¿Ù§ßàOè(õ6© #0U19%Ýr”0·Æ¢žiØ‚áRåUGYÉ¢$‹N³Dˆ3ŸžæBÉRé´C|ÄŒfh6dS(*È 4ÓEƒÿyÊΞ¼wyñöú-²F›L¦ñšúfÅÖŒŒÀæ"šÍKR±×ë}ƒz%ÈG‘‰§ÄgùÔ¤)z¿{:x]ÛFm%°9°ó(¢¹î‘ÌC­HÌr.pZ„QQo7¨²ˆa’§a£i M«å¶©õdƒôE'} éQ¡-jÒiƒÚNÿ"F%xÏ€õXÄU‡òï >BÉW`5cŠ$+0ªxc¢(x¾”l&J†Íð0Äbž#é~ä ®ˆÉ…¸ò ÔQ!©‚O&`aQ®3ÈÙ”ÁéóDÂo"ßnŠ€ÇêÖt,=ûÀQ[¤xNoÓm½!Ã8Ƹ½ÝX(èwk9×Ã;L ÝBÛÓº4¢\Ë¥ªã0›0$Ñ)š QZ dÃ\S•‡˜Q5 xJH`Âò1Z¡Æ ÛÃ’ÇP—V³9rIdˆ¼³ÿóë öôB`”(òÿb¯ˆï·` Îx^¶d㓱–’ÍÙñÉ€™'Ö¼¢!Ƽi™±)oŒ8G(`IW &°2¥@¡T’Äø¬Ø%¹s_:÷¾¾W\¯EÁŒ•ð2 }!£‚VÖ©û¬ÑØ+JqìiUÀýwì%¨Ó¯Ô½²Å+ÄÇgÄÆAè"wŠÆnÖeÎýQ:3:P)€³:TzËÛÍln'î-­@LK¢šß"¥¥j«·M¥¦.õ=1HÚ\äÑ#‹eX ï h®Úè3ÐNƒ@ùƒÒY¥µP1.àƒ…u‹räœÁÿ-ð.Uá`Ìi‚ãa.Ý6¾B¹¿“qÓ? 0\6ÀÁ4팬‘3™º«Ñ=ý» µ”ù×é°eß\o6û—‹Nºæöõv.ܬzºÓ¥$h¡V³Ú}t)w¢DÃp!²•¤|\EÀ¬”¸¢S™ž_MºTÄRP©jÛ¸ÑIœÐ½Û¢^ýÛÍIߪ•˲ÓŒó·))™l£šµ·ÖEÿÑ5›~j²ë9®Ã–PÑl«ŽË+æ|‰.Q«˜ mPB8ló™õ{cúg»i&ï*%œÍ/ޤSàë5äÒcOW}¶î³Õ€­BC^° ‘ÉYÌ®˜ââ°¸”ñ‘q5‘@ŵPu›Âª(uf4Vjô¡•6îtCü݈”í†Æ·XP4xlwÈŠš2Õ«÷—ºg«![Y¯×£«”­inCÕUKÜÑ[ÍŸ6OÃ1“ûÄL¶Å;Å`‰Ó)æì>1ˆ°±t°T~¶ÅÖ  £ÛqpÞÿzA†øõWËQjËÜö¤bêÿº P˃-|x;A3ã߇šYõÅãÛ†5-˯çìì\[OégZZÚ§;´ß²¦iHÑÕÚNà\„áú$c©»ÕbR:òpÓz§nîÀÄ=A¹[цš Ÿ6-)­Ælü0…IW_g­ìôDom)ù@íZ:ì©§S%ï¡'èù—(×tWoÑ"]oQc „ -Ò,®p·?i÷ ûaú†`/Z£iü>õÑ•63{SÂéB©}êùrÅXÛdô.…h†®2»ÚºûÓÂÆ6y­ÉýbwH¶†x Ó-gjt&Éݼ{¦V6tÆiЈ[oØr§¯5£Ú¯µaþ=õkf+5PÍ!{yb7ã%\ÔI¶¢ä9±ÛŒÔn¨~ CÆžI#ˆ ÂϺÓvåÂÇz3‡Ö ¨ ¸_ìHˆx"Óðô{¿Ô£DÓïM>mЃ¿ ¾v«?xÞo3 ;ûs˜6Y8é”ve’É"*õ‹{Vá–¾ÌÃׯìc2:‡t<åcª\É2ž—n¢æ V½• í+ž2‘ &zz7ßSo2±Î›²~©Ã¬~·êõRYÒ+⪤<3Òx ªikdpÈôú²ƒ ÕÛ†7b]«„û…ØÑTëT, ˆ  ºÐÍãGöJÕoÂé ©y?­“¢gÍkZlöÎÎOu\µyoÍêÙzg àgÔªÙæðC€H¡ŽQöWê>¼¿ÅXа»×­¶ÿã¾Ó¶½sjbSôË4à¶jn#ý æÃΣ ‹j:vh%‹¡ µ¥4„Ž> ÙÆ±®q‚EÁÔ‹œ\d‚“p«È[@:l@Œ ]¢½ƒdl/À c0 I}&—Lâ`€v©ÛuófÕ‰ „Æ^¶>"RƒÛ±A>8O§’ݤrI¡O†Ô-xø‡pÏKGÁk:cfÑ-cŸ _n—Èg%äT@ʡik@yï7ÅÈœ$Á-e¥v}ÊB·v¶mGŒ kžŽ1e³(™ãàÀ¨fÃFÁ§E¹ŽÝ`G o9Õ°iÚ/_âÚð®Á›òµe§[®ñ(T_?¼kyÐŽ3ÃaïxFDCx°ƒômá Çce #Ê¯Æ¬êƒæýgíGØŸ° ^šTÐDÁ36 åû\ˆ›”aÆ‘B¹¬Ò ¬è PâÆ‰B|çrYtá !tX`þ>ëD:†Ñ£N¡Ç>Ço  =NEö« ÷=Ÿ?²Žñ>N¨ƒnJø8!1›ƒßœE³ÛT£¶2PSjžª¨:³yCñs¬Ùäê4쥾§Ì <í‘<<2«ìÛ‚ƒ¶À¦r]8Õ«W$ºî:G«÷æÎˆü¹Â”fu¡\õç~¡Žœꥢdº¬À…&9Á=Á‚Q·›Í~«…˜ÂGyÜJ{Zi8^ ö?U>øgJb¶â±ó«÷XñNþVçÏÍTª#^øõ“…ÀðDø'„žôé: ë®#ºÒuL×#èx{L×çtåtõéÒUЕ&Éߘ)ÏH‡¶T@ÞaÑ1Y`d,Ð WƶßÙù—/uÿ¼×q6ç¦Cæ½%WCWuÚûž'‰E8dÞ)eÓC\ÙÂ{›Q !¯¬Â¼6x‚ûüœy×sÑàqsŽÔ8Ê„ÞO<Ëj€Ï¼ žø!×ÏóÞUƒAбZ†`ÞGÌL™÷>‰`E£´äàõ˨fÀÁæÒâsèøU4K¬z~Í«ºýQuÛá}¿œG5t}bž }¿,„TKÌ[ø  w|âƒO|מ>¨6s|â2u¼ÐáÊ Ç'>èõGƒ(Öx½Ê¦O|P-r|âƒOn\Ÿøà“Øñ‰>IŸøà“Ôñ‰>Y¹>ñÁ'ÒñI>ÉŸ`‰ÜñI–(Ð'i€yK”ÜQ!;TŽ‚#<ñ j–`‡ÀqXv|‡Ã êÒÏÇ0ƒÒyà9p%–ÆsBÚ’ƒšI8´±B %“µ%Â#-…ˆ^½bfÖ™#2g’Ù)†*WûG:StNAËðÐ|ÍEÊìÁƒm°i‚®Ã2@ŸºÕ0p›Hèhmlÿ¹’¥À#‚-.'º‰o8œ¸†Ca:‹éP },œÝú1Êqx…u‹:#¢À¢+5¯iÝTóÚÊ ùl&òF ’Ò`Ànönˆ#¼ m†ÊtW†MTÇSѲ4TXšBaÍmÔ§6<­^ð44àC2Íyàâ}L¹,*b—0"Ë*wÁ¦ ây-„irxá]5h|Œ£h!Ò3l‚( ·Ì R<œÓRÌ7Ñ×ä†MàӌÒ]ÝÁPèæ¼[àsm‰(ºŸkK¸`Ó¤-aš^à™Š ‚Á÷åR¶YQÓ3 LïÌ”Y·˜³¶Øa“1k3mÖv/­Y›Ü°É5kÆYÝöû2fQ<`°l®¿ uG’ª$74宿4ÁÁòÊø×Öë©Gxö=Œ¦S×K}Lf«¨(aÐEÜÉ}œƒ“¬\cyìàé Š5?ØtL•hˆgË>è9ýí.½FɲÑBM๢ æåœ»|ðX;}¼ÁswQ%ú `ƒæî$J«ÂI’ã:c¸˜ 9/0=7j&¬›N¶“¦mìgÀㆼ4ÄóòÀ¾nÓY ¿ä½n¦ZÞÈð .ñ¹“~&P4–3”ÌS'AŸ[¸;j†XÑ÷yD»ËCN‘â&Ρ¯°gyC÷Ñ!U9¬¯ò–¦#ª$œTàÐVßÕr0Lj™ÎòªámjÝ¡.ËåJ|®ÜÄ• †Bü#ð8À¢‡4fÇ#P5EÑf4ÆÀ„5tÂ0Ó¹ ýæ©üf”cî2Mxq½É Œ‹UM¦“—+Ë —A”±À÷ NÕlàI—Q¯mi2¨;ô†¹å´s´bíY†ÅÇ´¦iØŒ ‡×H‡F‹ëtóF¤Õ4¶Eä>i’ÓÞÀ]iqpBiq@iñ {²þ2!”PÇ|£¾(G7âfÌ9ŽnèTýSú}„‡ˆôcûC ê…0mböºä«´<8ÔiYíf|qÙ ^8‡´sSVîd‹µÜ‡X7aIUBŠø­åòÒÔac\`‰Ì©HOúôÕF¹tJÏZX½FràJ™šZ).˜ Êeê j°/Ëy“ShdoU¤á n1èÕ„›BÕ4ê¦ÐîóRËaÝ‚:ì3ïŸ<›š-¥zߨެœá`îô¬r&†²ã„ÊØ´:žªÝçz?Ò=¹±‹ËL¥‘Žæ‘³3ÛWtœy@Ë|’7mÊ;ü*ò:ð>éÜb•Ð;»Î&Ð']w蚯\ÏâzfB…ºªå͘v¢Æ´5+í?É*óÓ¢=:¡+W Ú–:"vG¡ÑîÔÑT×þôG9i¨ÙÌ @û*%ÓŸ#‡áê+Z”¨û§ö[oAi¥^€š¯±§/1ù¤ê+Š­ËF¦Pï/–‰øÔz…HÝ­Rô`«.z_W}:YÔ[°Ä¢™ÃØ^,Ü­Ù®8j¶.hºwüFÅf³ö‹d4ZÝè˜GÅVÇÛ—ààŒC‡J=#éà^RõªÈ%~ïÇÑçJèºyÑÛ<êòuóig§a”Q®£DdÂÓ»Íâ˜DÑÜoކ)‘~ºÓ [¨å9äûtþL%ýÒQØe§Õ›àÊUäwš Æ×vÐD÷[¡4}2´ûÄEKp›Å—„Å)ÔyrÖeݲçhQØ*šîËÆ‰#ôÏ$ŠáyНâvšD5?È.Dò¥ÆQÄÿŠ…jñŽ™ð-”vøeÚö‘§?žþĽý^Ê·h4y¯ÑUã?tt9”_2ºZ‚¿xtáÑ0¼ÿŠ*:b`‡¤>ZÏG+°8¡×숊ïÐ öi£øÜ2}óÆÞ×°ó[ýªÐžKS𺤻S¼2ë×Ñá|? o}%Cì«…ãô?Y£ËõÝšì ×F̵}}^úpýæ~Éû—‰¿Ç ‚/ìÿ>< ¨…Ñcr§N¦¼OþÄÈšXù“óÖm…ÉÝQÐN¼_G‡»±Â¿’%öVãAñ@UhÙÇsüš1þ( îUµ}¤ ÚßîóB…¶é÷Ž•b…gVŸ$ÂÏgçþ2žÓ¤9šß Z÷g2«Ø=¨?­$¬ìzaTd1_OÓ;žáQ0˜&q“éÓ ‡G°Ìå7³ ¨¥é'j±8ê—7ñm“m¯)EÙdÜ O¶9éÞdíî–.öÇÏ[zg éGÇt1”Kjbxj¥ýçÿËÞu6'ŽtëïTí Û˜D“Œ&猅’Ø™y]ó߯º[‘äÙ»s·î[µlÔœnó¨û¨ãsvèÆ!L’_²0óÜ–Ÿ#yŸ,¿…  |1g@Œ/@ŒÏ@ŒS_AŒï@Œÿø bœy1~|1þíÄ8ÄX±tbb¬ß^@L<‚˜x1ñbâKˆ‰G_BL<‚˜x1ñbâbâÄÄ5Ä„ âdRv"pOÿâ÷Ã7\ˆð,sáBÄLÿº_r!WË.äÄ¢ ¹ ñ¿.ä¶ ¹‚˜x1ñâ]È¥ 4Ì·<ˆçŽ&’Q=«Ù#yêZ~ÿHþǵ<óHþx-ÿí¡þ¢?PÉ#pW~~)ÛÀgs£ÑxÕò³HôšÖ´$ÿãº|æ‘>Çkùo[·ï/¶î¶u«oˆZ÷×€Á6}Wžº–ß?’¿ µÚ{ò×€ýJ[ÕÈÀÈÏ/åU€©ÚêìÛ¿-õ7´Ôûï1¨àUK½+]ñðGï^K½+ÿ¿k©ùG¿®xÿ¶ÔßÒR-Ü‚ѧÇõhN¿"óZ wëåî­cz°'öç!ká²oƒÍ¼sõY]‘¼¥çª¥nçŸxnRËÍv;‰Ú^üP.ÎìwõÅ5ã-䤵ëÜåøë=<‚¢ ¨¼tLXÁÒü™Eòˆ|~O®s(Œ6ö@Qš¥‘K‚ èNrºòg ¥’z# ƒ5"M¥ý7ÀrÇœ`­¸]jŽ£ï“èÙ v rãHSˆƒb“0ÏœD’Ò•<×6 ùñÄ$yY@Ü âÕ/ÅiŸOt¸i„\³üå)X´ED¡î‰ˆeûDž3i¿ˆ|èè­> Õ¼yæQóL {w®_?ÓåúOq -O Cp-ÀÄÏ Lá ²~À³“êñŒíåqXLžvI!”—ÉÐüƒ`ªPÖµ‘($#ÛÌ3€I¤ PÏhþ-X8§oª ‚µ  M[‚ôÚ¨í™MP ÁMEq©)‘áD[ñÔŠ"4)Ÿàç?­>à+‡‡ìHvÍœ08¡‡Vfo©ŽäµÊ‹¤òjʼ& ˆŽZ“¥ÏœÈä ÚÕœþsMA[$Íe ‚P§Ê^Cw•úy&âž• ²ì_QÒ?þäf´óq.` >þTqËÜ´áð;¬T¡|#´—+ôUöýŠòÀÓYÕ9š–¼é…Þ“<µ¢U®_ëTUUÛ—+¸ L×| ½…š)ûTYì‘r¤ôIeJƒ\‹xóôwnô‚ì=°ºÃm½0r'!ÍBy.úýG k(eX%Ε²˜¡’Ì)~Ä(ƒœ´Äs w.æñ6PWÎÅi×)Ú'û•?TêKŸw”ôº0‰ûù¦‰øE2S¥W ÖÞUjv¡¤¸E ¡—xú¯oöŠéî/©>¨ .þ:¢~m¥Qi”eöàd RHx+óßå3#nmæIj =òŽÇ‚¥¸8 ÿŽdÁÁ.æ·)îÉïàU/†ÎzðUÿSl,"¡øv °îB—¯PuåPÉU9°Ç^g1õÎhŠt§óñ0´ +`¦êOŠ¥HyAUSòùÔ_]düùùlSÛ-öK?¯ú£JœSQhîœÐ×ê|‡ =Ÿ³†žHÛ)‘hä+/ íR·|G@Ȏ׼äÄî•ÑR€—É è>Z ›.a»¤Dµ“‰T‚H"xióž Ïÿ žß‡§âéQâÿoF°µú@ìi®h4ñ!Rg—8G¿„í^¦¿%6‰ñ¿†gðŸÄ%£õþ—b[ý“fg${ÎÐc8!'2‹ÆÒ ²¦0d ÈÇó!©›¢.å7½yTà€!µÔ£¿êš *Eýî×1BIRlC5rOJ={a޶»ª¡ãƒ·Q Lq14b4ÜôŽ1ƒ>%´þ@sœ~Á2{Í&NÐÅPñŽ¢Ì°ëy³³ éï@ÇXV©(àP*èmCí¤áâÙ¡8# 'Š<‡ÒˆÐ-÷Qj’ªlú[ßK³ýç‹(š(ÕÀFyUÉyd!²ZZ2nw”Pd-PMûR $vC0¾‡^×êÞÈ«äTóÂÓ¯_?Aá^¹n‘†þüTM‡ 'ëQ7¥AÊQ©n>4ÒÖ¾¥ïäÔ¢xElÏúBm³XßÖ¸ô2ì| ¦òµóAh´»Û}O‚Ÿ?„Ÿgö;ü)|FeÀ¡/úø@3B{å 0Ôc§òÆà¯:ˆhE“º$EÅËÚU°Ô äXÒ@BÃ4’—&§¤öýŽ<Ã Š…ÐâÐ\ºTžEžJ‰+.<ªk ¸0y‘.¯’ÔRêÙ@8þÐ@å'óÂýWÊ$º8G¨\ËLHw0CraÆO½¶*âßñï_Š›wH\mþ}ñïŠøýÒo„‘»|ô M¤~¾Y541ζ‚ÚN—ÏúòA?|ʵ3·z\‰_Á\h/ÔÓ£jt§‘^IäÝi…t…\¶n´À-ö 4:È©¢*êvð%žëòß×T’‹åA¸G h z R'E}2á–,èf]ËþC¶Ê™ï+‹\{-Dzì åÉ_‰SüodÔxP¸µÕ-€ fï`È9²k’§ï¯ «ú’÷íU ¡·¬T-µ‹ž0êûåÒ L ©gÈàü%XX×&aL/)MSàõê#“:º{—wV¯¦Pµó– ë©w,» Q×.¦ÈA=E¯¤,jË}GqaÄÿ„K%ù£'"ý¨< H=j¬}éH=z·ZÜ=¿,·Í¯w‚4‡âeK½YõvîÙA*ýs;q>iÖ¡Ï&‰žCŸIHkV})§mÈIS \"B9…¯è¯ÎØH@rÀ·~ãO A_`4ZøêµjMî'˜h+ÝGc¯Û™²72yÔ™BQÅ”ÔRð ÿ¤Û=Ò¹ñU¾‡Ê?Ê­µâ‘ä s®ÄE5~ͨì¯å~hÚ×eh üZþ†™Y@¼"mGE«CúÏ=œÚ’Ãý\Œ˜Å~*ª ^¯f ­T¨FÅÒ[Mvø¨³+/kèë7¢ ÑÄêFå@œ¥%[,o‡yM¸³„Õ’‘ „®Èq䟂s“s‰A4j¤DÊD°WsÿCøÍ¥J q0nð(Ñ·ÿÐ==ø/Æùûb€sáfbÔö?tJTka8¤ Ù+¨©Žˆ+`®"LðÀµð9 S‹£à\¾…¦‹– :¹«5:¨ þÝÀ!7Ðoï¥Ã p#4®:~ƒ*”TŒðÊðé‹ ˆ Ó—c¹èù:W}¼ü t½ÔDÖ¥þÍ.ÛzBGz& ˆ¥¤+ø½øß½ÝÔ1@ÅÞº <P'G!ý„>€¹nB/¦K0I¿Ç"ÊbàT8Rö W]Ý ê5 뉅/ÀúbfÁÆæFoa@jAÃ…Ö¡X€ÿÇR‘â8{Ê€‰¿Á÷9’'›Ì™¥äN ôëN7³ÆÄR…4HU‘Y›·ÉÂúþ‡ŸÝŽNÅד鴡lnÙ1¤cùA#è|™:môS¯j>O%[º»*Íú>²äñ5 /#–›Ç*Z÷½¦6²¼é2…ôiXMúÞß3™þ›}Vð¯s/‡g¸©ô™¸Ý¹rzª:È'÷<®’ï,æ • µNì?âCð#ˆ78¾ÔÊŽu½r,›ÙÔÞz±ÖiÔYóÔd?8Û8/˜d™j5`È÷è·XÚµÊ)öÍ´+%/5jcO–ªMÿ¦É×> ›"†íƯ­:»×yªtê¹í"ͶËU ÌÞ3IZž˜ÔÝ'W;Ìx›QÿpœöÕâÝŠ+½lXp’Ûb½rÕÀ Îa n⑸g“ÖíÕr¨â¶o7‡Õ‹çèÌv6¼Ñ©¸£m¿Õ±ë'‚UöHqÞUuØm&igdË$\¦ð.\w¦Ái·êÛŸýTê8™g ‰W]1mÀ*Fªþœ âÛ¿6›¦ä’¢¬Žà]Gñ§Wk´>RTµÜÀø©»[ùxê™ä³40“mÿÔ7"©ò!~¦J3Π›Y–Ÿí3órðÆÜ¾³wG"ØG-ÚÞî‚Aø¼%­Žh(Ê.Âç:6â±Ñ4ó,¦*U>ÏF“lÿÐ笶IeXÓ­ÇySd5/°±^¬²â-/õçÚôDíwíT¯»’MÖà·a9csìç Wqž{ ÜŠáÓÈÌN>[Ù ÙÇxë ±BÞ¡Û>ûüÔ‹ƒŽ£‡EÔ’0Å œÿQÇÌsÊ™ËΖ«ý²}p Û†-ôqÙeÛÖÚË4ZÛ£ìÌ\ײַ8ÁF¶íQc¤ËLû†øË“™}Ÿ³ +ÕÁêU¬I9X"a:­Ÿ†öLÎ^›‰ýÌaqøÊ›»©[«Cr6ª†+G2Pµ±öõi`dvÅÕûmÉéfáÔò­­#n‰±'ßÉÙmÍþÆ‘i¤^Ó›þ+±u ú™o‰3³,1™ò/íÚ©)VéÍ9!–|ç-!TVWibN£yu[ñ˜±0ÄÆ v’ëd-…%¶„m®A*¾íqÏïï|z›vÆßËým­˜Ü³Qãá4`Éâ‹q‹…Ö\`:*Z‚mƒÆŠöYË™I®·ÎTÏ»L9Æ1c4[㽬oÜñc¶Ú~öm¹*»·™_Ïîæ3qèàïìó.Ì0ï­xœ(dªÆêÛ–Lz=º¡;úñºÍñœŽ(_ÅËO]d«û:~ÎŽÕ¬'æ/¯Ã¶ÐaC‚PßPÑD’´'”©ï!ÞJô _>‡†þŒÛ¶7ºAlîÞåƒ|5`?–lÕÉ NlS®¹e^Ž»\Ú‚¦áy¿”Û‡«p.Ÿ"cg#õâä»ÇÖÄQ8`¾&›9:ï¹µ¦<ºîü)`^° åðnž™Ó®i c¼JÞâê÷ëë•‘±¯úÞÈ©â52Ñã¾ü±{9·K/Û¾§Ù mJÕwlcHu‹X3‘Ýq:—Ãæ Çlå´<5È;L[«YÛ¿m#ÑIfCeã=˨Ú™=¦by^7 /–×; ¬äLMŸ{‚Ï—ÓúûSwñÂáü¢¹íõ_ÁÐGÖpJføÕ¤ý±îÅÂd×¹c>"ËQ*ÓuŽ©â[ Wn¢Mg¼¦ÅrÍYuÉcçµ1[flÕ%Qaé÷}Ix=ÎvÇܳ¡‡¥2–$*ݰa` Øn°+É¢¹—òíMϹÍ.PÎÎiÓ‚ä3†®%âb[]kt²›kĤñ ÃÉ8‹U+¡ Õí6¸ÃëT=·fAG¤é(Ø»$fÚŽ&Tv›gù?ô–ÃìÈׯÆ×µÇÜzö§ÝŽ.0ÙyΛìì¶$ôeêŒûuá^z‰ÑVp Ôq¿J•YoÒò”á¼&ç¼×*o÷Å]eѬ³)¢ÙšÛÌÒôa¦œƒŒWg ”°à~|bçïæÀšÏ58ïÆ3´ÛÖ1in­²Ä¶ÔíN7Áüÿ÷^ÝÊ:Ѻç=cô‡ ˆ f¢( T  1 (9éíùìíúïÔ{ŸÑ£÷ž:}·Öz õVÕ|æï±¦³LñÉ ˆÝgËË@|øˆ;<ØE5¬âg\‚ta²I ³ãÖa·x%“÷wöù¶ô{û{^ƒÂ«¸Ž»‘›õìNF<ÚDŽ6Ë÷a¥yº+ïH{/iŽ=‡ßJáÖŌڢµ5nõv¬ô^È_`5¹èõkçõ3ÞUM ?x!33j”ƒ—‹Ù;âKl`KJ⟠Ü)ð&ht|—yØM%yA‹¼pú1£"›J}ãèÖÙÏǧ)è÷’Eàž_qþ(°ã„µ%ŸàÖ%9Œwù)«ùü ââ‚ÖwÔså!uüQ›ì>Ï"í w£ ²Ëâv|£·6­›¥üvUˆ•¼Tâ`Î…X~6NzŸâeÖåo@æ'ó6,†ó‡„|›+ Zy¥AUÄÝ Nðû²ŽOYF0¹eò`=ì¹Rw‰J¡Ñ)lü>WáfèåsS¡ËìId‡Iêú3õ€Ï—ºêv›ý£´ZZÄnâ°Ò¦G«JŒ‡ý|µZ2…¦åy.ÕDÄnñ—¿Prš’oË£^äà ¾õïbëŠU xýzé²ârÊáóÕÃlî­{e,¿Ð Ç ¯Õ*´²òªS!ïâ®Õ¼ìOÙÝWÏ'm5˜}ƒtoEØ´‘mø!@îðJÏžoìMWªî!Îù5®¹ù„¼µË*«kx»¨—WsYö{™!ˆÚ«ÿ˜¾Páü‹,sÚòUSÉþ±æß~À©¾"e’ÛRâÍ醂œýÁ%»dk¦«]–̾ÈÎüh &h©!åÕÒÀâÙΫ¿ *íFÎ|×ñµV¡loâ.Õû@ÀWt¹ý0^ë\õóô<‹Ì¹=A'Ã¥ßÐÙššãO¼c\¡å²øªBëcê¾·-9lEQ[a&ý,ãØ6¨Ç%(/ËpFæ€+^z ‡šM•Kg¶3©œêb/Öo1,JJXjùÔüÀyô )ê­w:ئÌÛ'_f»ƒvÝ„hgáÑeJp‚¡Æj“S;Yáy8½Ëðª?Ýr!ç[ÛöÌ2[Ï pÑy7ËâCzÄØ¼»ë ‹uý*NçŸe®¶‡÷¡º€Îª•#ßÃñèˆßP9[çroÞÁÁ-Ò}XâÔ_pÕG}õ}xÑ$ÌØcxÏz-K…yV?^7è{Ý+ò­M-bX§l±;Œæ|š—%°m©ížÔ½‚ëw®Ó¼à|îoxFB:£Šû_OÙÅû¸›ÃʾøB¥R+U‡Éo˜½k—¯M[”yÙˆáõOåS¬^¼(qå:¼±EKéeá*º _N¶ÍX+o n¿ÔEÊ2˫֤‰Ðd¸\K‘‰—>i3§ÂkœîK4q]V-õ{Ë~X†^!Šæƒ:߆[Å9Ë=¼@1f™¸“!›>™Î¯îG9g/gb΢´ù5 ‡@ßÜxxÛ¢Û†›ãM4òy¹™—{³¥{~Gn'*ŽÓí»¶éK~ëW+<øj]⬙ î=k.ÀËQfѬk=ÞèçÎäÊk„'];öÐÈ®ñ´Û›´{px*Ýr-¿›R#¨Y¦8)g]Þ®6:·eœWnúw¥-)³¨·g½âîÚÏ3ZóºÏ˜zL/¼Ú0g'ûI:šŠTÃBˆé@¨Ô ÙÛ9>·ß†ä„wì½CÌKÈìµýEó>l&[ëP\“lAÙpOЪW3έµýKÖiä–ûðäìói{§>ÞÀ:á¯ïõhÓ˜Ç ê48,¶ò9298lˆåqÆÒ—ÐÊ1ö‚UpàÝHœ[þ6rð¼¶&šÁi3š/9ôœâqÓ§òùÑ”ôg~`· {DµÉß›{²O^‹ÛÙÙ³fó—ßAªtDäÀpZ¶žç.u• º1ЬêixÐBCø|Ûƒ=*a4§·f#:¡Þ6;«Hý5¼—òÁ^ŠÙï^xâçò|ÿ ª[Ÿ|hFëÔúª„í5‚À«?ÔÉþÑï/Tç:¹”·5ë^6ï]Ð2U+O¹]«¸Éz$%AÿiU¾æþazimQ÷ !Ðx^ı¢^ÖnA“×NÏíýÆ]wÒ·uÁæíŠ¼Ý¨lÆÕ›ÞíÑr½ê·ä½MðåÑÓÓ›—.óïð‘‹$xïRB‹árâC©ŠýÚ[ÙÊœThÜSÌgD»'\@ÞEë­Ÿì)·bM2~Fd‡×Ìå½Û.ž;bÝîñÜ»azqW·üÇS0‹=¯é[RþÙÏ:ƒ÷:Wg¥¯-k>.éç€nžg”Ì"¦n~êò×ýr©LW„æ<Ènz3Íš3#r®ÕëG­L;†©–º·_ ý*ÏDlVЧÌðZ%é4‹mAvOº4Ω2q6۵ݗù¤/ÿ—Ý_m ìÎOåTpo öø&àìmàL=¸k´„õÉK ›uüYyí¼N|¥˜ÏÔ‡îi6xÑ×y:R 1øn*oÈj­¦"'4ç§ëû‡d™ô%¿z¾²æ¤OÍ CõG˜~n<>Æ7ç¤_Ñ…¶ø¨ªY¨jÊÊÞ§­&±)§:Ô±›¶µÆföËÙ»MiÍÜ~®*b©»xc¾NÃÔ0̤|¼Š–•õ]Øì#y¸›<ÂÿÑ Á 4XÌ~oR#¸ñaºs ]ÃkøŽžh…®4ÛDbçÕaòvp¶µ…µÙT=®5àÒÝZT{—WÞܬ÷èÝÁB¬)ïž:kìZ­ÍªÙZÂÅSßæöL\f‘mÖ~çˆq9ÍÊ sº0П)(–šŸÂÐîeÔͼ0ä%½b9.H¶¦]{¾¯ž•û„þdéÕsÂ:ÜåU¥ÀeºðÍt/ó.‹ùEfîT–û{E- }ñÖ“5 KW«ç°}<6šÜ7;ùîà²:˜4v­mNå,g~| õœÌŸc±›eI&ôÁw#ÉjZ å)'h]º‹eˆˆÔ•Auk J c}—¬ÙS2¾bK>¯WÞд±´‚c9í4 ÀrþÉŠÙ  Ÿ$KwìàöŽa¥ âıÄåýhFlŽ‘E/÷ptˆ¥jÂÓ$¬õ'Õº~ kóÇ|ì¥GÔzUÐó°HÕ‘S–¿x䝸r#6Æx+W(zc÷ ²ðµÉXͤI²<7Võ_¿É~Uˆõ¹®HûÞ@Ë“ñ42f&Ì/ NïòÚz5›k/¾sAÊÕß­ÃÌ}Žž«Öýñ‹nLòdøuh%ý3ÇrÛ•ÆO¢ˆ'ÓÑËÒQ¤éÀFknÐ-à{– ¯výk;û¢i1ô•}Ì8ÊÓÎï)ÕÞ¹,÷Ôàœ3¿EÚlÝàã6²æ`#6øæî­3mnk~ðäuž}•ºYºT¼´þÝ£¢ÖÚo½q˜åÐfû]µì%»ùt@IÁxpMÏ[@õ.ç5LŒž÷å{ã~®ÍMv¿Þè ¡½,Å1 .˜¯Û9ysнh{ê7çƒjkA¥ô©ÄN,i@“ ÓÍ9µrûÛX~;(ºö|¨<í÷ÒqÓѤ3^ÎÜ$àà ¥¦.aÖèËÉ(ƒÎÛöå|V†i±Ü¯y©ê özÍD¬¶ÀD›?oYw¾²z.¶êÈi®Tn¾^`¥$ÕŸ$q¢Eêxõ XEÄ¿*CÍþöC˜ŸS’S–¸cÀúŽ_·Í'¯OÏÛYòµ_ª•Wð¹»pvÂÇî™Â«î¢=—ï\! ¡´€0°TÓìUˆÐ¨«¿ ªù·Ú ûšYíj³Õ¢â[ÚT)•º\†%³ìª;Ïv>ýµOÞzÑ=¶¯§hôŽU/® ÎõýA/ŸUÜ_4ðž™×䟺ÎdÚ¨ZÃÙbˆŸ„òÎLÏ òþóãì²4 ©ƒ…6, ÚiknÔ)Õðr™nD#$r{¼AN­DÛ-h]1Ùš[ ÒfË2UWÞ—Äy ×NÖ–gÛÞ6òôn·Do2jå ]y™µâ•¹U,ÓîÂ[ç•ó;ŽÀ{qç¾|!Ío ¾=òmÓZO‹…•òÎæ|øþ4âÊ©`³o·}ΠaÌÑ©9LóÍ#–kcy iV\vyO©Ì}úAóÒêvH­à˜2ãã$uÄnÿÙ¨Ê:Á«¬%:^æ§—Z-·F³×è{éßÇ£8ŠT÷©’¼æ ¬òGãÚq2Ð\ÐæŒíëzÚƒçcs¯ìO0b‚J › no¹q\4ŒH¶~ 1,»íåÄeÖ‰åÇz+ì+‡…IïqȳÜ#¹ì˜$c¯†r¡úîùô/Œ)hLN؃4có,4Þèî=[6ˆð4È'%è`¦ ;¢1å²v=[òøÙ…·W¨ìé6€™µ÷žÝÜ34«e¾Ê|üAo<{_Éß®$JÍV7š€oÀè£G ô@Cßõˆòa¯ Ûjví×/·5‡";›˜úùܨu»›þ‡ˆ'®ÛÓê÷n¿Å’~ô|#px¸scÌŽƒÊ)z»ÍØŽñ†ÔºžIöU¡¡»Ÿ…›ƒVMu§8ÀÀFß:Bü/áÿ^ÿZþø?R-Bý窑ÿs«EÆñ–\[eÛ<ñ”m‚eïÍ èÿ³ïh?®4„Hhì^* óËó¹RË8î8ë“ n~›¿qJ¤Vm»{»ßÚ1Žíi¼ÛPà¡Æ´@Khwr»¯Ff¶É{ULûXçL\UÌ©j± v»ôo# !¥N0 E¬¼]Fuÿö²<çÎ]fS…Xwhh…O½vU†]='"‘býî†áÐîš/;qöÈ•ã¹O­¼Z³¬íëD‡/°r²¦û$ Ï´/󶬅ÊÅþÉžÈoÌfÔÔ„%¤Ä´Æw2ÏKb ÷¿àØ+>iiµ—Õûk8Ý£³ñžŠ ‚tTƒ_%úÌf«ß-8ïÕxòÉïÌ<ï¥#æM"¼ØîÃ7N%õU_o4KS¶áøÅìšg‚¯Ê‡œ}v÷!Ä·ßûÕÞ j@9^3׎c÷öúù¤=ô7ú¾¸³µ_&ŸŠ?ú¡…tqkíÚë›;uç¹³á•DZv­¶q¾†á›­îð›=æU·s4«×Íög³ Ùý­õ9­4¥U‡N‡í?Øfëض²¾³ÒöëëP=}}8òÉx\’‡”ÔùøÃ\¼ì"·›9XÚ‹éo¦—Û¯ŸÆüö¬Š‚¥,ôQ_ÜBJ™¬kkáÊëŸÿ,nž4ŠûÂÉ7`i“Ãóã&¤¤XiýÆäÜ¢Ò`sþ…io¦çͬ›daœ$uL¨àÞ†ï½,ÚDï–*=+ÓãµÔ|"³˜fżÚÚàÈ6"5'‹çÕ[jäzœ'HFÔ§óHÙ–¸®»¼4{¥[ßfÕ?ä`í¹p2‡)ìœR&^|zšÏ£uÉ,oêeÀQEw m”Ïû=è[ÔO­–_:¨ƒÅ ¾´1æ8 êfPù[îO‚=ñBÝmQKJu°YܸÒzqòž§R­KmU{ë%ê-0ržŒÜÁ·Q)ÞzýÁPój¹Ç“ª5ÊÓÙ‡žA%oYê+i÷÷oúâSÍkóÑdy…û§!ÕmZVÉCiœÒnf¥­ ·XÙðR4Gîìà¸g.¬ÞÒ ),˜Œ­=ëó¢n^ˆ§û˜8]¾ãÂAiä0ØÐ–•ÑxXC>-]ÀÕ(ãV½f‡nmäÄÉÚ?wzݽ»Ó̼9à¹>ûÛ§ËZ­ÿ^Ì÷Óíyô¤~ oÏZ‹¸ï×·h|;ñ@¬½½‹ø¾UD;u{%=ÔV¡ZPÞf£\øøª –û`Íæ”q­Uò»ÚÜU=C›9Š>‡,!_†Wå´7¾éHÝ^†"6éÚ` s$W/0%ö~ùý»Ä+Mp`â9Ó®}{YcvóßúÓÎ}ÔV‚Ù?NJÞ”2—î!¦ûTpžñð½!Éͺ3œÙÊL"È4{óÚ‹ííÐ@ýÌõ±—Þ03‹{·‚‡ƒ6ÕIÛ;À>†`÷†tŸ  ß‡'ÎÍiRZg;TÈ5J;ÜôNÒ.ÄÝ“~ÉZ|wpøŽz—5ÌÌaøV¯?–R¦iŽíê)=ü6fÓAú”at윎‰çvaŠv73oéaaT€öKœZgu]dS¤´xÈ9ZiÃçvfrJ©úèžfyk=RÍWëB —ÑÓÁËLQ‰C°W[‡t;7aºJ¸ýuT^Bî)ö§µœµàåÍ&.–r+¿öØø¢ø3Úc󬵄¥cAøÙJØ®Ã/a.ÇýU6iè;ÁLrl•'°ÉÁC>ÛöEüyØà[>„Ë²Ü ZF:â·}ÕüÞm[©^Ñ•zöÙOBivËÊ« 1aöx¥µ¥ÔÅjÀ¹’lŠgª;šœ¨©¤Ý6çŠðñgéIzíËõ'·ú#•áïø+éסrT*ò£÷²Æº‹lúï+­K¼k¢@ošak©ÞÉ\™Iù[ ýÕ«ü¾ ¦c\™,ðÆÒ£aø~!ÙE< ‰ ‚[ÙDÓÂÇä[–Zl!Y×uOrRœSf'Ð2“´bv‘†^EHHjÖZ¹QZ£íbM\¯ÝõLYÜ\Ê}ãZCˆGkúrZ•͆äX¹Êç詾ŠRâá\D¥_­|?È lË~«z›4ºc¼yAz¹=j<%[s t,3mçŠÈ+ÕÚ!?@§Íþ·ÍÐÔ½€Ò\hZTÚî¯ Y¬%¦Ú/¶X]æ|• ÜŽ1pëbRvîèSˆgnç\%GUŸë9CaA™%º™/M7w_O)Hº~fïÓëZæ©Ü™c2 ¬ðU¼cóf´‡”yÆž#³uA;ˆ-]¤›ðrÉÍBÑïãÓ6Ùîý¤í?G'oóªøœ0Ô=àSÆPqæ¼z“»GNßhPxõÖEôWä°?yVÖH./.6}Ž ‡Xù*¨«aŸÙÁ+­¿Õ~ _e³—Ižæ…wyž–çt¢ä³å¤€½~¡®`Šîäe_é£vIýÅóý ÍýJÏÎí¬ÇÏÐõ …A¢ƒOâÝPûOx¯-iv=ÅðºQÈŒRN[’½\C4>´ž ë)TËJI—ðQ<·ÓsƼ´Ê5‰f’ËYµ)¿Rf’Ÿj‘…D/ ȶå¢"pxqžæL±+Ì?®ûð‚mqU.¼¦|?CX‡Îwyqõse4‰¯üOMÏ· Å›u\¯GÅ{–w†¥d~ÍN‹kÀ—JÝ7'M'¡#ð<Œ„ç"ñPGAºv„q¼@'¸ÜG”ÏÓ…IP¾p™ªËßOŸ,9ªó£m>Ì›9Û7R|5úé!­)è-;Ri=‡SLÞŲtž­k“eïµ)°|=¶Ü³ó>ö^?ŽäÂEüzçÆþuÀ#¥$‚Ö¯Õý‰Ç·Àçä·ýRóù®ÍÎ*Ίi¼g'käÕ„<°÷DKóèœaѵʬBqzdçPçLfò‚tJ½úåƒÔô¶Ú³_¼gmF—ÍúHPW †Æ ¾t’)¹œC»d¼ô>é>g–ü݉qQ,•ÛgЧ$>{Ǫ[ÎïLåE.tuVèZÜžss¼Ù9SyY¼:eÚf_5kH»Pÿ¼4%[Ε²Ê&‡=©õîè(A{õ~^ÍÞ[©$œe°áIÊõÉ#Ž|ÍK ’ ˜„¦@¿(»…Øó¿ål; ÁÊÅoÎ{Óà gúÚÆ}ì†ÁíëV7†QÙñ5%ÇÖQ«@L¤ÒpD€QéûèÓ¥÷`lÆëʦPŒä¤ç6Zvø%ÚØù£ìÁÛ¬g‹ÃÎì„´ÐAu7±ómF¶_þ62z*Ïrze^·ÂF¤‘Óæ*ïï&ñ %^ÕãØëö®b óðžNÂÏ@ _:GÄe†Wo’C†#¼: ˜Ì¶±—A|ËøxôîÂ?}ƨxÖ=èTJÕðÞ³2Ý{3qº5„šß¤dسÁK&e¯üNÈaDåµgø¤½ó‘Éáæm¨D̶‘uÐR<†PõŒfÀ­Ñ¯6F£×XË©Tâßñ½R8Å]Ú’’ÅÜ;m¡ìÜWړ׿›A?s– ›¯¯jßæá"ØZe¨+‹¯<5.—`W*F°«·ürå£å7ïkRÎê _ã lRŠêxA÷y _Ò>ªSõ¸õ˜cÊ Bµ /%“ù8NŠS†åÕÕuíK‹¯Z¯Vhug‚˜fmÃVÁârÙk‘Ö.›&èû_^IZ{l9]Ùž6îà¼X÷²Ùž©Áì}­””ü¦½OAžò€%åð4†Ò}®S£/ñ£…ÆH‡äÀm]^¯qæôȵ¡¬qlš‰íbÏgМáÙ;âsŽŽ+Xg¬tr˜!enÒDš™u“ü‡Ï†¿y²oÁÂö䮡ŽW­{=vs°À‡—·8˪ÓÛû NñŽL_“¢OÚ¿äyhQC~ö¼B,Áubð·ÒA8øY£~/8 ”Ĩ¯¤Îý:Z¿$h’®†.…Öt|vùOÚŽ Nú›¯g :Êæ1ß<äÝÚ²5“É‹m:Õü¦Æâí ´ž }–ÃåÈ2²¾SÁ„×ú)œH±°,²DÕFuô²ÔÓn”íôýi •é0o¾²ì ´Ã”¡Û¡yIVkÅi4~¹üT?SY_ͪ\ãÓÍܶÃÞƒÆKËiˆûFi(Då…Ð-_{î4² ©ÃÏ`¯„ ü³=ÐÀP»ê¦¸ì ³âUÕˆu:yéŒmUÜé¿bÅΜ²°ÅhO¬PXÂèP÷4çµ´Oü: wînâ½áú*°‰Ú°õú¡ˆr@Ð{K5}i^ÍŸdß’¸Qxºg„v¬Š­‰ÛDlÆ[®uÌôÁ„Á¦U½‡3nnFàfÐ[’ X§y|圪Û÷–¬[Iöç+úy´c1mšòùSÏu¥q«¹îStõÁdÏ –ZsâçIö÷j^*–7 $Ëw¢KÅNmšwqß>ìx‹ ù+žÊ×Áª·L/©-ÓÅ£¸Z,Çõ?t§ú-SÌÄlÒ:Ö<¾¦œrjvh”^ù PÉOfë‚ùbKAN5o´Í4Ÿ÷ø\,´+YLµÒ&6Þ£ f):ŸqA`íëæÁ>¿Ý†jX_ Ó÷=¯äɘlo‡k¶ÉRgnäµø‹ûSUæ>Ñ^í•Ñ r^6©cøz¯[Ó â.•èAH[ïXÐæÝ.Ü@M©e0–¼ñs,­Uk×YQšþ|ŸÅ‰kóÓ‰-c¶Ï?ÌaÝ1ËëL€ÃvûbÔŠL´µ{†ô÷4¢uò’Ê&‘T¸¼°&‰°ŒÆÂ«àE—;µûùÞ¢Ý6Kh6õŒùs™G»øY›$Üó”E³´”"UåvõúúN)Y`×ú£cvæãKñhÃEážÖPaz€¿ ÍZñ§Ž–³ ]‚d»¹=^LuZƒ‹#‰s*†•ì[%ui×ñ•§6m†ƒÈNÐ<–Ðth©rÍáúäa­ú½:}h ñVA®«b‡á–ª—ïPêýUà-5s…*8¯6qŸ?ª‹¯Š­ ß*¢Ú·@†.*|'ÞÇÌ/Ôî(X¹ªx3]dW³èmóúæ¾w.ëœC`粸øÜ hÇ47¾ƒ*Þµ×t™¸ßŠ 7Œ1¸G§·ù¡Ûr'ôëðë Î+9/™Tç:*´…iíècaáæ þx弨]FÝèçfêYOKïSh:ø­€“P”ná,öHæÙ3NÔsé .òVŒ­©›“9V›MSbY¯Ã dnŠk%Ä!Ô†™£miÓB‘׊§VŒzÑ)k»°Ÿæ«Ñ M~¾o˜#ªöœéao–³ál¯:4³V󸘃ó7ä¥Ð¸#~?¾»þúÔš6…ÉÃ!1§@÷".ž=«B)I¨–¼ñ=ù=#ëvòŸƒl7½ìê3"'àï/ºœO'Û„=hXVʦÁ˜Èà‹ÇYæ×ëf åÙ6b(xïßÍ,¸ñ çŒb.Jîl¼Ä,k}£ j Yj`yýE6ñ8­¦ƒi§ÊÔíê:º"{UÏ~âJ»HÜùé!59­…HÉ?iݱÏp›}ãÎ/zEߺ\fì-*ÁzqŸ·:i9T¸‹êŒfq<’ÑhJö5…¯ËöWx¿p Sµ¦-X«:_æÐcWUü£”ô,òÇìh_ã[L¡¶WhWÅÇC¯BC‰ñ8‘åé~i¾Åk/¢{¨Î^ë¦ie—ìEÅ|u:/ªGÞìÖ[ԆؾÃÈ|ßÙI¹åDAôðxƒØ¢¡·¬yZsïqx¼¦™õí,_wð;ˆŸ”àT¦•ÒÏÛU¸€ìæ¸Ëíµi¦ ™óö‹ŒügV{ÏU¢yÙw_&Ð4È-e ?Ú.¿†éλjÊzK·ÒŒ¶íe›çõÔV,0U¨·œmìÂOYìÇ9¶´•’ŸmVN…½ö2®orÔ£ÖDY®+AáÕ°Pf.eÛ§òÉɧM­þÚÕŸ¢dÐ.æøKRxÃp«yÉu»fVƒ<~BÅŸâjüJô]5þ¬ð½TžUvŠ'v1%î=ßx2ÉwÃïª8Ì¡|ÓÑñ¿¯Q’[1Þ%Q]r¶—B€H6ƒå·êåµêé_óò4õ÷ë\6*øßwrèA6b#d©8¿¼DbŽö„—a €÷‘Õ/5îvb /FIÉöQœÃùí±5;¶ó ë—2²w KóM¡“'äÑFá³xiîŸe0¨®ÐÜÎ÷ùÚ9 «.ÞC”5±b¹à±9R¦mÈ-\]Øl—Ǻ? †å_Ìл °—ÜâÛÁœ5ÄdþR7 ÕÕöj@ÒyÍú+œa¿·§ É9¬$í”hXÌq•ÛëÒ÷Nò­oÙk£|Ê7FÛÛôFûÚ&KÇÚŠa'@kZZ¢ƒƒh†]ÌCªÎÔ7ñ|€&çuú:ÿ$4ò¼¦² •`æo@¦‘€#Uý·#v;H®}ù;Gáyà÷ÿå@þ_>QeŽJ×/Q•úN»ðF7¥&¨Q-·cgã~Ü`Ä¥¿€3hçAêÒoÝ”ÒÔî[ ÖÛß·UÈ7*à´_·cÖ¸©oT›ñP¯=c˜y…}ä%Ô¾±ÊV̧ñJ-aKõò†Ó­QÙ½H8,;AÔ©5r,•ŒFÆù¢u0àfÊmîé» ažÙ=Úí£b“=>¾^‡í«¸õû{/¯ìõ&àéŽ}ÕžjAo?Ór¼ó…(USï²aÕ‹Nì^í'[êŒàƤ2°dvs“ªèÞÉöÕ7r:»„99;MŸçsñÁöĬð“±Ý[Å[˜¦MÌÕï­ˆÀ „WÚ?ì{°zö?–Úª£îÛٮ͕GŸÆÕ{ç•ÞS;0‹o|ÏÎÉk£]Ö­Ãlï,›ÜÂßW~¢­¢äÒ¾^Í »¢È–øxªc:1ÜŃ,õýCÔŒ‹Ná‹Õ„~`%§Ó_ôªé iW;8nc¨òÚâvŽéà=‹÷€„]Âó·ßÖ÷ß]úi—z*Þ-hjåºrnúéWévó25îmnÚÖHäS¿Wîa¼Ÿ}ù/ÚOVqïŠðÓÔßóæo á·Çö†Ì1¿sU 7Ûwà<§³ÒÓ.¬ûãëcñ:_‹îÚwœ k ©ÍA|£æ!o¢Ù¾Nv’îNùJ4¶ù-LEÀÃ,j›O ÄÛMk·9ØëëB]ò»ÿÏj¦ÿüýPSLĬšU@UŽw˜ÌA¡©ÿÕ?í>5ú÷GשIt½ç8†4Òž´?Àx¢Rç½ÿåÑÓî¸É úËIt˜TI«dZ£_n»æª5?xاÙ/ƺn÷Þ¢¾šîËÒàðÝW:OâëiY /ÊòXó –Fy17Õ›bY'ð %òŽ192‰jÖÞƒEþ<\¯VоôÂx¶³äʶ_¼ž™¡J5 •õ(â™c‰}WÕ‰oª!î3—ÐZÙ^1S0ŸYµE–k- ªÍ¼×s°Xüb˜·£‡ûäûׯ°ÿ+/È6ÓØ;–éûÿt½ñ¯}Lþϯ™ß™^^Ò­±->fUkÙz>½ÈX >j|Í¥‹»ûâ©|"ƒÃÓçå6ô¹ì¯ÅK£ÜN ð`«ô`4š°ùW«ai±õVd~ÕêÏ÷»õ赠ƨ4Ú.g}åUúŒÍsPÍOÙ›•cUx Êy5WjÕE´†èÔObÅF>6”ê×8ÏJ/ã|&“}§f^z?€U:¸Vu”w×ÍÁËVnJõ+W‚œcmWnVû`Vs‡•0a;í#:Ëè ￵z'ù`«éãÒG¶Qq|a•ÜðT˺êNf¾Zj\Ȥvã)Œ³«X| Û,PùåõVÎÖ(q–i5íøÔ•̨ÚµfçZ?%wò¨þóûˆ:¡—(:µkIVý ˜aíz¬åÁVZ¯'PóOÃË¿ ÷×`yú©ÛØÒvÙÎd£\Ä'²¸47,a‹Ç\mh Hzù hëëq}:—eÎ$ ïíÕÃáÒǪ°´kù~Ð2o÷BѾ´ß 4öâÉ8 6ÏDÆâƒ çiùé¬Ù/B{øc1Ñ K&mê<îÖ- ‡-3ºÓ{³V4/tú|×ΉC’ÙhÞ6‘2~ÃÀëÈL¡Æ*Ô `»šÉäa± °«IN/(Î'tã¡3iwa; بðY?­<°‘Òúîbx‹ŠÙlX»U?©åÕUþMIyîúÖjj¦†˜Â¸Ný#pèóûèžå”) ÖAgSä[e­Òõ0 zÃt¥¹¨¶âŒþt+»ª-‡ÅŸ¢ßïB€—²Ò䉯u[“:pV×ÂÝWR¼n½á¦]¡lžvרZÞŽº{,ž$yÞ-ÄÝFïÌrzsv³n…eÊëêkžMœ^§ž¾ /‘ÑI/»qõ5¹4TŒ½t­ª||Ü(nií×qÖé6¦zà^,§7T®FÔjuoTG†ˆG¯Pc´ \ø¨xeÁy~rœpÀËË­n=1.ömòVVΪ³i'ÄËK3n7‚ñõ¸:Tcn6žuq7ÔŽ›k=صÖ^ó;èÒ­GÔF²ÆòC-À|y¿CýñEïO¥mÁð½ÊH)—¶5¿šÃéI{¦=7{p>®3{jW-Õ?!*noÒ‰9ÞÖ‰wù¹Ç¾eû«!€óÓ™ªÃæu2ıeÁcÞØ©d “À+šÇÓõð.È`w3v°Ve\H£Þžw{œÌ¬›m©"fvQ+d€ù apU37§^á|Ô_ËruúÞÝÆt^-|&5fêZTcÆc%aù37`V¡œúá ŽšZIäjÈ ³iÏD (æ<Ýý;¢ÑýØré³¾/÷îì57u¨R ÏÇ}c[rÞ:Bôãê}µÎUÑè9¥7ÍúG½=Ú-ã¢P¥Þy7æy»·Zh¤¸åQzÏ…ôNž D»›§Ö=æü…)_¯ÂÒAB3ÊÛË 5„Ìi‡É*MÚ qnC©~r*]†>ö:ÏÉ6É+*sf:Ó{·§ÉYãsùù:Î×ËG$¢ÍB?˜Ó›7á3šíÖ>&ï{6dÌöˆ™PµÁa­™£¡—¤=€_Îf¥E_'Õ6jF"·¿\;‡ƒÍXk9|xÌGO£-SJt´¸TwõuYRÿi;’vÔ#:D…w?ÙAƒTF•ïIúH‡á½Ô˜ì(;­ÂÍûsæ4åC™i³WÚR–§¼K³¦Ã¨ÓkgµÆùTWÞù³ã@¾ôïeÅ0¥šçW6Þ…¢sñ¸n^.ײúyKl)†*š¤bÓgf:ê? `á¿TØ-`Áú¥‰J¡6øZÐB'êëv||·ºÇÅ[Ü*Ŧ”£À>^+(õ3dóŽ_K®“\;Òjþ¶UåÜe %¦‡Mt¡ÙiµœÍ0oÍ1»h~Æ=¼¿³?'ýB0zÚ]yî"¿ÊÐÓòÎ7Õ¦jû}÷ æ{ó)5ð#$.jÖk1àsüÑÇî-»­ïεV– —m¬wÅaÅ­OjY'6U€Ùî¿÷coÖ»¿Ýo9gxÔ^'ëSÕ­<4ÚÈ>»ÕqXg'͵rœ‚:ý fœ^É‚Tqü‹_£^*óoöÁG*°n–`’Ƨ_{EB3õóÄöõö6#[Y!™Ï—áô™Ï— ¬Üz?žÉô¥pÜüñbé…ÇZ4HØZC„ó´xxªb€ûØ«§´ yQ9õ¸´fT\ú*Ùøþ$âÂ*v!KŽA 9êÕnp»;ZZiTÎlGÎÇ2t¼Ü2ÎÛ˜Œ ¸>f‰îxɳ“<¦ôê°Øgši‘Ôy8È÷ü§ŸFŽ–E:Ä`VhfŒú}¦d–tÍñ&XÏáMšoºïÕ2º—ãc¡Á¼65¯÷κ¼šÃæÈ£¬¿ïþͯ7%8ÖsT›Âõ÷ {Å[­\URÏ£ðª›M™êÖ›¨ö¹AÂJò1\Ø: SðtÑø9Þ4¡êçV^t7ÚE‰‹Ê%ûL¶à(›µ=bø¿ f¬•Û6€AS¹ô<‡(ßËVz!¯÷”Kœñˆs“î¬ßà›ÚoûÕÚ{™CbÞ´À|ht#‘(Ãã'ÇgÌë'{.ÄÓä<—©›7öG4kA»m [øÕz:+j?ÓÉ#n-üµ[Xz«u. øòÎÞw<§ÛâE«é4fŠ<*/ñÆÚ €f'èÝèÉóqºåÁa=ì¶ Ï,i|Œ©vef€|vnÍã©;Xáä$©ª=½_PŸË¢·¡òêUÚÊÜõ2é™é[{&Æéí¼ÐåË+lËÌ÷¼—6QXani)§†…)%ölþ¾Z“xóŠJƒsïÎSWÿˤ…rûÔð–q7zÞ q×¹Û»ò¶&YyN S¯êŽý7é+,m×â ïÕc§@g õ–yáÆú¢3„gÇížsýžPÛZ––=¤”Õï䮊¢"p°\‰‘|pÀöµy{Ò®ˆÍ.ˆ,$™X‚‰i©çÝ´Lð–s»óÖ*ï¸9Ãî·Í5ÌÓ}fV¡ÛOhsàL!ð fƒË;W"G—¤]n* ¥-Bü½=–ÕyYäÌŸfv!œ¤#¾ÏåÓÔ_Æ#Ìý-“^Ôó3ÔÀ”A­ãUÈRÜ$»ƒZeOFçÌxŒ:C;Cªa\YÌÜ¡8±Üä$^”‹q]*5ÅN™ïjÏ‘¼Ñó·y}ÜoÅ44kNßZ׆ kUmÕ_Ã:,2³³T£ïòÌcM»imé‚þ‹Þ*J)Î^7o±B*Õê mà)Tt±¼øóAØNYfBŠûn¶NVÑý ž²È?‹Ôrº7¢ë/êz éµ9‹+~°ªÛm÷’åOg2îúѸ»Ä)¥1uàvŠàÌ‹Ž©„±´é›Éìz„µÁ½¸G®ÚýrªçU¹XZKãm47:¶ ’Ú~ •Ò´ ¯f°?º¡‘fvÞköx!õ-P¿í÷;¡T¼Úó–þ©fç&¹x„)üöÉ„þò8ÅÒ6m2¨~.1u·„àd6å)½>¼‚NjÅ{6lo= òÉc‰ïq3å^܆Ãá£f|&j-ª¥¾Ál/ß¡ñ¹ëþÒoñœçwüìÐ]½nU;Üp÷?S¡uzÏÀ.=û­Yp™³µ]¿Ë™#( zU %¹t:ÏŸlˆïâdi3e—õjŸD„ºÔ-¤réjÔÚ’\)ayDkpÈKõö¼h»¤eØ羟‰3[ÜCïþ:æ¥Kß‹wÖ.O¤ù X^-©Y yÍ9£œ;G9‚Çš ¼_ÞáNÔåRÑjÜWÓ8¬M[à‘6û„ZÚélŒÒλöç…™1MÄÞ„s \€EÇKåX·‹ôËõc gZÈà’4D,£³}7ÿ¬¿Ç™Ý.gïWÞ¬Wö5g_:P“wáä>ךM’šá½ag¥ªvÃÌ7Êo“iTÚÁlñhæÍù Gš©2©µœ^ü$©cF¥Ù<ºL—R‡üÕ&8ô¢ÍØk§Wzz•®Ùn*[Ý ~Äì8nýhÞ„OMêS¡7Y ð]_Œ_’}Äñj´ÛçLÖ„%uy¬ßÞ<^è£SE{|"».³° ‡`r^W ã„d‹¼|8¼ÓÜ=ÜJg ¹ JùÓ!H£_½€È¥·%}ÉÙ0—AéhÑçUw6ùˆR»ã¼Jž›l·Yoü ßPÓ”Ò¾Ø\êÜB6ò:Г9 “§3TïÇá›™ÑÃFVL¨±)w~ÎßV(^/ìõœžc剳Ob±ÛPØJ Ñ!¯¶Ù9Ó“¼ `*r=û×Úµ¾Ï”yuƒ>W”;»ÝÍ©vÁÃ6„3_>p>Ŷm%¼­¾Zæêq­fÜ\÷îf9~mWˆlªWw.p´WУ”Ÿ ó&+wüîQ}‰’—ÜÜçåS•‰Ã{QSqñ¨äàb™Ç}CË›ä ñ.”—¶Ý‚ŽÜ¡X/j³uŽQ!°zzÏ=:á8¹´në†üà$kNì¸,Þ·3q¶:çå‹B9Ô«tT¸% ú«5KËL>yJå]-ËÚ› 4µ8Æ£˜Cƒz£j6š¨)µ’ä×÷üKK"íÛ*aªn]÷š˜SZg÷¼üsÌYj-™¬_Úå·û 2´óøVßMð›3À¹fWVãjåaÉwr‹P2ˆ.ïWbc³'n=ìÜ7«!˜C,œ.MéÛD)71rh­[«sþøO>ÔYïÔ¸Ày˜ôÃñv‡tËÐ;A““Ö#‹þíR=Qöa¯ê©dµðféVwøT™SBÓü²}܇ S£“‡>s.̤lEsØ17yé½¾Ä+™33ëúܦ„¸¦ ½ÞÈÚ- *„Á3+MÚÅl›{Ù~´”kŸOø¢ú™ÕNü&6YòŠÇoµ:ýå{&{¤)xlõW÷ëJŽVuŠèlšâÌ:û&‘æý‚ŠåÊ;¨·»û ðš¾\5=¢|¹ÐJ$«(12[ˆñãF<Á†º¿ ±Âë¬=ÿÑ‹Rœkˆ“3ñÑ¥&bÃÇÇ© ¶=*æÇ-ý[底?ò·,RùA±ËP¾|ý¸é¯ðBÎÔÔx0v`d.¤¦R«›ýRŽœPÔÊêëáÃY¿ yÁdœ¥?Àá[¤­Ô¸ ÈÓ¸ùTî1Aý¶ÊÜnŽÖWßy©å3ž'1‘ßÏ ¬Ê€Â-ç;„  =\’\,ÇÔØú®³NÉd³+'+.»"Ÿý> Þ&cälÛGTtËLçWºjEÉ«8°L{ÙÍÂGj«íÖ­Aüd¨/{~±ANæŸî{âNVpÞÚN¿ÝN²S-4ç9éݶ­êá&d;àx³s ¥¶<-—mt:Lo·~õÔœƒ­•6=…B=ÏÕIÁC‘ò ܦë!¤¯œ,}"nv~eüΜGñâ}òÕP{g4*zoö?Cd͈d·jQä ý€¯íµu·À·#å—&Þ5:-I[çyEfð“~‰Óýlvéµör„ñÒwä²ßr:ÖG ¸ÚÖ¹íÊ×ÅVJr‚. àî8㣠ÎPjOú‘Ô©ìÒ¸ØPKgèCѱûkkuÌ«¥’^Úq½¡VîTœŠîhu£N»œf~/‰yï]_ד†—`…ZS®/ÑVFÎ ~w—.ƒ2Sz€²X¨q0×Ös?˜‚†'ƒLÉIú*ò{ Ó‘LÉûÁh8¦&ÖÑËã™ÐßWie·¦x ósR@ô´˜T±Ú%}.Il5?h•Îï¦0m—èAíÓúifYËÆt›ÕÞ.9ƒ—}þ%f¢µt"fP¼°¦•Îp\ ß%ÆhÜÑZ0_³Bò‚B­LèNލì³Ð€ úè³b/¯]ÜrèÄHí§†GÉ,9*FÉ­TmM·1´¥äšÙ|ÁI¯/}Ðh´«;!XÒF£xŽjoÞ£× õfœ×ú;Àºw¾€jÊ- {ê2ùMT>­d×3—ø¸›·9‰ û9.Ôç6Gäžyå?ŽË£i«~ý—ÃuÊÍ÷vø§€Ä®xaeέðìþÖ0Z‡7ýΑ–_¦¦%¹Túˆ4R7ß&–£”BÇ< bZÎ%±_­€ØmÜ>ùÍì ô/ò^7õ³×ùd×߯vÇ~7ÅVNž«yTåÇ10ß/’—<Öç•ÞÞÙ„˜ú³Õã^'ŸÁb<Ö¾ O¦­zÙ?33…%%Ô'T±æLÙñ n È~ǺiãªYpC~ÚßëÕhoñåö*K—±åA¾™ƒ¨÷ˆðùˆ› ¡tˆ&~§rÄZá¸êî¿×•HiQéU tá€)á`Oûô:Wîy¥þ(ÿÒxwEW5ynJ˜7æGëT& -û‡E/˜(cgü";F­ñ–´¼¥á¬&2¡¼ÕæÌ(¥Ã©Ñ|”̨êžÕÒjq6‚^y ðv¹zoÍ;ÃzõGé±´zâ½°q<]ÜÍàAréÒCY‘Ð;Á²^Œ½0øX…”px¥ûÛOà/çdwƒQ­»–êÉù!Ò1û3Ú7£x‘x¨š]HXèÍö¾ÅdK´´'ºè3ìTØìÊç¼y³ÕË:wÄÙ<¶ögHFøö¶QŒø´ÑVýZâhMB­áƒZÕù¡•Ë`ÖjêóJòÒÿ”„Ä“ZÃÿ§'Žz7îÿÞ*ä-ý{EÈÿÞ@ø:ÿ{¨Ñ•žÿòúù·9ì®ü}·Ks•[Í]Åé2]kgqeí~Þ(ÜÌú’×áQUëꓤ¸_ΗY6™53?ºõ`0[«U½^Œ.©‹/H?ΙÙ]‡ðbPýƒÅ¦")Å&›ÓO<îÄ= P¤3ß)E…ãõQÈ6o†Á÷¥ÂËœœ^ÐopeÖÜl¾º6ýv6;ÈëÂ=X>tÆx®²®*<.÷éR®êû#ð§Ù¨_NÌË‚vﯺ v/ Õr½h¦ÂÿtµIþÿ¥»ÈüîŸÔvx“jÇMaЧíÆMÝo¥Y·Õ}%²ûßé.ÒÚª—syxîÆ‡Âã2ûoÝEíñýʯÕþ­ZDÌ v7ãÞº~ox;ùÅÀíü|ü“ÖŸ]öñÏIýøÔÓªãsJý…¾½¡Ô¤Fª-9Dmh°6뵬³–rœ‰¶­´[9 ¨žðWRÊá7ðûÛl#ÖÃåt•o¦Ì¨O$c+î„L›i|î±2¹ýéQ#kŽBçŸ{lŽÓÍlíÉCíõ¦­fÃ1J’B+æ½:‡Úg¬VxñM0ÛF—fÅCnÝîSċ؊=îÝñº¾Ø†Õóò¯fQKa8Q h/!íEŽóLx…¿Oî,^ÌÓ˜¾üàv$‚æúìMFÔÜ…€hk§°Xm!1¨C˜ì©W:+ùçO[í™…×:<{”‡ý@IRæ.|½½§æJâU½û³Î’\v‚ñû·ìJñÔ<¯nÛìé“U¯ËC¬òüdí€æw^4*í›=M©†vP;¯q,BÞ˹֛ÜâÄ¢¹GËtrQ…ï;£{ \Ø£$›Í‡ƒ·Ù»ÕÏjIʛٴ÷ÈÛãÜŸ08¿|¦ÈÁû¡ç±¨Ã| _ §Z¿6Ø5gHž†Lu£e™ìõ»Ç„gýí©“öz«ÎÒÍ¡¹ w$!3{óGNt—røžön±ö„Ô"H\\ݵ¡Uù+æÈêùÄkýO[Tþ©¨Ái”¨Ì±v—ízwZ°è­nD½Z+:9þZ?'Y»1†à°¦0kŽvnmÕBq±®Äx±¿cÉË›±±h,n(±)b¸ÿÞÞ÷òcSXM²žÞrƒýÕ/;kC¨÷דò·+ΠH*`AŒ!Y³¡OdéB½Ìé«|:}pÉô¤1`ÂW0i³V*Nƹж6Þkÿ\€Ô¨?,_}á{ØY´JÒ5 xóÃY€‡Ã°zÖêF~Z?ëÝ´ÑE´ùSÐáËï¹ØB~I™zW2“Îzix;(¯ÕXÏ ­­Tó‚‘?òرxTi^fQ/_¼¤l9¶CFݘdL›µÉìƒÚ~ôm—ÆÛ»ZªWãÂsIw†¸kgTizê2éÎ/«±â‰²y.,«éýà[²Ýgøì9æL—yY÷¤Ô»Ñ©_{ZUiÉ­Ù™˜N:xކÝaý",ìÒ¯·‹+v]Xý¨,WPɹ&Éé&€…]µ¹ kO¢‚þœÒi>ѧé½óF«A)>H8ÖMÃí£Ä[Ëÿ0 ®É£Aiù,­yTÕæ…“õµVÄ VÙ€<Ø=ö†¿y)~Ï»½®‰gªe·wñþûÕ Ù†žžáioYò”*kT¦»ÑÍ5q~›€sd¦[V¶Ü“£Æ“nn͉ã‰ýˆŽ÷íÊå±ÁëE\Ùû°¬mëq»ÞÑYc£:y³Œ²ƒIöÍú€Ë²AõïÒµÆKÞx¬íÇ#È+ëïɾ¸‘òóW»tµzÒö1Ìë™S‰äîÏaâ-šjè…èQLi& @:ưV=ÝzëZu'.x¶¤a+ÜÖgµ' żêŽdöÒ&-ßɘUlã”^ò í*«u¿²?òœÝ·±ÁdZ\ 磶û”y“Ðë1;ZÙ =H”ük2Ä^-i"ዊY.^°¬UCÝf¤4®’EíÕ*ÍÆÇV|>6 ,OA‹îÞêózûjuåk¾lÔÈf»d§“b1 x|¢¢È|®+½ÅÏd™…x´ŒwÎ~÷Ä¡I£\{vâóp¤LÅf !¢3¾ÏúF Ïˆ4솿„µ91?ÃPÛ¢t‰0®¡DFüd¼™G:±lþ(]²œG—Æ´®vçǯ^©ÿæ[sJ 5­!FY-jNG •ž^¥ï°Œ–žpFv‘_Žbºió ޜ΢û–ÎvµÉ¡GÈØçïb2ÌÕâ%‡ëÀíûã·ç)e89?œöðëkÝÑìÉ~m7N¦z,”>ýçÏÞÙùZZ0‹±Yb&öG¬­yøþ_zË©0`‹¸eo±3½s¬¶:µÚ !Žlƒ[ÇÔ Îûw\ûªobøØ „’f’ía \kÛÞ¡7³Š:O†X ê«"Þgä²$Õ’¾Ó3_évÄݱÞQF:ö×pÕÝÛMŒ¯HWs&¥Žxœ¶âl+&©ÀìÓr³Ðh[^þ…7TÓÀ`{q]—ÆçŸC︻˜ËàEyz>j-8rv¢iqò÷µD'õñ‘~,ˆhöËY{ÄšlÆÔç`uy€>zqY¾Z¢°1;¨³/|‹,E OwÛÖ\q¨œ÷þÓ~ëG$§«UB(Ã4[[_0 k·¯AØŸDÈÊú ËÃþ~ñ-¸¾Œq‹Vý0m…‡¿R-®ŒË¥Ù6ÌÈŸÑàJ ‡ ?Óž‡ÑdÔ[.g7©:ý9‚G}íÈS°*‚¸Æ^Ó êjûÙh3yÍoBŽ*UûI‰Z:“óyXÃ7Ù<Œžzá‡×˜Qìõ’ÞÙHÝË#ÖÊ-çÐ :ËXyuwÆH<š¤AènO#l>Yí]c†R¥úuÚî ™iyšs›î¢èÎrƒnã,§âã5X ;·ÄÜý7Ü;V¦Ñà["H›¬=Oû0n¬§J¥±3|NH1po拱Q:tÙIÐp0ÔW7`çtü˜N¡«§ylE ¾hc“-†,„ÐU °"!ÛØkϵªázÓ¹ ÚÏ  Õæ¬KÐ1¸gõÝkò²Â_”˜ÝC$Ê·q’ÒNûz§Ž÷»š<´-–GŠÐº{ôêwÎ#ƒÇ\éÄZ'¬÷~¢X}Þî¢ ç¹·§`ª‡ki²<©l–Y$ D5 §“Š7¤]?ÄA¤v5¥¹ >kÉ´¼âêÄÒ“Oʯ²1û8ßq¢îaÌ~¶ÙÇ™#ó`Q̾ñ~ô´ ®Û\ž ½„©‹ó±'nÔ}j5|%ÔÌìó!d[%'5‰­€ÛJ\¤虷仨ÒSÔ³Ÿü»3~h~Kî4Z™/•–£ù4†ôëý ÷6›B$ç=v³Qà~x}‡ÄÅÞ´÷tˆ2…#9º%k%U÷ƒñøy²À|Á5ÂÀð^^\FÉŠx3%Q¿ùË¡6ó Ñ%ƒY–+ð¼=ÚGs^¦øhñ™¡—Ví¯÷~Ë]p“áb>R®Û+r×}Èå´císáÒ7¼íD»"iG»W7©hÉu¡|‘kñ^BÇ»8m‰ð§mÌÛ’½¬¸I—;,9"E;çµWÁ¼•‚£àSj¼Æ)Zô!Ò ŽÓUo¸ÍóyÆw²»ý²§5&’Ë—*ª¢_ê£Ü€Ä¼Ù–Ë fÚ}àF³‹’ÆU[@¦¦ª]ªëŠAÖ(Y}rTÜó%ïN²Wå9œlÇ,«KßÛ:‰w»ìïß*O•é« !ii*¼Ñ#¬CpÞîæÅÂJPk ¨«?c¡8§¦*‚ƒÒ×g×þeq'©yËz'~©œhmZ·{æÑ¼?§Yï¬îÖuûÆÚ»³NÌ´„m»(Ì…o8N‹”¢ÅÄù+)ï1yÓøjÓJþ*>Ø‹ÖÞætNâÃ[;覅wAݯð¤ëÌ­[óë9†ûQ}[õbsôv~R» ¾–@¼©jó`‰Ãsh›síg7Ò¿Éö\Ô½"ÐØ[ŽhçɜҘ{õèÖ~ŒÖ~‹Iæh™@è J'¼²T‰kç5‡}Â7ðÁÜ»µcœü¾B¶|}dL©V®ª»Ÿß8Ÿû[ôOZ„SêvÜ„r®§ùWo-³ëY€o›ó÷JMÉŠx ö™~ÕÅ'£¦ëàÐXw§ýÓG£æ%©Z62.Y”6ƒÅ’ÝQªÒþô¨œ•óá¤"õ78-þ샎™Ãܶ5Èârû§‘ƒßþ©ËÏxÆË Ë Uk‰i} -ª³‡b¥è.Nüæ<Ì[b5k‡OÕ~3“Ù9ƒÐeÝùovJqÌ”åðïä°›Ãì|?§CÍÈÀíi5-Áqòv^‘)ìyB.|—I†´ŠzÜwÃüýä­†ŒÙ—öØêh6Ì•žúêß*Ej†¶ßõYâ/o8?fçW8ç|Q ¿nú“¯Øœ“ÀXßÖƒÁ z’\ÐÉ™™$QWeñúòÜ¢¯TËQæ;žÁðíÍ•È;}6sç¥ÝèÜ-£ÙÉéè øß_âZ—e?½=ÖÖ(Øe¸·ÁòZ¬ORôË\ŠB§I:ßÝÉ™²œÉËuלSã»M‡øþ¬R%x5ú`ÍÆ±¥ÎYÓC˜íõu\n÷…Ý ­¶nãâÕ|xÔ.3DfnEp±¶®þR&wX¯λž]Ú§:˜Ôµ¡÷Ú ¢°±² w©m)[WK¿†lw ÛÌÔí}}im‰C· }\Yk9šEºÝÝœ²¬ 901ž ®Ç¼F`·Ébì|÷anQeŸÓƒÏ™¤¥HK»Ñ’Ob»x4Úq–zÚ"c䩸hs~ÚURö5£wo¦²˜%+l°ŸYªSUá¬_ßR1‹¹ŸWŽh‘)ƒÞvayc.áÄÇ×Ó3"$ÐbøÉåŸìÕêôùîdŠ®Éñ²¥d?ÏP&¼<<  ÕŒ;5ÔQœµc·“ÉÃîâI—ÄSáøã6úÌ’Ú©™OØ=µ¼ÖjæZjvœ0£”ÓA±òK¼WÇÝÈšNo 4Wø¿^þw>ǾBú•QõÌ/­…4÷]®ÕmAÓ“Æ™[gù‹ù"LçðÔÀŸ²'gö®§™SøYÈhb6æq›zŠßÓx\w¹±=¬ÒJP©ðG¶¯‹êfâ\;”‘M]Jl¯J¸Èê­ËÏë~y]’ŸÄ°Û•Ð]^öÛóbÑ7[ÙIð9¼ÇŸi{þfœ:OóH«°´oŽäØì6P!¤-e}*“Æ×2C¤yC'¿t˜ <ÆádY*{Ë­Û¯–´þî›J­õœ2µäê“Ú¸ü,Ö.lfHØú|‘—wªmügâ)öut|[®›Ã Äð`ùëc¹¸>ï”j=hq‚ÁiÍ ÄF²Ô†Dxº‰µÀW–¶™º¯½ÒÍ‰ØæT3©.(ÝLÖ›™ïK´}‰ení-?©Ý*½s¶ÙüÛÉÍÐ.TžC³óW·ûÖšL“z^·ñÏ`ëÉù=>Ï–L³ÂŒ˜3[j’“½s÷øxåȲR˜Í …ÈÛ@¡]3ªšpTFé(Íä…›¨Y±Ÿ×®™¾¸N¶¸Ø+:(£JPéÖn_Z=V­µ7}ò'Y È"=Ð¥WiŸâbî ô±I^Ѝ"­±ã8‡óVÅ/è7(+:÷ú3qÖ¨ä.â¼yšbÂ\´ÑiÆž‘ÊÝz kTgx‹Y´ãé̪2°~ó£F»¼Ç2k—e‰ ›âîÙS±÷ö»¡­~¬ë7«Û !›[]Ͱ`,Ò½xÞñïõ}¸ÍçÏS_7,£Àà ^5©zXé¬Í­Ka"ŽÂl÷e´bÐh*’Æç¬[¥dgJ§±^•TxT·t2~í¾‹rõÌõœö†Íýõ6dSÀß­e´]35Ù~d%3±Y˜ #7vA*0òjÆÖ )3ÓcÜŸ>©%å ¸÷å¥e­8Ú¶JoKç×"7øý<÷¬šÁz' ¡ÒÛÍÄÝ#ÏÈàý,×ïú–iòçdP›·k…ãþpcÍ µ­Õt]½–¯ ØJ‹ ŽÉ“V˜(ÖýÝAÓy<ÞÔæû(È;¶ñÁW‚yãNçA=£^·ÑÝm}ÛÙ‡[gõÁXíE·ó†‡„è0´ÔÅ…“9©9áÙ¯Œø,0ÜÊûe!¼Ìï5»ÌŽ££ñµû]íK$öWßZvlɆPÝ­vFm…Øñæ»>7»`¡ý%²üök?zÞÔN@k"ÐyÏœ{óýv¨\|£Œ=oüK[¿|Æjî+Lkl-‡ï ÌÊ$®¤ŽDH™Fx«qGrK 2: ^g:‚GšÓ(N÷=¡q¾_?®8H˜b"JŸ› bfb±\즵ÞMÑDvÕØI¹¦/";ióèñûL]èã|+½“µÓh¦ T+qUáSrrS…QÉ—VšQr—÷Qx»ìÜÌZüì§%„Å¡8,-±[Ä;æ1´=ówàL>=øº~%Îû“¯ë 3i:Ÿõ.h­ `B’_÷Åav/Tn´m¥+kXÅ'©°©Mò±îÖ)ç¶>m÷+\yã yuñÇgi¬RÀ&Ö²nðøÁWôù©ðR_›ò»AÕ³f}rÙœøãÏq=:¼mazží;´ÐŽ+”±/Ã-ôïÇõ ,¢4ÆLm^¡ÇíÝ0ko¡ƒý¢¡«MU•?úÁîåvgª”>{WùÄLŽ%aøm¨?ÄÐ.g‹7ÑIÏ:{ZŽª1<º«,¯¾d,wOñÅ»× ¶},WøsñK"Q=[t^ úx£tX`7+-èÞ5Ý^ A¯ø6U9e6ɦx¦Çhi»TIW«]HŸ÷­²<ñ7Cô—Ô9MANÇ1kHGÍOw´¯$Ùc¶º_’ÏÊáï³húÚ «ñí‰×F¸î2?v>£ñ.)ví´½'û­k*œõªJ¶¥©ÔQ>­ŸíZÀž¼îrÞ0{Á¨²#µf¾Ûñè{.¥W g`¯zð|¶âÙgçr°À«92YÛÁ½·â ¤VKˆhïýuΛå>Ñì¡§üÁ¶®†§Ï2Fµm^äòášzÈ%/¸¼S:O•o^7íòü+g,¤7,:Çg)>ÛÏ Á’” Ëg'«$%Ç垸ow;ãf§|öþ úÀΫ½º½ùe’Ùp(Ò“ßæ ËDì‰ì¬ )¤Ò™+×,£wûŹ>=¶n7ýô~„8âl´Ëqø›z,dÊßׄç6×ø ÍsfŽÊöÜeáûcŠÚ&/¦ö.¥"s ŽÞ''8ëš‚qrÊó͘ÚÙÈW˜;íÆ"žÖÞJ šÕí4ŸP9 RE¥ìÄÚiÔ2yb‘ še«ÑìÑ:ä…qL—J²kÂŽD½kíos´³°’Êߨ¬EfûG}SîÒ›ÖÂáŽ;Ls@]Ò3°·–f•=›Üïöà0»%ûYfŬMÌ‘jý‰lp|W#5ì4<Ωî<î>ÕÈÈ^“7ó‰;'ÐyÀ·0]¶›^¡8ÿ–ha*Þ·aÜɳo¯ÊfÎ÷1Õ¥wMSùîd5òçD„&ðzkSž{ˆEtyfþ,õ«ÇœŸë‚‚6U˜®Æb~¸­x‰Ö\ZýÄë‘ýÀóî2”χw¹ÿ˜¯ñHvê9ô6:ðŸ?ƺMtùc¢‹•}á È !ûreˆÅ{§g6rwó¼z}äéL]ûe²oËíòºÁ4úoö3ˆ ˶{ú碢°s|þ`ì |YzkYÀQ¸½s»i[›#6õÒÊq¬ìCµ`º~êú,<Øz·‹å¥¤ø~Ø?e}£B›,˜°¸ù…R7« ÷;‚6Ù bäø¬_ÕNodÙ%`'3¨Jw£ŸY©¦0öž•ùešãÄxíb+`¦£"ú¯E ÿÒJ„/(Ÿ†´ÿ§ÃB$? 9Ä}™ÿKã‘GMj=¢Sÿ+ ÙØ|·[Z>Ã~sOà´‹«(Éã úônj¨æöèTïåy?LÔÃY|›O5kîpº)5[ñ±Ižêã‡ê¤œ©v“¾LçÂ@mÄ W/ì#æ¥M’‹9£Õqß‹ÞX#©þÜ6)¯·ZÛh%Øóô"Kì¼ù^ÍŽgõ«m?æk0H‡ƒôÅ\ÔÏ¿ ¶{‰õ&¼¨}Ò {U’hÙï}\¾Ü^¶VècærrQD¹Õ…³íÅ|M}.õMçÝúØ¥Ûgð|’ÈmC\Z§›=hV¼ôf÷Ê ûÜCé1§£ש·¾Íà ¶©ë’ÛøMì×? h…c¸ÌaµªÛ9}¨ÓEè4¾.ìù÷~²ûhŸ£eK;.÷<†ÛïÇä—:ÚûSÀV¥å%µÃ`ÓãäUMÐ3(SChEUÂǺ¦>x¶92JÉ—ö¿•ÐÌ»í©OãGbGj2®~©EØXåÙ…¸Èá <Üs"3v"•zÕáàþz‡¯MTO@HÉÇÂ3y™Ù]bné¹ìެ¶n‘”•¬íoNë ]ö`+"Ùô‘9¨½¥V J·+™Âé[<âҰźˆÞ+…Jkîí2o….Ž·ûiÁjÉ\”3Üý§ ‰úž^Ÿ…!pg{¯Ñf°<·×æ,FéJÚJ«æBˆu¯{bßÛ‹Š_ýÍ 3­—ߊuù`›ej¶ç‡wßûÛÊë³ Ú7ÒšNU!äÌÕQ¹mI°s^gÖp;(L^[`˵C¯ëïòÒtúéûýjw:ßûKU3ŠÒ3I *ùãæäå¤è¿v{”Šßê\¿ÚÛ5_½Ê¹qƒå§™µÎ[‚*/ÀmùùÏ–Ñ)Õõ’måiV Ø8žÝ®2‘Ðbäß„f8Ö¹«è?yY9žì–Öü\j7ÃÏ¥Á9Y bî²e&ònz˰²gs¼pÃyÒ†÷ e4[÷±ÏüË ©^öz:z0¦? Ofå…uX)~¯ö(<Ø×ÙÌûjraûÙ¸‹ßì—Óö¹ºîa­ÃØL «2‰¨–žI ¹yÛµ€ù(É£4»ÒôФ”F[^‚6.Ôöû•{}C1þÞ7Û©V?­%. ç×ûnf˜¿oè[Æ›-¦”öL•ÒùAµJý€É@K_éú6ÉŽ}t1xR!V,l†U´JSP“OîôÉ/õ¼kÑŽ5‘YpëãW­3Z?¶teí/·PÜôík ¬ÓäQ×wééµ®Íü¤£Aæi8CT9¿ TP•$¦KdY2³èhÊ\ZTÁtælÓÓ+aÒGV¬HŸ^s8ßgÒ¾]xÛ*kãÇJ»5òJTt~\”‘–2¦ÄRiŸû²æxdpŒ+<9N§I„y¹öÃr¥®Æ7éæà¬|™ÁÀhÙš<~¦®èxýãlçvõpØÃ¯a^e+y¡¢HÏá‰*1YqkáÁ:¼ÛóVÛ:³±[C»¿Aˆ¦¼­›õgÕ³=P@ÔZ^øb]ãç‰}Ñ[sýß~WáÀÁp+’×{ÙÙtLÜN‘êJÝjËúO¨‚wHš±Š6ˆnb<|Õ] X/«Tñ½¬–·NûÞ|{\k¶AW1Ss‘Vo#¸Ê}’Іy–Ý­q§¹:íý`~Óßw²¢±®vp*S^óùu¼À<¿trµ@UÄJýÖß7®VD‰ùwñß³ üYgáƒZ|¹ÏŸì›SŠ—çýÜiUºU¢rŽÁ\pïßõS„ÕIÖTáöWÍœ(â¼ã5ø,8Þž6ÿiRá+IÖ™$9k6õZzÌ5‚¦vžq ¯µz³ 9yGµ¹Ð(m0fÂ]^¬üêi¦¸í‰UðÆR|¾þ1 .&Ôpq û—ëåPô»ƒns–äÙƒî®pZüW:<ý^PÂz«nÉ×e5-š–ËG÷w{±B3ט Òçmm®î®ÃÞÌj_Û¯SO2«g[-fæø®+›§Ô„—›£€lÅõý%•/EËžÓpöK÷ –ðøyœÍ)AÑ~Æî**8õ¦"»^+„KC/ çòÛ‡ÛGÍB»z¤|À8¥8²T¬y»qd…nF-4†Fëu°Îº½Uö5ît¥­W&åC P°ÿ#Ô?Î>ASŽv¯ãàÔÚPHtˆQ:î/æxNâÁcØvà!ógt[ÅuñÕαò’`'á»7ÏšB¡(åM¸úØs?TÍÑ5hÐStãQFÀ|…½êAjrFÑá9ÍSäJºŸá:ozPÜlÐó 1ÞÅŸ™æÅ£Ç&‰ødP Äî³åe >|Äì¢Vñ3.Aº0Ù$ÐÙqë°[¼’É{„;û|ÛNú½ý=¯ÎAáU\Ç]ƒÎÈMŽzv'#mâ¯Cê}XižîÊ;ÒÞKš#FÏá·R¸u1£¶hEíF„[½ƒ+½×òXM.zýÚy=ÄŒwUè^ÈÌŒåà%ÆböŽøØ¤’øç·C ¼ ÚßÃeÞöFógF E^8ýáQ‘M¥¾qô ëìçãÓô{É"pϯ8ØqÂÚ’Opë’œþßìýÙ²‚\¸,ˆÞó€ÒˆŠˆ=öb"*ˆ¢ÒJ«ïœÿj÷>kÇ©ˆZ§"ªv]Í'"2¾&Sr|ÙW\ü9—ò¥ )tí¦ ùÞûÜúšx”…ãç‰6‚þ]ieã캾]äÖjì5,¿Y"³oÄ8Ô¬°æñgå²²½¹ßØÏ¿!S\^´Ûò±ž,/àÝ––âÉ„¶>6¦ø·WØ ì^õÉì’e —›Q6ï&o”Å?ÎV¬tŠj0l“m¹~nt•ŸLvR/¥!kííVóE ¶Ž½äÕ©8Ú’1ñæÛí†+VMß÷Øjï¢¿îø…’Ë^‰ùŸª{´ gðmxçkV‰bÚ€óD¯ù@7[pþ~:Ýøw™Uݼ“³¹ƒ„9Qt¶Û·™áÛY¿óÇZõª_²{ ©U8½R‰¾^ŠJ‹J¦ö&£x«!?Ý’Û )ïÄÕ/Ù•½\¨ßZ¸ÔÃ|XSÊÕ©nð`)}~å  é¿ÌÒ&Ñ´5·VR}x.·à”œHr{”øËFCaÞüËæ¦YÖF°ÔmÖ³oáè÷ƒh&Vå66{ÍŽ3<†d«’sß]l•IÖöo#ÝÇ@t¢ëíãWko, D9£% ÂdTöÍòŸÑQ,h³A ÚM9mßלÉa3ŠZ"' ³¬Ýlûƒrؼwi¤Ûèu°~±òB¼vä£ökå½çþÄè<}‹a~$¾±ZÀ.Om¿q) ûš›Ž)÷ð—É—;¡cW† +£ÿè6J†cgRµ-u²âótqqx;\Úïv`Z²©Õ”^{ÌëŽ[ÅùÄ¿yè—–Ýã°¿ÞÑ¿X~6¹ÔšÜ'Òzt¶µ¼ð=Í ~#jó.„g»|>XvðPè>Ìs®ÛÔƒÞ~~$¼óGé1¹gƒÈ k¡Ó^ö›Ïf–Fx!ÇžÜЩü|»ŽìK¼É⨮ Ú•¼„Ýú¶¥ï¬^Z¯ÔtSV:[Ðñ•jTéÁÑ×9‹ŸÝmà%šI¯B4ÍÎjäÍC!$Ó>pLF;ôÇCU¤Á]•îÛM¯q^N …TnÍÏà–X&… ¥þ} |T\fôÙR;§i×ÒgäüÖª5fB³6ßDË^šã#°eJ­Á¨k¯fбyñõ¹»°\‡öœxBõ_/šk÷|\¢Ž:È«¥Ò$ù]æÀêöÊ`‹}q‰+1¼ûUù´D£W1&­É­‰šâÄûï­ƒyZ±mÎÜJDe|+X·€«õ,§L¡ZhÔß›Ý(Òì“Vs`üÊå¾AÏóàþ¶&}oÙ–!TG¼ö`Ûä ¾Œù€(²\‘Û$ž0aíÓKKËûˆFöñs.n›ìji¥ï ðŽo^<¹CÅË™™Me‰Ws| o<üN„ÎÒémµ×ü6¤ÈèÔ®qVÍÆ÷¹ìÛif6šžùp‘Ïê;(/3þÈêØ%³âEw ´prÁn9‚ànuT Ë¦Æ xöØÏ[5”–öœè‰·ýw»Ú°Z'”nOšôŽÕ3«ª¥g7Ö~y’7]H§ ž­˜f1î“åbæ¾ÎÏ÷S*䌸Ô3g ëê}RMæ ÝÕ›EQm?A…(¿¬µýkÖiäáCXÛ¶q9Ü¡Ÿoàz–»›ª•e\a/ãÓú07(›‡'•ƒ˜÷|–õЩӝ奿µD€[I^·ÜUrð:‡M´ð¢N—›6b¤DL·÷‹¹ñ¨ŽÆÏòÔ _Žã¨êÒÐ{kÑ.5¿cû•0ôé‡$èáp-½,áŠVî^U÷vú™´Â”ç¼U&½d7%áði’_Mw³ÒÛ™ì=¬ôhlf媄 kÕ.\5ß½ÞàŸ1©k^‰µv³ ®áZLÝöÝAcNSA+)¸‡„ØœýýŸgv]~'ìŒÖ €ïbï7´žlfobr?,»âaÞ+÷´p¼=è_Áž‡Ðµ_Ùohy¤üˆÈ‘(k›{·…ž¶½¶[Ñü¸»7⇧àféi¥nÂv*ÄG—{Žt¬×v…Z5S~?^=°Q5dvÞ,|8ZûÐó¯÷m§óÙOá¶ÙU_^™ @V¢—EY‰\tMº·_"ý Tžñ °J¢—LñkXèTÑVî]ö£qh¤Ê›‹3ùX ÛˆŽ÷’a¿^ ~ÝÝi€ñÑxúH[—± 5Ï.g®Bptx} J©O" ±&ÔÇêVu­ã«lm@ò¶jÝn°ìµwm¯ý¦Õ“&“e@ý3/FÞÉ_êÙßÖœ:,fdÐTjýÝÅO‹ê.þlýVN3ßÑÌeé±÷W6xÝïòt*B|ÚïuÓù÷VØîö€_’þ”“ÕåÅr,ÓÂá(  «© CV.N¤„ˆûDõ{1¡ÉÜ÷[üƒ’²·´·¶žÖªŒŠ×l[z±?Œ]µÍ]I¶—yáiûªq¨äu#›£¯IÑ|½o–P³t¼Ý«ß¬s¨5sü„×%¦d”âàõ¦‚€RßyýÝÄk–Èu@ÚpDå£oìóV9KuÅ|<ž‡z7d¡œ½éªjÎ@taüúâ¯3¼Âf”ez]d­@d†ƒl/Ûæaº|¬D]LWžÃ“òÄ3‹•vøXRÁ”ޱª9—Iú‚N0Ì¥½xmzL]bÁ;¾• iµ«ª,0|}Síq׿Š}cäÈ„ëye‚Z—,ÙGåQûùª[¥3ºYômþVRÎqËa4ñ8/}.û†:B’ù~Ê ³¬£VÎß«öˆ®·Æ ð}Fx¯;ðãÞ«ß^¼·¼ÛSÓe÷HÆ#üH™œ9"¯Ù::FÕfž9X‡w-ÐR»#xÙ÷…eY{ÿ ÈºkV&¿Ï@…˜ÏL~ó¾oÕÒäQª¢9<î[¯Ê£ß}ÇŸxù$—#Œw¸‘÷²Dó`²¦Î"úÞΛk£ÁOë™ÞΙâ°Ý”–Õ--â‰ÒoÙ (L °W ß&¹bp‚rJs*¦¼œÊº;nå½™œT¹ishãÚ·Áå¦`S¹² ‰úk° 7n*†÷ãr0ÑËïRŸ‘¸M9kèqå²ø‡ê´’ûJ¡–âfè¬}ŸwêrØ~ä:'úW0ûb»ã^ uú§QVúý|†eøÉ‰…oÜž˜ñ¼A»ŽŸ´FÚ›B勸¶Ä5Ôº²HÏÍ‹;­8ÇÎŒ +S ¦œ£ðljB© ç”—¶ëêµ8ª”ªÜKLŸóîݽé;÷j»¼†çeë°µUðÇx¨ •Žªà›4Ý éf^J»‹cXE§Î Î[ä°ðÝú‡ÅB ºÇsooc˜´½÷«;ïOö¨Ïy v¥Œ#NMÀ¤3ÖÌÌbñµUïJï6ɘôÃOÄxG2ô–/+ô<¿®Ì†½–"v~Á÷Çwu¬W¦óÉQ>ùLðC/L»ßÑì÷!e¦=;-Ž/èXñÁ2ql+†E¶+ ¤F|Çé4ü06ìÕÚTõ¥ãrÆîæš\.ñ¼yÙà1¸ƒÅx%ºI®k5õ •mHÂþ2´Û:ãÍÂ!ë?÷âc<Íðµ¶X+È Xõ㚊Œ[ƒŒ4³B^œôF{Ò|y`½¶èÚK2Ä»Ðød©õâsÆ<Ýç[’ ‹kàºXÚ ºã=¯Y Pnù"7ú”°IÀßZï“0f'oÌ‚ÁY¸}NZçs¥Úþf“O^sæÅUs·R/x–s?| ¢ž?g|7Ë’¬?Ýr›y̪ š¾xvX¿»Þ¼ Ûþœæe “\'¡÷u#ß;®N“ø³GçZ¡{MëfévLú)ýÕ~U;0î¾r’sH=|·µGóšÝ‚FÈŽÂÙø½Vû¼P÷y^.ñÑó¾qUïcUÕìÄ…žÒ™@ú|ÇupÍ}½ÎÅ_‚Þu¥³¿{>¦jk6m\°¦`ŽÆL˜qi¿r¹½.µÞÃÃXœ~Y¡½œˆOÛݼ¼t*tf›å¹=8üF“Qu߯¿³ÊpžL3È8´®†!NRÒLŽ /±Ò´¬Œ@ª&ówõÇ-iOŠÛçf-4©W¿pYŠa«Ž’؈~²Ð¨Í›õ=AD-–(({P>Œö¹$9kòGn 윶ëÜÔON2Oß?šób;’™“ÄÒ[{\SèÅŸö3…·Ýuk6Ãïíbò†ÒbƒG啽}p/ýt¯ä_ªÒl+g²²e7)T ÌÕBİîã.ߘ6ÔÑ·_Ÿá.¨ßÑ=¶­K4u&3ÉËcƒÖO}þúÙÆÃu…hyyþ«.ÀKXT(sÒ©×8æWB{/yŸAõû77˜üfO&R1Yè¸Úµ§¬Làxorø!š~2oÍtz•±†]ƒv(øâ“ƒvÈÊ$Ûà,-º×ä垊V'«Npù08Dþ¾ÛÅjÆÊPÎ5È“™Ûž¸4Q¼á­ý]Nnº˜‚wôè9A?µo º€T˜>òCÕÜ-ÐâVt'ò2ƒoý¡_¦m<í›çìÛmÙ›d”e¿Ê/®z‰–Q³Ý*ååB•ôš›{ÊfÞ3«×Z· @I”D¹*—Q‡ïŸj¾gz’PZLÇÏ‚ôZ.71ã T•¡Ÿþ×Cþcæðÿ=tü°ýzÜÛ‡ßT_òŽêMúÚWø7îµr¤Ío²®Ì_ÅÖÛ–¾ówQŽÉ !»9³0ý™/¾æ„û$%¼ƒ÷fK@{(^Òxtß»ÿ^rêjË×( o69ÞêJãûÉ⮄/‡‡{íNrzÛ}ŠKB_n^[±¬ ž>H÷àõ>-„©NáðæeT¶b|¼ò^ÐØöÈYr yèDÌíÔ>6nw­¨å$»¤--Cg³&5[Ì"Žºê›jÓ—rýº¶öÚ‚ ½×Š­ž&$X™#^,JÒ̭ءͥø'mÂ´Ý ÿ'“¤¿‡ÓS69ø±£Œ¸/ÎþÞÑ­f™|>ð;ú Ït¿H)É¿"ùÏ;KG÷µ,;#g •ƒÅÉâĶr5•>1Ä&¯¬sgOÞƒÏi ¬Á°ß3+­v) >¼vå:Þì·ôr¯s¤/™¼y(Pêë3Etˆ´oZ˫ϳ×ß¶ªßuœZÿèA¬V.Öj‚em`üBò ¾ý@<æ~ RÝÊÏn”má~W߆óS˽©8³ÍÙ<;^_î91³Ç;'ˆsö ŒX…£Æcû ¾óÒ|¬ 7êö§.¨á;•höà -ü·«EØÿñïÿCÕ"½Íiiï6øç“Bô.f†…˜p»°Ò<4ë³xñú³Ï€¸»a68Õà ñØF ¿C3ï Dé½"nÕêÙîܪN6ÖýÚb1é—dw>«Õõ¡ô놤—Ò¯|V?Ä}éÞ~&2 <ý»PD>š"?p‹”5êG}þRâO7•˜·ùäOp\5jø6{â!Óy1ßɯ«Yg5íË^×ÿÓ¼öq%ùêË£"â‡'ê‘&d¶®¹µ³cé1¿Ô†·ƒò{çèO™=Y ?·õÕâÁüèæõ™”Œ¦Ý3L¼úî„>¬™3œÁä¸2ÊˈË\ ¾XªC ´sFIj ±c«ý øî‚ðv´ŽæÛÂØ® ý# Qéq6E]‹@|]få€ÛµšÕ™±Ã䩃Ìa…x4¶Àý±SĤ|‹g0QšÈ„ºþºs[ŠÊr^«”vÌ-è}ƒÚWôjm^NÈ Æ|š1õ­ËH7½…·xp€àÛ1z ]ݽ¨[Ì¿ìòWå±W½ŽÁàUFæbúÅüñk~!åôdçì>âa‰ñfÅŽvE¼ï¦~¯‘ ÔÜÙÇù{4»ùmÏ9±£,}‰^VeÂþ N…|c¢RÁ?KûõòõÎóû„|sЮç7Íë§ áI&Ý›ÙéÕ^ï© ñc[=ËÄ3×AUšž¹Â{JŠjÈn6wd¹f"£öftön”gêÞYØêqAlë4é[Þ ¡cçl½…4Ϫs!hp…mJØ3½ê˜·¡×óËâÙh"q¨’:qÛ˜é…y oÝïJÔ|ß½sŸÀR ²Ò…®ÛC¬5?9ÀÐø,Øõú›ó£± bÚ®Wý Þ$Gï‘#¨Ù5X}7VYŸžåæ®Í&.º»“ºÕv fR7[whaY0ºÅE<§zܹô¦_«mRž«jËïØÔ==ìKÆ~‘NçáÕvmôìµÜÇæI¬4¥´¼ñ;¸{J3y6•ÃÄ3€w’J,®ƒ—ól¤œ¾ß,ξ\s ­ ²Sî±kyË冸1B×¹6‹EZ<)mþ8¨¶/«ZßHGÌÙ ˜º˜¢ßôGçãGQŸ–;ìÆeMAwâ¶^‰=Ù]©û^Ê–Õì4¬Œ®"Ôe߬ff=:YhP!Ó_7ªôüX$c  ΟdÉï‚zÑÇ‚çt^îL×ËþI\ïW¾œEXÚlN3k~¼”ìs/?Àà ÛÇ\ë Ãáï„ÊâpÑÄÈøØüÀnAo|‰t•Û “çzI]~±/ßeý^]¡‘+ÎÞv×]4‰•~öêÂæ”*çïòí7Gÿ,Ïε$­-œ+]6l¸.rNŸn,„îÓ'"7$ÁuÝ4—»",6d¬¾–âFäumÎöz‹ ]B#[G ŸNñü ¶—ã¦éÌ”Š´°¨Ê"c`,P™ïgÃÜ©·ó’ûa²g¼KNƒeòÔò̆. ˆ×o5|Q¸}Ê› 'Di˜¡r«ú%'‡Æ2GÂæ;«¾ÉE$6Ôà}ÑÝknïNÀi÷û¼à|åè«uK`ÆõJÿ„:H!v =εWÎöaEåâðoã#V¶Ý=£]&l£–u¾åÏ7ys=€éiBðèíiˆ·o•û«W¶+Ÿ™gRam/ڌ㳤@¬ž£S^¿Òu¢ëéÚoá-ÓËFåå“ð{Â#Éá 3Ü×Ëwö`¼¨"=qmv€]â[BÐMÓZóÇ_ým±ƒOòë“=îÀ\X¢\ÚE·Ý zstãùé“B?]ve‰Ï®·Ãÿ ÃúvuÍ€{pËî˜#ŒíƒL¤$…ÃAu©Z«WJxÁN+;W_ª^ ͆Ncàm„;.<þ{NÝñ+/¢«Ï×dWc´àÿ‡p@øäܳÁèXGð2vo—9Ù7:{Ÿ`k°¡SÁZL·PÚäåàÌùÆC›¥}3,·F¥™˜tß­;.æ“¢#:P·ß}“)Oùh½Ö›¡ôè´?)¥ýØuíÇáÝoÏßO~ÝÌ«3w‘ÃË1£eyPŽ»“hœƒ’ú­åÖ¢æÙ Ë—³¾ pð•Þ²£å Q­?´:Eh9ZêiÇm‘EK.¥~°‘ %}äÇ:O{KÐC $bZ‡Õà·Ìfù#ªIa#:Ù "£ñÉ‘x½Ê—zŽfçB•Ò¬©ÉTÞTÛxx\Mß‘©³Ê›Fmž`jæáâ˜È\£6ôZh#ÚøÙbjH팙#hdµ`ØËD^ê|»%¬¾É±Ô;¯x®Wqlü°É§7’{WÄ›w ¨À‘µøói‘Ò–ú!ƒ;ÑÎÁuõ†Õ÷ò*«f’Wa\ŠÞFûÖ²c‚ísït¹³[Mͯòm¨æLéWL6¦3bx!œZ7M’ K:B¾…WZº®Ò›ñ!ä uV1¸hÝ»d…í\´fIÓŠúA'˜8qttRûå­ M¬ {IÎÄÃ!.á<Óì€k­¾Š6­ë—dÖsm÷zÞñ%9 ݰž»Xï‚R‘γäøÝìV?o8£(Ùƒ´UF•Ë»=ëoýU¶,5Ûâ`¤d%Ir©ùZý}‹O~Mvåz¦)࣋ãÂ/«gŸÃD7³ÖI2ßLrj#‡\yË̯cÛm,å”6¾_û¶Ï è¸aÁÑJ3[ÚÏ?ùÌTj£€Wy7|`Ó¾*ênÖ˜Xtµ~Oлª°¸Y9Þ"Æp÷œ?+”¦ ûÑU¨ûÍ3ÁîŠXøc_)ɱQ}á¾ñ<àps¬zŽDÙôŒÛaje¹~>ÌrÙ¯ŒsÐ͉«fS:èT±ïÑ€o¼{Œ™[4OçB–Üû CÍf FqaÃnx²íúÃAv+OÆÊØ–z,¯v8áþ’/Ñ1íl# @þ1cë™a}$QÝ¢cöàG^žœ”<:íµ9vÎðÚV1仑ù1¼Ž,»rÞßË¥ KÏÁÁO§Ëh m“éqso¥sg¥‹ÁxsÉ0ו§V1¶P²UXäd!Ë´v~Ý^“¢v†“ßK³` !–n÷ñq«n¾eø4oG0kŠG¯¤ù»‹9ÿÎ@{ù5óz³+T°dÿl¬žÃhfy¡¯Á«GÍüò¨²Ø Úò˜gC£fH’þJÙ0èímÝxRLØôP‘+z¾)µ­ÎüóÖ­ö6½¦»€aKMKÕ¾4`†d+'ÚÍ#_>§smAXg›f­ë\–ÿ¶S¶Ëé|”w唤t%VÔl¡n#š6>FŽnÎ…§ÜÃ.¶EªÇ>Ûš6nÜôôL+ym”×ßúÔ’áŠuO‡i¥±ùXyí>¯?§ø‘ µÔ£:».Öõý-([º²@ËZa[,Y6+~©­yËB†ê¬<*ÇiuÚö×Y0nZ¸çºåÆwÍi ñ}ãñPúæ-¼aÜV‹%âgÖJ|ƒW~tD‰“¡ãŠÖüGÈNÃÃ>išðê£+~oä21_fK§³ ¿ºû—ÈŸÈ]tr,—EUŽ»¿`´¾°úÁƒÞÁä¾ äøÎÓ”&×'›Û&ÿF¡b3cöÈ7khà‚ï莖J[º·*dú;ü\‹ñ¨Ýp÷}>ÆÇß»èjé‚ý®Á,ÓŒZ4¼Ñ±2÷íG˪u?Ï£JÖÃJ2‰öÕHÄZ 2¿vhiìž+XE^H:ÀnUY¨JÙQ”k‘ùŠžáØ‡œxm=Ê—ûƒ—µºžâ¥ QÝ‘ >oýöÐ+GRi-NüTÊ,ñ[º1zU«yáÙgôñdœW£Çд– 0£„HÂý3Kêû²˜ôøªUÝÓš·;çe¼›—ýB¹£µFÛÆ9ë³í¢3´ñwöiÁgˆo«9œ}[Ý…êéîÚŸimi-Zß²Õ¶œnGm4=ºny}N ’÷ö]¼h^¬æŸÆÝ纠™7ÌQdY2 Öò&×ZIkíÜ^eÑc}wÊÏŸø·HV­ü’ш E‚± îÃxçHÏW0ؼp¨!×v¼wâ‹ç6Ì3½Ý¶'¯ïX3&zºÈÙIõêè½Ö ëè\ÏŽ»jöKÌiZÜâ"«Ñü¬éÆŸ--4»³xºÍ¾–Úç,òRsÀ±Ô,ÛZå³RðOSÊK¨TÞ·.ÞœVdÚÛçᩚx§¶´åà¼x¸Q?i Dÿ3(F§}øpVÝa£×ê–圑GÝηv§®-²õë/-íu7uõ6—OÀ~,§¯½sdÁL»YØM_pyMÂûAògNTÂ4ît6×ðX*<Ô|‚Ø:IJ7‚(X•–б¼ŒW7ɪ J è¯F‡mï ü¾8˜Ö´°|Î$ÂÓYtï\Zëz^nQøÞgRŠ ƒê܉™ƒ¥1µvê)i‡®è§Gç Ïšø’Òî~nî{ HÕ¡Þ½bl§iM@ì=±õg¿J ÝÎ|K?§¶kø¡å˜Oø.4=¥º~þ7»Ð4ïqö.eÿçÕ"IóBèöªý5’ó×H¹Ž”¼wcV¼5ï%DâEÙ^'4A´`& Ô&6Ðzλ”—€dcJǵõ×·~ÂIßþìŽA*dª#Pk+õNš/vzX^F9“«ÁSà­ ±Ü¸})“ÃY¤u]4´êÖ¶q€',èN®Ê½—¾0ÓÓbRáOøuQêç:äÈfë{$H§!ÌOµAUF‡ægÎÞÙVÐ9hø~öBšJkó!rà£__ËÅ»ù«ó=<DzôJúµt‡u~œ‰ÜøÍ :–¾YÆV©¼Š[4«(’n–ƒa|]Œ21ëuvPoä `Z1:v ýJ=kCÓwXcktÚµ„FŽ+/~3«5ÿ0ØšîãBó$åUÿ)¾-)h™›áxÖ#wð3’çƒ}[„i‡íYú0] f˜ÝÔîµ.Yóºø¥{ 6‡ô×7Hù޼^ÙùØëVÚ_×ygË•¥w÷ä½Eô ]D"~–W®2Ž•$‹*mRFÖ¡›—ÌYóîè38 Aþa&ÞÜ«ˆ“—nH(¶%{u}ŒC÷ü$ÙñT|Csþ÷Ú†…wújE¢¼õcßñ¼gõ';xXk&ÌkŒì›±ÛÊIkû“ý©Ú¢ý¾ó°ÈìTYô$¦“9N"ï)W: ;úZ'ó 0Èzž¶J½©Œ¨G!èœèO.£¶R•+%-ì¹®¾–Y –­‚1ÿP…I¯Ø)n–F»—°_Þ®VO6»…WWµ2§©ìM‘´0]MÓúlаD³D\ÄÏy"Të+ð㸙&0ø°]»rà Ì \œøíæÇs §Ž~ yj»27Ë™|:…t‰'•W²½é±ÞžÜ™e»eµYXÌúVÇ xÇý†O6À#Pg¯l³>JÍ+ž²©v•ÃÚ˺BLtÖ lò™…ã:_¨]$f„që£è¬›âvqTçAÔÕA—ž2¼Õ} Â;\ÍÛm7eXMúëÚ[¨î…Ð èž•p›`‹žõÁJµï²Ï¤M`²ð´Ÿ‰ûZŽ0Öî'tgÖeVkq;š»œ¬û¨[à# ^ê%¯r û†)7‚bñ0qŸ1ÕqN5_R̰¸ù§-%¦ }’/û i+1V½]¢Š­˜ŽSÉË×*mÝÇç_½‚=¶¶çWå]š‘Í<ƒ­íŠðŽÔí¢Ðº@Ãx££gA!M××3wÜaµ3:WÜ,,tž2OOÓ»¼Ç3 Öàuè ßlB4À¿‡³¥v_ÇTä0Ì”&®ð(Ç•K/ÍÛ Ê1óz×BUCßzeÛF ó&Ž¥ö190Zž—W#n’aAîŠå(•»õ§8„žù±ùÊ~Ää̧È,a©J³~ó3ã*wï4Lâa瀲…÷A,4K÷Ó9í⚢Ìz5Ê«Íß”b^ºF¡äÑöÎíš§ì Z3"ÖÇkÞî¦#L~Q(¸O‡á¡È£©ØÛê¹g?xEЯòá‚`WUo…æç§s‰·‚«oÑ[X$“w XÍ+}[§õK úH3yS®WçáÔÞæè:w÷¤J×3rÏïì© z 0·D­è¨»{¡Ìƒ]µªHœ„`ØÁªÈì×zfý»&¦RÒÊ«Ybq#Ú,Þ]í67ù«§À†±ÚûËs6ªðË"ÓjöÕ‘éz}ýª‹ñëŸMòA¦ˆd¸Ùzÿꈊç%uF€ñ©Ô=|²8ÏüOÆK`´Ý Õa©æ0õCãTžI§_qÀ¤kÃ,Õ¬ÿæÝË(jdŽõ!<}ü¡»Wts–®QúÕêÏÓfyœ7§ƒXîþÖKÕ~e?ù>ß‹Ê~Q©œŠ½uvV/X,ÙÕÍì­Op™ûÃ$"ç•2À˜~¶ðÖqvÛl›ƒWçŠn³#~p%ªÛ«e‘Íç@0²èUÆØI,#rñ©dïÊñöp~,ϰҡ£õúDV°ÑÞnñ´¹qË"v„‡UCñB®¯èÿ!]Ž@m~¿ñ„ÂÏѼÿkÛOzDØàR³ë9 Fïõ€v\šX%™ºª’Èž€v§Û[¢GT6Ú¹°Ã=ˆs‰8&ÎE›§—o …Zñ‡]Ïæ¬‚ÿñ  O£7ÄÅ!âA øOOÚÿy6íÓ(z«œc Œ…BÃÏ ‘Ì ò&-OÜ VtJp¾]y€ñ¼q÷áe§[Z¥ÓrÝ…ÇÜÜËËåQÐÕXÏR¯nÈÝŸ«†ç_~Á]¶_Ñ­HæDýYK•‘Ú=MWÎòúN¤€4ãçºN`ë>È”ÿ±_!n æ1)^v2¶Ç÷J¶6&³®¥OKʪuÎÃq+#¦-xíþÝeùŸÁûÓk",ð£úZóÓí·Ðãúmtï¼£¾”°ë¾´¨WúàÕw@§xL,wWŒšŽhl¦øµ[»~ŒÐA/w-D8[…+¥ÏsµGKÅ:½Ù<0”€ýõ&%õ©qôë ÚÕßî~{uÆÙ|‡÷Ün* çç茹ÏðÊ/HÅ`se¹,‡Ç4ÚÍ,+=NG¤_ vƒíTƒˆàŠý}‰î®Úþíͤ ³(+÷G`Y%á—ÕEZï0¹½;Ú,¹öšËšcž~Ç"ÊQ.ÿF·[q¢ïDv¹5n¯îÍS~—ÞZßï³…ë }d‰b Ö£Þm›Ã‚͘@w—9ÞÓ¼Ž3ÆëhVÑ}VkYw† *có¤¨õåÃÓ.kuÿõºín£žG>Àü£V.ENµ½V>Áßö…i“ÀȲi úGb€³“,Ç:]ÿdýwËE˜Jå¹È?ÃEv<6ÝÏÄ(‹ÃÎì´kP¥+…?Ñãºðm¨Œ5W¾ëµ›\©í…ÒsÞÉþ.’q±}êÏ€¿ºú·a/²ïþ£¬Ìi"ˆÞÜ„ñ<#Ñ=—N­©ŠûF÷‘l¾µ×`JÞöÏ2›ãÙ¿iF̤+ÑѨþ°oînÑyÿÄ¿•C3þÞªõw»Û§ý#¬šŽ==0Kç,—…§ë•ÛiÿpKAr¿{1±;úÁq@?_^Ú¢JgvWzدb\7úÃÙR²Ñòh ýç»þ#ƒè·å{sòbÎÚb=äÓRý¢™^0mMŠ0B›¾C·/&`ÏF Çít‘µV-C™M˜NI=¡˜{-¦È [ˆÅå—ç¥I8G·Êí²²v…FÐ*ý:Š€Dó’šÀ¼bÿ˜÷?ü-V/|yÁ]&ì]N[çÕ¡Šùq6ŸšiCÕ:•C˜J‡† ¬”g£¼eë’µt›—ñ¥P=ßYÏô ('ßcñzÂô¢žÎ£ì#¬ð9;ÅæK WùÜ=¨þ¬ÂäȶÖ=oë³ÙÍ”&ÓÞ:¯gß+ÎFLÞ»1€â±°²®—³;€^l9ø€£¢wMÙ×uJdoì0­¯Z{Ö—Øö±äFˆÉE,Óã/Y×µ6Ë|÷>§£[Áw&šß+\î|.ûÛWAçÆšAV³èÎÈxT›ôsè§ JX£·/}zÇ€®Nù Ââ\µr<}ÚW˜_G·Z¾÷|¼ ¬\¼p ?Ò»€lá2ÿZ´ÓÅév†–¥cý-º/kÕ,l>ŸÇŸ»¼ŠÍÛ}6ZCkÚ,sð’²3K¬õÙ⳨öŠëÓ0&Òú <ðo|¿à ²ügt¾Þ·ºQiŸy×ËêࣿVÕ(°Y¹Ôj Ž6N W>3Þ˪ȼðµÖOvÒ¢GŒìmÖÀTªsý×ï^õ¥ÓØŒÄL舊&.Ä)Ó[½³•³&1ŽíÂÅîI4÷5´µrÎçó@¿'±X¯‰ßB»†´oº¿“€'Ìù,Œ"±ó ­¬Mÿüõ–Ñ|~Oš;ºÞo ËÒy¬½¶æÑ_ñnë­è{Û[)º—£¬T¹ñL£××Ig¿~ˆ¡<®w;ˆ}áª)}üLI|:Ó÷ç¨ôƒÇ†Ñ:Ü’àùgçØ®–kØ~ w‹/ùU£EåZœÆmŽX¢<{”Å¿:‚ˆK5h°½,|Ñÿ®¯½d/Ü:FFàƒÞ}âf{ušåű3Q·‚“›äµ =8Å7…“k×óHÇhñ>pñð$|—aõl»µ:c—bKºÈ¿Lü$¿Bóuñ$\ÍÊ<•i¢¢‚c÷â&ÕͧãX”øËËãâÛ4k­}ŸÃÑ~Ö7âSXïõ ‚PžèWź¿nQ,‡†mƈÇ÷Ñ&ô±`Ã1{gÑ/—Åî-N²¢x/oØl½â¬µ†Qà«q} zï —ÄÒ2B¬þJb¢ßôOƒ bw]ù9ª5ŒmؼÁkea.ÆQþŒGÍ>÷ªÙ0XœÌVã¡w¼=•Ì>ÇÀûÞÇ †Ï£o5K'ÄÚÛº.6‹wC¦p(™ûv·t…´lìÏK–Âz¯j¿ÑÌ:£>MK°h´ð0|cð;{4&p›¯{aµ8ï]ò?}sМêJì·çŽðÙz­Þ›tÜ=+㊳¼ÏÆç#´Í™wb=YÚ]ÁîΜúH^ÜEøg?'ðQŠù±ü<^í>׹켰ä+ªc uÛæç|N£S¯G ×" ÛÛE®ïZo„´­™Ü ƒÊ\j¡pbãÊÉiäÛg¯#mž ’zZŸœÑ}ëÈóùã±íÿÁ:‹àzÛ«áTÓ:_ä2!ÌiºVmpÍŒ“S/ΧYkÉ«‡Uªœìu@CË 8»ìO:ÏówçДTÿÆ+×8P6¥Vãúc^VÌÆ@)v/+ûÆyÝØ;ù<¯TûÕŒúNU³3è©éÊòí»ÈõZ¦±”ßzȈ®ikclاw뮇çUÏ&†øé=?lòàåj(P}Ü®YÔ0ªHã5)8ƒÃeºþäoèÑ4¯wïíæáyï@lìßÇÕ–À´–½-A·¾Åì"DÓdƒ-sEä°ðIŠ'·V¾&A‹L°~ê+ò‹ÔäAš=Û³µB OnV‚Ž{e¬·ÑœqQò-^ƒwº]˜ßL>?1u‹¶Þ‚Hé4ûô\jâcmªÁxYnR{ö©ç™¬eÒ]):{óÓxÚÇWÏyI]¸Ç}Ù’:äPãJ-QîÞ'H¤X]é gËoÙ, w -}"ûÌ‹²Ñ˜Û 䯽¼2 ý^+n„ ½c…~Ww_‰A4ß‚Öí£¸­OÝÕ0Ù½à L›Mp¥GÀyŠß˜×*ÔIçY/$T÷š !‰îÃÍÕ™ÄÕÂ1Ç4¢¶€¶aŠavI“ŽÚï½$¼Å´“v¶Í¾ÂbGsäã"Q&®š)Ù­oºÅ.:ï-Ÿ„›c>R7¡Ff’³]öL»{)äÓì²PR¿|Ö(JêBÈÉ÷6Ç×8y*NºÔ5Õ€¶E2¥äÍêÞóc@ûOï­YT¡ªðÔâí&ïZœK:|®œ ¾=›`ÜØ!Y«¤ž¾æÉÙ °‘}³$Ý+Òý‘”  ]S/°mT,šæ…–ÕmÖâ)ù*9<òW •EtFv”8)ïP³ù*Û‹lâÁÕ ìiP ºBT®×ÚšÁtž§?º2+ô®pØx}e±xD“i𺽽|¥Ï=TÚ'¼T¦ö^#'¬Ù¥×*-{ œø%ý •9¤‰(Q/ú×=Ãõic<'’:í¶®.TÉ£ê‰Á–pk¨·áTɾõ÷tÂw‘bm#†Rº¯Å{þÕq§—šOP[<wªÆ}î/—óC1òAfGPT+–ÆheÁÍKõ·– /—´cÎn^vÊã]ƒ¢·Ì“$ •ûK/%] Éìã¸û8CJ{ êl;¢SÆÁÌoõøväs°ÒO0$b÷4Y<Å7ŠÑÑ×/)Ê›dµ àóZ†ôôêàŠÔÛñDÎ*Yƒ’UF3sU}œÈìëƒÝr2)èÀAÔ¾Õ[ác½nؾ˜ASòêýÝeÍÒ†cg@gþ7|wkì ÓVår²¹×ĺ<:›oºý=<ªÉ”ç—ùƒÎDŽpÓÕñçá8K6»¡9Ä›´´Ž¯\ƒAáê¶ |T ÞP=ef»œlµ*µ»}ìsã¤B–kï`•a›ºÒP!\ôÊ ²Ûç^ˆZÙ“ Êk8xµ—Áã8Ý«ä X}‘œ1-*䆽î÷0"Ÿ‡g¹[ƒ0x“߇()Äz ¯¥÷õ=—WK^l¡O¼]Øî¯Ùeǧ”×Oz^vå¿WßH¸}ÞŸ79ÚÝ?ƒÜ\ÌØI8z*Dôä¼ßMÜl›»+?zUÜ  í¿>/²¡ªy-„ ?ñ…,f^65Ìi?˰S Ý÷x/‰"-1½|ä, Ìø‡¾‹¾tÖ¡ÖZ˜1¬Ó-3>äìf£?Û5ª:Þ‡Ç*’_o‘ø{_µ+áŠêý+£žyE™w²~Ä¢,HwÊ¡›ÇNȇ/1_iÒÞçбÊQ/úyqcwÀ =os³:¨¥½SöêëU¢®²üT\O|Ì9W.¯^Æ–Dj¡“Ìq ýƧÐ|øÕ6'*–¿êtbÑWÅnçbÎëQÁ•M\ÅÅÈ|O³Otâ*·R7Ä&8Ž^h’é¼Ò,~n™Y±Ôw‚{ÔP$ðYÔŠö6)†¡MCàÓM™Ž$•!in[íJKâæuØDjIȯòg³3aË|†"3è¼/”Îf5¡ÀuöáˆD^~ÎìÇF4Š/·S ˆ´›y:6÷Ñ¥iFì’Lv8Ü™î¤îš¿HX½gÜÃf{]»|3g©L§ÊŒ?ŒË[U’çj4èÐ$”rP`ÀÁøÆvÍLŽÃòß«h7ÚWÍŽ*¶¹æ•Ü=çoÈTŠ\6F8—CqÖ¿À†y-:kå–ö«&¾Z í »ã¥2¸4oÔ 0j+­C®ç5þü©'/¼?`ÃÁæ¬õ~Äù*°ÁÂB[-†Z"}-Ã^­ù!»¬¼¤žÒ¡ØÊ ¤z ¯cRì­ÛÃ-Fµ5Frèå§Ã1óG¬¼Ç‡ó¢±Éalîoê«Â£pôŒ2bCz3îÅϰ‘H¤@>É}âì^Ìô͇(‚û8¸~ý _¢°yhê_½årâõá© ¯$blÞw‹át¢‹6®®l¡gÖ‰–:zíxÕ_÷ÏoQN‡¤à9ìΨÎöݱ9#Äwauñ¥„®´Y|K´^jwždl•jÍ^Éÿñ¤mrÓ'Oä5ÞÛЫ—WoâÃ|Ö'öæï K¿‹Âþ›ŠéɺDé“T½)P ;·Š9¼¹KÑÚä´Ž¼¥•³þ{¥o +&§IêŒkG‚¾I€–`¾+€æ‚ŽñégØ:`Ñ6·Ñ9/Zçrv™Lï•ù°­X½o;©¬çÇ ½¨SÝô4ÏsENÿ6†@÷ÅœÅ<[ª{Éqc`O{ˆ”[Óy!ïe/û±”¡"È®j‹SäLl£Ëk2ßÇI¹ «Qͻȸ79d&iÖœèµqûá°WRê€Ù~˜GoªL¬Îûd®½j{|«/3ÞtžEa{·Ô4€woó¼_·N5õYfýÔz/ÈɆ5Ô C7üÞ.GÅþ!ä€ýFW íȯ˜ÓÒôΣج٣s?[Mnî¯î¬¬ì{ Ý=1a1ûÎw~”bþZün—‹Ê:½kºÆ_‡q‰×€Æ'‚óÇ̈n÷­`ŸÕÊ.Øä [ 8™:6•IK5NDÌn˜œd&»¾ð-…yw7›Æ/ÊâG¤žýìºò|t÷O€›¶ÚïÿÁ¸yJfµîü}T¨ÊõÎ^ªµJx$çp«&vØèŸ¿ ñ«N´Ä¤[¦-~¹¯}÷bÍêŠôs=þ+_Æsày4Û‡¼–sg¤‡‹óÓ)èi}D|‹þÐär„z«Ã™é>E·j¬÷¥ÑÞ-L£´íK…“îU5¡"àíÉT Žy¨Q«yìÇšõ–ÒhY½ÓàØpmšß£uüWp¦…%šÚ{CÒÙiˆ†¤ä/$r=n} Ä[³ÁXäÕÙ—ú‡¸“~Å4?ÃÔ åBý½fnÄTÍÎ =vjù*)ÌŠÙ!-ôÍSð¸y´1|¦¿äu–@ž~sæ¸PÄòÔf3£C¤ÉYª¾Ì«ùm¢ÇC¶GPTÎKÅå)z­^!ÿÞ@'þ IJOØŸ¥‚×G‹¢Zÿ´ìwÚE]ò¤¸`IájõøJ•ƒ§¯‹¯|ÚOïݳ©îŸ¥AÎ,Â7ýœÊ¨_ )¼÷oïRÖÕùðÖä—ôf7³L‹æÀC§Pz:TÅÆž#F*ÜžeÄl}Ô-y1”qîÇmgÂóR¾×òË3»'tÓN‡f&­JÃæÉcÜ x-OËÐ0*DrãtK0]mC|g æe¥ú.ë¦!®³vÆÛGæ±íUjóò<¨yj{wªÖ‚f_U7dœvKÁYÈi V<ãùõ›e(}cx×ö>Ùj~T𹊡|ÿÍ’dDµö]¾¸êw“,U†£ÃÀòoê{& U·Ÿ—9~Z³r^ʲ*Áã@œÅòN¿PÜæœ_Ä&Ž Ñ¥“}]…Wâ›ÂBcýÛX7ìµ·ì‡ ©lVƒJ‰´˜µ¨'ú×ê° ý ÍIZ_ÉV÷sòêÕ¬jL!{ubÕ—»¤2 ¤‘!ÝS¹›Í^|Ì-°¿+$gœYí¼¾–w»yMòðC Z7ž¿"¨2§ø#Îûý´?é)éžÍ»]žÄ9ß7àt&ö¹LùÝ·žGÇxydÃó­Q\¨4ËŠ^;zÔAî%‹8^äì\˜Iep„5ýlÊ‚nAóHl›p..šƒð‰ ³Ë“좷ì‰ÐëÖ­„Â5ÜFM,QÇík}_SøÛ®fÕÎ ©&Æ>XBÑÒus\ñT@|ç<•ög§z\ês'´ŒÁ€€BžÁƒÛûÝèzÏ׆Þ…ÈJ\„÷aé†áÎîïzovY‡Q‡Ü¦Z9S‹äêO*•û·AuÒnØ’»rEÏÞ8Í–¶]Õ¦òš5¹ÉÞŸíòx88ŸãuºHÔ2«–¬yͱq¡i £ú/cÊ¢S‡Ìu½ØËˆÁܘ¥ìµRáÞì|Ÿ²^ç´€Â}sÙg¹:óa/ÀâåW¿Ro° yäU¥üÂÆ¬ÁÎðÝMmzb=dšWæaYœ[†›µ6ï£òúÙ~üú~×/sžîKÐóiÌsÍy®æ¤ó²ç` 9ißô*¶ó:ú|Öa»Oö£Y]KçkÌð@ö¿ž¼ðƒ€ÿbò8Fž-ÉÌõÏæL¥lw:ü»<ÆÌ]³ÇÊ^/üÑK¢P~2†{ö•SÖga®ß[G|™»›` ºÅÐêõKc÷Ö7bTßÉáJËñ¿Y/•ö­X|®ˆ/?¹/&™ûî ²\±ðÑ¿Ž^…|<Ù›zéÕÒ·0šH¾®}ÍlvßvŽ3Ã3“Ãù´ÊåczŸË£&)ÔÑÎÅýer¤1$¨ÐvÒ’ Æ¥f+Ï·¿}Ž7Ê4Ô]2™o±]𩺂?ÏÚýÇôV‘÷½ž˜ƒÚÐ;EuÂGÉJ™´’cG]2ts(NwøØXÂû¯ùû&³4ÓW5ÚýÃõ}.˜5Æž¹Ã"&E~êS5eâ˜|X›·š~rÃÓÛœ.¸üÚÄ6.µ**WÅ ºôøàVŒvæm*Á¯é¨¤#€Ï-œÝ(¼^éŒÖ0OÚ`më2Y˜v[Kïv%Š… ý‚«?ß$‘"랥Båó¤%¼üñ”95[ÍŽüWNKÀX-ýNKÿv´žW¼\;µFyša‡¨´ ¿Ùç3ûŒô*/ÇÌ×Tñ\ô ôíÞw•Ç2âR=v[€zÄT3¢ëñѳs¯Oΰýd… Ì¼pÁ©þ®AwÅj¦Dçól +tÉnª ³Â,XH£&¹å½Í)T]ê¼Üm:]¸¹³F‚|ô©vPŽ9[½F{ÅìaÜç×­Ý—#噯˜uZFØRtnØ[Þ%Ô*>.ÙŒÂUì>¨t†÷<,.j"w<‰ãAÍdhئj:¸-,;òÆñ¼^Jo¦ò¥iY yb¶ õ¸0BòÐj»Û v9•‚šÞD)–çü zx.¤{ô=My¯æ¯eó+ýÚÒ˜¾åélöºä»ì]Y³L§’ÑÒ'y±{/üŽ‹¾7^Ôq0<¬Dž¾êÁ¦þ¯á¿ÊPP^«T³cÎOÈ“ªzFw, IÀ.ŸÎÎÞe Ìœ_$‚%Þ5¬Í6šy}dS-ÿF– I"…%æs“Gh£Óˆ†Ì 'È@” x¹ g×o9UÊNãÔZ ÿÏ¢&ˆÉw6Ò/§N.¶JÎwÍGtØ/J°_5NÛ© êád`¹Å¤ í»÷5ýˆ1Ê¿>^Ü«6(Ïòærdeä”Õæ!¼ ̓Q”‚çhÒ-|».-¢F[àæÇy^-«Ãð"6",'ª4‚Å=5Ú„ ²|kLw´áa$+D[¯{†›´-”%Ù Óá:©0Úµ;»l»é4ðPFmâ]Õ·xfÇWÚÄLÌ0¤2¥wâÇ%f²³›Ûô0L 7Z‹øQÖv3yV—Ϫ`$5í}µÖùžãa›cÍdÚ”þ¨½éXï´#Á@“6~ƒúumn,¾ž<§í×XÇ»_spƒuÜ_PÚ‹xÆ@Ê‹Ž^ú"ã~²*Œ¥É«¼pnЉ˜e³zUaùìü 7<Åî»ÜæÆí¨<œŠ#Û|Î:»G.¨Á«LGO‡°O÷RoÍ:»+OÆõöƒ jøÙÄzÍžÒ]eÕÔƒÖ0ëÇvîßíA:_g­=Ó>. Ó)ÖùWv‡§«¬”Gí Ü8qSÞm¹g¶œÙÉŸã‰f&äs`Ð!’ÀÖæ…Çþpèu;ý»JCAÊÿXžÿcBÛè÷Ýá 1·ÓÄ–åñ3¹íh ’Óê’´Z~7m¾ô·ÍŶ2i¶*OF½T«¾Â!ƒò¡-‘7(ªÀWÏ—´ûrAéC¿OàMxgûÚDÈT»ç˜Ë—™ü¢t÷ñÊêH*ýY§ìåú­#•òR*ŒÛßÍ{o‰b˜ ó—lÈmÇz½C²îÖ76y«Á{¦Lºižóºµfî䙙Κøì·>9`ygAÞÓV]‹V™FVÒùµ—À«f¤ñŽÒíé`xÉq˜}åšXÂíþ“±›)ëfó‡T›4²ÏÖE:_Ü…PÀÞZÁ"_Mú„MkVHgùÛNôáôufssóÐß °st%gr¥Úóí«Æ?ÅrÊP“ôieLXmðOi¼ôût!vÙ,\”×ðQ›zþw:[³Óïm3Yíó» òº LR)eÜR|~¥ßýÇÙ2)»/bÆÜ޶¿XÈœÖè*¯[¥ ²’ø5”Z¸k;5‚¸5D!È´kÁó®S"ÐÀÜ’Mó·úïìmOìAGÜØòøÇ{êRï¶²ÝH‹åþ½0⻼Ut¥†5Öz¶«Áéú¤öxTX†yÔû @X)“ˆû/^ø•Z8!tÄ~uÜKvs& _Øìæ ­§-û²e6YèÇ/1=x?ʶöÕŽAÞ`„£š×S`s+·›rÁZµýV¥T°„¨ŠÙ|ýðD„þ®)7ãÖL3÷âUONÓ\".9YsJ”0u‰»Ó£¼ýðúãBŽ$`¬7×§R”×ís‰"¹j7¨1Nz¸ê²®»øap\ÐçASüNî{•àQb&÷ ¡·î&Øfﺖ· ŸÛ9av— ®§Hþ²#¶\¼ÌއsuħOþ˯º?¦k?Ü1ó P…¿÷¹"aá´<À-l†õvHdþ#b} U‰‚ÞC â¡¿¢Ê]PE»6‡‹´¤èîw 1וôCÐܳèÝßµêŽÚ'™aa)Sgv K¶bxå¼^e3séèzº°Òq³@µg ˜{%?Ÿòª ¸¡Š ˜·SDèÜ·ZÀs™6±Ëí¢Ñœ¦•ùÁöä&àY!< ÿ3†dA`2MœÕ=E¹K¸†ÏÝ>6öߨøÜ=^~h÷oA¾=Ž&ðNŠ/»eæÎ!ìùAy»1¤OUœ!Þáu/¨æäΖ'ý€jÖaJIÊà*4ÚçD·çcBM"kz:Òš3¾»¿ðɽb¥L5e{1³_v}|LNÙeáKÈ£—ƳÑòZ(÷…ÕY”îãçYÙ¨:ûœ³CJƲFÿHDÒ€rTp¯õ¿º“ 2:O¿®Z#`‹^áÈÐ.¢÷äpÍßeN½Å5(‘е  =vßc»PÃ¥!MØÐ„¡‰ÅjÄòÍõ¨ νÐÂHçì¾\ ¼3çkïgõªîB±áó×¹ ÐV²ÎþÙœ@â„‚¸æew–ª »i‘h£÷ë2¯RߢO~vç†åH.ÁCòFI»žæ'σSøfÚH£÷.šLÈ´­Ðw¹Žæ;ìó&!ç-ÔÒÔÌßH£ùuq5¬L]³}ûv‘e>蘳n>¿vD)B^v¡aç^°UO0€_óíÓ¥1olZ¥´[zÜéßeü{U™gÍl˜óý®öàhlÓ\ykì%`%]&x¯ÌèèeÊDڜۋéâ\¹k±}jó d•©Ÿ0uÓ Y£«é¤l›Ûªê£R{)+ÐÞîòýœ­VŽæF”ÁMÃÉ{öd9~¾Ïyøy[U_ ‚–Øð¤Üò&¦\_¸÷ÅçzýÚtµ«À—Õ$Ë[h^SØúÜiŒ)ÕÙ<ªŸ%:¯Úiduø$˜]G;*‘}8@×ñâ,ˆ»­R_©žu±‰×½µ»i^|.pè¬Çâ;oI˜ôZ¡i€¥[zË ¢ ýÞò>Ñg\™fÇË:(:uj@ßgëE«ä=…i~?CÛVW¿AŠÁÛxd|j¥}iô#ªz=a±‰T"E}Ö–³Ûž8tå¶94ê8Iã†Q 2ÕF4É.âL‹‘:WlýÜJĽVOvÍ9֗жx²;$p·%{Ü«&Ê”†RȸGÓb:º§ªr=Fgß´2ˆß¹râ²òOu±"›9šÜ$þ-k!a`·q«æÔ˜AYzby­\²¢¹uMÕ™@mò‹Åæy~ŽëÑ£<Ÿ!côfàg|¬¥›§VndÇÓ¬¼€1Rö (Ÿú)«›Ún©º—P;–è–yúIDR¥Þ"ˆVtIIüZ óÏÄEÄïPÏ^/¼#‘Ëž'í}©0ìܬ³Ð¯Ÿ û&~¾OÀÂGÓf5‘[PËrì:µ†L5È+ÖF^°6!{?ØY2YÙº¡•×La½ãií*T§ù9[HÍ/4Œ¸[ &®뀻è†ðôÅ{»¬Ù´G/õT5p´yœ`Ü\Y‘ïx{лsÿ޲½]äñÙg^ÓËÇàqæ=ïŽn<é™ùªt f<°&_†8+Íb`$áçµK>·ÏqßÝNÆb ]¦i9äß|óuá›Wc±“™a™›Î"ƒ¹”ÞŠ÷£Õ¹Ç`g (ïöNÄx±¥yŽp𒶬‰Ê J©ÃÊÜ¿Da„ 5œj–°g'×ÃAôšC%€ì×gða·µ+ÆÂêMïm½ Ÿ~‚ÇCOÿÛ”ùýŒÎö0‡¤Î‰«ŽEÿÞPo…úµPξE:èNF5×^¤µgòŒŽ·!÷¾'ÝÉWJ”HÅz °0°‹™óõνp÷C„ßúì0ý¼·ÑkÜÊüì\¤í…Õˆ©öy_<omÁëÃ4&ô—ÒÕò6XVv ZæÙ‹1 °ðô­‰]îÍÿNÝ:_||$ðI"XÓüÀ(½ï(/uûßÚgÑÔý}®@¥w ï‹ä^×°ÚäÚMý¶¤ÉÀç‘剪§µ°ôt å©–ºÂkâë:'©nmþ¾áˆ_ž ÜCاÏ/?ΈÙôÏ~_)£êç[,Oœ~¼q¬ö ‡=¿Ã8Ã)äã4&•ç z1X7Ç×WÆ™™·¯~Œæé%¬(³ÆU:Êh`b/÷  Ò¾þÐàýS³Y ü"Î+ÞD^üIAn¢L>Ï‹y\=“¼j´¤Å¤¹ÏhN-û_»™Óó¸°<µûIªùX¨ÕQknÖy­L4qy–kYçwTnAkn6 SzŸJ¿5Ûq(žaèÝ<œ›˜¾d@ÚG“ë¤è¬…ÊÔùÍ·Ðî¼+Š]É¿}HÒm¦àðPgxC%¼Ï[G(€Ûñ~KÝÃöŽ¡†®X\uU©ÌnJö5ž±¤P¨—ã'¾+înuÔJÓ€÷5SÝËm§ïÌvGXIÆØèˆ×àÇzÕN¾êî1æžÁÕ<ÝUÙqUÚmzbîÀ1VÅ*44_81Ó|hGÞGý0“𼾎·=êV¨: d=˜ŽË¯õ½G1ýA,ôF9—¹ï)Ë›ïö²­'ÓEKÚ¿Ž•˜TŸ™[iµ³W×ÎgÜp¢÷wÐJË•" T‘Y8ºíqXT 𪆛õkWÔ_MFž‡èÕ©´•›þ̺ˆE“É-<Òâ}JÞ_-ÜnT—ßK»®w9Å]¶Å5“œýZ`ÎU:ÇmÊ‹eµ+õñ>ˆD‚/µ½%Çyãí+…ež›„–ߌÎ#hܪâgw®ætõ²5V¹m3;GìΧ̟¨É‡÷±D;¸—«‘ñËþV+)½{Z?»›¸½þ17¹¬ö_ÀJ·ú^ÝË»oM½!¬®óÂEîVG¬+f…‡-#;…zp—¼ç»©çpDgܯ„5U·3Ùèláí(=θ &êúz S˜«{Av£ë¢Ö\켲ѫŸ—ƒLäœý¼2gm$ûÖ,¦úØ€Â$R£w¯Ä§~Äü¼Þ&B{`ü:§³SY¡Ö Œkç‘íTõôۼݮ՚óÍ٩ȼ°ì„/ÞoëÔ•®}…ÁP*HÆòÔ”õn…KÏpƒvüdýŽ Üê—1sÿ$¨ß’E›¤‹óÅÜ Û‹WîÆC Iˆ®Â¡v^ÅO§n®áû®®c `æäŒ¼ösýº£^AÛn×'ýþä6k{~ÁÇ•››ÆlØÞ§™£É’F-ÞïPëlûb´Ûýíî—ý½XIAnÛ6Ž- T°ë:®{ã>‹QJ™W,ðê§šEY9¶5cÏvmÝ¿F_IGÕ¡ÿ[¬D=ÊÏŠÖÀ„GÖJþ¦~Ì­3m3Ó»¹QZ}/Õ<¯ºÁßD}Z#šËõÒ+ƒá;kê2‘â<¾cæÔ}ýˆ*’#ÕÎùг—{Â+bÚ–ÓÛÞz1»K êJ¸9‚Õa‚u³by‚¶ž´\Vøö[zœŸAÀ»pG½ ´w;ŸÕ¡ŠØÙÝ“6¶ã¼<¨ÇÇXZt¶(„ÏÔQTìñj³§ôåXB: Õ±9îžj—W“R|Û_Ðú9lÁ týÁ€÷"åÍ xH1,CÉð `Z$¼,—Êúœ.Yõ™ƒyaCÕ©õËWxT©L©é-ØäV"MÌñW f£¶ûEI†h’2È G{xô¶T(öÛqÿ Ùù DYIëˬDï|¬o9oœ¹¥x7X¥öÌz+5}gûù'_eÄ(›6ôФíÖymP”ïh²Š %½;«ÄX3(é ’2íEeÚš"÷jα2»¿Û†šUðqi{xÛrº]°Ðlÿ¹ Ǧ•Â9T*â[ªBuú›¤9úÑçÁe kÓ!¨·7ußî{_¿]У¼ö©5Z“-£}Ç v>ì¬ïä¼ÿ ÄBã.•„£u’ËJÔz„[è.áNˆ˜0Ë8d‘½?ŸŽÎ¶a9xõk÷Øïµ¼gJ oK\ìWòóÇ·uç{ ØFÕ¸ŽÄ¦óL»|Öʦa¼,g|ì÷dWœ>–W£5B¬¡ ¾òrZG-ín(³›q¾Ú¿/ R%¾Ò|Ú+V.¢Cy¥Tج_ûÌanœ¤‚@UJY±ŽÖÆÅG ï£î˜¬RÀð̦;ÕìÅÛêý×úšz†VáC½¤ê‚½ŒRf¨oŽ»þáÖ=eœ;\n;ôÑK±‰µ6SÑä¯:Áyp.Å* °ð¯Í÷íåfX(ô0ß•ª²ùÉ9¶Kᔚ—m+D5m’ä_t {'mÇ#Þͺ…wœw¶—D¹À…§iÐ@ßʼ‹—^Ø’<Õv)§™#øChAi½?Îáò=†rìMß¶ÏIû•} 0Ò(²Ìß4…Ú)wÌxùr³ýþ-0|÷öùQz¾}ÇyFžå {Hr%ëêã¢ìçuvઋÖuL.«ÑäiiQ5QÛÅôJ>W‰g.Âꘗ»À"Yíý›âÇœ? 8$¬÷Õ¨gDÿ©fo\\Ú2V}K‘`«ä±FZiöä4È¡¾qko–V6ûÇ–Z„ÀÆÎFÒ® I)w†øF$˜µ’fý/Q§îÞ2•îçÍüzÑ™s¡öŠ’ƒˆ5¨Š‚õJÒüØæ_ïï÷øØ§Ô3ñ.P.œ–\§#YéÀ £Ê¼»å+-Cüý¤A2ó5‹8Å[uD0Ê•à_­gºÍ}çÿª Q×”´|ÿaT³ZÿãoàA}Ñ ±-Õ9üC8“|wšr–#VB“^﹩mÐ÷M&3+°¿‘¹Ž&ël¬^é·Ø¦•ÁPzò U \ÿØåö ñ§Ó³š Í‹þt€ÀÙôxôëRgžŒû÷+÷c¼g”SÓ÷#Ó—cXzÜ¥ ¤§KQ]Uëö»/!Ï'ÞÝÅj¨Óî¼>rºÒxÅÛÁÇ´ãzz޵ɧ?ª-·¬õ ¨Âgïba fò#›¡Ú?‘€{×ýéñ†qûN ŽŽjÒ¼ãû4»l6šÏ³“™xsq~¨às¼h®Å¤p·7BDÁòL¯)ƒ›Q|Ç@=ÃŽ„­*àoe\È}(KO-þBCëÑ ìšGUqIÏÚÈK˪×eÁÉÜç¡1r¢óG´I—“l+wÅ™\t ”õœ‡ö¥ïxq·…dÞì¥lS­Ïö^m±5w—…cà ~`²¨s‚Y~º«x¯•·'£BûÝÆG6Û3øÝDëK`¶Ì>%jR¥GJù„9N4›o" -9–qço°Ju÷ d'ÚA¬çe=ŸAͬt™‘‘W _5ñ–º[å8`Ô53¶ñfuøÏúÿǤÿÙ§æŸüûüœÿj|ÎMüËÑ-lå¿‘E‹Êè^Ò¶œßšH]õWÔõGaµñ‚ d‚uºH¨w*ÓÛÄïïü!„+NäÍÁj´nÚ}0¿¹ëç¦ÃvõÁƒ^ÏjeT3¯1é~8¥Fظõ¼>òΣÎR!ë¾16w´T~ׇçQðùá §tO˜•žâÏzsŒi­°~:”Þ{ÅûÅt…Zâ¼<’pú–ÈŠYZQ7ÿÜÛ«x}äùż³)Ú7CmQ°¦Œ°1Q  |fíq=qÛ®ÒdGíUƒ˜>õÕì8KêÃí''#`Ë´zârt:£s8§ŽóxÈ[Np­t¹5^ïÂ$Ä„&U;KTBÙ†§>•¬ì·^ÅiÝw>$ö ¯ZO|a÷â)дµÜ€JD2åcæÀnŒ$'†ëÔöc+Ç‘¿ý@s½SÔ’‡fº§ÌæhÃÌv©Ôü` cº¸ôA‰Å e©Ü=˜uTƒ£K×”g·ÕûæûÛSîÃ!?çVç;¶~l¯´–p[²Û£ªñè]|³ª~OžÞâãÜ~4„¼¸œUw¯å+AN7꯸ôèðKë,âöjÓðG Ø:_[v&Ýúl—âö`Þ;tÎŹ—`ÓÊ„;Ä ›Vì/< ƒ$•H¿°$ËŠ\±:n¯LºéAoK|ÃC®ÝµÃ#<”[éƒ}iCs+ß$BªîåæòYÌÄv œÜš}œÝ_‘ÜÔÎ…¶|¯r+ûœò1¶ý½_jŒÇt¿ïÖÖÌ@8á¯ì2ð§yqNFd[|MΊÁ®5êõyß zOà}i¿®~£´ºU™;ø‹ª'.^Å·Hñâi;™¿’†w0ÅF±®qù9•2(÷³¯iÁëëóï­¥ž«1Ði˜ÏHšý‹âcT™p0š£î1×Â{®îí3·ÕNL zï8_êòÚDþr •ùˆ¥Jb$¥Â<ë ©k[e@"ý©Øt“à;ûþë æÒú­T²¥± E^+¾(ó ÷¦áüBtï×Dö«]gb¶Tä”`Þý‹-¡SD•cGÆ÷CçÑRøƒ*LbŠk™÷sk|ǾànŠüj^Y®Jrà'‹¢ìpW¿þXä\Ÿ«­Ýbm×G ÔúìFÄh ¥ ìòº§Š#Ö©ŠH ëî# ¤âý^·‹G}uÙ±ó3ûÁ½ð¾ªäÅ<וg ¥:h£3DèÞ<ðÁ‚®2ÚH=ÝõÑ@^ß´¶ ò äè·%çÆm²h°QìŒóùórŸ×Ä¥õ¹MŸhªSÙþÕ£I·/“ýUJÝe){À೘ö0|¨Ò:ðTmÍrKFÜêA(+éc‚³ˆ+M´öxæqü˜–Šúf>†®ä³ÔÌu£TüÑvбóÕ:u8àBM€Ë£½Þu+ÄÖKÛ4F‹F:û aom:ÃÕg—T‹‹‘*gý8ãÏKüÕ™Zýîlã0gÂ-«bb,õ‰wi³ƒ[vÃía¾—–Ùßžªïi9X—dwhè¹×>Õéz§»¬o†P÷©`°ì¤baØ8Þuâêžé½1&ÿèÕÛØçœacjÛ±í2‘¡6a¾'øyõYp-~Cæ;v±r†ÿ ;àÏæßìhz`Ó¼;ïæÐ$j ÊKäÐYÎTÛ©nAÆ6Ypì²£·õ£xßvJk­Tr(Ͳàw!6€°ï¨BûDŽ)£°¤»Ç|P‰K^Ð×ëç_¹½N˜+Èm7´ŽOU’ÚMQ7Ëp¼ª•áXé‹Éå$.ÞžºÅæGàåJKlŽî¶é§í)té»ÃÂÍù Ñ+³»ºÏ6º\GÛ’kTÛŠe¦³vÙóm·Þ“æÁƒÓ)p³!˜7¶•E„÷{/ÄÞ‹]ÍÏëöÉ»¼¹?¶½¬ƃêûî¥ÓµÖ€¦Ô¯SjÓQÚ ¯D©Ëº×ì|¶[ ~Jà¥ç¶.å­6_¡†í´œKäú?ð®¶“«zÖh¬xãMl5}—IŸu0ÂÏ>¾½¹—ß½L”–¸ž·ív°+ii-k ruìfr*iNƒFÊaóî†Å²2­•f%s‚68Q4•ø¢%»æŸã¶àس,4]ŒFó¦Ã³€~õˆð8Í<“×µlêŠÑ‹$øJº¨æµMZšð*y¨LJ…» ˜3:Ù,ÇÂeKÅê´Ca§,7‘é7*·tCnó*à”¹«{÷n[pú&65ëñd~:-|J%é饬Ûtã¦2ÓÃò¹6ƒj |˜¢U.É7 ÛL>øZ•ÅtËòùwÂmæ/ïè¾€<*åÂlâdÍÖ¡¨?(]]}öòëù ZŪq_€œ¬ô¸×±ôCˆs—'U‹üDúyƒ^ȸøiµM ,¤±Ñ³ÊÈ™ã3®­ëëÞö9ß%]ñìÂ/¾–¾SsbV×V.o¯4žpHB†,¶iDºC9íF»%ø+ãœß¿r'¬°^–N¦µ&¼V,n®öxdÀzï®öÃ6ýZƒÐd=i,é%({vXxWeý¤&÷Ö¡ y»Ùa²6Z®3@áÆJ¸Gìüh“œ^¯ÉëN¤­ŽýÜ ðÁù9ï¯ÔìÃâ—ÈË7æï{GøcÅ>ž•ö‘R$„“ͼBEqV ]h7·j^4¦ oèŸSçõUÀÿY?æi÷ÓY'|±:×´•æl …«ïAf[½â n¿l9=[Žs“ÛøfïÕàþ?äýY·‚@Ö-ˆ¾ó/hDQ°A{±W¤Qziõ¥~ýug~yòœº_Õ­º#Ÿª^ö{oÄ0bÅZsÊŒ¹€bš‰ÝBò5«84e +®BŽëY½£ÄÅR¾{M6_3S–æ-®²²y=/Y+<Ô}®j¡ÜºDÏÙ;¦4j"ˆ2PG–AÁÖ«35ÿëw2ˆ^W 4Ùlm%}½]m°VY‰U„æ«ZEŸ¾q ьҟj…]~zGçV»_€:‹»þäòôÖ_Gb¬W!iXù´ ú÷o?É Â3îÒgòš„“ËÃz‹†þ–B! Våj6– Ô¶N¥ávwsC‹h=oÅùWãée2eîR¹Y÷MÕ4yô¶Ê¯JÇLñpV†ô/œ ¸—Ùħ‡ÏnqÉk%›d{‹r›Þ†¯¨]Zp—ó4þ±y¨Ô‚µiGnkJ0ؤ^¬Án²ô×TC3bÞ{œŽ5Ch šµÏ×Doöî7¡¹ÓSÀhÀ¾0p+Õ¿nÁe¶÷ ½}- 99ž¦]i®nVÇeãÝöD %nœ­ú šï鯕\^®½‚÷'N³dó ׄ³Z‰ÍŒËÏúw¿djÓ p[©K¶¾& ùì7yÚÍSšùÔúš”ãíùâ(~ަÒ\ðA×­k2i)Õ쨅~£m"kB,¼ûÓ†~Ûtꡲœ2ÌæõÖ+ …Å|£eO¯¿õ¿`Eýd•bp&"Ly*½C¹1~&¥4/’mîÓDy²æyÏN 9i-§s‘ߟ€ð”öÏXéra¤I¶º×%gCù!šv0L¹.ƒ¼ÎoK5ݹ ÓÙ<9ÖÜ,Ï? Qâ¥Eå.š^±ž|Û+"oAÀ¾š¡ÊòÙê}¶“î?¹—®îù>uˆÁNíÉË]¯®}ÐÂ!Çð­„¶ŸïULzu¢):i|ar·¾Ø4«)wëQÕš·¥Y fpaÒí'—ž¨Dæê•„&e dØAg¦yâb×(ä Vš.6…»ÃX,üCÚv?Íj‹“¨Éu¢Ô)ÀgÎ+01¤êÝÖF?b¯gÝûm6eW9”¸§_؇#!×&jyæ·æiµÈ"~Zv9L ÕÃù†–à3×ðö·XÝåµ`©g)(®sœŽ§;sòÞδàWs™GŠLKÛ#kññã•·Çl—ŸðvsW9}Õ¼|…µØšgÚÎÅ ñ¸l.Q¢É€¨›§ïtûß½“}^\õx˜5è)­5|ÅÞA9Z•çá>[; ²éÔ·‡¸Ef…›ÙoÑu+£Óær5¨Á·ŸÍLàüÕxš´Kbó\w¸æþp¡à‚ç×zŸ)å¥m†ÄõÂj5r¨ˆ—§DæušNh·¹xÎWSch~úª¢ü®ô‹Còc×Nì÷0§z&öÉ!ŸOtÊiËîe’_γíæáºo.ÀFäÓsbw3™-+CyÎW'Ÿçà,¥àý:¶®Ù+ ´û½·ßŒ7âfñ»¢BÞ½ú9-´oÕ%í|ÒEÐbµ¹!ÓE¸uÖA¡RÊKÏ Äßv› Òà»VﺘZ:ߦbù‡±=fÉ(×}H-¬¹òƒšEr^¯”°_Žlù’¯©þë3Â¥¹¶$õu†D~“yzÝiŸ©L¥ŸãTù‘ã  ™2ü«T‹7ùÜ{Ýòz7G­=¼tçhz{sµJF á~'XW âí‰LVc?õk9é$óYbîƒ,©îwWrG°"žHÔ¶î;ÄÒÔi/ƒ5{ˆ‡r:Ì6GgQ³³DüûóÀ¶:q€ÕW¯Ö \ÅfÑQ1Ík‰¶•!ÞÎ0xàds`_èh»À³fr'îjçªN¾uMǯöm{àå7‡ žÄåžH¡±³>ëST¸=oÁö-ñy)êíÃú¾T‘ ŠÄyá dëØo?ùgëÑA£Üúšo„áÑ\7Hl3¾4/7²32s¾¾Ye¿C–ý…p^CÖxŸèÁW_kë«ÿ§„ìÚ¬eÇY&¦Y/úq^íBäíú_p{t=º.Ýúܲ i†²'>>=ÉÐ&ãYëQU›’+Mé&þù™þ†ÝtG¤ÔΉ{5±Ã)RœÓºOÛ¥±‰”˜W*Ä/„Úþ&.KTÅ©µÏ|­ÝÄwKQ4´VëÖ© ”œë)“®=îfÕž{!g©JKð[ÍlêÞˆ3Ÿ‘yÙë¼n4«'µ|âús6 †K—9Í&åM©¸û¶ÅçlÛãG3€¿4 †W©¨2«ø9H,o䞥æ÷ŸºY£7+˜áõÞùzbÊb‘a“É%¾kÁ»¤B:÷E\¼I·O-MÈ•€jᬣv^Ýêó,Ö sÈ|<™vÉ<…ø²Cê½ÝeòªùÂ%‘–B·ÿ¶²ø!sÄ8<ÀùTÿ8ÛÏŠ$@fÄúxŽuû.÷KÌ™þ2çdÞ“Êì»{C—÷øø#Dzælê?œ¼îïÅWñN/¨ÝŠÉÜh±²³3= ‡-àEèyÜ6ÌaåÅŽH¦6—L-NócŸ©Õ~è©@²ØÖžzi^íAn½”ùÅŽp²R{\Õñw"ç$5?ƒsêmßVG r —þ×âÕÁfç]E·Ü)}[0œÉpð|=ÃèÖIbÿZ ÁN… {ðqË&Õmk9 28׬CïÞÚ/#\<ò› nŸæÖÂñûe{³ãðãZoÇ¥àòƒ€ªôÈ/;ldÖV˦>U…e>k/Ì7‹<ÅÍÐdqõÄU¹â²ùDðA<„ÀýÙ„Fóñ*€ÁÁä5Œ‘?Jûb3¨å”ò=*ä¾;f¦ägmDwºëÞ¹m*÷VÑ’^Ÿ19Ÿƒ\ÄÕ_†(^öÃÐNÙPmà-Ï&º0ûêB2³ÉÑø±=@í3“ ¥‹¶CÑH‡ ²¼7ì­䥖šî¬UÎ BT¡ŠÕ>‡LL ùMê¼æ~uŽ­v?œ[‘6ñè°¦IØèµÖßîô|´¸^Ž×OÓÍí=8Yu.†8ÑT;9ÔVr5t"m˜Ä ¯ç½?nñ„,Á*w:ïFµÞtæåPײœÜ¯u9‰Ϭ@Eîaÿj=ógðÚ8à®zÿ«Ùðßwû€êªp£$†i‰1:K˜óÜÃͲ©ÁOYÝìxU%m *ÙŸ…ÛâåÇwgƃ-ø¼9>êñ $’Ãn$²‡VÏü6'ZOÑ×*¯Y0Ñ-Ñ£­dìAǺ î¶ñ 6äµ_¼’{sü‰øí7½Ó´¹ÕLàªÖ(ÆàÿäÎÖÓÅáµ>þǵ"ÌÿÚæÿÉZ‘Ý`ÁÒY‚¡º* Åó%ÒeaUÄæŒÒ+ÂtCÿÑŠðK$.»¬Ü>ÿ >s+LÑjd(®<½­èVËþ¿¨ÉEßÜü«).÷mÁ~N à˜R,Ì T©ûÖõaÚ‰seË“®vÄýÿ»:‘?™ðŸÔ‰üÉD€ÿ¤NäO&ü['¯˜å÷]©¶áÏöœhÖb÷¿B,ÈÊ06ü6uJ®ãˆ#v‡UáxµÆã«MžË,Ÿe¹:ONUx^ÆØ¸Pð‹ozæiQ½nœëjºÙ߈]NÐ8*¸­SâmP\‚0ì™ÿêºåpSms=ö YN7ëS”Õ“Iwî±—ú@Ù!˜~N9*Æûlc5LQŽn‹b˜ý¹ZÁÛo]Нâèõ`E„ï£oQ®c5+nàœ j2¸.rëtªPf›q®ðxA–ÄGt”æà yѱ2FÁmIÒ“aKõÓz¶8ïñ¢Ó˲þÖ\Óû?jæÊ_G/Òz{4.íQ`•zÙ‘k@²´9!ÙsLbÑô½×˜m}íQp5}Ý>i¹&¾îšè/ı6ÊÜ€ÇûMC%ô­ˆwÊ ¦ÂÓ†v÷^5u×ö‘¾”y0 'í>ݬFL3‚Ô¼ðím§RéjÙ¬ ¯Ç[MûlªÆÇõRxE¾hbèfnÛgk øçÃY&˜š7èÒ󤨿I¼<ÖiË›ÄÎmúº3­k¯M¹,]Úg×A¯Zlƒ­W£Æé'že•cïð$º¶¼ ªÖ€’; nèæ²"2CèÒŠ¦…t ÓÍÁ‘®¨Oªó•ò.Òý É•fi¿mÃîö{°ôDŒ„Å4¥~±ºk¹Ð´eNý^£»rÊhL)MÃ]®†¶Zün¹§ŸåÊÛåÐ8ÔZ_SZ2á±a™ÚU†yöcÆøÕкÀ¤ÉT뫱<Ч8ÚÑOãP^è]:^5±Î²¹è¹–ýi·2¹ï{Ϋ? B* /7ó<Ç0ˆýû†jKÄÛ.cÕµŸPÀf'tAÔäêî5¨Ÿƒ‚l¶“EQq„üNù ,˜V ¹´âÙpâZ…½lš‹æã N&)§7÷˜L«·ãjþrk(ІÓS¥ŒŽf_èî‰õ²0*Ó·L‚Æ#ÇÎvóÏ3-ákÙ½ÙvÑüÃÆ…Ù|J-dLó&¥¡9uñÓ(Fcáý£m¥Óý° –9ãøð³S{ëë,§Ø)›mÝP¦ï5ݧáMÔ0ö;«q5Ï6Ô2¦Öз3â!ÐAÝnÐwq=%‹ZqÓ¬Œ¾HdŸ¼²Ê #C'¿½ùo~òr¥Ù@Ê0wRÞòóÚîÕn¥ƒŠycûÎÈò´ºCõSÔ@Õ-©°k  Lqô›yDw›Ù¹¬Fí4š,ÝÆ•?N:Ôî=GÔ%mx«-zÑΨ|ÏóáªÄ ëçlÂŒí5 €x“…Ó+@=/¥|ø»PIšÞ…[×°‡4†Am¬lõ–Žvä|ò‹‚‚ 8 yˆEØ¥– “êï2sÙvÊ[.y=wö¥`¤¶´&žWîÒ éåòp:•lg¥¸L'É^è9‡\ñ UÍÙùÇZžµ}6å2ÉA…«ÂÍæÈÖÐÌÙ)nuE¿Ú¬\èµüœ­²lÝ|þ`?ò(Î4€âZO°æéª €.Ÿ ¬°Ýu?øB‘Ÿïæè{óWX(|  D–^Ek<&áìZ*ô¤Ù=~bŸè_F©ó§úŒ¸N[œ~¯VþúZn“X\ªPš¤öŸl„c*ˆ¶ÞÖ±Ûÿ§d€ójÊà_6Cÿºôº‘´Ÿþ¡Yß),šƒ,»Ô«Cþ³(/õ:¶Óß§ü'@<}˜é?Ф|Â`,„Mëb¡mÇN2÷割ØS¶ƒRøàõæ*2Pø³·+ýËUäÏTøOºŠü™ŠÿIW‘?Sà?é*òg*ü']EþLE€ÿ¤«ÈŸ©ðËUÄ^Ú¶ƒ•_œ:¯ "Ô‘Cë&Ư¹Šn­:ðwô­ß]h° ½G¶Ât4!3½»²Ñ†½Èªë‚ÅVìkIÕ,=¢½À æÝ¾gÁè~„YfÙ¯(úr%„:µ¢C½û]iÛ§ÒÄ·é`3ðÃaëEÈÌåÚº K$Pk#¦“¯½—åNùÌxnÐo¤,z5À#p=4€Ñ½CƒÍæñæ•+¸b¼ÈÁÒÛ©† ßuܶ¹´í7£E5‡9¶Ö§æÑ67ŒÝ÷àd-¬MÒÅGvÞ  –4ûX !¦Ø{àMi±wÚuv«Ã¨Ë¾kÓã5³;¥>†ž*2#n71¿‹ã¥‡Ó÷@îA#=XüKÉù}Ø¿àÍVÕ»q˜ãnQø‡c¨û®ø(ºíÎê›õXAòbvÄiÙmåLtÜ ø2qK“nöM!®ÃÎÖd_þ+¨¿>_ž]zÆRzûá~:¬Ì•ÙGȘY©Fwmz¼èkMn¯Aí7ß|fZïËô´õѯÔ{N8£žàòjífùÍõ§–¾(ˆÔ¶ôngOy“o_+$n©´µ¨5Jq§]açòrFlA{‹ö™É#Ö‹Ï!Q±úÝ©4žyeAF‹Ãt§¤8¼aèµàiS\€“T´ÃžTÉQt¨â¹¹ï!f@_{Á\ÌßX\–%~s@%æGi`X…`5—zKœZj‰5–Y%bšb®Ñ¾j¿ÇOzZ:æ5:Òk<øTc Ò ·*6w)]ðÚxg…¼xE)ÜÏçü+§A-ì4›e8×Ûû¡ôÃð†…×ìµpz;\šqÅEÀ¹É5X.¨Îw4ˆQ-k•Ø’…‰ŸÙ¬¤Ý» ëíîn·×J•äÛ9ø7áù™S¾1ëK«îÑ…¹j¿|8eÚ¢^€®§÷°O_p {Â{¾TÓuÊô±>XU†Œˆø·Áe¼^‰ ysšêu$s¥ùD©ÑG°¨aí£ÅÉŸZ’]ûªœ@OT]ý0] ±7OEÀyMÎ2.Ë¡žv{*È.©”,ÆqefÌ=.7MŽr$öä|/\ó2rrŠŽ˜ôk;l8§4h*S¼?C¡ÇU¨\Åc…ÁÐðú’MÏß:›Ã»ù³{Ñõ«vÎe¿85²üÙƒyQnœòªÊV×pGlfvÛnf«ç˜ó²n»v¿aVy¥F§ÞLÌÉ9Ö’W2ZFšçb±Ûu}¦7Ê)ØÛ”¯ô¯±jÿ:´™–pdãÊ]ø6©Ñê|ì7þqÁ^£Êù É0_£ƒÐæ´cóî½&¢W—ýÚ]› ç®_&ëm¦ÂX\¶)uòÀâRh·Îkª ›šbÙõùQkò¦ÖÓE4–ij¸3åW9s(˵†Ýèuô,t›i^©QsÓY)‡Ï¾R ;?\6…¦×ô•l«ÛÝøºº¡Áôcpñ¢¾™½Ä# Ôg‹P!Ef+ýÕñXoÞ õœ¾«gÏß[Û÷完^¸4ÓÛ {ËhÿòbØæ¤6ß¿úE{@úð¹ÉÖëw–Ån/c õ=áù¹]XÆV¼”máý›}z>U6ÑýcΖ¬G¾£UŒ)Õ¹ºQ®çÁÆ®º0 {~+ÉÒªWMÜˈZø[´ï vñJ"âŽÅ´6}¿ycᩦÖ(Š)ĽJŒh ué¤7Zô®YwÙË3~«C6]j›6š;’nfµò±®»·ÇŸU?Ï‹«‹Þ¬[Ì3D›‹Zrp"½kÄÇ~ ]˜ÔóLh5† t:Kžg{í¼hj¶¶Ì>žåh>Dz³áì0 .>¯<;…ô°—×ýŒ„—Ø<ìﯥ¶Š”æá¢~Gò¨=j2§tüÌéŠ}®uÚ€H0B¼åß®K¾daFºœWGe¶,½Îv}¯]¡¨:ORÕÚØ®¼²4[0Ç 8ÍáÙ¹ªÍÐoÉdàJ‰¿z†Ê¿¬V§ ÝÆ“[ù`Ùœ—%hä°§¬|àßש³ø‹Õ-ÀË÷‚ÓoçÂÌfæ²^ï–KLÃE´ñš‚ObV'SA/äMÉZ°Þ}hÓRäwêň‹É"N^÷\¹¿ú [è lOýá×{ïæÙÑQ+›þU˜ÆäX,ê—“ˆº;ƘÜK߯ÁI³ä€T¾ —/N+ÇйÑ/–?pmåKOõ}«†S»î/'/ÇÝl|ÚÒJÿ-<‘—”xðâS¯¥aMÒ ¶oÇ‹—Æ·56/t|«L?)!/"P,cGÎÔ.®¡¹öe¡´¯‹wW/Ìé„q¸ ¬ŸîyËÙåÛ@('F/Î#Èû%mñî—r´é[ü´‘tß±ð…ÃûZ9w´ˆòaYàº1~΂å“yéL¬o¨6ÊšgÑJ;»fo`PYËz*þJ>Å4jê2×qÒf'geߌ©*KäË—_qÓ§ß|EBR˜}5eØíÏ.JfŽJ¬Lz£ìMP¨CåÎÍ\¿òn°hÖ‹¥,n—žuxA›x矰Ըf÷Ç¡ WÍfy#:o¿Ý_;uþ±…,ýÑ>œxýÓûã³ß‡—ß?¼CÑ@, çÚhÊn>"¸Õ’V1¯’ßßg‡ÈlÖFu¢t€ëžz)Ü"oZŒ°û¤3!{ç`éÈ©¶Oýˆm¯  ­èäÁÕZ_É;Ÿúa™¾Ú‘\ -/FqÕNu«M?Öޗ锲%T¹nŠ®0|?Ó_š“‚wûv¨j¨àÉv=/ŒYz³Åqr+û]»zÁ9Ž)²|—}xž©zq ä v8.؇VŠÖ&˜•Å— 7¦1Û"Ÿ–•Sïä.Äz„!Ö‹XÌ›ksøÀJ³‡kÕEÚ³uªZWGÖ‚sû–ܕ̓Ÿ–W¤Ëcæ ´*5êðÆ;/V7OŸl„iv©õåÐÒC7FÏätæ¿Bb¼}S»œÔV8#$Ð<{‚ã³PÀЕƒÎ®¾Xšï:´ÝmrrB÷»—æÉ;¿gÒŽ¨ö}ø+)n~‚ÉŒš—ÕSL+ga}0¤Ãj*³RÚúÞýIW×Á²£o¾˜ô¥žFJ˜ÃTÛ:VBžÜÓÂ.mX¦—l[k9„Ä´S>©• ×V-v€ôJíí䲜MsZn¶Gs±µ{ûª3ûc¼“FstˆPðÝPè|UL¿­ßnæ€Ñb›CG‰¬èê\–ÊËî\ buâ4,¦¿¦{JsË)5îî7L Öyù±BŽýà[ Åy.dU7ü>1yu%L ¶@^£ò&Ðg9òæÔ-öð×ÔîH iëù6´ã~~8ðvBÚd¶_‡JF‡»[ÐJ¶Lõ3åÖú¬0+Qo@$ ¾ž+šV‡)^²®Ú’DDÅû[™bÎÝÞq{Ë¡a'0Wkƒ^wBþÔÁ]{Ç·ŸäÚ!òÆKg.TV†´PÃ]ýôTîC}›IŒS¼Ü'~!ÊKTÒ=+½žN…±Hâkq6£÷õëäÒiU#–è]ˆÕ¤ø¬ÖZöËM\ ü‘Š]‹§€ÃþúhQ¢·ã¨‹\ŸóÓëpx¡´Oý¸RÜ­kr:º7ë_¿ºÕ¢ýt€Îj_í^|ø9ølí­ûÓØËc¿M`(^ÖYºº&ÁpÈ›Çî)Ó(m áûòÔZÄc÷‚8OÎýkF'­Ögb›Åý,}U4…û,;Ô¥œ*\.9?T™°]f1Ü|›»KÜOô\\- J«èꥊîºöC!ã+ÂŽÿ˜µ„` :Ù9å2Ù¸æ˜2ƒà!zi‚ƒ) ¯3`Ú´/‘,˜¼úåÈ­Ðïa$æXõﯘ„¨*`)K2Ùþ{ IÚUåÇyü‚àÝæÆo7Nº\Òs |ÁˆuwFoݬ,·ç,›8Üd]_¾E46§]éÐC¸+{zœí"vŸÝpg W‹×¬8î£â„ÇÌ0­Ï"À)-uNnVyuwÜq=x=Ém§„Iyc·*£Åt{ ½Õ¨Óä»ùa]\{‚ex×^ÕW~XÕNÏúiQ¡mö9Kâ&–‡É~›amÿí§H0.¤»jàhÖ'Î,½â†1aÌ̯•457,unÔ¾ÆÕVÍáíâåжWÕäävJ6ùù,à@WµJaà•Ä2ù$Øa:xešÿDÍù=jfЦ­Ù-c^%AÂo—:Å ^%÷~ùö£Ïd_¯bMJ<†ûiÖÏØ(Ìšxž¢§[zNò¢AÆ\ÀWÂO ›’9ÔÂú=#íVœÂvZçŸý²³¹4³¼­›9f£U{"¿Z—:p¢G©,6¦‹p¹u¡ž|Șö¨¨rG-þ Ͼ=Ÿz§QÆÎ¡Jv+Ý@çáÔoÅÈ:b 9ƒšíÕí·îàXÏ9‡Ÿñ¹ŽN r(Ó…B„XÅžÚ_ëymk`36ÆÊûñûn@BØÇ†æpP‹rÂ\Ï{Ýͦ•ÓŸ“u€×‘ø–^a…ïë<Çßôœd±°çOnºAGË[Ëâ[{4Wç^n&"~iÄOºÙ7sâE§`«b¡ ²÷ /€9ÇL‹ßqV®Ù5¼ÿèôò‚måzèé+.Í—W©å­ö$θ°½Œ»96à” ãîÔ1*_Ì*–cÑð¤,»Œu«¾?àeœTC¸æ-UCõfÈ`õÌP~­-õó×oÅ9WÈN§ÝþUªâŽžšw¨:×ðDXÌ®Ð^wä¢î,wGè÷Åœ$ÇVÄ D’‰ýcmÝ‹>sfc—i]µÀa~ä†ÐxÚ“e®ÞÆ$¨Ci(¬ª¿ºöÿãù?ü€ÿ¥×G´¬WîI8*w6Ÿ !~_Íœ¶²ìWÁ0ôS{· tøf“yÿïÀÞJ!꾺G—m~K{\÷{_Žßcwã?ðU^ï+n9æöá5X­bž)—ýjt….á|>7ÉåA~üâ¹°p#Ój 7ŒÍ™-ÈMØ-¥÷²¡cÂP­VëïÒo/wû½›¡…èp ÙΗ‹Âí‘ddòõµÎ¤þÎW­8©XQ—O—ÞÃ]û–»Î8pØ9šv£UŽ n›"…·†ßÊ;,–s¾›žÔÆ×RµþÝÎåÊdr?É,Ì+”ráåT럅Gu{€/îW}Æ:H£PàÒÕÛºy/oLeØê1äíæNEÞq°Í·NßÎC5ëÙ‘«, ±±‰qv­±ë༮‹È02D§“3YG?Ô‘˜p9Xm fú2WåÙiJWû1¸ÐáxJïÁjã77˜Kª;²}e ÿÿ»Šœ<ð¿]Eà"Éöa nv\÷Šôü$.ð©ÿ‡n¤zlu×ßýžtfu%jGjÆ`wsVÖN‹~{l¿Â n&|ËÜÒ¹X•CJå g¹¤K–šj„×ÁßV%Á 8¥ø›”„3·p+ű·Ô12ËñàÍm GÅ/ÚR‰•NΗ'o^OôB0€)\lR*}ƒëÏÞå e[ê‹VõéstŒ³}Tâz\${µA*Û*ýöŒ­=ÜEâ³ 2X™nWÑüÏåîC~%©X÷׸^{ÄóÓh¾šÍs¢Dv†–í,‹i!òž©µGõÞõÙZÙŠ¢9Ç›ó'}ÅÌÆ=à‚U~ä}ìFµÇ~PaÅ^¬ºµ0"kú`~7/=¯4õQÔv:kßs‹æ· •ß'¬1Ÿ—|¹ëZv{'ó›T¥ ðòŠ0Yå°×®p^g1èDV.;HåVªüÀO£^cÂ+E©¥Š©dïSµÊžrù˜ãH%yð‡Y¦¶*óÏbÜ]øXº‰6õ®³ß ¸/4Ù»Y¹ªkéý*I ´ölTl)BÕyþä*¡ÿœx•çúÿjÍ“©u·kÏ9ÃÂ}ãí$Ð×Üa¾‚÷™R|}Úxé ´ÖÔWW÷ê¨O=GúªŠ"—úR ú)m½¼ã‰fÝþYq‡ðð{…gi’¡åç{³ï ¿’ ùâU_Wo½›;‰OÌ{*œ ¿9ŒkÁ˜_Ë/žâÏ&í}YºÅ´RÙ‡—á¾YرªÇâçÔžÅû(æ‹úêÅ)™ú™ì¬NvZYÉ9ŽJÝA.%ƒè1›'ý¹ø>.È¡gžN÷‰~EH¾€Ã‘¨7Ïz‰rQ(C³_”>[# Ú·Fjää¤õÉ-ªî}~´˜ÇÌ>ä«Ù3DSGß—/bÙ^;¯Vego±¶]Óâ‹­ˆá:˜^g¥5ÉúÍK“ü>Ûå´QÉq™¶tèÙåÕë5ºidåËiÈ ¯´? ÞÖ±{µ lrjñ&DAZ×Ñ2«¢iðŽ™ —ûIŸ ¯ÅÍä2Áažî//Œµjÿö+0Û'Ó=6†ŽŽ´›é•KÖÿ»§ª,,zðB¼@*S­Â$kw(2Ùi ¾L¢º~­ˆ`fr—G‡®¶•éÐEÄúÕö”ºD¾Î“zëP†Í§;‰I‡¼^š-0ŽìÅf¾û6ÐÅÌ€ÁþP=oö‡g¡¼ 2Yc¾ÜÌõ’¡ýà§+0®<ÊòéÝŒ‡\‘Ø£rÌfu‰ª éÁš‹®lm6x«ìû¤ÂÀ}ôZ,À-ŠïëÞC×6?b³7<¡Òn[mÆX€/gmÙëž`nñæ‚éö3ÈL¡U(Kþ^aÊï¹Ô‹bc´„l4íû&Njëäó¯Ðk~9’g*„ ðèQ"|€û‡òé„ÅvÚú-EáØŽ@\.í£ÍfNðÞP@ë;vï"ø$%{¨_sœÃîpËîõƒÀåZÁI9~;ÂÉõ*Ã=çë3é<3ªnÐd÷ίï2½Ó°{ÍÉÀN¥aû%ãk €*ó“ëËOæöØ,Š÷¹7pæïâlyÙʇÌÞ ¾,=•žì©Î»ôâÏ“sãŸÍg<ßd€€ô!&ŒùÓ´€³¥>tj†ÊT_ö3Ž.µ™65)¨îb!ã*·?%y,‚îG|ÎPQáëý…Lµ9¦Ï}é@ó†äýjË›¨‚«þ«ìI£ðØ‹è ¤ÊŒx)äÇÒw!üÁ}†à³Î,mœuÃ’¤âå‡2.æx}Öî71ð‚IQ·—xÀ‘ð¥÷ZhTÔØX$Iu°Â¤!/*|Øz6?P¼ñO“eq01KÍF+ŒŸ7µn?Œ§néìØËãQ=(4ò¶ô´YÿnbKç wlÏ-ùØö:ê¼ÉÁ2yË ÒÎ-›$BbfgYòÿ!?)þ“ÿüCS<)ʯ×s±$–Ø’µR¹5ŽæFWe†‰€yÒf†S§Á½ÓæSã;lkçöv€VÈ?É£ûò€AÖ\ÆÛxUë ó¬ÑدZ,i\´³53»ÃâÔk“–Þ7õþ¶Ÿãáûùn—ßvúëy<ì2¥cú.ð#=;ªµF`óX(µî–õàWçZø-]ÞÛ)²Ý#›Œ¶ùoçÎKbN¼zg¯£=—»òN ³ÏyñöŠ+ N9DâÆqÐêF”dþÉ(Þ™qó;g–£±¿—ûŸ`•ÞFιô810tN-èþÎôXH¿*•´Pž?Ž6ÛyÈ~èêÍݨçÑÁ*Ã`Dv3oÞJ{FKc}î>ÆË!,$¢¶õ›0l>è¶/ß ‚ë…]k- Ÿc¯®‰Å:’ Oœw›'Å5sŒè¨©@m‘–RÛ•Þ<ÔOªš"̦ÖñpŠØUÍ]&H†Çx.±©ñcþª-»^ÞïÙqŽG‘'|®¾ˆ(Ã_nIc>¬€¯"Ø™?T¡Ô¸A=ˮԙÖ^#kcšñ¼Õ±ud.‹Ú©õ‰ tÛŸa†¦Þ­û”Ƥ¡ÒHÄôd2õX/Š•mޫС×UÇÉ'%[ò¦ŸB¼òº÷ =­ìÀžô%æØgx/ F˽ìR韕[h 8íx+u×ø¼/r œÚ9!aµïѱþ@»ˆ5zŒŒ¾ãÑ{IØ™³Û!9œƒ¤¼¦7ï” ½¼q3fØK[ªH´î²KŸžyÓ(L ÎPЍ›—çŠÍ¿zíù†fó¢´o4Íè ád‚—ô¾(O†­,o†‡ {ç+íÌ9Ò·uÁ-­ÓÒº™ùj»°¤âáœ~!à³pagç¥@¢&þö³ù…ÖAy`å­`´)Û[¡Êz÷ÇÉ|5̪8ìbh¼”ˆA —.i¦ßbX©atÆŒ ³Ææ~ÞG6=øR(¼K¡j†íG»QmïôžµœÍ e¯›Q³•<î¢ÅåR+ùe-ºì cº£y㨈°Dqy«Èõ×ÏóÆü¡(— ÷ñU¶ÍLÖ§¼(§x­Irð©îòCíÁ°á^‰K3eZ4³¼;Á’µžÝ$=ìaXsx\P€0ã)xI^RkDÌÖ?`/NÃT±û³XB„šS&è5 ‹°ô`3q7ÿ~JDüjÓS²7=táËšÊÛC5%äéäÙÜjdW&%s8Åç§x>º¯”êb;pN<–ôkÝ»Ûîuàü²pÔ@lÔSNA¨ž  j—^•¼ ~¯.}nA'0êåVWw‘hói|n/Ä¡ ¼PlÝ3<Ò+-ùÍ/¯í5Ô½ÓÙ\¢ml@>>Hu×–Óóµýô±W®4Äõ™  ®þa&Ao×Ð)™mýOzNÁ•6ÿžø¸Èc>“[w¦ÇŒz™‹^)7[e‡–vâª0¸ÕÙ3ëåÕ½3yi瓌6:Ö¹r¬"üÁüãÖ Xo”•÷9ìêî0D§ : ‡y%s#lþѶá¾G3^@_ ä{|`Њih™ÄcuÄZG„‘·;Ù,?j=X^Æyk¸Ù{ÏÓ$4¾ÁX6Z-ñ™½\r\‰ê? 7Â&Óaß'ÛMï£xhÂýLÊûB1j4Avô:DÛno‹ÖNÁ4{Fð!Xü¤»º!ut\9­¦m¨åðVkn98áªYs9_åMù¨ú{þ€ÜN£µØ €Ó¢6»¡ §rùݾu*«Èúm¦‹÷g,.Ðo3Gx™9¾u‘CªÝwºLg‡ØÏ ld½xêrp,_1Êûšv²Àˆbð*/O÷ÁŠ_*àaÖÆ(™ ÁlìÌé¹_rz1yõõ~5ýûµ•Ô1¢Ö¡–uQŒ¯o¨rG3£6¬P@Mýñ~ežŽ°ž›åÂ-æšÚ(‘ úlwú%Û”7¯¨ì.ƒ‚ÔMûûo n¾ÔåÑ·6åÉN¾ó¥úx„§rùžH`z1ò‡Þ‹¶_âh*ô<#Ÿå^µ§‚4Å¢í‡ÜëB;£sD2d\®qa¡›ro”,Ö³8)>ožWd] FmB®;@ý­q«>Ÿfî*‚ÅívP§Y|øÚRG0¾=!©Ÿñíxª·xY3Áu‘ô³Õ¹3ã•«—1!wÑtð)Ì—=m”ÃK †Ò3 “ÌôÛø¡…ÚtÍC´vs)tf™= efÿ#Jññ˜Xþz…ÔŠÈܨ—³ôdVÆ»3¡›Ã-zÎ.(¾ÙZq¿"•×–`­ì_m·¯ágúTgrÝLÀpÐÞß î÷Þ—_e•¥áºà’¸ÈÒYGñ¢ó+ž—:3é­^:Ô†® ’jÏÀ.ý[HÜ7Ìï†ÓPHTRuM}*Køn’ÊA«!:»{½OÚ‰ vú›¯W ÚÂþ¹>|ĈŒÎ\[ÍNã}:ÍtP›6Ñ ßÚKhÞçï­ÑÈ2š<‰`ÒÛ S8Åýmqœ ¦*©•éÿžìN­d–î§>–“œr²Lï¼ÓVè¼DV»VûÕòyg²¡˜UØÚ‡Ë¼ŽÝ6ڳɛûOÓw?*I}®¤¼e¤Aãã~…gá-ŸÃ¥9Ùè»#Ào¹BaUÔ…iµ¡¤kÇOW=ç öÐU‹e+³Kýá ü†ŒÂ#B€.¤¿±­uë)ùsb»]˜Û#E³æâ>êÀàü ˆpAP³.ƒÑá­Û{³·È¾Ø1ô¢÷ÍÌ›k…¯/< ±ZþVÙáÇLZø²(g8c×ÇÜ[:¡µÛ:6xž3¤eÖç;-É>³\.iÏpx-¦Ô±L¿~ÙS)׌ʄå^¼·/έñöï©eüºÍƒ³˜cÅÒ^B²üÄ{LqL0{€2ùs禶gœÍ¸â%|m¼b|æôä‘ö¡m*=‹²´U³Oþ0W†Ö|Æg‹úµêóUá¾™®.5ÌyÎ_Lò˲Ù?:m,ÌÊø õ21ð%I.¦L{ÿY³g=_¯Ø0ÔÎäñb]O”oñMJèÒ5󙜨g¤l\ÞNuèB¶ Z/þö‚õ©ë ÑQ®–¬v§ýy^:2×É oËâm…èA8Ø,Öݸ¿Ysàfþf¶álÛS'­ËõSWfºÕÝë~¤Ûé-Ö·¶øi]”î±ôÑî pÒé<Ôj±,ÄZ!ÃsÙtsLl'Ѩ²ya¿HúÛ˜õ‚=LæÔØçE«sÄÐlé«ë×6Nñ«ºHØ1î (3V)–"ÁЃ°©»)3ï·•'ùì»ëÙ£x=Iq@m°éŒ™wzŸ‹ ­ê±N0WÍÞ¾½ÓŸ[Ôáª_Z•e.vƒýˆ_31,dß ½³IȾHY­Þ Dtü­ã€^ K]œWmv8Fžš< èÓÜ ¾šå¾\ì¶úý¾‘ŠK©Ã§Ÿv¾ÝeT „¼ÿkq©<È×3Þ°Œp=DØl¸×,(TM,ë"A¥R¦‹þ!'÷æÙ~(œC`÷!é*±VéZÔž%NPÙ×”׊‡Ãb®ÆÀ ‡ÍÔX_¸ú„½¡_»§<ˆž÷FG¦«O þ²z ðwÁúÁL¶æ”1Fóµ_úÚKÛ ôý¶ £@ÐÙb¨mü™¬³WœˆwÌ¥¼ã cؘãï EGí¶ßm] d}äáM@¨·®–¶Y–Ö˾XVÉ¢]Ú´%ëu¶xµ™4¡ÅøMrDܼ–“æ¤@PØs5YI±\»4ßǬN]¥5¸v!?…f]þû <¥†ZKmIõO›Fø¼Yã¼ôZ™’·ˆù33ù½"ãºù©—ƒm.}œÈU#oÀßœYÙN¯™’öeƒgX¶ g ~ø¬vüú\&0¾Õm‡1ºgÀ¥²Ðè=8o G óVÓÐieYý•ÑcqœÐX ÏI3ЬÆó&/ÇËn¥EZ%2?FæTîAâNQlÌ_>RæiuÖ€Ìü—ZOí×û}úªÙ“Å@{0Vÿ‡¶KÎ$=ùúFx@îÈÀVMË Ñ6uW–V_n/ÆÙa^9 í—y“ßZ‰ÈÌ_ö<ÎGÕ]z:`”FiN aÁ©ihk=Ê/á“Ó/!ZjCEk•_FÉX¯•0zªêUrÌó¸cV…|~A]!X"~GO <1þÈÄyTZ•O‚Ïs¸^.‘,òÓä+'9”ï»;b_~шOIDŽìãâ!’­àZÉý¼Zy!C=/=ÀãÎuî%µLä(UjŽK°£xc>*‡ö¯î…Q­˜£ƒ¾£ª¨ÿ™‹_€Y@¦•ü8nKHéΕ_ùñ<»–ý}“ÝŸÝþz´ÏNI› û­o Ýü~^†‘Í´;y‹ùن㊂ŽGÆÝ\+€}íË\3-¸´}Ä‹¥‚ß¾Ì#aÙ¼‚îÁÇö¼’Á˜™”~{¦yzÀKªZkŒàábSwøö9v ün+³‚\ è‘©Óh;Dº:¹¬Ý Þ]±wo£-ÛåÛ3Oî³C¢@ÝEÝûûŠmftRxŒJÙ¢Ò»`øúNµOíýYÅš›×%©²Ù¿‰iÎ áÌŠV»£Üžó¿óWDçþ¶V™Ùí}ÞoxðeÆYit?°ÿçªõå@0o«|:þJ÷ˆeø 5¤›y­†2Ñj߆™ÐkXH:i£¦µ®rn)Ø×¤{õSO 3g/|JFks˜t2ÈE‡µê>Kg¹Õ^Ô—ØÆþøæp©ØË#¿×c4©½ô¥sÿ¥PÍóªØ™?þtT°{e*ÿg=<€ÿ¾‰±{@Êhhw .ºÇ(pÃÔ½î1¼«æu7C ª­ “‰Û nØ2蛇êàl€ ¨epÙ…õÃL„7ì2P+T<Ù‘ci N2¿pŽìC-£-ø|Ë»÷³#mŒ,}`8=¨å“CÃï’¾IFA®†©µŒ xí¢ŽÁý’Ý›éLà^ëôìt®‚Ez±®O:'OðHÓ=÷‹z[7úDzj;Õ—XØu^i)>ý«¤þطŇŠ.ܬ “sGuQkóöÞUг7ÌPÍ›ÙãÓ«Ûòu¯·ØY˽E·q85‚/Vc-¹„*ÓwR.þ´Ý±üŸ™Z†¸öA‘(¹GŸšî»yyðêÏì˜ÅFo`å´^ë”vÚeu¶·+çò/©¨õâÈšÁ®’NE¾õâåß5&§xœ¥Ap‰¨¸hSH¯XIšO³»C¥Ñ”){Òô67• ,œaåø4³ø<Âï;ðvvçï)ýt°¿·…XÖeÛØÝ>påWn÷ÎqúÇ}G›ò½4”x/Ⱦ½/:Läxà¦<|Ç7âïuk7é®`OçxÐÕ$¬N÷¸ïé {Ye8ÓŸ’s׋žØö¾­N˜ý…wÑã%§ÐðØÑ§ÑÎ[öÊÑÌê`&z‹›=ð©‚D‡%¢eÕXÿÓ/œÜ)›þgkˆÀü䑬’•Áÿé1Àÿ|røçÕä¿ePÿVN1!ë»ÿ2"™Q½þNÂs$ZÃŽÚô· ÜQ®¯/>þ¡†Ø¾GZÀåwòò\/ß•)×ÈM(]ZÓj~”åñ&(hbH«%i} Á ³nè0ÚÄ[9²ˆlfÕ9ƒÅÞ}¢È2Òyü=(\´yù0,ê÷Vµ!°ˆY¼eõZW¬í–ÑŸò.SãÏ™×ØÔ'«]ù˜‚ùJ«JY¾©ãPuå;¯±$ýöîº==àÕû;3wþ“dû™ôÄÁú?-¡éÿW™Š¬¿˜¨Kw¶¹•ºÓÿ¯4ê+ß4¤ØÕKhê— ±†vËölQ‚.IÍ L:eg¡Ÿ5U}eXÄÛˆ¢R·Ž—SûPA¸¦+\½áarØ£î»9ü¡µÿV*‚&À9ù?–Š˜V{ó ¾‘âµóÉÀ è¤çÛnœ}Çóòõ>ddÿ#V5íàÜšïîW¶3ê5ÂËÎÅpÝ™oÞÂÃr´VÞèoÜΘ¸éo!!nnzÝÌ÷“'ŸÂÃ/8󋝿hu¶Ó™,Ïèjvfb5‚¥fTakæ…ͱ>ä ¶+ÏŸÜãÇûytÅýED;CØ`Ez'w5 [nšünÌξÒkÛ…@œ_rfú9™<6~oT]éÕ œ¨•äØŠž 9|:_~=r¤ŠžÔ‰º6Yp:‚üjöSɨŸ:ŠáM¦Ü:·÷=áy­ê•Ñ«¢ï¾’^ã«çº&sÝë±¢ÿvûòTÈLw3d7ݰ6Æän3t½ñ!S¦`Gˆ¶¼9+úd7½û;årí]]ü$Ï>&®g ¥#DÉC ã8ÞZÒò7ÓÛÃWˆ¯¯ßÀ^¾¯mDy’Êõ÷ç±ñf„…"uõºLKJ ÑŠûW%‚þ-P‘­EOV@«4$ÁUaaM\äKcâ¯ïì`‡„;½ËKrßß–Ë¡ØW@JÆæýû®$}Ž0×B ñŒ_DÊ—kr¦€A±íWxî–fÃᬠŸŒÝºæfÝmþ¸ ©Üˆ™±u–3õ1½iÖ–ÜKÏG¶;’c ¢–}ˆ†—ŸÕ½š·ºœ äÅìÆU—LŽg¸Þ8kýLÒCƒƒát¡d»²¦;TûáQÔöÆyûÇ)k$bX‡u*H´_yI*f΋ÑÒyÀ¾we²"Ó9µ Î tÖÇŸ*QÙ/°¬“SlÝí/AÁG¸c«yn3«µúœÂÏש>zÏí¨‰3oIQú¨ÜÃÁ\Í*¿|[ºøu³H¢Ï¬ìáÂîÌ9ÞÑ»›'>¶nú I´7õé uóûdà}M’ÛѸL¼@„ÙRÛ8ïŠüüš³ÆHŠåúoLö0÷w¦RÌáýò¾_qIö&éEBâý2áï{ç²À£}äÖÅÑ«¥e»XQ/d5Ó¬øåƒU¾¶kO`Ötñb;ƒí¦‹è×eãÍñe?ÓvWH¯7Z9éa×;d•´rÛÖºëgv«p²±ŒÍe¾ŽìXÚ“%[ä½-ýð£ëއÃŽ›Ûo3$ÁâƒØZxë: Érk\þôñvi8 Î õÅMZ*ã½d°˜"Ýü× «rÌA´ÆÜ¢-pí>ï‹©7þÖ*+ÁW”ŽuÍ»ÞÄM­´\}š+ó·X·XN¹ßÿž¤ô©äÕõt±½Oßç—:"­`Yé ¶¿¥\¦i=H²oùãÔ[]l¯`¯çSm°ÕÞ .fÚ¹ôø¸w HÏqãöøÎ ¡–Ã`m³-5·ÐVç·­çmÕ*zváªSÿúNZY'r¼%"œ¼ˆ!hó™NKš˜K—®<ÏâËX<ü–å˜}èlÔd`ÒhmJi½ÆbY¿ÞÇsó)ø>ÖðÖO=›©~ÜõD¨Þ:Ô¶,!àù@wÑâ󇶗û;{?{yn5[î$ðëï8@ÖºM¢õg}‘/€%+úƒëxò…hín‰ŒÁëï@ÞÇÊ ¯5—¾Øý,:ðÆEîvßê—Š.w~Î]]‘ßj°×[yq)¯ð“T[k¿Vвª}–ÈÕ°67½«}ÉžrTñÛfcúÙ“å£k?„Á];^×>Ó&„¬Žêé>Û—«V£ãbŸXÑ­€.ÛK¯+·²b±;}ËÓö+ksüÚO#óW,ý 柽Ä17ZÀ‡Ñp„Ÿ7n–…ó,ò}.V=‰ËOäâðèò+û¬ñ) F»‹ JBÙq<¸6oã”zÛ-Už×–`fN¸º¾k܇÷N¥œqk‘·yB;¨¿Ï‰Šš_ô6p‚StwÓþ$¾ªv÷·¬ªtÐNqe1kÿèLó(´–û Å‘9Óm8ÃÊØ‹Äùßy&ŽG>0½ã¬9oâvŸºzA[ï¦õùó`«iqüR˜Õ»9ö®QsÊÐ!q9Ûr…ç„dwªP¬WŒ3…)œ‰>îÖ;5„uƒW\Ÿo?ÎÒ+a6[§Ïáç(»%èÙ&· nX=µñ|¢ÃP³PÙ‹Ü.Àým2ŽÚ.”ÂÒ¢ù@ýÁ Ø.ìk{Ê ñoó¯ êUI”sù5 ß›`›i•ÛüýÚâÜž?’uy¯Ûg¡ÆƒA©xQV(¨”uƒ…£ÓlKȽõ1ýð1¼Ž ¢ô‚”rÈD33•‘VyÂæ¯¨¸{e6-Û-ØV®ÜÂ^Ý<º5¹zî8Üm„š–ŽC`»··kOµ6M•¯M† QÉ’%²Cb÷r:gû^«cl‚`¦|ñýÍ4X¼k(;s> ;¼v9q¹¨¶•b.üøºŸ+ëâ÷UåpiÞ4?kWàÞsÞ`ª—Û«£´ÈÀ# ¥Ã,8ªlQs–I2ÍöôƒÇÊôãSVö‘§6ÅåFÌïæ›^C==Óy5Äžó!7_±u›Ï™;³D<ù&ó#âÕý†×"/q0öëÔeÅtFÙžcmjÖy¢Q—½²1D«~gP¸/ž×´"éLs½¹Q—ý/w¦FÑ·í*”è]óÚÎmÜKa~´"jÍÝ:½@5Ezo‘Ô÷àiZœ´{úFE{€ÒA.áÓãu.ð\ë§œ?ßhÉmÆŽµmVwV´ð¹mº5ö.ïs^>Nm¦Gù;dD6 ¯Êût$6᫾œŽ¯Yå0^ºçýí¶£_`_ªw|.Ø[x³!-³õêu¯éÊÅѮ뗛EŽ‹axLªçquÚwi šÄèªñö¤[ڹ׈i^s£Ûºô zD{×®ž9ÒÓ©Tá{­á¼•·éƒ„¡û@ÒNÿ9U¦qoôÁÜÐüxÍ)f—Їonή½«y]¼¢É?P¥DŸÕ6ØçIq•¥Þ'`~•'Do>J7lÁµšÙ<;‹NK'€X°¦ýÎ Ô ~½Ý’ìÉ·:+¥Ê°V0ƒÅYƒ7ƒl-½h²G¬Oqš—…pÁâ¾G¨µ…^y¹¢~ÈÏÄŠz» 4G˜×ãü(©»jZཌÇ`ÏMþÑß„ØW–âÉUÄ^fÊ2ƒ¦ðãu¦Ø¶î¹8]¯§UÛ賋ìÖ9 l‹­Õ»Á£¸-g7|¶æÂ½6.²R]ÐùJéÂôØu>ɺV\±Ù÷7û½:sÛ›ïiö0öÚ ¶[F냊‚O╟¬uôþÑþa·@FëÁcSÎÞjwËAeØãºÆ– ðÐ|ºpÿ&ž§oµ2¢¡Rä™_™›F4ª„^ógIIª²Å0ÔrfÃK›ÁÁÔN;údÏïkŸU}E%¢ùé›âõwžHÏUw +Û'x@€ÊS­º¥{j6“4sƒé“!º©öô&ÛªŽÏãìS-ÂlS÷x2ôk‚+´š9ä ÓDä Z?üp'©1Ò(?7*·ÚÙ½¶Ž ÿèÍì›9?BW ó\ï¾²ÇtÜˆæ¢Øk²õ¾5`/#M}Æ““Š,›0C\¡Üá¶Ôot¢vˆ¤À°vÍýt¬7üÅBW…œæ˜ŠŸß×ySð´llue8ÜîÚê°Èé'´TqR‹=Úƒ6ííå2œ[fxóß0­CWviDíËúýwkyü2R³`\? 9«_>VÞâŸIöÝrFÜ›Á°&GrÝ1møÑ_ÌÙм-N›;DÐíx+Ù÷Ìpq…¡ö·ÊU¢ÇD-½Ê›1–}NËqLha ÌS/|zë½1›<–ÁÝÆãÛ¯¶‡£aE°ÅJŒ·°Îpƒ_Á“¦WòÀ¼˜íx†mé¯WÄLO?SiB½2·ÖaL ¤­ç³Öp¢÷wÐI«µø;è  ³pd­±/ (ä>ö¡Rèu³X°Ð×!²^5ί¬y°h21Òó`m¦eÓîÁ-0hèÕ{mÑDZ’WZ7¹Uiµ“œùê`ÞªuO ©­–kŠû‰`bçB¢ÑÂOÇ')—Çyóí«È:Ï5☛ÏñܻϠiPÂG¹R9IÝäûÒdv˜Y9ju?UþR™|ˆqKŽ·ÕÊÀÍèÞOJ&†«=3¥¯î6f%þ¬¯:Áf÷m"XãðÐ÷h/;(ßúÞ@ƒÕ^ʑۊ£FŒ+dH·…­#+…z0W6s¤Œûk8"³V ¯„õý9ÈV÷ßv—GéiÖšB²—‡r  •17T=–õöRñª÷}]²_ºjY¯ÛbÕÒ·¢e´ éy¬ @H’¸@b ê>Éýe· º~µ½ÛÞ$7•¨zËK/6î†ÚT¥LeÕí¢~œrümqë•ÍêDï6˵êòHøÊÊçÉ¸Ô 2%õS+O88²ª@I¾Í“—Õ[Áï“wЧŸÖÉ­T~ÙYc¯Âev¿²­Ýw/µ^ýuŠq˜¸\YvYh!—ñÍzæ(8a㸴¼tð¶|«,õ¢.~gÉCZ{dM“‡Ö5úŽôÅw(dÁÞ[ÖVÒCÇŠ~=‡ÅžÓ‹¨’óG\[„x%¾aàöÔ}ÝÉÚÌ(ˆÐÏãéñý²Ã+m'>îèᓜd±-Z Áˆ+­Ûd—àaßcï*ûÝ*ÍÊ4yL2Â…ç@Å*ó&]·Õ=‚wƒ‹ATñé=òé®,Oì$k`oB,U•“Ú]ŸÊ £oŒ¢ÜBöËŠˆËÆq¥ïb|¿^ªR øXY¢ûMÜ¡öV‰kA¼Üc•"ãÈ(©§]oyl6Ÿ‹€Éȶ5x•× ¬žòÃ¥.ßé¼<â©ñ0¦šygö :ˆu^~ó•Ý*„–Ó÷Lj~VÚ¥^³ØCdùö¶\öÖㇹ«¹¢^+9Ý–BV5ò†„p4÷•êžq9Cñ¸WDÛßÍg=®vJŸü©]ÊËÇbà|äxyè5¦û`UÌ 'ⲨïGtæ—á÷êX6ü½ýäòö|°`ÖÇ’õVã'|`~È©gÕle«>¥oÛÝ5ÿ¾lïQ-=b¿WÓ‡û¾òÊÛätôº÷Þèìë}.Ý´aépRÎܵ܇áëö5—Éâ/P&}”²sÂwªÂË ýg¨vÿF°Ý¦75£&ai}¡…@øÅG“yX­°ƒ'™—øa•âFÂS!/K$ëÓ/ LZµo³{×Le]˜u6Ë¢V^/³;8ˆ°7•ñɬeß”™7ë߀¹¼àê÷— â(¯€–¯]E »£p8\\pÛ€€$T®-HZ] r—.p•YHZ^:…kŠ-°ƒÆÂön7gz§%¸¹ÓéÂAÐp̯hè>v(vùÔF»DûíNû<ؼôÎTVØ]kÝÝaÅEϰ `h$97aáûIv\?IR‚M×é^!+Á§´X²Ïn|ÅÂa˜˜ÕÖC\1YKËt"|ÞÁx½LÚw÷Z¤—6ª®‹=¼Áìì¦*CQ~æsmÊëè)IZ|U&ÑÞwÙ•ß}Û­†1ûh B ùÀ7™lÊ÷ÿ\å-™*“ÎP*ØßÍ/f?ÀÛ£›t:1ѵB6;ÏŒT?|£›…PÚ'|½%Kïã¡¶u3Ä3ÿð#Ç[mtñ‘¶à ‚ÅG%-·K£yx¢SÀ§K^x2³¦U¦DvR “Šx^µ„P°ã¤M·pË{M ßZw*I1ÿ^¼vÑ÷,­¥•U²Éf\뺧,`Œ:Z./ì+•Ìw(„å'ëÙ™±Uµ—¬ SÜ0ñ¼ãf·N4jÂÍm”8Hª»Îu8_í.JÚTNus±˜ôÃA½±—IïÚ²¹ÇES•½Ý?Ê4Óùr¹|±_é¾]WÑ}é%îܲ۲BÓ£òié·/Âg_¶£ÌbZÜåÅ­dJ»ÝE­벿×vëµõÝÓüõ5»ce$™íé¼Ïœ±RØÎËÍç—Òám×€õ*~µLÈ1Sqö”__š ‚ Íd˜Cà â„#Q»òÎUšZuÑb²Vß‘^ìË öŸ7Ä*k…³Ñô›!ô‡h±ÚK¥Ã²úŸÙlõþ‰Ú„Fx­¶u?ï)Ê·®oŽti”óŠÇÔ˜ðµ+©·À´¢½GXx,sÆÀæ.Äq?FA´®ðŠzƒ?âÌu‘F,€­ Ò¾&«ËkÊ.•¸wå S|¦ö;^ª!+Kàáe¬±=Eåõ0›¢Î6¸4sëÇÏ ÁŸ)ມ_½Q«ãóÌêºLEŒàÙZùM-U¦˜W¾B6F¾UÃÎYBöܯI1üˆ“TT&;ïÙŽªwŠß_ðß³¼´ÿ•J×Ë#lÑ)3ãßÞÇôñ~0%›|f¯9¿aîkZå­6°yF½!ÇH´²bMßœ¾ÂÈBù2‹Ò©Hõ»( ó ’šýs²Ÿ?NSY\€áÞGþqh=Èý|ÄY«[C~9BÉ@°gýMö½ÓµÓ®ÕXShw8[˜!±²V&¾¡9ð„£üY¯—·Üãóò³ &¦oÛ' ϶îe£ñɼù5 )äPvb†ºï‰*ùuj‚3kûY1*~¼{°pµ;uçÕ{ydðá­1𵆕¬ Yݯówl›³Ñ¹A}&ÀqéigÄõ‹ž)B½ˆ~JNé^ô«™ž DËX;î”…ûág½€.ºOí> ÿjïü7ý=8²+D‡ódëÌ"›à™iÆÀ뽉ç+±Þ]¸¹é˵TuÀŒ›;“ðêã\†|Cö³Ê\7>?õßïÛÃÙ©IžžMi}iY'®ÓOm¼|É¥ \¼fȰÛc'¥Ñ«[0Gd‘„¤4zX’ïw¶=`8;Þk)TvšODjûáɘ{7Ç‹«Y0óù±ÅYÍFRùÂîÙj5bu'`6ªKË] U9qç²³»b~®)KyÌvI½qÑä>ŠéyUhÇNº fõ`´ì»ºÜo¢±ÉšüH(cÎ.n´ý†Ø¥R¹a?×ýôro/г®V*zz?ù´ZäÎow'_FÝq6WJ=—c!d8·Xüêq_s9ðíìãrwp1^?\¿aõÈ‚&¿@—[e±EbX•öd´·ê²&= VØ¥‚tÐQ8‚ÿ‘>ñ6(Â)Ë…ú©Ý¶—äò£ããûInõÖô){Æåg!Ǧ³§ôvoTͼÖá+ÔŽ¡íÕ‡8LKóó{L½ö£â¦FæÔ »˜¼§ì{ú^ʆ$ºî7êGÐùБ7‡j¯,øVš[²‹ÐkÓ—×{ñÓ2ÔxY*‰"~ûVih×Ó}¯¿ÌT,QÈá-OµSˆ?_¼‹¿[©ÛJå°¦1ÍêJ/–tà·í4•Àê™jÿ«;Òßé¿Z)í¢öŸ»CÙ^˜SÁižô*Î&¿‹ßÕ½ëåXG¸«uꪣÖÿ0$ñxwþí^rκ²A~‚Â3þá©?΋¨y!sáåmDÞö0ÞÝãÄ]Kjeí1O¾ãQD½b«âòï¢, “³"0kùn؜᩿¡w$Óù¾:¥3h¢ìé¨YâXmˆX ”<ÈKÍU iæÝqÆ%º˜!aq—Q`=ãf¥Å¾añeáØ_^VõHû¶m(ƨç•ÿñЦv ôòô¸;V/ð—½5: ¸gÙ‡þ¡.(1“,¯„ú^ÿ· ùçþ‡jäÿÉje[Š5÷sí_œ%ÕM¦,1~÷ŠÿÇÆ"òd5¥³Þkyê-oî=¸\Â,vJÕ½î5ÍMÿ¿¢Ðnéû·R2—¯ùØ„æ0YÎ@€zÞ#20Í·MäZûÊ ²B)ºqšE7Ùã6{×äø.¶“KÛ=˜Éº·y³y¹ÒXÖK×ÙP»4# õ[÷ч¨½ÉÒ§ÉßÔÕ>wÁÉ‘¹ü,*v‰¾ž`0·µ&ºÙýén/ ã‹'ã‘òY¢ÃÉ:Èа :FN·–ß¾.]0û:ªk½0¼eŸ†ýSÔx0pûXhFþt^=Љ÷ZšW–zôßãIãH\ ñ±H|[“‹t’ßÛÃP,·Dh7~Ï¢†|ÝÎÞ;Ÿ á·@4ºì}Ë©‡ Ýž¯}Ëj÷&9Z÷Æmc6Ëå¯X›u[Ü»|BF‘ëAÝhF àŽQpEº3BÜêQÊØ|L¢eó›ˆa¹:`!­¸ z?¨.Û|K܇}ó«oð4?²6:›íEœ©n}ýè‹W`û*;àHýáP5,Àò\M²ÔÂfioèÖ®Y_¦»JÐû‘îxøìÖöу&‰z·Gu M;¢Õu•Ýblð-·(AãÐ?eëâMÀWzŒW÷êð( kH½wæ“ñ…FŸÅ¬ÆV°êGÏ#÷u»ß)êwŸK%[lJîë|aŽrŸCæ¶™‚99xHvÞ~é0~Bÿ/?òÁ*çŽzc4B^8ÿ¼š£ÓÞ 6„–ê°r\¯Œ†¿¬ö†“«€õ×òýÓ¢Géic1²3I†CŒËwÊž;q%5¬¤…;i×Õƒ.‰W¯†>È i·‘˜ÿ„H,Ï äû^Ë2wC…6pš·òÖ5«¿ò!¶.ó³¬Ü”–¥)kHNKü/E¿¶ÍʰåÕ&ƤW NÆ«Úa~;t˜fCwÑ}q¨R[…åËDêÙ4dË‹½¯zÐã[›a)}߇éÓ»[· î˜/GªÁCÊ…ç)ýL{[¬Ú.Shr¯ž4J"Wlˆ×ü´KË5 ®×³ÝõÞþ-æy¤IŸ‚Lb1µ¦Bù:xÞ ÃZ vûu€Ï¢+þ>)Nrp#&˜×f":{–~ÈÖËÝM‘|h@±ÞžãÖ_þ;.¥›_ÂîµÆØ"›7þþ})–ׇïönª‹,§ºÞév}a•ÓÕ¼>Ëoé~à’ rY?G#àÐ\ûÙd /mícP^sõ;tK‹ºÜæ¦e2Ý4Ný¶Ó¾TV÷™÷ÂËI±\.xžcG ™ÙÈŸ=óÃ;jŸÚåð…ªá-ãq¥ÁöÜuøs|rRšÙêÜÆˆòmWçÈþÑ1†Ék=ûsD}q`üQßùöŸy€èé-#øKˆ%‹îÌî¬H=«÷ZµÛÖ…{'~ÂÎXʲpo>ÝÆïÌ<²øé»Ð0cš\V­Xå~4§Ü_ØÎýÎy ë]‚àSsƒ÷ubùç¼êôšYçP;ý³„Œ>y†ÛÈr%À ¾ªû~)€”«©»ý®zÚ¨{p¬¯vŸN»Ñ«rr³gòÂ'õNP1Òùßq¼!Á9…¾GU”õ6Ý݃¨\-vÚ»¨pÚ©³nÛÖ‰Ã]p{Kßþ(PTùQðÜÛª©p›KÛ¿#ÙÖÉ‘3ùo‘žÅÕ«8?·«b\>ú”}|0éd”pVß Ÿ¯‹²´]+¯£è‚©'¥ÝŽ¿ùG“¦×=«ùVt¼ÆO6¼2ˆííPè²»Þéc»­ŒìÍ1ëÔ!ìwÕ;ÄHãÆh³Šò¯VÔηÁ³é©çI/Ü’z-:Û ^‡×ûZ×>HMÏÀ¨ú»­Î/ xƉýgZQ×€š[lNVƒ@„”ñdµ»qsdC5<ÈøTÙî*Ò—­0ñ ‚cÕ¯›£¾·`n6Mñ€yˇ*^rÊ7ú” –#¯{ŒàeýžÅ\6š+Bò4àÓnÅR.ï‰*žÔN°¶Y¹ÐÏ?ϵ¯?È :3Þï‹:þªç.GÍѦ`ß» ¡Þ±wYž«ì8ª£ÿíÜc=zAÝç°~×{\h¯îN¯ÊyOÞK`NݔƂڛ]kˉÆ9Eçò®®ÆhJö¬ð€” »›tÕÁÉí¿«0Áí,À?á‘Í{÷cU«ðU?ù—–+<¥|û¥Ô9»_xt“˜­íù”UÅ™z®7_ÙƒaàÒ¼?3B^>èŽøq)í?69¼$îqÛ`°8;*i_­·Ëï•*¿5ñmÄt“ܧÍ=+k«âµ~9„s~dRÙ»U}€,T¸'ni«z¾ôÉ110Œ EýtO‡¢"¸ÝÓ N¼c—Ú±ó¸ñ^RK'Sº+8LAzæ•-]™Úáx]àA`#v6àóasw=íªRî*oÖs¥eÝÔ^ZåèË©µÆ—D– gaÆ€Äæp[‹ùáòV¹5‰¹¨v4]ªÉÃ^¤¸,T ÞC~•Õù%æà…,Ωéy#Œ€ Óƒ”r`Â÷È\-Çç³RY9Ø=Õèv®’åÏ-Fzv€ÝŠÈñþÀ·:‹ Á·[L%To¾Õ«9Vé°ýL2û.Is¶œÏÁ8H»äSvEW‘ôÌλ6’=hÑÖêzh—€ªþä]ò¾nv>µ9°­¯Ï;¦?ëìcdɪºµáNdÍñÙP‡ÌºèUà´À4~û@Ã"Ò[—Âúžé¶X´êÙ ±Ù= ×½Së„þaýIÈ÷áú¦µãÊÛ‚·žYý7óÝÌ5Õ2vÝ/^µ»x_Bƒ½ÜÖÊ|£˜f!¸<X•/n,ÝKY…8iû~&squz¸ëiÀ|® 4ô–¥í,Ø–§|üÆ{'p0Ùjdù£?_Ÿ?Í΃øâ’ýÒk{}ÊY䀽õ¼-dÂd–VmGÀçœ~Ží²6;"ÞG5wÕºRñæ×,d)‚˜½ÖpÖÍ+M¡*_8°=FÏþ<èa {9x¿:CŠÏgØ-‡§Ëå§Ûj ?’zhÖ¿÷QÍ™©¥ŽrUW‹š ¶»wF»Uî »oJ¼ÉZñÇuÚ;2GnBÚZåf{’1³C^í¯U\l£•e )‡;ÀC°{‹¡”ûyY?=ÓJ´ÍŠu³4)!,ûTw~Q^¶>"Zû¼Î¸fA±gNÆL0‡§ã€ài™°WÀÎ+¥/;÷V¤“V{êšß)dFÌËËZ¤)}¢SÙL%Ñë~W:¡þ(“3Š}ÙÍÌå[,.¹¬¤2cÝ»¡è!Jöí³÷ßÏôžu0ÏyOÀ9RK˜í]”›Øsìî‚P™ïè#¡ìÞ×}¬+Ì´o··c‹„ ÀùíIŠk2g®¥ß‹´õ¤VíÙϼ6Ù®ý `9žhÔJÝCÀ–øí‹8·I>9lŒÎÖuÑø˜Œ6Ä‹Çɧ[ï?][´ioÑ/è#y´Nû%æÕÏ|ƒºEÔƒÄiXA‡Àæ‡5‹ ÍJ^põA^®†/‹¬b »—ÄÚ´Â2øÑ*Å=@²”LèîñpÈ÷jF}«oUoQÈvË3L­F FDÜÇöDH ! ÈÝj³Zg¦)2gͱ¤núÍ]bÈ£FöMÉi ¯y¼^r†ß—Ѥs-8+ªbißxåmµ;…ç#£ødü‚byð³Ö4K©%Ÿ…p$mÚ€¯(¼5®2÷ÙýphŽ&)§¼C¯ûå—¯L[@¦0º;õ!n´/IhßnUtúy«§/­]YK‰ëœÁƒ¨30ÒÎÚ-°#m  ¦hï—ÒÏc}ˆ,'V:Q´ƒOíg)QLî¬ôÈÅdÿ0#<颯RæN¢'L "õÝV·¥©±Ö2`vWšn–¥9m!žØµŠäì‹ ‚ û3±—^³·—·ZÒ”ÞCû‘FÙÌŸ7ô›hM ÁUêÕåŽ [[-> L@cjV¹8»l3E¤rW2)^¾¦™C¥ôãì“;´xM[vf5ެ7z«˜hqŸJö”·›nÄ{|m±¢Æ»0Ä윧ël45–Áœïmæ‹k­»ªšãÃG*Ȥ3Z4P„É× Ü—¾gùÓ! Vlw ìØaÈÄä§“ б#H]½¿ŽÝà¿ò¾ôrhàK²ûlY~®ŽO¼×AJÚŽÝPiÿªƒ%SêyÞs[bïÐÂ5c$³[SÛG}YâÏù-h½õ‘JGmØ"’µÓöf={“bñO„Ö'g¶ÁÔüzoÐÂY8owõ‚±oÝXì6­'éŠ}t2ЂÎ3 x·¹¬ê ë5ж96VãQ¿×©-@m­»}ÍI³Ë¥uaì~bÌ÷„f¡N=®4J¦u÷ú²ØH({E&Èuo9E@iL¡Ögwé/¼ÅÚý¬vÚÐ%»K‚é éü*¦â‘ø3˺-æät€½auZQ™·kéùØæf~‘Öp׌~ô–íI?ÂŒÈLG+v¦û º/$ÑyR´|£ÖV ð` Þ– ôíöCQÑHðPDºáu}CØ¥0y¶§#‡×gðvìm™=ÜÔíç7-õÑ+¹5Ë\VCíM÷Ö"srþ­:(ý˜°ÿO{Ú¬*´méÂ߉Èÿp)D¥´¬Å±FE*A@ãþý×µ÷Ù;Ï>ufÞq#ßü°"ÖZÁœ}ŒÞš¶ùôè'-d¤:Ǻ4rhyÓê®O~§hÚúÃYu0žiýм ƒTaÜSÒ’sK Êi›«A áTókS{|SÏ-tSž.¯™ Úf¹ÿP²çWP¨k5šå1ÎÚ¢'@G;?ƳÍ,ûŒÖ|±dZпz/ÀV®)î“wÛ ¿žB'7AÄÏlÚž±™äe]Õ…2¡;©hXbÝÛ¤÷$!”áâ¥èǪÕb‡b×Ïïmê ÷)·4Äëž@ÄgoîÔáÊr«¾˜z-èƒ38÷œŠGœ¦„mŽ€K?éS½V_½oÕõ£ò˜'FÎsˆö>bšŽ}C&xx¥_³ñ1Û.Õ;ÚnW 4C’Ü|z7Ç­ÔêãøÕe^>›×á8}æ5›¤”’1F“Þ¾¢&ï%S«iÖäá5ºgÃ\ují+}ÛÞ©Úð6êì/Cšq¬utä¢sG Q.]»ù£“l5'— ÕºÙ‹ì$l4ưãMÑAnpÖZDi3Ȭ‹™Ãa`ÌóÂÜRÁêøÉ£"YØŠGñìxÑ ØoÁø÷a\tóHs†œµôg`N*7ö'Oœ³¹ˆÆ3æÔ$¢Bv„Ìʼ±é¦rpí¼°eÊÉÄ;לÕíÛ´Íy9ºŽ]=lfÊiKñ^çB£%ú1Ëö•Hûí7äÒ’.Ü6«ýGÚ^þ ÍCfi<—ö“·ê‘Ýè}ÝÔP,×îSD?L8ª¿ ÝÊ3¯¦›[ëÍw4åø<½·ªíïûéé3S‹h]WÀ¥&üŽ“Á'I ó“Ìði.p³‹ùXÁ_©©c·4h·Kd1³±2wösžU ­®¾¡{ôúD F%Ûo¼âiÇ5.{'ÌJá>ɹ˭b‡«³’ _QÙÔ¡ÅÄ=~¶àq³´™0õ÷¢wX¿ðì[gïY€¼ßQ¦YÛAþp¹£\ÍëÛíhðzÛ¨B}5/G7ÿü v æ¯d=®’£‘B*º¼ÑÜìšôÜ"þ•ù ¾m¡^.zYä>ýµjï0“{çzc:£~NjöàsÝßïÃËìš•ÀÞ:ŒhæÂ-Íæq”…ŽnóÛëè3Ã\w†¨¿ÜÒ[(í’+bÆCZíÅdØqàXÕ¸UØ®ö4›ºšðcÒ†Zy1g:ç{šâ¼ÿuɸ@εÇ瀴æTö9ø®óq6%XЏz‹°zæZ*ŠïÖ¥~.¶6~=bKÐ6²Ÿ)È7¢fõ‰MIÌÄÛ{ùQH8ŽòѽPÄ“O;;'sÖ½zÉî©TCÒ«yr–M’Ëé¬í¯ïRá1y¡+µl”hû.VëAQ¡…³´Æo«œnìǪӱŒóñ¹ÃU&yIG¤¤Ñ˜‰¿îU.U)Í©?¼Oëe…™ Äùe·œé&X7Ù€Waj¼°Ñй¾vµ|ò õßæH@’ö£hƒ ­³òÖvÓ£½ iw+·Éoo¿ÏîQ7»û&‚ çÏ4t6­:oLê“ùfã ‰þú‰±NöÉõ,h`9\­æêDÐ ­Û:Õ!±Œ^òf×ÑÏa~ÆÒQkã½&~ªW ýÆW™VôäÐlÖíòu$­¶]üFÈ]f>·3XP¥ø'êPúë̤ R¹üsÎ_ò!³ùÜTÎýÿR˜øOÒ$ “Tf$íy°;U>ÕÇ%Þe½i§ÓøõÞ?ÑÍ»mS{ºl—¯<¯J ñ×l6çªY;¯=c‹Ð!oÚtwjÔ%Øòlζǵ®í/D´KÝJ½ÏùP]%ÂîFl‘PÔIp= ébÇ~´²q{r:Êêvê`5¶ç¼º­‚0ÃOrÝjF$¤ìÉÇŽ ]²¼Öï^³ÛAèå%©æÍº€W×ÿ‰C1&¥nŒúµÓÿãQî#ÿ;GEÆé}=·ïÀƒ·æŠ'§ vÚ¤õJ Ãb-ö¨Ö<ÎûŸj)˜ì —·ö/çÒp¿Û«À¼kw¦ÄK¾ýcJ|ž)zɇR °ž¾;TZlåÖ—eµ½L¼>8¦ÝM¯tÔƒößò"«nD²ìá`Ì[›Be,É5ã1UíHqÞte*U¢5šÊ«ÝéÍϹ¶Ÿ€¥©å‚U·óv‚yªŽ*øÙ·»’JUé Ò)‘8üZUé5Æ*Ò{ðüU0¿ZRŒ&íç'-6š.µº÷Ùo§6£°]fÂFW§žˆ:[Ù9íV¯§…Iªâ¬Ž—²Ûn}Ù€w3ñ`Kù šKR¦›ááÝéb{ûšf FxÓQsõà–Ú9¡Õ.Ê5Â.(Ó8²è*Îé`nÌw+} hFÏô˜Q¿ö±Dz)Þ\ Ö‰©ÄrÃa—è*«u—ºu0n”¼çSí57XNÆÐoìuV¾O³|”åú°?ØWà~ìcýB!(¾Ø‘oDå4žfÃùöLlr‚Å¥}ÁöoŽâ Ãîy9/8ÏöМŸvh”Ó‹"‡6­÷ 5ö›GZÐf—mFÌkÅv-ÁÅ&3ë¦h›­«j”cë/¿ô"9©½C,N@R…/½oqEcU'aðkNÔª+P+¶µÍbOÖæ6Ž~"p-á…ÕB½Æ?«4ȃ ‰Ù­ž§;è ºO°˜Ù1šÅqCI&N–‰K[c·#©Ççë?¡;øúòY|±EYêg»6­ó=’Ýû_[“[’èc‹‚]ˆ,× ÒrU}í<'jߘrÛ àþvÎ脵TñF™ÃtxÈø0à¶^èÉÔ7õ×qo={Ñ þÁ‡óYãcH/Á“À]6H²ef£‚¥õ—šŠÍTO×Ó±pïªRÑÆÐù]ÖÎÆaEpU_n±W{¿Ö‹x¼j©à’çyø¸p©S¯yM¶´ÍNr§R¬ƒÂƒ©GIúIF¹ë_eÁV§§âdêU „äðœ‡,?%U® …xXHû0Ë D{‡´TkPÏÖ¯"+†|»4JÅF<7º­å×pv Ë=e2Lk¿‚˜]L‚šè Zr{±Ã´¶ýB^»1Úi✵ O7s6ù}Ë-{/“=¨ï–£›Q¾öbÊE;ÆÞ« ³ÍÓ RV£W»õŒÙñ~ºÙfü¹§*ztcwnñu•Wn£0k“fúƒR×zøïp(Æ}åÕz¥ýÅØ„Óœ{ð½Q}íh-ËkÍa3[Þd–Y_Û€•'ãô( ³þϾ}÷¦—1½Š¾Ö0÷õa4P¯Šne½÷¤Zœód‘ŠDöÉÉY^èÝ,êÛÿÖ'/“¦UÃíýúµºŸêê¹dè˜ßw¯Ñˆ*+Ë1DïãZHv… 8P¤pÅÞoV=¶Åg‡²×Óx0õ˜“´4ÂE½sïÕŽ)ãÏ–èÑ< «xwg%Ñî£×w5Cð¼Rö¼…úaºÈ»¿ ×?qqlψÓÏ´0ݰÚg®~N{j<øUA!Àö78‹ÂU‹±cõFpd½ÊÜq ¸©äÈí÷ã¾q»+SV$˜<ž“—Åéä«îp¸pŸ³µÇ5ÞÙ=ä§‹Š=:«l–eçË6r-PÏa%ÕŽòkг‚2-)SšÊrÓbRE¨QŸï|øãGT(| °Ž«RxýšY÷í@QüKȾ«±Û‘þøŸ½eI{zDœ†BÛº”wÆÅ,߉:Õ¡ôŽ’IuÜæHÄÔ–4Ð÷Ä‚Kš'XÆ%½PËà•2³#_úz¬Æ¼ëwÿ°ÍàY˜ðr–éJWúLÊS‹Æ6`ú{•ÿÀœ«Â«3E±ñýtZÝxî10è¡r¼dÆ`[˜ÏÞ1™Ó•ÕóÁcmPÆðÅ1‡Þ1*i ¦ÇlFqmÜCžòvä‡Ävßž…èVQ­Õzý8™ÙiP/çü›_-žâñä¨+SL?/¯9öÕÙõRR]óë}ˆO¦×üD¥äاªæd’¼€L]r%^Èo×yý ×ò‘þb±½M9FË=¨v–·;ØïÍß-Qx1[ «bWdÞÐË]ÿJG$¿dïÏ«ÿf ‹p7SãÁÚ#§ûáh1 ^>}Bå¡Ráß=¾¿m¯ôr~‡ÓZÎ/æ°°Ù5S´ñÏU\šÈ?eGÉ‘Vv^W¹yÝe`Ê«ýªV‹?—ß?½0Fs×MSžÿ.¶iÚßÃëa²qä3¹…³ÙÞŸ¿¯)hüt”Ý.D@atæ¬g0ò¾UâÚ!ÃNl¸zjÂL1cˆչ9çúI+‹|Ë,v Í~¨0aG!¡eÕ‚‘؉ DsÕýÐ7îׂÔeÞññhnälYjƒjOö¦uª—zéxýääC|Ó³£F7–!Y.ó…FX­3׌? sË$p"Ÿ\?è!2Ý,Æ÷3X¥ñSÞD‚s #f'7›¼À•©ÖdÝ©Ã*©— ù«C¨Æ¦˜ãçkR¼^RVrI†<`ºçôr†ÈÊ| ñó âZ‰çU²Ÿå\“3úÐ<5¿ÊpðÔ¥ ª5¬:€—½ ‹í£wóoBn.Ý¡|¦€ZÎdù s!Nø)JùÉlkÁµ¬éè Ûwï{·Pt±îzŒTØVAeî׳9DšzE«K>àó+œ»ë¤Ñ ÚwõagÊQº4°Ä´á‹hŽ2¼XÖØ§ýùåßO¬R›îxÖ+Ïcspfþ³¦ÝËìÞÃ@ýFíý# ¤­[—«®+SV´kýNµS3sµ£?“Š¢bf¾‘ÒBèLÙ¨íí¸•L7Žº¦Ð\Ã×ÎI°+¾¡4ÁÓo4;  áÏêÄ&]CM¯Çcwy˜0¼ç·fI)äUùê³Ö0G1yïÚó¾_IM ¬¾Lñ¸¹¦Ø°±Ï¾Xèo¨nª@º¼Óù'çöFÌa¤«Œ'oÛÉ$x0<«Übj‚«ûθ×=»q¡Î«bÿf§ƒì=!¿ÅY#pxª$ëu=KNè2/!‰¶’rINo³ÏÛQdòzuÔߦ. Ù–?Š? n×)ñÐ.e]x›\j褽û­%d jðÙæêã­«ðw-}€bPh‰ÏuѽÙn(.–j“½.+Mÿ8ý0mâ6ü-vÅrX÷ÑŽ›Yk#Pî37Ëë4-ßÖï™þž$^U~¹ô€™"ê—søz„fœô(5[Š )5……‘B×;<¥©õÖ‹¸z¤‰( øg4æà髈„ B‘m ½Q±òô¾@·+½?‰58,>åQƯٯß]´º ZÌÒÁéx×o_ƒPÅßÕ§PïÆgœLá÷Å{<µ¿‡X.À8=¾¯—,·Žò©×Ÿ›zSRÇPï¶Æ!å{…Îíð·õv¬g¼OÜC£´ ¾’yr‹9܇ƶy!×\g¹ÞöŸ–êÙõþ«ýîË‹øî¥'4x‚ ÙϧüT *6 B…JÅ;ˆ«ñÍ¢ÂݘPsçF Ao^ ppÁ¼Ì¿-Ë.WVþ@âã¼u=QÞ°‹ 0mÏ÷ ´'‡æBNšÜ Èè§¼,ÿnΛǠæÏáxG¡½î\¤6Ï8»°ø8›lªÐo×Qz¡I?ãgÍç{­´¡•å<m³ÞÀظ×>JÏ¡Mx)ðïíÜ<÷…—“÷Ïj²î/š¹§ˆT¼l›¯g|Ú/Š^µvÅ,=DÖŸ_ûk0ç÷(‹Üûs4§ïï¢[¶^¥÷h,ÇGuNc#$t£›ýŒ’þÑY£›¤—¼1;!ý¼pÐ7ýîKiÊn‹™ðpwhNÂ7Ö'ç̨ÚÊ_ÁŸ9EŽ0E+¾ús²ÆµÖ˜2»†“ JX•¼®Ñçkˆ5æ~qWT >ö1ŠëÎ`χ¬.iÿ¦?«íQµér¥ÝšTOt^°©SÀ²¹»OÂnPSÝj`È_xíäöp›Ç~ÐÎò8œ½gEî$ÀI¦sâI½³Ö¢VšZƒ«–¿AU™—ÉÛj-׎‘×:ãxö33ॽÍ]¾®ãLÌLÇ˸›1×ÎÀ¶zfwö n€N‹Ü|?ý01 N¯X1 *è¶[µÙŽ)=öŽŠoš²uÖ;'aò—°Ú@êÝ©òª²Æ3š·ß*ÕB\½žR™–˜Éa¹{–ß9­s~ÃÛ¯ÚZ [ð“£d?¼™kœè‰Cz*mf­»YëÔsŒ¸vݳÒå3jë}Ö’€Òýží²Ùkš’MnfÈÅ¡ŠçŸ«/×!©/£BÑžqíQì«\Ö]1œíâ¿}Z/Ìà}Ö†’Û ÿØO[@$3§‡DW¡”?*cIñ©”ÚmGnäOuPÌ^Á-%£œwŽ›£Öˆž[W&;çꀛßäÁ-)jéå:Ãêxô GÍ Å[ nõ‰ßÒÆb~yžüÒι啜#m7«ÔJâ6ø¤§Í+Mý¹…J×ßÜ’ní¬mG’5|jý"Ù#ÅÊ"l›#‚“úöïùCí–hßåõþÄOLmˆ]&Ú®šó‰÷j8‚òhsÑ6“W„0ðd=ËDñšl€ŸÚv¶xJÖ=¶<Èt/б]Ö–ÅÊ,é»deÙ}ãòuš³DJ¢3€õ‚ ‡D÷¦E—iã髇É8§)ÔHŠ€à‘X¿ý–µâr>Q×"טŠOaW1ZÛQýÜ™P«ò·}Ço#ÂGݽÎú—¦%/ß¿6ÚI¢^]ê”0fêH 4®g­?FÖdé$PB·ÝëgHärËf:ðªÎÛaª‹CíZËáÆÓŒjé¢zì57¾Ø-Ž22Éá¬Ó¥Ê­Ë]ùô`fm®R´ôá™(¬qððÍ™¸c£FªåŒP‡¥öKç{yý2®r÷WúŸÁ}b—{óí —3þ3ï™ àd…œûœÌQxDjn½QÛ?»ø™2ÅÉ VÂdi÷ÀLÎ òâ:V–‹$u*…{z¡9¼¯cBòY«q“çyåð êT+Ãgßíö« lÚ;e)†Sóø)êUúêPÖÁª5xx*–¬—]­Ú¦Çåý1g7z5ÝzIZeV:зƒÈ%ç½×¢âÉÚâÃ: nÑâ­`Îlz“cåjöU_”t5rZ{'šˆg…Û B“aeNÒ*¢Þglƒ»^Øk×¹Ú>6.og<*®¾õñWÚ›sêõVN¢”¾ÕÑqÈ•­Ýc¹±¤{ÇŠ+º“l7Ë”KÏrí·Ø& ,à X n»/}­œ“¼Q^üÜ] >Q$3i •7ÇМ߅*ÏIÝœI¸ž¢iþ¾2 Zœ9~iâd^ìŸrž©õò 0ªð­}ÀyaÐ6ìðÙþ€¶s½-&®ìâ¹áçìýƒq`å³G]b¾A©#¯×{”[³^¶ÉjI¶å-+Ç­{½wënûÍÙìF¹#âo|¤…G…ë›ÏÔ‚jÍF÷«293™ÀGï¬Xó¢ì'þ¨éjÉwµ“QY`å{2ÚUœë!óNü¶0m‹íý<²Œ‹T éÎ’oj$6Ÿ¤'ŠÃ4pMŸ±$ÄÎb¸ýj\ß_.žÒÅfò †ÛõÍ ^¶„qR¥×ƒµeÍÈ–r†·áºš++÷éÆm ý4Äl¼Ù_–æ… îzéôsV.MŒ#ã/¹IGNöü¯øß€÷í á>n~á¯*ý$ejÝŒz-þr_:¯A‘>*ÃC@:oË<|›ëÎ.²Zr[ÖÐ"}Ê…Ûa)?>°‘2³X1{ùЧR<Üë\§ñìÚ¾­n#–ÔSžrOšøZlÞ0¯ú¦ºÿžŠÖaüÎKQû K4ïɊ쬞E¨ã]÷c _.Läñ"ý…¶ß™xćãÂÝ­pÞ­ ³Úi˜¤ü&ÓËv=Nü/¥I€ÿ*›dü®%áØ´µû,ÔcLõCi£gíÍtÆOßS̪±o1Ï J´Pç¬ßœØ}„·ÍG<~ ó–eÆžIÓý’tþ´zþy¯`B'9›Ÿ,§ú•áîþŒ¥ÿæ†Ô >$c 3(V}"…¶mfíI÷ØÀ  îm6q¹#r«ÌêOoc4t( £tL\ò ³ÙI];óúò×tû*æ>- ^tÍ>ÐDÇ’úÔüvk þŸÎ‰ümðÌÿæ9‰GaäF-ëk¹çÔì«3}-V×y:wçDkIOûV±÷f÷.Ž:-s¦ÚÍ~aH|§Õqçúà\pÝF¯¶Tïþ`íĽAÃk?½öäðÛôšßz;–cÃ,d¸ÐöÉh®}ïÔÛí¿àaþ†)wâW¿;8N€Šñßa"PÝèMìTmÛ” û5ôQü¾V >[óÃZ{æ°Ôûîƒ#ðÖ)ßÃqù<:¤‘E`:›íw‹*ñzŒÓ °„w z1R³ÐÛà7Ÿh“n«ñŒjÉ—1ï÷1(€ÌÒÅÉ¿ž­9SÃÓçõ^7Öçâ‡YßÁÌ¿‡…áðDÖR6®jau6¿ïõ‰ËÈR‘⌖>¢*Cét‹.t¹ëv]-Šbx‡çm8Þ(‹ù“ÊÅ•:¢¨ÏÑ ^í¶WÑ æ IçXé”>;q´»½ÃqB[D—x-S^ùVõ:ꟲ<¬Ã衲×"+ì™Ûä]²ËfOï/Šy „P›z#T.«…Ò‘2™ê³5+•R Êf¯oÆ‡í¾Š¬0†™Ùx ù×aö:ÊóÅ黩Îb®ß•>sSQ_WcãêVÿ„‚ÐTÆ;ï’g·7q‰ ØNú³¦×á«_oͺõëÍ©ÁbÏœ~Ëy³óþ{˜„–åÁ¡Z)Ì+K7YK[ß0³B’ Õà§•Œª_D½jûŸ²Þ_Àl8½fëGtç<»Âi;Ê:ÝêS¨Þ.VjÓIF9¬…íÜóóÉ—ˆØÈâõ=;ÌéâéÑ^–;ƒ/oG)>º”ðNxð,ÃAàYÑ›¨´n»8Ú,›>\êA”³ï <½·ÄYÑ^,ŽäzÒŸŒo“Šx_,ˆú†ÞÕZžFà£i‹‹ÐMdÜm Œ!p[¦ÍÝeµÄŽ›;Nøžo£wøúYÜ~™¶`n•—õ”›g釒õÀh*Á³ƒ伓ÐEhA3}PÃô}8 €=Îîý'vrE?²Œ÷4— uö÷Ê6&´†õWå wÀêT4¿éÓIS-v—å­·´gæÛ¨7­`Î;úiޤ>©@š›×-S¿Š£D¡3ùõÜÀUÙ}SË­éK—\ââߣØb ›å(8Œç¯èÔ¬òŠÔ+iW£ÀeDùâ˜M”¬—`^šz6/o°ÉüÙ0ÙỤ́ΔÇ1¬Z'Å<%X…Äí`5žAhIvU6à"±Ž+xùÔ5XX±²åÝyׄžÚõD›‚ì.«¯ßÝÔFèØ<׿uq&?.Å ¾“Ý©aØß‚LŸ9ÂìMÀo1g›cãFÈ€Ü&òçù˜}C«×FrpôÎÏ¡9“AO¸Qür«Ãb÷x­µÇ`3Uûyœ;ó‘È©©4«ìYAìbuÓÊÈqP.¸  ºûj­¥Å'Nöd—ºùKÂÊmž†G“1WLth”LÈB%×ÜQC‹’ku©INàûþ4ðGE%.]¬Kl¨NüXÔŠ•,è=zÒþîy·,ëõ‡è°9Ùf;ñس×}Ñø‰8 +ÔÕé±×zBNÔ Òrª\õq8Œ•·ó² °ce›Õ¿ÐC†Å›råßæŠY‘ƒÏí ®›™LSm•ç Þó…8=‹·G°„þŒþ*ÿ2©)„ן¶ä¤r½š½‹Äi=¶®Ï¸‡ÕÎèP4—` Ìñ&}Ïp7Ï—=•õ͇ ôpίOâLë꾘X°óuj;€M*·?X‘@Dÿ+2̪&ù?…þpEþ5V$}—õ÷ß°"Òë¿„Y~@,u%ø V¤äéÿ +’½gÊàÿ+òà›rÛu¹ˆ·+<ƒ)gÄÜþß@ã¾kñl n‚²h,§$½G'¤B™ thŽ@x~®Ušðb¨½9ësäºhþ *O@]¡›Çæ‚â\7Í^Æ^­#¸B­dja¹ "{fÒ«ø)åJ«q–"²þ7¬HEùXžÜñÂ(þã+"ÖûÿVøÃù¬ÈÜXu“ÿy¬ð‡+â%‹g¯2Ÿº„uÞEgt²¯JÝ‘¸õøWX‘äâþVøÃùXìçd¡ÿVŠ{ÿ+vŸ*ó7¬ð‡+‚‹•–öÿ„©ñÙn@·ñÄŠŒþ +Ò7YÙ[ø?aEœGéVäô7¬ð‡+BöúéK¿þ‚¡ ùÖù×Xq¬BóÊð?ÅŠ¸"ÿ+ÂýçXö¯XŠJÿ+üáŠüÁŠä¯ø+"ý»X‘‹ÔßiµAËæÿ#¬ð‡+òX‘¢Lvþ ¬ñobE¦ÛòXàWä_`EÈNúX‘øßÇŠŒâúXàWä±"t@ýÊwþobE´òîóoaEV³ÅÛtö<ð‡+ò¬#wÿŽqÿç±"À®Èß°"$ZšiÙéœþVDãf¢™Æ½Y€"Çáà?Џ"ÅŠóFÿ¾Qþ9V¤ôVþ¬Èê‰ýk¬ð‡+ò/°"JsÿobEfÇ8ù¬ÈôðW¬Èg)äʸ"ÁŠìGöÿ V„H†#T¹þvÊøEý/bE*/ü^¿vƒ‹!†À®Èß°"Ögø*åEE[üaE:˜;â´bt^º*ð‡+Î3ÜcÏÿQ¬Èôûß±"'®øÑþ°Ãz­ŒuÄ¢ó3¾Ÿ?X‘ïÿ VdìbÀõÃÓ觯[Ä«“EÚ&Þ·+Ñnc4T°ÉŠ´¿v—d­É¢¯ö “7¢ŸFiÞÛúà¢äËHÑêòBâ6¼[FonÍ'gwk3ý'¼•ç…ö£jÁ öý(Ü]WÜ”í "6~u8¶ôëÊ“÷õG:G|$-Wí'q-lïA:ë,£Æp4-šþ¡\K‰qãÁEG%½êH•$ȉ•ì³W*r.«ãyü²$_j~ñ>ÕÜÁ\î6&'`Ñ îk˜#«f 1ÂNÍÜ,[šMÊL&³g–®ùc´[¶ÞÌiBÖóúzA£•ÂxòvÂ3ümÇ °šM­L÷“K¦ÎVj”°‚¹TKãñ¯ñSÇ‹vÚ}ÊŒþÖ3u“Ï'G¼XœJö&žAŸï¶®OYbÖ¿›—%†üù×~îÑ⠨ߓ)ópGÊUJ¼ö+d¤õoÅïSßÖ¾Ãæ(¨Eq¦]zIruäüœwi»%ŒwoçÍAéê¿§^Á%zC®Ù˜iΕ†•Ù)É^Y° Ï ”ÔËu+Ô¸–yEòd¿§ ¥9‚ ‹ÔìœEâð¶}H=¨AãI¾nüºæ¤ÿ@T‰Ä°|%•ÞéÒÁö¿­z˜É7g2½Ú%B\Üm>/œõq«³þ~$C›¸JañÞjÎô ­ÞˆæÐô/€¶‘ǵ蚪†‚¾ÏŸì£÷ds3ÆÉÂYÖ³7UÚC󆱭6¾+n)cˆeÈUúcZ~2.ƒs6Ì–gâ 5û™3Û‘›³öuÚ£|X2¢·ÄÔùVŽ”FgÉ‚òZ~¶t¥Ò^ˆy¹œÞläg4ikñìÒ_]ÞnQ6óZ@˜Ê²Ÿ>–É/‚–}vžiØícŒ¥ÆN'çÛ¶{ô%œÌk¥qýÙ®2Á…ºøëõlÚ”²f—@Há®PÒ}ãY­¯o±fÁî±xµxÊvQ²m˜?¿O~Ð÷äöNðw”¬Rç~{ê·àt(D§Í­®4Û­¼©fÐ C½™ýù4ýÓÚçÀ£Y<Õ›@í>Ô8 óêÉ1'†C/3…k”c±sw¦¿T½#· Ráhªã¾KÔÓËu¦ä!r3Óâ‘,¸É±ZfmÀÙæpý[›OO—³iñHÇ}±£ uÛÜ&f• ùåÌ*‘¼ÿƒëƒæÌƒ>pæ¼ÌI§E"ç;[dÐOK€;r”"‹%ó€æ|LÑ^ÖlÔãP(ëÜr\v3/ÑwÝq½s»OÞ±NÚA¿HŠ_×8¶Š(’[nóó%J"·¹ÒóäÔnt™09Ûâ >rÊ—_âÊåpú†³£7¾Ü¡æ¨Í‰r+¡Í>f–$ÌùI2¯!¦ÏS’á€TZÝ܉³)ðZ¢ʹ·:îÊ®Ó"Ø”ëû“¬­¾ñ˜t¶y6Žë×a6ð³±'Ø?õJ>zFÄ$|8µmÊŸV4—¢ñ™ÅÄ£óÞ1 'ú„ÏT±øjK '[æ’'žT±ð•{ŽÆkòþ[‰ä :w§´§Kùš-`V©Œ$LIº%Õ-õ ˰nm»ˆ7pj±¥Ïöé¿õî''¦ÁùöÀ.$p‹äAíÊΩ~QÏQ~ËêÓôº˜·†5þ-—]Q¡ P%ó"<^v‹Î™*»ÓâÆÉµýêŸcs¼\áor1aÞ“yé®–Ÿµì6z-µ}®ž—뵤Z‹É¨33w¿Ú¿žùÇ*FJ—]íÑ“6mÄ÷¾c {ÊÆ;þÝ#§*ùôgÏâ'*=>ùÄ›C“á ÷gÏyœß‘WÆÜ\ð‰¦ŠÓ¸9é¥su´OuB V¡)<Ún Ñï©ä(;(›?P…ƒúû!3Œ\ÏíhOVÞ`q+&º6m»/aVmæÎñ¹FöçᣣwÈË2•buºtÓˆ·ãá©{¨Au³wgùUìZ"Õø@æ1´ü£–wTÜnv7€ö&rŸ»¨=¾>Ö³A«}žH]߆ý†œqƒz†ä…A‡Þ”M×YzÚv´yQì ÿÉRË•rÆ<ÚãU¹W`ºw7È.uü:Í-/vYÅ¡tk¼Ž“>7xa±(=WAãtªÖšßìÂäû£_߀ya^_Ï·çR– Ëï’ €Í#©eïŸò½J“q{fÍÍ@9CkLl/–/Dâ,Ý\ÝoVŠÆx×g+ΔM,|ÙÉ©²M««>íNÇwµ°´OVÌúr"~ÞYº¯÷o^|x.p~3ïÆ3Æp[z?£“Ýo1Kuw|'¯ÓO|P›Ó‹È¸ã9ôîqïL°Ñî |5·4+]@»Ÿ?“ëÙê#c\æø­#¿’…Ë/*“‘šõ&ïÅ¥º¢Dïêl´Òû8v-MfÌCÏ„™¨]ÀïóÊz5S¾&´®è©Z¾¢þ‚f˜žY^Ñö½ Þð^ð¦öÜåݽ4ëMc¥ÿtS$ÞŠyžoP¤æÂ:­é?c\z…gƒú:3/8úÌ>»½¤‰¥ië÷%¤|)å>×7ÉöŸ)M†}üjVX×j§¶÷6Â}®9ó0lJ'6ýä•ð¾"ÿëÅNióTKÛá;ùlŠãK±JuêOª$<™$E‰ÄMtÀ//¯åÅ„ýV\£5ÎVÃÑÏè/ {½ø¾¨œ¸¯KŽkÕÕ^P—×TrYó’CÔ4!ɨX~7íûkÔC^-¥Ñ©ßýÏø5C­~¢Ì(á– üBÏë—If À™× €îÀ–Ù»mìf¤ë}u~ù3'$ÇÚ ™õõÙgµz"»Wñ¯’³ÉøI__dmße¯2£»ôr>M‡ PíAÁÃìæ8ѺpޤÛ5X¹çX¥{‡ù[ &ð\u?û.ÑÉF$fißmµf"‘AÓÏi—T5ÖóBSYöy(¦-±qå/3q²oóL Þ!p{#ê] Þx¡RSK”ÎØY!l÷ó’ÞPaY—‚ð­¦k«k <‰Ó2`?ˆ¦àU!ÞýLÉYÞ’:‡9*¥Ã17>ô‡ƒ7ðÖ¦Ôáwô,8Ú×—9¶å{¼}9°&©`;®ÝÏg¾7V“×—¹Ôl\&­ì3Š ¿ZÀÝéüÊ/ï²I‹o¯\óÙñГßyÑØÅ)pÆ÷+:²²ëS#%yÿ¾€×CŽ¢¦0™Ó›FÈmÊXma,žá`‡ȵjÙ4ú´¶6:Çc‘‚;1²Çh¼)‰ïòtpï\®9’îDìTðžÞ“dzµ–Qõ]ù×¾¨Fá³_J^„¦Yzoß HG§Ù<;ø‚=p×L ¡XÁo×|;à"c?7{à€ftw/‰ÑÖQ()÷h˜# (ÙôóëÎ+ÅÞóôæÏc*˜þ×dòOà¿qCüKÈ)…P½°ýç-S)zÜ·ÿl D`$w_üb¡X ´Jµ[½Øp|09&§*ñì϶vÈÖ¯³¼™ý‡ò¥/™cëÝŒ)íÒdŽØ2[©mò߿ۥ„,%.’µxÿlMúr&J®ÐíÝl×Ý£nIÑ‘¨úf-éÍvW¶X*üÃÿ¾³ó'ˆªK©&ߦ\ž^G!vHÿÁìÓoÎô ´s>U—§þ^>„‡ÌJ V/YÙÒOu·”“ˉ^Yo‚üãZþ¢‡LÖÞÛmŠ%o-ú\zÛÕ6h^:_•ºáøìb´ˆ?'åoRùbº^†ëÂúSènjù¦l vMÌã}\bn‰ø¤ìì§ñþ˜}ËÙEò’þ3]¦—‡¥E鯨·~<5´QòÉÅañ6½çœÖ¯ÙbªyŠs‡o 9ήÌûfÓl7/D½×vþsíëno6Ü×?÷CX¡˜bä¨*gµ I "yRag÷§ÆÔj%½Ô8™”ÕÂ-•¿†ˆþDQŽ}¤ÿ+›ÌZ`ðºûAÞ³ÈmåÊGþwNl…¸†Ë§ÒY$ZÛ9¼j·‡ÏhmEšW¸}W'ªx0cF52|]nÐ7~2ÛœÓÒû0êÆžZ°£Wñsç%ªýÖwO­øhµr¸ÿšyÛn°ˆü@?5°œfÍ?¹Ã§€ü³¤‡pRþž ¹Üÿ>RæïÜló6oºü»ø]ÝÀæÞÚ¸ò§¥_Tý”¿SÁªwÉZí¡Â•9S³r%xÖ¼Ïk¿{µê¥S•Ù®—v³Jؼ „ÈšÓ=ëÎ ”,MFC{•µGøóYø\¿ûX0ð0ñhr‹?Dþžõp¼ŠÓL-á.þ{Æ¥4'Õ9ßFÁ]ëSÛÃ?sÄ.Û…çxßTu§vgÅtŬ^k2•;ËõLòW³Æ4´Ó±{·z˜³­¿ ùº\ݪÄàîÿé°Ëþÿ Tä·+¥ž¡?×ÿáü™Äbšy¡è ÛDÌ£ô U?q$š'pA½Õmyç¨$öì¿ß§ÏÐRQÚ‚{H»Ñ½­qZé~›z L  *²¶°ÿ*ÂØ§#ÆÅùïd¸Ó¦æ‡Ñ®ÿ¡²Z?TLÿEøw_ê=sr´Â·äôYŒ¦ÄÝqš^Äþeì<Ÿn:›ºbŽŒîàmZº)[Å8g›Fï¼î¹be¶ÙJjP“ÒÏüÆ^/çÌ]ðOm”é"¯raÐ>Ò^9ßì—”ör¶°*]Ól{ºVÎ'V¶kÏÓ‚[z~M]rÆ}N-¤™5é_r¢[a[ ï2áj J‚×5+Ëôâ¹5–#ÿœ~_d¥–‡·éL‰øU’?P‘äÿ@EþëP‘·¶,ø‚÷þá„è¼'ï‘Ùµ·âùHhg^GA¸S’»çÇ$Ý \áR.Œh~ŠçÌJPªµÔ^q µ¼—»"Y]!=»âÏ4Ûz”MÎèÇV¼Ÿ«ÞWƒÔsÞP[q ý;RN°Û>'âÂ(8WünåýµÚþÙÑR—|]–¯ãOcüëÍåÍæûH" gïLtÅ_Ÿ—½ãfP­ï¼ó±ùd^³ÂYþ[ŽŽq³~>&òŸ^Ø„®„…”Œ¯Ö¸zdr冴fþJqÜB¹:`÷õâþ£-œH?ß㓳²Q‚[´¡– ¼ydÆOnB>’_/~sx8âÄ B0I‡¡AØxv_V½ž½çUmñ(OUtK Vš ;±Œº3¨JóïúªN}4>3#YS×/œ•Ó½ê•/#>’ÒêÇâîù|y=­]nÔ>[O«ÿ] ]?êr»ÿ ý q¶Ð½âÜ©ÅÙ±lÔz©jiC•Cç=E®¥ ï™/!©~t‡ÆàT¿ d’|Ï—!ú†ƒùöXiŽNHõ2E=NÍ º¼±ô´ž¹R§Äö¥q®®åý„E‰ïµ†¨ró&×Ãã™~çìNX]%Ë#ß²kŸâ%ÑPõ,Ô>—˜Ù´ßùv\Ù4§Ë#t,n+4xùõYŸïU{~ÓQR÷‘~ª}ñ å\›Ýƒå¤Céù ?qæX—Mª-µñÐ1wö£î hGc$}´_¾w:.¿ÅõÜk¥0I §;èÑÁ°ÎGf¾žoñù“·â…ärh+ÀÙ³ÒUÅw}éÌ“mNK{ ÙÝGÙÀâ¥<Ðpå´ûvØ©8-rÛ«7ýÐíbÎ`üÁ˜Õî§r¿êNdßfÒ®/ÊFä/åù°?²n+ç¯6NOòWkŠ*2EºPû~†jä>\Eä=2ŠÐÕÁQuÇéÁ5ÚÒ’9yÚŠI%þìÂma¾{X¢£:|87°ØKžyçå9å ·^G¹U_™Uu«¢ù5}¼Bæm7b°ƒm„âaƒÎ*/2þ+P¿öÿûP]žý*2œœÁöÿPg5Ç?ÿ*ò "ÿ*òÿ ¨Š+ÜÿŠüï QŠùÐÜ‹y÷~ÆAØ5”W˜ gµœžYÉ´-Or œ±[Ž¢%¯Ö«Fs'MJÙ}36VÛHÕœ1ÑQn›ïj¾äv­H½=¨²¿¿ÏÁœæ5ë TÂ/‚Ê ¯O“t8•¸ªùk(}±\)dž{zߎüÌËIö^à=a³ç 5{P{汸fëeÛ|€ºAE¿Ðkǽ}ÒØ/uá Øt.gÃæ£>ÝÀ:éXÞz¸­jI•;÷ c|yCÙ8:nˆyGI»>E:ÇëW¼L^õíÞrOÏÁSô4ŽB<ØEçíP[6ÑKJ$Ts3_îµ^ŸÿhǺQuŒ(®LúÄaw`»¬U4f—ÀœexÒBH>fr`0-™K›³z:_Æ&yØýZ¨ŠŸo£àQåk¼±«Æg40²‹ŠPÏ!¥£³>³ß+/<ˆKIë'onЦ&@絋׿ž¡2NP¢€º«“_%tªkM®%CçfíëÖÛG-1Sç˜þ7*eÿ½öÞQ÷a–¿»ƒ—álmrvTy¼,uf ˜±œ5è³ ÎÇkWöåß}Snê™Wb±»YˆçÇ¥]BÞ6m™SdØx#žñ&–§`“~ê9vÕ¾¯·ó«b<ìõ‚ƒåèE @”ºO1ÆÍ^¡j§x(HŽ,^ÁŽR4´o+·b¥§¿ïÔž¨ì–v»Q¼´$Ê‘;M¯º ’öƈ³éÀuüa×çZUâs˜Ý7!·,w5/Z´9{>>F—ˆ¯]fܸŽ|þšøúßf:æËb 7È©³¹9fzìZ¤õQËÓ–¾S±ö-’çIÉ3é§ÊÊÅs¦ôï0lÕŠ qìŸ7½~tIõ—üt5ÑC©óîŠl!Ô”ã³ÑúûË#@›*¨%[¨~ò8ótB ¢ëÕñF2ˆ1ÄꈱVmq(ͳ5´Ëר©“‹&Ïq×ε¹êV«_6™,ØÏ<Xù6]ªvX΂ýda¿G¶N‹ës¶ëä³ 9Å|{w0Ÿ©÷M0wÀëf§C’~­¯Ž¿7dµÞ®"ó¦XÓΖW¸µ³]Ôí…äŪï&]nV¨÷½ö`tb{yw˱!ÝI5{©seåRºÆlK…×T].Gšc®ñ™£åÈ>Þmj£š³—·Rï}M’2J‹M/šøþfÓ`Ö2èz^:–X•Á/xº/2 Éí+g_õ‰rGï ¨K¨~Kç´ÒO*«›÷ûÃ`Û‰œE³ìEÕ¶æ .]]éê3ÝÛ1^²ìðŽÏ³Bd—'º:¯êÆP»Ï•ƒ’®8þû$",žòóñ±TÄT÷Év÷<R:°v’U¼ì0¬Ê6õ¾ÕeÙjÈs£¨k:¹ßtw·wFÎ7f›0›WEëœÙow×k>\ÖÂOÅMÏ¢nkð÷$g9Ÿ4žÌNÙñÏyÃo{è{¼J“Q ²E+纯y³G±þ@î=Pt°î ëý é¸bsúZIÁmCó"·A3 •zúàøsÚ9ûÅh¾3OrN6_ôvã£û<¯OD«ì^¿6ºh›ÕÁ'I¤Ì”–/{µ¯áƒ;^ûÃW-·z—ž/ýàÎe­‡IO¡ç»–b&gaÛQLÙͼ¾¬Ë`ü4oÀ_Â9Sè6ëªV[:ê4èMð6)ó$ ‚oÈ'í[¹†ƒ\¿ý˜ædÔ#ÌKéãçdÖ^ sÿÅäåÉvVw„"Ÿ×€Ux¾éØpV]EëÊËhé¥Jdï5yp¨¼p‘Q'p“|. ûUÈ’0^ïpÏM¡¸†)ŒŠ#>þ>lòl¬>3VPB×]ñC¬Ö‚Ëo‡ÿFZäòŸ¤ENõ³7¬>÷­J‹¦ò—´ˆ ¥óSNúi“Ý^ ½*^\%} Ì«cûÃWîÓëœ.åËX9[pî-É3™öjà«| —2UÏñ´=Ý×€y|là¼Qî"ßU`L§jØÞ§˜w{]ºïfxèüÎ×';|, ? <ˆck2éˆ33³PpW[[ïÜ“~¤n¸/G¾æZ‘ʬ>ê¶6¹ñ¹´Ù¿jýCu8ìgÇ€ 3Ùbš"³ß©0ÍÑqºw¡}5+ÄžŸÌ]Í|K­g«®—ŒþÅ™/Ìí!⨤R…1Û\òõÙ&7?“ï² ’¹âÉꬺ§éí ª8ÐÏoHç®Ó<I©ŽY Ø*”+%¥4+-vÓ…Žêþ¿—éýçi‘¨°®ÿµ´ Ž¢ÿ,-²XS O‹db÷?N‹8-*ÿ~ZäTJ[Õ°üwÒ"sÂþ!-âÿyZ¤Òü%-RÑîÚâ/iúYF/ƒ"Ð#‡niüÿÍ´HT^„O‹,ÿKi€úÒ"a“ŸFÿIZd:|šÿ<-|ÿ‹i‘K.üó´H+ýCZ$z4ƒ±ôÈ+@ë?L‹`í,]õËAJ}¨4§ ÆÛT³Úß}¯_³[ÈG\/õíØor U)¯iFãa/½­ÿ±jÛì(}'½5€ã^’°àBøú­s þu~à~kÞ'é—òg¬>1{}&Ê„T¬^úã˜Í!àÕ5~Ââø« ØŠm <oéúépÒ-µSs2pô½ÚFd_Yµ;~3èb4®—‹2H‹¥.ÅäX÷ÜêëuËÊ$$ið=~Õrؤ|½«¬ËŤNº"rÖ”Jµç,c=êÁA½¦d²‚<*æÏPXÊD߀»®ñavŸó;çLi/ôõ³é=oÛO^fA°7ÇkÔyªf^&4á õI'ù4)¼j/£QÉnÞ/(- Ü«ÌÕ áðbÏô÷FÏ¿d•+g²ŸUª“E%4çSÃÚ÷Ÿ¸|a;9Ú“ûÀq?ÝuÈÞäØN럃‘$•þ…:EéúY%ÝE•wyeü;]w2­’æ ÅÒó;B;îl“A¬ÍÏ%Åf/îh¢U“ƒöóusØÂ*D©Ô?E#¾ÇÑá ¹Œwhh]]émì  \dËG)ÞõízÇ‚ÕÊjƒÒÌ8شۿ͸” |ùÎd檣ÌW»ï/‚u^¾xétÚŽÿ ÅÜ}ÐTdxÏš¹ž +ÅÌ´ ¾‰wâp6K©hž²o»qùKêG{KnÅjçX‹ëÍžWZÙ¯/í”ËüGÕ®t» @j™À•Y3ÒϽ–Ôî>ªäxÃtÔ Þµ˜V…éµR©cC¯ÉÕnþÉ‹Œh÷ $;§L³àµ ð‡ËÀŽœÕ`\ =9äÛ˜ƒFì¤~ìÍêw-{éº÷fË*ó:÷ó wé‰y\¹®Ä½Ÿ§)t!§>²°Ã#ÛŸÌ ïQVKÕ(”_Ëm D£J±½ × é¥ ÛùJbù"0[.wå^÷Æêü÷“%mµ¤u ›¶Ë¡é=ØõN®—ÓsŽ›l´møOejC8ºƒòøþ,rÏt×m$¥þÜwQ€_uxô¤>¡Y÷3·csÏßìNŠ,/seí²âhT'GÓQ,×òVÔüp]X›ÝTèM:e°:FýdÅ2ÅÜ uZž P"Ø¿ó—È¡·ÔáßP"ÏÒßÇ)ý=2Ò®eÙìt wÀïê+<:¥åü³ÈÈÊOÀòÀ¥W‹»,;¡ÆSÞUÂéÑ’ bU½šºHt±›µlîèßç¾XîÁ`³aæ;úŒÈiwZþè÷ègf. ¨¨š’i äÖý ÑTvn“"×'_\5j÷ß}Ò×ûVƒ¦*„5`Yè»h^-­>÷…¦*1¢ºÈÎ'ñKkj]MaxW¢È÷ôÚŸ8àðå*ÏWgÿà²×oU^ʹǬ]h}Ô]ak%îK®§Ú¬ûCh‚Ât¸üc^dõ߀G|ÿ¿þüù§ÿû¿r/ù¿ßÉJü7 Pг›=²?.Fÿ øÿ.!R’v²src/test/resources/ps/TestFonts.ps0000644000175000017500000026436210344614150016610 0ustar user01user01%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 20 118 575 673 %%Creator: FreeHEP Graphics2D Driver %%Producer: org.freehep.graphicsio.ps.PSGraphics2D %%For: %%Title: %%LanguageLevel: 3 %%EndComments %%BeginProlog 100 dict dup begin % % File: org/freehep/graphicsio.ps/PSProlog.txt % Author: Charles Loomis % % Redefinitions which save some space in the output file. These are also % the same as the PDF operators. /q {gsave} def /Q {grestore} def /n {newpath} def /m {moveto} def /l {lineto} def /c {curveto} def /h {closepath} def /re {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath} def /f {fill} def /f* {eofill} def /F {gsave vg&FC fill grestore} def /F* {gsave vg&FC eofill grestore} def /s {closepath stroke} def /S {stroke} def /b {closepath gsave vg&FC fill grestore gsave stroke grestore newpath} def /B {gsave vg&FC fill grestore gsave stroke grestore newpath} def /b* {closepath gsave vg&FC eofill grestore gsave stroke grestore newpath} def /B* {gsave vg&FC eofill grestore gsave stroke grestore newpath} def /g {1 array astore /vg&fcolor exch def} def /G {setgray} def /k {4 array astore /vg&fcolor exch def} def /K {setcmykcolor} def /rg {3 array astore /vg&fcolor exch def} def /RG {setrgbcolor} def % Initialize the fill color. 0 0 0 rg /vg&FC {mark vg&fcolor aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /vg&DFC {/vg&fcolor exch def} def /vg&C {mark exch aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /w {setlinewidth} def /j {setlinejoin} def /J {setlinecap} def /M {setmiterlimit} def /d {setdash} def /i {setflat} def /W {clip} def /W* {eoclip} def % Setup the default graphics state. % (black; 1 pt. linewidth; miter join; butt-ends; solid) /defaultGraphicsState {0 g 1 w 0 j 0 J [] 0 d} def % Emulation of the rectangle operators for PostScript implementations % which do not implement all Level 2 features. This is an INCOMPLETE % emulation; only the "x y width height rect..." form is emulated. /*rf {gsave newpath re fill grestore} def /*rs {gsave newpath re stroke grestore} def /*rc {newpath re clip} def /rf /rectfill where {pop /rectfill}{/*rf} ifelse load def /rs /rectstroke where {pop /rectstroke}{/*rs} ifelse load def /rc /rectclip where {pop /rectclip}{/*rc} ifelse load def % Emulation of the selectfont operator. This includes a 20% increase in % the fontsize which is necessary to get sizes similar to the Java fonts. /*sf {exch findfont exch dup type /arraytype eq {makefont}{scalefont} ifelse setfont} bind def /sf /selectfont where {pop {1.2 mul selectfont}}{{1.2 mul *sf}} ifelse def % Special version of stroke which allows the dash pattern to continue % across path segments. (This may be needed for PostScript although % modern printers seem to do this correctly.) /vg&stroke { currentdash pop length 0 eq {stroke} { currentdash /vg&doffset exch def pop flattenpath {m vg&resetdash} {2 copy currentpoint 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt 3 1 roll l currentdash 3 -1 roll add setdash} {} {h vg&resetdash} pathforall stroke vg&resetdash } ifelse } def /vg&resetdash {currentdash pop vg&doffset setdash} def % Initialize variables for safety. /delta 0 def /xv 0 def /yv 0 def /width 0 def /height 0 def % Initialize to portrait INTERNATIONAL (Letter-height, A4-width) page. /pw 595 def /ph 791 def /po true def /ftp false def % Initialize margins to 20 points. /ml 20 def /mr 20 def /mt 20 def /mb 20 def % Temporary matrices. /smatrix 0 def /nmatrix 0 def % set page size (usage: setpagesize) /setpagesize {/ph exch def /pw exch def} def % set page orientation (usage: portrait or landscape) /portrait {/po true def} def /landscape {/po false def} def % force natural size for image (usage: naturalsize) /naturalsize {/ftp false def} def % resize image to fill page (usage: fittopage) /fittopage {/ftp true def} def % set margins of the page (usage: setmargins) /setmargins {/mr exch def /mt exch def /mb exch def /ml exch def} def % set the graphic's size (usage: setsize) /setsize {/gh exch def /gw exch def} def % set the graphic's origin (usage: setorigin) /setorigin {/gy exch def /gx exch def} def % calculate image center /imagecenter {pw ml sub mr sub 2 div ml add ph mt sub mb sub 2 div mb add} def % calculate the necessary scaling /imagescale {po {gw}{gh} ifelse pw ml sub mr sub div po {gh}{gw} ifelse ph mt sub mb sub div 2 copy lt {exch} if pop ftp not {1 2 copy lt {exch} if pop} if 1 exch div /sfactor exch def /gw gw sfactor mul def /gh gh sfactor mul def} def % calculate image origin /imageorigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div po {add}{sub} ifelse} def % calculate the clipping origin /cliporigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub floor ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div sub floor} def % Set the clipping region to the bounding box. /cliptobounds {cliporigin po {gw}{gh} ifelse 1 add po {gh}{gw} ifelse 1 add rc} def % set the base transformation matrix (usage: setbasematrix) /setbasematrix {imageorigin translate po {0}{90} ifelse rotate sfactor sfactor neg scale /defaultmatrix matrix currentmatrix def} def % The lower-right bias in drawing 1 pt. wide lines. /bias {q 0.5 0.5 translate} def /unbias {Q} def % Draw a line. (x0 y0 x1 y1 line) /L {bias n m l S unbias} def % Polyline primitive. /polyline {n m 1 exch 1 exch {pop currentfile token pop currentfile token pop l} for } def % Draw a polyline (n x0 y0 OPL x1 y1 x2 y2 ... ... xn yn) /OPL {bias polyline S unbias} def % Draw a closed polyline (n x0 y0 CPL x1 y1 x2 y2 ... ... xn yn) /CPL {bias polyline s unbias} def % Draw a filled polyline (n x0 y0 FPL x1 y1 x2 y2 ... ... xn yn) /FPL {polyline h f*} def % Draw an oval. (x y w h OVL) /OVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width currentlinewidth sub 2 div height currentlinewidth sub 2 div neg scale n 0 0 1 5 -2 roll arc smatrix setmatrix S} def % Draw a filled oval. (x y w h FOVL) /FOVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width 2 div height 2 div neg scale n 0 0 m 0 0 1 5 -2 roll arc h smatrix setmatrix f} def % Draw a rounded rectangle. (x y w h arcwidth archeight RREC) /RREC {matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix s} def % Draw a filled rounded rectangle. (x y w h arcwidth archeight FRREC) /FRREC{matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix h f} def % Draw a string. (string x y STR) /STR {q m 1 -1 scale recshow Q} def % Define basic plot symbols. /xys {/siz exch def /yv exch def /xv exch def} def /hline {xys n xv siz 2. div sub yv m siz 0 rlineto S} def /vline {xys n xv yv siz 2. div sub m 0 siz rlineto S} def /plus {xys n xv yv siz 2. div sub m 0 siz rlineto xv siz 2. div sub yv m siz 0 rlineto S} def /dot {n 2. div 0 360 arc s} def /fdot {n 2. div 0 360 arc h f} def /box {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rs} def /fbox {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rf} def /tridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto s} def /ftridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto h f} def % Symbols defined in terms of the others. /star {3 copy cross plus} def /cross {xys q xv yv translate 45 rotate 0 0 siz plus Q} def /diamond {xys q xv yv translate 45 rotate 0 0 siz box Q} def /fdiamond {xys q xv yv translate 45 rotate 0 0 siz fbox Q} def /triup {xys q xv yv translate 180 rotate 0 0 siz tridn Q} def /ftriup {xys q xv yv translate 180 rotate 0 0 siz ftridn Q} def % Define the composite fonts used to print Unicode strings. % Undefine particular values in an encoding array. /vg&undef { {exch dup 3 -1 roll /.notdef put} forall } def /vg&redef { {3 -1 roll dup 4 2 roll put} forall } def % usage: key encoding basefontname vg&newbasefont font /vg&newbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def currentdict end definefont } def % usage: key encoding basefontname vg&newskewedbasefont font /vg&newskewedbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def exch FontMatrix exch matrix concatmatrix /FontMatrix exch def currentdict end definefont } def % usage: basekey suffix vg&nconcat name /vg&nconcat { 2 {dup length string cvs exch} repeat dup length 3 -1 roll dup length 3 -1 roll add string dup 0 4 -1 roll dup length 5 1 roll putinterval dup 4 -2 roll exch putinterval cvn } def %usage: fontname vg&skewmatrix matrix /vg&skewmatrix { findfont dup /FontInfo known { /FontInfo get dup /ItalicAngle known { [ 1 0 4 -1 roll /ItalicAngle get neg dup sin exch cos div 1 0 0 ] } {pop matrix} ifelse } {pop matrix} ifelse } def % usage: newfontname basefontname vg&newcompositefont -- /vg&newcompositefont { /vg&fstyle exch def /vg&bfont exch def /vg&fname exch def << /FontStyleBits vg&fstyle /FontType 0 /FontMatrix matrix /FontName vg&fname /FMapType 2 /Encoding [ 0 1 255 {pop 6} for ] dup 16#00 0 put % Latin dup 16#03 1 put % Greek dup 16#20 2 put % Punctuation dup 16#21 3 put % Arrows dup 16#22 4 put % MathOps dup 16#27 5 put % Dingbats /FDepVector [ vg&bfont /-UC-Latin vg&nconcat UCLatinEncoding vg&bfont vg&newbasefont vg&bfont vg&skewmatrix vg&bfont /-UC-Greek vg&nconcat UCGreekEncoding /Symbol vg&newskewedbasefont vg&bfont /-UC-Punctuation vg&nconcat UCPunctuationEncoding vg&bfont vg&newbasefont /Arrows-UC findfont /MathOps-UC findfont /Dingbats-UC findfont /Undefined-UC findfont ] >> vg&fname exch definefont pop } def % Null encoding vector (all elements set to .notdef) /NullEncoding [ 256 {/.notdef} repeat ] def % Unicode Latin encoding (unicode codes \u0000-\u00ff) /UCLatinEncoding ISOLatin1Encoding dup length array copy dup 16#60 /grave put [ 16#90 16#91 16#92 16#93 16#94 16#95 16#96 16#97 16#98 16#9a 16#9b 16#9d 16#9e 16#9f ] vg&undef def % Unicode Greek encoding (unicode codes \u0370-\u03ff) /UCGreekEncoding NullEncoding dup length array copy << 16#91 /Alpha 16#92 /Beta 16#93 /Gamma 16#94 /Delta 16#95 /Epsilon 16#96 /Zeta 16#97 /Eta 16#98 /Theta 16#99 /Iota 16#9a /Kappa 16#9b /Lambda 16#9c /Mu 16#9d /Nu 16#9e /Xi 16#9f /Omicron 16#a0 /Pi 16#a1 /Rho 16#a3 /Sigma 16#a4 /Tau 16#a5 /Upsilon 16#a6 /Phi 16#a7 /Chi 16#a8 /Psi 16#a9 /Omega 16#b1 /alpha 16#b2 /beta 16#b3 /gamma 16#b4 /delta 16#b5 /epsilon 16#b6 /zeta 16#b7 /eta 16#b8 /theta 16#b9 /iota 16#ba /kappa 16#bb /lambda 16#bc /mu 16#bd /nu 16#be /xi 16#bf /omicron 16#c0 /pi 16#c1 /rho 16#c2 /sigma1 16#c3 /sigma 16#c4 /tau 16#c5 /upsilon 16#c6 /phi1 16#c7 /chi 16#c8 /psi 16#c9 /omega 16#7e /semicolon 16#87 /dotmath 16#d1 /theta1 16#d2 /Upsilon1 16#d5 /phi 16#d6 /omega1 >> vg&redef def % Unicode punctuation encoding (unicode codes \u2000-\u206f) /UCPunctuationEncoding NullEncoding dup length array copy << 16#10 /hyphen 16#11 /hyphen 16#12 /endash 16#13 /emdash 16#18 /quoteleft 16#19 /quoteright 16#1a /quotesinglbase 16#1b /quotesingle 16#1c /quotedblleft 16#1d /quotedblright 16#1e /quotedblbase 16#1f /quotedbl 16#20 /dagger 16#21 /daggerdbl 16#22 /bullet 16#24 /period 16#26 /ellipsis 16#27 /periodcentered 16#30 /perthousand 16#44 /fraction 16#70 /zerosuperior 16#74 /foursuperior 16#75 /fivesuperior 16#76 /sixsuperior 16#77 /sevensuperior 16#78 /eightsuperior 16#79 /ninesuperior 16#7b /hyphensuperior 16#7d /parenleftsuperior 16#7e /parenrightsuperior 16#80 /zeroinferior 16#84 /fourinferior 16#85 /fiveinferior 16#81 /oneinferior 16#82 /twoinferior 16#83 /threeinferior 16#86 /sixinferior 16#87 /seveninferior 16#88 /eightinferior 16#89 /nineinferior 16#8b /hypheninferior 16#8d /parenleftinferior 16#8e /parenrightinferior >> vg&redef def % Unicode mathematical operators encoding (unicode codes \u2200-\u22ff) /UCMathOpsEncoding NullEncoding dup length array copy << 16#00 /universal 16#02 /partialdiff 16#03 /existential 16#05 /emptyset 16#06 /Delta 16#07 /gradient 16#08 /element 16#09 /notelement 16#0b /suchthat 16#0f /product 16#11 /summation 16#12 /minus 16#15 /fraction 16#17 /asteriskmath 16#19 /bullet 16#1a /radical 16#1d /proportional 16#1e /infinity 16#20 /angle 16#23 /bar 16#27 /logicaland 16#28 /logicalor 16#29 /intersection 16#2a /union 16#2b /integral 16#34 /therefore 16#36 /colon 16#3c /similar 16#45 /congruent 16#48 /approxequal 16#60 /notequal 16#61 /equivalence 16#64 /lessequal 16#65 /greaterequal 16#82 /propersubset 16#83 /propersuperset 16#86 /reflexsubset 16#87 /reflexsuperset 16#95 /circleplus 16#97 /circlemultiply 16#a5 /perpendicular 16#03 /existential 16#c0 /logicaland 16#c1 /logicalor 16#c2 /intersection 16#c3 /union 16#c4 /diamond 16#c5 /dotmath >> vg&redef def % Unicode arrows encoding (unicode codes \u2190-\u21ff) % Also includes those "Letterlike" unicode characters % which are available in the symbol font. (unicode codes \u2100-\u214f) /UCArrowsEncoding NullEncoding dup length array copy << 16#11 /Ifraktur 16#1c /Rfraktur 16#22 /trademarkserif 16#35 /aleph 16#90 /arrowleft 16#91 /arrowup 16#92 /arrowright 16#93 /arrowdown 16#94 /arrowboth 16#d0 /arrowdblleft 16#d1 /arrowdblup 16#d2 /arrowdblright 16#d3 /arrowdbldown 16#d4 /arrowdblboth >> vg&redef def /ZapfDingbats findfont /Encoding get dup length array copy /UCDingbatsEncoding exch def 16#20 1 16#7f { dup 16#20 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for 16#a0 1 16#ff { dup 16#40 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for UCDingbatsEncoding [ 16#c0 1 16#ff {} for ] vg&undef [ 16#00 16#05 16#0a 16#0b 16#28 16#4c 16#4e 16#53 16#54 16#55 16#57 16#5f 16#60 16#68 16#69 16#6a 16#6b 16#6c 16#6d 16#6e 16#6f 16#70 16#71 16#72 16#73 16#74 16#75 16#95 16#96 16#97 16#b0 16#bf ] vg&undef pop % Define the base fonts which don't change. /Undefined-UC NullEncoding /Helvetica vg&newbasefont pop /MathOps-UC UCMathOpsEncoding /Symbol vg&newbasefont pop /Arrows-UC UCArrowsEncoding /Symbol vg&newbasefont pop /Dingbats-UC UCDingbatsEncoding /ZapfDingbats vg&newbasefont pop % Make the SansSerif composite fonts. /SansSerif /Helvetica 16#00 vg&newcompositefont /SansSerif-Bold /Helvetica-Bold 16#01 vg&newcompositefont /SansSerif-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /SansSerif-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Serif composite fonts. /Serif /Times-Roman 16#00 vg&newcompositefont /Serif-Bold /Times-Bold 16#01 vg&newcompositefont /Serif-Italic /Times-Italic 16#02 vg&newcompositefont /Serif-BoldItalic /Times-BoldItalic 16#03 vg&newcompositefont % Make the Monospaced composite fonts. /Monospaced /Courier 16#00 vg&newcompositefont /Monospaced-Bold /Courier-Bold 16#01 vg&newcompositefont /Monospaced-Italic /Courier-Oblique 16#02 vg&newcompositefont /Monospaced-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont % Make the Dialog composite fonts. /Dialog /Helvetica 16#00 vg&newcompositefont /Dialog-Bold /Helvetica-Bold 16#01 vg&newcompositefont /Dialog-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /Dialog-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the DialogInput composite fonts. /DialogInput /Helvetica 16#00 vg&newcompositefont /DialogInput-Bold /Helvetica-Bold 16#01 vg&newcompositefont /DialogInput-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /DialogInput-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Typewriter composite fonts (JDK 1.1 only). /Typewriter /Courier 16#00 vg&newcompositefont /Typewriter-Bold /Courier-Bold 16#01 vg&newcompositefont /Typewriter-Italic /Courier-Oblique 16#02 vg&newcompositefont /Typewriter-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont /cfontH { dup /fontsize exch def /SansSerif exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHB { dup /fontsize exch def /SansSerif-Bold exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHI { dup /fontsize exch def /SansSerif-Italic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHBI { dup /fontsize exch def /SansSerif-BoldItalic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontT { dup /fontsize exch def /Serif exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTB { dup /fontsize exch def /Serif-Bold exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTI { dup /fontsize exch def /Serif-Italic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTBI { dup /fontsize exch def /Serif-BoldItalic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontC { dup /fontsize exch def /Typewriter exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCB { dup /fontsize exch def /Typewriter-Bold exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCI { dup /fontsize exch def /Typewriter-Italic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCBI { dup /fontsize exch def /Typewriter-BoldItalic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def % Darken or lighten the current color. /darken {0.7 exch exp 3 copy q 4 -1 roll vg&C currentrgbcolor 3 {4 -2 roll mul} repeat 3 array astore Q} def /displayColorMap << /Cr [1.00 0.00 0.00] /Cg [0.00 1.00 0.00] /Cb [0.00 0.00 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.00 0.00] /CGg [0.00 1.00 0.00] /CGb [0.00 0.00 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.00 0.00] /CIg [0.00 1.00 0.00] /CIb [0.00 0.00 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /printColorMap << /Cr [1.00 0.33 0.33] /Cg [0.33 1.00 0.33] /Cb [0.33 0.33 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.33 0.33] /CGg [0.33 1.00 0.33] /CGb [0.33 0.33 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.33 0.33] /CIg [0.33 1.00 0.33] /CIb [0.33 0.33 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /grayColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [0.75] /CGg [1 ] /CGb [0.50] /CGc [0.75] /CGm [0.50] /CGy [1 ] /CGo [0.75] /CGp [1 ] /CGw [0 ] /CGgrl [0.25] /CGgr [0.50] /CGgrd [0.75] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def /bwColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [1 ] /CGg [1 ] /CGb [1 ] /CGc [1 ] /CGm [1 ] /CGy [1 ] /CGo [1 ] /CGp [1 ] /CGw [0 ] /CGgrl [1 ] /CGgr [1 ] /CGgrd [1 ] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def % % The following routines handle the alignment of and printing of % tagged strings. % % Predefine the bounding box values. /bbllx 0 def /bblly 0 def /bburx 0 def /bbury 0 def % This routine pops the first unicode character off of a string and returns % the remainder of the string, the character code of first character, % and a "true" if the string was non-zero length. % popfirst % popfirst /popfirst { dup length 1 gt {dup 0 get /vg&fbyte exch def dup 1 get /vg&cbyte exch def dup length 2 sub 2 exch getinterval true} {pop false} ifelse } def % This routine shows a single unicode character given the font and % character codes. % unicharshow -- /unicharshow { 2 string dup 0 5 -1 roll put dup 1 4 -1 roll put internalshow } def % This is an internal routine to alternate between determining the % bounding box for stringsize and showing the string for recshow. % internalshow -- /internalshow {show} def % This is an internal routine to alternate between determining the % bounding box for stringsize and stroking various ornaments. % internalstroke -- /internalstroke {S} def % Sets up internalshow to use the null device to determine string size. % -- nullinternalshow -- /nullinternalshow {/internalshow {false charpath flattenpath pathbbox updatebbox} def} def % Sets up internalstroke to use the null device to determine string size. % -- nullinternalstroke -- /nullinternalstroke { /internalstroke {flattenpath pathbbox updatebbox} def} def % This routine tests to see if the character code matches the first % character of a string. % testchar /testchar {exch dup 3 -1 roll 0 get eq} def % Raise the text baseline for superscripts. % -- raise -- /raise { 0 fontsize 2 div rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-raise the text baseline for superscripts. % -- unraise -- /unraise { /fontsize fontsize 1.5 mul def 0 fontsize 2 div neg rmoveto } def % Lower the text baseline for subscripts. % -- lower -- /lower { 0 fontsize 3 div neg rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-lower the text baseline for subscripts. % -- unlower -- /unlower { /fontsize fontsize 1.5 mul def 0 fontsize 3 div rmoveto } def % Compare the top two elements on the stack and leave only the % larger one. /maxval {2 copy gt {pop} {exch pop} ifelse} def % Tokenize a string. Do not use the usual PostScript token because % parentheses will not be interpreted correctly because of rescanning % of the string. /vg&token {/vg&string exch def /vg&index -1 def /vg&level 0 def 0 2 vg&string length 2 sub { dup dup 1 add exch vg&string exch get 8 bitshift vg&string 3 -1 roll get or dup 16#f0fe eq {pop 1}{16#f0ff eq {-1}{0} ifelse} ifelse /vg&level exch vg&level add def vg&level 0 eq {/vg&index exch def exit} if pop } for vg&index 0 ge { vg&string vg&index 2 add dup vg&string length exch sub getinterval vg&index 2 gt {vg&string 2 vg&index 2 sub getinterval}{()} ifelse true} {false} ifelse } bind def % Recursively show an unicode string. % recshow -- /recshow { popfirst { % Test to see if this is a string attribute. vg&fbyte 16#f0 and 16#e0 eq { q % Font style. currentfont dup /FontStyleBits known {/FontStyleBits get}{pop 0} ifelse vg&cbyte or vg&fontstyles exch get fontsize exch exec vg&token pop recshow currentpoint Q m recshow } { vg&fbyte 16#F8 and 16#F0 eq { % Superscript and/or subscript. vg&cbyte 16#00 eq { vg&token pop exch vg&token pop 3 -1 roll q raise recshow unraise currentpoint pop Q exch q lower recshow unlower currentpoint pop Q maxval currentpoint exch pop m recshow } if % Strikeout. vg&cbyte 16#01 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll fontsize 3 div add moveto fontsize 3 div add lineto internalstroke Q recshow} if % Underline. vg&cbyte 16#02 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dashed underline. vg&cbyte 16#03 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J [ vg&uthick 5 mul vg&uthick 2 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dotted underline. vg&cbyte 16#04 eq { vg&token pop currentpoint 3 -1 roll recshow q 1 J [ 0 vg&uthick 3 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Thick underline. vg&cbyte 16#05 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Gray thick underline. vg&cbyte 16#06 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w 0.5 setgray currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Overbar. vg&cbyte 16#07 eq { vg&token pop dup stringsize relative 4 1 roll pop pop exch 3 -1 roll recshow q 0 J vg&underline vg&uthick w vg&uoffset neg add dup currentpoint pop exch m l internalstroke Q recshow} if } { vg&fbyte vg&cbyte unicharshow recshow } ifelse } ifelse } if } def % Get the underline position and thickness from the current font. /vg&underline { currentfont dup /FontType get 0 eq {/FDepVector get 0 get} if dup dup /FontInfo known { /FontInfo get dup dup /UnderlinePosition known { /UnderlinePosition get /vg&uoffset exch def } { pop /vg&uoffset 0 def } ifelse dup /UnderlineThickness known { /UnderlineThickness get /vg&uthick exch def } { pop /vg&uthick 0 def } ifelse } { pop /vg&uoffset 0 def /vg&uthick 0 def } ifelse /FontMatrix get currentfont dup /FontType get 0 eq {/FontMatrix get matrix concatmatrix}{pop} ifelse dup 0 vg&uoffset 3 -1 roll transform /vg&uoffset exch def pop 0 vg&uthick 3 -1 roll transform /vg&uthick exch def pop } def % Make a frame with the coordinates on the stack. % frame -- /frame {4 copy m 3 1 roll exch l 4 -2 roll l l h} def % Resets the accumulated bounding box to a degenerate box at the % current point. % -- resetbbox -- /resetbbox { currentpoint 2 copy /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Update the accumulated bounding box. % updatebbox -- /updatebbox { dup bbury gt {/bbury exch def} {pop} ifelse dup bburx gt {/bburx exch def} {pop} ifelse dup bblly lt {/bblly exch def} {pop} ifelse dup bbllx lt {/bbllx exch def} {pop} ifelse } def % Set the bounding box to the values on the stack. % updatebbox -- /restorebbox { /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Push the accumulated bounding box onto the stack. % -- pushbbox /pushbbox {bbllx bblly bburx bbury} def % Make the relative bounding box relative to the currentpoint. % inflate /inflate { 2 {fontsize 0.2 mul add 4 1 roll} repeat 2 {fontsize 0.2 mul sub 4 1 roll} repeat } def % Make the relative bounding box relative to the currentpoint. % relative /relative { currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll } def % Returns the size of a string appropriate for recshow. % stringsize /stringsize { pushbbox /internalshow load /internalstroke load 7 -1 roll q nulldevice 0 0 m nullinternalshow nullinternalstroke resetbbox recshow /internalstroke exch def /internalshow exch def pushbbox 8 -4 roll restorebbox Q } def % Calculate values for string positioning. /calcval {4 copy 3 -1 roll sub /widy exch def sub neg /widx exch def pop pop /dy exch def /dx exch def} def % Utilities to position a string. % First letter (U=upper, C=center, B=baseline, L=lower) % Second letter (L=left, C=center, R=right) /align [ {calcval dx neg widy dy add neg rmoveto} % UL {calcval dx neg widy 2 div dy add neg rmoveto} % CL {calcval dx neg 0 rmoveto} % BL {calcval dx neg dy neg rmoveto} % LL {calcval widx dx add neg widy dy add neg rmoveto} % UR {calcval widx dx add neg widy 2 div dy add neg rmoveto} % CR {calcval widx dx add neg 0 rmoveto} % BR {calcval widx dx add neg dy neg rmoveto} % LR {calcval widx 2 div dx add neg widy dy add neg rmoveto} % UC {calcval widx 2 div dx add neg widy 2 div dy add neg rmoveto} % CC {calcval widx 2 div dx add neg 0 rmoveto} % BC {calcval widx 2 div dx add neg dy neg rmoveto} % LC ] def /vg&str {m q 1 -1 scale dup stringsize 4 copy align 11 -1 roll get exec q inflate relative frame exch exec Q recshow Q} def end /procDict exch def %%EndProlog %%BeginSetup save procDict begin printColorMap begin 595 791 setpagesize 20 20 20 20 setmargins 0 0 setorigin 600 600 setsize fittopage portrait imagescale cliptobounds setbasematrix /Helvetica 10 sf defaultGraphicsState %%EndSetup 0.00000 0.00000 0.00000 RG [ 1.00000 0.00000 0.00000 1.00000 0.00000 0.00000 ] defaultmatrix matrix concatmatrix setmatrix 1.00000 w 2 J 0 j 10.0000 M [ ] 0.00000 d .800000 .800000 .800000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG q 0 0 600 600 rc 1.00000 1.00000 1.00000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG 10.0000 20.0000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000[\000j\000a\000v\000a\000.\000a\000w\000t\000.\000F\000o\000n\000t\000[\000f\000a\000m\000i\000l\000y\000=\000S\000e\000r\000i\000f\000,\000n\000a\000m\000e\000=\000S\000e\000r\000i\000f\000,\000s\000t\000y\000l\000e\000=\000p\000l\000a\000i\000n\000,\000s\000i\000z\000e\000=\0001\0002\000]\000]) show Q 200.000 40.0000 10.0000 40.0000 L 10.0000 40.0000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000T\000h\000i\000s\000 \000f\000o\000n\000t\000 \000i\000s\000 \000a\000 \000s\000t\000a\000n\000d\000a\000r\000d\000 \000f\000o\000n\000t\000:\000 \000S\000e\000r\000i\000f\000.) show Q 10.0000 75.0000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ([java.awt.Font[family=Monotype Corsiva,name=Monotype Corsiva,style=plain,size=12]]) show Q 200.000 95.0000 10.0000 95.0000 L 10.0000 95.0000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont (This font is a special font: Monotype Corsiva.) show Q 10.0000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000?) show Q 10.0000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 25.0000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000?) show Q 25.0000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 40.0000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000?) show Q 40.0000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 55.0000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000?) show Q 55.0000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 70.0000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000?) show Q 70.0000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 85.0000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000?) show Q 85.0000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 100.000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000?) show Q 100.000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 115.000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000?) show Q 115.000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 130.000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000?) show Q 130.000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 145.000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000?) show Q 145.000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 160.000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000?) show Q 160.000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 175.000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000?) show Q 175.000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 190.000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000?) show Q 190.000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 205.000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000?) show Q 205.000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 220.000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000?) show Q 220.000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 235.000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000?) show Q 235.000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 250.000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000?) show Q 250.000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 265.000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000?) show Q 265.000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 280.000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000?) show Q 280.000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 295.000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000?) show Q 295.000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 310.000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000?) show Q 310.000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 325.000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000?) show Q 325.000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 340.000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000?) show Q 340.000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 355.000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000?) show Q 355.000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 370.000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \002\330) show Q 370.000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( Æ) show Q 385.000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \002\307) show Q 385.000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( Ï) show Q 400.000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \002\306) show Q 400.000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( Ã) show Q 415.000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \002\331) show Q 415.000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( Ç) show Q 430.000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \002\272) show Q 430.000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( Í) show Q 445.000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \002\333) show Q 445.000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( Î) show Q 460.000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \002\332) show Q 460.000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( Ê) show Q 475.000 150.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \002\334) show Q 475.000 165.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( Ä) show Q 10.0000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000 ) show Q 10.0000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ) show Q 25.0000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000!) show Q 25.0000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( !) show Q 40.0000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000") show Q 40.0000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ") show Q 55.0000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000#) show Q 55.0000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( #) show Q 70.0000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000$) show Q 70.0000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( $) show Q 85.0000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\045) show Q 85.0000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( \%) show Q 100.000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000&) show Q 100.000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( &) show Q 115.000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000') show Q 115.000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ©) show Q 130.000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\050) show Q 130.000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( \() show Q 145.000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\051) show Q 145.000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( \)) show Q 160.000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000*) show Q 160.000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( *) show Q 175.000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000+) show Q 175.000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( +) show Q 190.000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000,) show Q 190.000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ,) show Q 205.000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000-) show Q 205.000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( -) show Q 220.000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000.) show Q 220.000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( .) show Q 235.000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000/) show Q 235.000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( /) show Q 250.000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \0000) show Q 250.000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( 0) show Q 265.000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \0001) show Q 265.000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( 1) show Q 280.000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \0002) show Q 280.000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( 2) show Q 295.000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \0003) show Q 295.000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( 3) show Q 310.000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \0004) show Q 310.000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( 4) show Q 325.000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \0005) show Q 325.000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( 5) show Q 340.000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \0006) show Q 340.000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( 6) show Q 355.000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \0007) show Q 355.000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( 7) show Q 370.000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \0008) show Q 370.000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( 8) show Q 385.000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \0009) show Q 385.000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( 9) show Q 400.000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000:) show Q 400.000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( :) show Q 415.000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000;) show Q 415.000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ;) show Q 430.000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000<) show Q 430.000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( <) show Q 445.000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000=) show Q 445.000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( =) show Q 460.000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000>) show Q 460.000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( >) show Q 475.000 185.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000?) show Q 475.000 200.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 10.0000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000@) show Q 10.0000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( @) show Q 25.0000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000A) show Q 25.0000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( A) show Q 40.0000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000B) show Q 40.0000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( B) show Q 55.0000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000C) show Q 55.0000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( C) show Q 70.0000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000D) show Q 70.0000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( D) show Q 85.0000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000E) show Q 85.0000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( E) show Q 100.000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000F) show Q 100.000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( F) show Q 115.000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000G) show Q 115.000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( G) show Q 130.000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000H) show Q 130.000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( H) show Q 145.000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000I) show Q 145.000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( I) show Q 160.000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000J) show Q 160.000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( J) show Q 175.000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000K) show Q 175.000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( K) show Q 190.000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000L) show Q 190.000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( L) show Q 205.000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000M) show Q 205.000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( M) show Q 220.000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000N) show Q 220.000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( N) show Q 235.000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000O) show Q 235.000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( O) show Q 250.000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000P) show Q 250.000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( P) show Q 265.000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000Q) show Q 265.000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( Q) show Q 280.000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000R) show Q 280.000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( R) show Q 295.000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000S) show Q 295.000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( S) show Q 310.000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000T) show Q 310.000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( T) show Q 325.000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000U) show Q 325.000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( U) show Q 340.000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000V) show Q 340.000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( V) show Q 355.000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000W) show Q 355.000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( W) show Q 370.000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000X) show Q 370.000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( X) show Q 385.000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000Y) show Q 385.000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( Y) show Q 400.000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000Z) show Q 400.000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( Z) show Q 415.000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000[) show Q 415.000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( [) show Q 430.000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\134) show Q 430.000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( \\) show Q 445.000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000]) show Q 445.000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ]) show Q 460.000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000^) show Q 460.000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ^) show Q 475.000 220.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000_) show Q 475.000 235.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( _) show Q 10.0000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000`) show Q 10.0000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( `) show Q 25.0000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000a) show Q 25.0000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( a) show Q 40.0000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000b) show Q 40.0000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( b) show Q 55.0000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000c) show Q 55.0000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( c) show Q 70.0000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000d) show Q 70.0000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( d) show Q 85.0000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000e) show Q 85.0000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( e) show Q 100.000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000f) show Q 100.000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( f) show Q 115.000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000g) show Q 115.000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( g) show Q 130.000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000h) show Q 130.000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( h) show Q 145.000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000i) show Q 145.000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( i) show Q 160.000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000j) show Q 160.000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( j) show Q 175.000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000k) show Q 175.000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( k) show Q 190.000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000l) show Q 190.000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( l) show Q 205.000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000m) show Q 205.000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( m) show Q 220.000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000n) show Q 220.000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( n) show Q 235.000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000o) show Q 235.000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( o) show Q 250.000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000p) show Q 250.000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( p) show Q 265.000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000q) show Q 265.000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( q) show Q 280.000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000r) show Q 280.000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( r) show Q 295.000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000s) show Q 295.000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( s) show Q 310.000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000t) show Q 310.000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( t) show Q 325.000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000u) show Q 325.000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( u) show Q 340.000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000v) show Q 340.000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( v) show Q 355.000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000w) show Q 355.000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( w) show Q 370.000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000x) show Q 370.000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( x) show Q 385.000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000y) show Q 385.000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( y) show Q 400.000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000z) show Q 400.000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( z) show Q 415.000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000{) show Q 415.000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( {) show Q 430.000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000|) show Q 430.000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( |) show Q 445.000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000}) show Q 445.000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( }) show Q 460.000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000~) show Q 460.000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ~) show Q 475.000 255.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000?) show Q 475.000 270.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 10.0000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \040") show Q 10.0000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ·) show Q 25.0000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \040 ) show Q 25.0000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ²) show Q 40.0000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \040!) show Q 40.0000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ³) show Q 55.0000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \040&) show Q 55.0000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ¼) show Q 70.0000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000-) show Q 70.0000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( -) show Q 85.0000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000-) show Q 85.0000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( -) show Q 100.000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \001\222) show Q 100.000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ¦) show Q 115.000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \040D) show Q 115.000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ¤) show Q 130.000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \0409) show Q 130.000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ¬) show Q 145.000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \040:) show Q 145.000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ­) show Q 160.000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \042\022) show Q 160.000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ) show /Symbol findfont 12.0 scalefont setfont (-) show Q 175.000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \0400) show Q 175.000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ½) show Q 190.000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \040\036) show Q 190.000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ¹) show Q 205.000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \040\034) show Q 205.000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ª) show Q 220.000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \040\035) show Q 220.000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( º) show Q 235.000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000`) show Q 235.000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( `) show Q 250.000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000') show Q 250.000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ©) show Q 265.000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \040\032) show Q 265.000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ¸) show Q 280.000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \041") show Q 280.000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 295.000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \373\001) show Q 295.000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ®) show Q 310.000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \373\002) show Q 310.000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ¯) show Q 325.000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \001A) show Q 325.000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( è) show Q 340.000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \001R) show Q 340.000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ê) show Q 355.000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \001`) show Q 355.000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 370.000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \001x) show Q 370.000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 385.000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \001}) show Q 385.000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 400.000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \0011) show Q 400.000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( õ) show Q 415.000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \001B) show Q 415.000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ø) show Q 430.000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \001S) show Q 430.000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ú) show Q 445.000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \001a) show Q 445.000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 460.000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \001~) show Q 460.000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 475.000 290.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000?) show Q 475.000 305.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 10.0000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \040\254) show Q 10.0000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ) show /Symbol findfont 12.0 scalefont setfont ( ) show Q 25.0000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\241) show Q 25.0000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ¡) show Q 40.0000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\242) show Q 40.0000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ¢) show Q 55.0000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\243) show Q 55.0000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( £) show Q 70.0000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\244) show Q 70.0000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ¨) show Q 85.0000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\245) show Q 85.0000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ¥) show Q 100.000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\246) show Q 100.000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 115.000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\247) show Q 115.000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( §) show Q 130.000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\250) show Q 130.000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( È) show Q 145.000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\251) show Q 145.000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 160.000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\252) show Q 160.000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ã) show Q 175.000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\253) show Q 175.000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( «) show Q 190.000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\254) show Q 190.000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ) show /Symbol findfont 12.0 scalefont setfont (Ø) show Q 205.000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000?) show Q 205.000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 220.000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\256) show Q 220.000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 235.000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\257) show Q 235.000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( Å) show Q 250.000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\260) show Q 250.000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ) show /Symbol findfont 12.0 scalefont setfont (°) show Q 265.000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\261) show Q 265.000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ) show /Symbol findfont 12.0 scalefont setfont (±) show Q 280.000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\262) show Q 280.000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 295.000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\263) show Q 295.000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 310.000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\264) show Q 310.000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( Â) show Q 325.000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \003\274) show Q 325.000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ) show /Symbol findfont 12.0 scalefont setfont (m) show Q 340.000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\266) show Q 340.000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ¶) show Q 355.000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\267) show Q 355.000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ´) show Q 370.000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\270) show Q 370.000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( Ë) show Q 385.000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\271) show Q 385.000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 400.000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\272) show Q 400.000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ë) show Q 415.000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\273) show Q 415.000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ») show Q 430.000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\274) show Q 430.000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 445.000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\275) show Q 445.000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 460.000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\276) show Q 460.000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 475.000 325.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\277) show Q 475.000 340.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ¿) show Q 10.0000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\300) show Q 10.0000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 25.0000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\301) show Q 25.0000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 40.0000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\302) show Q 40.0000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 55.0000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\303) show Q 55.0000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 70.0000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\304) show Q 70.0000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 85.0000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\305) show Q 85.0000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 100.000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\306) show Q 100.000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( á) show Q 115.000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\307) show Q 115.000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 130.000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\310) show Q 130.000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 145.000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\311) show Q 145.000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 160.000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\312) show Q 160.000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 175.000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\313) show Q 175.000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 190.000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\314) show Q 190.000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 205.000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\315) show Q 205.000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 220.000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\316) show Q 220.000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 235.000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\317) show Q 235.000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 250.000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\320) show Q 250.000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 265.000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\321) show Q 265.000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 280.000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\323) show Q 280.000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 295.000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\322) show Q 295.000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 310.000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\324) show Q 310.000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 325.000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\325) show Q 325.000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 340.000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\326) show Q 340.000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 355.000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\327) show Q 355.000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ) show /Symbol findfont 12.0 scalefont setfont (´) show Q 370.000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\330) show Q 370.000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( é) show Q 385.000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\331) show Q 385.000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 400.000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\332) show Q 400.000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 415.000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\333) show Q 415.000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 430.000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\334) show Q 430.000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 445.000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\335) show Q 445.000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 460.000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\336) show Q 460.000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 475.000 360.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\337) show Q 475.000 375.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( û) show Q 10.0000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\340) show Q 10.0000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 25.0000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\341) show Q 25.0000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 40.0000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\342) show Q 40.0000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 55.0000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\343) show Q 55.0000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 70.0000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\344) show Q 70.0000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 85.0000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\345) show Q 85.0000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 100.000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\346) show Q 100.000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ñ) show Q 115.000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\347) show Q 115.000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 130.000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\350) show Q 130.000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 145.000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\351) show Q 145.000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 160.000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\352) show Q 160.000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 175.000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\353) show Q 175.000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 190.000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\354) show Q 190.000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 205.000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\355) show Q 205.000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 220.000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\356) show Q 220.000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 235.000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\357) show Q 235.000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 250.000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\360) show Q 250.000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 265.000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\361) show Q 265.000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 280.000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\362) show Q 280.000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 295.000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\363) show Q 295.000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 310.000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\364) show Q 310.000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 325.000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\365) show Q 325.000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 340.000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\366) show Q 340.000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 355.000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\367) show Q 355.000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ) show /Symbol findfont 12.0 scalefont setfont (¸) show Q 370.000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\370) show Q 370.000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ù) show Q 385.000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\371) show Q 385.000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 400.000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\372) show Q 400.000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 415.000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\373) show Q 415.000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 430.000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\374) show Q 430.000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 445.000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\375) show Q 445.000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 460.000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\376) show Q 460.000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 475.000 395.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000 \000\377) show Q 475.000 410.000 moveto q 1 -1 scale /MonotypeCorsiva findfont 12.0 scalefont setfont ( ?) show Q 20.0000 485.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000S\000y\000m\000b\000o\000l\000 \000F\000o\000n\000t\000:) show Q 200.000 485.000 moveto q 1 -1 scale /Symbol findfont 12.0 scalefont setfont (ABC abc 123 .,!) show Q 20.0000 505.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000D\000i\000n\000g\000b\000a\000t\000s\000:) show Q 200.000 505.000 moveto q 1 -1 scale /ZapfDingbats findfont 12.0 scalefont setfont (ABC abc 123 .,!) show Q 20.0000 525.000 moveto q 1 -1 scale /Serif findfont 12.0 scalefont setfont (\000U\000n\000i\000c\000o\000d\000e\000 \000c\000h\000a\000r\000s\000 \000\050\000g\000r\000e\000e\000k\000,\000 \000d\000i\000n\000g\000b\000a\000t\000s\000\051\000:\000 \003\261\000 \003\262\000 \003\263\000 \046:\000 \046e\000 \047\051\000 \047\014\000 \000i\000n\000 \000S\000e\000r\000i\000f) show Q 20.0000 545.000 moveto q 1 -1 scale /SansSerif findfont 12.0 scalefont setfont (\000U\000n\000i\000c\000o\000d\000e\000 \000c\000h\000a\000r\000s\000 \000\050\000g\000r\000e\000e\000k\000,\000 \000d\000i\000n\000g\000b\000a\000t\000s\000\051\000:\000 \003\261\000 \003\262\000 \003\263\000 \046:\000 \046e\000 \047\051\000 \047\014\000 \000i\000n\000 \000S\000a\000n\000s\000S\000e\000r\000i\000f) show Q 20.0000 565.000 moveto q 1 -1 scale /Dialog findfont 12.0 scalefont setfont (\000U\000n\000i\000c\000o\000d\000e\000 \000c\000h\000a\000r\000s\000 \000\050\000g\000r\000e\000e\000k\000,\000 \000d\000i\000n\000g\000b\000a\000t\000s\000\051\000:\000 \003\261\000 \003\262\000 \003\263\000 \046:\000 \046e\000 \047\051\000 \047\014\000 \000i\000n\000 \000D\000i\000a\000l\000o\000g) show Q 20.0000 585.000 moveto q 1 -1 scale /Monospaced findfont 12.0 scalefont setfont (\000U\000n\000i\000c\000o\000d\000e\000 \000c\000h\000a\000r\000s\000 \000\050\000g\000r\000e\000e\000k\000,\000 \000d\000i\000n\000g\000b\000a\000t\000s\000\051\000:\000 \003\261\000 \003\262\000 \003\263\000 \046:\000 \046e\000 \047\051\000 \047\014\000 \000i\000n\000 \000M\000o\000n\000o\000s\000p\000a\000c\000e\000d) show Q Q end end restore showpage %%Trailer %%EOF src/test/resources/ps/TestResolution.ps0000644000175000017500000012433710344614150017657 0ustar user01user01%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 20 118 575 673 %%Creator: FreeHEP Graphics2D Driver %%Producer: org.freehep.graphicsio.ps.PSGraphics2D %%For: %%Title: %%LanguageLevel: 3 %%EndComments %%BeginProlog 100 dict dup begin % % File: org/freehep/graphicsio.ps/PSProlog.txt % Author: Charles Loomis % % Redefinitions which save some space in the output file. These are also % the same as the PDF operators. /q {gsave} def /Q {grestore} def /n {newpath} def /m {moveto} def /l {lineto} def /c {curveto} def /h {closepath} def /re {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath} def /f {fill} def /f* {eofill} def /F {gsave vg&FC fill grestore} def /F* {gsave vg&FC eofill grestore} def /s {closepath stroke} def /S {stroke} def /b {closepath gsave vg&FC fill grestore gsave stroke grestore newpath} def /B {gsave vg&FC fill grestore gsave stroke grestore newpath} def /b* {closepath gsave vg&FC eofill grestore gsave stroke grestore newpath} def /B* {gsave vg&FC eofill grestore gsave stroke grestore newpath} def /g {1 array astore /vg&fcolor exch def} def /G {setgray} def /k {4 array astore /vg&fcolor exch def} def /K {setcmykcolor} def /rg {3 array astore /vg&fcolor exch def} def /RG {setrgbcolor} def % Initialize the fill color. 0 0 0 rg /vg&FC {mark vg&fcolor aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /vg&DFC {/vg&fcolor exch def} def /vg&C {mark exch aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /w {setlinewidth} def /j {setlinejoin} def /J {setlinecap} def /M {setmiterlimit} def /d {setdash} def /i {setflat} def /W {clip} def /W* {eoclip} def % Setup the default graphics state. % (black; 1 pt. linewidth; miter join; butt-ends; solid) /defaultGraphicsState {0 g 1 w 0 j 0 J [] 0 d} def % Emulation of the rectangle operators for PostScript implementations % which do not implement all Level 2 features. This is an INCOMPLETE % emulation; only the "x y width height rect..." form is emulated. /*rf {gsave newpath re fill grestore} def /*rs {gsave newpath re stroke grestore} def /*rc {newpath re clip} def /rf /rectfill where {pop /rectfill}{/*rf} ifelse load def /rs /rectstroke where {pop /rectstroke}{/*rs} ifelse load def /rc /rectclip where {pop /rectclip}{/*rc} ifelse load def % Emulation of the selectfont operator. This includes a 20% increase in % the fontsize which is necessary to get sizes similar to the Java fonts. /*sf {exch findfont exch dup type /arraytype eq {makefont}{scalefont} ifelse setfont} bind def /sf /selectfont where {pop {1.2 mul selectfont}}{{1.2 mul *sf}} ifelse def % Special version of stroke which allows the dash pattern to continue % across path segments. (This may be needed for PostScript although % modern printers seem to do this correctly.) /vg&stroke { currentdash pop length 0 eq {stroke} { currentdash /vg&doffset exch def pop flattenpath {m vg&resetdash} {2 copy currentpoint 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt 3 1 roll l currentdash 3 -1 roll add setdash} {} {h vg&resetdash} pathforall stroke vg&resetdash } ifelse } def /vg&resetdash {currentdash pop vg&doffset setdash} def % Initialize variables for safety. /delta 0 def /xv 0 def /yv 0 def /width 0 def /height 0 def % Initialize to portrait INTERNATIONAL (Letter-height, A4-width) page. /pw 595 def /ph 791 def /po true def /ftp false def % Initialize margins to 20 points. /ml 20 def /mr 20 def /mt 20 def /mb 20 def % Temporary matrices. /smatrix 0 def /nmatrix 0 def % set page size (usage: setpagesize) /setpagesize {/ph exch def /pw exch def} def % set page orientation (usage: portrait or landscape) /portrait {/po true def} def /landscape {/po false def} def % force natural size for image (usage: naturalsize) /naturalsize {/ftp false def} def % resize image to fill page (usage: fittopage) /fittopage {/ftp true def} def % set margins of the page (usage: setmargins) /setmargins {/mr exch def /mt exch def /mb exch def /ml exch def} def % set the graphic's size (usage: setsize) /setsize {/gh exch def /gw exch def} def % set the graphic's origin (usage: setorigin) /setorigin {/gy exch def /gx exch def} def % calculate image center /imagecenter {pw ml sub mr sub 2 div ml add ph mt sub mb sub 2 div mb add} def % calculate the necessary scaling /imagescale {po {gw}{gh} ifelse pw ml sub mr sub div po {gh}{gw} ifelse ph mt sub mb sub div 2 copy lt {exch} if pop ftp not {1 2 copy lt {exch} if pop} if 1 exch div /sfactor exch def /gw gw sfactor mul def /gh gh sfactor mul def} def % calculate image origin /imageorigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div po {add}{sub} ifelse} def % calculate the clipping origin /cliporigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub floor ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div sub floor} def % Set the clipping region to the bounding box. /cliptobounds {cliporigin po {gw}{gh} ifelse 1 add po {gh}{gw} ifelse 1 add rc} def % set the base transformation matrix (usage: setbasematrix) /setbasematrix {imageorigin translate po {0}{90} ifelse rotate sfactor sfactor neg scale /defaultmatrix matrix currentmatrix def} def % The lower-right bias in drawing 1 pt. wide lines. /bias {q 0.5 0.5 translate} def /unbias {Q} def % Draw a line. (x0 y0 x1 y1 line) /L {bias n m l S unbias} def % Polyline primitive. /polyline {n m 1 exch 1 exch {pop currentfile token pop currentfile token pop l} for } def % Draw a polyline (n x0 y0 OPL x1 y1 x2 y2 ... ... xn yn) /OPL {bias polyline S unbias} def % Draw a closed polyline (n x0 y0 CPL x1 y1 x2 y2 ... ... xn yn) /CPL {bias polyline s unbias} def % Draw a filled polyline (n x0 y0 FPL x1 y1 x2 y2 ... ... xn yn) /FPL {polyline h f*} def % Draw an oval. (x y w h OVL) /OVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width currentlinewidth sub 2 div height currentlinewidth sub 2 div neg scale n 0 0 1 5 -2 roll arc smatrix setmatrix S} def % Draw a filled oval. (x y w h FOVL) /FOVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width 2 div height 2 div neg scale n 0 0 m 0 0 1 5 -2 roll arc h smatrix setmatrix f} def % Draw a rounded rectangle. (x y w h arcwidth archeight RREC) /RREC {matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix s} def % Draw a filled rounded rectangle. (x y w h arcwidth archeight FRREC) /FRREC{matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix h f} def % Draw a string. (string x y STR) /STR {q m 1 -1 scale recshow Q} def % Define basic plot symbols. /xys {/siz exch def /yv exch def /xv exch def} def /hline {xys n xv siz 2. div sub yv m siz 0 rlineto S} def /vline {xys n xv yv siz 2. div sub m 0 siz rlineto S} def /plus {xys n xv yv siz 2. div sub m 0 siz rlineto xv siz 2. div sub yv m siz 0 rlineto S} def /dot {n 2. div 0 360 arc s} def /fdot {n 2. div 0 360 arc h f} def /box {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rs} def /fbox {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rf} def /tridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto s} def /ftridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto h f} def % Symbols defined in terms of the others. /star {3 copy cross plus} def /cross {xys q xv yv translate 45 rotate 0 0 siz plus Q} def /diamond {xys q xv yv translate 45 rotate 0 0 siz box Q} def /fdiamond {xys q xv yv translate 45 rotate 0 0 siz fbox Q} def /triup {xys q xv yv translate 180 rotate 0 0 siz tridn Q} def /ftriup {xys q xv yv translate 180 rotate 0 0 siz ftridn Q} def % Define the composite fonts used to print Unicode strings. % Undefine particular values in an encoding array. /vg&undef { {exch dup 3 -1 roll /.notdef put} forall } def /vg&redef { {3 -1 roll dup 4 2 roll put} forall } def % usage: key encoding basefontname vg&newbasefont font /vg&newbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def currentdict end definefont } def % usage: key encoding basefontname vg&newskewedbasefont font /vg&newskewedbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def exch FontMatrix exch matrix concatmatrix /FontMatrix exch def currentdict end definefont } def % usage: basekey suffix vg&nconcat name /vg&nconcat { 2 {dup length string cvs exch} repeat dup length 3 -1 roll dup length 3 -1 roll add string dup 0 4 -1 roll dup length 5 1 roll putinterval dup 4 -2 roll exch putinterval cvn } def %usage: fontname vg&skewmatrix matrix /vg&skewmatrix { findfont dup /FontInfo known { /FontInfo get dup /ItalicAngle known { [ 1 0 4 -1 roll /ItalicAngle get neg dup sin exch cos div 1 0 0 ] } {pop matrix} ifelse } {pop matrix} ifelse } def % usage: newfontname basefontname vg&newcompositefont -- /vg&newcompositefont { /vg&fstyle exch def /vg&bfont exch def /vg&fname exch def << /FontStyleBits vg&fstyle /FontType 0 /FontMatrix matrix /FontName vg&fname /FMapType 2 /Encoding [ 0 1 255 {pop 6} for ] dup 16#00 0 put % Latin dup 16#03 1 put % Greek dup 16#20 2 put % Punctuation dup 16#21 3 put % Arrows dup 16#22 4 put % MathOps dup 16#27 5 put % Dingbats /FDepVector [ vg&bfont /-UC-Latin vg&nconcat UCLatinEncoding vg&bfont vg&newbasefont vg&bfont vg&skewmatrix vg&bfont /-UC-Greek vg&nconcat UCGreekEncoding /Symbol vg&newskewedbasefont vg&bfont /-UC-Punctuation vg&nconcat UCPunctuationEncoding vg&bfont vg&newbasefont /Arrows-UC findfont /MathOps-UC findfont /Dingbats-UC findfont /Undefined-UC findfont ] >> vg&fname exch definefont pop } def % Null encoding vector (all elements set to .notdef) /NullEncoding [ 256 {/.notdef} repeat ] def % Unicode Latin encoding (unicode codes \u0000-\u00ff) /UCLatinEncoding ISOLatin1Encoding dup length array copy dup 16#60 /grave put [ 16#90 16#91 16#92 16#93 16#94 16#95 16#96 16#97 16#98 16#9a 16#9b 16#9d 16#9e 16#9f ] vg&undef def % Unicode Greek encoding (unicode codes \u0370-\u03ff) /UCGreekEncoding NullEncoding dup length array copy << 16#91 /Alpha 16#92 /Beta 16#93 /Gamma 16#94 /Delta 16#95 /Epsilon 16#96 /Zeta 16#97 /Eta 16#98 /Theta 16#99 /Iota 16#9a /Kappa 16#9b /Lambda 16#9c /Mu 16#9d /Nu 16#9e /Xi 16#9f /Omicron 16#a0 /Pi 16#a1 /Rho 16#a3 /Sigma 16#a4 /Tau 16#a5 /Upsilon 16#a6 /Phi 16#a7 /Chi 16#a8 /Psi 16#a9 /Omega 16#b1 /alpha 16#b2 /beta 16#b3 /gamma 16#b4 /delta 16#b5 /epsilon 16#b6 /zeta 16#b7 /eta 16#b8 /theta 16#b9 /iota 16#ba /kappa 16#bb /lambda 16#bc /mu 16#bd /nu 16#be /xi 16#bf /omicron 16#c0 /pi 16#c1 /rho 16#c2 /sigma1 16#c3 /sigma 16#c4 /tau 16#c5 /upsilon 16#c6 /phi1 16#c7 /chi 16#c8 /psi 16#c9 /omega 16#7e /semicolon 16#87 /dotmath 16#d1 /theta1 16#d2 /Upsilon1 16#d5 /phi 16#d6 /omega1 >> vg&redef def % Unicode punctuation encoding (unicode codes \u2000-\u206f) /UCPunctuationEncoding NullEncoding dup length array copy << 16#10 /hyphen 16#11 /hyphen 16#12 /endash 16#13 /emdash 16#18 /quoteleft 16#19 /quoteright 16#1a /quotesinglbase 16#1b /quotesingle 16#1c /quotedblleft 16#1d /quotedblright 16#1e /quotedblbase 16#1f /quotedbl 16#20 /dagger 16#21 /daggerdbl 16#22 /bullet 16#24 /period 16#26 /ellipsis 16#27 /periodcentered 16#30 /perthousand 16#44 /fraction 16#70 /zerosuperior 16#74 /foursuperior 16#75 /fivesuperior 16#76 /sixsuperior 16#77 /sevensuperior 16#78 /eightsuperior 16#79 /ninesuperior 16#7b /hyphensuperior 16#7d /parenleftsuperior 16#7e /parenrightsuperior 16#80 /zeroinferior 16#84 /fourinferior 16#85 /fiveinferior 16#81 /oneinferior 16#82 /twoinferior 16#83 /threeinferior 16#86 /sixinferior 16#87 /seveninferior 16#88 /eightinferior 16#89 /nineinferior 16#8b /hypheninferior 16#8d /parenleftinferior 16#8e /parenrightinferior >> vg&redef def % Unicode mathematical operators encoding (unicode codes \u2200-\u22ff) /UCMathOpsEncoding NullEncoding dup length array copy << 16#00 /universal 16#02 /partialdiff 16#03 /existential 16#05 /emptyset 16#06 /Delta 16#07 /gradient 16#08 /element 16#09 /notelement 16#0b /suchthat 16#0f /product 16#11 /summation 16#12 /minus 16#15 /fraction 16#17 /asteriskmath 16#19 /bullet 16#1a /radical 16#1d /proportional 16#1e /infinity 16#20 /angle 16#23 /bar 16#27 /logicaland 16#28 /logicalor 16#29 /intersection 16#2a /union 16#2b /integral 16#34 /therefore 16#36 /colon 16#3c /similar 16#45 /congruent 16#48 /approxequal 16#60 /notequal 16#61 /equivalence 16#64 /lessequal 16#65 /greaterequal 16#82 /propersubset 16#83 /propersuperset 16#86 /reflexsubset 16#87 /reflexsuperset 16#95 /circleplus 16#97 /circlemultiply 16#a5 /perpendicular 16#03 /existential 16#c0 /logicaland 16#c1 /logicalor 16#c2 /intersection 16#c3 /union 16#c4 /diamond 16#c5 /dotmath >> vg&redef def % Unicode arrows encoding (unicode codes \u2190-\u21ff) % Also includes those "Letterlike" unicode characters % which are available in the symbol font. (unicode codes \u2100-\u214f) /UCArrowsEncoding NullEncoding dup length array copy << 16#11 /Ifraktur 16#1c /Rfraktur 16#22 /trademarkserif 16#35 /aleph 16#90 /arrowleft 16#91 /arrowup 16#92 /arrowright 16#93 /arrowdown 16#94 /arrowboth 16#d0 /arrowdblleft 16#d1 /arrowdblup 16#d2 /arrowdblright 16#d3 /arrowdbldown 16#d4 /arrowdblboth >> vg&redef def /ZapfDingbats findfont /Encoding get dup length array copy /UCDingbatsEncoding exch def 16#20 1 16#7f { dup 16#20 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for 16#a0 1 16#ff { dup 16#40 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for UCDingbatsEncoding [ 16#c0 1 16#ff {} for ] vg&undef [ 16#00 16#05 16#0a 16#0b 16#28 16#4c 16#4e 16#53 16#54 16#55 16#57 16#5f 16#60 16#68 16#69 16#6a 16#6b 16#6c 16#6d 16#6e 16#6f 16#70 16#71 16#72 16#73 16#74 16#75 16#95 16#96 16#97 16#b0 16#bf ] vg&undef pop % Define the base fonts which don't change. /Undefined-UC NullEncoding /Helvetica vg&newbasefont pop /MathOps-UC UCMathOpsEncoding /Symbol vg&newbasefont pop /Arrows-UC UCArrowsEncoding /Symbol vg&newbasefont pop /Dingbats-UC UCDingbatsEncoding /ZapfDingbats vg&newbasefont pop % Make the SansSerif composite fonts. /SansSerif /Helvetica 16#00 vg&newcompositefont /SansSerif-Bold /Helvetica-Bold 16#01 vg&newcompositefont /SansSerif-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /SansSerif-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Serif composite fonts. /Serif /Times-Roman 16#00 vg&newcompositefont /Serif-Bold /Times-Bold 16#01 vg&newcompositefont /Serif-Italic /Times-Italic 16#02 vg&newcompositefont /Serif-BoldItalic /Times-BoldItalic 16#03 vg&newcompositefont % Make the Monospaced composite fonts. /Monospaced /Courier 16#00 vg&newcompositefont /Monospaced-Bold /Courier-Bold 16#01 vg&newcompositefont /Monospaced-Italic /Courier-Oblique 16#02 vg&newcompositefont /Monospaced-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont % Make the Dialog composite fonts. /Dialog /Helvetica 16#00 vg&newcompositefont /Dialog-Bold /Helvetica-Bold 16#01 vg&newcompositefont /Dialog-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /Dialog-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the DialogInput composite fonts. /DialogInput /Helvetica 16#00 vg&newcompositefont /DialogInput-Bold /Helvetica-Bold 16#01 vg&newcompositefont /DialogInput-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /DialogInput-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Typewriter composite fonts (JDK 1.1 only). /Typewriter /Courier 16#00 vg&newcompositefont /Typewriter-Bold /Courier-Bold 16#01 vg&newcompositefont /Typewriter-Italic /Courier-Oblique 16#02 vg&newcompositefont /Typewriter-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont /cfontH { dup /fontsize exch def /SansSerif exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHB { dup /fontsize exch def /SansSerif-Bold exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHI { dup /fontsize exch def /SansSerif-Italic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHBI { dup /fontsize exch def /SansSerif-BoldItalic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontT { dup /fontsize exch def /Serif exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTB { dup /fontsize exch def /Serif-Bold exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTI { dup /fontsize exch def /Serif-Italic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTBI { dup /fontsize exch def /Serif-BoldItalic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontC { dup /fontsize exch def /Typewriter exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCB { dup /fontsize exch def /Typewriter-Bold exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCI { dup /fontsize exch def /Typewriter-Italic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCBI { dup /fontsize exch def /Typewriter-BoldItalic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def % Darken or lighten the current color. /darken {0.7 exch exp 3 copy q 4 -1 roll vg&C currentrgbcolor 3 {4 -2 roll mul} repeat 3 array astore Q} def /displayColorMap << /Cr [1.00 0.00 0.00] /Cg [0.00 1.00 0.00] /Cb [0.00 0.00 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.00 0.00] /CGg [0.00 1.00 0.00] /CGb [0.00 0.00 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.00 0.00] /CIg [0.00 1.00 0.00] /CIb [0.00 0.00 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /printColorMap << /Cr [1.00 0.33 0.33] /Cg [0.33 1.00 0.33] /Cb [0.33 0.33 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.33 0.33] /CGg [0.33 1.00 0.33] /CGb [0.33 0.33 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.33 0.33] /CIg [0.33 1.00 0.33] /CIb [0.33 0.33 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /grayColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [0.75] /CGg [1 ] /CGb [0.50] /CGc [0.75] /CGm [0.50] /CGy [1 ] /CGo [0.75] /CGp [1 ] /CGw [0 ] /CGgrl [0.25] /CGgr [0.50] /CGgrd [0.75] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def /bwColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [1 ] /CGg [1 ] /CGb [1 ] /CGc [1 ] /CGm [1 ] /CGy [1 ] /CGo [1 ] /CGp [1 ] /CGw [0 ] /CGgrl [1 ] /CGgr [1 ] /CGgrd [1 ] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def % % The following routines handle the alignment of and printing of % tagged strings. % % Predefine the bounding box values. /bbllx 0 def /bblly 0 def /bburx 0 def /bbury 0 def % This routine pops the first unicode character off of a string and returns % the remainder of the string, the character code of first character, % and a "true" if the string was non-zero length. % popfirst % popfirst /popfirst { dup length 1 gt {dup 0 get /vg&fbyte exch def dup 1 get /vg&cbyte exch def dup length 2 sub 2 exch getinterval true} {pop false} ifelse } def % This routine shows a single unicode character given the font and % character codes. % unicharshow -- /unicharshow { 2 string dup 0 5 -1 roll put dup 1 4 -1 roll put internalshow } def % This is an internal routine to alternate between determining the % bounding box for stringsize and showing the string for recshow. % internalshow -- /internalshow {show} def % This is an internal routine to alternate between determining the % bounding box for stringsize and stroking various ornaments. % internalstroke -- /internalstroke {S} def % Sets up internalshow to use the null device to determine string size. % -- nullinternalshow -- /nullinternalshow {/internalshow {false charpath flattenpath pathbbox updatebbox} def} def % Sets up internalstroke to use the null device to determine string size. % -- nullinternalstroke -- /nullinternalstroke { /internalstroke {flattenpath pathbbox updatebbox} def} def % This routine tests to see if the character code matches the first % character of a string. % testchar /testchar {exch dup 3 -1 roll 0 get eq} def % Raise the text baseline for superscripts. % -- raise -- /raise { 0 fontsize 2 div rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-raise the text baseline for superscripts. % -- unraise -- /unraise { /fontsize fontsize 1.5 mul def 0 fontsize 2 div neg rmoveto } def % Lower the text baseline for subscripts. % -- lower -- /lower { 0 fontsize 3 div neg rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-lower the text baseline for subscripts. % -- unlower -- /unlower { /fontsize fontsize 1.5 mul def 0 fontsize 3 div rmoveto } def % Compare the top two elements on the stack and leave only the % larger one. /maxval {2 copy gt {pop} {exch pop} ifelse} def % Tokenize a string. Do not use the usual PostScript token because % parentheses will not be interpreted correctly because of rescanning % of the string. /vg&token {/vg&string exch def /vg&index -1 def /vg&level 0 def 0 2 vg&string length 2 sub { dup dup 1 add exch vg&string exch get 8 bitshift vg&string 3 -1 roll get or dup 16#f0fe eq {pop 1}{16#f0ff eq {-1}{0} ifelse} ifelse /vg&level exch vg&level add def vg&level 0 eq {/vg&index exch def exit} if pop } for vg&index 0 ge { vg&string vg&index 2 add dup vg&string length exch sub getinterval vg&index 2 gt {vg&string 2 vg&index 2 sub getinterval}{()} ifelse true} {false} ifelse } bind def % Recursively show an unicode string. % recshow -- /recshow { popfirst { % Test to see if this is a string attribute. vg&fbyte 16#f0 and 16#e0 eq { q % Font style. currentfont dup /FontStyleBits known {/FontStyleBits get}{pop 0} ifelse vg&cbyte or vg&fontstyles exch get fontsize exch exec vg&token pop recshow currentpoint Q m recshow } { vg&fbyte 16#F8 and 16#F0 eq { % Superscript and/or subscript. vg&cbyte 16#00 eq { vg&token pop exch vg&token pop 3 -1 roll q raise recshow unraise currentpoint pop Q exch q lower recshow unlower currentpoint pop Q maxval currentpoint exch pop m recshow } if % Strikeout. vg&cbyte 16#01 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll fontsize 3 div add moveto fontsize 3 div add lineto internalstroke Q recshow} if % Underline. vg&cbyte 16#02 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dashed underline. vg&cbyte 16#03 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J [ vg&uthick 5 mul vg&uthick 2 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dotted underline. vg&cbyte 16#04 eq { vg&token pop currentpoint 3 -1 roll recshow q 1 J [ 0 vg&uthick 3 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Thick underline. vg&cbyte 16#05 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Gray thick underline. vg&cbyte 16#06 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w 0.5 setgray currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Overbar. vg&cbyte 16#07 eq { vg&token pop dup stringsize relative 4 1 roll pop pop exch 3 -1 roll recshow q 0 J vg&underline vg&uthick w vg&uoffset neg add dup currentpoint pop exch m l internalstroke Q recshow} if } { vg&fbyte vg&cbyte unicharshow recshow } ifelse } ifelse } if } def % Get the underline position and thickness from the current font. /vg&underline { currentfont dup /FontType get 0 eq {/FDepVector get 0 get} if dup dup /FontInfo known { /FontInfo get dup dup /UnderlinePosition known { /UnderlinePosition get /vg&uoffset exch def } { pop /vg&uoffset 0 def } ifelse dup /UnderlineThickness known { /UnderlineThickness get /vg&uthick exch def } { pop /vg&uthick 0 def } ifelse } { pop /vg&uoffset 0 def /vg&uthick 0 def } ifelse /FontMatrix get currentfont dup /FontType get 0 eq {/FontMatrix get matrix concatmatrix}{pop} ifelse dup 0 vg&uoffset 3 -1 roll transform /vg&uoffset exch def pop 0 vg&uthick 3 -1 roll transform /vg&uthick exch def pop } def % Make a frame with the coordinates on the stack. % frame -- /frame {4 copy m 3 1 roll exch l 4 -2 roll l l h} def % Resets the accumulated bounding box to a degenerate box at the % current point. % -- resetbbox -- /resetbbox { currentpoint 2 copy /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Update the accumulated bounding box. % updatebbox -- /updatebbox { dup bbury gt {/bbury exch def} {pop} ifelse dup bburx gt {/bburx exch def} {pop} ifelse dup bblly lt {/bblly exch def} {pop} ifelse dup bbllx lt {/bbllx exch def} {pop} ifelse } def % Set the bounding box to the values on the stack. % updatebbox -- /restorebbox { /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Push the accumulated bounding box onto the stack. % -- pushbbox /pushbbox {bbllx bblly bburx bbury} def % Make the relative bounding box relative to the currentpoint. % inflate /inflate { 2 {fontsize 0.2 mul add 4 1 roll} repeat 2 {fontsize 0.2 mul sub 4 1 roll} repeat } def % Make the relative bounding box relative to the currentpoint. % relative /relative { currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll } def % Returns the size of a string appropriate for recshow. % stringsize /stringsize { pushbbox /internalshow load /internalstroke load 7 -1 roll q nulldevice 0 0 m nullinternalshow nullinternalstroke resetbbox recshow /internalstroke exch def /internalshow exch def pushbbox 8 -4 roll restorebbox Q } def % Calculate values for string positioning. /calcval {4 copy 3 -1 roll sub /widy exch def sub neg /widx exch def pop pop /dy exch def /dx exch def} def % Utilities to position a string. % First letter (U=upper, C=center, B=baseline, L=lower) % Second letter (L=left, C=center, R=right) /align [ {calcval dx neg widy dy add neg rmoveto} % UL {calcval dx neg widy 2 div dy add neg rmoveto} % CL {calcval dx neg 0 rmoveto} % BL {calcval dx neg dy neg rmoveto} % LL {calcval widx dx add neg widy dy add neg rmoveto} % UR {calcval widx dx add neg widy 2 div dy add neg rmoveto} % CR {calcval widx dx add neg 0 rmoveto} % BR {calcval widx dx add neg dy neg rmoveto} % LR {calcval widx 2 div dx add neg widy dy add neg rmoveto} % UC {calcval widx 2 div dx add neg widy 2 div dy add neg rmoveto} % CC {calcval widx 2 div dx add neg 0 rmoveto} % BC {calcval widx 2 div dx add neg dy neg rmoveto} % LC ] def /vg&str {m q 1 -1 scale dup stringsize 4 copy align 11 -1 roll get exec q inflate relative frame exch exec Q recshow Q} def end /procDict exch def %%EndProlog %%BeginSetup save procDict begin printColorMap begin 595 791 setpagesize 20 20 20 20 setmargins 0 0 setorigin 600 600 setsize fittopage portrait imagescale cliptobounds setbasematrix /Helvetica 10 sf defaultGraphicsState %%EndSetup 0.00000 0.00000 0.00000 RG [ 1.00000 0.00000 0.00000 1.00000 0.00000 0.00000 ] defaultmatrix matrix concatmatrix setmatrix 1.00000 w 2 J 0 j 10.0000 M [ ] 0.00000 d .800000 .800000 .800000 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG q 0 0 600 600 rc 1.00000 1.00000 1.00000 RG 0.00000 0.00000 600.000 600.000 rf q 0.00000 0.00000 translate 100.000 60.0000 translate 30.0000 30.0000 scale 10000000 10000000 scale 5.00000E-8 w 1 J 1 j 0.00000 0.00000 0.00000 RG newpath 1.00000E-7 0.00000 m 1.00000E-7 5.52285E-8 5.52285E-8 1.00000E-7 0.00000 1.00000E-7 c -5.52285E-8 1.00000E-7 -1.00000E-7 5.52285E-8 -1.00000E-7 0.00000 c -1.00000E-7 -5.52285E-8 -5.52285E-8 -1.00000E-7 0.00000 -1.00000E-7 c 5.52285E-8 -1.00000E-7 1.00000E-7 -5.52285E-8 1.00000E-7 0.00000 c h S Q q 0.00000 120.000 translate 100.000 60.0000 translate 30.0000 30.0000 scale 1000000 1000000 scale 5.00000E-7 w 1 J 1 j 0.00000 0.00000 0.00000 RG newpath 1.00000E-6 0.00000 m 1.00000E-6 5.52285E-7 5.52285E-7 1.00000E-6 0.00000 1.00000E-6 c -5.52285E-7 1.00000E-6 -1.00000E-6 5.52285E-7 -1.00000E-6 0.00000 c -1.00000E-6 -5.52285E-7 -5.52285E-7 -1.00000E-6 0.00000 -1.00000E-6 c 5.52285E-7 -1.00000E-6 1.00000E-6 -5.52285E-7 1.00000E-6 0.00000 c h S Q q 0.00000 240.000 translate 100.000 60.0000 translate 30.0000 30.0000 scale 100000 100000 scale 5.00000E-6 w 1 J 1 j 0.00000 0.00000 0.00000 RG newpath 1.00000E-5 0.00000 m 1.00000E-5 5.52285E-6 5.52285E-6 1.00000E-5 0.00000 1.00000E-5 c -5.52285E-6 1.00000E-5 -1.00000E-5 5.52285E-6 -1.00000E-5 0.00000 c -1.00000E-5 -5.52285E-6 -5.52285E-6 -1.00000E-5 0.00000 -1.00000E-5 c 5.52285E-6 -1.00000E-5 1.00000E-5 -5.52285E-6 1.00000E-5 0.00000 c h S Q q 0.00000 360.000 translate 100.000 60.0000 translate 30.0000 30.0000 scale 10000.0 10000.0 scale 5.00000E-5 w 1 J 1 j 0.00000 0.00000 0.00000 RG newpath 1.00000E-4 0.00000 m 1.00000E-4 5.52285E-5 5.52285E-5 1.00000E-4 0.00000 1.00000E-4 c -5.52285E-5 1.00000E-4 -1.00000E-4 5.52285E-5 -1.00000E-4 0.00000 c -1.00000E-4 -5.52285E-5 -5.52285E-5 -1.00000E-4 0.00000 -1.00000E-4 c 5.52285E-5 -1.00000E-4 1.00000E-4 -5.52285E-5 1.00000E-4 0.00000 c h S Q q 0.00000 480.000 translate 100.000 60.0000 translate 30.0000 30.0000 scale 1000.00 1000.00 scale 5.00000E-4 w 1 J 1 j 0.00000 0.00000 0.00000 RG newpath .00100000 0.00000 m .00100000 5.52285E-4 5.52285E-4 .00100000 0.00000 .00100000 c -5.52285E-4 .00100000 -.00100000 5.52285E-4 -.00100000 0.00000 c -.00100000 -5.52285E-4 -5.52285E-4 -.00100000 0.00000 -.00100000 c 5.52285E-4 -.00100000 .00100000 -5.52285E-4 .00100000 0.00000 c h S Q q 200.000 0.00000 translate 100.000 60.0000 translate 30.0000 30.0000 scale 100.000 100.000 scale .00500000 w 1 J 1 j 0.00000 0.00000 0.00000 RG newpath .0100000 0.00000 m .0100000 .00552285 .00552285 .0100000 0.00000 .0100000 c -.00552285 .0100000 -.0100000 .00552285 -.0100000 0.00000 c -.0100000 -.00552285 -.00552285 -.0100000 0.00000 -.0100000 c .00552285 -.0100000 .0100000 -.00552285 .0100000 0.00000 c h S Q q 200.000 120.000 translate 100.000 60.0000 translate 30.0000 30.0000 scale 10.0000 10.0000 scale .0500000 w 1 J 1 j 0.00000 0.00000 0.00000 RG newpath .100000 0.00000 m .100000 .0552285 .0552285 .100000 0.00000 .100000 c -.0552285 .100000 -.100000 .0552285 -.100000 0.00000 c -.100000 -.0552285 -.0552285 -.100000 0.00000 -.100000 c .0552285 -.100000 .100000 -.0552285 .100000 0.00000 c h S Q q 200.000 240.000 translate 100.000 60.0000 translate 30.0000 30.0000 scale 1.00000 1.00000 scale .500000 w 1 J 1 j 0.00000 0.00000 0.00000 RG newpath 1.00000 0.00000 m 1.00000 .552285 .552285 1.00000 0.00000 1.00000 c -.552285 1.00000 -1.00000 .552285 -1.00000 0.00000 c -1.00000 -.552285 -.552285 -1.00000 0.00000 -1.00000 c .552285 -1.00000 1.00000 -.552285 1.00000 0.00000 c h S Q q 200.000 360.000 translate 100.000 60.0000 translate 30.0000 30.0000 scale .100000 .100000 scale 5.00000 w 1 J 1 j 0.00000 0.00000 0.00000 RG newpath 10.0000 0.00000 m 10.0000 5.52285 5.52285 10.0000 0.00000 10.0000 c -5.52285 10.0000 -10.0000 5.52285 -10.0000 0.00000 c -10.0000 -5.52285 -5.52285 -10.0000 0.00000 -10.0000 c 5.52285 -10.0000 10.0000 -5.52285 10.0000 0.00000 c h S Q q 200.000 480.000 translate 100.000 60.0000 translate 30.0000 30.0000 scale .0100000 .0100000 scale 50.0000 w 1 J 1 j 0.00000 0.00000 0.00000 RG newpath 100.000 0.00000 m 100.000 55.2285 55.2285 100.000 0.00000 100.000 c -55.2285 100.000 -100.000 55.2285 -100.000 0.00000 c -100.000 -55.2285 -55.2285 -100.000 0.00000 -100.000 c 55.2285 -100.000 100.000 -55.2285 100.000 0.00000 c h S Q q 400.000 0.00000 translate 100.000 60.0000 translate 30.0000 30.0000 scale .00100000 .00100000 scale 500.000 w 1 J 1 j 0.00000 0.00000 0.00000 RG newpath 1000.00 0.00000 m 1000.00 552.285 552.285 1000.00 0.00000 1000.00 c -552.285 1000.00 -1000.00 552.285 -1000.00 0.00000 c -1000.00 -552.285 -552.285 -1000.00 0.00000 -1000.00 c 552.285 -1000.00 1000.00 -552.285 1000.00 0.00000 c h S Q q 400.000 120.000 translate 100.000 60.0000 translate 30.0000 30.0000 scale 1.00000E-4 1.00000E-4 scale 5000.00 w 1 J 1 j 0.00000 0.00000 0.00000 RG newpath 10000.0 0.00000 m 10000.0 5522.85 5522.85 10000.0 0.00000 10000.0 c -5522.85 10000.0 -10000.0 5522.85 -10000.0 0.00000 c -10000.0 -5522.85 -5522.85 -10000.0 0.00000 -10000.0 c 5522.85 -10000.0 10000.0 -5522.85 10000.0 0.00000 c h S Q q 400.000 240.000 translate 100.000 60.0000 translate 30.0000 30.0000 scale 1.00000E-5 1.00000E-5 scale 50000.0 w 1 J 1 j 0.00000 0.00000 0.00000 RG newpath 100000 0.00000 m 100000 55228.5 55228.5 100000 0.00000 100000 c -55228.5 100000 -100000 55228.5 -100000 0.00000 c -100000 -55228.5 -55228.5 -100000 0.00000 -100000 c 55228.5 -100000 100000 -55228.5 100000 0.00000 c h S Q q 400.000 360.000 translate 100.000 60.0000 translate 30.0000 30.0000 scale 1.00000E-6 1.00000E-6 scale 500000 w 1 J 1 j 0.00000 0.00000 0.00000 RG newpath 1000000 0.00000 m 1000000 552285 552285 1000000 0.00000 1000000 c -552285 1000000 -1000000 552285 -1000000 0.00000 c -1000000 -552285 -552285 -1000000 0.00000 -1000000 c 552285 -1000000 1000000 -552285 1000000 0.00000 c h S Q q 400.000 480.000 translate 100.000 60.0000 translate 30.0000 30.0000 scale 1.00000E-7 1.00000E-7 scale 5000000 w 1 J 1 j 0.00000 0.00000 0.00000 RG newpath 10000000 0.00000 m 10000000 5522850 5522850 10000000 0.00000 10000000 c -5522850 10000000 -10000000 5522850 -10000000 0.00000 c -10000000 -5522850 -5522850 -10000000 0.00000 -10000000 c 5522850 -10000000 10000000 -5522850 10000000 0.00000 c h S Q Q end end restore showpage %%Trailer %%EOF src/test/resources/ps/TestCustomStrokes.ps0000644000175000017500000020217110470455440020337 0ustar user01user01%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 20 118 575 673 %%Creator: FreeHEP Graphics2D Driver %%Producer: org.freehep.graphicsio.ps.PSGraphics2D %%For: %%Title: %%LanguageLevel: 3 %%EndComments %%BeginProlog 100 dict dup begin % % File: org/freehep/graphicsio.ps/PSProlog.txt % Author: Charles Loomis % % Redefinitions which save some space in the output file. These are also % the same as the PDF operators. /q {gsave} def /Q {grestore} def /n {newpath} def /m {moveto} def /l {lineto} def /c {curveto} def /h {closepath} def /re {4 -2 roll moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath} def /f {fill} def /f* {eofill} def /F {gsave vg&FC fill grestore} def /F* {gsave vg&FC eofill grestore} def /s {closepath stroke} def /S {stroke} def /b {closepath gsave vg&FC fill grestore gsave stroke grestore newpath} def /B {gsave vg&FC fill grestore gsave stroke grestore newpath} def /b* {closepath gsave vg&FC eofill grestore gsave stroke grestore newpath} def /B* {gsave vg&FC eofill grestore gsave stroke grestore newpath} def /g {1 array astore /vg&fcolor exch def} def /G {setgray} def /k {4 array astore /vg&fcolor exch def} def /K {setcmykcolor} def /rg {3 array astore /vg&fcolor exch def} def /RG {setrgbcolor} def % Initialize the fill color. 0 0 0 rg /vg&FC {mark vg&fcolor aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /vg&DFC {/vg&fcolor exch def} def /vg&C {mark exch aload pop counttomark 1 eq {G} if counttomark 3 eq {RG} if counttomark 4 eq {K} if cleartomark } def /w {setlinewidth} def /j {setlinejoin} def /J {setlinecap} def /M {setmiterlimit} def /d {setdash} def /i {setflat} def /W {clip} def /W* {eoclip} def % Setup the default graphics state. % (black; 1 pt. linewidth; miter join; butt-ends; solid) /defaultGraphicsState {0 g 1 w 0 j 0 J [] 0 d} def % Emulation of the rectangle operators for PostScript implementations % which do not implement all Level 2 features. This is an INCOMPLETE % emulation; only the "x y width height rect..." form is emulated. /*rf {gsave newpath re fill grestore} def /*rs {gsave newpath re stroke grestore} def /*rc {newpath re clip} def /rf /rectfill where {pop /rectfill}{/*rf} ifelse load def /rs /rectstroke where {pop /rectstroke}{/*rs} ifelse load def /rc /rectclip where {pop /rectclip}{/*rc} ifelse load def % Emulation of the selectfont operator. This includes a 20% increase in % the fontsize which is necessary to get sizes similar to the Java fonts. /*sf {exch findfont exch dup type /arraytype eq {makefont}{scalefont} ifelse setfont} bind def /sf /selectfont where {pop {1.2 mul selectfont}}{{1.2 mul *sf}} ifelse def % Special version of stroke which allows the dash pattern to continue % across path segments. (This may be needed for PostScript although % modern printers seem to do this correctly.) /vg&stroke { currentdash pop length 0 eq {stroke} { currentdash /vg&doffset exch def pop flattenpath {m vg&resetdash} {2 copy currentpoint 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt 3 1 roll l currentdash 3 -1 roll add setdash} {} {h vg&resetdash} pathforall stroke vg&resetdash } ifelse } def /vg&resetdash {currentdash pop vg&doffset setdash} def % Initialize variables for safety. /delta 0 def /xv 0 def /yv 0 def /width 0 def /height 0 def % Initialize to portrait INTERNATIONAL (Letter-height, A4-width) page. /pw 595 def /ph 791 def /po true def /ftp false def % Initialize margins to 20 points. /ml 20 def /mr 20 def /mt 20 def /mb 20 def % Temporary matrices. /smatrix 0 def /nmatrix 0 def % set page size (usage: setpagesize) /setpagesize {/ph exch def /pw exch def} def % set page orientation (usage: portrait or landscape) /portrait {/po true def} def /landscape {/po false def} def % force natural size for image (usage: naturalsize) /naturalsize {/ftp false def} def % resize image to fill page (usage: fittopage) /fittopage {/ftp true def} def % set margins of the page (usage: setmargins) /setmargins {/mr exch def /mt exch def /mb exch def /ml exch def} def % set the graphic's size (usage: setsize) /setsize {/gh exch def /gw exch def} def % set the graphic's origin (usage: setorigin) /setorigin {/gy exch def /gx exch def} def % calculate image center /imagecenter {pw ml sub mr sub 2 div ml add ph mt sub mb sub 2 div mb add} def % calculate the necessary scaling /imagescale {po {gw}{gh} ifelse pw ml sub mr sub div po {gh}{gw} ifelse ph mt sub mb sub div 2 copy lt {exch} if pop ftp not {1 2 copy lt {exch} if pop} if 1 exch div /sfactor exch def /gw gw sfactor mul def /gh gh sfactor mul def} def % calculate image origin /imageorigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div po {add}{sub} ifelse} def % calculate the clipping origin /cliporigin {pw ml sub mr sub 2 div ml add po {gw}{gh} ifelse 2 div sub floor ph mt sub mb sub 2 div mb add po {gh}{gw} ifelse 2 div sub floor} def % Set the clipping region to the bounding box. /cliptobounds {cliporigin po {gw}{gh} ifelse 1 add po {gh}{gw} ifelse 1 add rc} def % set the base transformation matrix (usage: setbasematrix) /setbasematrix {imageorigin translate po {0}{90} ifelse rotate sfactor sfactor neg scale /defaultmatrix matrix currentmatrix def} def % The lower-right bias in drawing 1 pt. wide lines. /bias {q 0.5 0.5 translate} def /unbias {Q} def % Draw a line. (x0 y0 x1 y1 line) /L {bias n m l S unbias} def % Polyline primitive. /polyline {n m 1 exch 1 exch {pop currentfile token pop currentfile token pop l} for } def % Draw a polyline (n x0 y0 OPL x1 y1 x2 y2 ... ... xn yn) /OPL {bias polyline S unbias} def % Draw a closed polyline (n x0 y0 CPL x1 y1 x2 y2 ... ... xn yn) /CPL {bias polyline s unbias} def % Draw a filled polyline (n x0 y0 FPL x1 y1 x2 y2 ... ... xn yn) /FPL {polyline h f*} def % Draw an oval. (x y w h OVL) /OVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width currentlinewidth sub 2 div height currentlinewidth sub 2 div neg scale n 0 0 1 5 -2 roll arc smatrix setmatrix S} def % Draw a filled oval. (x y w h FOVL) /FOVL {matrix currentmatrix /smatrix exch def /height exch def /width exch def /yv exch def /xv exch def width 2 div xv add height 2 div yv add translate width 2 div height 2 div neg scale n 0 0 m 0 0 1 5 -2 roll arc h smatrix setmatrix f} def % Draw a rounded rectangle. (x y w h arcwidth archeight RREC) /RREC {matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix s} def % Draw a filled rounded rectangle. (x y w h arcwidth archeight FRREC) /FRREC{matrix currentmatrix /smatrix exch def 2 div /ah exch def 2 div /aw exch def /height exch def /width exch def /yv exch def /xv exch def aw ah scale matrix currentmatrix /nmatrix exch def smatrix setmatrix n xv width add aw sub yv m nmatrix setmatrix currentpoint exch 1 add exch currentpoint 1 add exch 1 add exch 1 arct smatrix setmatrix xv width add yv height add ah sub l nmatrix setmatrix currentpoint 1 add currentpoint exch 1 sub exch 1 add 1 arct smatrix setmatrix xv aw add yv height add l nmatrix setmatrix currentpoint exch 1 sub exch currentpoint exch 1 sub exch 1 sub 1 arct smatrix setmatrix xv yv ah add l nmatrix setmatrix currentpoint 1 sub currentpoint exch 1 add exch 1 sub 1 arct smatrix setmatrix h f} def % Draw a string. (string x y STR) /STR {q m 1 -1 scale recshow Q} def % Define basic plot symbols. /xys {/siz exch def /yv exch def /xv exch def} def /hline {xys n xv siz 2. div sub yv m siz 0 rlineto S} def /vline {xys n xv yv siz 2. div sub m 0 siz rlineto S} def /plus {xys n xv yv siz 2. div sub m 0 siz rlineto xv siz 2. div sub yv m siz 0 rlineto S} def /dot {n 2. div 0 360 arc s} def /fdot {n 2. div 0 360 arc h f} def /box {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rs} def /fbox {xys n xv siz 2 sqrt div 2 div sub yv siz 2 sqrt div 2 div sub siz 2 sqrt div dup rf} def /tridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto s} def /ftridn{xys n xv yv siz 3 sqrt div add m siz 2. div neg 3 sqrt 2. div siz mul neg rlineto siz 0 rlineto h f} def % Symbols defined in terms of the others. /star {3 copy cross plus} def /cross {xys q xv yv translate 45 rotate 0 0 siz plus Q} def /diamond {xys q xv yv translate 45 rotate 0 0 siz box Q} def /fdiamond {xys q xv yv translate 45 rotate 0 0 siz fbox Q} def /triup {xys q xv yv translate 180 rotate 0 0 siz tridn Q} def /ftriup {xys q xv yv translate 180 rotate 0 0 siz ftridn Q} def % Define the composite fonts used to print Unicode strings. % Undefine particular values in an encoding array. /vg&undef { {exch dup 3 -1 roll /.notdef put} forall } def /vg&redef { {3 -1 roll dup 4 2 roll put} forall } def % usage: key encoding basefontname vg&newbasefont font /vg&newbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def currentdict end definefont } def % usage: key encoding basefontname vg&newskewedbasefont font /vg&newskewedbasefont { findfont dup length dict copy begin currentdict /FID undef /Encoding exch def dup /FontName exch def exch FontMatrix exch matrix concatmatrix /FontMatrix exch def currentdict end definefont } def % usage: basekey suffix vg&nconcat name /vg&nconcat { 2 {dup length string cvs exch} repeat dup length 3 -1 roll dup length 3 -1 roll add string dup 0 4 -1 roll dup length 5 1 roll putinterval dup 4 -2 roll exch putinterval cvn } def %usage: fontname vg&skewmatrix matrix /vg&skewmatrix { findfont dup /FontInfo known { /FontInfo get dup /ItalicAngle known { [ 1 0 4 -1 roll /ItalicAngle get neg dup sin exch cos div 1 0 0 ] } {pop matrix} ifelse } {pop matrix} ifelse } def % usage: newfontname basefontname vg&newcompositefont -- /vg&newcompositefont { /vg&fstyle exch def /vg&bfont exch def /vg&fname exch def << /FontStyleBits vg&fstyle /FontType 0 /FontMatrix matrix /FontName vg&fname /FMapType 2 /Encoding [ 0 1 255 {pop 6} for ] dup 16#00 0 put % Latin dup 16#03 1 put % Greek dup 16#20 2 put % Punctuation dup 16#21 3 put % Arrows dup 16#22 4 put % MathOps dup 16#27 5 put % Dingbats /FDepVector [ vg&bfont /-UC-Latin vg&nconcat UCLatinEncoding vg&bfont vg&newbasefont vg&bfont vg&skewmatrix vg&bfont /-UC-Greek vg&nconcat UCGreekEncoding /Symbol vg&newskewedbasefont vg&bfont /-UC-Punctuation vg&nconcat UCPunctuationEncoding vg&bfont vg&newbasefont /Arrows-UC findfont /MathOps-UC findfont /Dingbats-UC findfont /Undefined-UC findfont ] >> vg&fname exch definefont pop } def % Null encoding vector (all elements set to .notdef) /NullEncoding [ 256 {/.notdef} repeat ] def % Unicode Latin encoding (unicode codes \u0000-\u00ff) /UCLatinEncoding ISOLatin1Encoding dup length array copy dup 16#60 /grave put [ 16#90 16#91 16#92 16#93 16#94 16#95 16#96 16#97 16#98 16#9a 16#9b 16#9d 16#9e 16#9f ] vg&undef def % Unicode Greek encoding (unicode codes \u0370-\u03ff) /UCGreekEncoding NullEncoding dup length array copy << 16#91 /Alpha 16#92 /Beta 16#93 /Gamma 16#94 /Delta 16#95 /Epsilon 16#96 /Zeta 16#97 /Eta 16#98 /Theta 16#99 /Iota 16#9a /Kappa 16#9b /Lambda 16#9c /Mu 16#9d /Nu 16#9e /Xi 16#9f /Omicron 16#a0 /Pi 16#a1 /Rho 16#a3 /Sigma 16#a4 /Tau 16#a5 /Upsilon 16#a6 /Phi 16#a7 /Chi 16#a8 /Psi 16#a9 /Omega 16#b1 /alpha 16#b2 /beta 16#b3 /gamma 16#b4 /delta 16#b5 /epsilon 16#b6 /zeta 16#b7 /eta 16#b8 /theta 16#b9 /iota 16#ba /kappa 16#bb /lambda 16#bc /mu 16#bd /nu 16#be /xi 16#bf /omicron 16#c0 /pi 16#c1 /rho 16#c2 /sigma1 16#c3 /sigma 16#c4 /tau 16#c5 /upsilon 16#c6 /phi1 16#c7 /chi 16#c8 /psi 16#c9 /omega 16#7e /semicolon 16#87 /dotmath 16#d1 /theta1 16#d2 /Upsilon1 16#d5 /phi 16#d6 /omega1 >> vg&redef def % Unicode punctuation encoding (unicode codes \u2000-\u206f) /UCPunctuationEncoding NullEncoding dup length array copy << 16#10 /hyphen 16#11 /hyphen 16#12 /endash 16#13 /emdash 16#18 /quoteleft 16#19 /quoteright 16#1a /quotesinglbase 16#1b /quotesingle 16#1c /quotedblleft 16#1d /quotedblright 16#1e /quotedblbase 16#1f /quotedbl 16#20 /dagger 16#21 /daggerdbl 16#22 /bullet 16#24 /period 16#26 /ellipsis 16#27 /periodcentered 16#30 /perthousand 16#44 /fraction 16#70 /zerosuperior 16#74 /foursuperior 16#75 /fivesuperior 16#76 /sixsuperior 16#77 /sevensuperior 16#78 /eightsuperior 16#79 /ninesuperior 16#7b /hyphensuperior 16#7d /parenleftsuperior 16#7e /parenrightsuperior 16#80 /zeroinferior 16#84 /fourinferior 16#85 /fiveinferior 16#81 /oneinferior 16#82 /twoinferior 16#83 /threeinferior 16#86 /sixinferior 16#87 /seveninferior 16#88 /eightinferior 16#89 /nineinferior 16#8b /hypheninferior 16#8d /parenleftinferior 16#8e /parenrightinferior >> vg&redef def % Unicode mathematical operators encoding (unicode codes \u2200-\u22ff) /UCMathOpsEncoding NullEncoding dup length array copy << 16#00 /universal 16#02 /partialdiff 16#03 /existential 16#05 /emptyset 16#06 /Delta 16#07 /gradient 16#08 /element 16#09 /notelement 16#0b /suchthat 16#0f /product 16#11 /summation 16#12 /minus 16#15 /fraction 16#17 /asteriskmath 16#19 /bullet 16#1a /radical 16#1d /proportional 16#1e /infinity 16#20 /angle 16#23 /bar 16#27 /logicaland 16#28 /logicalor 16#29 /intersection 16#2a /union 16#2b /integral 16#34 /therefore 16#36 /colon 16#3c /similar 16#45 /congruent 16#48 /approxequal 16#60 /notequal 16#61 /equivalence 16#64 /lessequal 16#65 /greaterequal 16#82 /propersubset 16#83 /propersuperset 16#86 /reflexsubset 16#87 /reflexsuperset 16#95 /circleplus 16#97 /circlemultiply 16#a5 /perpendicular 16#03 /existential 16#c0 /logicaland 16#c1 /logicalor 16#c2 /intersection 16#c3 /union 16#c4 /diamond 16#c5 /dotmath >> vg&redef def % Unicode arrows encoding (unicode codes \u2190-\u21ff) % Also includes those "Letterlike" unicode characters % which are available in the symbol font. (unicode codes \u2100-\u214f) /UCArrowsEncoding NullEncoding dup length array copy << 16#11 /Ifraktur 16#1c /Rfraktur 16#22 /trademarkserif 16#35 /aleph 16#90 /arrowleft 16#91 /arrowup 16#92 /arrowright 16#93 /arrowdown 16#94 /arrowboth 16#d0 /arrowdblleft 16#d1 /arrowdblup 16#d2 /arrowdblright 16#d3 /arrowdbldown 16#d4 /arrowdblboth >> vg&redef def /ZapfDingbats findfont /Encoding get dup length array copy /UCDingbatsEncoding exch def 16#20 1 16#7f { dup 16#20 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for 16#a0 1 16#ff { dup 16#40 sub exch UCDingbatsEncoding exch get UCDingbatsEncoding 3 1 roll put } for UCDingbatsEncoding [ 16#c0 1 16#ff {} for ] vg&undef [ 16#00 16#05 16#0a 16#0b 16#28 16#4c 16#4e 16#53 16#54 16#55 16#57 16#5f 16#60 16#68 16#69 16#6a 16#6b 16#6c 16#6d 16#6e 16#6f 16#70 16#71 16#72 16#73 16#74 16#75 16#95 16#96 16#97 16#b0 16#bf ] vg&undef pop % Define the base fonts which don't change. /Undefined-UC NullEncoding /Helvetica vg&newbasefont pop /MathOps-UC UCMathOpsEncoding /Symbol vg&newbasefont pop /Arrows-UC UCArrowsEncoding /Symbol vg&newbasefont pop /Dingbats-UC UCDingbatsEncoding /ZapfDingbats vg&newbasefont pop % Make the SansSerif composite fonts. /SansSerif /Helvetica 16#00 vg&newcompositefont /SansSerif-Bold /Helvetica-Bold 16#01 vg&newcompositefont /SansSerif-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /SansSerif-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Serif composite fonts. /Serif /Times-Roman 16#00 vg&newcompositefont /Serif-Bold /Times-Bold 16#01 vg&newcompositefont /Serif-Italic /Times-Italic 16#02 vg&newcompositefont /Serif-BoldItalic /Times-BoldItalic 16#03 vg&newcompositefont % Make the Monospaced composite fonts. /Monospaced /Courier 16#00 vg&newcompositefont /Monospaced-Bold /Courier-Bold 16#01 vg&newcompositefont /Monospaced-Italic /Courier-Oblique 16#02 vg&newcompositefont /Monospaced-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont % Make the Dialog composite fonts. /Dialog /Helvetica 16#00 vg&newcompositefont /Dialog-Bold /Helvetica-Bold 16#01 vg&newcompositefont /Dialog-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /Dialog-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the DialogInput composite fonts. /DialogInput /Helvetica 16#00 vg&newcompositefont /DialogInput-Bold /Helvetica-Bold 16#01 vg&newcompositefont /DialogInput-Italic /Helvetica-Oblique 16#02 vg&newcompositefont /DialogInput-BoldItalic /Helvetica-BoldOblique 16#03 vg&newcompositefont % Make the Typewriter composite fonts (JDK 1.1 only). /Typewriter /Courier 16#00 vg&newcompositefont /Typewriter-Bold /Courier-Bold 16#01 vg&newcompositefont /Typewriter-Italic /Courier-Oblique 16#02 vg&newcompositefont /Typewriter-BoldItalic /Courier-BoldOblique 16#03 vg&newcompositefont /cfontH { dup /fontsize exch def /SansSerif exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHB { dup /fontsize exch def /SansSerif-Bold exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHI { dup /fontsize exch def /SansSerif-Italic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontHBI { dup /fontsize exch def /SansSerif-BoldItalic exch sf /vg&fontstyles [{cfontH} {cfontHB} {cfontHI} {cfontHBI}] def } def /cfontT { dup /fontsize exch def /Serif exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTB { dup /fontsize exch def /Serif-Bold exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTI { dup /fontsize exch def /Serif-Italic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontTBI { dup /fontsize exch def /Serif-BoldItalic exch sf /vg&fontstyles [{cfontT} {cfontTB} {cfontTI} {cfontTBI}] def } def /cfontC { dup /fontsize exch def /Typewriter exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCB { dup /fontsize exch def /Typewriter-Bold exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCI { dup /fontsize exch def /Typewriter-Italic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def /cfontCBI { dup /fontsize exch def /Typewriter-BoldItalic exch sf /vg&fontstyles [{cfontC} {cfontCB} {cfontCI} {cfontCBI}] def } def % Darken or lighten the current color. /darken {0.7 exch exp 3 copy q 4 -1 roll vg&C currentrgbcolor 3 {4 -2 roll mul} repeat 3 array astore Q} def /displayColorMap << /Cr [1.00 0.00 0.00] /Cg [0.00 1.00 0.00] /Cb [0.00 0.00 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.00 0.00] /CGg [0.00 1.00 0.00] /CGb [0.00 0.00 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.00 0.00] /CIg [0.00 1.00 0.00] /CIb [0.00 0.00 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /printColorMap << /Cr [1.00 0.33 0.33] /Cg [0.33 1.00 0.33] /Cb [0.33 0.33 1.00] /Cc [1.00 0.00 0.00 0.00] /Cm [0.00 1.00 0.00 0.00] /Cy [0.00 0.00 1.00 0.00] /Co [1.00 0.78 0.00] /Cp [1.00 0.67 0.67] /Cw [1 ] /Cgrl [0.75] /Cgr [0.50] /Cgrd [0.25] /Ck [0 ] /CGr [1.00 0.33 0.33] /CGg [0.33 1.00 0.33] /CGb [0.33 0.33 1.00] /CGc [1.00 0.00 0.00 0.00] /CGm [0.00 1.00 0.00 0.00] /CGy [0.00 0.00 1.00 0.00] /CGo [1.00 0.78 0.00] /CGp [1.00 0.67 0.67] /CGw [1 ] /CGgrl [0.75] /CGgr [0.50] /CGgrd [0.25] /CGk [0 ] /CIr [1.00 0.33 0.33] /CIg [0.33 1.00 0.33] /CIb [0.33 0.33 1.00] /CIc [1.00 0.00 0.00 0.00] /CIm [0.00 1.00 0.00 0.00] /CIy [0.00 0.00 1.00 0.00] /CIo [1.00 0.78 0.00] /CIp [1.00 0.67 0.67] /CIw [1 ] /CIgrl [0.75] /CIgr [0.50] /CIgrd [0.25] /CIk [0 ] >> def /grayColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [0.75] /CGg [1 ] /CGb [0.50] /CGc [0.75] /CGm [0.50] /CGy [1 ] /CGo [0.75] /CGp [1 ] /CGw [0 ] /CGgrl [0.25] /CGgr [0.50] /CGgrd [0.75] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def /bwColorMap << /Cr [0 ] /Cg [0 ] /Cb [0 ] /Cc [0 ] /Cm [0 ] /Cy [0 ] /Co [0 ] /Cp [0 ] /Cw [0 ] /Cgrl [0 ] /Cgr [0 ] /Cgrd [0 ] /Ck [0 ] /CGr [1 ] /CGg [1 ] /CGb [1 ] /CGc [1 ] /CGm [1 ] /CGy [1 ] /CGo [1 ] /CGp [1 ] /CGw [0 ] /CGgrl [1 ] /CGgr [1 ] /CGgrd [1 ] /CGk [1 ] /CIr [1 ] /CIg [1 ] /CIb [1 ] /CIc [1 ] /CIm [1 ] /CIy [1 ] /CIo [1 ] /CIp [1 ] /CIw [1 ] /CIgrl [1 ] /CIgr [1 ] /CIgrd [1 ] /CIk [1 ] >> def % % The following routines handle the alignment of and printing of % tagged strings. % % Predefine the bounding box values. /bbllx 0 def /bblly 0 def /bburx 0 def /bbury 0 def % This routine pops the first unicode character off of a string and returns % the remainder of the string, the character code of first character, % and a "true" if the string was non-zero length. % popfirst % popfirst /popfirst { dup length 1 gt {dup 0 get /vg&fbyte exch def dup 1 get /vg&cbyte exch def dup length 2 sub 2 exch getinterval true} {pop false} ifelse } def % This routine shows a single unicode character given the font and % character codes. % unicharshow -- /unicharshow { 2 string dup 0 5 -1 roll put dup 1 4 -1 roll put internalshow } def % This is an internal routine to alternate between determining the % bounding box for stringsize and showing the string for recshow. % internalshow -- /internalshow {show} def % This is an internal routine to alternate between determining the % bounding box for stringsize and stroking various ornaments. % internalstroke -- /internalstroke {S} def % Sets up internalshow to use the null device to determine string size. % -- nullinternalshow -- /nullinternalshow {/internalshow {false charpath flattenpath pathbbox updatebbox} def} def % Sets up internalstroke to use the null device to determine string size. % -- nullinternalstroke -- /nullinternalstroke { /internalstroke {flattenpath pathbbox updatebbox} def} def % This routine tests to see if the character code matches the first % character of a string. % testchar /testchar {exch dup 3 -1 roll 0 get eq} def % Raise the text baseline for superscripts. % -- raise -- /raise { 0 fontsize 2 div rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-raise the text baseline for superscripts. % -- unraise -- /unraise { /fontsize fontsize 1.5 mul def 0 fontsize 2 div neg rmoveto } def % Lower the text baseline for subscripts. % -- lower -- /lower { 0 fontsize 3 div neg rmoveto /fontsize fontsize 2 mul 3 div def currentfont /FontName get fontsize sf } def % Un-lower the text baseline for subscripts. % -- unlower -- /unlower { /fontsize fontsize 1.5 mul def 0 fontsize 3 div rmoveto } def % Compare the top two elements on the stack and leave only the % larger one. /maxval {2 copy gt {pop} {exch pop} ifelse} def % Tokenize a string. Do not use the usual PostScript token because % parentheses will not be interpreted correctly because of rescanning % of the string. /vg&token {/vg&string exch def /vg&index -1 def /vg&level 0 def 0 2 vg&string length 2 sub { dup dup 1 add exch vg&string exch get 8 bitshift vg&string 3 -1 roll get or dup 16#f0fe eq {pop 1}{16#f0ff eq {-1}{0} ifelse} ifelse /vg&level exch vg&level add def vg&level 0 eq {/vg&index exch def exit} if pop } for vg&index 0 ge { vg&string vg&index 2 add dup vg&string length exch sub getinterval vg&index 2 gt {vg&string 2 vg&index 2 sub getinterval}{()} ifelse true} {false} ifelse } bind def % Recursively show an unicode string. % recshow -- /recshow { popfirst { % Test to see if this is a string attribute. vg&fbyte 16#f0 and 16#e0 eq { q % Font style. currentfont dup /FontStyleBits known {/FontStyleBits get}{pop 0} ifelse vg&cbyte or vg&fontstyles exch get fontsize exch exec vg&token pop recshow currentpoint Q m recshow } { vg&fbyte 16#F8 and 16#F0 eq { % Superscript and/or subscript. vg&cbyte 16#00 eq { vg&token pop exch vg&token pop 3 -1 roll q raise recshow unraise currentpoint pop Q exch q lower recshow unlower currentpoint pop Q maxval currentpoint exch pop m recshow } if % Strikeout. vg&cbyte 16#01 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll fontsize 3 div add moveto fontsize 3 div add lineto internalstroke Q recshow} if % Underline. vg&cbyte 16#02 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dashed underline. vg&cbyte 16#03 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J [ vg&uthick 5 mul vg&uthick 2 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Dotted underline. vg&cbyte 16#04 eq { vg&token pop currentpoint 3 -1 roll recshow q 1 J [ 0 vg&uthick 3 mul] 0 d vg&underline vg&uthick w currentpoint 4 -2 roll vg&uoffset add moveto vg&uoffset add lineto internalstroke Q recshow} if % Thick underline. vg&cbyte 16#05 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Gray thick underline. vg&cbyte 16#06 eq { vg&token pop currentpoint 3 -1 roll recshow q 0 J vg&underline vg&uthick 2 mul w 0.5 setgray currentpoint 4 -2 roll vg&uoffset vg&uthick 2 div sub add moveto vg&uoffset vg&uthick 2 div sub add lineto internalstroke Q recshow} if % Overbar. vg&cbyte 16#07 eq { vg&token pop dup stringsize relative 4 1 roll pop pop exch 3 -1 roll recshow q 0 J vg&underline vg&uthick w vg&uoffset neg add dup currentpoint pop exch m l internalstroke Q recshow} if } { vg&fbyte vg&cbyte unicharshow recshow } ifelse } ifelse } if } def % Get the underline position and thickness from the current font. /vg&underline { currentfont dup /FontType get 0 eq {/FDepVector get 0 get} if dup dup /FontInfo known { /FontInfo get dup dup /UnderlinePosition known { /UnderlinePosition get /vg&uoffset exch def } { pop /vg&uoffset 0 def } ifelse dup /UnderlineThickness known { /UnderlineThickness get /vg&uthick exch def } { pop /vg&uthick 0 def } ifelse } { pop /vg&uoffset 0 def /vg&uthick 0 def } ifelse /FontMatrix get currentfont dup /FontType get 0 eq {/FontMatrix get matrix concatmatrix}{pop} ifelse dup 0 vg&uoffset 3 -1 roll transform /vg&uoffset exch def pop 0 vg&uthick 3 -1 roll transform /vg&uthick exch def pop } def % Make a frame with the coordinates on the stack. % frame -- /frame {4 copy m 3 1 roll exch l 4 -2 roll l l h} def % Resets the accumulated bounding box to a degenerate box at the % current point. % -- resetbbox -- /resetbbox { currentpoint 2 copy /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Update the accumulated bounding box. % updatebbox -- /updatebbox { dup bbury gt {/bbury exch def} {pop} ifelse dup bburx gt {/bburx exch def} {pop} ifelse dup bblly lt {/bblly exch def} {pop} ifelse dup bbllx lt {/bbllx exch def} {pop} ifelse } def % Set the bounding box to the values on the stack. % updatebbox -- /restorebbox { /bbury exch def /bburx exch def /bblly exch def /bbllx exch def } def % Push the accumulated bounding box onto the stack. % -- pushbbox /pushbbox {bbllx bblly bburx bbury} def % Make the relative bounding box relative to the currentpoint. % inflate /inflate { 2 {fontsize 0.2 mul add 4 1 roll} repeat 2 {fontsize 0.2 mul sub 4 1 roll} repeat } def % Make the relative bounding box relative to the currentpoint. % relative /relative { currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll currentpoint 3 -1 roll add 3 1 roll add exch 4 2 roll } def % Returns the size of a string appropriate for recshow. % stringsize /stringsize { pushbbox /internalshow load /internalstroke load 7 -1 roll q nulldevice 0 0 m nullinternalshow nullinternalstroke resetbbox recshow /internalstroke exch def /internalshow exch def pushbbox 8 -4 roll restorebbox Q } def % Calculate values for string positioning. /calcval {4 copy 3 -1 roll sub /widy exch def sub neg /widx exch def pop pop /dy exch def /dx exch def} def % Utilities to position a string. % First letter (U=upper, C=center, B=baseline, L=lower) % Second letter (L=left, C=center, R=right) /align [ {calcval dx neg widy dy add neg rmoveto} % UL {calcval dx neg widy 2 div dy add neg rmoveto} % CL {calcval dx neg 0 rmoveto} % BL {calcval dx neg dy neg rmoveto} % LL {calcval widx dx add neg widy dy add neg rmoveto} % UR {calcval widx dx add neg widy 2 div dy add neg rmoveto} % CR {calcval widx dx add neg 0 rmoveto} % BR {calcval widx dx add neg dy neg rmoveto} % LR {calcval widx 2 div dx add neg widy dy add neg rmoveto} % UC {calcval widx 2 div dx add neg widy 2 div dy add neg rmoveto} % CC {calcval widx 2 div dx add neg 0 rmoveto} % BC {calcval widx 2 div dx add neg dy neg rmoveto} % LC ] def /vg&str {m q 1 -1 scale dup stringsize 4 copy align 11 -1 roll get exec q inflate relative frame exch exec Q recshow Q} def end /procDict exch def %%EndProlog %%BeginSetup save procDict begin printColorMap begin 595 791 setpagesize 20 20 20 20 setmargins 0 0 setorigin 600 600 setsize fittopage portrait imagescale cliptobounds setbasematrix /Helvetica 10 sf defaultGraphicsState %%EndSetup 0.00000 0.00000 0.00000 RG [ 1.00000 0.00000 0.00000 1.00000 0.00000 0.00000 ] defaultmatrix matrix concatmatrix setmatrix 1.00000 w 2 J 0 j 10.0000 M [ ] 0.00000 d .784314 .784314 .784314 RG 0.00000 0.00000 600.000 600.000 rf 0.00000 0.00000 0.00000 RG q 0 0 600 600 rc q 10.0000 175.000 translate 4.00000 w newpath 2.41699 -3.80859 m 6.46973 -3.95508 9.37500 -4.49219 11.1328 -5.41992 c 14.1113 -6.98242 15.6006 -9.96094 15.6006 -14.3555 c 15.6006 -86.9385 l 15.6006 -91.3330 14.2090 -94.2871 11.4258 -95.8008 c 9.76562 -96.7285 6.76270 -97.3145 2.41699 -97.5586 c 2.41699 -101.367 l 48.7793 -101.367 l 57.7148 -101.367 65.1367 -100.342 71.0449 -98.2910 c 82.1777 -94.4336 87.7441 -87.4023 87.7441 -77.1973 c 87.7441 -70.9961 85.4858 -66.0767 80.9692 -62.4390 c 76.4526 -58.8013 71.5576 -56.4941 66.2842 -55.5176 c 66.2842 -54.1260 l 71.8506 -53.0518 76.6846 -51.2451 80.7861 -48.7061 c 88.7939 -43.7256 92.7979 -36.7920 92.7979 -27.9053 c 92.7979 -19.6045 88.9648 -12.8784 81.2988 -7.72705 c 73.6328 -2.57568 63.4277 0.00000 50.6836 -0.00000 c 2.41699 -0.00000 l h 39.5508 -55.8838 m 48.8281 -55.8838 55.0537 -57.3975 58.2275 -60.4248 c 61.4014 -63.4521 62.9883 -68.8232 62.9883 -76.5381 c 62.9883 -82.2510 61.9507 -87.0605 59.8755 -90.9668 c 57.8003 -94.8730 53.8086 -96.8262 47.9004 -96.8262 c 44.7754 -96.8262 42.6025 -96.3013 41.3818 -95.2515 c 40.1611 -94.2017 39.5508 -92.3096 39.5508 -89.5752 c 39.5508 -55.8838 l h 39.5508 -13.8428 m 39.5996 -11.2061 39.9902 -9.27734 40.7227 -8.05664 c 41.9434 -5.90820 44.2871 -4.83398 47.7539 -4.83398 c 54.8340 -4.83398 59.8022 -6.76270 62.6587 -10.6201 c 65.5151 -14.4775 66.9434 -19.9707 66.9434 -27.0996 c 66.9434 -37.7441 63.7939 -44.8242 57.4951 -48.3398 c 53.6865 -50.4883 47.7051 -51.4893 39.5508 -51.3428 c 39.5508 -13.8428 l h S 100.000 0.00000 translate newpath 2.41699 -3.80859 m 6.46973 -3.95508 9.37500 -4.49219 11.1328 -5.41992 c 14.1113 -6.98242 15.6006 -9.96094 15.6006 -14.3555 c 15.6006 -86.9385 l 15.6006 -91.3330 14.2090 -94.2871 11.4258 -95.8008 c 9.76562 -96.7285 6.76270 -97.3145 2.41699 -97.5586 c 2.41699 -101.367 l 48.7793 -101.367 l 57.7148 -101.367 65.1367 -100.342 71.0449 -98.2910 c 82.1777 -94.4336 87.7441 -87.4023 87.7441 -77.1973 c 87.7441 -70.9961 85.4858 -66.0767 80.9692 -62.4390 c 76.4526 -58.8013 71.5576 -56.4941 66.2842 -55.5176 c 66.2842 -54.1260 l 71.8506 -53.0518 76.6846 -51.2451 80.7861 -48.7061 c 88.7939 -43.7256 92.7979 -36.7920 92.7979 -27.9053 c 92.7979 -19.6045 88.9648 -12.8784 81.2988 -7.72705 c 73.6328 -2.57568 63.4277 0.00000 50.6836 -0.00000 c 2.41699 -0.00000 l h 39.5508 -55.8838 m 48.8281 -55.8838 55.0537 -57.3975 58.2275 -60.4248 c 61.4014 -63.4521 62.9883 -68.8232 62.9883 -76.5381 c 62.9883 -82.2510 61.9507 -87.0605 59.8755 -90.9668 c 57.8003 -94.8730 53.8086 -96.8262 47.9004 -96.8262 c 44.7754 -96.8262 42.6025 -96.3013 41.3818 -95.2515 c 40.1611 -94.2017 39.5508 -92.3096 39.5508 -89.5752 c 39.5508 -55.8838 l h 39.5508 -13.8428 m 39.5996 -11.2061 39.9902 -9.27734 40.7227 -8.05664 c 41.9434 -5.90820 44.2871 -4.83398 47.7539 -4.83398 c 54.8340 -4.83398 59.8022 -6.76270 62.6587 -10.6201 c 65.5151 -14.4775 66.9434 -19.9707 66.9434 -27.0996 c 66.9434 -37.7441 63.7939 -44.8242 57.4951 -48.3398 c 53.6865 -50.4883 47.7051 -51.4893 39.5508 -51.3428 c 39.5508 -13.8428 l h f 100.000 0.00000 translate newpath 2.60103 1.18802 m 7.41197 1.01153 11.0325 .283542 13.4627 -.995936 c 15.8924 -2.27831 17.7232 -4.14253 18.9553 -6.58860 c 20.0495 -8.78257 20.5980 -11.3710 20.6006 -14.3539 c 20.6006 -86.9385 l 20.5998 -89.8787 20.0929 -92.4262 19.0801 -94.5808 c 17.9131 -97.0374 16.1595 -98.9074 13.8192 -100.191 c 11.5207 -101.474 7.81450 -102.261 2.70063 -102.551 c 1.70224 -102.607 l 1.64551 -101.609 l 1.41860 -97.6153 l 1.35693 -96.5586 l 2.41699 -96.5586 l 6.41699 -96.5586 l 7.41699 -96.5586 l 7.41699 -97.5586 l 7.41699 -101.367 l 7.41699 -102.367 l 6.41699 -102.367 l 2.41699 -102.367 l 1.41699 -102.367 l 1.41699 -101.367 l 1.41699 -97.3672 l 1.41699 -96.3672 l 2.41699 -96.3672 l 48.7793 -96.3672 l 57.1524 -96.3678 64.0272 -95.4348 69.4039 -93.5680 c 74.0593 -91.9596 77.4748 -89.7767 79.6504 -87.0194 c 81.7230 -84.4135 82.7542 -81.1399 82.7441 -77.1988 c 82.7745 -72.5774 81.1391 -68.9568 77.8378 -66.3369 c 73.9737 -63.2211 69.8179 -61.2533 65.3705 -60.4334 c 62.1011 -59.8247 l 61.2842 -59.6726 l 61.2842 -58.8416 l 61.2842 -55.5176 l 61.2842 -54.1260 l 61.2791 -50.8303 l 61.2779 -50.0045 l 62.0885 -49.8471 l 65.3313 -49.2176 l 70.3001 -48.2599 74.5752 -46.6718 78.1567 -44.4533 c 84.6353 -40.4831 87.8490 -34.9692 87.7979 -27.9114 c 87.8425 -21.3579 84.7472 -16.0136 78.5121 -11.8784 c 71.6891 -7.28650 62.4129 -4.99369 50.6836 -5.00000 c 2.41699 -5.00000 l 1.41699 -5.00000 l 1.41699 -4.00000 l 1.41699 0.00000 l 1.41699 1.00000 l 2.41699 1.00000 l 6.41699 1.00000 l 7.41699 1.00000 l 7.41699 0.00000 l 7.41699 -3.80859 l 7.41699 -4.80859 l 6.41699 -4.80859 l 2.41699 -4.80859 l 1.37948 -4.80859 l 1.41767 -3.77179 l 1.56490 .225503 l 1.60171 1.22483 l 2.60103 1.18802 l h 3.56354 .151889 m 3.41631 -3.84540 l 2.41699 -3.80859 l 2.41699 -2.80859 l 6.41699 -2.80859 l 6.41699 -3.80859 l 5.41699 -3.80859 l 5.41699 0.00000 l 6.41699 0.00000 l 6.41699 -1.00000 l 2.41699 -1.00000 l 2.41699 -0.00000 l 3.41699 0.00000 l 3.41699 -4.00000 l 2.41699 -4.00000 l 2.41699 -3.00000 l 50.6836 -3.00000 l 62.8188 -2.99621 72.4658 -5.40166 79.6245 -10.2163 c 86.4355 -14.7579 89.8267 -20.6558 89.7978 -27.9099 c 89.8315 -35.6981 86.3013 -41.7799 79.2071 -46.1552 c 75.4180 -48.5019 70.9193 -50.1773 65.7110 -51.1813 c 62.4697 -51.8105 l 62.2791 -50.8288 l 63.2791 -50.8273 l 63.2842 -54.1244 l 63.2842 -55.5176 l 63.2842 -58.8416 l 62.2842 -58.8416 l 62.4672 -57.8585 l 65.7351 -58.4669 l 70.5127 -59.3488 74.9635 -61.4516 79.0875 -64.7754 c 82.8789 -67.8017 84.7645 -71.9439 84.7441 -77.2019 c 84.7511 -81.6043 83.5755 -85.2909 81.2176 -88.2619 c 78.8004 -91.3220 75.0808 -93.7206 70.0588 -95.4577 c 64.4705 -97.3978 57.3773 -98.3676 48.7793 -98.3672 c 2.41699 -98.3672 l 2.41699 -97.3672 l 3.41699 -97.3672 l 3.41699 -101.367 l 2.41699 -101.367 l 2.41699 -100.367 l 6.41699 -100.367 l 6.41699 -101.367 l 5.41699 -101.367 l 5.41699 -97.5586 l 6.41699 -97.5586 l 6.41699 -98.5586 l 2.41699 -98.5586 l 2.41699 -97.5586 l 3.41538 -97.5019 l 3.64229 -101.495 l 2.64390 -101.552 l 2.58717 -100.554 l 7.39478 -100.282 10.8160 -99.5775 12.8508 -98.4408 c 14.8197 -97.3647 16.2935 -95.7930 17.2721 -93.7257 c 18.1575 -91.8429 18.6003 -89.5805 18.6006 -86.9385 c 18.6006 -14.3555 l 18.5992 -11.6868 18.1214 -9.39668 17.1674 -7.48508 c 16.1305 -5.41993 14.5850 -3.84675 12.5307 -2.76553 c 10.3695 -1.62675 7.03507 -.975115 2.52741 -.810627 c 2.56422 .188696 l 3.56354 .151889 l h -2.58301 -3.80859 m -2.58301 0.00000 l -2.58301 4.00000 l -2.58301 5.00000 l -1.58301 5.00000 l 2.41699 5.00000 l 50.6836 5.00000 l 64.4415 4.99400 75.5764 2.13487 84.0882 -3.57739 c 93.1807 -9.74395 97.7506 -17.8517 97.7978 -27.9007 c 97.7463 -38.6099 92.9579 -46.9591 83.4325 -52.9483 c 78.8005 -55.8143 73.4020 -57.8430 67.2371 -59.0343 c 66.2554 -59.2249 l 66.0648 -58.2432 l 65.3025 -54.3166 l 65.0695 -53.1260 l 66.2842 -53.1260 l 70.2842 -53.1260 l 71.2842 -53.1260 l 71.2842 -54.1260 l 71.2842 -55.5176 l 71.2842 -56.5176 l 70.2842 -56.5176 l 66.2842 -56.5176 l 65.0808 -56.5176 l 65.3011 -55.3345 l 66.0332 -51.4021 l 66.2163 -50.4190 l 67.1994 -50.6021 l 73.2977 -51.7353 78.9331 -54.3829 84.1055 -58.5449 c 89.8313 -63.1980 92.7109 -69.4139 92.7441 -77.1927 c 92.7349 -83.4532 90.9832 -88.7985 87.4893 -93.2284 c 84.1019 -97.4998 79.1675 -100.762 72.6860 -103.014 c 66.2462 -105.249 58.2773 -106.367 48.7793 -106.367 c 2.41699 -106.367 l -1.58301 -106.367 l -2.58301 -106.367 l -2.58301 -105.367 l -2.58301 -101.367 l -2.58301 -97.5586 l -2.58881 -93.7813 l -2.59026 -92.8350 l -1.64554 -92.7814 l 2.13336 -92.5666 l 5.71586 -92.3667 8.00031 -91.9898 8.98669 -91.4361 c 9.45892 -91.1863 9.80683 -90.8163 10.0304 -90.3261 c 10.4123 -89.5179 10.6023 -88.3892 10.6006 -86.9400 c 10.6006 -14.3555 l 10.6025 -12.9440 10.4063 -11.8464 10.0120 -11.0628 c 9.75043 -10.5286 9.35193 -10.1247 8.81652 -9.85101 c 7.72087 -9.27046 5.52686 -8.92187 2.23449 -8.80526 c -1.61981 -8.66330 l -2.58301 -8.62782 l -2.58301 -7.66398 l -2.58301 -3.80859 l h -.583008 -3.80859 m -.583008 -7.66398 l -1.58301 -7.66398 l -1.54620 -6.66465 l 2.30657 -6.80656 l 5.90450 -6.93460 8.38332 -7.35861 9.74303 -8.07860 c 10.6595 -8.55186 11.3458 -9.24913 11.8019 -10.1704 c 12.3360 -11.2334 12.6022 -12.6290 12.6006 -14.3570 c 12.6006 -86.9385 l 12.6020 -88.6859 12.3495 -90.0969 11.8430 -91.1714 c 11.4310 -92.0618 10.7985 -92.7350 9.94562 -93.1910 c 8.70198 -93.8884 6.13520 -94.3459 2.24528 -94.5635 c -1.53208 -94.7781 l -1.58881 -93.7797 l -.588811 -93.7782 l -.583009 -97.5571 l -.583008 -101.367 l -.583008 -105.367 l -1.58301 -105.367 l -1.58301 -104.367 l 2.41699 -104.367 l 48.7793 -104.367 l 58.0523 -104.367 65.8024 -103.286 72.0295 -101.125 c 78.1459 -99.0013 82.7761 -95.9558 85.9201 -91.9883 c 89.1316 -87.9235 90.7396 -82.9926 90.7441 -77.1957 c 90.7257 -70.0472 88.0939 -64.3488 82.8486 -60.1006 c 77.9401 -56.1496 72.6017 -53.6388 66.8333 -52.5683 c 67.0163 -51.5852 l 67.9995 -51.7682 l 67.2673 -55.7006 l 66.2842 -55.5176 l 66.2842 -54.5176 l 70.2842 -54.5176 l 70.2842 -55.5176 l 69.2842 -55.5176 l 69.2842 -54.1260 l 70.2842 -54.1260 l 70.2842 -55.1260 l 66.2842 -55.1260 l 66.2842 -54.1260 l 67.2659 -53.9354 l 68.0282 -57.8621 l 67.0465 -58.0527 l 66.8559 -57.0710 l 72.7814 -55.9265 77.9542 -53.9866 82.3742 -51.2512 c 91.2950 -45.6658 95.7696 -37.8823 95.7979 -27.9007 c 95.7712 -18.5521 91.4954 -10.9972 82.9706 -5.23605 c 74.7990 .250864 64.0366 2.99621 50.6836 3.00000 c 2.41699 3.00000 l -1.58301 3.00000 l -1.58301 4.00000 l -.583008 4.00000 l -.583008 0.00000 l -.583008 -3.80859 l h 39.5508 -50.8838 m 44.5902 -50.8840 48.8610 -51.3099 52.3631 -52.1615 c 56.3387 -53.1317 59.4442 -54.6805 61.6797 -56.8078 c 65.8633 -60.8283 67.9662 -67.4045 67.9883 -76.5366 c 67.9854 -83.0793 66.7534 -88.6705 64.2923 -93.3102 c 62.7443 -96.2111 60.4891 -98.3912 57.5267 -99.8507 c 54.8381 -101.165 51.6299 -101.824 47.9019 -101.826 c 43.5481 -101.815 40.2892 -100.888 38.1253 -99.0455 c 35.7716 -96.9846 34.5801 -93.8299 34.5508 -89.5813 c 34.5508 -55.8838 l 34.5508 -51.8838 l 34.5508 -50.8838 l 35.5508 -50.8838 l 39.5508 -50.8838 l h 39.5508 -52.8838 m 35.5508 -52.8838 l 35.5508 -51.8838 l 36.5508 -51.8838 l 36.5508 -55.8838 l 36.5508 -89.5752 l 36.5661 -93.2236 37.5263 -95.8755 39.4316 -97.5311 c 41.2148 -99.0551 44.0382 -99.8201 47.9019 -99.8262 c 51.3200 -99.8250 54.2345 -99.2348 56.6453 -98.0553 c 59.2228 -96.7884 61.1831 -94.8938 62.5263 -92.3715 c 64.8325 -88.0261 65.9865 -82.7483 65.9883 -76.5381 c 65.9755 -67.9702 64.0785 -61.8752 60.2973 -58.2531 c 58.3225 -56.3719 55.5197 -54.9890 51.8890 -54.1045 c 48.5426 -53.2908 44.4299 -52.8839 39.5508 -52.8838 c h 44.5508 -55.8838 m 44.5508 -89.5752 l 44.5413 -90.2861 44.5683 -90.8325 44.6318 -91.2144 c 44.6562 -91.3607 44.6827 -91.4688 44.7113 -91.5386 c 44.6997 -91.5126 44.6619 -91.4747 44.5978 -91.4247 c 44.6259 -91.4461 l 44.6534 -91.4705 l 44.7415 -91.5493 45.0144 -91.6237 45.4723 -91.6939 c 46.0724 -91.7871 46.8802 -91.8312 47.8958 -91.8262 c 50.0832 -91.8272 51.8264 -91.5090 53.1253 -90.8713 c 54.1566 -90.3734 54.9337 -89.6255 55.4565 -88.6274 c 57.1473 -85.4509 57.9912 -81.4211 57.9883 -76.5381 c 57.9959 -73.3329 57.7175 -70.6713 57.1530 -68.5533 c 56.6151 -66.5320 55.8237 -65.0293 54.7787 -64.0450 c 53.8342 -63.1413 52.2399 -62.4187 49.9958 -61.8773 c 47.2704 -61.2148 43.7887 -60.8836 39.5508 -60.8838 c 38.5508 -60.8838 l 38.5508 -59.8838 l 38.5508 -55.8838 l 38.5508 -54.8838 l 39.5508 -54.8838 l 43.5508 -54.8838 l 44.5508 -54.8838 l 44.5508 -55.8838 l h 43.5508 -56.8838 m 39.5508 -56.8838 l 39.5508 -55.8838 l 40.5508 -55.8838 l 40.5508 -59.8838 l 39.5508 -59.8838 l 39.5508 -58.8838 l 43.9490 -58.8837 47.5877 -59.2336 50.4669 -59.9336 c 53.0574 -60.5597 54.9537 -61.4467 56.1556 -62.5944 c 57.4717 -63.8367 58.4483 -65.6512 59.0854 -68.0377 c 59.6953 -70.3255 59.9962 -73.1595 59.9883 -76.5396 c 59.9903 -81.7543 59.0691 -86.0951 57.2247 -89.5621 c 56.4974 -90.9432 55.4229 -91.9790 54.0012 -92.6693 c 52.4272 -93.4410 50.3936 -93.8266 47.9004 -93.8262 c 46.7824 -93.8317 45.8711 -93.7798 45.1667 -93.6704 c 44.3221 -93.5385 43.7086 -93.3039 43.3263 -92.9668 c 43.9899 -92.2186 l 43.3819 -93.0126 l 43.1613 -92.8426 42.9877 -92.6045 42.8612 -92.2983 c 42.7752 -92.0888 42.7077 -91.8365 42.6587 -91.5412 c 42.5758 -91.0419 42.5398 -90.3820 42.5509 -89.5614 c 42.5508 -55.8838 l 43.5508 -55.8838 l 43.5508 -56.8838 l h 34.5517 -13.7492 m 34.6209 -10.2253 35.2481 -7.47139 36.4332 -5.48744 c 37.5405 -3.55115 39.1665 -2.08703 41.3111 -1.09509 c 43.1463 -.256324 45.2934 .164044 47.7524 .166014 c 56.4924 .128431 62.8002 -2.47453 66.6756 -7.64286 c 70.1787 -12.3868 71.9346 -18.8719 71.9434 -27.0981 c 71.9428 -33.1269 71.0115 -38.2363 69.1492 -42.4263 c 67.1186 -46.9723 64.0470 -50.3984 59.9342 -52.7046 c 55.3481 -55.2872 48.5255 -56.4997 39.4664 -56.3421 c 35.5354 -56.2818 l 34.5508 -56.2667 l 34.5508 -55.2819 l 34.5508 -51.3428 l 34.5508 -13.8428 l 34.5515 -13.7599 l h 36.5514 -13.7784 m 36.5507 -13.8520 l 36.5508 -51.3428 l 36.5508 -55.2819 l 35.5508 -55.2819 l 35.5661 -54.2820 l 39.4986 -54.3423 l 48.1968 -54.4955 54.6819 -53.3686 58.9538 -50.9614 c 62.6855 -48.8723 65.4751 -45.7557 67.3227 -41.6116 c 69.0697 -37.6815 69.9433 -32.8442 69.9434 -27.0996 c 69.9386 -19.3116 68.3145 -13.2239 65.0711 -8.83672 c 61.6031 -4.18816 55.8291 -1.85391 47.7493 -1.83397 c 45.5829 -1.83482 43.7149 -2.19443 42.1453 -2.91278 c 40.3889 -3.72214 39.0606 -4.91648 38.1603 -6.49580 c 37.1483 -8.18721 36.6120 -10.6183 36.5513 -13.7891 c h 44.5508 -13.8428 m 44.5508 -51.3428 l 44.5508 -52.3428 l 43.5508 -52.3428 l 39.5508 -52.3428 l 38.5337 -52.3443 l 38.5509 -51.3259 l 38.6184 -47.3265 l 38.6338 -46.3250 l 39.6367 -46.3435 l 46.8861 -46.4783 52.0197 -45.6923 55.0373 -43.9856 c 57.2390 -42.7648 58.8975 -40.8900 60.0127 -38.3613 c 61.3014 -35.4651 61.9450 -31.7112 61.9434 -27.0996 c 61.9502 -21.0651 60.8491 -16.5635 58.6399 -13.5949 c 56.7960 -11.0503 53.1688 -9.79663 47.7585 -9.83397 c 46.7488 -9.83265 45.9896 -9.94940 45.4809 -10.1842 c 45.2818 -10.2712 45.1473 -10.3809 45.0775 -10.5131 c 44.7547 -11.0469 44.5788 -12.1870 44.5500 -13.9333 c 42.5501 -13.9072 l 42.5508 -13.8336 l 44.5508 -13.8428 l h 44.5507 -13.8520 m 44.5501 -13.9256 l 43.5501 -13.9164 l 42.5502 -13.8995 l 42.5865 -11.7946 42.8510 -10.3337 43.3438 -9.51684 c 43.6179 -9.01658 44.0550 -8.63188 44.6551 -8.36273 c 45.4225 -8.00897 46.4559 -7.83272 47.7554 -7.83399 c 53.8364 -7.80923 58.0016 -9.33447 60.2509 -12.4097 c 62.7166 -15.7289 63.9474 -20.6261 63.9434 -27.1011 c 63.9445 -31.9950 63.2436 -36.0190 61.8405 -39.1731 c 60.5424 -42.1065 58.6005 -44.2923 56.0151 -45.7303 c 52.6841 -47.6123 47.2124 -48.4832 39.5999 -48.3432 c 39.6183 -47.3433 l 40.6181 -47.3602 l 40.5506 -51.3596 l 39.5508 -51.3428 l 39.5508 -50.3428 l 43.5508 -50.3428 l 43.5508 -51.3428 l 42.5508 -51.3428 l 42.5508 -13.8428 l 43.5508 -13.8428 l 44.5507 -13.8520 l h f 100.000 0.00000 translate newpath 2.43540 -3.30893 m 6.56395 -3.45842 9.54075 -4.01461 11.3658 -4.97752 c 12.9491 -5.80884 14.1375 -7.01708 14.9309 -8.60225 c 15.7105 -10.1619 16.1003 -12.0796 16.1006 -14.3555 c 16.1006 -86.9385 l 16.1005 -89.2100 15.7367 -91.1182 15.0092 -92.6630 c 14.2663 -94.2381 13.1516 -95.4304 11.6649 -96.2399 c 9.94104 -97.2031 6.86788 -97.8091 2.44536 -98.0578 c 2.41699 -97.5586 l 2.91699 -97.5586 l 2.91699 -101.367 l 2.41699 -101.367 l 2.41699 -100.867 l 48.7793 -100.867 l 57.6586 -100.867 65.0258 -99.8511 70.8808 -97.8187 c 76.3561 -95.9221 80.4551 -93.2538 83.1775 -89.8139 c 85.8896 -86.3893 87.2452 -82.1838 87.2441 -77.1973 c 87.2473 -71.1541 85.0512 -66.3645 80.6556 -62.8284 c 76.2046 -59.2431 71.3836 -56.9700 66.1927 -56.0091 c 65.7842 -55.9331 l 65.7842 -55.5176 l 65.7842 -54.1260 l 65.7835 -53.7138 l 66.1889 -53.6351 l 71.6954 -52.5726 76.4735 -50.7878 80.5232 -48.2808 c 88.3783 -43.4013 92.3032 -36.6095 92.2979 -27.9053 c 92.3024 -19.7796 88.5431 -13.1918 81.0198 -8.14193 c 73.4383 -3.04668 63.3263 -.499369 50.6836 -.500000 c 2.41699 -.500000 l 2.41699 -0.00000 l 2.91699 0.00000 l 2.91699 -3.80859 l 2.41699 -3.80859 l 2.43540 -3.30893 l h 1.91699 -3.80859 m 1.91699 0.00000 l 1.91699 .500000 l 2.41699 .500000 l 50.6836 .500000 l 63.5292 .499369 73.8273 -2.10469 81.5779 -7.31217 c 89.3866 -12.5651 93.2933 -19.4294 93.2979 -27.9053 c 93.2928 -36.9740 89.2103 -44.0491 81.0504 -49.1305 c 76.8960 -51.7021 72.0057 -53.5309 66.3795 -54.6168 c 66.2842 -54.1260 l 66.7842 -54.1260 l 66.7842 -55.5176 l 66.2842 -55.5176 l 66.3757 -55.0260 l 71.7316 -56.0183 76.7007 -58.3594 81.2829 -62.0496 c 85.9205 -65.7889 88.2409 -70.8381 88.2441 -77.1973 c 88.2433 -82.4153 86.8156 -86.8279 83.9611 -90.4351 c 81.1177 -94.0262 76.8669 -96.8022 71.2090 -98.7633 c 65.2477 -100.832 57.7711 -101.867 48.7793 -101.867 c 2.41699 -101.867 l 1.91699 -101.867 l 1.91699 -101.367 l 1.91699 -97.5586 l 1.91627 -97.0862 l 2.38863 -97.0594 l 6.65802 -96.8197 9.58914 -96.2546 11.1820 -95.3642 c 12.4816 -94.6584 13.4558 -93.6159 14.1046 -92.2369 c 14.7688 -90.8271 15.1008 -89.0609 15.1006 -86.9385 c 15.1006 -14.3555 l 15.1008 -12.2368 14.7461 -10.4680 14.0363 -9.04912 c 13.3401 -7.65539 12.2948 -6.59324 10.9005 -5.86268 c 9.20947 -4.96988 6.37550 -4.45174 2.39859 -4.30826 c 1.91699 -4.29052 l 1.91699 -3.80859 l h 39.5508 -55.3838 m 44.2295 -55.3838 48.1448 -55.7670 51.2965 -56.5333 c 54.4956 -57.3114 56.9210 -58.4881 58.5729 -60.0632 c 61.8476 -63.1897 63.4861 -68.6813 63.4883 -76.5381 c 63.4880 -82.3339 62.4310 -87.2215 60.3172 -91.2011 c 59.2286 -93.2491 57.6379 -94.7855 55.5453 -95.8103 c 53.4803 -96.8207 50.9320 -97.3259 47.9004 -97.3262 c 44.6525 -97.3251 42.3710 -96.7599 41.0558 -95.6306 c 39.7219 -94.4800 39.0536 -92.4616 39.0508 -89.5752 c 39.0508 -55.8838 l 39.0508 -55.3838 l 39.5508 -55.3838 l h 40.0508 -55.8838 m 40.0508 -89.5752 l 40.0482 -92.1581 40.6006 -93.9238 41.7078 -94.8724 c 42.8346 -95.8429 44.8988 -96.3275 47.9004 -96.3262 c 50.7775 -96.3263 53.1792 -95.8550 55.1053 -94.9123 c 57.0048 -93.9837 58.4476 -92.5904 59.4338 -90.7325 c 61.4704 -86.8996 62.4886 -82.1681 62.4883 -76.5381 c 62.4902 -68.9647 60.9549 -63.7141 57.8822 -60.7864 c 56.3598 -59.3339 54.0855 -58.2401 51.0595 -57.5048 c 47.9856 -56.7574 44.1494 -56.3838 39.5508 -56.3838 c 39.5508 -55.8838 l 40.0508 -55.8838 l h 39.0509 -13.8336 m 39.1017 -11.1080 39.5160 -9.09670 40.2938 -7.79959 c 40.9537 -6.63920 41.9184 -5.76770 43.1878 -5.18506 c 44.4258 -4.61785 45.9478 -4.33416 47.7539 -4.33398 c 55.0000 -4.33758 60.1022 -6.33388 63.0608 -10.3229 c 65.9816 -14.2686 67.4425 -19.8609 67.4434 -27.0996 c 67.4433 -32.4924 66.6416 -36.9914 65.0381 -40.5964 c 63.4178 -44.2370 60.9848 -46.9637 57.7389 -48.7764 c 53.8526 -50.9682 47.7871 -51.9903 39.5423 -51.8427 c 39.0508 -51.8352 l 39.0508 -51.3428 l 39.0508 -13.8428 l h 40.0508 -13.8428 m 40.0508 -51.3428 l 39.5508 -51.3428 l 39.5592 -50.8428 l 47.6230 -50.9882 53.5197 -50.0087 57.2493 -47.9044 c 60.3040 -46.2003 62.5957 -43.6288 64.1245 -40.1897 c 65.6706 -36.7142 66.4435 -32.3508 66.4434 -27.0996 c 66.4440 -20.0800 65.0485 -14.6859 62.2566 -10.9174 c 59.5017 -7.19126 54.6675 -5.33013 47.7539 -5.33398 c 46.0932 -5.33381 44.7099 -5.58722 43.6042 -6.09423 c 42.5294 -6.58618 41.7138 -7.32269 41.1573 -8.30376 c 40.4664 -9.45468 40.0975 -11.3041 40.0507 -13.8520 c h .416992 -5.80859 m 4.41699 -5.80859 l 4.41699 -1.80859 l .416992 -1.80859 l h 9.13281 -7.41992 m 13.1328 -7.41992 l 13.1328 -3.41992 l 9.13281 -3.41992 l h 6.49609 -6.02832 m 10.4961 -6.02832 l 10.4961 -2.02832 l 6.49609 -2.02832 l h 13.6006 -16.3555 m 17.6006 -16.3555 l 17.6006 -12.3555 l 13.6006 -12.3555 l h 13.6006 -9.76367 m 17.6006 -9.76367 l 17.6006 -5.76367 l 13.6006 -5.76367 l h 13.6006 -88.9385 m 17.6006 -88.9385 l 17.6006 -84.9385 l 13.6006 -84.9385 l h 9.42578 -97.8008 m 13.4258 -97.8008 l 13.4258 -93.8008 l 9.42578 -93.8008 l h 13.6006 -95.5303 m 17.6006 -95.5303 l 17.6006 -91.5303 l 13.6006 -91.5303 l h .416992 -99.5586 m 4.41699 -99.5586 l 4.41699 -95.5586 l .416992 -95.5586 l h 6.93555 -99.1924 m 10.9355 -99.1924 l 10.9355 -95.1924 l 6.93555 -95.1924 l h .416992 -103.367 m 4.41699 -103.367 l 4.41699 -99.3672 l .416992 -99.3672 l h 46.7793 -103.367 m 50.7793 -103.367 l 50.7793 -99.3672 l 46.7793 -99.3672 l h 69.0449 -100.291 m 73.0449 -100.291 l 73.0449 -96.2910 l 69.0449 -96.2910 l h 60.1826 -103.367 m 64.1826 -103.367 l 64.1826 -99.3672 l 60.1826 -99.3672 l h 85.7441 -79.1973 m 89.7441 -79.1973 l 89.7441 -75.1973 l 85.7441 -75.1973 l h 85.7441 -94.5049 m 89.7441 -94.5049 l 89.7441 -90.5049 l 85.7441 -90.5049 l h 78.9692 -64.4390 m 82.9692 -64.4390 l 82.9692 -60.4390 l 78.9692 -60.4390 l h 85.7441 -69.8955 m 89.7441 -69.8955 l 89.7441 -65.8955 l 85.7441 -65.8955 l h 64.2842 -57.5176 m 68.2842 -57.5176 l 68.2842 -53.5176 l 64.2842 -53.5176 l h 72.1943 -58.9824 m 76.1943 -58.9824 l 76.1943 -54.9824 l 72.1943 -54.9824 l h 64.2842 -56.1260 m 68.2842 -56.1260 l 68.2842 -52.1260 l 64.2842 -52.1260 l h 78.7861 -50.7061 m 82.7861 -50.7061 l 82.7861 -46.7061 l 78.7861 -46.7061 l h 72.6338 -54.5146 m 76.6338 -54.5146 l 76.6338 -50.5146 l 72.6338 -50.5146 l h 90.7979 -29.9053 m 94.7979 -29.9053 l 94.7979 -25.9053 l 90.7979 -25.9053 l h 90.7979 -43.2354 m 94.7979 -43.2354 l 94.7979 -39.2354 l 90.7979 -39.2354 l h 79.2988 -9.72705 m 83.2988 -9.72705 l 83.2988 -5.72705 l 79.2988 -5.72705 l h 90.7979 -17.4541 m 94.7979 -17.4541 l 94.7979 -13.4541 l 90.7979 -13.4541 l h 48.6836 -2.00000 m 52.6836 -2.00000 l 52.6836 2.00000 l 48.6836 2.00000 l h 67.7998 -2.00000 m 71.7998 -2.00000 l 71.7998 2.00000 l 67.7998 2.00000 l h .416992 -2.00000 m 4.41699 -2.00000 l 4.41699 2.00000 l .416992 2.00000 l h 37.5508 -57.8838 m 41.5508 -57.8838 l 41.5508 -53.8838 l 37.5508 -53.8838 l h 56.2275 -62.4248 m 60.2275 -62.4248 l 60.2275 -58.4248 l 56.2275 -58.4248 l h 51.4668 -57.8838 m 55.4668 -57.8838 l 55.4668 -53.8838 l 51.4668 -53.8838 l h 60.9883 -78.5381 m 64.9883 -78.5381 l 64.9883 -74.5381 l 60.9883 -74.5381 l h 60.9883 -66.9658 m 64.9883 -66.9658 l 64.9883 -62.9658 l 60.9883 -62.9658 l h 57.8755 -92.9668 m 61.8755 -92.9668 l 61.8755 -88.9668 l 57.8755 -88.9668 l h 60.9883 -87.1074 m 64.9883 -87.1074 l 64.9883 -83.1074 l 60.9883 -83.1074 l h 45.9004 -98.8262 m 49.9004 -98.8262 l 49.9004 -94.8262 l 45.9004 -94.8262 l h 54.7627 -98.8262 m 58.7627 -98.8262 l 58.7627 -94.8262 l 54.7627 -94.8262 l h 39.3818 -97.2515 m 43.3818 -97.2515 l 43.3818 -93.2515 l 39.3818 -93.2515 l h 41.2129 -98.8262 m 45.2129 -98.8262 l 45.2129 -94.8262 l 41.2129 -94.8262 l h 37.5508 -91.5752 m 41.5508 -91.5752 l 41.5508 -87.5752 l 37.5508 -87.5752 l h 37.5508 -95.6768 m 41.5508 -95.6768 l 41.5508 -91.6768 l 37.5508 -91.6768 l h 37.5508 -57.8838 m 41.5508 -57.8838 l 41.5508 -53.8838 l 37.5508 -53.8838 l h 37.5508 -15.8428 m 41.5508 -15.8428 l 41.5508 -11.8428 l 37.5508 -11.8428 l h 38.7227 -10.0566 m 42.7227 -10.0566 l 42.7227 -6.05664 l 38.7227 -6.05664 l h 37.6240 -11.8877 m 41.6240 -11.8877 l 41.6240 -7.88770 l 37.6240 -7.88770 l h 45.7539 -6.83398 m 49.7539 -6.83398 l 49.7539 -2.83398 l 45.7539 -2.83398 l h 40.5537 -6.83398 m 44.5537 -6.83398 l 44.5537 -2.83398 l 40.5537 -2.83398 l h 60.6587 -12.6201 m 64.6587 -12.6201 l 64.6587 -8.62012 l 60.6587 -8.62012 l h 56.3740 -6.83398 m 60.3740 -6.83398 l 60.3740 -2.83398 l 56.3740 -2.83398 l h 64.9434 -29.0996 m 68.9434 -29.0996 l 68.9434 -25.0996 l 64.9434 -25.0996 l h 64.9434 -18.4062 m 68.9434 -18.4062 l 68.9434 -14.4062 l 64.9434 -14.4062 l h 55.4951 -50.3398 m 59.4951 -50.3398 l 59.4951 -46.3398 l 55.4951 -46.3398 l h 64.9434 -45.0664 m 68.9434 -45.0664 l 68.9434 -41.0664 l 64.9434 -41.0664 l h 37.5508 -53.3428 m 41.5508 -53.3428 l 41.5508 -49.3428 l 37.5508 -49.3428 l h 49.7822 -53.5625 m 53.7822 -53.5625 l 53.7822 -49.5625 l 49.7822 -49.5625 l h 37.5508 -15.8428 m 41.5508 -15.8428 l 41.5508 -11.8428 l 37.5508 -11.8428 l h f 100.000 0.00000 translate newpath 2.52464 -2.10680 m 5.56092 -1.92593 7.86291 -2.27326 9.43064 -3.14880 c 10.2979 -3.63516 10.9466 -4.27779 11.3766 -5.07671 c 11.7970 -5.86098 11.9933 -6.77504 11.9653 -7.81888 c 10.9657 -7.79127 l 10.7496 -6.81490 l 12.0801 -6.52034 13.1951 -6.39060 14.0946 -6.42567 c 15.1464 -6.46862 15.9521 -6.73908 16.5116 -7.23703 c 17.1307 -7.80078 17.4026 -8.57078 17.3273 -9.54701 c 17.2614 -10.3245 16.9541 -11.2495 16.4055 -12.3220 c 15.5150 -11.8669 l 16.5150 -11.8684 l 16.4111 -87.8611 l 16.4111 -88.0142 l 16.3644 -88.1616 l 15.5122 -90.8517 15.1977 -93.9541 15.4211 -97.4685 c 15.4636 -98.1272 l 14.8727 -98.4246 l 12.3756 -99.6796 7.35237 -100.669 -.197076 -101.393 c -.292040 -100.398 l .599106 -99.9440 l 2.32063 -103.330 l 1.42949 -103.783 l 1.34522 -102.787 l 50.1495 -98.6427 l 50.2107 -98.6375 l 50.2721 -98.6399 l 58.2493 -98.9428 65.7414 -99.2990 72.7484 -99.7084 c 72.6902 -100.707 l 72.0883 -99.9081 l 80.4883 -93.5859 84.4762 -85.1887 84.0520 -74.7164 c 84.0389 -74.3864 l 84.2249 -74.1134 l 85.5650 -72.1577 85.9004 -70.1043 85.2310 -67.9531 c 84.5293 -65.6728 82.7339 -63.2482 79.8449 -60.6795 c 80.5096 -59.9324 l 80.2562 -60.8997 l 74.7136 -59.4426 70.3607 -58.6093 67.1975 -58.3998 c 66.6622 -58.3645 l 66.3956 -57.8989 l 65.0275 -55.5120 l 64.2521 -54.1625 l 65.8034 -54.0193 l 72.3783 -53.4070 77.4636 -52.1554 81.0593 -50.2645 c 81.5239 -51.1500 l 80.8168 -50.4429 l 86.7769 -44.4808 89.8267 -36.3610 89.9664 -26.0836 c 89.9681 -25.9572 l 90.0013 -25.8352 l 90.7508 -23.0890 90.4530 -20.1515 89.1077 -17.0225 c 87.7227 -13.7954 85.2352 -10.3692 81.6453 -6.74373 c 82.3557 -6.03988 l 81.7501 -6.83572 l 75.3166 -1.93540 65.6357 .635590 52.7076 .877252 c 52.7260 1.87708 l 52.8103 .880640 l .0803710 -3.52576 l -.00389791 -2.52931 l .213706 -1.55328 l 2.80203 -2.12898 l 2.58443 -3.10501 l 2.52464 -2.10680 l h 2.36683 -4.08105 m -.221502 -3.50535 l -6.59906 -2.08350 l -.0881668 -1.53287 l 52.6418 2.87353 l 52.6922 2.87787 l 52.7444 2.87691 l 66.1073 2.62398 76.1795 -.0830075 82.9612 -5.24404 c 83.0163 -5.28583 l 83.0660 -5.33604 l 86.8333 -9.14104 89.4595 -12.7729 90.9447 -16.2317 c 92.4697 -19.7886 92.7985 -23.1646 91.9313 -26.3597 c 90.9663 -26.0974 l 91.9662 -26.1113 l 91.8123 -36.9272 88.5672 -45.5092 82.2310 -51.8571 c 82.1240 -51.9644 l 81.9885 -52.0355 l 78.1589 -54.0489 72.8251 -55.3740 65.9873 -56.0108 c 65.8953 -55.0151 l 66.7632 -54.5182 l 68.1313 -56.9051 l 67.2635 -57.4020 l 67.3294 -56.4042 l 70.6195 -56.6221 75.0973 -57.4757 80.7630 -58.9650 c 80.9945 -59.0252 l 81.1743 -59.1853 l 84.3401 -62.0023 86.3294 -64.7285 87.1422 -67.3638 c 87.9868 -70.1262 87.5653 -72.7516 85.8776 -75.2398 c 85.0513 -74.6766 l 86.0505 -74.6367 l 86.4852 -85.7985 82.2324 -94.7547 73.2920 -101.505 c 72.9995 -101.726 l 72.6319 -101.705 l 65.6382 -101.296 58.1593 -100.941 50.1954 -100.638 c 50.2337 -99.6392 l 50.3180 -100.636 l 1.51375 -104.780 l .843522 -104.836 l .538340 -104.237 l -1.18319 -100.851 l -1.85239 -99.5420 l -.387003 -99.4022 l 6.91332 -98.7023 11.7001 -97.7810 13.9735 -96.6382 c 14.4231 -97.5314 l 13.4251 -97.5942 l 13.1862 -93.8310 13.5305 -90.4854 14.4578 -87.5575 c 15.4111 -87.8596 l 14.4111 -87.8580 l 14.5150 -11.8654 l 14.5150 -11.6262 l 14.6246 -11.4118 l 15.0542 -10.5727 15.2908 -9.89493 15.3344 -9.37847 c 15.3686 -9.05872 15.3163 -8.84161 15.1776 -8.72715 c 14.9779 -8.54542 14.5913 -8.44444 14.0179 -8.42420 c 13.2900 -8.39575 12.3447 -8.51023 11.1818 -8.76764 c 9.93073 -9.04456 l 9.96611 -7.76366 l 9.98550 -7.07410 9.86820 -6.49361 9.61421 -6.02221 c 9.36959 -5.56441 8.98247 -5.18817 8.45286 -4.89349 c 7.22682 -4.20694 5.29060 -3.94352 2.64422 -4.10323 c 2.50397 -4.11163 l 2.36683 -4.08105 l h 41.8741 -55.4524 m 47.6876 -55.2739 53.8768 -55.7054 60.4416 -56.7471 c 60.8174 -56.8063 l 61.0588 -57.1005 l 64.0030 -60.6928 65.4106 -67.1578 65.2815 -76.4955 c 65.2804 -76.5754 l 65.2667 -76.6541 l 64.4525 -81.2972 62.2966 -86.2118 58.7991 -91.3979 c 57.9702 -90.8385 l 58.9665 -90.9243 l 58.8671 -92.0741 58.5729 -93.0409 58.0838 -93.8247 c 57.5664 -94.6502 56.8490 -95.2570 55.9315 -95.6452 c 54.2691 -96.3433 51.9633 -96.2820 49.0140 -95.4613 c 49.2837 -94.4983 l 49.2515 -95.4978 l 47.0923 -95.4272 45.4039 -95.6306 44.1863 -96.1082 c 43.1222 -96.5194 42.4457 -97.1470 42.1568 -97.9909 c 41.5247 -99.8100 l 40.4004 -98.2445 l 38.5383 -95.6476 37.4727 -92.2050 37.2036 -87.9167 c 37.2012 -87.8800 l 37.2017 -87.8416 l 37.6186 -55.7940 l 37.6333 -54.5945 l 38.8106 -54.8249 l 42.0968 -55.4705 l 41.9047 -56.4519 l 41.8741 -55.4524 l h 41.7127 -57.4333 m 38.4265 -56.7877 l 38.6185 -55.8063 l 39.6185 -55.8186 l 39.2016 -87.8662 l 38.2016 -87.8539 l 39.1997 -87.7910 l 39.4429 -91.6974 40.3847 -94.7930 42.0249 -97.0779 c 41.2127 -97.6612 l 40.2686 -97.3316 l 40.7685 -95.9173 41.8316 -94.8886 43.4579 -94.2455 c 44.9306 -93.6688 46.8832 -93.4199 49.3159 -93.4988 c 49.4361 -93.5025 l 49.5534 -93.5354 l 52.0546 -94.2350 53.9217 -94.3239 55.1548 -93.8021 c 55.6850 -93.5803 56.0960 -93.2346 56.3876 -92.7651 c 56.7076 -92.2538 56.9030 -91.5830 56.9739 -90.7527 c 56.9957 -90.4949 l 57.1413 -90.2791 l 60.4803 -85.3290 62.5321 -80.6724 63.2966 -76.3092 c 64.2816 -76.4817 l 63.2817 -76.4679 l 63.4087 -67.6160 62.1524 -61.5831 59.5128 -58.3692 c 60.2858 -57.7348 l 60.1300 -58.7226 l 53.6887 -57.7005 47.6239 -57.2767 41.9354 -57.4514 c 41.8230 -57.4549 l 41.7127 -57.4333 l h 41.6649 -12.6832 m 41.1547 -12.0615 39.8790 -11.3618 37.8379 -10.5841 c 36.0380 -9.89924 l 37.6356 -8.82108 l 41.1771 -6.43602 44.3694 -5.53960 47.2126 -6.13184 c 47.0070 -7.11047 l 46.7999 -6.13215 l 54.3246 -4.54534 60.5758 -6.09893 65.5536 -10.7929 c 65.6523 -10.8862 l 65.7225 -11.0025 l 66.0020 -11.4665 66.2143 -12.2079 66.3592 -13.2265 c 66.4900 -14.1473 66.5767 -15.3372 66.6193 -16.7960 c 66.7030 -19.6646 66.6175 -23.6066 66.3629 -28.6219 c 65.3641 -28.5713 l 66.3371 -28.3402 l 67.5038 -33.2657 67.1868 -37.3745 65.3860 -40.6666 c 63.5764 -43.9617 60.3117 -46.3791 55.5919 -47.9190 c 55.2825 -46.9680 l 56.0517 -47.6071 l 52.6118 -51.7413 47.4995 -54.0678 40.7147 -54.5867 c 39.6078 -54.6718 l 39.6384 -53.5621 l 40.8382 -11.0391 l 40.9266 -7.65180 l 42.6916 -10.5460 l 43.2907 -11.5270 l 41.6649 -12.6832 l h 41.5832 -12.5683 m 40.9841 -11.5873 l 41.8379 -11.0667 l 42.8375 -11.0943 l 41.6376 -53.6173 l 40.6380 -53.5897 l 40.5614 -52.5926 l 46.7878 -52.1249 51.4385 -50.0370 54.5134 -46.3289 c 54.6975 -46.1068 l 54.9732 -46.0171 l 59.1951 -44.6461 62.0815 -42.5421 63.6324 -39.7049 c 65.1923 -36.8636 65.4453 -33.2294 64.3912 -28.8023 c 64.3581 -28.6641 l 64.3654 -28.5207 l 64.6174 -23.5585 64.7023 -19.6697 64.6201 -16.8543 c 64.5797 -15.4702 64.4993 -14.3547 64.3791 -13.5078 c 64.2729 -12.7579 64.1499 -12.2673 64.0102 -12.0360 c 64.8663 -11.5193 l 64.1790 -12.2456 l 59.7147 -8.01348 54.0597 -6.62787 47.2141 -8.08879 c 47.0086 -8.13263 l 46.8014 -8.08910 l 44.5087 -7.60401 41.8263 -8.40061 38.7544 -10.4789 c 38.1950 -9.64998 l 38.5520 -8.71589 l 40.9216 -9.62052 42.4739 -10.5192 43.2090 -11.4121 c 42.4369 -12.0476 l 41.5832 -12.5683 l h f 100.000 0.00000 translate Q end end restore showpage %%Trailer %%EOF