<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
  <meta name="verify-v1" content="g222frIIxcQTrvDR3NBRUSKP3AnMNoqxOkIniCEkV7U="/>
  <title>ImageMagick: Resources</title/>
  <meta http-equiv="Content-Language" content="en-US"/>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <meta http-equiv="Reply-to" content="magick-users@imagemagick.org"/>
  <meta name="Application-name" content="ImageMagick"/>
  <meta name="Description" content="ImageMagick® is a software suite to create, edit, and compose bitmap images. It can read, convert and write images in a variety of formats (about 100) including GIF, JPEG, JPEG-2000, PNG, PDF, PhotoCD, TIFF, and DPX. Use ImageMagick to translate, flip, mirror, rotate, scale, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.  ImageMagick is free software delivered as a ready-to-run binary distribution or as source code that you can freely use, copy, modify, and distribute. Its license is compatible with the GPL. It runs on all major operating systems.  The functionality of ImageMagick is typically utilized from the command line or you can use the features from programs written in your favorite programming language. Choose from these interfaces: MagickCore (C), MagickWand (C), ChMagick (Ch), Magick++ (C++), JMagick (Java), L-Magick (Lisp), PascalMagick (Pascal), PerlMagick (Perl), MagickWand for PHP (PHP), PythonMagick (Python), RMagick (Ruby), or TclMagick (Tcl/TK). With a language interface, use ImageMagick to modify or create images automagically and dynamically."/>
  <meta name="Application-url" content="http://www.imagemagick.org"/>
  <meta name="Generator" content="PHP"/>
  <meta name="Keywords" content="resources, ImageMagick, ImageMagic, MagickCore, MagickWand, PerlMagick, Magick++, RMagick, PythonMagick, JMagick, TclMagick, Image, Magick, Magic, Wand, ImageMagickObject, Swiss, Army, Knife, Image, Processing"/>
  <meta name="Rating" content="GENERAL"/>
  <meta name="Robots" content="INDEX, FOLLOW"/>
  <meta name="Generator" content="ImageMagick Studio LLC"/>
  <meta name="Author" content="ImageMagick Studio LLC"/>
  <meta name="Revisit-after" content="2 DAYS"/>
  <meta name="Resource-type" content="document"/>
  <meta name="Copyright" content="Copyright (c) 1999-2010 ImageMagick Studio LLC"/>
  <meta name="Distribution" content="Global"/>
  <link rel="icon" href="../images/wand.png"  sizes="32x32"/>
  <link rel="shortcut icon" href="../images/wand.ico"  type="images/x-icon"/>
  <link rel="meta" type="application/rdf+xml" title="ICI" href="http://imagemagick.org/ici.rdf"/>
  <style type="text/css" media="all">
    @import url("../www/magick.css");
  </style>
</head>

<body id="www-imagemagick-org">
<div class="titlebar">
<a href="../index.html">
  <img src="../images/script.png" alt="[ImageMagick]"
  style="width: 350px; height: 60px; margin: 28px auto; float: left;" /></a>
<a href="http://www.networkredux.com">
  <img src="../images/networkredux.png" alt="[sponsor]"
  style="margin: 45px auto; border: 0px; float: left;" /></a>
<a href="http://www.imagemagick.org/discourse-server/">
  <img src="../images/logo.jpg" alt=""
  style="width: 114px; height: 118px; border: 0px; float: right;" /></a>
<a href="../index.html">
  <img src="../images/sprite.jpg" alt=""
  style="width: 114px; height: 118px; border: 0px; float: right;" /></a>
</div>

<div class="westbar">

<div class="menu">
  <a title="About ImageMagick" href="../index.html">About ImageMagick</a>
</div>
<div class="sep"></div>
<div class="menu">
  <a title="Binary Releases" href="../www/binary-releases.html">Binary Releases</a>
</div>
<div class="sub">
    <a title="Binary Release: Unix" href="../www/binary-releases.html#unix">Unix</a>
</div>
<div class="sub">
    <a title="Binary Release: MacOS X" href="../www/binary-releases.html#macosx">Mac OS X</a>
</div>
<div class="sub">
    <a title="Binary Release: Windows" href="../www/binary-releases.html#windows">Windows</a>
</div>
<div class="sep"></div>
<div class="menu">
  <a title="Command-line Tools" href="../www/command-line-tools.html">Command-line Tools</a>
</div>
<div class="sub">
    <a title="Command-line Tools: Processing" href="../www/command-line-processing.html">Processing</a>
</div>
<div class="sub">
    <a title="Command-line Tools: Options" href="../www/command-line-options.html">Options</a>
</div>
<div class="sub">
    <a title="Command-line Tools: Usage" href="http://www.imagemagick.org/Usage/">Usage</a>
</div>
<div class="menu">
  <a title="Program Interfaces" href="../www/api.html">Program Interfaces</a>
</div>
<div class="sub">
    <a title="Program Interface: MagickWand" href="../www/magick-wand.html">MagickWand</a>
</div>
<div class="sub">
    <a title="Program Interface: MagickCore" href="../www/magick-core.html">MagickCore</a>
</div>
<div class="sub">
    <a title="Program Interface: PerlMagick" href="../www/perl-magick.html">PerlMagick</a>
</div>
<div class="sub">
    <a title="Program Interface: Magick++" href="../Magick++/">Magick++</a>
</div>
<div class="sep"></div>
<div  class="menu">
   <a title="Install from Source" href="../www/install-source.html">Install from Source</a>
</div>
<div class="sub">
    <a title="Install from Source: Unix" href="../www/install-source.html#unix">Unix</a>
</div>
<div class="sub">
    <a title="Install from Source: Windows" href="../www/install-source.html#windows">Windows</a>
 </div>
<div class="menu">
  <a title="Resources" href="../www/resources.html">Resources</a>
</div>
<div class="menu">
  <a title="Architecture" href="../www/architecture.html">Architecture</a>
</div>
<div class="menu">
  <a title="Download" href="../www/download.html">Download</a>
</div>
<div class="sep"></div>
<div class="menu">
  <a title="Search" href="http://www.imagemagick.org/script/search.php">Search</a>
</div>
<div class="sep"></div>
<div class="menu">
  <a title="Site Map"href="../www/sitemap.html">Site Map</a>
</div>
<div  class="sub">
    <a title="Site Map: Links"href="../www/links.html">Links</a>
</div>
<div class="sep"></div>
<div  class="menu">
  <a title="Sponsors" href="../www/sponsors.html">Sponsors:</a>

<div class="sponsbox">
<div  class="sponsor">
   <a title="Sponsor: Online-Magazin" href="http://www.unkostenbeitrag.de/">Online-Magazin</a><!-- 20101101000200 -->
</div>
<div  class="sponsor">
  <a title="Sponsor: Druckerei" href="http://print24.com/de/">Druckerei</a><!-- 201110010720 -->
</div>
<div  class="sponsor">
  <a title="Sponsor: Image Converter" href="http://www.batchphoto.com">Image Converter</a><!-- 201103010900 Bits Coffee-->
</div>
<div  class="sponsor">
  <a title="Sponsor: Flyer drucken" href="http://www.online-druck.biz">Flyer drucken</a><!-- 201109010900 Floeter-->
</div>
<div  class="sponsor">
  <a title="Sponsor: Webdesign Agentur" href="http://www.ventzke-partner.de">Webdesign Agentur</a><!-- 201101010480 invendio.de-->
</div>
<div  class="sponsor">
  <a title="Sponsor: LVM Versicherung" href="http://www.neu-reich.de">LVM Versicherung</a><!-- 201101010480 -->
</div>
<div  class="sponsor">
  <a title="Sponsor: Diamonds are a Girls Best Friend" href="http://www.schmuck.org">Diamonds are a Girls Best Friend</a><!-- 201101010600 Peterssen-->
</div>
<div  class="sponsor">
   <a title="Sponsor: Druckerei Online" href="http://www.allesdruck.de">Druckerei Online</a><!-- 201012011200 allesdruck.de-->
</div>
</div>
</div>
</div>

<div class="eastbar">
  <script type="text/javascript">
  <!--
    google_ad_client = "pub-3129977114552745";
    google_ad_slot = "0574824969";
    google_ad_width = 160;
    google_ad_height = 600;
  //-->
  </script>
  <script type="text/javascript"
    src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
  </script>
</div>

<div class="main">

<p class="navigation-index">[<a href="#configure">Configuration Files</a> &bull; <a href="#modules">Modules</a> &bull; <a href="#fonts">Fonts</a> &bull; <a href="#environment">Environment Variables</a>]</p>

<div class="doc-section">
<p>ImageMagick depends on a number of external resources including configuration files, loadable modules, fonts, and environment variables.</p>
</div>

<h2><a name="configure"></a>Configuration Files</h2>
<div class="doc-section">

<p>ImageMagick depends on a number of external configuration files detailed here:</p>

<dl class="doc">
<dt class="doc"><a href="../www/source/coder.xml">coder.xml</a></dt>
  <dd>Associate an image format with the specified coder module.

  <p>ImageMagick has a number of coder modules to support the reading and/or writing of an image format (e.g. JPEG).  Some coder modules support more than one associated image format and the mapping between an associated format and its respective coder module is defined in this configuration file.  For example, the PNG coder module not only supports the PNG image format, but the JNG and MNG formats as well.</p>
  </dd>

<dt class="doc"><a href="../www/source/colors.xml">colors.xml</a></dt>
  <dd>Associate a color name with its red, green, blue, and alpha intensities.

  <p>A number of command line options require a <a href="../www/color.html">color parameter</a>.  It is often convenient to refer to a color by name (e.g. white) rather than by hex value (e.g. #fff).  This file maps a color name to its equivalent red, green, blue, and alpha intensities (e.g. for white, red = 255, green = 255, blue = 255, and alpha = 0).</p>
  </dd>

<dt class="doc"><a name="configure.xml"/><a href="../www/source/configure.xml">configure.xml</a></dt>
  <dd>Set ImageMagick build parameters and system-wide environment variables (e.g. MAGICK_TEMPORARY_PATH).
  <p>
  As ImageMagick is built, a number of build parameters are saved to this configuration file.  They include the version, release date, dependent delegate libraries, and quantum depth among others.</p>
  </dd>

<dt class="doc"><a href="../www/source/delegates.xml">delegates.xml</a></dt>
  <dd>Associate delegate programs with certain image formats.

  <p>ImageMagick relies on a number of delegate programs to support certain image formats such as <a href="http://ufraw.sourceforge.net/">ufraw-batch</a> to read raw camera formats or <a href="http://www.cs.wisc.edu/~ghost/">Ghostscript</a> to read Postscript images.  Use this configuration file to map an input or output format to an external delegate program.</p>
  </dd>

<dt class="doc"><a href="../www/source/english.xml">english.xml</a></dt>
  <dd>Associate message tags with English translations.</dd><br />

<dt class="doc"><a href="../www/source/francais.xml">francais.xml</a></dt>
  <dd>Associate message tags with French translations.  </dd><br />

<dt class="doc"><a href="../www/source/locale.xml">locale.xml</a></dt>
  <dd>Associate message tags with a  translation for your locale.

  <p>ImageMagick has a number of informational, warning, and error messages that are represented as tags.  Tags are short descriptions of a message such as
  <em>FileNotFound</em> or <em>MemoryAllocationFailed</em>.  This configuration file lists locales that have a translation for each tag recognized by ImageMagick.  Currently only English and French translations are available in the <kbd>english.xml</kbd> and <kbd>francais.xml</kbd> configuration files.</p>
  </dd>

<dt class="doc"><a href="../www/source/log.xml">log.xml</a></dt>
  <dd>Configure logging parameters.
  <p>ImageMagick is capable of spewing copious amounts of informational or debugging statements.  Use this file to configure how the information will appear in a log message and where you want the logging messages posted.</p>
  </dd>

<dt class="doc"><a href="../www/source/magic.xml">magic.xml</a></dt>
  <dd>Associate an image format with a unique identifier.
  <p>Many image formats have identifiers that uniquely identify a particular image format.  For example, the GIF image format always begins with <kbd>GIF8</kbd> as the first 4 characters of the image.  ImageMagick uses this information to quickly determine the type of image it is dealing with when it reads an image.</p>
  </dd>

<dt class="doc"><a href="../www/source/mime.xml">mime.xml</a></dt>
  <dd>Associate an internet media type with a unique identifier.
  <p>Many files and data streams have identifiers that uniquely identify a
particular internet media type. For example, files in the "Corel Draw
drawing" format (mime type="application/vnd.corel-draw") are associated with
the filename pattern <kbd>*.cdr</kbd>, and also have an initial string of the
characters "CDRXvrsn". ImageMagick uses combinations of this information,
when available, to attempt to quickly determine the internet media type of a
file or data stream.</p>
</dd>

<dt class="doc"><a href="../www/source/policy.xml">policy.xml</a></dt>
  <dd>Configure ImageMagick policies.
  <p>By default any coder, delegate, filter, or file path is permitted.  Use a policy to deny access to, for example, the MPEG video delegate, or permit reading images from a file system but deny writing to that same file system.  Or use the resource policy to set resource limits.  Policies are useful for multi-user servers that want to limit the overall impact ImageMagick has on the system.  For example, to limit the maximum image size in memory to 100MB:</p>

<pre class="text">
  &lt;policy domain="resource" name="area" value="100MB"/>
</pre>

<p>Any image larger than this area limit is cached to disk rather than memory.</p>

<p>To limit the elapsed time of any ImageMagick command to 5 minutes, use this policy:</p>

<pre class="text">
  &lt;policy domain="resource" name="time" value="300"/>
</pre>
  </dd>

<dt class="doc"><a href="../www/source/thresholds.xml">thresholds.xml</a></dt>
  <dd>Set threshold maps for ordered posterized dither.</dd><br />

<dt class="doc"><a name="type.xml"></a><a href="../www/source/type.xml">type.xml</a></dt>
  <dd>Configure fonts.
  <p>Define the font name, family, foundry, style, format, metrics, and glyphs for any font you want to use within ImageMagick.</p>
  </dd>

<dt class="doc"><a href="../www/source/type-ghostscript.xml">type-ghostscript.xml</a></dt>
  <dd>Configure <a href="http://www.cs.wisc.edu/~ghost/">Ghostscript</a> fonts.
  <p>The Ghostscript package includes a number of fonts that can be accessed with ImageMagick.</p>
  </dd>

<dt class="doc"><a href="../www/source/type-windows.xml">type-windows.xml</a></dt>
  <dd>Associate names with Windows font glyphs.</dd>

</dl>

<p>Under Unix and Linux, ImageMagick searches for each of the configuration files listed above by looking in the locations given below, in order, and loads them if found:</p>

<pre class="text">
  $MAGICK_CONFIGURE_PATH
  $PREFIX/lib/ImageMagick-6.6.5/config
  $PREFIX/share/ImageMagick-6.6.5/config
  $PREFIX/share/ImageMagick-6.6.5  $HOME/.magick/
  &lt;<em>client path</em>&gt;/lib/ImageMagick-6.6.5/
</pre>

<p>The environmental variable $PREFIX is the default install path (e.g. <kbd>/usr/local</kbd>). The <em>client path</em> is the execution path of your ImageMagick client (e.g. <kbd>/usr/local</kbd>) .</p>

<p>For the Unix or Linux pre-compiled uninstalled binary distributions, the configuration load order is:</p>

<pre class="text">
  $MAGICK_CONFIGURE_PATH
  $MAGICK_HOME/lib/ImageMagick-6.6.5/config
  $MAGICK_HOME/share/ImageMagick-6.6.5/config
  $PREFIX/share/ImageMagick-6.6.5  $HOME/.magick/
  &lt;<em>client path</em>&gt;/lib/ImageMagick-6.6.5/
  &lt;<em>current directory</em>&gt;
</pre>

<p>Under Windows, ImageMagick searches for these configuration files in the following order, and loads them if found:</p>

<pre class="text">
  $MAGICK_CONFIGURE_PATH
  &lt;<em>windows registry</em>&gt;
  $PREFIX/config
  $USERPROFILE/.magick/
  &lt;<em>client path</em>&gt;
</pre>

<p>Above, $PREFIX is the default install path, typically <kbd>c:\\Program Files\\ImageMagick-6.6.5</kbd>.</p>

<p>For an uninstalled Windows installation, the configuration load order is:</p>

<pre class="text">
  $MAGICK_CONFIGURE_PATH
  $MAGICK_HOME
  $USERPROFILE/.magick/
  <em>client path</em>
  &lt;<em>current directory</em>&gt;
</pre>

<p>If a configuration file cannot not be found, ImageMagick relies on built-in default values.</p>

</div>

<h2><a name="modules"></a>Modules</h2>
<div class="doc-section">

<p>ImageMagick's image format support is usually provided in the form of loadable modules. It searches for loadable modules in the following order and it uses the first match found:</p>

<pre class="text">
  $MAGICK_HOME/lib/ImageMagick-6.6.5/modules-Q16/coders/
  $HOME/.magick/
  &lt;<em>client path</em>&gt;/../lib/ImageMagick-6.6.5/modules-Q16/coders/
  $MAGICK_HOME/lib/ImageMagick-6.6.5/modules-Q16/coders
  $MAGICK_HOME/share/ImageMagick-6.6.5/modules-Q16/coders
  $HOME/.magick/
  &lt;<em>client path</em>&gt;/lib/ImageMagick-6.6.5/modules-Q16/coders
</pre>

</div>

<h2><a name="fonts"></a>Fonts</h2>
<div class="doc-section">

<p>ImageMagick is able to load raw TrueType and Postscript font files.  It searches for the font configuration file, <a href="#type.xml">type.xml</a>, in the following order, and loads them if found:</p>

<pre class="text">
  $MAGICK_CONFIGURE_PATH
  $MAGICK_HOME/lib/ImageMagick-6.6.5/config
  $MAGICK_HOME/share/ImageMagick-6.6.5/config
  $HOME/.magick/
  &lt;<em>client path</em>&gt;/lib/ImageMagick-6.6.5/
  $MAGICK_FONT_PATH
</pre>

</div>

<h2><a name="environment"></a>Environment Variables</h2>
<div class="doc-section">

<p>Environment variables recognized by ImageMagick include:</p>

<dl class="doc">
<dt class="doc">HOME</dt>
  <dd>Set path to search for configuration files in <em>$HOME/.magick</em> if the directory exists.</dd><br />
<dt class="doc">LD_LIBRARY_PATH</dt>
  <dd>Set path to the ImageMagick shareable libraries and other dependent libraries.</dd><br />
<dt class="doc">MAGICK_AREA_LIMIT</dt>
  <dd>Set the maximum <em>width * height</em> of an image that can reside in the pixel cache memory.</dd><br />
  <dd>Images that exceed the area limit are cached to disk (see <a href="#disk-limit">MAGICK_DISK_LIMIT</a>).</dd><br />
<dt class="doc">MAGICK_CODER_FILTER_PATH</dt>
  <dd>Set search path to use when searching for filter process modules (invoked via  <a href="../www/command-line-options.html#process">-process</a>).<dd><br />
  <dd>This path permits the user to extend ImageMagick's image processing functionality by adding loadable modules to a preferred location rather than copying them into the ImageMagick installation directory.  The formatting of the search path is similar to operating system search paths (i.e. colon delimited for Unix, and semi-colon delimited for Microsoft Windows). This user specified search path is searched before trying the <a href="#modules">default search path</a>.</dd><br />
<dt class="doc">MAGICK_CODER_MODULE_PATH</dt>
  <dd>Set path where ImageMagick can locate its coder modules.</dd><br />
  <dd>This path permits the user to arbitrarily extend the image formats supported by ImageMagick by adding loadable coder modules from an preferred location rather than copying them into the ImageMagick installation directory.  The formatting of the search path is similar to operating system search paths (i.e. colon delimited for Unix, and semi-colon delimited for Microsoft Windows). This user specified search path is searched before trying the <a href="#modules">default search path</a>.</dd><br />
<dt class="doc">MAGICK_CONFIGURE_PATH</dt>
  <dd>Set path where ImageMagick can locate its configuration files</dd><br />
  <dd>Use this search path to search for configuration (.xml) files. The formatting of the search path is similar to operating system search paths (i.e. colon delimited for Unix, and semi-colon delimited for Microsoft Windows). This user specified search path is searched before trying the <a href="#configure">default search path</a>.</dd><br />
<dt class="doc">MAGICK_DEBUG</dt>
  <dd>Set debug options.</dd><br />
  <dd>See <a href="../www/command-line-options.html#debug">-debug</a> for a description of debugging options.</dd><br />
<dt class="doc"><a name="disk-limit"></a>MAGICK_DISK_LIMIT</dt>
  <dd>Set maximum amount of disk space in bytes permitted for use by the pixel cache.</dd><br />
  <dd>When this limit is exceeded, the pixel cache is not be created and an error message is returned.</dd><br />
<dt class="doc">MAGICK_FILE_LIMIT</dt>
  <dd>Set maximum number of open pixel cache files.</dd><br />
  <dd>When this limit is exceeded, any subsequent pixels cached to disk are closed and reopened on demand.  This behavior permits a large number of images to be accessed simultaneously on disk, but with a speed penalty due to repeated open/close calls.</dd><br />
<dt class="doc">MAGICK_FONT_PATH</dt>
  <dd>Set path ImageMagick searches for TrueType and Postscript Type1 font files.</dd><br />
  <dd>This path is only consulted if a particular font file is not found in the current directory.</dd><br />
<dt class="doc">MAGICK_HOME</dt>
  <dd>Set the path at the top of ImageMagick installation directory.</dd><br />
  <dd>This path is consulted by <em>uninstalled</em> builds of ImageMagick which do not have their location hard-coded or set by an installer.</dd><br />
<dt class="doc"><a name="map-limit"></a>MAGICK_MAP_LIMIT</dt>
  <dd>Set maximum amount of memory map in bytes to allocate for the pixel cache.</dd><br />
  <dd>When this limit is exceeded, the image pixels are cached to disk (see MAGICK_DISK_LIMIT).</dd>
  </dd><br />
<dt class="doc">MAGICK_MEMORY_LIMIT</dt>
  <dd>Set maximum amount of memory in bytes to allocate for the pixel cache from the heap.</dd><br />
  <dd>When this limit is exceeded, the image pixels are cached to memory-mapped disk (see <a href="#map-limit">MAGICK_MAP_LIMIT</a>).</dd><br />
<dt class="doc">MAGICK_PRECISION</dt>
  <dd>Set the maximum number of significant digits to be printed.</dd><br />
<dt class="doc">MAGICK_SYNCHRONIZE</dt>
  <dd>Set to true to synchronize image to storage device.</dd><br />
<dt class="doc">MAGICK_TEMPORARY_PATH</dt>
  <dd>Set path to store temporary files.</dd><br />
<dt class="doc">MAGICK_THREAD_LIMIT</dt>
  <dd>Set maximum parallel threads.</dd><br />
  <dd>Many ImageMagick algorithms run in parallel on multi-processor systems.  Use this enviroment variable to set the maximum number of threads that are permitted to run in parallel.</dd>
<dt class="doc">MAGICK_THROTTLE</dt>
  <dd>Periodically yield the CPU for at least the time specified in milliseconds.</dd><br />
<dt class="doc">MAGICK_TIME_LIMIT</dt>
  <dd>Set maximum time in seconds.</dd><br />
  <dd>When this limit is exceeded, an exception is thrown and processing stops.</dd>
</dl>
</div>

</div>

<div id="linkbar">
    <span id="linkbar-west">&nbsp;</span>
    <span id="linkbar-center">
      <a href="http://www.imagemagick.org/discourse-server/">Discourse Server</a> &bull;
      <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>
    </span>
    <span id="linkbar-east">&nbsp;</span>
  </div>
  <div class="footer">
    <span id="footer-west">&copy; 1999-2010 ImageMagick Studio LLC</span>
    <span id="footer-east"> <a href="http://www.imagemagick.org/script/contact.php">Contact the Wizards</a></span>
  </div>
  <div style="clear: both; margin: 0; width: 100%; "></div>
  <script type="text/javascript">
    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'UA-17690367-1']);
    _gaq.push(['_trackPageview']);

    (function() {
      var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
      ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
      var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
    })();
  </script>
</body>
</html>
