[jbosscache-commits] JBoss Cache SVN: r8146 - in enterprise-docs/tags: JBoss_EAP_5_0_0 and 9 other directories.

jbosscache-commits at lists.jboss.org jbosscache-commits at lists.jboss.org
Mon Aug 3 19:55:06 EDT 2009


Author: irooskov at redhat.com
Date: 2009-08-03 19:55:06 -0400 (Mon, 03 Aug 2009)
New Revision: 8146

Added:
   enterprise-docs/tags/JBoss_EAP_5_0_0/
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/Makefile
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Author_Group.xml
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Book_Info.xml
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/JBoss_Cache_Frequently_Asked_Questions.ent
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/JBoss_Cache_Frequently_Asked_Questions.xml
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Revision_History.xml
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/images/
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/images/icon.svg
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/Makefile
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/en-US/
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/en-US/Author_Group.xml
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/en-US/Book_Info.xml
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/en-US/JBoss_Cache_Tutorial.ent
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/en-US/JBoss_Cache_Tutorial.xml
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/en-US/Revision_History.xml
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/en-US/images/
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/en-US/images/icon.svg
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/Makefile
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/Author_Group.xml
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/Book_Info.xml
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/JBoss_Cache_User_Guide.ent
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/Revision_History.xml
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/architecture.xml
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/basic_api.xml
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/batching.xml
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/cache_loaders.xml
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/compatibility.xml
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/configuration.xml
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/configuration_reference.xml
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/deployment.xml
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/eviction_policies.xml
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/images/
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/images/icon.svg
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/introduction.xml
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/jmx_reference.xml
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/master.xml
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/preface.xml
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/replication.xml
   enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/transactions.xml
Log:
adding Cache EAP 5 books


Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/Makefile
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/Makefile	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/Makefile	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,12 @@
+#Makefile for Red Hat Documentation
+#Created by Jeff Fearn <jfearn at redhat.com>
+#Copyright Red Hat Inc. 2006
+
+XML_LANG	= en-US
+
+BRAND = JBoss
+
+OTHER_LANGS	= de-DE es-ES fr-FR ja-JP pt-BR zh-CN
+
+COMMON_CONFIG  = /usr/share/publican
+include $(COMMON_CONFIG)/make/Makefile.common

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Author_Group.xml
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Author_Group.xml	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Author_Group.xml	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,10 @@
+<?xml version='1.0'?>
+<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+
+<authorgroup>
+	<author><firstname>Ben Wang, Bela Ban, Manik Surtani, Scott Marlow, Galder Zamarreño  </firstname></author>	
+	
+</authorgroup>
+

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Book_Info.xml
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Book_Info.xml	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Book_Info.xml	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!DOCTYPE bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+
+<bookinfo>
+	<title>JBoss Cache Frequently Asked Questions</title>
+	<subtitle>for Use with JBoss Enterprise Application Platform 5.0</subtitle>
+	<edition>2.0</edition>
+	<pubsnumber>1</pubsnumber>
+	<productname>JBoss Enterprise Application Platform</productname>
+	<productnumber>5.0</productnumber>
+	<abstract>
+		<para>This book is a compilation of frequently asked questions about JBoss Cache</para>
+	</abstract>
+	<isbn>N/A</isbn>
+	<corpauthor>
+	  <inlinemediaobject>
+		<imageobject>
+			 <imagedata fileref="Common_Content/images/redhat-logo.svg" />
+		 </imageobject>
+	  </inlinemediaobject>
+	</corpauthor>
+	<copyright>
+		<year>&YEAR;</year>
+		<holder>&HOLDER;</holder>
+	</copyright>
+	<xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+<xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	
+</bookinfo>

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/JBoss_Cache_Frequently_Asked_Questions.ent
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/JBoss_Cache_Frequently_Asked_Questions.ent	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/JBoss_Cache_Frequently_Asked_Questions.ent	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,3 @@
+<!ENTITY HOLDER "Red Hat, Inc">
+<!ENTITY YEAR "2009">
+<!ENTITY VERSION "">

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/JBoss_Cache_Frequently_Asked_Questions.xml
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/JBoss_Cache_Frequently_Asked_Questions.xml	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/JBoss_Cache_Frequently_Asked_Questions.xml	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,1504 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+        "../../../../docbook-support/support/docbook-dtd/docbookx.dtd"
+        >
+<book lang="en">
+<xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+    <chapter id="general">
+        <title>General Information</title>
+        <qandaset>
+
+            <qandaentry>
+                <question>
+                    <para>What is JBoss Cache?</para>
+                </question>
+
+                <answer>
+                    <para>JBoss Cache is a replicated and transactional cache. It is
+                        replicated since multiple JBoss Cache instances can be distributed
+                        (either within the same JVM or across several JVMs whether they reside on
+                        the same machine or on different machines on a network) and data is
+                        replicated across the whole group. It is transactional because a
+                        user can configure a
+                        <ulink url="http://java.sun.com/products/jta/">JTA</ulink>
+                        compliant transaction
+                        manager and make any cache
+                        interaction transactional, and caches would participate in ongoing JTA transactions. Note that
+                        the cache can also be run without
+                        any replication; this is the local mode.
+                    </para>
+
+                    <para>JBoss Cache comes in two flavours: Core and POJO versions. The core library
+                        (using the
+                        <literal>org.jboss.cache.Cache</literal>
+                        interface) is the underlying library that organises data in a tree-like structure and handles
+                        all locking,
+                        passivation,
+                        eviction and replication characteristics of data in the cache. The POJO library (using the
+                        <literal>org.jboss.cache.pojo.PojoCache</literal>
+                        interface) is built atop the core library and allows introspection
+                        of objects in the cache providing transparent coherence by using JBoss AOP. Note that the POJO
+                        edition
+                        of JBoss Cache
+                        (often referred to as POJO Cache) comes with a separate set of documentation (Users' Guide, FAQ,
+                        etc.)
+                        available on the JBoss Cache
+                        <ulink url="http://www.jboss.org/jbosscache/">documentation website</ulink>.
+                    </para>
+
+                    <para>
+                        JBoss Cache is made available in one of four different packages:
+                        <itemizedlist>
+                            <listitem>
+                                <para>
+                                    <literal>jbosscache-core</literal>
+                                </para>
+                                contains the core Cache library for users who do not wish to use the additional
+                                functionality
+                                offered by POJO Cache.
+                            </listitem>
+                            <listitem>
+                                <para>
+                                    <literal>jbosscache-pojo</literal>
+                                </para>
+                                contains the core Cache library as well as POJO Cache extensions and dependencies.
+                            </listitem>
+                        </itemizedlist>
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Who are the JBoss Cache developers?</para>
+                </question>
+
+                <answer>
+                    <para>
+                        JBoss Cache has an active community of developers and contributors. The project was founded by
+                        Bela
+                        Ban
+                        and is currently led by Manik Surtani. Jason Greene is the lead for the POJO Cache subsystem,
+                        and other
+                        contributors both past and present include Ben Wang, Harald Gliebe, Brian Stansberry, Vladimir
+                        Blagojevic, Mircea Markus, Jimmy Wilson, Galder Zamarreño and Elias Ross.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>What about licensing?</para>
+                </question>
+
+                <answer>
+                    <para>JBoss Cache is licensed under
+                        <ulink url="http://www.gnu.org/licenses/lgpl.html">LGPL</ulink>, an<ulink
+                                url="http://www.opensource.org/">OSI</ulink>-approved open source license.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Where can I download JBoss Cache?</para>
+                </question>
+
+                <answer>
+                    <para>The JBoss Cache
+                        <ulink url="http://www.jboss.com/products/jbosscache/downloads">product download page</ulink>
+                        has prebuilt binaries as well as source distributions. You can also grab snapshots from the
+                        JBoss.org subversion
+                        repository. See
+                        <ulink url="http://www.jboss.org/community/docs/DOC-10259">the JBoss Cache development</ulink>
+                        wiki page for details.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>How do I build JBoss Cache from sources?</para>
+                </question>
+
+                <answer>
+                    <para>
+                        Read the README-Maven.txt file in the source root. Note that you will need a JDK >= 5.0, and
+                        Apache Maven >= 2.0.6.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Which versions of the JDK are supported by JBoss Cache?</para>
+                </question>
+
+                <answer>
+                    <para>
+                        JBoss Cache is baselined on Java 5 and is tested on Java 5 and 6 VMs. If, for whatever reason
+                        you have
+                        to use Java 1.4, you could build a retroweaved version of the core cache
+                        library that is Java 1.4 compatible, using the simple instructions on this wiki page
+                        <ulink url="http://www.jboss.org/community/docs/DOC-10263">on building and running JBoss Cache
+                            on Java 1.4.
+                        </ulink>.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>How do I know the version of JBoss Cache that I am using?</para>
+                </question>
+
+                <answer>
+                    <para>
+                        <literal>java -jar jbosscache-core.jar</literal>
+                        will spit out version details.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Can I run JBoss Cache outside of JBoss Application
+                        Server?
+                    </para>
+                </question>
+
+                <answer>
+                    <para>
+                        Absolutely! Even though JBoss Cache comes integrated with JBoss Application Server,
+                        it can also be used in any other Java EE server such as BEA WebLogic, IBM Websphere or Tomcat.
+                        It
+                        can also run in a standalone Java process, completely outside of an application server. See the
+                        Users' Guide for more
+                        details.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>How can I migrate my application and configuration from using JBoss Cache 1.x to 2.x?</para>
+                </question>
+                <answer>
+                    <para>Look at
+                        <ulink url="http://www.jboss.org/community/docs/DOC-10246">this wiki page</ulink>
+                        for help.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>What about from 2.x to 3.x?</para>
+                </question>
+                <answer>
+                    <para>
+                        JBoss Cache 3.x is API compatible with 2.x, although as far as possible you should refactor your
+                        code
+                        not to use deprecated methods as these may disappear in future releases of JBoss Cache.
+                    </para>
+                    <para>
+                        JBoss Cache 3.x comes with an all new configuration format. Old 2.x configuration files will
+                        still
+                        work, although you will get a warning in the logs about this. Again, as far as possible, we
+                        recommend
+                        migrating your configuration file to the new format. Scripts are provided with the JBoss Cache
+                        3.x
+                        distribution to migrate configuration files (see
+                        <literal>config2to3.sh</literal>
+                        and<literal>config2to3.bat</literal>).
+                    </para>
+                    <para>
+                        Note that to take advantage of some of the new features in JBoss Cache 3.x, you need to be using
+                        the
+                        new configuration format.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Where can I report bugs or problems?</para>
+                </question>
+
+                <answer>
+                    <para>Please report any bugs or problems to
+                        <ulink url="http://www.jboss.org/jbosscache">JBoss Cache User Forum</ulink>.
+                    </para>
+                </answer>
+            </qandaentry>
+        </qandaset>
+    </chapter>
+
+    <chapter id="TreeCache">
+        <title>JBoss Cache - Core</title>
+
+        <qandaset>
+
+            <qandaentry>
+                <question>
+                    <para>Using JBoss Cache 2 or 3 on JBoss AS 4.x</para>
+                </question>
+
+                <answer>
+                    <para>
+                        JBoss AS 4.x ships with JBoss Cache 1.4.x. To make use of new features, performance improvements
+                        and bug fixes in newer releases, you can follow some of the steps outlined on<ulink
+                            url="http://www.jboss.org/community/docs/DOC-10254">this wiki page</ulink>.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Can I run multiple JBoss Cache instances on the same VM?</para>
+                </question>
+
+                <answer>
+                    <para>Yes. There are some scenarios where you may want to run
+                        multiple instances of JBoss Cache. For example, you want to run
+                        multiple local cache instances with each instance having its own
+                        configuration (e.g., different cache policy). In this case, you will
+                        need multiple xml configuration files.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Can JBoss Cache run as a second level cache inside
+                        Hibernate?
+                    </para>
+                </question>
+
+                <answer>
+                    <para>Yes. Since Hibernate 3.0 release, you can configure it to use
+                        JBoss Cache as a second level cache. For details,
+                        see Hibernate documentation, and also see
+                        <ulink url="http://www.jboss.org/community/docs/DOC-10265">this wiki page</ulink>.
+                    </para>
+                    <para>
+                        JBoss Cache 3.x with MVCC in particular works very well as a Hibernate second level cache.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>What about using POJO Cache as a Hibernate cache?</para>
+                </question>
+
+                <answer>
+                    <para>It is not necessary to use POJO Cache for second level
+                        cache inside Hibernate because Hibernate
+                        manages fine-grained fields in Java objects. Using POJO Cache won't
+                        provide any advantage, and will be an unnecessary performance drawback.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>How can I configure JBoss Cache?</para>
+                </question>
+
+                <answer>
+                    <para>You can configure the JBoss Cache through a configuration xml
+                        file or programmatically using a
+                        <literal>org.jboss.cache.config.Configuration</literal>
+                        object, passed in to the
+                        <literal>org.jboss.cache.CacheFactory</literal>
+                        instance.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Can I use a schema or DTD to validate my JBoss Cache configuration file?
+                    </para>
+                </question>
+
+                <answer>
+                    <para>
+                        As of JBoss Cache 3.x, yes. An XSD schema is provided in your jbosscache-core.jar file, and is
+                        also
+                        available online, on<ulink url="http://www.jboss.org/jbosscache/jbosscache-config-3.0.xsd">
+                        http://www.jboss.org/jbosscache/jbosscache-config-3.0.xsd</ulink>.
+                        You can configure your IDE, text editor or XML authoring tool to use this schema to validate
+                        your file.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>What is the difference between the different cache modes?
+                    </para>
+                </question>
+
+                <answer>
+                    <para>JBossCache has five different cache modes, i.e.,
+                        <literal>LOCAL</literal>
+                        ,
+                        <literal>REPL_SYNC</literal>
+                        ,
+                        <literal>REPL_ASYNC</literal>
+                        ,
+                        <literal>INVALIDATION_SYNC</literal>
+                        and
+                        <literal>INVALIDATION_ASYNC</literal>
+                        . If you want to run JBoss Cache as a
+                        single instance, then you should set the cache mode to
+                        <literal>LOCAL</literal>
+                        so that it won't attempt to replicate anything.
+                        If you want to have synchronous replication among different
+                        JBoss Cache instances, you set it to
+                        <literal>REPL_SYNC</literal>
+                        .
+                        For asynchronous replication, use
+                        <literal>AYSNC_REPL</literal>
+                        . If you do not wish to replicate cached data but simply inform other caches in a cluster that
+                        data
+                        under
+                        specific addresses are now stale and should be evicted from memory, use
+                        <literal>INVALIDATION_SYNC</literal>
+                        or
+                        <literal>INVALIDTAION_ASYNC</literal>
+                        . Synchronous and asynchronous behavior applies to invalidation as well as replication.
+                    </para>
+
+                    <para>Note that
+                        <literal>ASYNC_REPL</literal>
+                        and
+                        <literal>INVALIDATION_ASYNC</literal>
+                        are non-blocking. This
+                        can be useful when you want to have another JBoss Cache serving as a
+                        mirror or backup and you don't want to wait for confirmation that this mirror has received your
+                        messages.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>How does JBoss Cache's replication mechanism work?</para>
+                </question>
+
+                <answer>
+                    <para>JBoss Cache leverages
+                        <ulink url="http://www.jgroups.org">JGroups</ulink>
+                        for network communications. A JGroups configuration section is present in your JBoss Cache
+                        configuration.
+                    </para>
+                    <para>
+                        A user
+                        can configure the cluster of JBoss Cache instances by sharing the
+                        same cluster name (
+                        <literal>cluster name</literal>
+                        ). There is also
+                        an option of whether to populate the cache data upon starting a new
+                        instance in the
+                        <literal>ClusterConfig</literal>
+                        attribute.
+                    </para>
+
+                    <para>Note that once all instances join the same replication group,
+                        every replication change is propagated to all participating members.
+                        There is no mechanism for sub-partitioning where some replication
+                        can be done within only a subset of members, unless you use the Buddy Replication features. See
+                        the
+                        Users' Guide for more details on this.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>I run a 2 node cluster. If the network dies, do the caches continue to run?</para>
+                </question>
+
+                <answer>
+                    <para>Yes, both will continue to run, but depending on your replication mode, all transactions or
+                        operations may not complete. If
+                        <literal>REPL_SYNC</literal>
+                        is used, operations will fail while if
+                        <literal>REPL_ASYNC</literal>
+                        is used they will succeed. Even if they succeed though, caches will be out of sync.
+                    </para>
+                </answer>
+            </qandaentry>
+
+
+            <qandaentry>
+                <question>
+                    <para>Can I plug in library X instead of JGroups to handle remote calls and group communications?
+                    </para>
+                </question>
+
+                <answer>
+                    <para>At this stage the answer is no. We do have an abstraction layer between the
+                        communication suite and JBoss Cache in the pipelines, and this may appear as a feature at some
+                        stage
+                        in
+                        the future.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Does the cache need to replicate to every other instance in the cluster? Isn't this slow if
+                        the
+                        cluster is large?
+                    </para>
+                </question>
+
+                <answer>
+                    <para>Replication need not occur to every node in the cluster. This feature -
+                        called Buddy Replication -
+                        allows each node to pick one or more 'buddies' in the cluster and only replicate to its buddies.
+                        This
+                        allows a cluster to scale
+                        very easily with no extra impact on memory or network traffic with each node added.
+                    </para>
+                    <para>
+                        See the Users' Guide for more information on Buddy Replication, and how it can be used to
+                        achieve very
+                        high
+                        scalability.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>I'm using Buddy Replication. Do I need to have some form of session affinity?</para>
+                </question>
+                <answer>
+                    <para>Session affinity relates to returning to the same cache instance for the same data being used.
+                        While this is strictly not a requirement for Buddy Replication, it is greatly recommended to
+                        minimize
+                        moving state around a cluster.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>If I have the need for different configuration properties (e.g.,
+                        <literal>CacheMode</literal>
+                        and
+                        <literal>IsolationLevel</literal>
+                        ), do I simply need to create multiple
+                        <literal>org.jboss.cache.Cache</literal>
+                        instances with the appropriate configuration?
+                    </para>
+                </question>
+
+                <answer>
+                    <para>Yes. All the above mentioned properties are per cache
+                        instance. Therefore you will need separate
+                        <literal>org.jboss.cache.Cache</literal>
+                        instances.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Isn't this expensive from a networking standpoint, i.e., needing to create sockets for each
+                        <literal>org.jboss.cache.Cache</literal>
+                        instance?
+                    </para>
+                </question>
+
+                <answer>
+                    <para>
+                        Yes, it can be. For such cases it is recommended that you configure your cache using the JGroups
+                        Multiplexer, which allows several caches to share
+                        a single JGroups channel. Please see the Users' Guide for details on how to configure the
+                        JGroups
+                        Multiplexer.
+                    </para>
+                    <para>
+                        A faster and more efficient approach is to use a shared transport in JGroups. Please see
+                        <ulink url="http://www.jgroups.org">the JGroups documentation</ulink>
+                        for more details on how to do this.
+                    </para>
+                </answer>
+            </qandaentry>
+
+
+            <qandaentry>
+                <question>
+                    <para>Does the
+                        <literal>ClusterName</literal>
+                        configuration element have
+                        any relation to the JBoss AS cluster
+                        <literal>PartitionName</literal>
+                        ?
+                    </para>
+                </question>
+
+                <answer>
+                    <para>Yes. They are both JGroups group names. Besides the notion of
+                        a channel in JGroups, it also can partition the channel into different
+                        group names.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>When using multiple JGroups based components
+                        [cluster-service.xml, cache (multiple instances)], what is the
+                        correct/valid way to configure those components to make sure my
+                        multicast addresses don't conflict?
+                    </para>
+                </question>
+
+                <answer>
+                    <para>There are two parameters to consider: multicast address (plus
+                        port) and the group name. At minimum, you will have to run
+                        components using a different group name. But whether to run them on
+                        the same channel depends upon whether the communication performance
+                        is critical for you or not. If it is, then it'd be best to run them
+                        on different channels.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Does JBoss Cache support cache persistence
+                        storage?
+                    </para>
+                </question>
+
+                <answer>
+                    <para>Yes. JBoss Cache has a cache loader
+                        interface that supports cache persistence. See below for more FAQs on cache loaders.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Does JBoss Cache support cache passivation/ overflow
+                        to a data store?
+                    </para>
+                </question>
+
+                <answer>
+                    <para>Yes. JBoss Cache uses the
+                        cache loader to support cache passivation/ overflow. See
+                        documentation on how to configure and use this feature.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Is JBoss Cache thread safe?</para>
+                </question>
+
+                <answer>
+                    <para>Yes, it is thread safe.</para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Does JBoss Cache support XA (2PC) transactions now?</para>
+                </question>
+
+                <answer>
+                    <para>No, although it is also on our to do list. Our internal
+                        implementation does use a procedure similar to 2PC to coordinate a
+                        transactions among different instances, but JBoss Cache is not an XA resource.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Which transaction managers are supported by
+                        JBoss Cache?
+                    </para>
+                </question>
+
+                <answer>
+                    <para>JBoss Cache supports any TransactionManager that is
+                        <ulink url="http://java.sun.com/products/jta/">JTA</ulink>
+                        compliant such as<ulink url="http://www.jboss.org/jbosstm/">JBoss Transactions</ulink>.
+                    </para>
+                    <para>
+                        While JBoss Cache does ships with a
+                        dummy transaction manager
+                        (<literal>org.jboss.cache.transaction.DummyTransactionManager</literal>), we do
+                        <emphasis>not</emphasis>
+                        recommend using this for production. It is not thread safe, and is intended for internal testing
+                        only.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>How do I set up the cache to be transactional?</para>
+                </question>
+
+                <answer>
+                    <para>You either use the default transaction manager that ships with JBoss AS
+                        or you have to implement the
+                        <literal>org.jboss.cache.transaction.TransactionManagerLookup</literal>
+                        interface, and return an
+                        instance of your
+                        <literal>javax.transaction.TransactionManager</literal>
+                        implementation. The
+                        configuration property
+                        <literal>TransactionManagerLookupClass</literal>
+                        defines the class
+                        to be used by the cache to fetch a reference to a
+                        transaction manager. It is trivial to implement this interface to support
+                        other transaction managers. Once this attribute is specified, the
+                        cache will look up the transaction context from this transaction
+                        manager.
+                    </para>
+                    <para>
+                        The
+                        <literal>org.jboss.cache.transaction.GenericTransactionManagerLookup</literal>
+                        class that ships
+                        with JBoss Cache is able to detect and bind to most popular transaction managers. See the
+                        <literal>GenericTransactionManagerLookup</literal>
+                        javadocs for more information.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>How do I control the cache locking level?</para>
+                </question>
+
+                <answer>
+                    <para>JBoss Cache lets you control the cache locking level through
+                        the transaction isolation level. This is configured through the
+                        attribute
+                        <literal>IsolationLevel</literal>
+                        . The transaction
+                        isolation levels correspond to database
+                        isolation levels, namely,
+                        <literal>NONE</literal>
+                        ,
+                        <literal>READ_UNCOMMITTED</literal>
+                        ,
+                        <literal>READ_COMMITTED</literal>
+                        ,
+                        <literal>REPEATABLE_READ</literal>
+                        , and
+                        <literal>SERIALIZABLE</literal>
+                        . Note that these isolation levels are ignored if optimistic locking is used. For details,
+                        please
+                        refer
+                        to the
+                        user manual.
+                    </para>
+                    <para>
+                        As of JBoss Cache 3.x, when using the MVCC locking scheme, only
+                        <literal>READ_COMMITTED</literal>
+                        and
+                        <literal>REPEATABLE_READ</literal>
+                        are supported. Any other isolation level provided will either be upgraded
+                        or downgraded accordingly.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>How does JBoss Cache lock data for concurrent access?</para>
+                </question>
+
+                <answer>
+                    <para>In JBoss Cache 2.x, by default pessimistic locking is used to lock data nodes, based on the
+                        isolation level
+                        configured. We also offer optimistic locking to allow for greater concurrency
+                        at
+                        the cost of slight processing overhead and performance. See the documentation for a more
+                        detailed
+                        discussion on concurrency and locking in JBoss Cache.
+                    </para>
+                    <para>
+                        In JBoss Cache 3.x, optimistic and pessimistic locking are deprecated in favour of MVCC
+                        (multi-version concurrency
+                        control), which is far more efficient than either optimistic or pessimistic locking. For a
+                        detailed discussion on
+                        our MVCC implementation, see
+                        <ulink url="http://jbosscache.blogspot.com/2008/07/mvcc-has-landed.html">this blog entry</ulink>
+                        and<ulink url="http://www.jboss.org/community/docs/DOC-10272">this wiki page</ulink>.
+                    </para>
+                </answer>
+            </qandaentry>
+
+
+            <qandaentry>
+                <question>
+                    <para>How do I enable Optimistic Locking or MVCC in JBoss Cache?</para>
+                </question>
+
+                <answer>
+                    <para>
+                        Please see the configuration section of the Users' Guide for details.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Can I use the cache locking level even without a transaction
+                        context?
+                    </para>
+                </question>
+
+                <answer>
+                    <para>Yes. JBoss Cache controls the individual node locking behavior
+                        through the isolation level semantics. This means even if you don't
+                        use a transaction, you can specify the lock level via isolation
+                        level. You can think of the node locking behavior outside of a
+                        transaction as if it is under transaction with
+                        <literal>auto_commit</literal>
+                        on.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>
+                        Does JBoss Cache support
+                        <literal>SELECT FOR UPDATE</literal>
+                        semantics?
+                    </para>
+                </question>
+
+                <answer>
+                    <para>
+                        Yes, but this is is only possible if you are running within a JTA transaction
+                        <emphasis>and</emphasis>
+                        are using either
+                        <literal>MVCC</literal>
+                        or
+                        <literal>PESSIMISTIC</literal>
+                        as your node locking scheme.
+                    </para>
+                    <para>
+                        To achieve
+                        <literal>SELECT FOR UPDATE</literal>
+                        semantics, simply do:
+                    </para>
+                    <programlisting role="JAVA"><![CDATA[
+
+    // start transaction ... 
+
+    cache.getInvocationContext().getOptionOverrides().setForceWriteLock(true);
+    Node n = cache.get("/a/b/c"); // this acquires a WRITE LOCK on this node
+        ...
+        ...
+
+    // end transaction
+
+                    ]]></programlisting>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>With replication (REPL_SYNC/REPL_ASYNC) or invalidation
+                        (INVALIDATION_SYNC/INVALIDATION_ASYNC), how
+                        often does the cache broadcast messages over the network?
+                    </para>
+                </question>
+
+                <answer>
+                    <para>If the updates are under transaction, then the broadcasts
+                        happen only when the transaction is about to commit (actually
+                        during the prepare stage internally). That is, it will be a batch
+                        update. However, if the operations are not under transaction
+                        context, then each update will trigger replication. Note that this
+                        has performance implications if network latency is a problem.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>How can I do a mass removal?</para>
+                </question>
+
+                <answer>
+                    <para>If you do a<literal>cache.removeNode("/myroot")</literal>, it will recursively remove
+                        all the entries under "/myroot".
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Can I monitor and manage the JBoss Cache?</para>
+                </question>
+
+                <answer>
+                    <para>Yes, using a JMX console such as the one shipped with JBoss AS or Java 5's
+                        <literal>jconsole</literal>
+                        utility. See the chapter titled
+                        <emphasis role="bold">Management Information</emphasis>
+                        in the JBoss Cache Users' Guide for more details.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>
+                        JBoss Cache uses a
+                        <literal>:</literal>
+                        character in its object name. This causes problems with
+                        my MBean server. What can I do about it?
+                    </para>
+                </question>
+                <answer>
+                    <para>
+                        This is something we have seen with some MBean servers. By default, JBoss Cache uses
+                        <literal>jboss.cache:service=JBossCache</literal>
+                        as a prefix to all objects it binds in JMX.
+                        To work around this, use the
+                        <literal>-Djbosscache.jmx.prefix</literal>
+                        JVM parameter to pass in
+                        an alternate prefix.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Can I disable JBoss Cache management attributes?</para>
+                </question>
+
+                <answer>
+                    <para>Yes, you can. See the section on configuration in the JBoss Cache Users' Guide.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>What happened to jboss-serialization.jar?</para>
+                </question>
+
+                <answer>
+                    <para>
+                        As of JBoss Cache 2.0.0, the dependency on JBoss Serialization has been dropped since most of
+                        the
+                        benefits of JBoss Serialization are available in updated Java 5 VMs. Since JBoss Cache 2.0.0 is
+                        baselined on Java 5, there was no need to provide these benefits separately.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Does JBoss Cache support partitioning?</para>
+                </question>
+
+                <answer>
+                    <para>Not right now. JBoss Cache does not support partitioning that a
+                        user can configure to have different set of data residing on
+                        different cache instances while still participating as a replication
+                        group.
+                    </para>
+                    <para>
+                        This is on the roadmap though, so do keep an eye on
+                        <ulink url="http://jira.jboss.org/jira/browse/JBCACHE-60">JBCACHE-60</ulink>
+                        if you are interested.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Does JBoss Cache handle the concept of application classloading
+                        inside, say, a Java EE container?
+                    </para>
+                </question>
+
+                <answer>
+                    <para>Application-specific classloading is used widely inside a Java EE
+                        container. For example, a web application may require a new
+                        classloader to scope a specific version of the user library.
+                        However, by default JBoss Cache is agnostic to the classloader. In
+                        general, this leads to two kinds of problems:
+                    </para>
+
+                    <itemizedlist>
+                        <listitem>
+                            <para>Object instance is stored in cache1 and replicated to
+                                cache2. As a result, the instance in cache2 is created by the
+                                system classloader. The replication may fail if the system
+                                classloader on cache2 does not have access to the required
+                                class. Even if replication doesn't fail, a user thread in cache2
+                                may not be able to access the object if the user thread is
+                                expecting a type defined by the application classloader.
+                            </para>
+                        </listitem>
+
+                        <listitem>
+                            <para>Object instance is created by thread 1 and will be
+                                accessed by thread 2 (with two different classloaders).
+                                JBoss Cache has no notion of the different classloaders involved.
+                                As a result, you will have a
+                                <literal>ClassCastException</literal>
+                                . This is a standard
+                                problem in passing an object from one application space to
+                                another; JBoss Cache just adds a level of indirection in passing
+                                the object.
+                            </para>
+                        </listitem>
+                    </itemizedlist>
+
+                    <para>To solve the first kind of issue JBoss Cache uses a
+                        <literal>CacheMarshaller</literal>
+                        .
+                        Basically, this allows application code to register a classloader
+                        with a portion of the cache tree for use in handling objects
+                        replicated to that portion. See the
+                        <literal>CacheMarshaller</literal>
+                        section of
+                        the Users' Guide for more details.
+                    </para>
+
+                    <para>To solve the second kind of issue, you can use the the
+                        <literal>UseLazyDeserialization</literal>
+                        configuration
+                        option in JBoss Cache, which wraps your objects in a
+                        <literal>Marshalledvalue</literal>
+                        wrapper. The
+                        <literal>MarshalledValue</literal>
+                        serializes and deserializes your object on demand, ensuring the proper thread local context
+                        class loader is used each time.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Does JBoss Cache currently support pre-event and post-event
+                        notification?
+                    </para>
+                </question>
+
+                <answer>
+                    <para>Yes. A boolean is passed in to each notification callback identifying whether the callback is
+                        before
+                        or after the event. See the
+                        <literal>org.jboss.cache.notifications.annotations.CacheListener</literal>
+                        annotation for details.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>How do I implement a custom listener to listen to
+                        cache events?
+                    </para>
+                </question>
+
+                <answer>
+                    <para>
+                        See the Users' Guide on this subject.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Can I use
+                        <literal>UseRegionBasedMarshalling</literal>
+                        attribute in JBoss Cache in order to get
+                        around ClassCastExceptions happening when accessing data in the cache that has just been
+                        redeployed?
+                    </para>
+                </question>
+
+                <answer>
+                    <para>Yes, you can. Originally, cache Marshalling was designed as a
+                        workaround for those replicated caches that upon state transfer did not have access to the
+                        classloaders defining the objects in the cache.
+                    </para>
+
+                    <para>On each deployment, JBoss creates a new classloader per the top level deployment artifact, for
+                        example an EAR. You also have to bear in mind that a class in an application server is defined
+                        not
+                        only by the class name but also its classloader. So, assuming that the cache is not deployed as
+                        part
+                        of your deployment, you could deploy an application and put instances of classes belonging to
+                        this
+                        deployment inside the cache. If you did a redeployment and try to do a get operation of the data
+                        previously put, this would result on a ClassCastException. This is because even though the class
+                        names
+                        are the same, the class definitions are not. The current classloader is different to the one
+                        when
+                        the classes were originally put.
+                    </para>
+
+                    <para>By enabling marshalling, you can control the lifecycle of the data in the cache and if on
+                        undeployment, you deactivate the region and unregister the classloader that you'd have
+                        registered on
+                        deployment, you'd evict the data in the cache locally. That means that in the next deployment,
+                        the
+                        data won't be in the cache, therefore avoiding the problem. Obviously, using marshalling to get
+                        around this problem is only recommended when you have some kind of persistence backing where the
+                        data
+                        survives, for example using CacheLoaders, or when JBoss Cache is used as a second level cache in
+                        a
+                        persistence framework.
+                    </para>
+
+                    <para>To implement this feature, please follow the instructions indicated in the example located
+                        in the CacheMarshaller section of the Users' Guide. It's worth noting that instead of a
+                        <literal>ServletContextListener</literal>
+                        , you could add this code into an
+                        <literal>MBean</literal>
+                        that contained lifecycle methods, such as
+                        <literal>start()</literal>
+                        and
+                        <literal>stop()</literal>
+                        .
+                        The key would be for this MBean to depend on the target cache, so that it can operate as long as
+                        the
+                        cache is up and running.
+                    </para>
+                </answer>
+            </qandaentry>
+
+        </qandaset>
+    </chapter>
+
+    <chapter id="eviction">
+        <title>Eviction Policies</title>
+        <qandaset>
+            <qandaentry>
+                <question>
+                    <para>Does JBoss Cache support eviction policies?</para>
+                </question>
+
+                <answer>
+                    <para>Yes. JBoss Cache currently supports multiple eviction policies such as LRU, MRU, and FIFO.
+                        Users can also plug in their own eviction policy algorithms. See user
+                        guide for details.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Does JBoss Cache's eviction policy operates in
+                        replication mode?
+                    </para>
+                </question>
+
+                <answer>
+                    <para>Yes and no. :-)</para>
+
+                    <para>The eviction policy only operates in local mode. That is, nodes are
+                        only evicted locally. This may cause the cache contents not to be
+                        synchronized temporarily. But when a user tries to obtain the cached
+                        contents of an evicted node and finds out that is null (e.g.,
+                        <literal>get</literal>
+                        returns null), it should get it from the
+                        other data source and re-populate the data in the cache. During this
+                        moment, the node content will be propagated and the cache content
+                        will be in sync.
+                    </para>
+
+                    <para>However, you still can run eviction policies with cache mode
+                        set to either
+                        <literal>REPL_SYNC</literal>
+                        or
+                        <literal>REPL_ASYNC</literal>
+                        . Depending on your use case, you can
+                        set multiple cache instances to have their own eviction policy
+                        (which are applied locally) or just have selected instances with
+                        eviction policies activated.
+                    </para>
+
+                    <para>Also note that, with cache loader option, a locally evicted
+                        node can also be persisted to the backend store and a user can
+                        retrieve it from the store later on.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Does JBoss Cache support
+                        <literal>Region</literal>
+                        ?
+                    </para>
+                </question>
+
+                <answer>
+                    <para>Yes. JBoss Cache has the notion of region where a user can
+                        configure the eviction policy parameters (e.g.,
+                        <literal>maxNodes</literal>
+                        or
+                        <literal>timeToIdleSeconds</literal>
+                        )
+                    </para>
+
+                    <para>A region in JBoss Cache denotes a portion of tree hierarchy,
+                        e.g., a fully qualified name (
+                        <literal>org.jboss.cache.Fqn</literal>
+                        ). For example,
+                        a user can define
+                        <literal>/org/jboss</literal>
+                        and
+                        <literal>/org/foocom</literal>
+                        as two separate regions. But note
+                        that you can configure the region programmatically now, i.e.,
+                        everything has to be configured through the xml file.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>I have turned on the eviction policy, why do I still get "out
+                        of memory" (OOM) exception?
+                    </para>
+                </question>
+
+                <answer>
+                    <para>OOM can happen when the speed of cache access exceeds the
+                        speed of eviction policy handling timer. Eviction policy handler
+                        will wake up every
+                        <literal>wakeUpInterval</literal>
+                        milliseconds (or
+                        <literal>wakeUpIntervalSeconds</literal>
+                        seconds, prior to 3.x)
+                        to process the eviction event queue. So when the queue size is full, it will create a
+                        backlog and cause out-of-memory exceptions to happen unless the eviction timer catches
+                        up. To address this problem, in addition to increase the VM heap
+                        size, you can also reduce the
+                        <literal>wakeUpInterval</literal>
+                        so the timer thread
+                        processes the queue more frequently.
+                    </para>
+                </answer>
+            </qandaentry>
+        </qandaset>
+    </chapter>
+    <chapter id="cacheloaders">
+        <title>Cache Loaders</title>
+        <qandaset>
+
+
+            <qandaentry>
+                <question>
+                    <para>What is a cache loader?</para>
+                </question>
+
+                <answer>
+                    <para>A cache loader is the connection of JBoss Cache to a
+                        (persistent) data store. The cache loader is called by JBoss Cache to
+                        fetch data from a store when that data is not in the cache, and when
+                        modifications are made to data in the cache the Cache Loader is
+                        called to store those modifications back to the store.
+                    </para>
+
+                    <para>In conjunction with eviction policies, JBoss Cache with a
+                        cache loader allows a user to maintain a bounded cache for a large
+                        backend datastore. Frequently used data is fetched from the
+                        datastore into the cache, and the least used data is evicted, in
+                        order to provide fast access to frequently accessed data. This is
+                        all configured through XML, and the programmer doesn't have to take
+                        care of loading and eviction.
+                    </para>
+
+                    <para>JBoss Cache currently ships with several cache loader
+                        implementations, including:
+                    </para>
+
+                    <para>
+                        <itemizedlist>
+                            <listitem>
+                                <para>
+                                    <literal>org.jboss.cache.loader.FileCacheLoader</literal>
+                                    : this implementation uses the file
+                                    system to store and retrieve data. JBoss Cache nodes are mapped
+                                    to directories, subnodes to subdirectories etc. Attributes of
+                                    a node are mapped to a data file
+                                    inside the
+                                    directory.
+                                </para>
+                            </listitem>
+
+                            <listitem>
+                                <para>
+                                    <literal>org.jboss.cache.loader.jdbm.JdbmCacheLoader</literal>
+                                    : this implementation is based on<ulink url="http://jdbm.sourceforge.net/">
+                                    JDBM</ulink>,
+                                    an open source file-based transactional persistence engine.
+                                </para>
+                            </listitem>
+
+                            <listitem>
+                                <para>
+                                    <literal>org.jboss.cache.loader.bdbje.BdbjeCacheLoader</literal>
+                                    : this implementation is based on the
+                                    Oracle's Berkeley DB Java Edition database, a fast and efficient
+                                    transactional database. It uses a single file for the entire
+                                    store. Note that if you use the Berkeley DB cache loader with
+                                    JBoss Cache and wish to ship your product, you will have to acquire a
+                                    <ulink url="http://www.sleepycat.com/jeforjbosscache">commercial license from
+                                        Oracle</ulink>.
+                                </para>
+                            </listitem>
+
+                            <listitem>
+                                <para>
+                                    <literal>org.jboss.cache.loader.JDBCCacheLoader</literal>
+                                    : this implementation uses the relational database as the persistent
+                                    storage.
+                                </para>
+                            </listitem>
+
+                            <listitem>
+                                <para>And more. See the chapter on cache loaders in the Users' Guide for more details.
+                                </para>
+                            </listitem>
+                        </itemizedlist>
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Is the FileCacheLoader recommended for production use?</para>
+                </question>
+
+                <answer>
+                    <para>
+                        No, it is not. The FileCacheLoader has some severe limitations which restrict its use in a
+                        production
+                        environment, or if used in such an environment, it should be used with due care and sufficient
+                        understanding of these limitations.
+                        <itemizedlist>
+                            <listitem>Due to the way the FileCacheLoader represents a tree structure on disk
+                                (directories and
+                                files) traversal is inefficient for deep trees.
+                            </listitem>
+                            <listitem>Usage on shared filesystems like NFS, Windows shares, etc. should be avoided as
+                                these do
+                                not implement proper file locking and can cause data corruption.
+                            </listitem>
+                            <listitem>Usage with an isolation level of NONE can cause corrupt writes as multiple threads
+                                attempt to write to the same file.
+                            </listitem>
+                            <listitem>File systems are inherently not transactional, so when attempting to use your
+                                cache in a
+                                transactional context, failures when writing to the file (which happens during the
+                                commit phase)
+                                cannot be recovered.
+                            </listitem>
+                        </itemizedlist>
+
+                        As a rule of thumb, it is recommended that the FileCacheLoader not be used in a highly
+                        concurrent,
+                        transactional or stressful environment, and its use is restricted to testing.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Can writing to cache loaders be asynchronous?</para>
+                </question>
+
+                <answer>
+                    <para>Yes. Set the
+                        <literal>async</literal>
+                        attrobute to true. See the JBoss Cache Users' Guide for a more
+                        detailed discussion. By default though, all cache loader writes are
+                        synchronous and will block.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Can I write my own cache loader ?</para>
+                </question>
+
+                <answer>
+                    <para>Yes. A cache loader is a class implementing
+                        <literal>org.jboss.cache.loader.CacheLoader</literal>
+                        or extending
+                        <literal>org.jboss.cache.loader.AbstractCacheLoader</literal>
+                        . It is
+                        configured via the XML file (see JBoss Cache Users' Guide).
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Does a cache loader have to use a persistent store ?</para>
+                </question>
+
+                <answer>
+                    <para>No, a cache loader could for example fetch (and possibly store)
+                        its data from a webdav-capable webserver. Another example is a
+                        caching proxy server, which fetches contents from the web. Note that
+                        an implementation of CacheLoader may not implement the 'store'
+                        functionality in this case, but just the 'load'
+                        functionality.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Do I have to pay to use Oracle's Berkeley DB CacheLoader?</para>
+                </question>
+
+                <answer>
+                    <para>Not if you use it only for personal use. As soon as you
+                        distribute your product with BdbjeCacheLoader, you have to purchase
+                        a commercial license from Oracle. See details at
+                        <ulink
+                                url="http://www.sleepycat.com/jeforjbosscache">http://www.sleepycat.com/jeforjbosscache
+                        </ulink>
+                        .
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Are there any tools available to monitor the Berkeley DB instance?</para>
+                </question>
+
+                <answer>
+                    <para>
+                        Yes. Oracle ships a JMX-based monitoring tool, called
+                        <ulink
+                                url="http://www.oracle.com/technology/documentation/berkeley-db/je/java/com/sleepycat/je/jmx/JEMonitor.html">
+                            JEMonitor
+                        </ulink>
+                        which can be downloaded from the Oracle website.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>When tuning my Berkeley DB instance, where should I put my je.properties file?</para>
+                </question>
+
+                <answer>
+                    <para>
+                        <literal>je.properties</literal>
+                        should reside in your Berkeley DB home directory. This is the directory you pass
+                        in to the BDBJECacheLoader's
+                        <literal>location</literal>
+                        configuration property.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Can I use more than one cache loader?</para>
+                </question>
+
+                <answer>
+                    <para>Yes. Within the CacheLoaderConfiguration XML
+                        element (see Users' Guide chapter on cache loaders) you can
+                        describe several cache loaders. The impact is that the cache will
+                        look at all of the cache loaders in the order they've been
+                        configured, until it finds a valid, non-null element of data. When
+                        performing writes, all cache loaders are written to (except if the
+                        ignoreModifications element has been set to true for a specific
+                        cache loader.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>Can I migrate a JDBCacheLoader or FileCacheLoader based cache store containing data formatted
+                        with
+                        JBoss Cache 1.x.x to JBoss Cache 2.0 format?
+                    </para>
+                </question>
+
+                <answer>
+                    <para>Yes. See "Transforming Cache Loaders" section within the "Cache Loaders" section located in
+                        the
+                        JBoss Cache Users' Guide.
+                    </para>
+                </answer>
+            </qandaentry>
+
+            <qandaentry>
+                <question>
+                    <para>
+                        Is the TCPDelegatingCacheLoader resilient to TCPCacheServer restarts?
+                    </para>
+                </question>
+
+                <answer>
+                    <para>
+                        As of JBoss Cache 2.1.0, the answer is yes. See the Users' Guide for details on how to configure
+                        and
+                        tune
+                        your retries and wait period for reestablishing the TCP connection.
+                    </para>
+                    <para>
+                        Prior to that, restarting the TCPCacheServer would also mean
+                        restarting your application that uses the cache.
+                    </para>
+                </answer>
+            </qandaentry>
+
+        </qandaset>
+    </chapter>
+    <chapter id="troubleshooting">
+        <title>Troubleshooting</title>
+        <qandaset>
+
+            <qandaentry>
+                <question>
+                    <para>I am having problems getting JBoss Cache to work, where can I get information on
+                        troubleshooting?
+                    </para>
+                </question>
+                <answer>
+                    <para>Troubleshooting section can be found in the following
+                        <ulink url="http://www.jboss.org/community/docs/DOC-10288">wiki link</ulink>
+                        .
+                    </para>
+                </answer>
+            </qandaentry>
+        </qandaset>
+    </chapter>
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Revision_History.xml"/>
+</book>

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Revision_History.xml
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Revision_History.xml	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/Revision_History.xml	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,26 @@
+<?xml version='1.0'?>
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<appendix id="appe-Publican-Revision_History">
+	<title>Revision History</title>
+	<simpara>
+		<revhistory>
+			<revision>
+				<revnumber>1.0</revnumber>
+				<date></date>
+				<author>
+					<firstname></firstname>
+					<surname></surname>
+					<email></email>
+				</author>
+				<revdescription>
+					<simplelist>
+						<member></member>
+					</simplelist>
+				</revdescription>
+			</revision>
+		</revhistory>
+	</simpara>
+</appendix>
+

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/images/icon.svg
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/images/icon.svg	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_FAQ/en-US/images/icon.svg	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,3936 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:ns="http://ns.adobe.com/AdobeSVGViewerExtensions/3/"
+   xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg3017"
+   sodipodi:version="0.32"
+   inkscape:version="0.44+devel"
+   sodipodi:docname="book.svg"
+   sodipodi:docbase="/home/andy/Desktop">
+  <metadata
+     id="metadata489">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="858"
+     inkscape:pageshadow="0"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="1"
+     inkscape:cx="16"
+     inkscape:cy="15.944056"
+     inkscape:window-x="0"
+     inkscape:window-y="33"
+     inkscape:current-layer="svg3017" />
+  <defs
+     id="defs3019">
+    <linearGradient
+       id="linearGradient2381">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop2383" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop2385" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="XMLID_1758_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop3903" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3905" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3890" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3892" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1755_">
+      <use
+         id="use3874"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3877" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3879" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3881" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3883" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="XMLID_1754_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop3863" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop3865" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop3867" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop3869" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop3851" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3853" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1751_">
+      <use
+         id="use3837"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3840" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3842" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3844" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3846" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="XMLID_1750_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3830" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3832" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3818" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3820" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="XMLID_1748_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3803" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3805" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3807" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3809" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="XMLID_2275_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9947" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9949" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9951" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9953" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_2273_">
+      <use
+         id="use9933"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="XMLID_2274_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9936" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9938" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9940" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9942" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="XMLID_2272_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9917" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9919" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9921" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9923" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleInM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(-0.4,-0.4)"
+         style="fill:#5c5c4f"
+         id="path3197" />
+    </marker>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="XMLID_3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#bfbfbf;stop-opacity:1"
+         offset="0"
+         id="stop20103" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop20105" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="linearGradient36592"
+       xlink:href="#XMLID_3298_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="XMLID_3297_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop20096" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20098" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="linearGradient36595"
+       xlink:href="#XMLID_3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="XMLID_3296_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#0f6124;stop-opacity:1"
+         offset="0"
+         id="stop20087" />
+      <stop
+         style="stop-color:#219630;stop-opacity:1"
+         offset="1"
+         id="stop20089" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#219630" />
+    </linearGradient>
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="linearGradient36677"
+       xlink:href="#XMLID_3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="XMLID_3295_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20076" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.5"
+         id="stop20078" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20080" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="linearGradient36604"
+       xlink:href="#XMLID_3295_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="XMLID_3294_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop20069" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20071" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="linearGradient36607"
+       xlink:href="#XMLID_3294_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="XMLID_3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20056" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20058" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20060" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20062" />
+      <stop
+         style="stop-color:#c2c2c2;stop-opacity:1"
+         offset="0.5"
+         id="stop20064" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C2C2C2" />
+    </linearGradient>
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="linearGradient36610"
+       xlink:href="#XMLID_3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="XMLID_3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20043" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20045" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20047" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20049" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20051" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="linearGradient36613"
+       xlink:href="#XMLID_3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleOutM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(0.4,0.4)"
+         style="fill:#5c5c4f;fill-rule:evenodd;stroke-width:1pt;marker-start:none"
+         id="path3238" />
+    </marker>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="XMLID_3457_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="stop8309" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8311" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="stop8313" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#B2B2B2" />
+    </linearGradient>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="lg1997"
+       xlink:href="#XMLID_3457_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="XMLID_3456_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="stop8300" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8302" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8304" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="lg2000"
+       xlink:href="#XMLID_3456_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="XMLID_3455_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8291" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.69999999"
+         id="stop8293" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8295" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.7"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="lg2003"
+       xlink:href="#XMLID_3455_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       id="lg63694">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop63696" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop63698" />
+    </linearGradient>
+    <linearGradient
+       x1="458"
+       y1="483"
+       x2="465.20001"
+       y2="271.39999"
+       id="lg2006"
+       xlink:href="#lg63694"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(6.3e-2,0,0,6.3e-2,-1.3,-9.8)" />
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="XMLID_3453_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8271" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0.2"
+         id="stop8273" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8275" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="lg2009"
+       xlink:href="#XMLID_3453_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="XMLID_3449_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8232" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8234" />
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="1"
+         id="stop8236" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#ECD600" />
+    </linearGradient>
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="lg2016"
+       xlink:href="#XMLID_3449_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8219" />
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8221" />
+      <stop
+         style="stop-color:#c96b00;stop-opacity:1"
+         offset="0.89999998"
+         id="stop8223" />
+      <stop
+         style="stop-color:#9a5500;stop-opacity:1"
+         offset="1"
+         id="stop8225" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.9"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#9A5500" />
+    </radialGradient>
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="rg2020"
+       xlink:href="#XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.513992,0,0,2.347576,-689.1621,-378.5717)" />
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="XMLID_3447_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="0"
+         id="stop8204" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8206" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8208" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="lg2026"
+       xlink:href="#XMLID_3447_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop8197" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="1"
+         id="stop8199" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFF95E" />
+    </radialGradient>
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="rg2029"
+       xlink:href="#XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.7,0,0,1.7,-457.5,-266.8)" />
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="XMLID_3445_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8184" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8186" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8188" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8190" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8192" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="lg2032"
+       xlink:href="#XMLID_3445_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="XMLID_3444_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8171" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8173" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8175" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8177" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8179" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="lg2035"
+       xlink:href="#XMLID_3444_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="379.70001"
+       y1="167.89999"
+       x2="383.89999"
+       y2="172.89999"
+       id="lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16159" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16161" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s16163" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="379.60001"
+       y1="167.8"
+       x2="383.79999"
+       y2="172"
+       id="lg6416"
+       xlink:href="#lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.622156,0.623859,-0.623859,2.62182,-882.9706,-673.7921)" />
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="s16152" />
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="1"
+         id="s16154" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg6453"
+       xlink:href="#lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="0"
+         id="s16145" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="s16147" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg6456"
+       xlink:href="#lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <radialGradient
+       cx="347.29999"
+       cy="244.5"
+       r="5.1999998"
+       fx="347.29999"
+       fy="244.5"
+       id="lg4282_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#333;stop-opacity:1"
+         offset="0"
+         id="s16135" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s16137" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0"
+         id="s16111" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.60000002"
+         id="s16113" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="1"
+         id="s16115" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.6" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg6467"
+       xlink:href="#lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16100" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.40000001"
+         id="s16102" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0.89999998"
+         id="s16104" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16106" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.9" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg6465"
+       xlink:href="#lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="307.79999"
+       y1="395.20001"
+       x2="313.79999"
+       y2="413.60001"
+       id="lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16091" />
+      <stop
+         style="stop-color:#fcd72f;stop-opacity:1"
+         offset="0.40000001"
+         id="s16093" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16095" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="306.5"
+       y1="393"
+       x2="309"
+       y2="404"
+       id="lg6400"
+       xlink:href="#lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="352.10001"
+       y1="253.60001"
+       x2="348.5"
+       y2="237.8"
+       id="lg4276_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16077" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16079" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s16057" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.80000001"
+         id="s16059" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="s16061" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.8" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg6463"
+       xlink:href="#lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16048" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16050" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16052" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg6461"
+       xlink:href="#lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16041" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16043" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="5.6e-003" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg6381"
+       xlink:href="#lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="348.39999"
+       y1="247.39999"
+       x2="354.10001"
+       y2="242"
+       id="lg4271_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s16025" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.40000001"
+         id="s16027" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="s16029" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#000000"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg4270_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16007" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16009" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg6459"
+       xlink:href="#lg4270_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)" />
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="XMLID_2708_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop75318" />
+      <stop
+         style="stop-color:#fffcea;stop-opacity:1"
+         offset="1"
+         id="stop75320" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#FFFCEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="lg1907"
+       xlink:href="#XMLID_2708_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="XMLID_2707_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffdea0;stop-opacity:1"
+         offset="0"
+         id="stop75305" />
+      <stop
+         style="stop-color:#ffd89e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75307" />
+      <stop
+         style="stop-color:#ffd79e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75309" />
+      <stop
+         style="stop-color:#dbaf6d;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75311" />
+      <stop
+         style="stop-color:#6f4c24;stop-opacity:1"
+         offset="1"
+         id="stop75313" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.3" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6F4C24"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="lg1910"
+       xlink:href="#XMLID_2707_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="58"
+       y1="73.199997"
+       x2="44.5"
+       y2="19"
+       id="XMLID_2704_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)">
+      <stop
+         style="stop-color:#d4a96c;stop-opacity:1"
+         offset="0.5"
+         id="stop75284" />
+      <stop
+         style="stop-color:#dcb273;stop-opacity:1"
+         offset="0.60000002"
+         id="stop75286" />
+      <stop
+         style="stop-color:#f0ca87;stop-opacity:1"
+         offset="0.80000001"
+         id="stop75288" />
+      <stop
+         style="stop-color:#ffdc96;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75290" />
+      <stop
+         style="stop-color:#c18a42;stop-opacity:1"
+         offset="1"
+         id="stop75292" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C18A42"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="XMLID_2703_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0"
+         id="stop75268" />
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0.40000001"
+         id="stop75270" />
+      <stop
+         style="stop-color:#c0aa94;stop-opacity:1"
+         offset="1"
+         id="stop75272" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.4" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C0AA94"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="lg1916"
+       xlink:href="#XMLID_2703_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="224.31"
+       y1="19.450001"
+       x2="214.33"
+       y2="11.46"
+       id="XMLID_419_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#404040;stop-opacity:1"
+         offset="0"
+         id="s1903" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1905" />
+      <stop
+         style="stop-color:#e9e9e9;stop-opacity:1"
+         offset="1"
+         id="s1907" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E9E9E9" />
+    </linearGradient>
+    <linearGradient
+       x1="221.84"
+       y1="32.779999"
+       x2="212.2"
+       y2="20.27"
+       id="lg1988"
+       xlink:href="#XMLID_419_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1900"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s1902" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s1906" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.33" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D3D3D3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="234.81"
+       y1="33.279999"
+       x2="228.27"
+       y2="33.279999"
+       id="lg1908"
+       xlink:href="#lg1900"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="XMLID_416_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#575757;stop-opacity:1"
+         offset="0"
+         id="s1874" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1876" />
+      <stop
+         style="stop-color:#d3d3d3;stop-opacity:1"
+         offset="1"
+         id="s1878" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#D3D3D3" />
+    </linearGradient>
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1991"
+       xlink:href="#XMLID_416_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1,0,0,1.1,-54.33,-75.4)">
+      <stop
+         style="stop-color:#c9ffc9;stop-opacity:1"
+         offset="0"
+         id="stop29201" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="stop29203" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#23A11F" />
+    </radialGradient>
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="radialGradient5711"
+       xlink:href="#x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.23,0,0,1.23,-709.93,-245.02)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5722"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="x5002_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29134" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.2"
+         id="stop29136" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="stop29138" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.20"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#999999" />
+    </linearGradient>
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="lg5725"
+       xlink:href="#x5002_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29157" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29159" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="lg5728"
+       xlink:href="#x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="x5003_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="stop29143" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="stop29145" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E5E5E5" />
+    </linearGradient>
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5732"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29124" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29126" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="lg5735"
+       xlink:href="#x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="XMLID_2433_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d6d6d6;stop-opacity:1"
+         offset="0"
+         id="71615" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71617" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="lg1952"
+       xlink:href="#XMLID_2433_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.98,0,0,0.98,2.88,2.75)">
+      <stop
+         style="stop-color:#d2d2d2;stop-opacity:1"
+         offset="0.19"
+         id="71592" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.44999999"
+         id="71594" />
+      <stop
+         style="stop-color:#c7c7c7;stop-opacity:1"
+         offset="0.60000002"
+         id="71596" />
+      <stop
+         style="stop-color:#b9b9b9;stop-opacity:1"
+         offset="0.74000001"
+         id="71598" />
+      <stop
+         style="stop-color:#a4a4a4;stop-opacity:1"
+         offset="0.86000001"
+         id="71600" />
+      <stop
+         style="stop-color:#8a8a8a;stop-opacity:1"
+         offset="0.95999998"
+         id="71602" />
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="1"
+         id="71604" />
+      <a:midPointStop
+         offset="0.19"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="0.8"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#808080" />
+    </radialGradient>
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="radialGradient2331"
+       xlink:href="#XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-276.62,-121.54)" />
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="XMLID_2430_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b5d8ff;stop-opacity:1"
+         offset="0"
+         id="71582" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="71584" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#000000" />
+    </linearGradient>
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="lg2820"
+       xlink:href="#XMLID_2430_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="XMLID_2429_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0"
+         id="71564" />
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0.25"
+         id="71566" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="0.44"
+         id="71568" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71570" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.25"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.44"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="lg2818"
+       xlink:href="#XMLID_2429_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.851,0,0,0.849,69.297,51.658)">
+      <stop
+         style="stop-color:#23468e;stop-opacity:1"
+         offset="0"
+         id="stop10972" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10974" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </radialGradient>
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="rg5791"
+       xlink:href="#lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.858,0,0,0.857,-511.7,9.02)" />
+    <linearGradient
+       x1="616.112"
+       y1="76.247002"
+       x2="588.14099"
+       y2="60.742001"
+       id="lg3497_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#01326e;stop-opacity:1"
+         offset="0"
+         id="stop10962" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10964" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg3496_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop10950" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10952" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg5794"
+       xlink:href="#lg3496_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg3495_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10941" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10943" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10945" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg5771"
+       xlink:href="#lg3495_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.615,-43.098)" />
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg3494_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10932" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10934" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10936" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg5774"
+       xlink:href="#lg3494_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.616,-43.098)" />
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="g3302_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#005e00;stop-opacity:1"
+         offset="0"
+         id="s6504" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="s6506" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#23A11F"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="lg5851"
+       xlink:href="#g3302_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s6483" />
+      <stop
+         style="stop-color:#eee;stop-opacity:1"
+         offset="0.17"
+         id="s6485" />
+      <stop
+         style="stop-color:#e3e3e3;stop-opacity:1"
+         offset="0.34"
+         id="s6487" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.50999999"
+         id="s6489" />
+      <stop
+         style="stop-color:#b4b4b4;stop-opacity:1"
+         offset="0.67000002"
+         id="s6491" />
+      <stop
+         style="stop-color:#919191;stop-opacity:1"
+         offset="0.83999997"
+         id="s6493" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6495" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.71" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="lg5855"
+       xlink:href="#g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,103.123)" />
+    <clipPath
+       id="g3299_">
+      <use
+         id="use6469"
+         x="0"
+         y="0"
+         width="1005.92"
+         height="376.97"
+         xlink:href="#g101_" />
+    </clipPath>
+    <radialGradient
+       cx="1189.9301"
+       cy="100.05"
+       r="40.400002"
+       fx="1189.9301"
+       fy="100.05"
+       id="g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,-8.46e-2,0,0.34,394.16,137.13)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6472" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s6474" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#000000"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1199.74"
+       cy="97.150002"
+       r="40.400002"
+       fx="1199.74"
+       fy="97.150002"
+       id="rg5860"
+       xlink:href="#g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.409,-0.107,0,0.429,-451.489,113.149)" />
+    <linearGradient
+       x1="796.38"
+       y1="67.580002"
+       x2="781.28003"
+       y2="58.549999"
+       id="g3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#4c8bca;stop-opacity:1"
+         offset="0"
+         id="s6462" />
+      <stop
+         style="stop-color:#b7e9ff;stop-opacity:1"
+         offset="1"
+         id="s6464" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B7E9FF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6448" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6450" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="lg5890"
+       xlink:href="#g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)" />
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,70.17)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6439" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.51999998"
+         id="s6441" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6443" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.52" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="lg5866"
+       xlink:href="#g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,28.6)" />
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="g3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6412" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6414" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="lg5871"
+       xlink:href="#g3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="g3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="s6403" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.28"
+         id="s6405" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6407" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.28" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="lg5874"
+       xlink:href="#g3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,137.29)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6380" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="s6382" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="lg5878"
+       xlink:href="#g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,113.351)" />
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6371" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6373" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="rg5881"
+       xlink:href="#g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,0,0,0.36,238.56,86.87)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6362" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.63999999"
+         id="s6364" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6366" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.64" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="rg5884"
+       xlink:href="#g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.408,0,0,0.448,-638.943,49.495)" />
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6347" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.38999999"
+         id="s6349" />
+      <stop
+         style="stop-color:#b1b1b1;stop-opacity:1"
+         offset="0.75"
+         id="s6351" />
+      <stop
+         style="stop-color:#aaa;stop-opacity:1"
+         offset="0.88"
+         id="s6353" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.97000003"
+         id="s6355" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6357" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.39" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.87" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="rg5887"
+       xlink:href="#g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <pattern
+       patternTransform="matrix(0.592927,0,0,0.592927,78,462)"
+       id="cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-365.3146,-513.505)"
+         id="g3047">
+           id=&quot;path2858&quot; /&gt;
+        <path
+   inkscape:label="#path2854"
+   sodipodi:nodetypes="czzzz"
+   style="fill:#e3dcc0"
+   id="path3060"
+   d="M 390.31462,529.50504 C 390.31462,534.47304 386.28262,538.50504 381.31462,538.50504 C 376.34662,538.50504 372.31462,534.47304 372.31462,529.50504 C 372.31462,524.53704 376.34662,520.50504 381.31462,520.50504 C 386.28262,520.50504 390.31462,524.53704 390.31462,529.50504 z " />
+</g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.733751,0,0,0.733751,67,367)"
+       id="dark-cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-408.0946,-513.505)"
+         id="dark-cream-spot"
+         inkscape:label="#g3043">
+        <path
+           sodipodi:nodetypes="czzzz"
+           style="fill:#c8c5ac"
+           d="M 433.09458,529.50504 C 433.09458,534.47304 429.06258,538.50504 424.09458,538.50504 C 419.12658,538.50504 415.09458,534.47304 415.09458,529.50504 C 415.09458,524.53704 419.12658,520.50504 424.09458,520.50504 C 429.06258,520.50504 433.09458,524.53704 433.09458,529.50504 z "
+           id="path2953" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.375,0,0,0.375,379,400)"
+       id="white-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-484.3997,-513.505)"
+         id="white-spot"
+         inkscape:label="#g3035">
+        <path
+           style="opacity:0.25;fill:white"
+           id="path3033"
+           d="M 509.39967,529.50504 C 509.39967,534.47304 505.36767,538.50504 500.39967,538.50504 C 495.43167,538.50504 491.39967,534.47304 491.39967,529.50504 C 491.39967,524.53704 495.43167,520.50504 500.39967,520.50504 C 505.36767,520.50504 509.39967,524.53704 509.39967,529.50504 z "
+           sodipodi:nodetypes="czzzz" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.455007,0,0,0.455007,-5e-5,1.9e-5)"
+       id="black-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-448.3997,-513.505)"
+         id="black-spot"
+         inkscape:label="#g3039">
+        <path
+           sodipodi:nodetypes="czzzz"
+           d="M 473.39967,529.50504 C 473.39967,534.47304 469.36767,538.50504 464.39967,538.50504 C 459.43167,538.50504 455.39967,534.47304 455.39967,529.50504 C 455.39967,524.53704 459.43167,520.50504 464.39967,520.50504 C 469.36767,520.50504 473.39967,524.53704 473.39967,529.50504 z "
+           id="path2961"
+           style="opacity:0.25;fill:black" />
+      </g>
+    </pattern>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="linearGradient17334"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17336" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17338" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17340" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17342" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5112"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.6461"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#16336E" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="linearGradient17426"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop17428" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17430" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="linearGradient17434"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17436" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17438" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17440" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17442" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="0.4213"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A6100C" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17709"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17711"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17713"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17715"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17717"
+       xlink:href="#XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17721"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17723"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17416"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17418" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17420" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <defs
+       id="defs9929">
+      <path
+         d="M 489.21,209.35 L 485.35,203.63 C 483.63,204.25 473.47,208.93 471.5,210.18 C 470.57,210.77 470.17,211.16 469.72,212.48 C 470.93,212.31 471.72,212.49 473.42,213.04 C 473.26,214.77 473.24,215.74 473.57,218.2 C 474.01,216.88 474.41,216.49 475.34,215.9 C 477.33,214.65 487.49,209.97 489.21,209.35 z "
+         id="XMLID_960_" />
+    </defs>
+    <clipPath
+       id="clipPath17448">
+      <use
+         id="use17450"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17452"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17454" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17456" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17458" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17460" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17463"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17465" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17467" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17469" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17471" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17807"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17810"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17812"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17814"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17816"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17818"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17347"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17349" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17351" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#96BAD6" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17379"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop17381" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17383" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17862"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,-166.1427,-0.18283)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17864"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3859">
+      <polygon
+         points="465.54,213.52 481.94,217.46 482.74,216.71 487.46,198.05 471.08,194.07 470.26,194.83 465.54,213.52 "
+         id="XMLID_343_" />
+    </defs>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="linearGradient17389"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop17391" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop17393" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop17395" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop17397" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17400">
+      <use
+         id="use17402"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17404"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17406" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17408" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17410" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17412" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17882"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3826">
+      <polygon
+         points="463.52,216.14 480.56,220.24 481.36,219.5 483.03,202.04 469.05,196.69 468.24,197.45 463.52,216.14 "
+         id="XMLID_338_" />
+    </defs>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="linearGradient17357"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17359" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17361" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17364">
+      <use
+         id="use17366"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17368"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17370" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17372" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17374" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17376" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient2387"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5105"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5145"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2381"
+       id="linearGradient2371"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)"
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398" />
+  </defs>
+  <g
+     transform="matrix(0.437808,-0.437808,0.437808,0.437808,-220.8237,43.55311)"
+     id="g5089">
+    <path
+       d="M 8.4382985,-6.28125 C 7.8309069,-6.28125 4.125,-0.33238729 4.125,1.96875 L 4.125,28.6875 C 4.125,29.533884 4.7068159,29.8125 5.28125,29.8125 L 30.84375,29.8125 C 31.476092,29.8125 31.968751,29.319842 31.96875,28.6875 L 31.96875,23.46875 L 32.25,23.46875 C 32.74684,23.46875 33.156249,23.059339 33.15625,22.5625 L 33.15625,-5.375 C 33.15625,-5.8718398 32.74684,-6.28125 32.25,-6.28125 L 8.4382985,-6.28125 z "
+       transform="translate(282.8327,227.1903)"
+       style="fill:#5c5c4f;stroke:black;stroke-width:3.23021388;stroke-miterlimit:4;stroke-dasharray:none"
+       id="path5091" />
+    <rect
+       width="27.85074"
+       height="29.369793"
+       rx="1.1414107"
+       ry="1.1414107"
+       x="286.96509"
+       y="227.63805"
+       style="fill:#032c87"
+       id="rect5093" />
+    <path
+       d="M 288.43262,225.43675 L 313.67442,225.43675 L 313.67442,254.80655 L 287.29827,254.83069 L 288.43262,225.43675 z "
+       style="fill:white"
+       id="rect5095" />
+    <path
+       d="M 302.44536,251.73726 C 303.83227,259.59643 301.75225,263.02091 301.75225,263.02091 C 303.99609,261.41329 305.71651,259.54397 306.65747,257.28491 C 307.62455,259.47755 308.49041,261.71357 310.9319,263.27432 C 310.9319,263.27432 309.33686,256.07392 309.22047,251.73726 L 302.44536,251.73726 z "
+       style="fill:#a70000;fill-opacity:1;stroke-width:2"
+       id="path5097" />
+    <rect
+       width="25.241802"
+       height="29.736675"
+       rx="0.89682275"
+       ry="0.89682275"
+       x="290.73544"
+       y="220.92249"
+       style="fill:#809cc9"
+       id="rect5099" />
+    <path
+       d="M 576.47347,725.93939 L 582.84431,726.35441 L 583.25121,755.8725 C 581.35919,754.55465 576.39694,752.1117 574.98889,754.19149 L 574.98889,727.42397 C 574.98889,726.60151 575.65101,725.93939 576.47347,725.93939 z "
+       transform="matrix(0.499065,-0.866565,0,1,0,0)"
+       style="fill:#4573b3;fill-opacity:1"
+       id="rect5101" />
+    <path
+       d="M 293.2599,221.89363 L 313.99908,221.89363 C 314.45009,221.89363 314.81318,222.25673 314.81318,222.70774 C 315.02865,229.0361 295.44494,244.47124 292.44579,240.30491 L 292.44579,222.70774 C 292.44579,222.25673 292.80889,221.89363 293.2599,221.89363 z "
+       style="opacity:0.65536726;fill:url(#linearGradient2371);fill-opacity:1"
+       id="path5103" />
+  </g>
+</svg>

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/Makefile
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/Makefile	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/Makefile	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,16 @@
+#Makefile for Red Hat Documentation
+#Created by Jeff Fearn <jfearn at redhat.com>
+#Copyright Red Hat Inc. 2006
+
+XML_LANG	= en-US
+
+BRAND = JBoss
+
+OTHER_LANGS	= de-DE es-ES fr-FR ja-JP pt-BR zh-CN 
+
+COMMON_CONFIG  = /usr/share/publican
+include $(COMMON_CONFIG)/make/Makefile.common
+
+
+
+

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/en-US/Author_Group.xml
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/en-US/Author_Group.xml	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/en-US/Author_Group.xml	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,8 @@
+<?xml version='1.0'?>
+<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<authorgroup>
+	<author><firstname>Manik Surtani, Galder Zamarreño</firstname></author>	
+	
+</authorgroup>

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/en-US/Book_Info.xml
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/en-US/Book_Info.xml	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/en-US/Book_Info.xml	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,32 @@
+<?xml version='1.0'?>
+<!DOCTYPE bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+
+<bookinfo id="JBoss_Cache">
+	<title>JBoss Cache Tutorial</title>
+	<subtitle>for Use with JBoss Enterprise Application Platform 5.0</subtitle>
+	<edition>2.0</edition>
+	<pubsnumber>1</pubsnumber>
+	<productname>JBoss Enterprise Application Platform</productname>
+	<productnumber>5.0</productnumber>
+	<abstract>
+		<para>
+			This book is a TreeCache and JBossCache Tutorial.
+		</para>
+	</abstract>
+	<isbn>N/A</isbn>
+	<corpauthor>
+	  <inlinemediaobject>
+		<imageobject>
+			 <imagedata fileref="Common_Content/images/redhat-logo.svg" />
+		 </imageobject>
+	  </inlinemediaobject>
+	</corpauthor>
+	<copyright>
+		<year>&YEAR;</year>
+		<holder>&HOLDER;</holder>
+	</copyright>
+	<xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+        <xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</bookinfo>
+

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/en-US/JBoss_Cache_Tutorial.ent
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/en-US/JBoss_Cache_Tutorial.ent	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/en-US/JBoss_Cache_Tutorial.ent	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,3 @@
+<!ENTITY HOLDER "Red Hat, Inc">
+<!ENTITY YEAR "2009">
+<!ENTITY VERSION "">

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/en-US/JBoss_Cache_Tutorial.xml
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/en-US/JBoss_Cache_Tutorial.xml	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/en-US/JBoss_Cache_Tutorial.xml	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,243 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<book id="JBossCache_Tutorial">
+	<title>JBossCache Tutorial</title>
+	<xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+   <chapter id="JBossCache_Tutorial-Introduction">
+		<title>Introduction</title>
+
+      <para>
+         JBoss Cache is an in-memory replicated, transactional, and fine-grained cache.
+         This tutorial focuses on the core Cache API. Please refer to the accompanying tutorial
+         for POJO Cache, if it is the POJO Cache API you are interested in.
+      </para>
+      <para>
+         For details of configuration, usage and APIs, please refer to the
+         <ulink url="http://labs.jboss.org/jbosscache/docs/index.html">user manuals</ulink>.
+      </para>
+
+   <section>
+      <title>What You Will Learn</title>
+
+      <itemizedlist>
+         <listitem>
+            <para>Cache creation and modification</para>
+         </listitem>
+
+         <listitem>
+            <para>Replication of state</para>
+         </listitem>
+
+         <listitem>
+            <para>Transactions</para>
+         </listitem>
+      </itemizedlist>
+   </section>
+</chapter>
+   <chapter>
+      <title>Configuration</title>
+
+      <para>First download the JBoss Cache 3.x distribution from
+         <ulink url="http://labs.jboss.org/jbosscache/download/index.html">the download page</ulink>. You will need the ALL distribution (
+         <literal>jbosscache-core-3.X.Y.GA-all.zip</literal>).
+         Unzip it, and you will get a directory containing the distribution, such as
+         <literal>jbosscache-core-3.X.Y</literal>
+         .
+         For the sake of this tutorial, I will refer to this as
+         <literal>${JBOSSCACHE_HOME}</literal>
+         .
+      </para>
+
+      <para>The configuration files are located in
+         <literal>${JBOSSCACHE_HOME}/etc</literal>. You can
+         modify the behavior of the cache by editing the various configuration files.
+      </para>
+
+      <itemizedlist>
+         <listitem>
+            <para>
+               <literal>log4j.xml</literal> - Logging output. You can enable logging, specify log levels or
+               change the name and path to the log file.
+            </para>
+         </listitem>
+
+         <listitem>
+            <para>
+               <literal>config-samples/total-replication.xml</literal> - Cache configuration file used for this tutorial.
+            </para>
+         </listitem>
+      </itemizedlist>
+   </chapter>
+
+   <chapter>
+      <title>Script</title>
+
+      <para>The only script needed for this tutorial is the
+         <literal>${JBOSSCACHE_HOME}/tutorial/build.xml</literal>
+         ant script. You also need to have
+         <ulink url="http://ant.apache.org/">Apache Ant</ulink>
+         installed for running the tutorial GUI.
+      </para>
+   </chapter>
+
+   <chapter>
+      <title>Running The Tutorial GUI</title>
+
+      <para>
+         The GUI is run by:
+         <itemizedlist>
+            <listitem>Changing to the
+               <literal>${JBOSSCACHE_HOME}/tutorial</literal>
+               directory (e.g.,<literal>cd ${JBOSSCACHE_HOME}/tutorial</literal>)</listitem>
+            <listitem>And then running the ant script (e.g.,<literal>ant run</literal>)</listitem>
+         </itemizedlist>
+      </para>
+
+      <para>
+         This will cause a GUI window to appear, giving you a tree view of the cache in the top pane and a BeanShell
+         view of the JVM in the lower pane.
+      </para>
+      <para>
+         The BeanShell view is preset with the following variables:
+         <itemizedlist>
+            <listitem>
+               <literal>cache</literal>
+               - a reference to the <literal>org.jboss.cache.Cache</literal> interface, used by the GUI instance.
+            </listitem>
+            <listitem>
+               <literal>root</literal>
+               - a reference to the root <literal>org.jboss.cache.Node</literal> instance for the above cache.
+            </listitem>
+            <listitem>
+               <literal>transactionManager</literal>
+               - a reference to the registered <literal>javax.transaction.TransactionManager</literal> instance.
+            </listitem>
+         </itemizedlist>
+         The references made available to the BeanShell window point to the same cache instance used by the tree view in
+         the
+         GUI above.
+      </para>
+
+      <para>
+         To run the GUI as a replicated tutorial, it is useful to start another command line window and run the ant script
+         again as you did above. Now you will have two cache instances running in two separate GUIs, replicating state
+         to each other.
+      </para>
+
+   </chapter>
+
+   <chapter>
+      <title>Tutorials</title>
+      Note that it is recommended that you shut down and restart the GUI for each of the following tutorials, to
+      ensure clean caches every time.
+      <section>
+         <title>Caches and Nodes</title>
+         <para>
+            For this tutorial, start a single instance of the GUI. In this tutorial, we will:
+
+            <itemizedlist>
+               <listitem>Create nodes under the root node.</listitem>
+               <listitem>Remove nodes under the root node, both individually and recursively.</listitem>
+               <listitem>Add and remove data from nodes.</listitem>
+            </itemizedlist>
+         </para>
+
+         <para>1. Set up the Fqns you need. In the BeanShell pane, create 3 Fqn variables:</para>
+         <programlisting role="JAVA"><![CDATA[
+   childFqn1 = Fqn.fromString("/child1");
+   childFqn2 = Fqn.fromString("/child2");
+   childFqn3 = Fqn.fromString("/child2/child3");
+                    ]]></programlisting>
+
+         <para>2. Create child nodes under the root node.</para>
+         <programlisting role="JAVA"><![CDATA[
+   child1 = root.addChild(childFqn1);
+   child2 = root.addChild(childFqn2);
+   child3 = root.addChild(childFqn3);
+                     ]]></programlisting>
+
+
+         <para>3. Query the nodes.</para>
+         <programlisting role="JAVA"><![CDATA[
+   root.hasChild(childFqn1); // should return true
+   child2.hasChild(childFqn3.getLastElement()); // should return true
+   child3.getParent(); // should return child2
+   child2.getParent(); // should return root
+                 ]]></programlisting>
+
+         <para>4. Put some data in the nodes. By selecting the nodes in the tree view, you should see the contents of
+            each node.
+         </para>
+         <programlisting role="JAVA"><![CDATA[
+   child1.put("key1", "value1");
+   child1.put("key2", "value2");
+   child2.put("key3", "value3");
+   child2.put("key4", "value4");
+   child3.put("key5", "value5");
+   child3.put("key6", "value6");
+                 ]]></programlisting>
+
+         <para>5. Query some of the data.</para>
+
+         <programlisting role="JAVA"><![CDATA[
+   child1.getKeys();
+   child2.getData();
+                 ]]></programlisting>
+
+         <para>6. Remove some data in the nodes.</para>
+
+         <programlisting role="JAVA"><![CDATA[
+   child1.remove("key1");
+   child2.remove("key3");
+   child3.clearData();
+                 ]]></programlisting>
+
+         <para>7. Delete nodes</para>
+
+         <programlisting role="JAVA"><![CDATA[
+   root.removeChild(childFqn1); // will also remove any data held under child1
+   root.removeChild(childFqn2); // will recursively remove child3 as well.
+                 ]]></programlisting>
+
+         <para>
+            In addition to the above, you should refer to the
+            <literal>Cache</literal>
+            and
+            <literal>Node</literal>
+            <ulink url="http://labs.jboss.org/portal/jbosscache/docs/index.html">API docs</ulink>
+            and try out the APIs in the BeanShell script.
+         </para>
+      </section>
+
+      <section>
+         <title>Replication</title>
+         <para>
+            For this tutorial, start two instances instance of the GUI. Repeat the exercises in the previous
+            tutorial,
+            only alternating between the two GUI windows when creating/removing nodes or adding/removing data. This
+            demonstrates
+            how the two cache instances in the two GUIs are kept in sync.
+         </para>
+      </section>
+
+      <section>
+         <title>Transactions</title>
+         <para>
+            For this tutorial, start two instances instance of the GUI. Repeat the exercises in the previous
+            tutorial,
+            only starting transactions before creating/removing nodes or adding/removing data. This will depict how
+            replication only occurs on transaction boundaries. Try rolling back a few transactions as well, to see how
+            nothing gets replicated in these cases.
+            Below is the sample code for managing transactions:
+         </para>
+         <programlisting role="JAVA"><![CDATA[
+              tm = cache.getTransactionManager();
+              tm.begin();
+              // do operations here
+              tm.commit(); // or tm.rollback();              
+            ]]></programlisting>
+      </section>
+
+   </chapter>
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Revision_History.xml"/>
+</book>

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/en-US/Revision_History.xml
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/en-US/Revision_History.xml	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/en-US/Revision_History.xml	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,26 @@
+<?xml version='1.0'?>
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<appendix id="appe-Publican-Revision_History">
+	<title>Revision History</title>
+	<simpara>
+		<revhistory>
+			<revision>
+				<revnumber>1.0</revnumber>
+				<date></date>
+				<author>
+					<firstname></firstname>
+					<surname></surname>
+					<email></email>
+				</author>
+				<revdescription>
+					<simplelist>
+						<member></member>
+					</simplelist>
+				</revdescription>
+			</revision>
+		</revhistory>
+	</simpara>
+</appendix>
+

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/en-US/images/icon.svg
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/en-US/images/icon.svg	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_Tutorial/en-US/images/icon.svg	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,3936 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:ns="http://ns.adobe.com/AdobeSVGViewerExtensions/3/"
+   xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg3017"
+   sodipodi:version="0.32"
+   inkscape:version="0.44+devel"
+   sodipodi:docname="book.svg"
+   sodipodi:docbase="/home/andy/Desktop">
+  <metadata
+     id="metadata489">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="858"
+     inkscape:pageshadow="0"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="1"
+     inkscape:cx="16"
+     inkscape:cy="15.944056"
+     inkscape:window-x="0"
+     inkscape:window-y="33"
+     inkscape:current-layer="svg3017" />
+  <defs
+     id="defs3019">
+    <linearGradient
+       id="linearGradient2381">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop2383" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop2385" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="XMLID_1758_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop3903" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3905" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3890" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3892" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1755_">
+      <use
+         id="use3874"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3877" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3879" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3881" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3883" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="XMLID_1754_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop3863" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop3865" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop3867" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop3869" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop3851" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3853" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1751_">
+      <use
+         id="use3837"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3840" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3842" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3844" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3846" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="XMLID_1750_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3830" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3832" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3818" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3820" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="XMLID_1748_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3803" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3805" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3807" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3809" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="XMLID_2275_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9947" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9949" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9951" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9953" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_2273_">
+      <use
+         id="use9933"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="XMLID_2274_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9936" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9938" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9940" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9942" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="XMLID_2272_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9917" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9919" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9921" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9923" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleInM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(-0.4,-0.4)"
+         style="fill:#5c5c4f"
+         id="path3197" />
+    </marker>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="XMLID_3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#bfbfbf;stop-opacity:1"
+         offset="0"
+         id="stop20103" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop20105" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="linearGradient36592"
+       xlink:href="#XMLID_3298_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="XMLID_3297_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop20096" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20098" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="linearGradient36595"
+       xlink:href="#XMLID_3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="XMLID_3296_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#0f6124;stop-opacity:1"
+         offset="0"
+         id="stop20087" />
+      <stop
+         style="stop-color:#219630;stop-opacity:1"
+         offset="1"
+         id="stop20089" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#219630" />
+    </linearGradient>
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="linearGradient36677"
+       xlink:href="#XMLID_3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="XMLID_3295_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20076" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.5"
+         id="stop20078" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20080" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="linearGradient36604"
+       xlink:href="#XMLID_3295_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="XMLID_3294_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop20069" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20071" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="linearGradient36607"
+       xlink:href="#XMLID_3294_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="XMLID_3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20056" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20058" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20060" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20062" />
+      <stop
+         style="stop-color:#c2c2c2;stop-opacity:1"
+         offset="0.5"
+         id="stop20064" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C2C2C2" />
+    </linearGradient>
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="linearGradient36610"
+       xlink:href="#XMLID_3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="XMLID_3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20043" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20045" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20047" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20049" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20051" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="linearGradient36613"
+       xlink:href="#XMLID_3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleOutM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(0.4,0.4)"
+         style="fill:#5c5c4f;fill-rule:evenodd;stroke-width:1pt;marker-start:none"
+         id="path3238" />
+    </marker>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="XMLID_3457_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="stop8309" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8311" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="stop8313" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#B2B2B2" />
+    </linearGradient>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="lg1997"
+       xlink:href="#XMLID_3457_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="XMLID_3456_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="stop8300" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8302" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8304" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="lg2000"
+       xlink:href="#XMLID_3456_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="XMLID_3455_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8291" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.69999999"
+         id="stop8293" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8295" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.7"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="lg2003"
+       xlink:href="#XMLID_3455_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       id="lg63694">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop63696" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop63698" />
+    </linearGradient>
+    <linearGradient
+       x1="458"
+       y1="483"
+       x2="465.20001"
+       y2="271.39999"
+       id="lg2006"
+       xlink:href="#lg63694"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(6.3e-2,0,0,6.3e-2,-1.3,-9.8)" />
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="XMLID_3453_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8271" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0.2"
+         id="stop8273" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8275" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="lg2009"
+       xlink:href="#XMLID_3453_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="XMLID_3449_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8232" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8234" />
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="1"
+         id="stop8236" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#ECD600" />
+    </linearGradient>
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="lg2016"
+       xlink:href="#XMLID_3449_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8219" />
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8221" />
+      <stop
+         style="stop-color:#c96b00;stop-opacity:1"
+         offset="0.89999998"
+         id="stop8223" />
+      <stop
+         style="stop-color:#9a5500;stop-opacity:1"
+         offset="1"
+         id="stop8225" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.9"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#9A5500" />
+    </radialGradient>
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="rg2020"
+       xlink:href="#XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.513992,0,0,2.347576,-689.1621,-378.5717)" />
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="XMLID_3447_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="0"
+         id="stop8204" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8206" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8208" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="lg2026"
+       xlink:href="#XMLID_3447_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop8197" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="1"
+         id="stop8199" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFF95E" />
+    </radialGradient>
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="rg2029"
+       xlink:href="#XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.7,0,0,1.7,-457.5,-266.8)" />
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="XMLID_3445_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8184" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8186" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8188" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8190" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8192" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="lg2032"
+       xlink:href="#XMLID_3445_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="XMLID_3444_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8171" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8173" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8175" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8177" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8179" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="lg2035"
+       xlink:href="#XMLID_3444_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="379.70001"
+       y1="167.89999"
+       x2="383.89999"
+       y2="172.89999"
+       id="lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16159" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16161" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s16163" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="379.60001"
+       y1="167.8"
+       x2="383.79999"
+       y2="172"
+       id="lg6416"
+       xlink:href="#lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.622156,0.623859,-0.623859,2.62182,-882.9706,-673.7921)" />
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="s16152" />
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="1"
+         id="s16154" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg6453"
+       xlink:href="#lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="0"
+         id="s16145" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="s16147" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg6456"
+       xlink:href="#lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <radialGradient
+       cx="347.29999"
+       cy="244.5"
+       r="5.1999998"
+       fx="347.29999"
+       fy="244.5"
+       id="lg4282_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#333;stop-opacity:1"
+         offset="0"
+         id="s16135" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s16137" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0"
+         id="s16111" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.60000002"
+         id="s16113" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="1"
+         id="s16115" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.6" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg6467"
+       xlink:href="#lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16100" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.40000001"
+         id="s16102" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0.89999998"
+         id="s16104" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16106" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.9" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg6465"
+       xlink:href="#lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="307.79999"
+       y1="395.20001"
+       x2="313.79999"
+       y2="413.60001"
+       id="lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16091" />
+      <stop
+         style="stop-color:#fcd72f;stop-opacity:1"
+         offset="0.40000001"
+         id="s16093" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16095" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="306.5"
+       y1="393"
+       x2="309"
+       y2="404"
+       id="lg6400"
+       xlink:href="#lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="352.10001"
+       y1="253.60001"
+       x2="348.5"
+       y2="237.8"
+       id="lg4276_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16077" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16079" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s16057" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.80000001"
+         id="s16059" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="s16061" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.8" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg6463"
+       xlink:href="#lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16048" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16050" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16052" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg6461"
+       xlink:href="#lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16041" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16043" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="5.6e-003" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg6381"
+       xlink:href="#lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="348.39999"
+       y1="247.39999"
+       x2="354.10001"
+       y2="242"
+       id="lg4271_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s16025" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.40000001"
+         id="s16027" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="s16029" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#000000"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg4270_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16007" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16009" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg6459"
+       xlink:href="#lg4270_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)" />
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="XMLID_2708_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop75318" />
+      <stop
+         style="stop-color:#fffcea;stop-opacity:1"
+         offset="1"
+         id="stop75320" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#FFFCEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="lg1907"
+       xlink:href="#XMLID_2708_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="XMLID_2707_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffdea0;stop-opacity:1"
+         offset="0"
+         id="stop75305" />
+      <stop
+         style="stop-color:#ffd89e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75307" />
+      <stop
+         style="stop-color:#ffd79e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75309" />
+      <stop
+         style="stop-color:#dbaf6d;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75311" />
+      <stop
+         style="stop-color:#6f4c24;stop-opacity:1"
+         offset="1"
+         id="stop75313" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.3" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6F4C24"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="lg1910"
+       xlink:href="#XMLID_2707_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="58"
+       y1="73.199997"
+       x2="44.5"
+       y2="19"
+       id="XMLID_2704_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)">
+      <stop
+         style="stop-color:#d4a96c;stop-opacity:1"
+         offset="0.5"
+         id="stop75284" />
+      <stop
+         style="stop-color:#dcb273;stop-opacity:1"
+         offset="0.60000002"
+         id="stop75286" />
+      <stop
+         style="stop-color:#f0ca87;stop-opacity:1"
+         offset="0.80000001"
+         id="stop75288" />
+      <stop
+         style="stop-color:#ffdc96;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75290" />
+      <stop
+         style="stop-color:#c18a42;stop-opacity:1"
+         offset="1"
+         id="stop75292" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C18A42"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="XMLID_2703_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0"
+         id="stop75268" />
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0.40000001"
+         id="stop75270" />
+      <stop
+         style="stop-color:#c0aa94;stop-opacity:1"
+         offset="1"
+         id="stop75272" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.4" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C0AA94"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="lg1916"
+       xlink:href="#XMLID_2703_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="224.31"
+       y1="19.450001"
+       x2="214.33"
+       y2="11.46"
+       id="XMLID_419_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#404040;stop-opacity:1"
+         offset="0"
+         id="s1903" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1905" />
+      <stop
+         style="stop-color:#e9e9e9;stop-opacity:1"
+         offset="1"
+         id="s1907" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E9E9E9" />
+    </linearGradient>
+    <linearGradient
+       x1="221.84"
+       y1="32.779999"
+       x2="212.2"
+       y2="20.27"
+       id="lg1988"
+       xlink:href="#XMLID_419_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1900"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s1902" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s1906" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.33" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D3D3D3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="234.81"
+       y1="33.279999"
+       x2="228.27"
+       y2="33.279999"
+       id="lg1908"
+       xlink:href="#lg1900"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="XMLID_416_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#575757;stop-opacity:1"
+         offset="0"
+         id="s1874" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1876" />
+      <stop
+         style="stop-color:#d3d3d3;stop-opacity:1"
+         offset="1"
+         id="s1878" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#D3D3D3" />
+    </linearGradient>
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1991"
+       xlink:href="#XMLID_416_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1,0,0,1.1,-54.33,-75.4)">
+      <stop
+         style="stop-color:#c9ffc9;stop-opacity:1"
+         offset="0"
+         id="stop29201" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="stop29203" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#23A11F" />
+    </radialGradient>
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="radialGradient5711"
+       xlink:href="#x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.23,0,0,1.23,-709.93,-245.02)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5722"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="x5002_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29134" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.2"
+         id="stop29136" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="stop29138" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.20"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#999999" />
+    </linearGradient>
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="lg5725"
+       xlink:href="#x5002_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29157" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29159" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="lg5728"
+       xlink:href="#x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="x5003_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="stop29143" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="stop29145" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E5E5E5" />
+    </linearGradient>
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5732"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29124" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29126" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="lg5735"
+       xlink:href="#x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="XMLID_2433_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d6d6d6;stop-opacity:1"
+         offset="0"
+         id="71615" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71617" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="lg1952"
+       xlink:href="#XMLID_2433_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.98,0,0,0.98,2.88,2.75)">
+      <stop
+         style="stop-color:#d2d2d2;stop-opacity:1"
+         offset="0.19"
+         id="71592" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.44999999"
+         id="71594" />
+      <stop
+         style="stop-color:#c7c7c7;stop-opacity:1"
+         offset="0.60000002"
+         id="71596" />
+      <stop
+         style="stop-color:#b9b9b9;stop-opacity:1"
+         offset="0.74000001"
+         id="71598" />
+      <stop
+         style="stop-color:#a4a4a4;stop-opacity:1"
+         offset="0.86000001"
+         id="71600" />
+      <stop
+         style="stop-color:#8a8a8a;stop-opacity:1"
+         offset="0.95999998"
+         id="71602" />
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="1"
+         id="71604" />
+      <a:midPointStop
+         offset="0.19"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="0.8"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#808080" />
+    </radialGradient>
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="radialGradient2331"
+       xlink:href="#XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-276.62,-121.54)" />
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="XMLID_2430_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b5d8ff;stop-opacity:1"
+         offset="0"
+         id="71582" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="71584" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#000000" />
+    </linearGradient>
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="lg2820"
+       xlink:href="#XMLID_2430_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="XMLID_2429_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0"
+         id="71564" />
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0.25"
+         id="71566" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="0.44"
+         id="71568" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71570" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.25"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.44"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="lg2818"
+       xlink:href="#XMLID_2429_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.851,0,0,0.849,69.297,51.658)">
+      <stop
+         style="stop-color:#23468e;stop-opacity:1"
+         offset="0"
+         id="stop10972" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10974" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </radialGradient>
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="rg5791"
+       xlink:href="#lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.858,0,0,0.857,-511.7,9.02)" />
+    <linearGradient
+       x1="616.112"
+       y1="76.247002"
+       x2="588.14099"
+       y2="60.742001"
+       id="lg3497_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#01326e;stop-opacity:1"
+         offset="0"
+         id="stop10962" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10964" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg3496_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop10950" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10952" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg5794"
+       xlink:href="#lg3496_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg3495_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10941" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10943" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10945" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg5771"
+       xlink:href="#lg3495_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.615,-43.098)" />
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg3494_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10932" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10934" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10936" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg5774"
+       xlink:href="#lg3494_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.616,-43.098)" />
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="g3302_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#005e00;stop-opacity:1"
+         offset="0"
+         id="s6504" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="s6506" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#23A11F"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="lg5851"
+       xlink:href="#g3302_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s6483" />
+      <stop
+         style="stop-color:#eee;stop-opacity:1"
+         offset="0.17"
+         id="s6485" />
+      <stop
+         style="stop-color:#e3e3e3;stop-opacity:1"
+         offset="0.34"
+         id="s6487" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.50999999"
+         id="s6489" />
+      <stop
+         style="stop-color:#b4b4b4;stop-opacity:1"
+         offset="0.67000002"
+         id="s6491" />
+      <stop
+         style="stop-color:#919191;stop-opacity:1"
+         offset="0.83999997"
+         id="s6493" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6495" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.71" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="lg5855"
+       xlink:href="#g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,103.123)" />
+    <clipPath
+       id="g3299_">
+      <use
+         id="use6469"
+         x="0"
+         y="0"
+         width="1005.92"
+         height="376.97"
+         xlink:href="#g101_" />
+    </clipPath>
+    <radialGradient
+       cx="1189.9301"
+       cy="100.05"
+       r="40.400002"
+       fx="1189.9301"
+       fy="100.05"
+       id="g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,-8.46e-2,0,0.34,394.16,137.13)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6472" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s6474" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#000000"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1199.74"
+       cy="97.150002"
+       r="40.400002"
+       fx="1199.74"
+       fy="97.150002"
+       id="rg5860"
+       xlink:href="#g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.409,-0.107,0,0.429,-451.489,113.149)" />
+    <linearGradient
+       x1="796.38"
+       y1="67.580002"
+       x2="781.28003"
+       y2="58.549999"
+       id="g3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#4c8bca;stop-opacity:1"
+         offset="0"
+         id="s6462" />
+      <stop
+         style="stop-color:#b7e9ff;stop-opacity:1"
+         offset="1"
+         id="s6464" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B7E9FF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6448" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6450" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="lg5890"
+       xlink:href="#g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)" />
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,70.17)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6439" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.51999998"
+         id="s6441" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6443" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.52" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="lg5866"
+       xlink:href="#g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,28.6)" />
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="g3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6412" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6414" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="lg5871"
+       xlink:href="#g3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="g3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="s6403" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.28"
+         id="s6405" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6407" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.28" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="lg5874"
+       xlink:href="#g3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,137.29)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6380" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="s6382" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="lg5878"
+       xlink:href="#g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,113.351)" />
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6371" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6373" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="rg5881"
+       xlink:href="#g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,0,0,0.36,238.56,86.87)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6362" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.63999999"
+         id="s6364" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6366" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.64" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="rg5884"
+       xlink:href="#g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.408,0,0,0.448,-638.943,49.495)" />
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6347" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.38999999"
+         id="s6349" />
+      <stop
+         style="stop-color:#b1b1b1;stop-opacity:1"
+         offset="0.75"
+         id="s6351" />
+      <stop
+         style="stop-color:#aaa;stop-opacity:1"
+         offset="0.88"
+         id="s6353" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.97000003"
+         id="s6355" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6357" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.39" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.87" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="rg5887"
+       xlink:href="#g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <pattern
+       patternTransform="matrix(0.592927,0,0,0.592927,78,462)"
+       id="cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-365.3146,-513.505)"
+         id="g3047">
+           id=&quot;path2858&quot; /&gt;
+        <path
+   inkscape:label="#path2854"
+   sodipodi:nodetypes="czzzz"
+   style="fill:#e3dcc0"
+   id="path3060"
+   d="M 390.31462,529.50504 C 390.31462,534.47304 386.28262,538.50504 381.31462,538.50504 C 376.34662,538.50504 372.31462,534.47304 372.31462,529.50504 C 372.31462,524.53704 376.34662,520.50504 381.31462,520.50504 C 386.28262,520.50504 390.31462,524.53704 390.31462,529.50504 z " />
+</g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.733751,0,0,0.733751,67,367)"
+       id="dark-cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-408.0946,-513.505)"
+         id="dark-cream-spot"
+         inkscape:label="#g3043">
+        <path
+           sodipodi:nodetypes="czzzz"
+           style="fill:#c8c5ac"
+           d="M 433.09458,529.50504 C 433.09458,534.47304 429.06258,538.50504 424.09458,538.50504 C 419.12658,538.50504 415.09458,534.47304 415.09458,529.50504 C 415.09458,524.53704 419.12658,520.50504 424.09458,520.50504 C 429.06258,520.50504 433.09458,524.53704 433.09458,529.50504 z "
+           id="path2953" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.375,0,0,0.375,379,400)"
+       id="white-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-484.3997,-513.505)"
+         id="white-spot"
+         inkscape:label="#g3035">
+        <path
+           style="opacity:0.25;fill:white"
+           id="path3033"
+           d="M 509.39967,529.50504 C 509.39967,534.47304 505.36767,538.50504 500.39967,538.50504 C 495.43167,538.50504 491.39967,534.47304 491.39967,529.50504 C 491.39967,524.53704 495.43167,520.50504 500.39967,520.50504 C 505.36767,520.50504 509.39967,524.53704 509.39967,529.50504 z "
+           sodipodi:nodetypes="czzzz" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.455007,0,0,0.455007,-5e-5,1.9e-5)"
+       id="black-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-448.3997,-513.505)"
+         id="black-spot"
+         inkscape:label="#g3039">
+        <path
+           sodipodi:nodetypes="czzzz"
+           d="M 473.39967,529.50504 C 473.39967,534.47304 469.36767,538.50504 464.39967,538.50504 C 459.43167,538.50504 455.39967,534.47304 455.39967,529.50504 C 455.39967,524.53704 459.43167,520.50504 464.39967,520.50504 C 469.36767,520.50504 473.39967,524.53704 473.39967,529.50504 z "
+           id="path2961"
+           style="opacity:0.25;fill:black" />
+      </g>
+    </pattern>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="linearGradient17334"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17336" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17338" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17340" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17342" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5112"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.6461"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#16336E" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="linearGradient17426"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop17428" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17430" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="linearGradient17434"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17436" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17438" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17440" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17442" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="0.4213"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A6100C" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17709"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17711"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17713"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17715"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17717"
+       xlink:href="#XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17721"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17723"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17416"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17418" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17420" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <defs
+       id="defs9929">
+      <path
+         d="M 489.21,209.35 L 485.35,203.63 C 483.63,204.25 473.47,208.93 471.5,210.18 C 470.57,210.77 470.17,211.16 469.72,212.48 C 470.93,212.31 471.72,212.49 473.42,213.04 C 473.26,214.77 473.24,215.74 473.57,218.2 C 474.01,216.88 474.41,216.49 475.34,215.9 C 477.33,214.65 487.49,209.97 489.21,209.35 z "
+         id="XMLID_960_" />
+    </defs>
+    <clipPath
+       id="clipPath17448">
+      <use
+         id="use17450"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17452"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17454" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17456" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17458" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17460" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17463"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17465" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17467" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17469" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17471" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17807"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17810"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17812"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17814"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17816"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17818"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17347"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17349" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17351" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#96BAD6" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17379"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop17381" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17383" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17862"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,-166.1427,-0.18283)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17864"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3859">
+      <polygon
+         points="465.54,213.52 481.94,217.46 482.74,216.71 487.46,198.05 471.08,194.07 470.26,194.83 465.54,213.52 "
+         id="XMLID_343_" />
+    </defs>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="linearGradient17389"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop17391" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop17393" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop17395" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop17397" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17400">
+      <use
+         id="use17402"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17404"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17406" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17408" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17410" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17412" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17882"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3826">
+      <polygon
+         points="463.52,216.14 480.56,220.24 481.36,219.5 483.03,202.04 469.05,196.69 468.24,197.45 463.52,216.14 "
+         id="XMLID_338_" />
+    </defs>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="linearGradient17357"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17359" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17361" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17364">
+      <use
+         id="use17366"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17368"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17370" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17372" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17374" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17376" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient2387"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5105"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5145"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2381"
+       id="linearGradient2371"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)"
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398" />
+  </defs>
+  <g
+     transform="matrix(0.437808,-0.437808,0.437808,0.437808,-220.8237,43.55311)"
+     id="g5089">
+    <path
+       d="M 8.4382985,-6.28125 C 7.8309069,-6.28125 4.125,-0.33238729 4.125,1.96875 L 4.125,28.6875 C 4.125,29.533884 4.7068159,29.8125 5.28125,29.8125 L 30.84375,29.8125 C 31.476092,29.8125 31.968751,29.319842 31.96875,28.6875 L 31.96875,23.46875 L 32.25,23.46875 C 32.74684,23.46875 33.156249,23.059339 33.15625,22.5625 L 33.15625,-5.375 C 33.15625,-5.8718398 32.74684,-6.28125 32.25,-6.28125 L 8.4382985,-6.28125 z "
+       transform="translate(282.8327,227.1903)"
+       style="fill:#5c5c4f;stroke:black;stroke-width:3.23021388;stroke-miterlimit:4;stroke-dasharray:none"
+       id="path5091" />
+    <rect
+       width="27.85074"
+       height="29.369793"
+       rx="1.1414107"
+       ry="1.1414107"
+       x="286.96509"
+       y="227.63805"
+       style="fill:#032c87"
+       id="rect5093" />
+    <path
+       d="M 288.43262,225.43675 L 313.67442,225.43675 L 313.67442,254.80655 L 287.29827,254.83069 L 288.43262,225.43675 z "
+       style="fill:white"
+       id="rect5095" />
+    <path
+       d="M 302.44536,251.73726 C 303.83227,259.59643 301.75225,263.02091 301.75225,263.02091 C 303.99609,261.41329 305.71651,259.54397 306.65747,257.28491 C 307.62455,259.47755 308.49041,261.71357 310.9319,263.27432 C 310.9319,263.27432 309.33686,256.07392 309.22047,251.73726 L 302.44536,251.73726 z "
+       style="fill:#a70000;fill-opacity:1;stroke-width:2"
+       id="path5097" />
+    <rect
+       width="25.241802"
+       height="29.736675"
+       rx="0.89682275"
+       ry="0.89682275"
+       x="290.73544"
+       y="220.92249"
+       style="fill:#809cc9"
+       id="rect5099" />
+    <path
+       d="M 576.47347,725.93939 L 582.84431,726.35441 L 583.25121,755.8725 C 581.35919,754.55465 576.39694,752.1117 574.98889,754.19149 L 574.98889,727.42397 C 574.98889,726.60151 575.65101,725.93939 576.47347,725.93939 z "
+       transform="matrix(0.499065,-0.866565,0,1,0,0)"
+       style="fill:#4573b3;fill-opacity:1"
+       id="rect5101" />
+    <path
+       d="M 293.2599,221.89363 L 313.99908,221.89363 C 314.45009,221.89363 314.81318,222.25673 314.81318,222.70774 C 315.02865,229.0361 295.44494,244.47124 292.44579,240.30491 L 292.44579,222.70774 C 292.44579,222.25673 292.80889,221.89363 293.2599,221.89363 z "
+       style="opacity:0.65536726;fill:url(#linearGradient2371);fill-opacity:1"
+       id="path5103" />
+  </g>
+</svg>

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/Makefile
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/Makefile	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/Makefile	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,16 @@
+#Makefile for Red Hat Documentation
+#Created by Jeff Fearn <jfearn at redhat.com>
+#Copyright Red Hat Inc. 2006
+
+XML_LANG	= en-US
+
+BRAND = JBoss
+
+OTHER_LANGS	= de-DE es-ES fr-FR ja-JP pt-BR zh-CN 
+
+COMMON_CONFIG  = /usr/share/publican
+include $(COMMON_CONFIG)/make/Makefile.common
+
+
+
+

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/Author_Group.xml
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/Author_Group.xml	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/Author_Group.xml	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,8 @@
+<?xml version='1.0'?>
+<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<authorgroup>
+	<author><firstname>Manik Surtani, Galder Zamarreño</firstname></author>	
+	
+</authorgroup>

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/Book_Info.xml
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/Book_Info.xml	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/Book_Info.xml	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,32 @@
+<?xml version='1.0'?>
+<!DOCTYPE bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+
+<bookinfo id="JBoss_Cache">
+	<title>JBoss Cache Tutorial</title>
+	<subtitle>for Use with JBoss Enterprise Application Platform 5.0</subtitle>
+	<edition>2.0</edition>
+	<pubsnumber>1</pubsnumber>
+	<productname>JBoss Enterprise Application Platform</productname>
+	<productnumber>5.0</productnumber>
+	<abstract>
+		<para>
+			This book is a TreeCache and JBossCache Tutorial.
+		</para>
+	</abstract>
+	<isbn>N/A</isbn>
+	<corpauthor>
+	  <inlinemediaobject>
+		<imageobject>
+			 <imagedata fileref="Common_Content/images/redhat-logo.svg" />
+		 </imageobject>
+	  </inlinemediaobject>
+	</corpauthor>
+	<copyright>
+		<year>&YEAR;</year>
+		<holder>&HOLDER;</holder>
+	</copyright>
+	<xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+        <xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</bookinfo>
+

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/JBoss_Cache_User_Guide.ent
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/JBoss_Cache_User_Guide.ent	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/JBoss_Cache_User_Guide.ent	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,3 @@
+<!ENTITY HOLDER "Red Hat, Inc">
+<!ENTITY YEAR "2009">
+<!ENTITY VERSION "">

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/Revision_History.xml
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/Revision_History.xml	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/Revision_History.xml	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,26 @@
+<?xml version='1.0'?>
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<appendix id="appe-Publican-Revision_History">
+	<title>Revision History</title>
+	<simpara>
+		<revhistory>
+			<revision>
+				<revnumber>1.0</revnumber>
+				<date></date>
+				<author>
+					<firstname></firstname>
+					<surname></surname>
+					<email></email>
+				</author>
+				<revdescription>
+					<simplelist>
+						<member></member>
+					</simplelist>
+				</revdescription>
+			</revision>
+		</revhistory>
+	</simpara>
+</appendix>
+

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/architecture.xml
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/architecture.xml	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/architecture.xml	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,357 @@
+<chapter id="architecture">
+   <title>Architecture</title>
+   <section id="architecture.tree_structure">
+      <title>Data Structures Within The Cache</title>
+
+      <para>
+         A <literal>Cache</literal> consists of a collection of <literal>Node</literal> instances, organised in a tree
+         structure. Each <literal>Node</literal> contains a <literal>Map</literal> which holds the data
+         objects to be cached. It is important to note that the structure is a mathematical tree, and not a graph; each
+         <literal>Node</literal> has one and only one parent, and the root node is denoted by the constant fully qualified
+         name, <literal>Fqn.ROOT</literal>.
+      </para>
+      <para>
+         <figure>
+            <title>Data structured as a tree</title>
+            <mediaobject>
+               <imageobject>
+                  <imagedata fileref="TreeCacheArchitecture.png"/>
+               </imageobject>
+            </mediaobject>
+         </figure>
+
+         In the diagram above, each box represents a JVM. You see 2 caches in separate JVMs, replicating data to each
+         other.
+      </para>
+
+      <para>
+         Any modifications (see <link linkend="api">API chapter</link>) in one cache instance will be replicated to
+         the other cache. Naturally, you can have more than 2 caches in a cluster.
+         Depending on the transactional settings, this replication will occur either after each modification or at the
+         end of a transaction, at commit time. When a new cache is created, it can optionally acquire the contents
+         from one of the existing caches on startup.
+      </para>
+   </section>
+
+   <section id="architecture.SPI_interfaces">
+      <title>SPI Interfaces</title>
+      <para>
+         In addition to <literal>Cache</literal> and <literal>Node</literal> interfaces, JBoss Cache exposes more
+         powerful <literal>CacheSPI</literal> and <literal>NodeSPI</literal> interfaces, which offer more control over
+         the internals of JBoss Cache. These interfaces are not intended for general use, but are designed for people
+         who wish to extend and enhance JBoss Cache, or write custom <literal>Interceptor</literal> or
+         <literal>CacheLoader</literal> instances.
+      </para>
+      <figure>
+         <title>SPI Interfaces</title>
+
+         <mediaobject>
+            <imageobject>
+               <imagedata fileref="SPI.png"/>
+            </imageobject>
+         </mediaobject>
+      </figure>
+      <para>
+         The <literal>CacheSPI</literal> interface cannot be created, but is injected into <literal>Interceptor</literal>
+         and <literal>CacheLoader</literal> implementations by the <literal>setCache(CacheSPI cache)</literal>
+         methods on these interfaces. <literal>CacheSPI</literal> extends <literal>Cache</literal>
+         so all the functionality of the basic API is also available.
+      </para>
+      <para>
+         Similarly, a <literal>NodeSPI</literal> interface cannot be created. Instead, one is obtained by performing
+         operations on <literal>CacheSPI</literal>, obtained as above. For example, <literal>Cache.getRoot() : Node</literal>
+         is overridden as <literal>CacheSPI.getRoot() : NodeSPI</literal>.
+      </para>
+      <para>
+         It is important to note that directly casting a <literal>Cache</literal> or <literal>Node</literal>
+         to its SPI counterpart is not recommended and is bad practice, since the inheritace of interfaces it is not a
+         contract that is guaranteed to be upheld moving forward. The exposed public APIs, on the other hand, is
+         guaranteed to be upheld.
+      </para>
+   </section>
+
+   <section id="architecture.invocations">
+      <title>Method Invocations On Nodes</title>
+      <para>
+         Since the cache is essentially a collection of nodes, aspects such as clustering, persistence, eviction, etc.
+         need to be applied to these nodes when operations are invoked on the cache as a whole or on individual nodes.
+         To achieve this in a clean, modular and extensible manner, an interceptor chain is used. The chain is built
+         up of a series of interceptors, each one adding an aspect or particular functionality. The chain is built
+         when the cache is created, based on the configuration used.
+      </para>
+      <para>
+         It is important to note that the <literal>NodeSPI</literal> offers some methods (such as the <literal>xxxDirect()</literal>
+         method family) that operate on a node directly without passing through the interceptor stack. Plugin authors
+         should note that using such methods will affect the aspects of the cache that may need to be applied, such as
+         locking, replication, etc. To put it simply, don't use such methods unless you <emphasis>really</emphasis>
+         know what you're doing!
+      </para>
+
+            <section id="architecture.interceptors">
+         <title>Interceptors</title>
+         <para>
+            JBoss Cache essentially is a core data structure - an implementation of <literal>DataContainer</literal> - and
+            aspects and features are implemented using interceptors in front of this data structure.  A
+            <literal>CommandInterceptor</literal> is an abstract class, interceptor implementations extend this.
+         </para>
+         <para>
+            <literal>CommandInterceptor</literal> implements the <literal>Visitor</literal> interface so it is able to
+            alter commands in a strongly typed manner as the command makes its way to the data structure.  More on
+            visitors and commands in the next section.
+         </para>
+         <para>
+            Interceptor implementations are chained together in the <literal>InterceptorChain</literal> class, which
+            dispatches a command across the chain of interceptors.  A special interceptor, the <literal>CallInterceptor</literal>,
+            always sits at the end of this chain to invoke the command being passed up the chain by calling the
+            command's <literal>process()</literal> method.
+         </para>
+         <para>
+            JBoss Cache ships with several interceptors, representing different behavioral aspects, some of which
+            are:
+            <itemizedlist>
+               <listitem>
+                  <literal>TxInterceptor</literal>
+                  - looks for ongoing transactions and registers with transaction managers to participate in
+                  synchronization events
+               </listitem>
+               <listitem>
+                  <literal>ReplicationInterceptor</literal>
+                  - replicates state across a cluster using the RpcManager class
+               </listitem>
+               <listitem>
+                  <literal>CacheLoaderInterceptor</literal>
+                  - loads data from a persistent store if the data requested is not available in memory
+               </listitem>
+            </itemizedlist>
+            The interceptor chain configured for your cache instance can be obtained and inspected by calling
+            <literal>CacheSPI.getInterceptorChain()</literal>, which returns an ordered <literal>List</literal>
+            of interceptors in the order in which they would be encountered by a command.
+         </para>
+         <section id="architecture.custom_interceptors">
+            <title>Writing Custom Interceptors</title>
+            <para>
+               Custom interceptors to add specific aspects or features can be written by extending
+               <literal>CommandInterceptor</literal> and overriding the relevant
+               <literal>visitXXX()</literal> methods based on the commands you are interested in intercepting.  There
+               are other abstract interceptors you could extend instead, such as the <literal>PrePostProcessingCommandInterceptor</literal>
+               and the <literal>SkipCheckChainedInterceptor</literal>.  Please see their respective javadocs for details
+               on the extra features provided.
+            </para>
+            <para>
+               The custom interceptor will need to be added to the interceptor chain by using the
+               <literal>Cache.addInterceptor()</literal> methods.  See the javadocs on these methods for details.
+            </para>
+            <para>
+               Adding custom interceptors via XML is also supported, please see the
+               <link linkend="configuration_reference_chapter">XML configuration reference</link> for details.
+            </para>
+         </section>
+      </section>
+
+       <section id="architecture.commands">
+            <title>Commands and Visitors</title>
+           <para>
+              Internally, JBoss Cache uses a command/visitor pattern to execute API calls.  Whenever a method is called
+              on the cache interface, the <literal>CacheInvocationDelegate</literal>, which implements the <literal>Cache</literal>
+              interface, creates an instance of <literal>VisitableCommand</literal> and dispatches this command up a chain of
+              interceptors.  Interceptors, which implement the <literal>Visitor</literal> interface, are able to handle
+              <literal>VisitableCommand</literal>s they are interested in, and add behavior to the command.
+            </para>
+            <para>
+              Each command contains all knowledge of the command being executed such as parameters used and processing
+              behavior, encapsulated in a <literal>process()</literal> method.  For example, the <literal>RemoveNodeCommand</literal>
+              is created and passed up the interceptor chain when <literal>Cache.removeNode()</literal> is called, and
+              <literal>RemoveNodeCommand.process()</literal> has the necessary knowledge of how to remove a node from
+              the data structure.
+           </para>
+           <para>
+              In addition to being visitable, commands are also replicable.  The JBoss Cache marshallers know how to
+              efficiently marshall commands and invoke them on remote cache instances using an internal RPC mechanism
+              based on JGroups.
+           </para>
+        </section>
+       
+      <section id="architecture.invocationcontext">
+         <title>InvocationContexts</title>
+         <para>
+            <literal>InvocationContext</literal>
+            holds intermediate state for the duration of a single invocation, and is set up and
+            destroyed by the
+            <literal>InvocationContextInterceptor</literal>
+            which sits at the start of the interceptor chain.
+         </para>
+         <para>
+            <literal>InvocationContext</literal>
+            , as its name implies, holds contextual information associated with a single cache
+            method invocation. Contextual information includes associated
+            <literal>javax.transaction.Transaction</literal>
+            or
+            <literal>org.jboss.cache.transaction.GlobalTransaction</literal>
+            ,
+            method invocation origin (
+            <literal>InvocationContext.isOriginLocal()</literal>
+            ) as well as
+            <link
+                  linkend="configuration.options">
+               <literal>Option</literal>
+               overrides
+            </link>, and information around which nodes have been locked, etc.
+         </para>
+         <para>
+            The
+            <literal>InvocationContext</literal>
+            can be obtained by calling
+            <literal>Cache.getInvocationContext()</literal>.
+         </para>
+      </section>
+   </section>
+
+   <section id="architecture.managers">
+      <title>Managers For Subsystems</title>
+      <para>
+         Some aspects and functionality is shared by more than a single interceptor. Some of these have been
+         encapsulated
+         into managers, for use by various interceptors, and are made available by the
+         <literal>CacheSPI</literal>
+         interface.
+      </para>
+
+      <section id="architecture.rpcmanager">
+         <title>RpcManager</title>
+         <para>
+            This class is responsible for calls made via the JGroups channel for all RPC calls to remote caches, and
+            encapsulates the JGroups channel used.
+         </para>
+      </section>
+
+      <section id="architecture.buddymanager">
+         <title>BuddyManager</title>
+         <para>
+            This class manages buddy groups and invokes group organization remote calls to organize a cluster of
+            caches into smaller sub-groups.
+         </para>
+      </section>
+
+      <section id="architecture.cacheloadermanager">
+         <title>CacheLoaderManager</title>
+         <para>
+            Sets up and configures cache loaders. This class wraps individual
+            <literal>CacheLoader</literal>
+            instances
+            in delegating classes, such as
+            <literal>SingletonStoreCacheLoader</literal>
+            or
+            <literal>AsyncCacheLoader</literal>
+            ,
+            or may add the
+            <literal>CacheLoader</literal>
+            to a chain using the
+            <literal>ChainingCacheLoader</literal>
+            .
+         </para>
+      </section>
+
+   </section>
+
+   <section id="architecture.marshalling">
+      <title>Marshalling And Wire Formats</title>
+      <para>
+         Early versions of JBoss Cache simply wrote cached data to the network by writing to an
+         <literal>ObjectOutputStream</literal>
+         during replication. Over various releases in the JBoss Cache 1.x.x series this approach was gradually
+         deprecated
+         in favor of a more mature marshalling framework. In the JBoss Cache 2.x.x series, this is the only officially
+         supported and recommended mechanism for writing objects to datastreams.
+      </para>
+      <figure>
+         <title>The Marshaller interface</title>
+
+         <mediaobject>
+            <imageobject>
+               <imagedata fileref="Marshaller.png"/>
+            </imageobject>
+         </mediaobject>
+      </figure>
+      <section>
+         <title>The Marshaller Interface</title>
+         <para>
+            The
+            <literal>Marshaller</literal>
+            interface extends
+            <literal>RpcDispatcher.Marshaller</literal>
+            from JGroups.
+            This interface has two main implementations - a delegating
+            <literal>VersionAwareMarshaller</literal>
+            and a
+            concrete
+            <literal>CacheMarshaller300</literal>
+            .
+         </para>
+         <para>
+            The marshaller can be obtained by calling
+            <literal>CacheSPI.getMarshaller()</literal>, and defaults to the
+            <literal>VersionAwareMarshaller</literal>.
+            Users may also write their own marshallers by implementing the
+            <literal>Marshaller</literal>
+            interface or extending the <literal>AbstractMarshaller</literal> class, and adding it to their configuration
+            by using the <literal>Configuration.setMarshallerClass()</literal> setter.
+         </para>
+      </section>
+
+      <section>
+         <title>VersionAwareMarshaller</title>
+         <para>
+            As the name suggests, this marshaller adds a version
+            <literal>short</literal>
+            to the start of any stream when
+            writing, enabling similar
+            <literal>VersionAwareMarshaller</literal>
+            instances to read the version short and
+            know which specific marshaller implementation to delegate the call to.
+            For example,
+            <literal>CacheMarshaller200</literal>
+            is the marshaller for JBoss Cache 2.0.x.
+            JBoss Cache 3.0.x ships with
+            <literal>CacheMarshaller300</literal>
+            with an improved wire protocol.  Using a
+            <literal>VersionAwareMarshaller</literal>
+            helps achieve wire protocol compatibility between minor
+            releases but still affords us the flexibility to tweak and improve the wire protocol between minor or micro
+            releases.
+         </para>
+      </section>
+   </section>
+   <section id="architecture.regions">
+      <title>Class Loading and Regions</title>
+      <para>
+         When used to cluster state of application servers, applications deployed in the application tend to put
+         instances
+         of objects specific to their application in the cache (or in an
+         <literal>HttpSession</literal>
+         object) which
+         would require replication. It is common for application servers to assign separate
+         <literal>ClassLoader</literal>
+         instances to each application deployed, but have JBoss Cache libraries referenced by the application server's
+         <literal>ClassLoader</literal>.
+      </para>
+      <para>
+         To enable us to successfully marshall and unmarshall objects from such class loaders, we use a concept called
+         regions. A region is a portion of the cache which share a common class loader (a region also has other uses -
+         see <link linkend="eviction_policies">eviction policies</link>).
+      </para>
+      <para>
+         A region is created by using the
+         <literal>Cache.getRegion(Fqn fqn, boolean createIfNotExists)</literal>
+         method,
+         and returns an implementation of the
+         <literal>Region</literal>
+         interface. Once a region is obtained, a
+         class loader for the region can be set or unset, and the region can be activated/deactivated. By default,
+         regions
+         are active unless the
+         <literal>InactiveOnStartup</literal>
+         configuration attribute is set to
+         <literal>true</literal>.
+      </para>
+   </section>
+</chapter>

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/basic_api.xml
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/basic_api.xml	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/basic_api.xml	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,651 @@
+<chapter id="api">
+   <title>User API</title>
+   <section>
+      <title>API Classes</title>
+      <para>
+         The <literal>Cache</literal> interface is the primary mechanism for interacting with JBoss Cache. It is
+         constructed and optionally started using the <literal>CacheFactory</literal>. The <literal>CacheFactory</literal>
+         allows you to create a <literal>Cache</literal> either from a <literal>Configuration</literal> object or an XML
+         file.  The cache organizes data into a tree structure, made up of nodes.  Once you have a reference to a
+         <literal>Cache</literal>, you can use it to look up <literal>Node</literal> objects in the tree structure,
+         and store data in the tree.
+         <mediaobject>
+            <imageobject>
+               <imagedata fileref="PublicAPI.png" format="PNG"/>
+            </imageobject>
+         </mediaobject>
+
+      </para>
+
+      <para>
+         Note that the diagram above only depicts some of the more popular API methods.  Reviewing the javadoc for the
+         above interfaces is the best way to learn the API. Below, we cover some of the main points.
+      </para>
+   </section>
+
+   <section id="api.create_start">
+      <title>Instantiating and Starting the Cache</title>
+      <para>
+         An instance of the <literal>Cache</literal> interface can only be created via a <literal>CacheFactory</literal>.
+         This is unlike JBoss Cache 1.x, where an instance of the old <literal>TreeCache</literal> class could be directly
+         instantiated.
+      </para>
+      <para>
+         The <literal>CacheFactory</literal> provides a number of overloaded methods for creating a <literal>Cache</literal>,
+         but they all fundamentally do the same thing:
+         <itemizedlist>
+            <listitem>
+               Gain access to a <literal>Configuration</literal>, either by having one passed in as a method
+               parameter or by parsing XML content and constructing one. The XML content can come from a provided input
+               stream, from a classpath or filesystem location. See the <link linkend="configuration">chapter on Configuration</link>
+               for more on obtaining a <literal>Configuration</literal>.
+            </listitem>
+            <listitem>
+               Instantiate the <literal>Cache</literal> and provide it with a reference to the <literal>Configuration</literal>.
+            </listitem>
+            <listitem>
+               Optionally invoke the cache's <literal>create()</literal> and <literal>start()</literal> methods.
+            </listitem>
+         </itemizedlist>
+      </para>
+
+      <para>
+         Here is an example of the simplest mechanism for creating and starting a cache, using the default
+         configuration values:
+      </para>
+
+      <programlisting role="JAVA"><![CDATA[
+   CacheFactory factory = new DefaultCacheFactory();
+   Cache cache = factory.createCache();
+      ]]></programlisting>
+
+      <para>
+         In this example, we tell the <literal>CacheFactory</literal> to find and parse a configuration file on
+         the classpath:
+      </para>
+
+      <programlisting role="JAVA"><![CDATA[
+   CacheFactory factory = new DefaultCacheFactory();
+   Cache cache = factory.createCache("cache-configuration.xml");
+      ]]></programlisting>
+
+      <para>In this example, we configure the cache from a file, but want to programatically
+         change a configuration element. So, we tell the factory not to start the cache, and instead do it ourselves:
+      </para>
+
+      <programlisting role="JAVA"><![CDATA[
+   CacheFactory factory = new DefaultCacheFactory();
+   Cache cache = factory.createCache("/opt/configurations/cache-configuration.xml", false);
+   Configuration config = cache.getConfiguration();
+   config.setClusterName(this.getClusterName());
+
+   // Have to create and start cache before using it
+   cache.create();
+   cache.start();
+      ]]></programlisting>
+
+   </section>
+
+   <section>
+      <title>Caching and Retrieving Data</title>
+
+      <para>
+         Next, lets use the <literal>Cache</literal> API to access a <literal>Node</literal> in the cache and then
+         do some simple reads and writes to that node.
+      </para>
+      <programlisting role="JAVA"><![CDATA[
+   // Let's get a hold of the root node.
+   Node rootNode = cache.getRoot();
+
+   // Remember, JBoss Cache stores data in a tree structure.
+   // All nodes in the tree structure are identified by Fqn objects.
+   Fqn peterGriffinFqn = Fqn.fromString("/griffin/peter");
+
+   // Create a new Node
+   Node peterGriffin = rootNode.addChild(peterGriffinFqn);
+
+   // let's store some data in the node
+   peterGriffin.put("isCartoonCharacter", Boolean.TRUE);
+   peterGriffin.put("favoriteDrink", new Beer());
+
+   // some tests (just assume this code is in a JUnit test case)
+   assertTrue(peterGriffin.get("isCartoonCharacter"));
+   assertEquals(peterGriffinFqn, peterGriffin.getFqn());
+   assertTrue(rootNode.hasChild(peterGriffinFqn));
+
+   Set keys = new HashSet();
+   keys.add("isCartoonCharacter");
+   keys.add("favoriteDrink");
+
+   assertEquals(keys, peterGriffin.getKeys());
+
+   // let's remove some data from the node
+   peterGriffin.remove("favoriteDrink");
+
+   assertNull(peterGriffin.get("favoriteDrink");
+
+   // let's remove the node altogether
+   rootNode.removeChild(peterGriffinFqn);
+
+   assertFalse(rootNode.hasChild(peterGriffinFqn));
+      ]]></programlisting>
+
+      <para>
+         The <literal>Cache</literal> interface also exposes put/get/remove operations that take an
+         <link linkend="basic_api.fqn">Fqn</link> as an argument, for convenience:
+      </para>
+
+      <programlisting role="JAVA"><![CDATA[
+   Fqn peterGriffinFqn = Fqn.fromString("/griffin/peter");
+
+   cache.put(peterGriffinFqn, "isCartoonCharacter", Boolean.TRUE);
+   cache.put(peterGriffinFqn, "favoriteDrink", new Beer());
+
+   assertTrue(peterGriffin.get(peterGriffinFqn, "isCartoonCharacter"));
+   assertTrue(cache.getRootNode().hasChild(peterGriffinFqn));
+
+   cache.remove(peterGriffinFqn, "favoriteDrink");
+
+   assertNull(cache.get(peterGriffinFqn, "favoriteDrink");
+
+   cache.removeNode(peterGriffinFqn);
+
+   assertFalse(cache.getRootNode().hasChild(peterGriffinFqn));
+      ]]></programlisting>
+      <section>
+         <title>Organizing Your Data and Using the Node Structure</title>
+         <para>
+            A Node should be viewed as a named logical grouping of data. A node should be used to contain data for a
+            single data record, for example information about a particular person or account.  It should be kept in
+            mind that all aspects of the cache - locking, cache loading, replication and eviction - happen on a per-node
+            basis.  As such, anything grouped together by being stored in a single node will be treated as a single
+            atomic unit.
+         </para>
+      </section>
+   </section>
+
+   <section id="basic_api.fqn">
+      <title>
+         The <literal>Fqn</literal> Class
+      </title>
+
+      <para>
+         The previous section used the <literal>Fqn</literal> class in its examples; now let's learn a bit more about
+         that class.
+      </para>
+
+      <para>
+         A Fully Qualified Name (Fqn) encapsulates a list of names which represent a path to a particular location in
+         the cache's tree structure. The elements in the list are typically <literal>String</literal>s but can be
+         any <literal>Object</literal> or a mix of different types.
+      </para>
+
+      <para>
+         This path can be absolute (i.e., relative to the root node), or relative to any node in the cache. Reading the
+         documentation on each API call that makes use of <literal>Fqn</literal> will tell you whether the API expects
+         a relative or absolute <literal>Fqn</literal>.
+      </para>
+
+      <para>
+         The <literal>Fqn</literal> class provides are variety of factory methods; see the javadoc for all the
+         possibilities. The following illustrates the most commonly used approaches to creating an Fqn:
+      </para>
+
+      <programlisting role="JAVA"><![CDATA[
+   // Create an Fqn pointing to node 'Joe' under parent node 'Smith'
+   // under the 'people' section of the tree
+	    
+   // Parse it from a String
+   Fqn abc = Fqn.fromString("/people/Smith/Joe/");
+	    
+   // Here we want to use types other than String
+   Fqn acctFqn = Fqn.fromElements("accounts", "NY", new Integer(12345));
+     ]]></programlisting>
+
+      <para>Note that</para>
+      <programlisting role="JAVA"><![CDATA[Fqn f = Fqn.fromElements("a", "b", "c");]]></programlisting>
+      <para>is the same as
+      </para>
+      <programlisting role="JAVA"><![CDATA[Fqn f = Fqn.fromString("/a/b/c");]]></programlisting>
+
+   </section>
+
+   <section>
+      <title>Stopping and Destroying the Cache</title>
+      <para>
+         It is good practice to stop and destroy your cache when you are done
+         using it, particularly if it is a clustered cache and has thus
+         used a JGroups channel. Stopping and destroying a cache ensures
+         resources like network sockets and maintenance threads are properly cleaned up.
+      </para>
+
+      <programlisting role="JAVA"><![CDATA[
+   cache.stop();
+   cache.destroy();
+      ]]></programlisting>
+
+      <para>
+         Not also that a cache that has had
+         <literal>stop()</literal>
+         invoked
+         on it can be started again with a new call to
+         <literal>start()</literal>
+         .
+         Similarly, a cache that has had
+         <literal>destroy()</literal>
+         invoked
+         on it can be created again with a new call to
+         <literal>create()</literal>
+         (and then started again with a
+         <literal>start()</literal>
+         call).
+      </para>
+   </section>
+
+   <section>
+      <title>Cache Modes</title>
+      <para>
+         Although technically not part of the API, the <emphasis>mode</emphasis> in which the cache is configured to
+         operate affects the cluster-wide behavior of any <literal>put</literal> or <literal>remove</literal>
+         operation, so we'll briefly mention the various modes here.
+      </para>
+      <para>
+         JBoss Cache modes are denoted by the <literal>org.jboss.cache.config.Configuration.CacheMode</literal>
+         enumeration.  They consist of:
+         <itemizedlist>
+            <listitem>
+               <emphasis>LOCAL</emphasis>
+               - local, non-clustered cache. Local caches don't join a cluster and don't
+               communicate with other caches in a cluster.
+            </listitem>
+            <listitem>
+               <emphasis>REPL_SYNC</emphasis>
+               - synchronous replication. Replicated caches replicate all changes to the other
+               caches in the cluster. Synchronous replication means that changes are replicated and the caller blocks
+               until replication acknowledgements are received.
+            </listitem>
+            <listitem>
+               <emphasis>REPL_ASYNC</emphasis>
+               - asynchronous replication. Similar to REPL_SYNC above, replicated caches replicate
+               all changes to the other caches in the cluster. Being asynchronous, the caller does not block until
+               replication acknowledgements are received.
+            </listitem>
+            <listitem>
+               <emphasis>INVALIDATION_SYNC</emphasis>
+               - if a cache is configured for invalidation rather than replication,
+               every time data is changed in a cache other caches in the cluster
+               receive a message informing them that their data is now stale and should
+               be evicted from memory. This reduces replication overhead while still being able to invalidate stale data
+               on remote caches.
+            </listitem>
+            <listitem>
+               <emphasis>INVALIDATION_ASYNC</emphasis>
+               - as above, except this invalidation mode causes invalidation messages
+               to be broadcast asynchronously.
+            </listitem>
+         </itemizedlist>
+      </para>
+      <para>
+         See the <link linkend="clustering">chapter on Clustering</link> for more details on how cache mode
+         affects behavior. See the <link linkend="configuration">chapter on Configuration</link> for info on how to
+         configure things like cache mode.
+      </para>
+   </section>
+
+   <section id="api.listener">
+      <title>
+         Adding a Cache Listener - registering for cache events
+      </title>
+      <para>
+         JBoss Cache provides a convenient mechanism for registering notifications on cache events.
+      </para>
+      <programlisting role="JAVA"><![CDATA[
+   Object myListener = new MyCacheListener();
+   cache.addCacheListener(myListener);
+      ]]></programlisting>
+      <para>
+         Similar methods exist for removing or querying registered listeners. See the javadocs on the
+         <literal>Cache</literal> interface for more details.
+      </para>
+      <para>
+         Basically any public class can be used as a listener, provided it is annotated with the
+         <literal>@CacheListener</literal> annotation. In addition, the class needs to have one or
+         more methods annotated with one of the method-level annotations (in the
+         <literal>org.jboss.cache.notifications.annotation</literal>
+         package). Methods annotated as such need to be public, have a void return type, and accept a single parameter
+         of
+         type
+         <literal>org.jboss.cache.notifications.event.Event</literal>
+         or one of its subtypes.
+
+         <itemizedlist>
+            <listitem>
+               <para>
+                  <literal>@CacheStarted</literal>
+                  - methods annotated such receive a notification when the cache is
+                  started. Methods need to accept a parameter type which is assignable from
+                  <literal>CacheStartedEvent</literal>
+                  .
+               </para>
+            </listitem>
+
+            <listitem>
+               <para>
+                  <literal>@CacheStopped</literal>
+                  - methods annotated such receive a notification when the cache is
+                  stopped. Methods need to accept a parameter type which is assignable from
+                  <literal>CacheStoppedEvent</literal>
+                  .
+               </para>
+            </listitem>
+
+            <listitem>
+               <para>
+                  <literal>@NodeCreated</literal>
+                  - methods annotated such receive a notification when a node is
+                  created. Methods need to accept a parameter type which is assignable from
+                  <literal>NodeCreatedEvent</literal>
+                  .
+               </para>
+            </listitem>
+
+            <listitem>
+               <para>
+                  <literal>@NodeRemoved</literal>
+                  - methods annotated such receive a notification when a node is
+                  removed. Methods need to accept a parameter type which is assignable from
+                  <literal>NodeRemovedEvent</literal>
+                  .
+               </para>
+            </listitem>
+
+            <listitem>
+               <para>
+                  <literal>@NodeModified</literal>
+                  - methods annotated such receive a notification when a node is
+                  modified. Methods need to accept a parameter type which is assignable from
+                  <literal>NodeModifiedEvent</literal>
+                  .
+               </para>
+            </listitem>
+
+            <listitem>
+               <para>
+                  <literal>@NodeMoved</literal>
+                  - methods annotated such receive a notification when a node is
+                  moved. Methods need to accept a parameter type which is assignable from
+                  <literal>NodeMovedEvent</literal>
+                  .
+               </para>
+            </listitem>
+
+            <listitem>
+               <para>
+                  <literal>@NodeVisited</literal>
+                  - methods annotated such receive a notification when a node is
+                  started. Methods need to accept a parameter type which is assignable from
+                  <literal>NodeVisitedEvent</literal>
+                  .
+               </para>
+            </listitem>
+
+            <listitem>
+               <para>
+                  <literal>@NodeLoaded</literal>
+                  - methods annotated such receive a notification when a node is
+                  loaded from a
+                  <literal>CacheLoader</literal>
+                  . Methods need to accept a parameter type which is assignable from
+                  <literal>NodeLoadedEvent</literal>
+                  .
+               </para>
+            </listitem>
+
+            <listitem>
+               <para>
+                  <literal>@NodeEvicted</literal>
+                  - methods annotated such receive a notification when a node is
+                  evicted from memory. Methods need to accept a parameter type which is assignable from
+                  <literal>NodeEvictedEvent</literal>
+                  .
+               </para>
+            </listitem>
+
+            <listitem>
+               <para>
+                  <literal>@NodeInvalidated</literal>
+                  - methods annotated such receive a notification when a node is
+                  evicted from memory due to a remote invalidation event. Methods need to accept a parameter type which is assignable from
+                  <literal>NodeInvalidatedEvent</literal>
+                  .
+               </para>
+            </listitem>
+
+            <listitem>
+               <para>
+                  <literal>@NodeActivated</literal>
+                  - methods annotated such receive a notification when a node is
+                  activated. Methods need to accept a parameter type which is assignable from
+                  <literal>NodeActivatedEvent</literal>
+                  .
+               </para>
+            </listitem>
+
+            <listitem>
+               <para>
+                  <literal>@NodePassivated</literal>
+                  - methods annotated such receive a notification when a node is
+                  passivated. Methods need to accept a parameter type which is assignable from
+                  <literal>NodePassivatedEvent</literal>
+                  .
+               </para>
+            </listitem>
+
+            <listitem>
+               <para>
+                  <literal>@TransactionRegistered</literal>
+                  - methods annotated such receive a notification when the cache
+                  registers a
+                  <literal>javax.transaction.Synchronization</literal>
+                  with a registered transaction manager.
+                  Methods need to accept a parameter type which is assignable from
+                  <literal>TransactionRegisteredEvent</literal>
+                  .
+               </para>
+            </listitem>
+
+            <listitem>
+               <para>
+                  <literal>@TransactionCompleted</literal>
+                  - methods annotated such receive a notification when the cache
+                  receives a commit or rollback call from a registered transaction manager.
+                  Methods need to accept a parameter type which is assignable from
+                  <literal>TransactionCompletedEvent</literal>
+                  .
+               </para>
+            </listitem>
+
+            <listitem>
+               <para>
+                  <literal>@ViewChanged</literal>
+                  - methods annotated such receive a notification when the group structure
+                  of the cluster changes. Methods need to accept a parameter type which is assignable from
+                  <literal>ViewChangedEvent</literal>
+                  .
+               </para>
+            </listitem>
+
+            <listitem>
+               <para>
+                  <literal>@CacheBlocked</literal>
+                  - methods annotated such receive a notification when the cluster
+                  requests that cache operations are blocked for a state transfer event. Methods need to accept a
+                  parameter type which is assignable from
+                  <literal>CacheBlockedEvent</literal>
+                  .
+               </para>
+            </listitem>
+
+            <listitem>
+               <para>
+                  <literal>@CacheUnblocked</literal>
+                  - methods annotated such receive a notification when the cluster
+                  requests that cache operations are unblocked after a state transfer event. Methods need to accept a
+                  parameter type which is assignable from
+                  <literal>CacheUnblockedEvent</literal>
+                  .
+               </para>
+            </listitem>
+
+            <listitem>
+               <para>
+                  <literal>@BuddyGroupChanged</literal>
+                  - methods annotated such receive a notification when a node changes its buddy group, perhaps due
+                  to a buddy falling out of the cluster or a newer, closer buddy joining.
+                  Methods need to accept a parameter type which is assignable from <literal>BuddyGroupChangedEvent</literal>.
+               </para>
+            </listitem>
+         </itemizedlist>
+      </para>
+      <para>
+         Refer to the javadocs on the annotations as well as the
+         <literal>Event</literal> subtypes for details of what is passed in to your method, and when.
+      </para>
+      <para>
+         Example:
+      </para>
+      <programlisting role="JAVA"><![CDATA[
+   @CacheListener
+   public class MyListener
+   {
+
+      @CacheStarted
+      @CacheStopped
+      public void cacheStartStopEvent(Event e)
+      {
+         switch (e.getType())
+         {
+            case CACHE_STARTED:
+               System.out.println("Cache has started");
+               break;
+            case CACHE_STOPPED:
+               System.out.println("Cache has stopped");
+               break;
+         }
+      }
+
+      @NodeCreated
+      @NodeRemoved
+      @NodeVisited
+      @NodeModified
+      @NodeMoved
+      public void logNodeEvent(NodeEvent ne)
+      {
+         log("An event on node " + ne.getFqn() + " has occured");
+      }
+   }
+         ]]></programlisting>
+      <section>
+         <title>Synchronous and Asynchronous Notifications</title>
+         <para>
+            By default, all notifications are synchronous, in that they happen on the thread of the caller which generated
+            the event.  As such, it is good practise to ensure cache listener implementations don't hold up the thread in
+            long-running tasks.  Alternatively, you could set the <literal>CacheListener.sync()</literal> attribute to
+            <literal>false</literal>, in which case you will not be notified in the caller's thread.  See the
+            <link linkend="element.listeners">configuration reference</link> on tuning this thread pool and size of blocking
+             queue.
+         </para>
+      </section>
+   </section>
+
+   <section>
+      <title>Using Cache Loaders</title>
+      <para>
+         Cache loaders are an important part of JBoss Cache. They allow persistence of nodes to disk or to remote cache
+         clusters, and allow for passivation when caches run out of memory. In addition, cache loaders allow JBoss Cache
+         to perform 'warm starts', where in-memory state can be preloaded from persistent storage. JBoss Cache ships
+         with a number of cache loader implementations.
+         <itemizedlist>
+            <listitem>
+               <literal>org.jboss.cache.loader.FileCacheLoader</literal>
+               - a basic, filesystem based cache loader that persists data to disk. Non-transactional and not very
+               performant, but a very simple solution. Used mainly for testing and not recommended for production use.
+            </listitem>
+            <listitem>
+               <literal>org.jboss.cache.loader.JDBCCacheLoader</literal>
+               - uses a JDBC connection to store data. Connections could be created and maintained in an internal pool
+               (uses the c3p0 pooling library)
+               or from a configured DataSource. The database this CacheLoader connects to could be local or remotely
+               located.
+            </listitem>
+            <listitem>
+               <literal>org.jboss.cache.loader.BdbjeCacheLoader</literal>
+               - uses Oracle's BerkeleyDB file-based transactional database to persist data. Transactional and very
+               performant, but potentially restrictive license.
+            </listitem>
+            <listitem>
+               <literal>org.jboss.cache.loader.JdbmCacheLoader</literal>
+               - an open source alternative to the BerkeleyDB.
+            </listitem>
+            <listitem>
+               <literal>org.jboss.cache.loader.tcp.TcpCacheLoader</literal>
+               - uses a TCP socket to "persist" data to a remote cluster, using <ulink url="http://www.jboss.org/community/docs/DOC-10292">a "far cache" pattern</ulink>.
+            </listitem>
+            <listitem>
+               <literal>org.jboss.cache.loader.ClusteredCacheLoader</literal>
+               - used as a "read-only" cache loader, where other nodes in the cluster are queried for state.  Useful when full
+               state transfer is too expensive and it is preferred that state is lazily loaded.
+            </listitem>
+         </itemizedlist>
+         These cache loaders, along with advanced aspects and tuning issues, are discussed in the
+         <link linkend="cache_loaders">chapter dedicated to cache loaders</link>.
+      </para>
+   </section>
+
+   <section>
+      <title>Using Eviction Policies</title>
+      <para>
+         Eviction policies are the counterpart to cache loaders. They are necessary to make sure the cache does not run
+         out of memory and when the cache starts to fill,
+         an eviction algorithm running in a separate thread evicts in-memory state and frees up
+         memory.  If configured with a cache loader, the state can then be retrieved from the cache loader if needed.
+         </para>
+      <para>
+         Eviction policies can be configured on a per-region basis, so different subtrees in the cache could have
+         different eviction preferences.
+
+         JBoss Cache ships with several eviction policies:
+         <itemizedlist>
+            <listitem>
+               <literal>org.jboss.cache.eviction.LRUPolicy</literal>
+               - an eviction policy that evicts the least recently used nodes when thresholds are hit.
+            </listitem>
+            <listitem>
+               <literal>org.jboss.cache.eviction.LFUPolicy</literal>
+               - an eviction policy that evicts the least frequently used nodes when thresholds are hit.
+            </listitem>
+            <listitem>
+               <literal>org.jboss.cache.eviction.MRUPolicy</literal>
+               - an eviction policy that evicts the most recently used nodes when thresholds are hit.
+            </listitem>
+            <listitem>
+               <literal>org.jboss.cache.eviction.FIFOPolicy</literal>
+               - an eviction policy that creates a first-in-first-out queue and evicts the oldest nodes when thresholds
+               are hit.
+            </listitem>
+            <listitem>
+               <literal>org.jboss.cache.eviction.ExpirationPolicy</literal>
+               - an eviction policy that selects nodes for eviction based on an expiry time each node is configured
+               with.
+            </listitem>
+            <listitem>
+               <literal>org.jboss.cache.eviction.ElementSizePolicy</literal>
+               - an eviction policy that selects nodes for eviction based on the number of key/value pairs held in the
+               node.
+            </listitem>
+         </itemizedlist>
+         Detailed configuration and implementing custom eviction policies are discussed in the
+         <link linkend="eviction_policies">chapter dedicated to eviction policies</link>.
+      </para>
+   </section>
+</chapter>

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/batching.xml
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/batching.xml	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/batching.xml	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,60 @@
+<chapter id="batching">
+   <title>Batching API</title>
+   <section id="batching.intro">
+      <title>Introduction</title>
+      <para>
+         The batching API, introduced in JBoss Cache 3.x, is intended as a mechanism to batch the way calls are replicated
+         independent of JTA transactions.
+      </para>
+      <para>
+         This is useful when you want to batch up replication calls within a scope finer than that of any ongoing JTA transactions.
+      </para>
+      </section>
+   <section id="batching.configuring">
+      <title>Configuring batching</title>
+      <para>
+         To use batching, you need to enable invocation batching in your cache configuration, either on the <literal>Configuration</literal> object:
+      </para>
+      <programlisting role="JAVA"><![CDATA[
+   Configuration.setInvocationBatchingEnabled(true);
+      ]]></programlisting>
+      <para>
+         or in your XML file:
+      </para>
+      <programlisting role="XML"><![CDATA[
+   <invocationBatching enabled="true"/>
+      ]]></programlisting>
+      <para>
+         By default, invocation batching is disabled.  Note that you do <emphasis>not</emphasis> have to have a transaction
+         manager defined to use batching.
+      </para>
+      </section>
+
+   <section id="batching.api">
+      <title>Batching API</title>
+      <para>
+         Once you have configured your cache to use batching, you use it by calling <literal>startBatch()</literal>
+         and <literal>endBatch()</literal> on <literal>Cache</literal>.  E.g.,
+      </para>
+      <programlisting role="JAVA"><![CDATA[
+   Cache cache = getCache();
+
+   // not using a batch
+   cache.put("/a", "key", "value"); // will replicate immediately
+
+   // using a batch
+   cache.startBatch();
+   cache.put("/a", "key", "value");
+   cache.put("/b", "key", "value");
+   cache.put("/c", "key", "value");
+   cache.endBatch(true); // This will now replicate the modifications since the batch was started.
+
+   cache.startBatch();
+   cache.put("/a", "key", "value");
+   cache.put("/b", "key", "value");
+   cache.put("/c", "key", "value");
+   cache.endBatch(false); // This will "discard" changes made in the batch
+
+      ]]></programlisting>
+      </section>
+</chapter>
\ No newline at end of file

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/cache_loaders.xml
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/cache_loaders.xml	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/cache_loaders.xml	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,1556 @@
+<chapter id="cache_loaders">
+    <title>Cache Loaders</title>
+    <para>JBoss Cache can use a
+        <literal>CacheLoader</literal>
+        to back up the in-memory cache to a backend datastore.
+        If JBoss Cache is configured with a cache loader, then the following features are provided:
+        <itemizedlist>
+            <listitem>Whenever a cache element is accessed, and that element is not in
+                the cache (e.g. due to eviction or due to server restart), then the cache loader transparently
+                loads the element into the cache if found in the backend
+                store.
+            </listitem>
+
+            <listitem>Whenever an element is modified, added or removed, then that
+                modification is persisted in the backend store via the cache loader. If
+                transactions are used, all modifications created within a transaction
+                are persisted. To this end, the
+                <literal>CacheLoader</literal>
+                takes part in the two
+                phase commit protocol run by the transaction manager, although it does not do so explicitly.
+            </listitem>
+        </itemizedlist>
+    </para>
+
+    <section>
+        <title>The CacheLoader Interface and Lifecycle</title>
+
+        <figure>
+            <title>The CacheLoader interface</title>
+
+            <mediaobject>
+                <imageobject>
+                    <imagedata fileref="CacheLoader.png"/>
+                </imageobject>
+            </mediaobject>
+        </figure>
+
+        <para>The interaction between JBoss Cache and a
+            <literal>CacheLoader</literal>
+            implementation is as follows. When
+            <literal>CacheLoaderConfiguration</literal>
+            (see below) is non-null, an
+            instance of each configured
+            <literal>CacheLoader</literal>
+            is created when the cache is created, and started when the cache is started.
+        </para>
+
+        <para>
+            <literal>CacheLoader.create()</literal>
+            and
+            <literal>CacheLoader.start()</literal>
+            are called when the cache is
+            started. Correspondingly,
+            <literal>stop()</literal>
+            and
+            <literal>destroy()</literal>
+            are called when the cache is
+            stopped.
+        </para>
+
+        <para>Next,
+            <literal>setConfig()</literal>
+            and
+            <literal>setCache()</literal>
+            are called. The latter can be used to
+            store a reference to the cache, the former is used to configure this
+            instance of the
+            <literal>CacheLoader</literal>
+            . For example, here a database cache loader
+            could establish a connection to the database.
+        </para>
+
+        <para>The
+            <literal>CacheLoader</literal>
+            interface has a set of methods that are called
+            when no transactions are used:
+            <literal>get()</literal>
+            ,
+            <literal>put()</literal>
+            ,
+            <literal>remove()</literal>
+            and
+            <literal>removeData()</literal>
+            : they get/set/remove the value
+            immediately. These methods are described as javadoc comments in the
+            interface.
+        </para>
+
+        <para>Then there are three methods that are used with transactions:
+            <literal>prepare()</literal>
+            ,
+            <literal>commit()</literal>
+            and
+            <literal>rollback()</literal>
+            . The
+            <literal>prepare()</literal>
+            method
+            is called when a transaction is to be committed. It has a transaction
+            object and a list of modfications as argument. The transaction object
+            can be used as a key into a hashmap of transactions, where the values
+            are the lists of modifications. Each modification list has a number of
+            <literal>Modification</literal>
+            elements, which represent the changes
+            made to a cache for a given transaction. When
+            <literal>prepare()</literal>
+            returns successfully, then the cache loader
+            <emphasis>must</emphasis>
+            be able to commit (or rollback) the
+            transaction successfully.
+        </para>
+
+        <para>
+            JBoss Cache takes care of calling prepare(), commit()
+            and rollback() on the cache loaders at the right time.
+        </para>
+
+        <para>The
+            <literal>commit()</literal>
+            method tells the cache loader to
+            commit the transaction, and the
+            <literal>rollback()</literal>
+            method
+            tells the cache loader to discard the changes associated with that
+            transaction.
+        </para>
+
+        <para>See the javadocs on this interface for a detailed explanation on each method and the contract
+            implementations would need to fulfill.
+        </para>
+
+    </section>
+
+    <section>
+        <title>Configuration</title>
+
+        <para>Cache loaders are configured as follows in the JBoss Cache XML
+            file. Note that you can define several cache loaders, in
+            a chain. The impact is that the cache will look at all of the cache
+            loaders in the order they've been configured, until it finds a valid,
+            non-null element of data. When performing writes, all cache loaders are
+            written to (except if the
+            <literal>ignoreModifications</literal>
+            element has been set to
+            <literal>true</literal>
+            for a specific cache loader. See the configuration section below for
+            details.
+        </para>
+
+        <programlisting role="XML"><![CDATA[
+...
+
+<!-- Cache loader config block -->
+<!-- if passivation is true, only the first cache loader is used; the rest are ignored -->
+<loaders passivation="false" shared="false">
+      <preload>
+         <!-- Fqns to preload -->
+         <node fqn="/some/stuff"/>
+      </preload>
+      <!-- if passivation is true, only the first cache loader is used; the rest are ignored -->
+      <loader class="org.jboss.cache.loader.JDBCCacheLoader" async="false" fetchPersistentState="true"
+              ignoreModifications="false" purgeOnStartup="false">
+         <properties>
+            cache.jdbc.driver=com.mysql.jdbc.Driver
+            cache.jdbc.url=jdbc:mysql://localhost:3306/jbossdb
+            cache.jdbc.user=root
+            cache.jdbc.password=
+         </properties>
+      </loader>
+  </loaders>
+]]></programlisting>
+
+        <para>The
+            <literal>class</literal>
+            element defines the
+            class of the cache loader implementation. (Note that, because of a bug in
+            the properties editor in JBoss AS, backslashes in variables for Windows
+            filenames might not get expanded correctly, so replace="false" may be
+            necessary). Note that an implementation of cache loader has to have an empty
+            constructor.
+        </para>
+
+        <para>The
+            <literal>properties</literal>
+            element defines a configuration
+            specific to the given implementation. The filesystem-based
+            implementation for example defines the root directory to be used,
+            whereas a database implementation might define the database URL, name
+            and password to establish a database connection. This configuration is
+            passed to the cache loader implementation via
+            <literal>CacheLoader.setConfig(Properties)</literal>
+            . Note that
+            backspaces may have to be escaped.
+        </para>
+
+        <para>
+            <literal>preload</literal>
+            allows us to define a list of nodes, or
+            even entire subtrees, that are visited by the cache on startup, in order
+            to preload the data associated with those nodes. The default ("/") loads
+            the entire data available in the backend store into the cache, which is
+            probably not a good idea given that the data in the backend store might
+            be large. As an example,
+            <literal>/a,
+                /product/catalogue
+            </literal>
+            loads the subtrees
+            <literal>/a</literal>
+            and
+            <literal>/product/catalogue</literal>
+            into the cache, but nothing
+            else. Anything else is loaded lazily when accessed. Preloading makes
+            sense when one anticipates using elements under a given subtree
+            frequently.
+            .
+        </para>
+
+        <para>
+            <literal>fetchPersistentState</literal>
+            determines whether or not
+            to fetch the persistent state of a cache when joining a cluster. Only
+            one configured cache loader may set this property to true; if more than
+            one cache loader does so, a configuration exception will be thrown when
+            starting your cache service.
+        </para>
+
+        <para>
+            <literal>async</literal>
+            determines whether writes to the cache
+            loader block until completed, or are run on a separate thread so writes
+            return immediately. If this is set to true, an instance of
+            <literal>org.jboss.cache.loader.AsyncCacheLoader</literal>
+            is
+            constructed with an instance of the actual cache loader to be used. The
+            <literal>AsyncCacheLoader</literal>
+            then delegates all requests to the
+            underlying cache loader, using a separate thread if necessary. See the
+            Javadocs on
+            <literal>AsyncCacheLoader</literal>
+            for more details. If unspecified, the
+            <literal>async</literal>
+            element
+            defaults to
+            <literal>false</literal>
+            .
+        </para>
+
+        <para>
+            <emphasis role="bold">Note on using the
+                <literal>async</literal>
+                element:
+            </emphasis>
+            there is always the possibility of dirty reads since
+            all writes are performed asynchronously, and it is thus impossible to
+            guarantee when (and even if) a write succeeds. This needs to be kept in
+            mind when setting the
+            <literal>async</literal>
+            element to true.
+        </para>
+
+        <para>
+            <literal>ignoreModifications</literal>
+            determines whether write
+            methods are pushed down to the specific cache loader. Situations may
+            arise where transient application data should only reside in a file
+            based cache loader on the same server as the in-memory cache, for
+            example, with a further shared
+            <literal>JDBCCacheLoader</literal>
+            used by all servers in
+            the network. This feature allows you to write to the 'local' file cache
+            loader but not the shared
+            <literal>JDBCCacheLoader</literal>
+            . This property defaults to
+            <literal>false</literal>
+            , so writes are propagated to all cache loaders
+            configured.
+        </para>
+
+        <para>
+            <literal>purgeOnStatup</literal>
+            empties the specified cache loader
+            (if
+            <literal>ignoreModifications</literal>
+            is
+            <literal>false</literal>
+            )
+            when the cache loader starts up.
+        </para>
+
+        <para>
+            <literal>shared</literal>
+            indicates that the cache loader is shared among different cache instances, for example where all instances
+            in a
+            cluster use the same JDBC settings t talk to the same remote, shared database. Setting this to
+            <literal>true</literal>
+            prevents repeated and unnecessary writes of the same data to the cache loader by different cache instances.
+            Default value is
+            <literal>false</literal>
+            .
+        </para>
+
+        <section id="sscl">
+            <title>Singleton Store Configuration</title>
+
+            <programlisting role="XML"><![CDATA[
+ <loaders passivation="false" shared="true">
+    <preload>
+       <node fqn="/a/b/c"/>
+       <node fqn="/f/r/s"/>
+    </preload>
+
+    <!-- we can now have multiple cache loaders, which get chained -->
+    <loader class="org.jboss.cache.loader.JDBCCacheLoader" async="false" fetchPersistentState="false"
+         ignoreModifications="false" purgeOnStartup="false">
+       <properties>
+         cache.jdbc.datasource=java:/DefaultDS
+       </properties>
+       <singletonStore enabled="true" class="org.jboss.cache.loader.SingletonStoreCacheLoader">
+          <properties>
+             pushStateWhenCoordinator=true
+             pushStateWhenCoordinatorTimeout=20000
+          </properties>
+       </singletonStore>
+    </loader>
+ </loaders>
+ ]]></programlisting>
+            <para>
+                <literal>singletonStore</literal>
+                element enables modifications to be stored by only one node in the cluster,
+                the coordinator. Essentially, whenever any data comes in to some node
+                it is always replicated so as to keep the caches' in-memory states in
+                sync; the coordinator, though, has the sole responsibility of pushing
+                that state to disk. This functionality can be activated setting the
+                <literal>enabled</literal>
+                subelement to true in all nodes, but
+                again only the coordinator of the cluster will store the modifications
+                in the underlying cache loader as defined in
+                <literal>loader</literal>
+                element. You cannot define a cache loader as
+                <literal>shared</literal>
+                and with
+                <literal>singletonStore</literal>
+                enabled at the same time.
+                Default value for
+                <literal>enabled</literal>
+                is
+                <literal>false</literal>
+                .
+            </para>
+
+            <para>
+                Optionally, within the
+                <literal>singletonStore</literal>
+                element, you can define a
+                <literal>class</literal>
+                element that specifies the implementation class that provides the
+                singleton store functionality. This class must extend
+                <literal>org.jboss.cache.loader.AbstractDelegatingCacheLoader</literal>
+                , and if absent, it defaults to
+                <literal>org.jboss.cache.loader.SingletonStoreCacheLoader</literal>
+                .
+            </para>
+
+            <para>
+                The
+                <literal>properties</literal>
+                subelement defines properties that allow changing the behavior of the
+                class providing the singleton store functionality. By default,
+                <literal>pushStateWhenCoordinator</literal>
+                and
+                <literal>pushStateWhenCoordinatorTimeout</literal>
+                properties have been defined, but more could be added as
+                required by the user-defined class providing singleton store
+                functionality.
+            </para>
+
+            <para>
+                <literal>pushStateWhenCoordinator</literal>
+                allows the in-memory
+                state to be pushed to the cache store when a node becomes the
+                coordinator, as a result of the new election of coordinator due to a
+                cluster topology change. This can be very useful in situations where the
+                coordinator crashes and there's a gap in time until the new coordinator
+                is elected. During this time, if this property was set to
+                <literal>false</literal>
+                and the
+                cache was updated, these changes would never be persisted. Setting this
+                property to
+                <literal>true</literal>
+                would ensure that any changes during this process also
+                get stored in the cache loader. You would also want to set this property
+                to
+                <literal>true</literal>
+                if each node's cache loader is configured with a different
+                location. Default value is
+                <literal>true</literal>
+                .
+            </para>
+
+            <para>
+                <literal>pushStateWhenCoordinatorTimeout</literal>
+                is only relevant if
+                <literal>pushStateWhenCoordinator</literal>
+                is
+                <literal>true</literal>
+                in which case, sets the maximum number of milliseconds that the process
+                of pushing the in-memory state to the underlying cache loader should take,
+                reporting a
+                <literal>PushStateException</literal>
+                if exceeded. Default value is 20000.
+            </para>
+
+            <para>
+                <emphasis role="bold">Note on using the
+                    <literal>singletonStore</literal>
+                    element:
+                </emphasis>
+                setting
+                up a cache loader as a singleton and using cache passivation (via
+                evictions) can lead to undesired effects. If a node is to be passivated
+                as a result of an eviction, while the cluster is in the process of
+                electing a new coordinator, the data will be lost. This is because no
+                coordinator is active at that time and therefore, none of the nodes in
+                the cluster will store the passivated node. A new coordinator is elected
+                in the cluster when either, the coordinator leaves the cluster, the
+                coordinator crashes or stops responding.
+            </para>
+        </section>
+
+    </section>
+
+    <section id="cl.impls">
+
+        <title>Shipped Implementations</title>
+
+        <para>The currently available implementations shipped with JBoss Cache are as follows.</para>
+
+        <section>
+            <title>File system based cache loaders</title>
+            <para>
+                JBoss Cache ships with several cache loaders that utilize the file system as a data store. They all
+                require
+                that the
+                <literal><![CDATA[<loader><properties>]]></literal>
+                configuration element
+                contains a
+                <literal>location</literal>
+                property, which maps to a directory to be used as a persistent store.
+                (e.g.,
+                <literal>location=/tmp/myDataStore</literal>
+                ). Used mainly for testing and not recommended for production use.
+            </para>
+            <itemizedlist>
+                <listitem>
+                    <para>
+                        <literal>FileCacheLoader</literal>
+                        , which is a simple filesystem-based implementation. By default, this cache
+                        loader checks for any potential character portability issues in the
+                        location or tree node names, for example invalid characters, producing
+                        warning messages. These checks can be disabled adding
+                        <literal>check.character.portability</literal>
+                        property to the
+                        <literal><![CDATA[<properties>]]></literal>
+                        element and setting it to
+                        <literal>false</literal>
+                        (e.g.,
+                        <literal>check.character.portability=false</literal>
+                        ).
+                    </para>
+                    <para>
+                        The FileCacheLoader has some severe limitations which restrict its use in a production
+                        environment, or if used in such an environment, it should be used with due care and sufficient
+                        understanding of these limitations.
+                        <itemizedlist>
+                            <listitem>Due to the way the FileCacheLoader represents a tree structure on disk
+                                (directories and
+                                files) traversal is inefficient for deep trees.
+                            </listitem>
+                            <listitem>Usage on shared filesystems like NFS, Windows shares, etc. should be avoided as
+                                these do
+                                not implement proper file locking and can cause data corruption.
+                            </listitem>
+                            <listitem>Usage with an isolation level of NONE can cause corrupt writes as multiple threads
+                                attempt to write to the same file.
+                            </listitem>
+                            <listitem>File systems are inherently not transactional, so when attempting to use your
+                                cache in a
+                                transactional context, failures when writing to the file (which happens during the
+                                commit phase)
+                                cannot be recovered.
+                            </listitem>
+                        </itemizedlist>
+
+                        As a rule of thumb, it is recommended that the FileCacheLoader not be used in a highly
+                        concurrent,
+                        transactional or stressful environment, and its use is restricted to testing.
+                    </para>
+                </listitem>
+
+                <listitem>
+                    <para>
+                        <literal>BdbjeCacheLoader</literal>
+                        , which is a cache loader implementation based on the Oracle/Sleepycat's
+                        <ulink url="http://www.oracle.com/database/berkeley-db/index.html">BerkeleyDB Java Edition
+                        </ulink>
+                        .
+                    </para>
+                </listitem>
+
+                <listitem>
+                    <para>
+                        <literal>JdbmCacheLoader</literal>
+                        , which is a cache loader
+                        implementation based on the
+                        <ulink url="http://jdbm.sourceforge.net/">JDBM engine</ulink>
+                        , a fast and free alternative to
+                        BerkeleyDB.
+                    </para>
+                </listitem>
+            </itemizedlist>
+
+            <para>Note that the BerkeleyDB implementation is much more efficient than
+                the filesystem-based implementation, and provides transactional
+                guarantees, but requires a commercial license if distributed with an
+                application (see http://www.oracle.com/database/berkeley-db/index.html for
+                details).
+            </para>
+
+        </section>
+
+        <section>
+            <title>Cache loaders that delegate to other caches</title>
+            <itemizedlist>
+                <listitem>
+                    <para>
+                        <literal>LocalDelegatingCacheLoader</literal>
+                        , which enables
+                        loading from and storing to another local (same JVM) cache.
+                    </para>
+                </listitem>
+                <listitem>
+                    <para>
+                        <literal>ClusteredCacheLoader</literal>
+                        , which allows querying
+                        of other caches in the same cluster for in-memory data via the same
+                        clustering protocols used to replicate data. Writes are
+                        <emphasis>not</emphasis>
+                        'stored' though, as replication would
+                        take care of any updates needed. You need to specify a property
+                        called
+                        <literal>timeout</literal>
+                        , a long value telling the cache
+                        loader how many milliseconds to wait for responses from the cluster
+                        before assuming a null value. For example,
+                        <literal>timeout = 3000</literal>
+                        would use a timeout value of 3 seconds.
+                    </para>
+                </listitem>
+            </itemizedlist>
+        </section>
+
+
+        <section id="cl.jdbc">
+            <title>JDBCCacheLoader</title>
+
+            <para>JBossCache is distributed with a JDBC-based cache loader
+                implementation that stores/loads nodes' state into a relational database.
+                The implementing class is
+                <literal>org.jboss.cache.loader.JDBCCacheLoader</literal>
+                .
+            </para>
+
+            <para>The current implementation uses just one table. Each row in the table
+                represents one node and contains three columns:
+                <itemizedlist>
+                    <listitem>column for
+                        <literal>Fqn</literal>
+                        (which is also a primary key
+                        column)
+                    </listitem>
+
+                    <listitem>column for node contents (attribute/value
+                        pairs)
+                    </listitem>
+
+                    <listitem>column for parent
+                        <literal>Fqn</literal>
+                    </listitem>
+                </itemizedlist>
+            </para>
+
+            <para>
+                <literal>Fqn</literal>s are stored as strings. Node content is stored
+                as a BLOB.
+                <emphasis>WARNING:</emphasis>
+                JBoss Cache does not impose any
+                limitations on the types of objects used in
+                <literal>Fqn</literal>
+                but this implementation of
+                cache loader requires
+                <literal>Fqn</literal>
+                to contain only objects of type
+                <literal>java.lang.String</literal>
+                . Another limitation for
+                <literal>Fqn</literal>
+                is its
+                length. Since
+                <literal>Fqn</literal>
+                is a primary key, its default column type is
+                <literal>VARCHAR</literal>
+                which can store text values up to some
+                maximum length determined by the database in use.
+            </para>
+
+            <para>See
+                <ulink url="http://www.jboss.org/community/docs/DOC-10864">this wiki page</ulink>
+                for configuration tips with specific database systems.
+            </para>
+
+            <section>
+                <title>JDBCCacheLoader configuration</title>
+
+                <section>
+                    <title>Table configuration</title>
+
+                    <para>Table and column names as well as column types are
+                        configurable with the following properties.
+                        <itemizedlist>
+                            <listitem>
+                                <emphasis>cache.jdbc.table.name</emphasis>
+                                - the name
+                                of the table. Can be prepended with schema name for the given table:
+                                <literal>{schema_name}.{table_name}</literal>.
+                                The default value is 'jbosscache'.
+                            </listitem>
+
+                            <listitem>
+                                <emphasis>cache.jdbc.table.primarykey</emphasis>
+                                - the
+                                name of the primary key for the table. The default value is
+                                'jbosscache_pk'.
+                            </listitem>
+
+                            <listitem>
+                                <emphasis>cache.jdbc.table.create</emphasis>
+                                - can be
+                                true or false. Indicates whether to create the table during startup.
+                                If true, the table is created if it doesn't already exist. The
+                                default value is true.
+                            </listitem>
+
+                            <listitem>
+                                <emphasis>cache.jdbc.table.drop</emphasis>
+                                - can be
+                                true or false. Indicates whether to drop the table during shutdown. The
+                                default value is true.
+                            </listitem>
+
+                            <listitem>
+                                <emphasis>cache.jdbc.fqn.column</emphasis>
+                                - FQN
+                                column name. The default value is 'fqn'.
+                            </listitem>
+
+                            <listitem>
+                                <emphasis>cache.jdbc.fqn.type</emphasis>
+                                - FQN column
+                                type. The default value is 'varchar(255)'.
+                            </listitem>
+
+                            <listitem>
+                                <emphasis>cache.jdbc.node.column</emphasis>
+                                - node
+                                contents column name. The default value is 'node'.
+                            </listitem>
+
+                            <listitem>
+                                <emphasis>cache.jdbc.node.type</emphasis>
+                                - node
+                                contents column type. The default value is 'blob'. This type must specify
+                                a valid binary data type for the database being used.
+                            </listitem>
+                        </itemizedlist>
+                    </para>
+                </section>
+
+                <section>
+                    <title>DataSource</title>
+
+                    <para>If you are using JBossCache in a managed environment (e.g., an
+                        application server) you can specify the JNDI name of the DataSource
+                        you want to use.
+                        <itemizedlist>
+                            <listitem>
+                                <emphasis>cache.jdbc.datasource</emphasis>
+                                - JNDI name
+                                of the DataSource. The default value is
+                                <literal>java:/DefaultDS</literal>
+                                .
+                            </listitem>
+                        </itemizedlist>
+                    </para>
+                </section>
+
+                <section>
+                    <title>JDBC driver</title>
+
+                    <para>If you are
+                        <emphasis>not</emphasis>
+                        using DataSource you have
+                        the following properties to configure database access using a JDBC
+                        driver.
+                        <itemizedlist>
+                            <listitem>
+                                <emphasis>cache.jdbc.driver</emphasis>
+                                - fully
+                                qualified JDBC driver name.
+                            </listitem>
+
+                            <listitem>
+                                <emphasis>cache.jdbc.url</emphasis>
+                                - URL to connect
+                                to the database.
+                            </listitem>
+
+                            <listitem>
+                                <emphasis>cache.jdbc.user</emphasis>
+                                - user name to
+                                connect to the database.
+                            </listitem>
+
+                            <listitem>
+                                <emphasis>cache.jdbc.password</emphasis>
+                                - password to
+                                connect to the database.
+                            </listitem>
+                        </itemizedlist>
+                    </para>
+                </section>
+
+                <section>
+                    <title>c3p0 connection pooling</title>
+
+                    <para>JBoss Cache implements JDBC connection pooling when running outside of an application server
+                        standalone using
+                        the c3p0:JDBC DataSources/Resource Pools library. In order to enable it, just edit the following
+                        property:
+                        <itemizedlist>
+                            <listitem>
+                                <emphasis>cache.jdbc.connection.factory</emphasis>
+                                - Connection factory class name.
+                                If not set, it defaults to standard non-pooled implementation. To enable c3p0 pooling,
+                                just set
+                                the
+                                connection factory class for c3p0. See example below.
+                            </listitem>
+                        </itemizedlist>
+                    </para>
+
+                    <para>You can also set any c3p0 parameters in the same cache loader properties section but don't
+                        forget
+                        to
+                        start the property name with 'c3p0.'. To find a list of available properties, please check the
+                        c3p0 documentation for the c3p0 library version distributed in
+                        <ulink url="http://sourceforge.net/projects/c3p0">c3p0:JDBC DataSources/Resource Pools</ulink>
+                        .
+                        Also, in order to provide quick and easy way to try out different pooling
+                        parameters, any of these properties can be set via a System property overriding any values these
+                        properties might have in the JBoss Cache XML configuration file, for example:
+                        <literal>-Dc3p0.maxPoolSize=20</literal>
+                        .
+                        If a c3p0 property is not defined in either the configuration file or as a System property,
+                        default
+                        value, as indicated in the c3p0 documentation, will apply.
+                    </para>
+                </section>
+
+                <section>
+                    <title>Configuration example</title>
+
+                    <para>Below is an example of a JDBCCacheLoader using Oracle as
+                        database. The CacheLoaderConfiguration XML element contains an
+                        arbitrary set of properties which define the database-related
+                        configuration.
+                    </para>
+
+                    <programlisting role="XML"><![CDATA[
+<loaders passivation="false" shared="false">
+      <preload>
+         <node fqn="/some/stuff"/>
+      </preload>
+      <!-- if passivation is true, only the first cache loader is used; the rest are ignored -->
+      <loader class="org.jboss.cache.loader.JDBCCacheLoader" async="false" fetchPersistentState="true"
+              ignoreModifications="false" purgeOnStartup="false">
+         <properties>
+            cache.jdbc.table.name=jbosscache
+            cache.jdbc.table.create=true
+            cache.jdbc.table.drop=true
+            cache.jdbc.table.primarykey=jbosscache_pk
+            cache.jdbc.fqn.column=fqn
+            cache.jdbc.fqn.type=VARCHAR(255)
+            cache.jdbc.node.column=node
+            cache.jdbc.node.type=BLOB
+            cache.jdbc.parent.column=parent
+            cache.jdbc.driver=oracle.jdbc.OracleDriver
+            cache.jdbc.url=jdbc:oracle:thin:@localhost:1521:JBOSSDB
+            cache.jdbc.user=SCOTT
+            cache.jdbc.password=TIGER
+          </properties>
+      </loader>
+  </loaders>
+]]></programlisting>
+
+                    <para>As an alternative to configuring the entire JDBC connection,
+                        the name of an existing data source can be given:
+                    </para>
+
+                    <programlisting role="XML"><![CDATA[
+ <loaders passivation="false" shared="false">
+      <preload>
+         <node fqn="/some/stuff"/>
+      </preload>
+      <!-- if passivation is true, only the first cache loader is used; the rest are ignored -->
+      <loader class="org.jboss.cache.loader.JDBCCacheLoader" async="false" fetchPersistentState="true"
+              ignoreModifications="false" purgeOnStartup="false">
+         <properties>
+            cache.jdbc.datasource=java:/DefaultDS
+         </properties>
+      </loader>
+  </loaders>
+]]></programlisting>
+
+                    <para>Cconfiguration example for a cache loader using c3p0 JDBC connection pooling:</para>
+
+                    <programlisting role="XML"><![CDATA[
+ <loaders passivation="false" shared="false">
+      <preload>
+         <node fqn="/some/stuff"/>
+      </preload>
+      <!-- if passivation is true, only the first cache loader is used; the rest are ignored -->
+      <loader class="org.jboss.cache.loader.JDBCCacheLoader" async="false" fetchPersistentState="true"
+              ignoreModifications="false" purgeOnStartup="false">
+         <properties>
+            cache.jdbc.table.name=jbosscache
+            cache.jdbc.table.create=true
+            cache.jdbc.table.drop=true
+            cache.jdbc.table.primarykey=jbosscache_pk
+            cache.jdbc.fqn.column=fqn
+            cache.jdbc.fqn.type=VARCHAR(255)
+            cache.jdbc.node.column=node
+            cache.jdbc.node.type=BLOB
+            cache.jdbc.parent.column=parent
+            cache.jdbc.driver=oracle.jdbc.OracleDriver
+            cache.jdbc.url=jdbc:oracle:thin:@localhost:1521:JBOSSDB
+            cache.jdbc.user=SCOTT
+            cache.jdbc.password=TIGER
+            cache.jdbc.connection.factory=org.jboss.cache.loader.C3p0ConnectionFactory
+            c3p0.maxPoolSize=20
+            c3p0.checkoutTimeout=5000
+         </properties>
+      </loader>
+   </loaders>
+]]></programlisting>
+
+                </section>
+            </section>
+        </section>
+
+        <section id="cl.s3">
+            <title>S3CacheLoader</title>
+
+            <para>The
+                <literal>S3CacheLoader</literal>
+                uses the
+                <ulink url="http://aws.amazon.com/">Amazon S3</ulink>
+                (Simple Storage Solution)
+                for storing cache data.
+                Since Amazon S3 is remote network storage and has fairly high latency,
+                it is really best for caches that store large pieces of data, such as media
+                or files.
+                But consider this cache loader over the JDBC or
+                file system based cache loaders if you want remotely managed, highly reliable
+                storage. Or, use it for applications running on Amazon's EC2 (Elastic Compute Cloud).
+            </para>
+
+            <para>
+                If you're planning to use Amazon S3 for storage, consider using it with JBoss Cache.
+                JBoss Cache itself provides in-memory caching for your data to minimize the amount of
+                remote access calls, thus reducing the latency and cost of fetching your Amazon S3 data.
+                With cache replication, you are also able to load data from your local cluster
+                without having to remotely access it every time.
+            </para>
+
+            <para>
+                Note that Amazon S3 does not support transactions. If transactions
+                are used in your application then there is some possibility of state
+                inconsistency when using this cache loader. However, writes are atomic, in
+                that if a write fails nothing is considered written and data is never
+                corrupted.
+            </para>
+
+            <para>
+                Data is stored in keys based on the Fqn of the Node and Node data is
+                serialized as a java.util.Map using the
+                <literal>CacheSPI.getMarshaller()</literal>
+                instance.
+                Read the javadoc on how data is structured and stored.
+                Data is stored using Java serialization.
+                Be aware this means data is not readily accessible over HTTP to
+                non-JBoss Cache clients. Your feedback and help would be appreciated
+                to extend this cache loader for that purpose.
+            </para>
+
+            <para>
+                With this cache loader, single-key operations such as
+                <literal>Node.remove(Object)</literal>
+                and
+                <literal>Node.put(Object, Object)</literal>
+                are the slowest as data is stored in a single Map instance.
+                Use bulk operations such as
+                <literal>Node.replaceAll(Map)</literal>
+                and
+                <literal>Node.clearData()</literal>
+                for more efficiency.
+                Try the
+                <literal>cache.s3.optimize</literal>
+                option as well.
+            </para>
+
+            <section>
+                <title>Amazon S3 Library</title>
+                <para>The S3 cache loader is provided with the default
+                    distribution but requires a library to access the service
+                    at runtime. This runtime library may be obtained through a Sourceforge Maven
+                    Repository. Include the following sections in your pom.xml file:
+                </para>
+                <programlisting role="XML"><![CDATA[
+      <repository>
+         <id>e-xml.sourceforge.net</id>
+         <url>http://e-xml.sourceforge.net/maven2/repository</url>
+      </repository>
+        ...
+      <dependency>
+         <groupId>net.noderunner</groupId>
+         <artifactId>amazon-s3</artifactId>
+         <version>1.0.0.0</version>
+         <scope>runtime</scope>
+      </dependency>
+              ]]>
+                </programlisting>
+                If you do not use Maven, you can still download the
+                amazon-s3 library by navigating the repository or through
+                <ulink url="http://e-xml.sourceforge.net/maven2/repository/net/noderunner/amazon-s3/1.0.0.0/amazon-s3-1.0.0.0.jar">
+                    this URL</ulink>.
+            </section>
+
+            <section>
+                <title>Configuration</title>
+                <para>At a minimum, you must configure your Amazon S3 access key and
+                    secret access key. The following configuration keys are listed in general
+                    order of utility.
+                </para>
+
+                <para>
+                    <itemizedlist>
+                        <listitem>
+                            <literal>cache.s3.accessKeyId</literal>
+                            -
+                            Amazon S3 Access Key, available from your account profile.
+                        </listitem>
+
+                        <listitem>
+                            <literal>cache.s3.secretAccessKey</literal>
+                            -
+                            Amazon S3 Secret Access Key, available from your account profile.
+                            As this is a password, be careful not to distribute it or include
+                            this secret key in built software.
+                        </listitem>
+
+                        <listitem>
+                            <literal>cache.s3.secure</literal>
+                            -
+                            The default is<literal>false</literal>:
+                            Traffic is sent unencrypted over the public Internet.
+                            Set to
+                            <literal>true</literal>
+                            to use HTTPS.
+                            Note that unencrypted uploads and downloads use less CPU.
+                        </listitem>
+
+                        <listitem>
+                            <literal>cache.s3.bucket</literal>
+                            -
+                            Name of the bucket to store data.
+                            For different caches using the same access key, use a different bucket name.
+                            Read the S3 documentation on the definition of a bucket.
+                            The default value is<literal>jboss-cache</literal>.
+                        </listitem>
+
+                        <listitem>
+                            <literal>cache.s3.callingFormat</literal>
+                            -
+                            One of<literal>PATH</literal>,<literal>SUBDOMAIN</literal>, or
+                            <literal>VANITY</literal>.
+                            Read the S3 documentation on the use of calling domains.
+                            The default value is<literal>SUBDOMAIN</literal>.
+                        </listitem>
+
+                        <listitem>
+                            <literal>cache.s3.optimize</literal>
+                            -
+                            The default is<literal>false</literal>.
+                            If true,
+                            <literal>put(Map)</literal>
+                            operations
+                            replace the data stored at an Fqn rather than attempt
+                            to fetch and merge. (This option is fairly experimental
+                            at the moment.)
+                        </listitem>
+
+                        <listitem>
+                            <literal>cache.s3.parentCache</literal>
+                            -
+                            The default is<literal>true</literal>.
+                            Set this value to
+                            <literal>false</literal>
+                            if you are using multiple caches
+                            sharing the same S3 bucket, that remove parent nodes of nodes being created
+                            in other caches. (This is not a common use case.)
+                            <para>
+                                JBoss Cache stores nodes in a tree format and automatically
+                                creates intermediate parent nodes as necessary.
+                                The S3 cache loader must also create these parent nodes as well
+                                to allow for operations such as
+                                <literal>getChildrenNames</literal>
+                                to work
+                                properly. Checking if all parent nodes exists for every
+                                <literal>put</literal>
+                                operation is fairly expensive, so by default the cache loader caches
+                                the existence of these parent nodes.
+                            </para>
+                        </listitem>
+
+                        <listitem>
+                            <literal>cache.s3.location</literal>
+                            -
+                            This choses a primary storage location for your data
+                            to reduce loading and retrieval latency.
+                            Set to
+                            <literal>EU</literal>
+                            to store data in Europe.
+                            The default is<literal>null</literal>, to store data in
+                            the United States.
+                        </listitem>
+                    </itemizedlist>
+                </para>
+            </section>
+
+        </section>
+
+        <section id="cl.tcp">
+            <title>TcpDelegatingCacheLoader</title>
+
+            <para>This cache loader allows to delegate loads and stores to another
+                instance of JBoss Cache, which could reside (a) in the same address
+                space, (b) in a different process on the same host, or (c) in a
+                different process on a different host.
+            </para>
+
+            <para>A TcpDelegatingCacheLoader talks to a remote
+                <literal>org.jboss.cache.loader.tcp.TcpCacheServer</literal>
+                ,
+                which can be a standalone process started on the command line, or embedded as an MBean inside
+                JBoss AS. The
+                <literal>TcpCacheServer</literal>
+                has a reference to another JBoss Cache instance, which
+                it can create itself, or which is given to it (e.g. by JBoss, using
+                dependency injection).
+            </para>
+
+            <para>
+                As of JBoss Cache 2.1.0, the
+                <literal>TcpDelegatingCacheLoader</literal>
+                transparently handles reconnects if the connection
+                to the TcpCacheServer is lost.
+            </para>
+
+            <para>The TcpDelegatingCacheLoader is configured with the host and port of the remote TcpCacheServer, and
+                uses
+                this to communicate to
+                it. In addition, 2 new optional parameters are used to control transparent reconnecting to the
+                TcpCacheServer.
+                The
+                <literal>timeout</literal>
+                property (defaults to 5000) specifies the length of time the cache loader must continue
+                retrying to connect to the TcpCacheServer before giving up and throwing an exception. The
+                <literal>reconnectWaitTime</literal>
+                (defaults to 500) is how long the cache loader should wait before attempting a reconnect if it detects a
+                communication failure.
+                The last two parameters can be used to add a level of fault tolerance to the cache loader, do deal with
+                TcpCacheServer restarts.
+            </para>
+
+            <para>The configuration looks as follows:</para>
+
+            <programlisting role="XML"><![CDATA[
+ <loaders passivation="false" shared="false">
+      <preload>
+         <node fqn="/"/>
+      </preload>
+      <!-- if passivation is true, only the first cache loader is used; the rest are ignored -->
+      <loader class="org.jboss.cache.loader.TcpDelegatingCacheLoader">
+         <properties>
+            host=myRemoteServer
+            port=7500
+            timeout=10000
+            reconnectWaitTime=250
+         </properties>
+      </loader>
+   </loaders>
+]]></programlisting>
+
+            <para>This means this instance of JBoss Cache will delegate all load
+                and store requests to the remote TcpCacheServer running on
+                <literal>myRemoteServer:7500</literal>
+                .
+            </para>
+
+            <para>A typical use case could be multiple replicated instances of
+                JBoss Cache in the same cluster, all delegating to the same
+                TcpCacheServer instance. The TcpCacheServer might itself delegate to a
+                database via JDBCCacheLoader, but the point here is that - if we have
+                5 nodes all accessing the same dataset - they will load the data from
+                the TcpCacheServer, which has do execute one SQL statement per
+                unloaded data set. If the nodes went directly to the database, then
+                we'd have the same SQL executed multiple times. So TcpCacheServer
+                serves as a natural cache in front of the DB (assuming that a network
+                round trip is faster than a DB access (which usually also include a
+                network round trip)).
+            </para>
+
+            <para>To alleviate single point of failure, we could configure several cache loaders.
+                The first cache loader is a ClusteredCacheLoader, the second a TcpDelegatingCacheLoader, and the
+                last a JDBCacheLoader, effectively defining our cost of access to a
+                cache in increasing order.
+            </para>
+
+        </section>
+
+        <section id="cl.transforming">
+            <title>Transforming Cache Loaders</title>
+
+            <para>The way cached data is written to
+                <literal>FileCacheLoader</literal>
+                and
+                <literal>JDBCCacheLoader</literal>
+                based cache stores has changed in JBoss Cache 2.0 in such way that
+                these cache loaders now write and read data using the same marhalling framework used to replicate data
+                across the network. Such change is trivial for replication purposes as it just requires the rest of the
+                nodes to understand this format. However, changing the format of the data in cache stores brings up a
+                new
+                problem: how do users, which have their data stored in JBoss Cache 1.x.x format, migrate their stores to
+                JBoss Cache 2.0 format?
+            </para>
+
+            <para>With this in mind, JBoss Cache 2.0 comes with two cache loader implementations called
+                <literal>org.jboss.cache.loader.TransformingFileCacheLoader</literal>
+                and
+                <literal>org.jboss.cache.loader.TransformingJDBCCacheLoader</literal>
+                located within the optional
+                jbosscache-cacheloader-migration.jar file. These are one-off cache loaders that read data from the
+                cache store in JBoss Cache 1.x.x format and write data to cache stores in JBoss Cache 2.0 format.
+            </para>
+
+            <para>The idea is for users to modify their existing cache configuration file(s) momentarily to use these
+                cache loaders and for them to create a small Java application that creates an instance of this cache,
+                recursively reads the entire cache and writes the data read back into the cache. Once the data is
+                transformed, users can revert back to their original cache configuration file(s). In order to help the
+                users
+                with this task, a cache loader migration example has been constructed which can be located under the
+                <literal>examples/cacheloader-migration</literal>
+                directory within the JBoss Cache distribution. This
+                example, called
+                <literal>examples.TransformStore</literal>
+                , is independent of the actual data stored in
+                the cache as it writes back whatever it was read recursively. It is highly recommended that anyone
+                interested in porting their data run this example first, which contains a
+                <literal>readme.txt</literal>
+                file with detailed information about the example itself, and also use it as base for their own
+                application.
+            </para>
+
+        </section>
+
+    </section>
+
+
+    <section id="cl.pass">
+        <title>Cache Passivation</title>
+
+        <para>A cache loader can be used to enforce node passivation and
+            activation on eviction in a cache.
+        </para>
+
+        <para>
+            <emphasis>Cache Passivation</emphasis>
+            is the process of removing
+            an object from in-memory cache and writing it to a secondary data store
+            (e.g., file system, database) on eviction.
+            <emphasis>Cache
+                Activation
+            </emphasis>
+            is the process of restoring an object from the
+            data store into the in-memory cache when it's needed to be used. In both
+            cases, the configured cache loader will be used to read from the data
+            store and write to the data store.
+        </para>
+
+        <para>When an eviction policy in effect evicts a node
+            from the cache, if passivation is enabled, a notification that the node
+            is being passivated will be emitted to the cache listeners and the
+            node and its children will be stored in the cache loader store. When a
+            user attempts to retrieve a node that was evicted earlier, the node is loaded
+            (lazy loaded) from the cache loader store into memory. When
+            the node and its children have been loaded, they're removed from the
+            cache loader and a notification is emitted to the cache listeners
+            that the node has been activated.
+        </para>
+
+        <para>To enable cache passivation/activation, you can set
+            <literal>passivation</literal>
+            to true. The default is
+            <literal>false</literal>
+            .
+            When passivation is used, only the first cache loader configured is
+            used and all others are ignored.
+        </para>
+
+        <section>
+            <title>Cache Loader Behavior with Passivation Disabled vs. Enabled</title>
+
+            <para>
+                When passivation is disabled, whenever an element is modified, added or
+                removed, then that modification is persisted in the backend store via
+                the cache loader. There is no direct relationship between eviction and
+                cache loading. If you don't use eviction, what's in the persistent store
+                is basically a copy of what's in memory. If you do use eviction, what's
+                in the persistent store is basically a superset of what's in memory
+                (i.e. it includes nodes that have been evicted from memory).
+            </para>
+
+            <para>
+                When passivation is enabled, there is a direct relationship between
+                eviction and the cache loader. Writes to the persistent store via the
+                cache loader only occur as part of the eviction process. Data is deleted
+                from the persistent store when the application reads it back into
+                memory. In this case, what's in memory and what's in the persistent
+                store are two subsets of the total information set, with no intersection between the subsets.
+            </para>
+
+            <para>
+                Following is a simple example, showing what state is in RAM and in the
+                persistent store after each step of a 6 step process:
+            </para>
+
+            <orderedlist>
+                <listitem>Insert /A</listitem>
+                <listitem>Insert /B</listitem>
+                <listitem>Eviction thread runs, evicts /A</listitem>
+                <listitem>Read /A</listitem>
+                <listitem>Eviction thread runs, evicts /B</listitem>
+                <listitem>Remove /B</listitem>
+            </orderedlist>
+
+            <para>When passivation is disabled:</para>
+            <programlisting>
+                1) Memory: /A Disk: /A
+                2) Memory: /A, /B Disk: /A, /B
+                3) Memory: /B Disk: /A, /B
+                4) Memory: /A, /B Disk: /A, /B
+                5) Memory: /A Disk: /A, /B
+                6) Memory: /A Disk: /A
+            </programlisting>
+
+            <para>When passivation is enabled:</para>
+            <programlisting>
+                1) Memory: /A Disk:
+                2) Memory: /A, /B Disk:
+                3) Memory: /B Disk: /A
+                4) Memory: /A, /B Disk:
+                5) Memory: /A Disk: /B
+                6) Memory: /A Disk:
+            </programlisting>
+        </section>
+
+    </section>
+
+    <section>
+        <title>Strategies</title>
+        <para>
+            This section discusses different patterns of combining different cache loader types and configuration
+            options to achieve specific outcomes.
+        </para>
+
+        <section>
+            <title>Local Cache With Store</title>
+
+            <para>This is the simplest case. We have a JBoss Cache instance, whose
+                cache mode is
+                <literal>LOCAL</literal>
+                , therefore no replication is going
+                on. The cache loader simply loads non-existing elements from the store
+                and stores modifications back to the store. When the cache is started,
+                depending on the
+                <literal>preload</literal>
+                element, certain data can
+                be preloaded, so that the cache is partly warmed up.
+            </para>
+        </section>
+
+        <section>
+            <title>Replicated Caches With All Caches Sharing The Same Store</title>
+
+            <para>The following figure shows 2 JBoss Cache instances sharing the same
+                backend store:
+            </para>
+
+            <figure>
+                <title>2 nodes sharing a backend store</title>
+
+                <mediaobject>
+                    <imageobject>
+                        <imagedata fileref="SharedCacheLoader.png"/>
+                    </imageobject>
+                </mediaobject>
+            </figure>
+
+            <para>Both nodes have a cache loader that accesses a common shared
+                backend store. This could for example be a shared filesystem (using
+                the FileCacheLoader), or a shared database. Because both nodes access
+                the same store, they don't necessarily need state transfer on
+                startup.
+                <footnote>
+                    <para>Of course they can enable state transfer, if they want to
+                        have a warm or hot cache after startup.
+                    </para>
+                </footnote>
+                Rather, the
+                <literal>FetchInMemoryState</literal>
+                attribute could be set to false, resulting in a 'cold' cache, that
+                gradually warms up as elements are accessed and loaded for the first
+                time. This would mean that individual caches in a cluster might have
+                different in-memory state at any given time (largely depending on
+                their preloading and eviction strategies).
+            </para>
+
+            <para>When storing a value, the writer takes care of storing the
+                change in the backend store. For example, if node1 made change C1 and
+                node2 C2, then node1 would tell its cache loader to store C1, and node2
+                would tell its cache loader to store C2.
+            </para>
+        </section>
+
+        <section>
+            <title>Replicated Caches With Only One Cache Having A Store</title>
+
+            <figure>
+                <title>2 nodes but only one accesses the backend store</title>
+
+                <mediaobject>
+                    <imageobject>
+                        <imagedata fileref="OnlyOneCacheLoader.png"/>
+                    </imageobject>
+                </mediaobject>
+            </figure>
+
+            <para>This is a similar case to the previous one, but here only one
+                node in the cluster interacts with a backend store via its
+                cache loader. All other nodes perform in-memory replication. The idea
+                here is all application state is kept in memory in each node, with
+                the existence of multiple caches making the data highly available.
+                (This assumes that a client that needs the data is able to somehow
+                fail over from one cache to another.) The single persistent backend
+                store then provides a backup copy of the data in case all caches in
+                the cluster fail or need to be restarted.
+            </para>
+            <para>
+                Note that here it may make sense for the cache loader to store
+                changes asynchronously, that is
+                <emphasis>not</emphasis>
+                on the caller's thread, in order not to slow
+                down the cluster by accessing (for example) a database. This is a
+                non-issue when using asynchronous replication.
+            </para>
+            <para>
+                A weakness with this architecture is that the cache with access
+                to the cache loader becomes a single point of failure. Furthermore,
+                if the cluster is restarted, the cache with the cache loader must
+                be started first (easy to forget). A solution to the first problem
+                is to configure a cache loader on each node, but set the
+                <literal>singletonStore</literal>
+                configuration to
+                <literal>true</literal>. With this kind of setup, one but only one
+                node will always be writing to a persistent store. However, this
+                complicates the restart problem, as before restarting you need
+                to determine which cache was writing before the shutdown/failure
+                and then start that cache first.
+            </para>
+        </section>
+
+        <section>
+            <title>Replicated Caches With Each Cache Having Its Own Store</title>
+
+            <figure>
+                <title>2 nodes each having its own backend store</title>
+
+                <mediaobject>
+                    <imageobject>
+                        <imagedata fileref="LocalCacheLoader.png"/>
+                    </imageobject>
+                </mediaobject>
+            </figure>
+
+            <para>Here, each node has its own datastore. Modifications to the
+                cache are (a) replicated across the cluster and (b) persisted using
+                the cache loader. This means that all datastores have exactly the same
+                state. When replicating changes synchronously and in a transaction,
+                the two phase commit protocol takes care that all modifications are
+                replicated and persisted in each datastore, or none is replicated and
+                persisted (atomic updates).
+            </para>
+
+            <para>Note that JBoss Cache is
+                <emphasis>not</emphasis>
+                an
+                XA Resource, that means it doesn't implement recovery. When used with a
+                transaction manager that supports recovery, this functionality is not
+                available.
+            </para>
+
+            <para>The challenge here is state transfer: when a new node starts it
+                needs to do the following:
+            </para>
+
+            <orderedlist>
+                <listitem>
+                    <para>Tell the coordinator (oldest node in a cluster) to send it
+                        the state. This is always a full state transfer, overwriting
+                        any state that may already be present.
+                    </para>
+                </listitem>
+
+                <listitem>
+                    <para>The coordinator then needs to wait until all in-flight
+                        transactions have completed. During this time, it will not allow
+                        for new transactions to be started.
+                    </para>
+                </listitem>
+
+                <listitem>
+                    <para>Then the coordinator asks its cache loader for the entire
+                        state using
+                        <literal>loadEntireState()</literal>
+                        . It then sends
+                        back that state to the new node.
+                    </para>
+                </listitem>
+
+                <listitem>
+                    <para>The new node then tells its cache loader to store that state
+                        in its store, overwriting the old state. This is the
+                        <literal>CacheLoader.storeEntireState()</literal>
+                        method
+                    </para>
+                </listitem>
+
+                <listitem>
+                    <para>As an option, the transient (in-memory) state can be
+                        transferred as well during the state transfer.
+                    </para>
+                </listitem>
+
+                <listitem>
+                    <para>The new node now has the same state in its backend store as
+                        everyone else in the cluster, and modifications received from
+                        other nodes will now be persisted using the local
+                        cache loader.
+                    </para>
+                </listitem>
+            </orderedlist>
+
+
+        </section>
+
+        <section>
+            <title>Hierarchical Caches</title>
+
+            <para>If you need to set up a hierarchy within a single JVM, you can
+                use the
+                <literal>LocalDelegatingCacheLoader</literal>
+                . This type of
+                hierarchy can currently only be set up programmatically.
+            </para>
+
+            <para>
+                Hierarchical caches could also be set up spanning more than one JVM or server, using the
+                <literal>TcpDelegatingCacheLoader</literal>
+                .
+                <figure>
+                    <title>TCP delegating cache loader</title>
+
+                    <mediaobject>
+                        <imageobject>
+                            <imagedata fileref="DelegatingCacheLoader.png"/>
+                        </imageobject>
+                    </mediaobject>
+                </figure>
+
+            </para>
+
+        </section>
+
+
+        <section>
+            <title>Multiple Cache Loaders</title>
+
+            <para>
+                You can set up more than one cache loader in a chain. Internally, a delegating
+                <literal>ChainingCacheLoader</literal>
+                is used, with references to each
+                cache loader you have configured. Use cases vary depending on the type of cache loaders used in the
+                chain.
+                One example is
+                using a filesystem based cache loader, co-located on the same host as the JVM, used as an overflow for
+                memory. This ensures
+                data is available relatively easily and with low cost. An additional remote cache loader, such as a
+                <literal>TcpDelegatingCacheLoader</literal>
+                provides resilience between server restarts.
+            </para>
+
+            <figure>
+                <title>Multiple cache loaders in a chain</title>
+
+                <mediaobject>
+                    <imageobject>
+                        <imagedata fileref="MultipleCacheLoaders.png"/>
+                    </imageobject>
+                </mediaobject>
+            </figure>
+
+        </section>
+
+
+    </section>
+
+
+</chapter>

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/compatibility.xml
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/compatibility.xml	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/compatibility.xml	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,48 @@
+<chapter id="compatibility">
+   <title>Version Compatibility and Interoperability</title>
+
+   <section>
+      <title>API compatibility</title>
+   <para>
+      Within a major version, releases of JBoss Cache are meant to be compatible and
+      interoperable. Compatible in the sense that it should be possible to
+      upgrade an application from one version to another by simply replacing
+      jars. Interoperable in the sense that if two different versions of
+      JBoss Cache are used in the same cluster, they should be able to exchange
+      replication and state transfer messages. Note however that interoperability
+      requires use of the same JGroups version in all nodes in the cluster.
+      In most cases, the version of JGroups used by a version of JBoss Cache can
+      be upgraded.
+   </para>
+
+   <para>
+      As such, JBoss Cache 2.x.x is not API or binary compatible with prior 1.x.x versions.
+      On the other hand, JBoss Cache 2.1.x will be API and binary compatible with 2.0.x.
+   </para>
+
+   <para>
+      We have made best efforts, however, to keep JBoss Cache 3.x both binary and API compatible with 2.x.  Still,
+      it is recommended that client code is updated not to use deprecated methods, classes and configuration files.
+   </para>
+   </section>
+   <section>
+      <title>Wire-level interoperability</title>
+
+   <para>
+      A configuration parameter, <literal>Configuration.setReplicationVersion()</literal>, is available and is used
+      to control the wire format of inter-cache communications.  They can be wound back from more
+      efficient and newer protocols to "compatible" versions when talking to older releases.
+      This mechanism allows us to improve JBoss Cache by using more efficient wire formats while
+      still providing a means to preserve interoperability.
+   </para>
+   </section>
+   <section>
+      <title>Compatibility Matrix</title>
+      <para>
+         A <ulink url="http://www.jboss.org/jbosscache/compatibility/index.html">compatibility matrix</ulink> is
+         maintained on the JBoss Cache website, which contains information on different versions of JBoss Cache,
+         JGroups and JBoss Application Server.
+      </para>
+   </section>
+   
+</chapter>
\ No newline at end of file

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/configuration.xml
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/configuration.xml	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/configuration.xml	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,337 @@
+<chapter id="configuration">
+   <title>Configuration</title>
+
+   <section>
+      <title>Configuration Overview</title>
+
+      <para>
+         The
+         <literal>org.jboss.cache.config.Configuration</literal>
+         class (along with its <link linkend="configuration.elements">component parts</link>)
+         is a Java Bean that encapsulates the configuration of the <literal>Cache</literal>
+         and all of its architectural elements (cache loaders, evictions policies, etc.)
+      </para>
+
+      <para>
+         The <literal>Configuration</literal> exposes numerous properties which
+         are summarized in the <link linkend="configuration_reference">configuration reference</link>
+         section of this book and many of which are discussed in later chapters. Any time you see a configuration option
+         discussed in this book, you can assume that the <literal>Configuration</literal>
+         class or one of its component parts exposes a simple property setter/getter for that configuration option.
+      </para>
+
+   </section>
+
+   <section id="configuration.creation">
+      <title>Creating a
+         <literal>Configuration</literal>
+      </title>
+
+      <para>
+         As discussed in the <link linkend="api.create_start">User API section</link>,
+         before a <literal>Cache</literal> can be created, the <literal>CacheFactory</literal>
+         must be provided with a <literal>Configuration</literal> object or with a file name or
+         input stream to use to parse a <literal>Configuration</literal> from XML. The following sections describe
+         how to accomplish this.
+      </para>
+
+      <section>
+         <title>Parsing an XML-based Configuration File</title>
+         <para>
+            The most convenient way to configure JBoss Cache is via an XML file. The JBoss Cache distribution ships
+            with a number of configuration files for common use cases. It is recommended that these files be used as
+            a starting point, and tweaked to meet specific needs.
+         </para>
+
+         <para>
+            The simplest example of a configuration XML file, a cache configured to run in LOCAL mode, looks like this:
+         </para>
+         <programlisting role="XML"><![CDATA[
+
+<?xml version="1.0" encoding="UTF-8"?>
+
+<jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xmlns="urn:jboss:jbosscache-core:config:3.1">
+</jbosscache>
+
+
+]]></programlisting>
+
+         <para>
+            This file uses sensible defaults for isolation levels, lock acquisition timeouts, locking modes, etc.  Another,
+            more complete, sample XML file is included in the
+            <link linkend="sample_xml_file">configuration reference</link>
+            section of this book,
+            along with
+            <link linkend="configuration_reference">a handy look-up table</link>
+            explaining the various options.
+         </para>
+         </section>
+         <section id="configuration.validation">
+            <title>Validating Configuration Files</title>
+            <para>
+               By default JBoss Cache will validate your XML configuration file against an XML schema and throw an
+               exception if the configuration is invalid.  This can be overridden with the <literal>-Djbosscache.config.validate=false</literal>
+               JVM parameter.  Alternately, you could specify your own schema to validate against, using the
+               <literal>-Djbosscache.config.schemaLocation=url</literal> parameter.
+            </para>
+            <para>
+               By default though, configuration files are validated against the JBoss Cache configuration schema, which is
+               included in the <literal>jbosscache-core.jar</literal> or on <literal>http://www.jboss.org/jbosscache/jbosscache-config-3.0.xsd</literal>.
+               Most XML editing tools can be used with this schema to ensure the configuration file you create is correct
+               and valid.
+            </para>
+         </section>
+
+      <section>
+         <title>Programmatic Configuration</title>
+         <para>
+            In addition to the XML-based configuration above, the
+            <literal>Configuration</literal>
+            can be built up programatically,
+            using the simple property mutators exposed by
+            <literal>Configuration</literal>
+            and its components. When constructed,
+            the
+            <literal>Configuration</literal>
+            object is preset with JBoss Cache
+            defaults and can even be used as-is for a quick start.
+         </para>
+
+         <programlisting role="JAVA"><![CDATA[
+   Configuration config = new Configuration();
+   config.setTransactionManagerLookupClass( GenericTransactionManagerLookup.class.getName() );
+   config.setIsolationLevel(IsolationLevel.READ_COMMITTED);
+   config.setCacheMode(CacheMode.LOCAL);
+   config.setLockAcquisitionTimeout(15000);
+
+   CacheFactory factory = new DefaultCacheFactory();
+   Cache cache = factory.createCache(config);
+]]></programlisting>
+
+         <para>
+            Even the above fairly simple configuration is pretty tedious programming;
+            hence the preferred use of XML-based configuration. However, if your
+            application requires it, there is no reason not to use XML-based
+            configuration for most of the attributes, and then access the
+            <literal>Configuration</literal>
+            object to programatically change
+            a few items from the defaults, add an eviction region, etc.
+         </para>
+
+         <para>
+            Note that configuration values may not be changed programmatically when a cache is running,
+            except those annotated as
+            <literal>@Dynamic</literal>
+            . Dynamic properties are also marked as such in the
+            <link linkend="configuration_reference">configuration reference</link>
+            table. Attempting to change a non-dynamic
+            property will result in a
+            <literal>ConfigurationException</literal>
+            .
+         </para>
+      </section>
+
+      <section>
+         <title>Using an IOC Framework</title>
+
+         <para>
+            The
+            <literal>Configuration</literal>
+            class and its
+            <link linkend="configuration.elements">component parts</link>
+            are all Java Beans that expose all config elements via simple setters
+            and getters. Therefore, any good IOC framework such as Spring, Google Guice, JBoss Microcontainer, etc. should be able to
+            build up a
+            <literal>Configuration</literal>
+            from an XML file in
+            the framework's own format. See the
+            <link linkend="deployment.microcontainer">deployment via the JBoss micrcontainer</link>
+            section for an example of this.
+         </para>
+      </section>
+   </section>
+
+   <section id="configuration.elements">
+      <title>Composition of a
+         <literal>Configuration</literal>
+         Object
+      </title>
+
+      <para>
+         A
+         <literal>Configuration</literal>
+         is composed of a number of
+         subobjects:
+
+         <mediaobject>
+            <imageobject>
+               <imagedata fileref="Configuration.png"/>
+            </imageobject>
+         </mediaobject>
+      </para>
+
+      <para>
+         Following is a brief overview of the components of a
+         <literal>Configuration</literal>
+         . See the javadoc and the linked
+         chapters in this book for a more complete explanation of the
+         configurations associated with each component.
+
+         <itemizedlist>
+            <listitem>
+               <literal>Configuration</literal>
+               : top level object
+               in the hierarchy; exposes the configuration properties listed in the
+               <link linkend="configuration_reference">configuration reference</link>
+               section of this book.
+            </listitem>
+
+            <listitem>
+               <literal>BuddyReplicationConfig</literal>
+               : only relevant if
+               <link linkend="br">buddy replication</link>
+               is used. General
+               buddy replication configuration options. Must include a:
+            </listitem>
+
+            <listitem>
+               <literal>BuddyLocatorConfig</literal>
+               : implementation-specific
+               configuration object for the
+               <literal>BuddyLocator</literal>
+               implementation
+               being used. What configuration elements are exposed depends on
+               the needs of the
+               <literal>BuddyLocator</literal>
+               implementation.
+            </listitem>
+
+            <listitem>
+               <literal>EvictionConfig</literal>
+               : only relevant if
+               <link linkend="eviction_policies">eviction</link>
+               is used. General
+               eviction configuration options. Must include at least one:
+            </listitem>
+
+            <listitem>
+               <literal>EvictionRegionConfig</literal>
+               : one for each
+               eviction region; names the region, etc. Must include a:
+            </listitem>
+
+            <listitem>
+               <literal>EvictionAlgorithmConfig</literal>
+               : implementation-specific
+               configuration object for the
+               <literal>EvictionAlgorithm</literal>
+               implementation
+               being used. What configuration elements are exposed depends on
+               the needs of the
+               <literal>EvictionAlgorithm</literal>
+               implementation.
+            </listitem>
+
+            <listitem>
+               <literal>CacheLoaderConfig</literal>
+               : only relevant if a
+               <link linkend="cache_loaders">cache loader</link>
+               is used. General
+               cache loader configuration options. Must include at least one:
+            </listitem>
+
+            <listitem>
+               <literal>IndividualCacheLoaderConfig</literal>
+               : implementation-specific
+               configuration object for the
+               <literal>CacheLoader</literal>
+               implementation
+               being used. What configuration elements are exposed depends on
+               the needs of the
+               <literal>CacheLoader</literal>
+               implementation.
+            </listitem>
+
+            <listitem>
+               <literal>RuntimeConfig</literal>
+               : exposes to cache clients
+               certain information about the cache's runtime environment (e.g. membership
+               in buddy replication groups if
+               <link linkend="br">buddy replication</link>
+               is used.) Also allows
+               direct injection into the cache of needed external services like a
+               JTA
+               <literal>TransactionManager</literal>
+               or a JGroups
+               <literal>ChannelFactory</literal>
+               .
+            </listitem>
+         </itemizedlist>
+      </para>
+   </section>
+
+   <section>
+      <title>Dynamic Reconfiguration</title>
+      <para>
+         Dynamically changing the configuration of
+         <emphasis>some</emphasis>
+         options while the cache is running is supported,
+         by programmatically obtaining the
+         <literal>Configuration</literal>
+         object from the running cache and changing values. E.g.,
+      </para>
+      <programlisting role="JAVA"><![CDATA[
+   Configuration liveConfig = cache.getConfiguration();
+   liveConfig.setLockAcquisitionTimeout(2000);
+         ]]></programlisting>
+      <para>
+         A complete listing of which options may be changed dynamically is in the
+         <link linkend="configuration_reference">configuration reference</link>
+         section. An
+         <literal>org.jboss.cache.config.ConfigurationException</literal>
+         will be thrown if you attempt to change a
+         setting that is not dynamic.
+      </para>
+
+      <section id="configuration.options">
+         <title>Overriding the Configuration via the Option API</title>
+         <para>
+            The Option API allows you to override certain behaviours of the cache on a per invocation basis.
+            This involves creating an instance of
+            <literal>org.jboss.cache.config.Option</literal>
+            , setting the options
+            you wish to override on the
+            <literal>Option</literal>
+            object and passing it in the
+            <literal>InvocationContext</literal>
+            before invoking your method on the cache.
+         </para>
+         <para>
+            E.g., to force a write lock when reading data (when used in a transaction, this provides semantics
+            similar to SELECT FOR UPDATE in a database)
+         </para>
+         <programlisting role="JAVA"><![CDATA[
+      // first start a transaction
+      cache.getInvocationContext().getOptionOverrides().setForceWriteLock(true);
+      Node n = cache.getNode(Fqn.fromString("/a/b/c"));
+      // make changes to the node
+      // commit transaction        
+   ]]></programlisting>
+
+         <para>
+            E.g., to suppress replication of a put call in a REPL_SYNC cache:
+         </para>
+         <programlisting role="JAVA"><![CDATA[
+      Node node = cache.getChild(Fqn.fromString("/a/b/c"));
+      cache.getInvocationContext().getOptionOverrides().setLocalOnly(true);
+      node.put("localCounter", new Integer(2));
+            ]]></programlisting>
+         <para>
+            See the javadocs on the
+            <literal>Option</literal>
+            class for details on the options available.
+         </para>
+      </section>
+   </section>
+</chapter>

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/configuration_reference.xml
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/configuration_reference.xml	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/configuration_reference.xml	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,3403 @@
+<chapter id="configuration_reference_chapter">
+   <title>Configuration References</title>
+   <section id="sample_xml_file">
+      <title>Sample XML Configuration File</title>
+      <para>
+         This is what a typical XML configuration file looks like. It is recommended that you use one of the
+         configurations shipped with the JBoss Cache distribution and tweak according to your needs rather than write
+         one from scratch.
+      </para>
+      <programlisting role="XML"><![CDATA[
+<?xml version="1.0" encoding="UTF-8"?>
+
+<jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.1">
+
+
+   <!--
+      isolation levels supported: READ_COMMITTED and REPEATABLE_READ
+      nodeLockingSchemes: mvcc, pessimistic (deprecated), optimistic (deprecated)
+   -->
+   <locking
+         isolationLevel="REPEATABLE_READ"
+         lockParentForChildInsertRemove="false"
+         lockAcquisitionTimeout="20000"
+         nodeLockingScheme="mvcc"
+         writeSkewCheck="false"
+         useLockStriping="true"
+         concurrencyLevel="500"/>
+
+   <!--
+      Used to register a transaction manager and participate in ongoing transactions.
+      -->
+   <transaction
+         transactionManagerLookupClass="org.jboss.cache.transaction.GenericTransactionManagerLookup"
+         syncRollbackPhase="false"
+         syncCommitPhase="false"/>
+
+   <!--
+      Used to register JMX statistics in any available MBean server
+      -->
+   <jmxStatistics
+         enabled="false"/>
+
+   <!--
+      If region based marshalling is used, defines whether new regions are inactive on startup.
+   -->
+   <startup
+         regionsInactiveOnStartup="true"/>
+
+   <!--
+      Used to register JVM shutdown hooks.
+      hookBehavior: DEFAULT, REGISTER, DONT_REGISTER
+   -->
+   <shutdown
+         hookBehavior="DEFAULT"/>
+
+   <!--
+      Used to define async listener notification thread pool size
+   -->
+   <listeners
+         asyncPoolSize="1"
+         asyncQueueSize="100000"/>
+
+   <!--
+      Used to enable invocation batching and allow the use of Cache.startBatch()/endBatch() methods.
+   -->
+   <invocationBatching
+         enabled="false"/>
+
+   <!--
+      serialization related configuration, used for replication and cache loading
+   -->
+   <serialization
+         objectInputStreamPoolSize="12"
+         objectOutputStreamPoolSize="14"
+         version="3.0.0"
+         marshallerClass="org.jboss.cache.marshall.VersionAwareMarshaller"
+         useLazyDeserialization="false"
+         useRegionBasedMarshalling="false"/>
+
+   <!--
+      This element specifies that the cache is clustered.
+      modes supported: replication (r) or invalidation (i).
+   -->
+   <clustering mode="replication" clusterName="JBossCache-cluster">
+
+      <!--
+         Defines whether to retrieve state on startup
+      -->
+      <stateRetrieval timeout="20000" fetchInMemoryState="false"/>
+
+      <!--
+         Network calls are synchronous.
+      -->
+      <sync replTimeout="20000"/>
+      <!--
+         Uncomment this for async replication.
+      -->
+      <!--<async useReplQueue="true" replQueueInterval="10000" replQueueMaxElements="500" serializationExecutorPoolSize="20" serializationExecutorQueueSize="5000000"/>-->
+
+      <!-- Uncomment to use Buddy Replication -->
+      <!--
+      <buddy enabled="true" poolName="myBuddyPoolReplicationGroup" communicationTimeout="2000">
+         <dataGravitation auto="true" removeOnFind="true" searchBackupTrees="true"/>
+         <locator class="org.jboss.cache.buddyreplication.NextMemberBuddyLocator">
+            <properties>
+               numBuddies = 1
+               ignoreColocatedBuddies = true
+            </properties>
+         </locator>
+      </buddy>
+      -->
+
+      <!--
+         Configures the JGroups channel.  Looks up a JGroups config file on the classpath or filesystem.  udp.xml
+         ships with jgroups.jar and will be picked up by the class loader.
+      -->
+      <jgroupsConfig configFile="udp.xml">
+         <!-- uncomment to define a JGroups stack here
+
+         <PING timeout="2000" num_initial_members="3"/>
+         <MERGE2 max_interval="30000" min_interval="10000"/>
+         <FD_SOCK/>
+         <FD timeout="10000" max_tries="5" shun="true"/>
+         <VERIFY_SUSPECT timeout="1500"/>
+         <pbcast.NAKACK use_mcast_xmit="false" gc_lag="0"
+                        retransmit_timeout="300,600,1200,2400,4800"
+                        discard_delivered_msgs="true"/>
+         <UNICAST timeout="300,600,1200,2400,3600"/>
+         <pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000"
+                        max_bytes="400000"/>
+         <pbcast.GMS print_local_addr="true" join_timeout="5000" shun="false"
+                     view_bundling="true" view_ack_collection_timeout="5000"/>
+         <FRAG2 frag_size="60000"/>
+         <pbcast.STREAMING_STATE_TRANSFER use_reading_thread="true"/>
+         <pbcast.FLUSH timeout="0"/>
+          -->
+      </jgroupsConfig>
+   </clustering>
+
+   <!--
+      Eviction configuration.  WakeupInterval defines how often the eviction thread runs, in milliseconds.  0 means
+      the eviction thread will never run.
+   -->
+   <eviction wakeUpInterval="500">
+      <default algorithmClass="org.jboss.cache.eviction.LRUAlgorithm" eventQueueSize="200000">
+         <property name="maxNodes" value="5000" />
+         <property name="timeToLive" value="1000" />
+      </default>
+      <region name="/org/jboss/data1">
+         <property name="timeToLive" value="2000" />
+      </region>
+      <region name="/org/jboss/data2" algorithmClass="org.jboss.cache.eviction.FIFOAlgorithm" eventQueueSize="100000">
+         <property name="maxNodes" value="3000" />
+         <property name="minTimeToLive" value="4000" />
+      </region>
+   </eviction>
+
+   <!--
+      Cache loaders.
+
+      If passivation is enabled, state is offloaded to the cache loaders ONLY when evicted.  Similarly, when the state
+      is accessed again, it is removed from the cache loader and loaded into memory.
+
+      Otherwise, state is always maintained in the cache loader as well as in memory.
+
+      Set 'shared' to true if all instances in the cluster use the same cache loader instance, e.g., are talking to the
+      same database.
+   -->
+   <loaders passivation="false" shared="false">
+      <preload>
+         <node fqn="/org/jboss"/>
+         <node fqn="/org/tempdata"/>
+      </preload>
+
+      <!--
+         we can have multiple cache loaders, which get chained
+      -->
+      <loader class="org.jboss.cache.loader.JDBCCacheLoader" async="true" fetchPersistentState="true"
+              ignoreModifications="true" purgeOnStartup="true">
+         <properties>
+            cache.jdbc.table.name=jbosscache
+            cache.jdbc.table.create=true
+            cache.jdbc.table.drop=true
+         </properties>
+         <singletonStore enabled="true" class="org.jboss.cache.loader.SingletonStoreCacheLoader">
+            <properties>
+               pushStateWhenCoordinator=true
+               pushStateWhenCoordinatorTimeout=20000
+            </properties>
+         </singletonStore>
+      </loader>
+   </loaders>
+
+   <!--
+      Define custom interceptors.  All custom interceptors need to extend org.jboss.cache.interceptors.base.CommandInterceptor
+   -->
+   <!--
+   <customInterceptors>
+      <interceptor position="first" class="org.jboss.cache.config.parsing.custominterceptors.AaaCustomInterceptor">
+         <property name="attrOne" value="value1" />
+         <property name="attrTwo" value="value2" />
+      </interceptor>
+      <interceptor position="last" class="org.jboss.cache.config.parsing.custominterceptors.BbbCustomInterceptor"/>
+      <interceptor index="3" class="org.jboss.cache.config.parsing.custominterceptors.AaaCustomInterceptor"/>
+      <interceptor before="org.jboss.cache.interceptors.CallInterceptor"
+                   class="org.jboss.cache.config.parsing.custominterceptors.BbbCustomInterceptor"/>
+      <interceptor after="org.jboss.cache.interceptors.CallInterceptor"
+                   class="org.jboss.cache.config.parsing.custominterceptors.AaaCustomInterceptor"/>
+   </customInterceptors>
+   -->
+</jbosscache>
+
+
+]]></programlisting>
+      <section>
+         <title>XML validation</title>
+         <para>
+            Configuration XML files are validated using an XSD schema.  This schema is included in
+            <literal>jbosscache-core.jar</literal> and is also available online: <literal>http://www.jboss.org/jbosscache/jbosscache-config-3.0.xsd</literal>.
+            Most IDEs and XML authoring tools will be able to use this schema to validate your configuration file as you
+            write it.
+         </para>
+         <para>
+            JBoss Cache also validates your configuration file when you start up, and will throw an exception if it
+            encounters an invalid file.  You can suppress this behavior by passing in <literal>-Djbosscache.config.validate=false</literal>
+            to your JVM when you start up.  Alternatively, you can point the validator to a different schema by
+            passing in <literal>-Djbosscache.config.schemaLocation=url</literal>.
+         </para>
+      </section>
+   </section>
+
+
+   <section id="configuration_reference">
+      <title>
+         Configuration File Quick Reference
+      </title>
+      <para>A list of definitions of each of the XML elements attributes used above, and their bean counterparts for
+         programmatic configuration. If the description of an attribute states that it is <emphasis>dynamic</emphasis>,
+         that means it can be changed after the cache is created and started.
+      </para>
+
+      <table id="element.jbosscache">
+         <title>The <literal><![CDATA[<jbosscache />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<jbosscache />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        This is the root element for the JBoss Cache configuration file.  This is the only mandatory
+                        element in a valid JBoss Cache configuration file.
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>none (is root element)</para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        <link linkend="element.clustering"><literal><![CDATA[<clustering />]]></literal></link>,
+                        <link linkend="element.customInterceptors"><literal><![CDATA[<customInterceptors />]]></literal></link>,
+                        <link linkend="element.eviction"><literal><![CDATA[<eviction />]]></literal></link>,
+                        <link linkend="element.invocationBatching"><literal><![CDATA[<invocationBatching />]]></literal></link>,
+                        <link linkend="element.jmxStatistics"><literal><![CDATA[<jmxStatistics />]]></literal></link>,
+                        <link linkend="element.listeners"><literal><![CDATA[<listeners />]]></literal></link>,
+                        <link linkend="element.loaders"><literal><![CDATA[<loaders />]]></literal></link>,
+                        <link linkend="element.locking"><literal><![CDATA[<locking />]]></literal></link>,
+                        <link linkend="element.serialization"><literal><![CDATA[<serialization />]]></literal></link>,
+                        <link linkend="element.shutdown"><literal><![CDATA[<shutdown />]]></literal></link>,
+                        <link linkend="element.startup"><literal><![CDATA[<startup />]]></literal></link>,
+                        <link linkend="element.transaction"><literal><![CDATA[<transaction />]]></literal></link>
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean Equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para><literal>Configuration</literal></para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="attributes.jbosscache">
+         <title><literal><![CDATA[<jbosscache />]]></literal> Attributes</title>
+         <tgroup cols="5" align="left">
+            <colspec colname="c1" />
+            <colspec colname="c2" />
+            <colspec colname="c3" />
+            <colspec colname="c4" />
+            <colspec colname="c5" />
+            <spanspec spanname="hspan" namest="c1" nameend="c5" align="left" />
+            <thead valign="top">
+               <row><entry spanname="hspan"><literal><![CDATA[<jbosscache />]]></literal> Attributes</entry></row>
+               <row>
+                  <entry>Attribute</entry>
+                  <entry>Bean Field</entry>
+                  <entry>Allowed</entry>
+                  <entry>Default</entry>
+                  <entry>Description</entry>
+               </row>
+            </thead>
+
+            <tbody valign="top">
+               <row>
+                  <entry><emphasis role="bold">xmlns</emphasis></entry>
+                  <entry> - </entry>
+                  <entry>urn:jboss:jbosscache-core:config:3.1</entry>
+                  <entry>urn:jboss:jbosscache-core:config:3.1</entry>
+                  <entry>Defines the XML namespace for all configuration entries.</entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">xmlns:xsi</emphasis></entry>
+                  <entry> - </entry>
+                  <entry>http://www.w3.org/2001/XMLSchema-instance</entry>
+                  <entry>http://www.w3.org/2001/XMLSchema-instance</entry>
+                  <entry>Defines the XML schema instance for the configuration.</entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="element.locking">
+         <title>The <literal><![CDATA[<locking />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<locking />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        This element specifies locking behavior on the cache.
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para><link linkend="element.jbosscache"><literal><![CDATA[<jbosscache />]]></literal></link></para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para></para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para><literal>Configuration</literal></para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+            
+      <table id="attributes.locking">
+         <title><literal><![CDATA[<locking />]]></literal> Attributes</title>
+         <tgroup cols="5" align="left">
+            <colspec colname="c1" />
+            <colspec colname="c2" />
+            <colspec colname="c3" />
+            <colspec colname="c4" />
+            <colspec colname="c5" />
+
+            <spanspec spanname="hspan" namest="c1" nameend="c5" align="left" />
+            <thead valign="top">
+               <row><entry spanname="hspan"><literal><![CDATA[<locking />]]></literal> Attributes</entry></row>
+               <row>
+                  <entry>Attribute</entry>
+                  <entry>Bean Field</entry>
+                  <entry>Allowed</entry>
+                  <entry>Default</entry>
+
+                  <entry>Description</entry>
+               </row>
+            </thead>
+
+            <tbody valign="top">
+               <row>
+                  <entry><emphasis role="bold">isolationLevel</emphasis></entry>
+                  <entry>isolationLevel</entry>
+                  <entry>READ_COMMITTED, REPEATABLE_READ</entry>
+                  <entry>REPEATABLE_READ</entry>
+
+                  <entry>The isolation level used for transactions.</entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">lockParentForChildInsertRemove</emphasis></entry>
+                  <entry>lockParentForChildInsertRemove</entry>
+                  <entry>true, false</entry>
+                  <entry>false</entry>
+
+                  <entry>Specifies whether parent nodes are locked when inserting or removing children.  This
+                     can also be configured on a per-node basis (see <literal>Node.setLockForChildInsertRemove()</literal></entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">lockAcquisitionTimeout</emphasis></entry>
+                  <entry>lockAcquisitionTimeout
+                     (<emphasis>dynamic</emphasis>)</entry>
+                  <entry>Any positive long value</entry>
+                  <entry>10000</entry>
+
+                  <entry>Length of time, in milliseconds, that a thread will try and acquire a lock.  A <literal>TimeoutException</literal>
+                  is usually thrown if a lock cannot be acquired in this given timeframe.  Can be overridden
+                  on a per-invocation basis using <literal>Option.setLockAcquisitionTimeout()</literal></entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">nodeLockingScheme</emphasis>
+                     (<emphasis>deprecated</emphasis>)</entry>
+                  <entry>nodeLockingScheme</entry>
+                  <entry>mvcc, pessimistic, optimistic</entry>
+                  <entry>mvcc</entry>
+
+                  <entry>Specifies the node locking scheme to be used.</entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">writeSkewCheck</emphasis></entry>
+                  <entry>writeSkewCheck</entry>
+                  <entry>true, false</entry>
+                  <entry>false</entry>
+
+                  <entry>Specifies whether to check for write skews.  Only used if <literal>nodeLockingScheme</literal>
+                  is <literal>mvcc</literal> and <literal>isolationLevel</literal> is <literal>REPEATABLE_READ</literal>.
+                  See the <link linkend="mvcc.writeskew">section on write skews</link> for a more detailed discussion.</entry>
+               </row>
+                <row>
+                  <entry><emphasis role="bold">useLockStriping</emphasis></entry>
+                  <entry>useLockStriping</entry>
+                  <entry>true, false</entry>
+                  <entry>true</entry>
+
+                  <entry>Specifies whether lock striping is used.  Only used if <literal>nodeLockingScheme</literal>
+                    is <literal>mvcc</literal>.  Lock striping usually offers greater performance and better memory usage,
+                    although in certain cases deadlocks may occur where several Fqns map to the same shared lock.  This
+                    can be mitigated by increasing your concurrency level, though the only concrete solution is to
+                    disable lock striping altogether.
+                  </entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">concurrencyLevel</emphasis></entry>
+                  <entry>concurrencyLevel</entry>
+                  <entry>Any positive integer; 0 not allowed.</entry>
+                  <entry>500</entry>
+
+                  <entry>Specifies the number of shared locks to use for write locks acquired.  Only used if <literal>nodeLockingScheme</literal>
+                  is <literal>mvcc</literal>.
+                  See the <link linkend="mvcc.impl">section on JBoss Cache's MVCC implementation</link> for a more detailed discussion.</entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="element.transaction">
+         <title>The <literal><![CDATA[<transaction />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<transaction />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        This element specifies transactional behavior on the cache.
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para><link linkend="element.jbosscache"><literal><![CDATA[<jbosscache />]]></literal></link></para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para></para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para><literal>Configuration</literal></para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="attributes.transaction">
+         <title><literal><![CDATA[<transaction />]]></literal> Attributes</title>
+         <tgroup cols="5" align="left">
+            <colspec colname="c1" />
+            <colspec colname="c2" />
+            <colspec colname="c3" />
+            <colspec colname="c4" />
+            <colspec colname="c5" />
+
+            <spanspec spanname="hspan" namest="c1" nameend="c5" align="left" />
+            <thead valign="top">
+               <row><entry spanname="hspan"><literal><![CDATA[<transaction />]]></literal> Attributes</entry></row>
+               <row>
+                  <entry>Attribute</entry>
+                  <entry>Bean Field</entry>
+                  <entry>Allowed</entry>
+                  <entry>Default</entry>
+
+                  <entry>Description</entry>
+               </row>
+            </thead>
+
+            <tbody valign="top">
+               <row>
+                  <entry><emphasis role="bold">transactionManagerLookupClass</emphasis></entry>
+                  <entry>transactionManagerLookupClass</entry>
+                  <entry>A valid class that is available on the classpath</entry>
+                  <entry>none</entry>
+
+                  <entry>Specifies the <literal>TransactionManagerLookupClass</literal> implementation to use to obtain
+                  a transaction manager.  If not specified (and a <literal>TransactionManager</literal> is not injected
+                  using <literal>RuntimeConfig.setTransactionManager()</literal>, the cache will not be able to participate
+                  in any transactions.</entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">syncCommitPhase</emphasis></entry>
+                  <entry>syncCommitPhase
+                     (<emphasis>dynamic</emphasis>)
+                  </entry>
+                  <entry>true, false</entry>
+                  <entry>false</entry>
+
+                  <entry>If enabled, commit messages that are broadcast around a cluster are done so synchronously.  This is
+                  usually of little value since detecting a failure in broadcasting a commit means little else can be done
+                  except log a message, since some nodes in a cluster may have already committed and cannot rollback.</entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">syncRollbackPhase</emphasis></entry>
+                  <entry>syncRollbackPhase
+                     (<emphasis>dynamic</emphasis>)
+                  </entry>
+                  <entry>true, false</entry>
+                  <entry>false</entry>
+
+                  <entry>If enabled, rollback messages that are broadcast around a cluster are done so synchronously.  This is
+                  usually of little value since detecting a failure in broadcasting a rollback means little else can be done
+                  except log a message, since some nodes in a cluster may have already committed and cannot rollback.</entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="element.jmxStatistics">
+         <title>The <literal><![CDATA[<jmxStatistics />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<jmxStatistics />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        This element specifies whether cache statistics are gathered and reported via JMX.
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para><link linkend="element.jbosscache"><literal><![CDATA[<jbosscache />]]></literal></link></para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para></para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para><literal>Configuration</literal></para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="attributes.jmxStatistics">
+         <title><literal><![CDATA[<jmxStatistics />]]></literal> Attributes</title>
+         <tgroup cols="5" align="left">
+            <colspec colname="c1" />
+            <colspec colname="c2" />
+            <colspec colname="c3" />
+            <colspec colname="c4" />
+            <colspec colname="c5" />
+
+            <spanspec spanname="hspan" namest="c1" nameend="c5" align="left" />
+            <thead valign="top">
+               <row><entry spanname="hspan"><literal><![CDATA[<jmxStatistics />]]></literal> Attributes</entry></row>
+               <row>
+                  <entry>Attribute</entry>
+                  <entry>Bean Field</entry>
+                  <entry>Allowed</entry>
+                  <entry>Default</entry>
+
+                  <entry>Description</entry>
+               </row>
+            </thead>
+
+            <tbody valign="top">
+               <row>
+                  <entry><emphasis role="bold">enabled</emphasis></entry>
+                  <entry>exposeManagementStatistics</entry>
+                  <entry>true, false</entry>
+                  <entry>true</entry>
+
+                  <entry>Controls whether cache statistics are gathered and exposed via JMX.</entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="element.startup">
+         <title>The <literal><![CDATA[<startup />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<startup />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        This element specifies behavior when the cache starts up.
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para><link linkend="element.jbosscache"><literal><![CDATA[<jbosscache />]]></literal></link></para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para></para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para><literal>Configuration</literal></para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="attributes.startup">
+         <title><literal><![CDATA[<startup />]]></literal> Attributes</title>
+         <tgroup cols="5" align="left">
+            <colspec colname="c1" />
+            <colspec colname="c2" />
+            <colspec colname="c3" />
+            <colspec colname="c4" />
+            <colspec colname="c5" />
+
+            <spanspec spanname="hspan" namest="c1" nameend="c5" align="left" />
+            <thead valign="top">
+               <row><entry spanname="hspan"><literal><![CDATA[<startup />]]></literal> Attributes</entry></row>
+               <row>
+                  <entry>Attribute</entry>
+                  <entry>Bean Field</entry>
+                  <entry>Allowed</entry>
+                  <entry>Default</entry>
+
+                  <entry>Description</entry>
+               </row>
+            </thead>
+
+            <tbody valign="top">
+               <row>
+                  <entry><emphasis role="bold">regionsInactiveOnStartup</emphasis></entry>
+                  <entry>inactiveOnStartup</entry>
+                  <entry>true, false</entry>
+                  <entry>false</entry>
+
+                  <entry>If <link linkend="architecture.regions">region-based marshalling</link> is enabled, this
+                     attribute controls whether new regions created are inactive on startup.</entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="element.shutdown">
+         <title>The <literal><![CDATA[<shutdown />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<shutdown />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        This element specifies behavior when the cache shuts down.
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para><link linkend="element.jbosscache"><literal><![CDATA[<jbosscache />]]></literal></link></para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para></para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para><literal>Configuration</literal></para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="attributes.shutdown">
+         <title><literal><![CDATA[<shutdown />]]></literal> Attributes</title>
+         <tgroup cols="5" align="left">
+            <colspec colname="c1" />
+            <colspec colname="c2" />
+            <colspec colname="c3" />
+            <colspec colname="c4" />
+            <colspec colname="c5" />
+
+            <spanspec spanname="hspan" namest="c1" nameend="c5" align="left" />
+            <thead valign="top">
+               <row><entry spanname="hspan"><literal><![CDATA[<shutdown />]]></literal> Attributes</entry></row>
+               <row>
+                  <entry>Attribute</entry>
+                  <entry>Bean Field</entry>
+                  <entry>Allowed</entry>
+                  <entry>Default</entry>
+
+                  <entry>Description</entry>
+               </row>
+            </thead>
+
+            <tbody valign="top">
+               <row>
+                  <entry><emphasis role="bold">hookBehavior</emphasis></entry>
+                  <entry>shutdownHookBehavior</entry>
+                  <entry>DEFAULT, DONT_REGISTER, REGISTER</entry>
+                  <entry>DEFAULT</entry>
+
+                  <entry>
+                     This attribute determines whether the cache registers a JVM shutdown hook so that it can clean
+                     up resources if the JVM is receives a shutdown signal.  By default a shutdown hook is registered
+                     if no MBean server (apart from the JDK default) is detected.  REGSTER forces the cache to register
+                     a shutdown hook even if an MBean server is detected, and DONT_REGISTER forces the cache NOT to
+                     register a shutdown hook, even if no MBean server is detected.
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="element.listeners">
+         <title>The <literal><![CDATA[<listeners />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<listeners />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        This element specifies behavior of registered cache listeners.
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para><link linkend="element.jbosscache"><literal><![CDATA[<jbosscache />]]></literal></link></para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para></para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para><literal>Configuration</literal></para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="attributes.listeners">
+         <title><literal><![CDATA[<listeners />]]></literal> Attributes</title>
+         <tgroup cols="5" align="left">
+            <colspec colname="c1" />
+            <colspec colname="c2" />
+            <colspec colname="c3" />
+            <colspec colname="c4" />
+            <colspec colname="c5" />
+
+            <spanspec spanname="hspan" namest="c1" nameend="c5" align="left" />
+            <thead valign="top">
+               <row><entry spanname="hspan"><literal><![CDATA[<listeners />]]></literal> Attributes</entry></row>
+               <row>
+                  <entry>Attribute</entry>
+                  <entry>Bean Field</entry>
+                  <entry>Allowed</entry>
+                  <entry>Default</entry>
+
+                  <entry>Description</entry>
+               </row>
+            </thead>
+
+            <tbody valign="top">
+               <row>
+                  <entry><emphasis role="bold">asyncPoolSize</emphasis></entry>
+                  <entry>listenerAsyncPoolSize</entry>
+                  <entry>integer</entry>
+                  <entry>1</entry>
+
+                  <entry>
+                     The size of the threadpool used to dispatch events to cache listeners that have registered as
+                     asynchronous listeners.  If this number is less than 1, all asynchronous listeners will be
+                     treated as synchronous listeners and notified synchronously.
+                  </entry>
+               </row>
+
+                <row>
+                  <entry><emphasis role="bold">asyncQueueSize</emphasis></entry>
+                  <entry>listenerAsyncQueueSize</entry>
+                  <entry>positive integer</entry>
+                  <entry>50000</entry>
+
+                  <entry>
+                     The size of the bounded queue used by the async listener threadpool.  Only considered if
+                     <literal>asyncPoolSize</literal> is greater than 0.  Increase this if you see a lot of threads
+                     blocking trying to add events to this queue.
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="element.invocationBatching">
+         <title>The <literal><![CDATA[<invocationBatching />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<invocationBatching />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        This element specifies behavior of invocation batching.
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para><link linkend="element.jbosscache"><literal><![CDATA[<jbosscache />]]></literal></link></para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para></para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para><literal>Configuration</literal></para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="attributes.invocationBatching">
+         <title><literal><![CDATA[<invocationBatching />]]></literal> Attributes</title>
+         <tgroup cols="5" align="left">
+            <colspec colname="c1" />
+            <colspec colname="c2" />
+            <colspec colname="c3" />
+            <colspec colname="c4" />
+            <colspec colname="c5" />
+
+            <spanspec spanname="hspan" namest="c1" nameend="c5" align="left" />
+            <thead valign="top">
+               <row><entry spanname="hspan"><literal><![CDATA[<invocationBatching />]]></literal> Attributes</entry></row>
+               <row>
+                  <entry>Attribute</entry>
+                  <entry>Bean Field</entry>
+                  <entry>Allowed</entry>
+                  <entry>Default</entry>
+
+                  <entry>Description</entry>
+               </row>
+            </thead>
+
+            <tbody valign="top">
+               <row>
+                  <entry><emphasis role="bold">enabled</emphasis></entry>
+                  <entry>invocationBatchingEnabled</entry>
+                  <entry>true, false</entry>
+                  <entry>false</entry>
+
+                  <entry>
+                     Whether invocation batching is enabled or not.  See the chapter on
+                     <link linkend="batching">invocation batching</link> for details.
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="element.serialization">
+         <title>The <literal><![CDATA[<serialization />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<serialization />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        This element specifies behavior of object serialization in JBoss Cache. 
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para><link linkend="element.jbosscache"><literal><![CDATA[<jbosscache />]]></literal></link></para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para></para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para><literal>Configuration</literal></para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="attributes.serialization">
+         <title><literal><![CDATA[<serialization />]]></literal> Attributes</title>
+         <tgroup cols="5" align="left">
+            <colspec colname="c1" />
+            <colspec colname="c2" />
+            <colspec colname="c3" />
+            <colspec colname="c4" />
+            <colspec colname="c5" />
+
+            <spanspec spanname="hspan" namest="c1" nameend="c5" align="left" />
+            <thead valign="top">
+               <row><entry spanname="hspan"><literal><![CDATA[<serialization />]]></literal> Attributes</entry></row>
+               <row>
+                  <entry>Attribute</entry>
+                  <entry>Bean Field</entry>
+                  <entry>Allowed</entry>
+                  <entry>Default</entry>
+
+                  <entry>Description</entry>
+               </row>
+            </thead>
+
+            <tbody valign="top">
+               <row>
+                  <entry><emphasis role="bold">marshallerClass</emphasis></entry>
+                  <entry>marshallerClass</entry>
+                  <entry>A valid class that is available on the classpath</entry>
+                  <entry>VersionAwareMarshaller</entry>
+
+                  <entry>
+                     Specifies the marshaller to use when serializing and deserializing objects, either for replication
+                     or persistence.
+                  </entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">useLazyDeserialization</emphasis></entry>
+                  <entry>useLazyDeserialization</entry>
+                  <entry>true, false</entry>
+                  <entry>false</entry>
+
+                  <entry>
+                     A mechanism by which serialization and deserialization of objects is deferred till the point in time
+                     in which they are used and needed.  This typically means that any deserialization happens using the
+                     thread context class loader of the invocation that requires deserialization, and is an effective
+                     mechanism to provide classloader isolation.
+                  </entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">useRegionBasedMarshalling</emphasis> (<emphasis>deprecated</emphasis>)</entry>
+                  <entry>useRegionBasedMarshalling</entry>
+                  <entry>true, false</entry>
+                  <entry>false</entry>
+
+                  <entry>
+                     An older mechanism by which classloader isolation was achieved, by registering classloaders on
+                     specific regions.
+                  </entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">version</emphasis></entry>
+                  <entry>replicationVersion</entry>
+                  <entry>Valid JBoss Cache version string</entry>
+                  <entry>Current version</entry>
+
+                  <entry>
+                     Used by the <literal>VersionAwareMarshaller</literal> in determining which version stream parser
+                     to use by default when initiating communications in a cluster.  Useful when you need to run a newer
+                     version of JBoss Cache in a cluster containing older versions, and can be used to perform rolling
+                     upgrades.
+                  </entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">objectInputStreamPoolSize</emphasis></entry>
+                  <entry>objectInputStreamPoolSize</entry>
+                  <entry>Positive integer</entry>
+                  <entry>50</entry>
+
+                  <entry>
+                     Not used at the moment.
+                  </entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">objectOutputStreamPoolSize</emphasis></entry>
+                  <entry>objectOutputStreamPoolSize</entry>
+                  <entry>Positive integer</entry>
+                  <entry>50</entry>
+
+                  <entry>
+                     Not used at the moment.
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="element.eviction">
+         <title>The <literal><![CDATA[<eviction />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<eviction />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        This element controls how eviction works in the cache.
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para><link linkend="element.jbosscache"><literal><![CDATA[<jbosscache />]]></literal></link></para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        <link linkend="element.default"><literal><![CDATA[<default />]]></literal></link>,
+                        <link linkend="element.region"><literal><![CDATA[<region />]]></literal></link>
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para><literal>EvictionConfig</literal></para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="attributes.eviction">
+         <title><literal><![CDATA[<eviction />]]></literal> Attributes</title>
+         <tgroup cols="5" align="left">
+            <colspec colname="c1" />
+            <colspec colname="c2" />
+            <colspec colname="c3" />
+            <colspec colname="c4" />
+            <colspec colname="c5" />
+
+            <spanspec spanname="hspan" namest="c1" nameend="c5" align="left" />
+            <thead valign="top">
+               <row><entry spanname="hspan"><literal><![CDATA[<eviction />]]></literal> Attributes</entry></row>
+               <row>
+                  <entry>Attribute</entry>
+                  <entry>Bean Field</entry>
+                  <entry>Allowed</entry>
+                  <entry>Default</entry>
+
+                  <entry>Description</entry>
+               </row>
+            </thead>
+
+            <tbody valign="top">
+               <row>
+                  <entry><emphasis role="bold">wakeUpInterval</emphasis></entry>
+                  <entry>wakeupInterval</entry>
+                  <entry>integer</entry>
+                  <entry>5000</entry>
+
+                  <entry>
+                     The frequency with which the eviction thread runs, in milliseconds.  If set to less than 1, the
+                     eviction thread never runs and is effectively disabled.
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="element.default">
+         <title>The <literal><![CDATA[<default />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<default />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        This element defines the default eviction region.
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para><link linkend="element.eviction"><literal><![CDATA[<eviction />]]></literal></link></para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        <link linkend="element.property"><literal><![CDATA[<property />]]></literal></link>
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para><literal>EvictionRegionConfig</literal></para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="attributes.default">
+         <title><literal><![CDATA[<default />]]></literal> Attributes</title>
+         <tgroup cols="5" align="left">
+            <colspec colname="c1" />
+            <colspec colname="c2" />
+            <colspec colname="c3" />
+            <colspec colname="c4" />
+            <colspec colname="c5" />
+
+            <spanspec spanname="hspan" namest="c1" nameend="c5" align="left" />
+            <thead valign="top">
+               <row><entry spanname="hspan"><literal><![CDATA[<default />]]></literal> Attributes</entry></row>
+               <row>
+                  <entry>Attribute</entry>
+                  <entry>Bean Field</entry>
+                  <entry>Allowed</entry>
+                  <entry>Default</entry>
+                  <entry>Description</entry>
+               </row>
+            </thead>
+
+            <tbody valign="top">
+               <row>
+                  <entry><emphasis role="bold">algorithmClass</emphasis></entry>
+                  <entry>evictionAlgorithmConfig</entry>
+                  <entry>A valid class that is available on the classpath</entry>
+                  <entry>none</entry>
+                  <entry>
+                     This attribute needs to be specified if this tag is being used.  Note that if being configured
+                     programmatically, the eviction algorithm's corresponding <literal>EvictionAlgorithmConfig</literal>
+                     file should be used instead.  E.g., where you would use <literal>LRUAlgorithm</literal> in XML, you
+                     would use an instance of <literal>LRUAlgorithmConfig</literal> programmatically.
+                  </entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">actionPolicyClass</emphasis></entry>
+                  <entry>evictionActionPolicyClassName</entry>
+                  <entry>A valid class that is available on the classpath</entry>
+                  <entry>DefaultEvictionActionPolicy</entry>
+                  <entry>
+                     The eviction action policy class, defining what happens when a node needs to be evicted.
+                  </entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">eventQueueSize</emphasis></entry>
+                  <entry>eventQueueSize
+                  (<emphasis>dynamic</emphasis></entry>
+                  <entry>integer</entry>
+                  <entry>200000</entry>
+                  <entry>
+                     The size of the bounded eviction event queue.
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="element.region">
+         <title>The <literal><![CDATA[<region />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<region />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        This element defines an eviction region.  Multiple instances of this tag can exist provided they
+                        have unique <literal>name</literal> attributes.
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para><link linkend="element.eviction"><literal><![CDATA[<eviction />]]></literal></link></para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        <link linkend="element.property"><literal><![CDATA[<property />]]></literal></link>
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para><literal>EvictionRegionConfig</literal></para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="attributes.region">
+         <title><literal><![CDATA[<region />]]></literal> Attributes</title>
+         <tgroup cols="5" align="left">
+            <colspec colname="c1" />
+            <colspec colname="c2" />
+            <colspec colname="c3" />
+            <colspec colname="c4" />
+            <colspec colname="c5" />
+
+            <spanspec spanname="hspan" namest="c1" nameend="c5" align="left" />
+            <thead valign="top">
+               <row><entry spanname="hspan"><literal><![CDATA[<region />]]></literal> Attributes</entry></row>
+               <row>
+                  <entry>Attribute</entry>
+                  <entry>Bean Field</entry>
+                  <entry>Allowed</entry>
+                  <entry>Default</entry>
+                  <entry>Description</entry>
+               </row>
+            </thead>
+
+            <tbody valign="top">
+               <row>
+                  <entry><emphasis role="bold">name</emphasis></entry>
+                  <entry>regionFqn</entry>
+                  <entry>A String that could be parsed using Fqn.fromString()</entry>
+                  <entry>none</entry>
+                  <entry>
+                     This should be a unique name that defines this region.  See the <link linkend="regions">chapter on eviction</link>
+                     for details of eviction regions.
+                  </entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">algorithmClass</emphasis></entry>
+                  <entry>evictionAlgorithmConfig</entry>
+                  <entry>A valid class that is available on the classpath</entry>
+                  <entry>none</entry>
+                  <entry>
+                     This attribute needs to be specified if this tag is being used.  Note that if being configured
+                     programmatically, the eviction algorithm's corresponding <literal>EvictionAlgorithmConfig</literal>
+                     file should be used instead.  E.g., where you would use <literal>LRUAlgorithm</literal> in XML, you
+                     would use an instance of <literal>LRUAlgorithmConfig</literal> programmatically.
+                  </entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">actionPolicyClass</emphasis></entry>
+                  <entry>evictionActionPolicyClassName</entry>
+                  <entry>A valid class that is available on the classpath</entry>
+                  <entry>DefaultEvictionActionPolicy</entry>
+                  <entry>
+                     The eviction action policy class, defining what happens when a node needs to be evicted.
+                  </entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">eventQueueSize</emphasis></entry>
+                  <entry>eventQueueSize
+                  (<emphasis>dynamic</emphasis></entry>
+                  <entry>integer</entry>
+                  <entry>200000</entry>
+                  <entry>
+                     The size of the bounded eviction event queue.
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="element.property">
+         <title>The <literal><![CDATA[<property />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<property />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        A mechanism of passing in name-value properties to the enclosing configuration element.                        
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        <link linkend="element.default"><literal><![CDATA[<default />]]></literal></link>,
+                        <link linkend="element.region"><literal><![CDATA[<region />]]></literal></link>,
+                        <link linkend="element.interceptor"><literal><![CDATA[<interceptor />]]></literal></link>
+                     </para>                     
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry></entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>Either direct setters or <literal>setProperties()</literal> enclosing bean</para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="attributes.property">
+         <title><literal><![CDATA[<property />]]></literal> Attributes</title>
+         <tgroup cols="5" align="left">
+            <colspec colname="c1" />
+            <colspec colname="c2" />
+            <colspec colname="c3" />
+            <colspec colname="c4" />
+            <colspec colname="c5" />
+
+            <spanspec spanname="hspan" namest="c1" nameend="c5" align="left" />
+            <thead valign="top">
+               <row><entry spanname="hspan"><literal><![CDATA[<property />]]></literal> Attributes</entry></row>
+               <row>
+                  <entry>Attribute</entry>
+                  <entry>Bean Field</entry>
+                  <entry>Allowed</entry>
+                  <entry>Default</entry>
+                  <entry>Description</entry>
+               </row>
+            </thead>
+
+            <tbody valign="top">
+               <row>
+                  <entry><emphasis role="bold">name</emphasis></entry>
+                  <entry>Either direct setters or <literal>setProperties()</literal> enclosing bean</entry>
+                  <entry>String</entry>
+                  <entry>none</entry>
+                  <entry>
+                     Property name
+                  </entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">value</emphasis></entry>
+                  <entry>Either direct setters or <literal>setProperties()</literal> enclosing bean</entry>
+                  <entry>String</entry>
+                  <entry>none</entry>
+                  <entry>
+                     Property value
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="element.loaders">
+         <title>The <literal><![CDATA[<loaders />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<loaders />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        Defines any cache loaders.
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        <link linkend="element.jbosscache"><literal><![CDATA[<jbosscache />]]></literal></link>
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <link linkend="element.preload"><literal><![CDATA[<preload />]]></literal></link>,
+                     <link linkend="element.loader"><literal><![CDATA[<loader />]]></literal></link>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>CacheLoaderConfig</para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="attributes.loaders">
+         <title><literal><![CDATA[<loaders />]]></literal> Attributes</title>
+         <tgroup cols="5" align="left">
+            <colspec colname="c1" />
+            <colspec colname="c2" />
+            <colspec colname="c3" />
+            <colspec colname="c4" />
+            <colspec colname="c5" />
+
+            <spanspec spanname="hspan" namest="c1" nameend="c5" align="left" />
+            <thead valign="top">
+               <row><entry spanname="hspan"><literal><![CDATA[<loaders />]]></literal> Attributes</entry></row>
+               <row>
+                  <entry>Attribute</entry>
+                  <entry>Bean Field</entry>
+                  <entry>Allowed</entry>
+                  <entry>Default</entry>
+                  <entry>Description</entry>
+               </row>
+            </thead>
+
+            <tbody valign="top">
+               <row>
+                  <entry><emphasis role="bold">passivation</emphasis></entry>
+                  <entry>passivation</entry>
+                  <entry>true, false</entry>
+                  <entry>false</entry>
+                  <entry>
+                     If true, cache loaders are used in passivation mode.  See the <link linkend="cache_loaders">chapter on cache loaders</link>
+                     for a detailed discussion on this.
+                  </entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">shared</emphasis></entry>
+                  <entry>shared</entry>
+                  <entry>true, false</entry>
+                  <entry>false</entry>
+                  <entry>
+                     If true, cache loaders are used in shared mode.  See the <link linkend="cache_loaders">chapter on cache loaders</link>
+                     for a detailed discussion on this.
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="element.preload">
+         <title>The <literal><![CDATA[<preload />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<preload />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        Defines preloading of Fqn subtrees when a cache starts up.  This element has no attributes.
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        <link linkend="element.loaders"><literal><![CDATA[<loaders />]]></literal></link>
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <link linkend="element.node"><literal><![CDATA[<node />]]></literal></link>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>CacheLoaderConfig</para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="element.node">
+         <title>The <literal><![CDATA[<node />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<node />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        This element defines a subtree under which all content will be preloaded from the cache loaders
+                        when the cache starts.  Multiple subtrees can be preloaded, although it only makes sense to
+                        define more than one subtree if they do not overlap.
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        <link linkend="element.preload"><literal><![CDATA[<preload />]]></literal></link>
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry></entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>CacheLoaderConfig</para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="attributes.node">
+         <title><literal><![CDATA[<node />]]></literal> Attributes</title>
+         <tgroup cols="5" align="left">
+            <colspec colname="c1" />
+            <colspec colname="c2" />
+            <colspec colname="c3" />
+            <colspec colname="c4" />
+            <colspec colname="c5" />
+
+            <spanspec spanname="hspan" namest="c1" nameend="c5" align="left" />
+            <thead valign="top">
+               <row><entry spanname="hspan"><literal><![CDATA[<node />]]></literal> Attributes</entry></row>
+               <row>
+                  <entry>Attribute</entry>
+                  <entry>Bean Field</entry>
+                  <entry>Allowed</entry>
+                  <entry>Default</entry>
+                  <entry>Description</entry>
+               </row>
+            </thead>
+
+            <tbody valign="top">
+               <row>
+                  <entry><emphasis role="bold">fqn</emphasis></entry>
+                  <entry>preload</entry>
+                  <entry>String</entry>
+                  <entry>none</entry>
+                  <entry>
+                     An Fqn to preload.  This should be a String that can be parsed with Fqn.fromString().  When doing
+                     this programmatically, you should create a single String containing all of the Fqns you wish to
+                     preload, separated by spaces, and pass that into <literal>CacheLoaderConfig.setPreload()</literal>.
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="element.loader">
+         <title>The <literal><![CDATA[<loader />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<loader />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        This element defines a cache loader.  Multiple elements may be used to create cache loader
+                        chains.
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        <link linkend="element.loaders"><literal><![CDATA[<loaders />]]></literal></link>
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <link linkend="element.properties"><literal><![CDATA[<properties />]]></literal></link>,
+                     <link linkend="element.singletonStore"><literal><![CDATA[<singletonStore />]]></literal></link>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>IndividualCacheLoaderConfig</para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="attributes.loader">
+         <title><literal><![CDATA[<loader />]]></literal> Attributes</title>
+         <tgroup cols="5" align="left">
+            <colspec colname="c1" />
+            <colspec colname="c2" />
+            <colspec colname="c3" />
+            <colspec colname="c4" />
+            <colspec colname="c5" />
+
+            <spanspec spanname="hspan" namest="c1" nameend="c5" align="left" />
+            <thead valign="top">
+               <row><entry spanname="hspan"><literal><![CDATA[<loader />]]></literal> Attributes</entry></row>
+               <row>
+                  <entry>Attribute</entry>
+                  <entry>Bean Field</entry>
+                  <entry>Allowed</entry>
+                  <entry>Default</entry>
+                  <entry>Description</entry>
+               </row>
+            </thead>
+
+            <tbody valign="top">
+               <row>
+                  <entry><emphasis role="bold">class</emphasis></entry>
+                  <entry>className</entry>
+                  <entry>A valid class that is available on the classpath</entry>
+                  <entry>none</entry>
+                  <entry>
+                     A cache loader implementation to use.
+                  </entry>
+               </row>
+
+               <row>
+                  <entry><emphasis role="bold">async</emphasis></entry>
+                  <entry>async</entry>
+                  <entry>true, false</entry>
+                  <entry>false</entry>
+                  <entry>
+                     All modifications to this cache loader happen asynchronously, on a separate thread.
+                  </entry>
+               </row>
+
+               <row>
+                  <entry><emphasis role="bold">fetchPersistentState</emphasis></entry>
+                  <entry>fetchPersistentState</entry>
+                  <entry>true, false</entry>
+                  <entry>false</entry>
+                  <entry>
+                     When a cache starts up, retrieve persistent state from the cache loaders in other caches in the
+                     cluster.  Only <emphasis>one</emphasis> loader element may set this to true.  Also, only makes
+                     sense if the <link linkend="element.clustering"><literal><![CDATA[<clustering />]]></literal></link>
+                     tag is present.
+
+                  </entry>
+               </row>
+
+               <row>
+                  <entry><emphasis role="bold">purgeOnStartup</emphasis></entry>
+                  <entry>purgeOnStartup</entry>
+                  <entry>true, false</entry>
+                  <entry>false</entry>
+                  <entry>
+                     Purges this cache loader when it starts up.
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="element.properties">
+         <title>The <literal><![CDATA[<properties />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<properties />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        This element contains a set of properties that can be read by a <literal>java.util.Properties</literal>
+                        instance.  This tag has no attributes, and the contents of this tag will be parsed by
+                        <literal>Properties.load()</literal>.
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        <link linkend="element.loader"><literal><![CDATA[<loader />]]></literal></link>,
+                        <link linkend="element.singletonStore"><literal><![CDATA[<singletonStore />]]></literal></link>,
+                        <link linkend="element.locator"><literal><![CDATA[<locator />]]></literal></link>
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry></entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>IndividualCacheLoaderConfig.setProperties()</para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="element.singletonStore">
+         <title>The <literal><![CDATA[<singletonStore />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<singletonStore />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        This element configures the enclosing cache loader as a <link linkend="sscl">singleton store cache loader</link>.
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        <link linkend="element.loader"><literal><![CDATA[<loader />]]></literal></link>
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <link linkend="element.properties"><literal><![CDATA[<properties />]]></literal></link>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>SingletonStoreConfig</para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="attributes.singletonStore">
+         <title><literal><![CDATA[<singletonStore />]]></literal> Attributes</title>
+         <tgroup cols="5" align="left">
+            <colspec colname="c1" />
+            <colspec colname="c2" />
+            <colspec colname="c3" />
+            <colspec colname="c4" />
+            <colspec colname="c5" />
+
+            <spanspec spanname="hspan" namest="c1" nameend="c5" align="left" />
+            <thead valign="top">
+               <row><entry spanname="hspan"><literal><![CDATA[<singletonStore />]]></literal> Attributes</entry></row>
+               <row>
+                  <entry>Attribute</entry>
+                  <entry>Bean Field</entry>
+                  <entry>Allowed</entry>
+                  <entry>Default</entry>
+                  <entry>Description</entry>
+               </row>
+            </thead>
+
+            <tbody valign="top">
+               <row>
+                  <entry><emphasis role="bold">class</emphasis></entry>
+                  <entry>className</entry>
+                  <entry>A valid class that is available on the classpath</entry>
+                  <entry>SingletonStoreCacheLoader</entry>
+                  <entry>
+                     A singleton store wrapper implementation to use.
+                  </entry>
+               </row>
+
+               <row>
+                  <entry><emphasis role="bold">enabled</emphasis></entry>
+                  <entry>enabled</entry>
+                  <entry>true, false</entry>
+                  <entry>false</entry>
+                  <entry>
+                     If true, the singleton store cache loader is enabled.
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="element.customInterceptors">
+         <title>The <literal><![CDATA[<customInterceptors />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<customInterceptors />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        This element allows you to define custom interceptors for the cache.  This tag has no attributes.
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        <link linkend="element.jbosscache"><literal><![CDATA[<jbosscache />]]></literal></link>
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <link linkend="element.interceptor"><literal><![CDATA[<interceptor />]]></literal></link>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>None.  At runtime, instantiate your own interceptor and pass it in to the cache using
+                     <literal>Cache.addInterceptor()</literal>.</para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="element.interceptor">
+         <title>The <literal><![CDATA[<interceptor />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<interceptor />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        This element allows you configure a custom interceptor.  This tag may appear multiple times.
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        <link linkend="element.customInterceptor"><literal><![CDATA[<customInterceptor />]]></literal></link>
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <link linkend="element.property"><literal><![CDATA[<property />]]></literal></link>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>None.  At runtime, instantiate your own interceptor and pass it in to the cache using
+                     <literal>Cache.addInterceptor()</literal>.</para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="attributes.interceptor">
+         <title><literal><![CDATA[<interceptor />]]></literal> Attributes</title>
+         <tgroup cols="5" align="left">
+            <colspec colname="c1" />
+            <colspec colname="c2" />
+            <colspec colname="c3" />
+            <colspec colname="c4" />
+            <colspec colname="c5" />
+
+            <spanspec spanname="hspan" namest="c1" nameend="c5" align="left" />
+            <thead valign="top">
+               <row><entry spanname="hspan"><literal><![CDATA[<interceptor />]]></literal> Attributes</entry></row>
+               <row>
+                  <entry>Attribute</entry>
+                  <entry>Bean Field</entry>
+                  <entry>Allowed</entry>
+                  <entry>Default</entry>
+                  <entry>Description</entry>
+               </row>
+            </thead>
+
+            <tbody valign="top">
+               <row>
+                  <entry><emphasis role="bold">class</emphasis></entry>
+                  <entry> - </entry>
+                  <entry>A valid class that is available on the classpath</entry>
+                  <entry>none</entry>
+                  <entry>
+                     An implementation of <literal>CommandInterceptor</literal>.
+                  </entry>
+               </row>
+
+               <row>
+                  <entry><emphasis role="bold">position</emphasis></entry>
+                  <entry> - </entry>
+                  <entry>first, last</entry>
+                  <entry></entry>
+                  <entry>
+                     A position at which to place this interceptor in the chain.  First is the first interceptor
+                     encountered when an invocation is made on the cache, last is the last interceptor before the
+                     call is passed on to the data structure.  <emphasis>Note that this attribute is mutually
+                  exclusive with <literal>before</literal>, <literal>after</literal> and <literal>index</literal>.</emphasis>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry><emphasis role="bold">before</emphasis></entry>
+                  <entry> - </entry>
+                  <entry>Fully qualified class name of an interceptor</entry>
+                  <entry></entry>
+                  <entry>
+                     Will place the new interceptor directly before the instance of the named interceptor.
+                     <emphasis>Note that this attribute is mutually exclusive with <literal>position</literal>,
+                        <literal>after</literal> and <literal>index</literal>.</emphasis>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry><emphasis role="bold">after</emphasis></entry>
+                  <entry> - </entry>
+                  <entry>Fully qualified class name of an interceptor</entry>
+                  <entry></entry>
+                  <entry>
+                     Will place the new interceptor directly after the instance of the named interceptor.
+                     <emphasis>Note that this attribute is mutually exclusive with <literal>position</literal>,
+                        <literal>before</literal> and <literal>index</literal>.</emphasis>
+                  </entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">index</emphasis></entry>
+                  <entry> - </entry>
+                  <entry>Positive integers</entry>
+                  <entry></entry>
+                  <entry>
+                     A position at which to place this interceptor in the chain, with 0 being the first position.
+                     <emphasis>Note that this attribute is mutually exclusive with <literal>position</literal>,
+                        <literal>before</literal> and <literal>after</literal>.</emphasis>
+                  </entry>
+               </row>
+
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="element.clustering">
+         <title>The <literal><![CDATA[<clustering />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<clustering />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        If this element is present, the cache is started in clustered mode.  Attributes and child
+                        elements define clustering characteristics.
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        <link linkend="element.jbosscache"><literal><![CDATA[<jbosscache />]]></literal></link>
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <link linkend="element.stateRetrieval"><literal><![CDATA[<stateRetrieval />]]></literal></link>,
+                     <link linkend="element.sync"><literal><![CDATA[<sync />]]></literal></link>,
+                     <link linkend="element.async"><literal><![CDATA[<async />]]></literal></link>,
+                     <link linkend="element.buddy"><literal><![CDATA[<buddy />]]></literal></link>,
+                     <link linkend="element.jgroupsConfig"><literal><![CDATA[<jgroupsConfig />]]></literal></link>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>Configuration</para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="attributes.clustering">
+         <title><literal><![CDATA[<clustering />]]></literal> Attributes</title>
+         <tgroup cols="5" align="left">
+            <colspec colname="c1" />
+            <colspec colname="c2" />
+            <colspec colname="c3" />
+            <colspec colname="c4" />
+            <colspec colname="c5" />
+
+            <spanspec spanname="hspan" namest="c1" nameend="c5" align="left" />
+            <thead valign="top">
+               <row><entry spanname="hspan"><literal><![CDATA[<clustering />]]></literal> Attributes</entry></row>
+               <row>
+                  <entry>Attribute</entry>
+                  <entry>Bean Field</entry>
+                  <entry>Allowed</entry>
+                  <entry>Default</entry>
+                  <entry>Description</entry>
+               </row>
+            </thead>
+
+            <tbody valign="top">
+               <row>
+                  <entry><emphasis role="bold">mode</emphasis></entry>
+                  <entry>cacheMode</entry>
+                  <entry>replication, invalidation, r, i</entry>
+                  <entry>replication</entry>
+                  <entry>
+                     See the <link linkend="clustering">chapter on clustering</link> for the differences between
+                     replication and invalidation.  When using the bean, synchronous and asynchronous communication is
+                     combined with clustering mode to give you the enumberation <literal>Configuration.CacheMode</literal>.
+                  </entry>
+               </row>
+
+               <row>
+                  <entry><emphasis role="bold">clusterName</emphasis></entry>
+                  <entry>clusterName</entry>
+                  <entry>String</entry>
+                  <entry>JBossCache-cluster</entry>
+                  <entry>
+                     A cluster name which is used to identify the cluster to join.
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="element.sync">
+         <title>The <literal><![CDATA[<sync />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<sync />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        If this element is present, all communications are synchronous, in that whenever a thread sends
+                        a message sent over the wire, it blocks until it receives an acknowledgement from the recipient.
+                        This element is mutually exclusive with the <link linkend="element.async"><literal><![CDATA[<async />]]></literal></link>
+                        element.
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        <link linkend="element.clustering"><literal><![CDATA[<clustering />]]></literal></link>
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>Configuration.setCacheMode()</para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="attributes.sync">
+         <title><literal><![CDATA[<sync />]]></literal> Attributes</title>
+         <tgroup cols="5" align="left">
+            <colspec colname="c1" />
+            <colspec colname="c2" />
+            <colspec colname="c3" />
+            <colspec colname="c4" />
+            <colspec colname="c5" />
+
+            <spanspec spanname="hspan" namest="c1" nameend="c5" align="left" />
+            <thead valign="top">
+               <row><entry spanname="hspan"><literal><![CDATA[<sync />]]></literal> Attributes</entry></row>
+               <row>
+                  <entry>Attribute</entry>
+                  <entry>Bean Field</entry>
+                  <entry>Allowed</entry>
+                  <entry>Default</entry>
+                  <entry>Description</entry>
+               </row>
+            </thead>
+
+            <tbody valign="top">
+               <row>
+                  <entry><emphasis role="bold">replTimeout</emphasis></entry>
+                  <entry>syncReplTimeout (<emphasis>dynamic</emphasis>)</entry>
+                  <entry>positive integer</entry>
+                  <entry>15000</entry>
+                  <entry>
+                     This is the timeout used to wait for an acknowledgement when making a remote call, after which
+                     an exception is thrown.
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+      
+      <table id="element.async">
+         <title>The <literal><![CDATA[<async />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<async />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        If this element is present, all communications are asynchronous, in that whenever a thread sends
+                        a message sent over the wire, it does not wait for an acknowledgement before returning.
+                        This element is mutually exclusive with the <link linkend="element.sync"><literal><![CDATA[<sync />]]></literal></link>
+                        element.
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        <link linkend="element.clustering"><literal><![CDATA[<clustering />]]></literal></link>
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>Configuration.setCacheMode()</para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="attributes.async">
+         <title><literal><![CDATA[<async />]]></literal> Attributes</title>
+         <tgroup cols="5" align="left">
+            <colspec colname="c1" />
+            <colspec colname="c2" />
+            <colspec colname="c3" />
+            <colspec colname="c4" />
+            <colspec colname="c5" />
+
+            <spanspec spanname="hspan" namest="c1" nameend="c5" align="left" />
+            <thead valign="top">
+               <row><entry spanname="hspan"><literal><![CDATA[<async />]]></literal> Attributes</entry></row>
+               <row>
+                  <entry>Attribute</entry>
+                  <entry>Bean Field</entry>
+                  <entry>Allowed</entry>
+                  <entry>Default</entry>
+                  <entry>Description</entry>
+               </row>
+            </thead>
+
+            <tbody valign="top">
+               <row>
+                  <entry><emphasis role="bold">serializationExecutorPoolSize</emphasis></entry>
+                  <entry>serializationExecutorPoolSize</entry>
+                  <entry>positive integer</entry>
+                  <entry>25</entry>
+                  <entry>
+                     In addition to replication happening asynchronously, even serialization of contents for replication
+                     happens in a separate thread to allow the caller to return as quickly as possible.  This setting
+                     controls the size of the serializer thread pool.  Setting this to any value less than 1 means
+                     serialization does not happen asynchronously.
+                  </entry>
+               </row>
+                <row>
+                  <entry><emphasis role="bold">serializationExecutorQueueSize</emphasis></entry>
+                  <entry>serializationExecutorQueueSize</entry>
+                  <entry>positive integer</entry>
+                  <entry>50000</entry>
+                  <entry>
+                     This is used to define the size of the bounded queue that holds tasks for the serialization executor.
+                     This is ignored if a serialization executor is not used, such as when <literal>serializationExecutorPoolSize</literal>
+                     is less than 1.
+                  </entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">useReplQueue</emphasis></entry>
+                  <entry>useReplQueue</entry>
+                  <entry>true, false</entry>
+                  <entry>false</entry>
+                  <entry>
+                     If true, this forces all async communications to be queued up and sent out periodically as a batch.
+                  </entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">replQueueInterval</emphasis></entry>
+                  <entry>replQueueInterval</entry>
+                  <entry>positive integer</entry>
+                  <entry>5000</entry>
+                  <entry>
+                     If <literal>useReplQueue</literal> is set to true, this attribute controls how often the asynchronous
+                     thread used to flush the replication queue runs.  This should be a positive integer which represents
+                     thread wakeup time in milliseconds.
+                  </entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">replQueueMaxElements</emphasis></entry>
+                  <entry>replQueueMaxElements</entry>
+                  <entry>positive integer</entry>
+                  <entry>1000</entry>
+                  <entry>
+                     If <literal>useReplQueue</literal> is set to true, this attribute can be used to trigger flushing
+                     of the queue when it reaches a specific threshold.
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="element.stateRetrieval">
+         <title>The <literal><![CDATA[<stateRetrieval />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<stateRetrieval />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        This tag controls ho state is retrieved from neighboring caches when this cache instance starts.
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        <link linkend="element.clustering"><literal><![CDATA[<clustering />]]></literal></link>
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>Configuration</para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="attributes.stateRetrieval">
+         <title><literal><![CDATA[<stateRetrieval />]]></literal> Attributes</title>
+         <tgroup cols="5" align="left">
+            <colspec colname="c1" />
+            <colspec colname="c2" />
+            <colspec colname="c3" />
+            <colspec colname="c4" />
+            <colspec colname="c5" />
+
+            <spanspec spanname="hspan" namest="c1" nameend="c5" align="left" />
+            <thead valign="top">
+               <row><entry spanname="hspan"><literal><![CDATA[<stateRetrieval />]]></literal> Attributes</entry></row>
+               <row>
+                  <entry>Attribute</entry>
+                  <entry>Bean Field</entry>
+                  <entry>Allowed</entry>
+                  <entry>Default</entry>
+                  <entry>Description</entry>
+               </row>
+            </thead>
+
+            <tbody valign="top">
+               <row>
+                  <entry><emphasis role="bold">fetchInMemoryState</emphasis></entry>
+                  <entry>fetchInMemoryState</entry>
+                  <entry>true, false</entry>
+                  <entry>true</entry>
+                  <entry>
+                     If true, this will cause the cache to ask neighboring caches for state when it starts up, so the
+                     cache starts "warm".
+                  </entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">timeout</emphasis></entry>
+                  <entry>stateRetrievalTimeout</entry>
+                  <entry>positive integer</entry>
+                  <entry>10000</entry>
+                  <entry>
+                     This is the maximum amount of time - in milliseconds - to wait for state from neighboring caches,
+                     before throwing an exception and aborting startup.
+                  </entry>
+               </row>
+                <row>
+                  <entry><emphasis role="bold">nonBlocking</emphasis></entry>
+                  <entry>useNonBlockingStateTransfer</entry>
+                  <entry>true, false</entry>
+                  <entry>false</entry>
+                  <entry>
+                     This configuration switch enables the Non-Blocking State Transfer mechanism, new in 3.1.0.  Note that
+                      this requires MVCC as a node locking scheme, and that STREAMING_STATE_TRANSFER is present in the
+                      JGroups stack used.
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="element.buddy">
+         <title>The <literal><![CDATA[<buddy />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<buddy />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        If this tag is present, then state is not replicated across the entire cluster.  Instead, buddy
+                        replication is used to select cache instances to maintain backups on.  See
+                        <link linkend="br">this section on buddy replication</link> for details.  Note that this is only
+                        used if the clustering mode is <literal>replication</literal>, and not if it is <literal>invalidation</literal>. 
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        <link linkend="element.clustering"><literal><![CDATA[<clustering />]]></literal></link>
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <link linkend="element.dataGravitation"><literal><![CDATA[<dataGravitation />]]></literal></link>,
+                     <link linkend="element.locator"><literal><![CDATA[<locator />]]></literal></link>,
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>BuddyReplicationConfig</para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="attributes.buddy">
+         <title><literal><![CDATA[<buddy />]]></literal> Attributes</title>
+         <tgroup cols="5" align="left">
+            <colspec colname="c1" />
+            <colspec colname="c2" />
+            <colspec colname="c3" />
+            <colspec colname="c4" />
+            <colspec colname="c5" />
+
+            <spanspec spanname="hspan" namest="c1" nameend="c5" align="left" />
+            <thead valign="top">
+               <row><entry spanname="hspan"><literal><![CDATA[<buddy />]]></literal> Attributes</entry></row>
+               <row>
+                  <entry>Attribute</entry>
+                  <entry>Bean Field</entry>
+                  <entry>Allowed</entry>
+                  <entry>Default</entry>
+                  <entry>Description</entry>
+               </row>
+            </thead>
+
+            <tbody valign="top">
+               <row>
+                  <entry><emphasis role="bold">enabled</emphasis></entry>
+                  <entry>enabled</entry>
+                  <entry>true, false</entry>
+                  <entry>false</entry>
+                  <entry>
+                     If true, buddy replication is enabled.
+                  </entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">communicationTimeout</emphasis></entry>
+                  <entry>buddyCommunicationTimeout</entry>
+                  <entry>positive integer</entry>
+                  <entry>10000</entry>
+                  <entry>
+                     This is the maximum amount of time - in milliseconds - to wait for buddy group organization
+                     communications from buddy caches.                      
+                  </entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">poolName</emphasis></entry>
+                  <entry>buddyPoolName</entry>
+                  <entry>String</entry>
+                  <entry></entry>
+                  <entry>
+                     This is used as a means to identify cache instances and provide hints to the buddy selection
+                     algorithms.  More information on <link linkend="br">the section on buddy replication</link>.
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="element.dataGravitation">
+         <title>The <literal><![CDATA[<dataGravitation />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<dataGravitation />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        This tag configures how data gravitation is conducted.  See
+                        <link linkend="br">this section on buddy replication</link> for details.
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        <link linkend="element.buddy"><literal><![CDATA[<buddy />]]></literal></link>
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>BuddyReplicationConfig</para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="attributes.dataGravitation">
+         <title><literal><![CDATA[<dataGravitation />]]></literal> Attributes</title>
+         <tgroup cols="5" align="left">
+            <colspec colname="c1" />
+            <colspec colname="c2" />
+            <colspec colname="c3" />
+            <colspec colname="c4" />
+            <colspec colname="c5" />
+
+            <spanspec spanname="hspan" namest="c1" nameend="c5" align="left" />
+            <thead valign="top">
+               <row><entry spanname="hspan"><literal><![CDATA[<dataGravitation />]]></literal> Attributes</entry></row>
+               <row>
+                  <entry>Attribute</entry>
+                  <entry>Bean Field</entry>
+                  <entry>Allowed</entry>
+                  <entry>Default</entry>
+                  <entry>Description</entry>
+               </row>
+            </thead>
+
+            <tbody valign="top">
+               <row>
+                  <entry><emphasis role="bold">auto</emphasis></entry>
+                  <entry>autoDataGravitation</entry>
+                  <entry>true, false</entry>
+                  <entry>true</entry>
+                  <entry>
+                     If true, when a get() is performed on a cache and nothing is found, a gravitation from neighboring
+                     caches is attempted.  If this is false, then gravitations can only occur if the
+                     <literal>Option.setForceDataGravitation()</literal> option is provided.
+                  </entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">removeOnFind</emphasis></entry>
+                  <entry>dataGravitationRemoveOnFind</entry>
+                  <entry>true, false</entry>
+                  <entry>true</entry>
+                  <entry>
+                     If true, when gravitation occurs, the instance that requests the gravitation takes ownership of
+                     the state and requests that all other instances remove the gravitated state from memory.
+                  </entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">searchBackupTrees</emphasis></entry>
+                  <entry>dataGravitationSearchBackupTrees</entry>
+                  <entry>true, false</entry>
+                  <entry>true</entry>
+                  <entry>
+                     If true, incoming gravitation requests will cause the cache to search not just its primary
+                     data structure but its backup structure as well.
+                  </entry>
+               </row>
+
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="element.locator">
+         <title>The <literal><![CDATA[<locator />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<locator />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        This tag provides a pluggable mechanism for providing buddy location algorithms.
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        <link linkend="element.buddy"><literal><![CDATA[<buddy />]]></literal></link>
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <link linkend="element.properties"><literal><![CDATA[<properties />]]></literal></link>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>BuddyLocatorConfig</para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="attributes.locator">
+         <title><literal><![CDATA[<locator />]]></literal> Attributes</title>
+         <tgroup cols="5" align="left">
+            <colspec colname="c1" />
+            <colspec colname="c2" />
+            <colspec colname="c3" />
+            <colspec colname="c4" />
+            <colspec colname="c5" />
+
+            <spanspec spanname="hspan" namest="c1" nameend="c5" align="left" />
+            <thead valign="top">
+               <row><entry spanname="hspan"><literal><![CDATA[<locator />]]></literal> Attributes</entry></row>
+               <row>
+                  <entry>Attribute</entry>
+                  <entry>Bean Field</entry>
+                  <entry>Allowed</entry>
+                  <entry>Default</entry>
+                  <entry>Description</entry>
+               </row>
+            </thead>
+
+            <tbody valign="top">
+               <row>
+                  <entry><emphasis role="bold">class</emphasis></entry>
+                  <entry>className</entry>
+                  <entry>A valid class that is available on the classpath</entry>
+                  <entry>NextMemberBuddyLocator</entry>
+                  <entry>
+                     A <literal>BuddyLocator</literal> implementation to use when selecting buddies from the cluster.
+                     Please refer to <literal>BuddyLocator</literal> javadocs for details.
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="element.jgroupsConfig">
+         <title>The <literal><![CDATA[<jgroupsConfig />]]></literal> Element</title>
+         <tgroup cols="2" align="left">
+            <colspec colname="name" />
+            <colspec colname="desc" />
+            <spanspec spanname="hspan" namest="name" nameend="desc" align="left" />
+
+            <thead valign="top">
+               <row>
+                  <entry spanname="hspan">The <literal><![CDATA[<jgroupsConfig />]]></literal> Element</entry>
+               </row>
+            </thead>
+            <tbody valign="top">
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Description</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        This tag provides a configuration which is used with JGroups to create a network communication
+                        channel.
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Parent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>
+                        <link linkend="element.clustering"><literal><![CDATA[<clustering />]]></literal></link>
+                     </para>
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Children</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     A series of elements representing JGroups protocols (see
+                     <ulink url="http://www.jgroups.org/javagroupsnew/docs/ug.html">JGroups documentation</ulink>).  Note
+                     that there are no child elements if any of the element attributes are used instead.  See section
+                     on attributes.
+                  </entry>
+               </row>
+
+               <row>
+                  <entry>
+                     <para><emphasis role="bold">Bean equivalent</emphasis></para>
+                  </entry>
+
+                  <entry>
+                     <para>Configuration</para>
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+
+      <table id="attributes.jgroupsConfig">
+         <title><literal><![CDATA[<jgroupsConfig />]]></literal> Attributes</title>
+         <tgroup cols="5" align="left">
+            <colspec colname="c1" />
+            <colspec colname="c2" />
+            <colspec colname="c3" />
+            <colspec colname="c4" />
+            <colspec colname="c5" />
+
+            <spanspec spanname="hspan" namest="c1" nameend="c5" align="left" />
+            <thead valign="top">
+               <row><entry spanname="hspan"><literal><![CDATA[<jgroupsConfig />]]></literal> Attributes</entry></row>
+               <row>
+                  <entry>Attribute</entry>
+                  <entry>Bean Field</entry>
+                  <entry>Allowed</entry>
+                  <entry>Default</entry>
+                  <entry>Description</entry>
+               </row>
+            </thead>
+
+            <tbody valign="top">
+               <row>
+                  <entry><emphasis role="bold">configFile</emphasis></entry>
+                  <entry>clusterConfig</entry>
+                  <entry>A JGroups configuration file on the classpath</entry>
+                  <entry>udp.xml</entry>
+                  <entry>
+                     If this attribute is used, then any JGroups elements representing protocols within this tag are
+                     ignored.  Instead, JGroups settings are read from the file specified.  Note that this cannot be used
+                     with the <literal>multiplexerStack</literal> attribute.
+                  </entry>
+               </row>
+               <row>
+                  <entry><emphasis role="bold">multiplexerStack</emphasis></entry>
+                  <entry>muxStackName</entry>
+                  <entry>A valid multiplexer stack name that exists in the channel factory passed in to the <literal>RuntimeConfig</literal></entry>
+                  <entry></entry>
+                  <entry>
+                     This can only be used with the <literal>RuntimeConfig</literal>, where you pass in a JGroups
+                     <literal>ChannelFactory</literal> instance using <literal>RuntimeConfig.setMuxChannelFactory()</literal>.
+                     If this attribute is used, then any JGroups elements representing protocols within this tag are
+                     ignored.  Instead, the JGroups channel is created using the factory passed in.  Note that this cannot be
+                     used with the <literal>configFile</literal> attribute.
+                  </entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+   </section>
+</chapter>
\ No newline at end of file

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/deployment.xml
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/deployment.xml	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/deployment.xml	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,540 @@
+<chapter id="deployment">
+   <title>Deploying JBoss Cache</title>
+   <section id="deployment.standalone">
+      <title>Standalone Use/Programatic Deployment</title>
+      <para>
+         When used in a standalone Java program, all that needs to be done is to instantiate the cache using the
+         <literal>CacheFactory</literal>
+         and a
+         <literal>Configuration</literal>
+         instance or an XML file, as discussed
+         in the
+         <link linkend="api.create_start">User API</link>
+         and
+         <link linkend="configuration.creation">Configuration</link>
+         chapters.
+      </para>
+
+      <para>
+         The same techniques can be used when an application running in an application
+         server wishes to programatically deploy a cache rather than relying on an application server's
+         deployment features. An example of this would be
+         a webapp deploying a cache via a
+         <literal>javax.servlet.ServletContextListener</literal>.
+      </para>
+
+      <para>
+         After creation, you could share your cache instance among different application components either by using an
+         IOC container such as Spring, JBoss Microcontainer, etc., or by binding it to JNDI, or simply
+         holding a static reference to the cache.
+      </para>
+      
+      <para>
+         If, after deploying your cache you wish to expose a management interface
+         to it in JMX, see the
+         <link linkend="jmx.registration.programatic">section on Programatic Registration in JMX</link>.
+      </para>
+   </section>
+   <section id="deployment.microcontainer">
+      <title>Via JBoss Microcontainer (JBoss AS 5.x)</title>
+
+      <para>
+         Beginning with AS 5, JBoss AS supports deployment of POJO services via
+         deployment of a file whose name ends with
+         <literal>-jboss-beans.xml</literal>.
+         A POJO service is one whose implementation is via a "Plain Old Java Object",
+         meaning a simple java bean that isn't required to implement any special
+         interfaces or extend any particular superclass. A
+         <literal>Cache</literal> is a POJO service, and all the components in a
+         <literal>Configuration</literal>
+         are also POJOs, so deploying a cache in this way is a natural step.
+      </para>
+      <para>
+         Deployment of the cache is done using the JBoss Microcontainer that forms the
+         core of JBoss AS. JBoss Microcontainer is a sophisticated IOC framework
+         similar to Spring. A <literal>-jboss-beans.xml</literal> file is basically
+         a descriptor that tells the IOC framework how to assemble the various
+         beans that make up a POJO service.
+      </para>
+      <para>
+         For each configurable option exposed by the <literal>Configuration</literal>
+         components, a getter/setter must be defined in the configuration class. 
+         This is required so that JBoss Microcontainer can, in typical IOC way, 
+         call these methods when the corresponding properties have been 
+         configured.
+      </para>      
+      <para>
+         You need to ensure that the <literal>jbosscache-core.jar</literal> and <literal>jgroups.jar</literal> libraries
+         are in your server's <literal>lib</literal> directory.  This is usually the case when you use JBoss AS in its
+         <literal>all</literal> configuration.  Note that you will have to bring in any optional jars you require, such
+         as <literal>jdbm.jar</literal> based on your cache configuration.
+      </para>
+      <para>
+         The following is an example
+         <literal>-beans.xml</literal>
+         file. If you
+         look in the
+         <literal>server/all/deploy</literal>
+         directory of a JBoss AS 5
+         installation, you can find several more examples.
+      </para>
+
+      <programlisting role="XML"><![CDATA[
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+   <!-- First we create a Configuration object for the cache -->
+   <bean name="ExampleCacheConfig"
+   		 class="org.jboss.cache.config.Configuration">
+      
+      <!-- Externally injected services -->  
+      <property name="runtimeConfig">
+         <bean class="org.jboss.cache.config.RuntimeConfig">
+            <property name="transactionManager">
+               <inject bean="jboss:service=TransactionManager" 
+                       property="TransactionManager"/>
+            </property>
+            <property name="muxChannelFactory"><inject bean="JChannelFactory"/></property>
+         </bean>
+      </property>
+      
+      <property name="multiplexerStack">udp</property>
+
+      <property name="clusterName">Example-EntityCache</property>
+        
+      <property name="isolationLevel">REPEATABLE_READ</property>
+
+      <property name="cacheMode">REPL_SYNC</property>
+
+      <property name="stateRetrievalTimeout">15000</property>
+
+      <property name="syncReplTimeout">20000</property>
+
+      <property name="lockAcquisitionTimeout">15000</property>
+        
+      <property name="exposeManagementStatistics">true</property>
+   </bean>
+   
+   <!-- Factory to build the Cache. -->
+   <bean name="DefaultCacheFactory" class="org.jboss.cache.DefaultCacheFactory">      
+      <constructor factoryClass="org.jboss.cache.DefaultCacheFactory"
+                   factoryMethod="getInstance" />
+   </bean>
+   
+   <!-- The cache itself -->
+   <bean name="ExampleCache" class="org.jboss.cache.Cache">
+      
+      <constructor factoryMethod="createCache">
+          <factory bean="DefaultCacheFactory"/>
+          <parameter class="org.jboss.cache.config.Configuration"><inject bean="ExampleCacheConfig"/></parameter>
+          <parameter class="boolean">false</parameter>
+      </constructor>
+          
+   </bean>
+
+</deployment>      
+]]></programlisting>
+
+      <para>
+         See <ulink url="http://www.jboss.org/jbossmc/docs">the JBoss Microcontainer documentation</ulink>
+         for details on the above syntax. Basically, each
+         <literal>bean</literal>
+         element represents an object and is used to create a
+         <literal>Configuration</literal>
+         and its <link linkend="configuration.elements">constituent parts</link>
+         The <literal>DefaultCacheFactory</literal> bean constructs the cache, 
+         conceptually doing the same thing as is shown in the 
+         <link linkend="api.create_start">User API</link> chapter.
+      </para>
+      <para>
+         An interesting thing to note in the above example is the use of the
+         <literal>RuntimeConfig</literal> object. External resources like a <literal>TransactionManager</literal>
+         and a JGroups <literal>ChannelFactory</literal> that are visible to the microcontainer are dependency injected
+         into the <literal>RuntimeConfig</literal>. The assumption here is that in some other deployment descriptor in
+         the AS, the referenced beans have already been described.
+      </para>
+   </section>
+
+   <section>
+      <title>Automatic binding to JNDI in JBoss AS</title>
+      <para>
+         This feature is not available as of the time of this writing.  We will 
+         add a wiki page describing how to use it once it becomes available.
+      </para>
+   </section>
+
+   <section>
+      <title>Runtime Management Information</title>
+      <para>JBoss Cache includes JMX MBeans to expose cache functionality and provide statistics that can be
+         used to analyze cache operations. JBoss Cache can also broadcast cache events as MBean notifications for
+         handling via JMX monitoring tools.
+      </para>
+
+      <section id="jmx.mbeans">
+         <title>JBoss Cache MBeans</title>
+         <para>
+            JBoss Cache provides an MBean that can be registered with your environments JMX server to allow access
+            to the cache instance via JMX. This MBean is the
+            <literal>org.jboss.cache.jmx.CacheJmxWrapper</literal>.
+            It is a StandardMBean, so its MBean interface is <literal>org.jboss.cache.jmx.CacheJmxWrapperMBean</literal>.
+            This MBean can be used to:
+            <itemizedlist>
+               <listitem>
+                  Get a reference to the underlying <literal>Cache</literal>.
+               </listitem>
+               <listitem>
+                  Invoke create/start/stop/destroy lifecycle operations on the underlying <literal>Cache</literal>.
+               </listitem>
+               <listitem>
+                  Inspect various details about the cache's current state (number of nodes, lock information, etc.)
+               </listitem>
+               <listitem>
+                  See numerous details about the cache's configuration, and
+                  change those configuration items that can be changed when the
+                  cache has already been started.
+               </listitem>
+            </itemizedlist>
+            See the <literal>CacheJmxWrapperMBean</literal> javadoc for more details.
+         </para>
+         <para>
+            If a <literal>CacheJmxWrapper</literal> is registered, JBoss Cache also provides MBeans
+            for several other internal components and subsystems.  These MBeans are used to capture and expose
+            statistics related to the subsystems they represent. They are hierarchically associated with the
+            <literal>CacheJmxWrapper</literal> MBean and have service names that reflect this relationship. For
+            example, a replication interceptor MBean for the <literal>jboss.cache:service=TomcatClusteringCache</literal>
+            instance will be accessible through the service named
+            <literal>jboss.cache:service=TomcatClusteringCache,cache-interceptor=ReplicationInterceptor</literal>.
+         </para>
+      </section>
+
+      <section id="jmx.registration">
+         <title>Registering the CacheJmxWrapper with the MBeanServer</title>
+
+         <para>
+            The best way to ensure the <literal>CacheJmxWrapper</literal> is registered in JMX depends on how you are
+            deploying your cache.
+         </para>
+
+         <section id="jmx.registration.programatic">
+            <title>Programatic Registration</title>
+
+            <section id="jmx.registration.programatic.construct">
+            <title>With a Cache instance</title>
+            <para>
+               Simplest way to do this is to create your <literal>Cache</literal> and pass it to the
+               <literal>JmxRegistrationManager</literal> constructor.
+            </para>
+
+            <programlisting role="JAVA"><![CDATA[
+   CacheFactory factory = new DefaultCacheFactory();
+   // Build but don't start the cache
+   // (although it would work OK if we started it)
+   Cache cache = factory.createCache("cache-configuration.xml");
+
+   MBeanServer server = getMBeanServer(); // however you do it
+   ObjectName on = new ObjectName("jboss.cache:service=Cache");
+   
+   JmxRegistrationManager jmxManager = new JmxRegistrationManager(server, cache, on);
+   jmxManager.registerAllMBeans();
+
+   ... use the cache
+
+   ... on application shutdown
+
+   jmxManager.unregisterAllMBeans();
+   cache.stop();
+
+            ]]></programlisting>
+               </section>
+
+            <section id="jmx.registration.programatic.cfg">
+            <title>With a Configuration instance</title>
+            <para>
+               Alternatively, build a <literal>Configuration</literal> object and pass it to the
+               <literal>CacheJmxWrapper</literal>. The wrapper will construct the <literal>Cache</literal> on your
+               behalf.
+            </para>
+
+            <programlisting role="JAVA"><![CDATA[
+   Configuration config = buildConfiguration(); // whatever it does
+
+   CacheJmxWrapperMBean wrapper = new CacheJmxWrapper(config);
+   MBeanServer server = getMBeanServer(); // however you do it
+   ObjectName on = new ObjectName("jboss.cache:service=TreeCache");
+   server.registerMBean(wrapper, on);
+
+   // Call to wrapper.create() will build the Cache if one wasn't injected
+   wrapper.create();
+   wrapper.start();
+
+   // Now that it's built, created and started, get the cache from the wrapper
+   Cache cache = wrapper.getCache();
+
+   ... use the cache
+
+   ... on application shutdown
+
+   wrapper.stop();
+   wrapper.destroy();
+            ]]></programlisting>
+               </section>
+         </section>
+
+         <section>
+            <title>JMX-Based Deployment in JBoss AS (JBoss AS 5.x)</title>
+            <para>
+               <literal>CacheJmxWrapper</literal> is a POJO, so the microcontainer has no problem creating one. The
+               trick is getting it to register your bean in JMX. This can be done by specifying the
+               <literal>org.jboss.aop.microcontainer.aspects.jmx.JMX</literal>
+               annotation on the <literal>CacheJmxWrapper</literal>
+               bean:
+            </para>
+
+            <programlisting role="XML"><![CDATA[
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+   <!-- First we create a Configuration object for the cache -->
+   <bean name="ExampleCacheConfig"
+   		 class="org.jboss.cache.config.Configuration">
+      
+      ... build up the Configuration
+      
+   </bean>
+   
+   <!-- Factory to build the Cache. -->
+   <bean name="DefaultCacheFactory" class="org.jboss.cache.DefaultCacheFactory">      
+      <constructor factoryClass="org.jboss.cache.DefaultCacheFactory"
+                   factoryMethod="getInstance" />
+   </bean>
+   
+   <!-- The cache itself -->
+   <bean name="ExampleCache" class="org.jboss.cache.CacheImpl">
+      
+      <constructor factoryMethod="createnewInstance">
+          <factory bean="DefaultCacheFactory"/>
+          <parameter><inject bean="ExampleCacheConfig"/></parameter>
+          <parameter>false</parameter>
+      </constructor>
+          
+   </bean>
+   
+   <!-- JMX Management -->
+   <bean name="ExampleCacheJmxWrapper" class="org.jboss.cache.jmx.CacheJmxWrapper">
+      
+      <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.cache:service=ExampleTreeCache", 
+                         exposedInterface=org.jboss.cache.jmx.CacheJmxWrapperMBean.class, 
+                         registerDirectly=true)</annotation>
+      
+      <constructor>
+          <parameter><inject bean="ExampleCache"/></parameter>
+      </constructor>
+          
+   </bean>
+
+</deployment>      
+]]></programlisting>
+
+            <para>
+               As discussed in the <link linkend="jmx.registration.programatic">Programatic Registration</link>
+               section, <literal>CacheJmxWrapper</literal> can do the work of building, creating and starting the
+               <literal>Cache</literal> if it is provided with a <literal>Configuration</literal>. With the
+               microcontainer, this is the preferred approach, as it saves the boilerplate XML
+               needed to create the <literal>CacheFactory</literal>.
+            </para>
+
+            <programlisting role="XML"><![CDATA[
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+   <!-- First we create a Configuration object for the cache -->
+   <bean name="ExampleCacheConfig"
+   		 class="org.jboss.cache.config.Configuration">
+      
+      ... build up the Configuration
+      
+   </bean>
+    
+   <bean name="ExampleCache" class="org.jboss.cache.jmx.CacheJmxWrapper">
+      
+      <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.cache:service=ExampleTreeCache", 
+                         exposedInterface=org.jboss.cache.jmx.CacheJmxWrapperMBean.class, 
+                         registerDirectly=true)</annotation>
+      
+      <constructor>
+          <parameter><inject bean="ExampleCacheConfig"/></parameter>
+      </constructor>
+          
+   </bean>
+
+</deployment>      
+]]></programlisting>
+         </section>
+
+      </section>
+
+      <section id="jmx.statistics">
+         <title>JBoss Cache Statistics</title>
+         <para>
+            JBoss Cache captures statistics in its interceptors and various other components, and exposes these
+            statistics through a set of MBeans. Gathering of statistics is enabled by default; this can be disabled for
+            a specific cache instance through the <literal>Configuration.setExposeManagementStatistics()</literal>
+            setter.  Note that the majority of the statistics are provided by the <literal>CacheMgmtInterceptor</literal>,
+            so this MBean is the most significant in this regard. If you want to disable all statistics for performance
+            reasons, you set <literal>Configuration.setExposeManagementStatistics(false)</literal> and this will
+            prevent the <literal>CacheMgmtInterceptor</literal> from being included in the cache's interceptor stack
+            when the cache is started.
+         </para>
+         <para>
+            If a <literal>CacheJmxWrapper</literal> is registered with JMX, the wrapper also ensures that
+            an MBean is registered in JMX for each interceptor and component that exposes statistics.
+            <footnote>
+               <para>
+                  Note that if the
+                  <literal>CacheJmxWrapper</literal>
+                  is not registered in JMX, the
+                  interceptor MBeans will not be registered either. The JBoss Cache 1.4 releases
+                  included code that would try to "discover" an
+                  <literal>MBeanServer</literal>
+                  and
+                  automatically register the interceptor MBeans with it. For JBoss Cache 2.x we decided
+                  that this sort of "discovery" of the JMX environment was beyond the proper scope of
+                  a caching library, so we removed this functionality.
+               </para>
+            </footnote>.
+            Management tools can then access those MBeans to examine the statistics. See the section in the
+            <link linkend="jmx_reference.statistics">JMX Reference chapter</link>
+            pertaining to the statistics that are made available via JMX.
+         </para>
+      </section>
+
+      <section>
+         <title>Receiving JMX Notifications</title>
+         <para>
+            JBoss Cache users can register a listener to receive cache events described earlier in the
+            <link linkend="api.listener">User API</link>
+            chapter. Users can alternatively utilize the cache's management information infrastructure to receive these
+            events via JMX notifications. Cache events are accessible as notifications by registering a
+            <literal>NotificationListener</literal> for the <literal>CacheJmxWrapper</literal>.
+         </para>
+
+         <para>
+            See the section in the <link linkend="jmx_reference.notifications">JMX Reference chapter</link>
+            pertaining to JMX notifications for a list of notifications that can be received through the
+            <literal>CacheJmxWrapper</literal>.
+         </para>
+
+         <para>
+            The following is an example of how to programmatically receive cache notifications when running in a
+            JBoss AS environment. In this example, the client uses a filter to specify which events are of interest.
+         </para>
+
+         <programlisting role="JAVA"><![CDATA[
+   MyListener listener = new MyListener();
+   NotificationFilterSupport filter = null;
+
+   // get reference to MBean server
+   Context ic = new InitialContext();
+   MBeanServerConnection server = (MBeanServerConnection)ic.lookup("jmx/invoker/RMIAdaptor");
+
+   // get reference to CacheMgmtInterceptor MBean
+   String cache_service = "jboss.cache:service=TomcatClusteringCache";
+   ObjectName mgmt_name = new ObjectName(cache_service);
+
+   // configure a filter to only receive node created and removed events
+   filter = new NotificationFilterSupport();
+   filter.disableAllTypes();
+   filter.enableType(CacheNotificationBroadcaster.NOTIF_NODE_CREATED);
+   filter.enableType(CacheNotificationBroadcaster.NOTIF_NODE_REMOVED);
+
+   // register the listener with a filter
+   // leave the filter null to receive all cache events
+   server.addNotificationListener(mgmt_name, listener, filter, null);
+
+   // ...
+
+   // on completion of processing, unregister the listener
+   server.removeNotificationListener(mgmt_name, listener, filter, null);
+         ]]></programlisting>
+
+         <para>The following is the simple notification listener implementation used in the previous example.</para>
+         <programlisting role="JAVA"><![CDATA[
+   private class MyListener implements NotificationListener, Serializable
+   {
+      public void handleNotification(Notification notification, Object handback)
+      {
+         String message = notification.getMessage();
+         String type = notification.getType();
+         Object userData = notification.getUserData();
+
+         System.out.println(type + ": " + message);
+
+         if (userData == null)
+         {
+            System.out.println("notification data is null");
+         }
+         else if (userData instanceof String)
+         {
+            System.out.println("notification data: " + (String) userData);
+         }
+         else if (userData instanceof Object[])
+         {
+            Object[] ud = (Object[]) userData;
+            for (Object data : ud)
+            {
+               System.out.println("notification data: " + data.toString());
+            }
+         }
+         else
+         {
+            System.out.println("notification data class: " + userData.getClass().getName());
+         }
+      }
+   }
+         ]]></programlisting>
+
+         <para>Note that the JBoss Cache management implementation only listens to cache events after a client registers
+            to receive MBean notifications. As soon as no clients are registered for notifications, the MBean will
+            remove
+            itself as a cache listener.
+         </para>
+
+      </section>
+
+      <section id="jconsole">
+         <title>Accessing Cache MBeans in a Standalone Environment using the <literal>jconsole</literal> Utility</title>
+         <para>
+            JBoss Cache MBeans are easily accessed when running cache instances in an application server that
+            provides an MBean server interface such as JBoss JMX Console. Refer to your server documentation
+            for instructions on how to access MBeans running in a server's MBean container.
+         </para>
+         <para>
+            In addition, though, JBoss Cache MBeans are also accessible when running in a non-server environment using
+            your JDK's <literal>jconsole</literal> tool. When running a standalone cache outside of an application server,
+            you can access the cache's MBeans as follows.
+         </para>
+         <para>
+            <orderedlist>
+               <listitem>
+                  Set the system property <literal>-Dcom.sun.management.jmxremote</literal>
+                  when starting the JVM where the cache will run.
+               </listitem>
+               <listitem>
+                  Once the JVM is running, start the <literal>jconsole</literal> utility, located in your JDK's
+                  <literal>/bin</literal> directory.
+               </listitem>
+               <listitem>
+                  When the utility loads, you will be able to select your running JVM and connect to it. The
+                  JBoss Cache MBeans will be available on the MBeans panel.
+               </listitem>
+            </orderedlist>
+         </para>
+         <para>Note that the <literal>jconsole</literal> utility will automatically register as a listener for cache
+            notifications when connected to a JVM running JBoss Cache instances.
+         </para>
+      </section>
+   </section>
+</chapter>

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/eviction_policies.xml
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/eviction_policies.xml	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/eviction_policies.xml	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,508 @@
+<chapter id="eviction_policies">
+   <title>Eviction</title>
+
+   <para>
+      Eviction controls JBoss Cache's memory management by restricting how many nodes are allowed to be stored in
+      memory, and for how long. Memory constraints on servers mean caches cannot grow indefinitely, so eviction
+      needs to occur to prevent out of memory errors. Eviction is most often used alongside <link linkend="cache_loaders">cache loaders</link>.
+   </para>
+
+   <section id="eviction.design">
+      <title>Design</title>
+      <para>
+         Eviction in JBoss Cache is designed around four concepts:
+         <itemizedlist>
+            <listitem>1.  Collecting statistics</listitem>
+            <listitem>2.  Determining which nodes to evict</listitem>
+            <listitem>3.  How nodes are evicted</listitem>
+            <listitem>4.  Eviction threads.</listitem>
+         </itemizedlist>
+         In addition, Regions play a key role in eviction, as eviction is always configured on a per-region basis so that
+         different subtrees in the cache can have different eviction characteristics.
+      </para>
+
+      <section>
+         <title>Collecting Statistics</title>
+         <para>
+            This is done on the caller's thread whenever anyone interacts with the cache.  If eviction is enabled, an
+            <literal>EvictionInterceptor</literal> is added to the interceptor chain and events are recorded in an
+            event queue.  Events are denoted by the <literal>EvictionEvent</literal> class.  Event queues are held on
+            specific Regions so each region has its own event queue.
+         </para>
+         <para>
+            This aspect of eviction is not configurable, except that the <literal>EvictionInterceptor</literal> is either
+            added to the interceptor chain or not, depending on whether eviction is enabled.
+         </para>
+      </section>
+
+      <section>
+         <title>Determining Which Nodes to Evict</title>
+         <para>
+            An <literal>EvictionAlgorithm</literal> implementation processes the eviction queue to decide which nodes to
+            evict.  JBoss Cache ships with a number of implementations, including <literal>FIFOAlgorithm</literal>,
+            <literal>LRUAlgorithm</literal>, <literal>LFUAlgorithm</literal>, etc.  Each implementation has a corresponding
+            <literal>EvictionAlgorithmConfig</literal> implementation with configuration details for the algorithm.
+         </para>
+         <para>
+            Custom <literal>EvictionAlgorithm</literal> implementations can be provided by implementing the interface
+            or extending one of the provided implementations.
+         </para>
+         <para>
+            Algorithms are executed by calling its <literal>process()</literal> method and passing in the event queue to
+            process.  This is typically done by calling <literal>Region.processEvictionQueues()</literal>, which will
+            locate the Algorithm assigned to the region.
+         </para>
+      </section>
+
+      <section>
+         <title>How Nodes are Evicted</title>
+         <para>
+            Once the <literal>EvictionAlgorithm</literal> decides which nodes to evict, it uses an implementation of
+            <literal>EvictionActionPolicy</literal> to determine how to evict nodes.  This is configurable on a per-region
+            basis, and defaults to <literal>DefaultEvictionActionPolicy</literal>, which invokes <literal>Cache.evict()</literal>
+            for each node that needs to be evicted.
+         </para>
+         <para>
+            JBoss Cache also ships with <literal>RemoveOnEvictActionPolicy</literal>, which calls <literal>Cache.removeNode()</literal>
+            for each node that needs to be evicted, instead of <literal>Cache.evict()</literal>.
+         </para>
+         <para>
+            Custom <literal>EvictionActionPolicy</literal> implementations can be used as well.
+         </para>
+      </section>
+
+      <section>
+         <title>Eviction threads</title>
+         <para>
+            By default, a single cache-wide eviction thread is used to periodically iterate through registered regions
+            and call <literal>Region.processEvictionQueues()</literal> on each region.  The frequency with which this
+            thread runs can be configured using the <literal>wakeUpInterval</literal> attribute in the <literal>eviction</literal>
+            configuration element, and defaults to 5000 milliseconds if not specified.
+         </para>
+         <para>
+            The eviction thread can be disabled by setting <literal>wakeUpInterval</literal> to <literal>0</literal>.
+            This can be useful if you have your own periodic maintenance thread running and would like to iterate through
+            regions and call <literal>Region.processEvictionQueues()</literal> yourself.
+         </para>
+      </section>
+   </section>
+
+      <section id="regions">
+         <title>Eviction Regions</title>
+         <para>
+            The concept of regions and the <literal>Region</literal> class were
+            <link linkend="architecture.regions">visited earlier</link> when talking about marshalling. Regions are also
+            used to define the eviction behavior for nodes within that region. In addition to using a region-specific
+            configuration, you can also configure default, cache-wide eviction behavior for nodes that do not fall into
+            predefined regions or if you do not wish to define specific regions. It is important to note that when
+            defining regions using the configuration XML file, all elements of the <literal>Fqn</literal> that defines
+            the region are <literal>String</literal> objects.
+         </para>
+         <para>
+            For each region, you can define eviction parameters.
+         </para>
+
+            <para>It's possible to define regions that overlap. In other words, one region can be defined for
+               <literal>/a/b/c</literal>, and another defined for <literal>/a/b/c/d</literal> (which is just the
+               <emphasis>d</emphasis> subtree of the <literal>/a/b/c</literal> sub-tree).
+               The algorithm, in order to handle scenarios like this consistently, will always choose the first region
+               it encounters. In this way, if the algorithm needed to decide how to handle node
+               <literal>/a/b/c/d/e</literal>, it would start from there and work
+               its way up the tree until it hits the first defined region - in this case
+               <literal>/a/b/c/d</literal>.
+            </para>
+      <section>
+         <title>Resident Nodes</title>
+         <para>
+            Nodes marked as resident (using
+            <literal>Node.setResident()</literal>
+            API) will be ignored by the eviction policies both when checking whether to trigger
+            the eviction and when proceeding with the actual eviction of nodes. E.g. if a region is configured to have a
+            maximum of 10 nodes, resident nodes won't be
+            counted when deciding whether to evict nodes in that region. In addition, resident nodes will not be
+            considered for eviction when the region's eviction
+            threshold is reached.
+         </para>
+         <para>
+            In order to mark a node as resident the
+            <literal>Node.setResident()</literal>
+            API should be used. By default, the newly created nodes are not resident.
+            The
+            <literal>resident</literal>
+            attribute of a node is neither replicated, persisted nor transaction-aware.
+         </para>
+         <para>
+            A sample use case for resident nodes would be ensuring "path" nodes don't add "noise" to an eviction policy.
+            E.g.,:
+         </para>
+         <programlisting role="JAVA"><![CDATA[
+...
+   Map lotsOfData = generateData();
+   cache.put("/a/b/c", lotsOfData);
+   cache.getRoot().getChild("/a").setResident(true);
+   cache.getRoot().getChild("/a/b").setResident(true);
+...
+               ]]></programlisting>
+         <para>
+            In this example, the nodes
+            <literal>/a</literal>
+            and
+            <literal>/a/b</literal>
+            are paths which exist solely to
+            support the existence of node
+            <literal>/a/b/c</literal>
+            and don't hold any data themselves. As such, they are
+            good candidates for being marked as resident. This would lead to better memory management as no eviction
+            events would be
+            generated when accessing
+            <literal>/a</literal>
+            and<literal>/a/b</literal>.
+         </para>
+         <para>
+            N.B. when adding attributes to a resident node, e.g.
+            <literal>cache.put("/a", "k", "v")</literal>
+            in the above example, it would make sense to mark the nodes
+            as non-resident again and let them be considered for eviction..
+         </para>
+      </section>
+   </section>
+
+   <section>
+      <title>Configuring Eviction</title>
+      <section id="eviction.basic_cfg">
+         <title>Basic Configuration</title>
+         <para>
+            The basic eviction configuration element looks like:
+         </para>
+         <programlisting role="XML"><![CDATA[
+   ...
+   <eviction wakeUpInterval="500" eventQueueSize="100000">
+      <default algorithmClass="org.jboss.cache.eviction.LRUAlgorithm">
+         <property name="maxNodes" value="5000" />
+         <property name="timeToLive" value="1000" />
+      </default>
+   </eviction>
+   ...
+]]></programlisting>
+         <para>
+            <itemizedlist>
+               <listitem>
+                  <literal>wakeUpInterval</literal>
+                  - this required parameter defines how often the eviction thread runs, in milliseconds.
+               </listitem>
+               <listitem>
+                  <literal>eventQueueSize</literal>
+                  - this optional parameter defines the size of the bounded queue which holds eviction events. If your
+                  eviction thread does not run often enough, you may find that the event queue fills up.  It may then be
+                  necessary to get your eviction thread to run more frequently, or increase the size of your event queue.
+                  This configuration is just the <emphasis>default</emphasis> event queue size, and can be overridden
+                  in specific eviction regions.  If not specified, this defaults to <literal>200000</literal>.
+               </listitem>
+               <listitem>
+                  <literal>algorithmClass</literal>
+                  - this is required, unless you set individual <literal>algorithmClass</literal> attributes on each and every region. This
+                  defines the default eviction algorithm to use if one is not defined for a region.
+               </listitem>
+               <listitem>
+                  Algorithm configuration attributes - these are specific to the algorithm specified in <literal>algorithmClass</literal>.
+                  See the section specific to the algorithm you are interested in for details.
+               </listitem>
+            </itemizedlist>
+         </para>
+      </section>
+
+      <section>
+         <title>Programmatic Configuration</title>
+         <para>
+            Configuring eviction using the
+            <literal>Configuration</literal>
+            object entails the use of the
+            <literal>org.jboss.cache.config.EvictionConfig</literal>
+            bean, which is passed into
+            <literal>Configuration.setEvictionConfig()</literal>. See the
+            <link linkend="configuration">chapter on Configuration</link>
+            for more on building a
+            <literal>Configuration</literal>
+            programatically.
+         </para>
+
+         <para>
+            The use of simple POJO beans to represent all elements in a
+            cache's configuration also makes it fairly easy to programatically
+            add eviction regions after the cache is started. For example,
+            assume we had an existing cache configured via XML with the
+            EvictionConfig element shown above. Now at runtime we wished to
+            add a new eviction region named "/org/jboss/fifo", using
+            <literal>LRUAlgorithm</literal>
+            but a different number of
+            <literal>maxNodes</literal>:
+         </para>
+
+         <programlisting role="JAVA"><![CDATA[
+   Fqn fqn = Fqn.fromString("/org/jboss/fifo");
+
+   // Create a configuration for an LRUPolicy
+   LRUAlgorithmConfig lruc = new LRUAlgorithmConfig();
+   lruc.setMaxNodes(10000);
+
+   // Create an eviction region config
+   EvictionRegionConfig erc = new EvictionRegionConfig(fqn, lruc);
+
+   // Create the region and set the config
+   Region region = cache.getRegion(fqn, true);
+   region.setEvictionRegionConfig(erc);
+         ]]></programlisting>
+      </section>
+   </section>
+
+   <section id="eviction.shipped">
+      <title>Shipped Eviction Policies</title>
+
+      This section details the different algorithms shipped with JBoss Cache, and the various configuration parameters
+      used for each algorithm.
+
+      <section>
+         <title>LRUAlgorithm - Least Recently Used</title>
+
+         <para>
+            <literal>org.jboss.cache.eviction.LRUAlgorithm</literal>
+            controls both the node lifetime and age. This policy guarantees a constant order (
+            <literal>O (1)</literal>
+            ) for
+            adds, removals and lookups (visits). It has the following configuration
+            parameters:
+         </para>
+
+         <itemizedlist>
+            <listitem>
+               <literal>maxNodes</literal>
+               - This is the maximum number of nodes allowed in this region. 0 denotes immediate expiry, -1 denotes no limit.
+            </listitem>
+            <listitem>
+               <literal>timeToLive</literal>
+               - The amount of time a node is not written to or read (in milliseconds) before the node is swept away. 0
+               denotes immediate expiry, -1 denotes no limit.
+            </listitem>
+
+            <listitem>
+               <literal>maxAge</literal>
+               - Lifespan of a node (in milliseconds) regardless of idle time before the node is swept away. 0
+               denotes immediate expiry, -1 denotes no limit.
+            </listitem>
+
+            <listitem>
+               <literal>minTimeToLive</literal>
+               - the minimum amount of time a node must be allowed to live after being accessed before it is allowed to
+               be considered for eviction. 0 denotes that this feature is disabled, which is the default value.
+            </listitem>
+         </itemizedlist>
+      </section>
+
+      <section>
+         <title>FIFOAlgorithm - First In, First Out</title>
+
+         <para>
+            <literal>org.jboss.cache.eviction.FIFOAlgorithm</literal>
+            controls the eviction in a proper first in first out order. This policy
+            guarantees a constant order (
+            <literal>O (1)</literal>
+            ) for adds, removals and lookups (visits). It has the
+            following configuration parameters:
+         </para>
+
+         <itemizedlist>
+            <listitem>
+               <literal>maxNodes</literal>
+               - This is the maximum number of nodes allowed in this region. 0 denotes immediate expiry, -1 denotes no limit.
+            </listitem>
+            <listitem>
+               <literal>minTimeToLive</literal>
+               - the minimum amount of time a node must be allowed to live after being accessed before it is allowed to
+               be considered for eviction. 0 denotes that this feature is disabled, which is the default value.
+            </listitem>
+         </itemizedlist>
+      </section>
+
+
+      <section>
+         <title>MRUAlgorithm - Most Recently Used</title>
+
+         <para>
+            <literal>org.jboss.cache.eviction.MRUAlgorithm</literal>
+            controls
+            the eviction in based on most recently used algorithm. The most recently
+            used nodes will be the first to evict with this policy. This policy
+            guarantees a constant order (
+            <literal>O (1)</literal>
+            ) for adds, removals and lookups (visits). It has the
+            following configuration parameters:
+         </para>
+
+         <itemizedlist>
+            <listitem>
+               <literal>maxNodes</literal>
+               - This is the maximum number of nodes allowed in this region. 0
+               denotes immediate expiry, -1 denotes no limit.
+            </listitem>
+            <listitem>
+               <literal>minTimeToLive</literal>
+               - the minimum amount of time a node must be allowed to live after being accessed before it is allowed to
+               be considered for eviction. 0 denotes that this feature is disabled, which is the default value.
+            </listitem>
+         </itemizedlist>
+      </section>
+
+      <section>
+         <title>LFUAlgorithm - Least Frequently Used</title>
+
+         <para>
+            <literal>org.jboss.cache.eviction.LFUAlgorithm</literal>
+            controls
+            the eviction in based on least frequently used algorithm. The least
+            frequently used nodes will be the first to evict with this policy. Node
+            usage starts at 1 when a node is first added. Each time it is visited,
+            the node usage counter increments by 1. This number is used to determine
+            which nodes are least frequently used. LFU is also a sorted eviction
+            algorithm. The underlying EvictionQueue implementation and algorithm is
+            sorted in ascending order of the node visits counter. This class
+            guarantees a constant order (
+            <literal>O (1)</literal>
+            ) for adds, removal and searches. However, when any
+            number of nodes are added/visited to the queue for a given processing
+            pass, a single quasilinear (
+            <literal>O (n * log n)</literal>
+            ) operation is used to resort the queue in
+            proper LFU order. Similarly if any nodes are removed or evicted, a
+            single linear (
+            <literal>O (n)</literal>
+            ) pruning operation is necessary to clean up the
+            EvictionQueue. LFU has the following configuration parameters:
+         </para>
+
+         <itemizedlist>
+            <listitem>
+               <literal>maxNodes</literal>
+               - This is the maximum number of nodes allowed in this region. 0
+               denotes immediate expiry, -1 denotes no limit.
+            </listitem>
+            <listitem>
+               <literal>minNodes</literal>
+               - This is the minimum number of nodes allowed in this region. This value determines what
+               the eviction queue should prune down to per pass. e.g. If
+               minNodes is 10 and the cache grows to 100 nodes, the cache is
+               pruned down to the 10 most frequently used nodes when the
+               eviction timer makes a pass through the eviction
+               algorithm.
+            </listitem>
+            <listitem>
+               <literal>minTimeToLive</literal>
+               - the minimum amount of time a node must be allowed to live after being accessed before it is allowed to
+               be considered for eviction. 0 denotes that this feature is disabled, which is the default value.
+            </listitem>
+         </itemizedlist>
+
+      </section>
+
+      <section>
+         <title>ExpirationAlgorithm</title>
+
+         <para>
+            <literal>org.jboss.cache.eviction.ExpirationAlgorithm</literal>
+            is a policy
+            that evicts nodes based on an absolute expiration time. The
+            expiration time is indicated using the
+            <literal>org.jboss.cache.Node.put()</literal>
+            method, using a String key
+            <literal>expiration</literal>
+            and the absolute time as a
+            <literal>java.lang.Long</literal>
+            object, with a value indicated as milliseconds past midnight
+            January 1st, 1970 UTC (the same relative time as provided by
+            <literal>java.lang.System.currentTimeMillis()</literal>
+            ).
+         </para>
+
+         <para>
+            This policy guarantees a constant order (
+            <literal>O (1)</literal>
+            ) for adds and removals.
+            Internally, a sorted set (TreeSet) containing the expiration
+            time and Fqn of the nodes is stored, which essentially
+            functions as a heap.
+         </para>
+
+         <para>
+            This policy has the following configuration parameters:
+         </para>
+
+         <itemizedlist>
+            <listitem>
+               <literal>expirationKeyName</literal>
+               - This is the Node key name used
+               in the eviction algorithm. The configuration default is
+               <literal>expiration</literal>
+               .
+            </listitem>
+            <listitem>
+               <literal>maxNodes</literal>
+               - This is the maximum number of nodes allowed in this region. 0
+               denotes immediate expiry, -1 denotes no limit.
+            </listitem>
+         </itemizedlist>
+
+         <para>
+            The following listing shows how the expiration date is indicated and how the
+            policy is applied:
+         </para>
+         <programlisting role="JAVA"><![CDATA[
+   Cache cache = DefaultCacheFactory.createCache();
+   Fqn fqn1 = Fqn.fromString("/node/1");
+   Long future = new Long(System.currentTimeMillis() + 2000);
+
+   // sets the expiry time for a node
+   cache.getRoot().addChild(fqn1).put(ExpirationConfiguration.EXPIRATION_KEY, future);
+
+   assertTrue(cache.getRoot().hasChild(fqn1));
+   Thread.sleep(5000);
+
+   // after 5 seconds, expiration completes
+   assertFalse(cache.getRoot().hasChild(fqn1));
+   ]]></programlisting>
+         <para>
+            Note that the expiration time of nodes is only checked when the
+            region manager wakes up every
+            <literal>wakeUpIntervalSeconds</literal>
+            , so eviction
+            may happen a few seconds later than indicated.
+         </para>
+      </section>
+      <section>
+         <title>ElementSizeAlgorithm - Eviction based on number of key/value pairs in a node</title>
+
+         <para>
+            <literal>org.jboss.cache.eviction.ElementSizeAlgorithm</literal>
+            controls
+            the eviction in based on the number of key/value pairs in the node. Nodes The most recently
+            used nodes will be the first to evict with this policy. It has the following configuration parameters:
+         </para>
+
+         <itemizedlist>
+            <listitem>
+               <literal>maxNodes</literal>
+               - This is the maximum number of nodes allowed in this region. 0
+               denotes immediate expiry, -1 denotes no limit.
+            </listitem>
+            <listitem>
+               <literal>maxElementsPerNode</literal>
+               - This is the trigger number of attributes per node for the node to be selected for eviction. 0
+               denotes immediate expiry, -1 denotes no limit.
+            </listitem>
+            <listitem>
+               <literal>minTimeToLive</literal>
+               - the minimum amount of time a node must be allowed to live after being accessed before it is allowed to
+               be considered for eviction. 0 denotes that this feature is disabled, which is the default value.
+            </listitem>
+         </itemizedlist>
+      </section>
+   </section>
+</chapter>
\ No newline at end of file

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/images/icon.svg
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/images/icon.svg	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/images/icon.svg	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,3936 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:ns="http://ns.adobe.com/AdobeSVGViewerExtensions/3/"
+   xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg3017"
+   sodipodi:version="0.32"
+   inkscape:version="0.44+devel"
+   sodipodi:docname="book.svg"
+   sodipodi:docbase="/home/andy/Desktop">
+  <metadata
+     id="metadata489">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="858"
+     inkscape:pageshadow="0"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="1"
+     inkscape:cx="16"
+     inkscape:cy="15.944056"
+     inkscape:window-x="0"
+     inkscape:window-y="33"
+     inkscape:current-layer="svg3017" />
+  <defs
+     id="defs3019">
+    <linearGradient
+       id="linearGradient2381">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop2383" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop2385" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="XMLID_1758_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop3903" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3905" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3890" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3892" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1755_">
+      <use
+         id="use3874"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3877" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3879" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3881" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3883" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="XMLID_1754_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop3863" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop3865" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop3867" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop3869" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop3851" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3853" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1751_">
+      <use
+         id="use3837"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3840" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3842" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3844" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3846" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="XMLID_1750_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3830" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3832" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3818" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3820" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="XMLID_1748_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3803" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3805" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3807" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3809" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="XMLID_2275_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9947" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9949" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9951" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9953" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_2273_">
+      <use
+         id="use9933"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="XMLID_2274_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9936" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9938" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9940" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9942" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="XMLID_2272_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9917" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9919" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9921" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9923" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleInM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(-0.4,-0.4)"
+         style="fill:#5c5c4f"
+         id="path3197" />
+    </marker>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="XMLID_3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#bfbfbf;stop-opacity:1"
+         offset="0"
+         id="stop20103" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop20105" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="linearGradient36592"
+       xlink:href="#XMLID_3298_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="XMLID_3297_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop20096" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20098" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="linearGradient36595"
+       xlink:href="#XMLID_3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="XMLID_3296_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#0f6124;stop-opacity:1"
+         offset="0"
+         id="stop20087" />
+      <stop
+         style="stop-color:#219630;stop-opacity:1"
+         offset="1"
+         id="stop20089" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#219630" />
+    </linearGradient>
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="linearGradient36677"
+       xlink:href="#XMLID_3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="XMLID_3295_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20076" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.5"
+         id="stop20078" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20080" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="linearGradient36604"
+       xlink:href="#XMLID_3295_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="XMLID_3294_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop20069" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20071" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="linearGradient36607"
+       xlink:href="#XMLID_3294_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="XMLID_3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20056" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20058" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20060" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20062" />
+      <stop
+         style="stop-color:#c2c2c2;stop-opacity:1"
+         offset="0.5"
+         id="stop20064" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C2C2C2" />
+    </linearGradient>
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="linearGradient36610"
+       xlink:href="#XMLID_3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="XMLID_3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20043" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20045" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20047" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20049" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20051" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="linearGradient36613"
+       xlink:href="#XMLID_3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleOutM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(0.4,0.4)"
+         style="fill:#5c5c4f;fill-rule:evenodd;stroke-width:1pt;marker-start:none"
+         id="path3238" />
+    </marker>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="XMLID_3457_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="stop8309" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8311" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="stop8313" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#B2B2B2" />
+    </linearGradient>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="lg1997"
+       xlink:href="#XMLID_3457_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="XMLID_3456_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="stop8300" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8302" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8304" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="lg2000"
+       xlink:href="#XMLID_3456_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="XMLID_3455_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8291" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.69999999"
+         id="stop8293" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8295" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.7"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="lg2003"
+       xlink:href="#XMLID_3455_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       id="lg63694">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop63696" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop63698" />
+    </linearGradient>
+    <linearGradient
+       x1="458"
+       y1="483"
+       x2="465.20001"
+       y2="271.39999"
+       id="lg2006"
+       xlink:href="#lg63694"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(6.3e-2,0,0,6.3e-2,-1.3,-9.8)" />
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="XMLID_3453_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8271" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0.2"
+         id="stop8273" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8275" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="lg2009"
+       xlink:href="#XMLID_3453_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="XMLID_3449_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8232" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8234" />
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="1"
+         id="stop8236" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#ECD600" />
+    </linearGradient>
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="lg2016"
+       xlink:href="#XMLID_3449_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8219" />
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8221" />
+      <stop
+         style="stop-color:#c96b00;stop-opacity:1"
+         offset="0.89999998"
+         id="stop8223" />
+      <stop
+         style="stop-color:#9a5500;stop-opacity:1"
+         offset="1"
+         id="stop8225" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.9"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#9A5500" />
+    </radialGradient>
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="rg2020"
+       xlink:href="#XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.513992,0,0,2.347576,-689.1621,-378.5717)" />
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="XMLID_3447_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="0"
+         id="stop8204" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8206" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8208" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="lg2026"
+       xlink:href="#XMLID_3447_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop8197" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="1"
+         id="stop8199" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFF95E" />
+    </radialGradient>
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="rg2029"
+       xlink:href="#XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.7,0,0,1.7,-457.5,-266.8)" />
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="XMLID_3445_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8184" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8186" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8188" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8190" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8192" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="lg2032"
+       xlink:href="#XMLID_3445_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="XMLID_3444_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8171" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8173" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8175" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8177" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8179" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="lg2035"
+       xlink:href="#XMLID_3444_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="379.70001"
+       y1="167.89999"
+       x2="383.89999"
+       y2="172.89999"
+       id="lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16159" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16161" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s16163" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="379.60001"
+       y1="167.8"
+       x2="383.79999"
+       y2="172"
+       id="lg6416"
+       xlink:href="#lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.622156,0.623859,-0.623859,2.62182,-882.9706,-673.7921)" />
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="s16152" />
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="1"
+         id="s16154" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg6453"
+       xlink:href="#lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="0"
+         id="s16145" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="s16147" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg6456"
+       xlink:href="#lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <radialGradient
+       cx="347.29999"
+       cy="244.5"
+       r="5.1999998"
+       fx="347.29999"
+       fy="244.5"
+       id="lg4282_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#333;stop-opacity:1"
+         offset="0"
+         id="s16135" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s16137" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0"
+         id="s16111" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.60000002"
+         id="s16113" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="1"
+         id="s16115" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.6" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg6467"
+       xlink:href="#lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16100" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.40000001"
+         id="s16102" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0.89999998"
+         id="s16104" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16106" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.9" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg6465"
+       xlink:href="#lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="307.79999"
+       y1="395.20001"
+       x2="313.79999"
+       y2="413.60001"
+       id="lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16091" />
+      <stop
+         style="stop-color:#fcd72f;stop-opacity:1"
+         offset="0.40000001"
+         id="s16093" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16095" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="306.5"
+       y1="393"
+       x2="309"
+       y2="404"
+       id="lg6400"
+       xlink:href="#lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="352.10001"
+       y1="253.60001"
+       x2="348.5"
+       y2="237.8"
+       id="lg4276_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16077" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16079" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s16057" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.80000001"
+         id="s16059" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="s16061" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.8" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg6463"
+       xlink:href="#lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16048" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16050" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16052" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg6461"
+       xlink:href="#lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16041" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16043" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="5.6e-003" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg6381"
+       xlink:href="#lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="348.39999"
+       y1="247.39999"
+       x2="354.10001"
+       y2="242"
+       id="lg4271_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s16025" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.40000001"
+         id="s16027" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="s16029" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#000000"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg4270_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16007" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16009" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg6459"
+       xlink:href="#lg4270_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)" />
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="XMLID_2708_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop75318" />
+      <stop
+         style="stop-color:#fffcea;stop-opacity:1"
+         offset="1"
+         id="stop75320" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#FFFCEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="lg1907"
+       xlink:href="#XMLID_2708_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="XMLID_2707_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffdea0;stop-opacity:1"
+         offset="0"
+         id="stop75305" />
+      <stop
+         style="stop-color:#ffd89e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75307" />
+      <stop
+         style="stop-color:#ffd79e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75309" />
+      <stop
+         style="stop-color:#dbaf6d;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75311" />
+      <stop
+         style="stop-color:#6f4c24;stop-opacity:1"
+         offset="1"
+         id="stop75313" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.3" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6F4C24"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="lg1910"
+       xlink:href="#XMLID_2707_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="58"
+       y1="73.199997"
+       x2="44.5"
+       y2="19"
+       id="XMLID_2704_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)">
+      <stop
+         style="stop-color:#d4a96c;stop-opacity:1"
+         offset="0.5"
+         id="stop75284" />
+      <stop
+         style="stop-color:#dcb273;stop-opacity:1"
+         offset="0.60000002"
+         id="stop75286" />
+      <stop
+         style="stop-color:#f0ca87;stop-opacity:1"
+         offset="0.80000001"
+         id="stop75288" />
+      <stop
+         style="stop-color:#ffdc96;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75290" />
+      <stop
+         style="stop-color:#c18a42;stop-opacity:1"
+         offset="1"
+         id="stop75292" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C18A42"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="XMLID_2703_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0"
+         id="stop75268" />
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0.40000001"
+         id="stop75270" />
+      <stop
+         style="stop-color:#c0aa94;stop-opacity:1"
+         offset="1"
+         id="stop75272" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.4" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C0AA94"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="lg1916"
+       xlink:href="#XMLID_2703_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="224.31"
+       y1="19.450001"
+       x2="214.33"
+       y2="11.46"
+       id="XMLID_419_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#404040;stop-opacity:1"
+         offset="0"
+         id="s1903" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1905" />
+      <stop
+         style="stop-color:#e9e9e9;stop-opacity:1"
+         offset="1"
+         id="s1907" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E9E9E9" />
+    </linearGradient>
+    <linearGradient
+       x1="221.84"
+       y1="32.779999"
+       x2="212.2"
+       y2="20.27"
+       id="lg1988"
+       xlink:href="#XMLID_419_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1900"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s1902" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s1906" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.33" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D3D3D3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="234.81"
+       y1="33.279999"
+       x2="228.27"
+       y2="33.279999"
+       id="lg1908"
+       xlink:href="#lg1900"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="XMLID_416_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#575757;stop-opacity:1"
+         offset="0"
+         id="s1874" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1876" />
+      <stop
+         style="stop-color:#d3d3d3;stop-opacity:1"
+         offset="1"
+         id="s1878" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#D3D3D3" />
+    </linearGradient>
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1991"
+       xlink:href="#XMLID_416_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1,0,0,1.1,-54.33,-75.4)">
+      <stop
+         style="stop-color:#c9ffc9;stop-opacity:1"
+         offset="0"
+         id="stop29201" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="stop29203" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#23A11F" />
+    </radialGradient>
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="radialGradient5711"
+       xlink:href="#x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.23,0,0,1.23,-709.93,-245.02)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5722"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="x5002_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29134" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.2"
+         id="stop29136" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="stop29138" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.20"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#999999" />
+    </linearGradient>
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="lg5725"
+       xlink:href="#x5002_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29157" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29159" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="lg5728"
+       xlink:href="#x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="x5003_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="stop29143" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="stop29145" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E5E5E5" />
+    </linearGradient>
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5732"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29124" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29126" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="lg5735"
+       xlink:href="#x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="XMLID_2433_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d6d6d6;stop-opacity:1"
+         offset="0"
+         id="71615" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71617" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="lg1952"
+       xlink:href="#XMLID_2433_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.98,0,0,0.98,2.88,2.75)">
+      <stop
+         style="stop-color:#d2d2d2;stop-opacity:1"
+         offset="0.19"
+         id="71592" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.44999999"
+         id="71594" />
+      <stop
+         style="stop-color:#c7c7c7;stop-opacity:1"
+         offset="0.60000002"
+         id="71596" />
+      <stop
+         style="stop-color:#b9b9b9;stop-opacity:1"
+         offset="0.74000001"
+         id="71598" />
+      <stop
+         style="stop-color:#a4a4a4;stop-opacity:1"
+         offset="0.86000001"
+         id="71600" />
+      <stop
+         style="stop-color:#8a8a8a;stop-opacity:1"
+         offset="0.95999998"
+         id="71602" />
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="1"
+         id="71604" />
+      <a:midPointStop
+         offset="0.19"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="0.8"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#808080" />
+    </radialGradient>
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="radialGradient2331"
+       xlink:href="#XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-276.62,-121.54)" />
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="XMLID_2430_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b5d8ff;stop-opacity:1"
+         offset="0"
+         id="71582" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="71584" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#000000" />
+    </linearGradient>
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="lg2820"
+       xlink:href="#XMLID_2430_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="XMLID_2429_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0"
+         id="71564" />
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0.25"
+         id="71566" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="0.44"
+         id="71568" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71570" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.25"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.44"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="lg2818"
+       xlink:href="#XMLID_2429_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.851,0,0,0.849,69.297,51.658)">
+      <stop
+         style="stop-color:#23468e;stop-opacity:1"
+         offset="0"
+         id="stop10972" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10974" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </radialGradient>
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="rg5791"
+       xlink:href="#lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.858,0,0,0.857,-511.7,9.02)" />
+    <linearGradient
+       x1="616.112"
+       y1="76.247002"
+       x2="588.14099"
+       y2="60.742001"
+       id="lg3497_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#01326e;stop-opacity:1"
+         offset="0"
+         id="stop10962" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10964" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg3496_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop10950" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10952" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg5794"
+       xlink:href="#lg3496_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg3495_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10941" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10943" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10945" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg5771"
+       xlink:href="#lg3495_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.615,-43.098)" />
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg3494_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10932" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10934" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10936" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg5774"
+       xlink:href="#lg3494_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.616,-43.098)" />
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="g3302_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#005e00;stop-opacity:1"
+         offset="0"
+         id="s6504" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="s6506" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#23A11F"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="lg5851"
+       xlink:href="#g3302_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s6483" />
+      <stop
+         style="stop-color:#eee;stop-opacity:1"
+         offset="0.17"
+         id="s6485" />
+      <stop
+         style="stop-color:#e3e3e3;stop-opacity:1"
+         offset="0.34"
+         id="s6487" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.50999999"
+         id="s6489" />
+      <stop
+         style="stop-color:#b4b4b4;stop-opacity:1"
+         offset="0.67000002"
+         id="s6491" />
+      <stop
+         style="stop-color:#919191;stop-opacity:1"
+         offset="0.83999997"
+         id="s6493" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6495" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.71" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="lg5855"
+       xlink:href="#g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,103.123)" />
+    <clipPath
+       id="g3299_">
+      <use
+         id="use6469"
+         x="0"
+         y="0"
+         width="1005.92"
+         height="376.97"
+         xlink:href="#g101_" />
+    </clipPath>
+    <radialGradient
+       cx="1189.9301"
+       cy="100.05"
+       r="40.400002"
+       fx="1189.9301"
+       fy="100.05"
+       id="g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,-8.46e-2,0,0.34,394.16,137.13)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6472" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s6474" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#000000"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1199.74"
+       cy="97.150002"
+       r="40.400002"
+       fx="1199.74"
+       fy="97.150002"
+       id="rg5860"
+       xlink:href="#g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.409,-0.107,0,0.429,-451.489,113.149)" />
+    <linearGradient
+       x1="796.38"
+       y1="67.580002"
+       x2="781.28003"
+       y2="58.549999"
+       id="g3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#4c8bca;stop-opacity:1"
+         offset="0"
+         id="s6462" />
+      <stop
+         style="stop-color:#b7e9ff;stop-opacity:1"
+         offset="1"
+         id="s6464" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B7E9FF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6448" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6450" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="lg5890"
+       xlink:href="#g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)" />
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,70.17)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6439" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.51999998"
+         id="s6441" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6443" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.52" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="lg5866"
+       xlink:href="#g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,28.6)" />
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="g3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6412" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6414" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="lg5871"
+       xlink:href="#g3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="g3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="s6403" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.28"
+         id="s6405" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6407" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.28" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="lg5874"
+       xlink:href="#g3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,137.29)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6380" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="s6382" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="lg5878"
+       xlink:href="#g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,113.351)" />
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6371" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6373" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="rg5881"
+       xlink:href="#g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,0,0,0.36,238.56,86.87)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6362" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.63999999"
+         id="s6364" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6366" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.64" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="rg5884"
+       xlink:href="#g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.408,0,0,0.448,-638.943,49.495)" />
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6347" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.38999999"
+         id="s6349" />
+      <stop
+         style="stop-color:#b1b1b1;stop-opacity:1"
+         offset="0.75"
+         id="s6351" />
+      <stop
+         style="stop-color:#aaa;stop-opacity:1"
+         offset="0.88"
+         id="s6353" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.97000003"
+         id="s6355" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6357" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.39" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.87" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="rg5887"
+       xlink:href="#g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <pattern
+       patternTransform="matrix(0.592927,0,0,0.592927,78,462)"
+       id="cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-365.3146,-513.505)"
+         id="g3047">
+           id=&quot;path2858&quot; /&gt;
+        <path
+   inkscape:label="#path2854"
+   sodipodi:nodetypes="czzzz"
+   style="fill:#e3dcc0"
+   id="path3060"
+   d="M 390.31462,529.50504 C 390.31462,534.47304 386.28262,538.50504 381.31462,538.50504 C 376.34662,538.50504 372.31462,534.47304 372.31462,529.50504 C 372.31462,524.53704 376.34662,520.50504 381.31462,520.50504 C 386.28262,520.50504 390.31462,524.53704 390.31462,529.50504 z " />
+</g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.733751,0,0,0.733751,67,367)"
+       id="dark-cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-408.0946,-513.505)"
+         id="dark-cream-spot"
+         inkscape:label="#g3043">
+        <path
+           sodipodi:nodetypes="czzzz"
+           style="fill:#c8c5ac"
+           d="M 433.09458,529.50504 C 433.09458,534.47304 429.06258,538.50504 424.09458,538.50504 C 419.12658,538.50504 415.09458,534.47304 415.09458,529.50504 C 415.09458,524.53704 419.12658,520.50504 424.09458,520.50504 C 429.06258,520.50504 433.09458,524.53704 433.09458,529.50504 z "
+           id="path2953" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.375,0,0,0.375,379,400)"
+       id="white-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-484.3997,-513.505)"
+         id="white-spot"
+         inkscape:label="#g3035">
+        <path
+           style="opacity:0.25;fill:white"
+           id="path3033"
+           d="M 509.39967,529.50504 C 509.39967,534.47304 505.36767,538.50504 500.39967,538.50504 C 495.43167,538.50504 491.39967,534.47304 491.39967,529.50504 C 491.39967,524.53704 495.43167,520.50504 500.39967,520.50504 C 505.36767,520.50504 509.39967,524.53704 509.39967,529.50504 z "
+           sodipodi:nodetypes="czzzz" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.455007,0,0,0.455007,-5e-5,1.9e-5)"
+       id="black-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-448.3997,-513.505)"
+         id="black-spot"
+         inkscape:label="#g3039">
+        <path
+           sodipodi:nodetypes="czzzz"
+           d="M 473.39967,529.50504 C 473.39967,534.47304 469.36767,538.50504 464.39967,538.50504 C 459.43167,538.50504 455.39967,534.47304 455.39967,529.50504 C 455.39967,524.53704 459.43167,520.50504 464.39967,520.50504 C 469.36767,520.50504 473.39967,524.53704 473.39967,529.50504 z "
+           id="path2961"
+           style="opacity:0.25;fill:black" />
+      </g>
+    </pattern>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="linearGradient17334"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17336" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17338" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17340" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17342" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5112"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.6461"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#16336E" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="linearGradient17426"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop17428" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17430" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="linearGradient17434"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17436" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17438" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17440" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17442" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="0.4213"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A6100C" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17709"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17711"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17713"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17715"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17717"
+       xlink:href="#XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17721"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17723"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17416"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17418" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17420" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <defs
+       id="defs9929">
+      <path
+         d="M 489.21,209.35 L 485.35,203.63 C 483.63,204.25 473.47,208.93 471.5,210.18 C 470.57,210.77 470.17,211.16 469.72,212.48 C 470.93,212.31 471.72,212.49 473.42,213.04 C 473.26,214.77 473.24,215.74 473.57,218.2 C 474.01,216.88 474.41,216.49 475.34,215.9 C 477.33,214.65 487.49,209.97 489.21,209.35 z "
+         id="XMLID_960_" />
+    </defs>
+    <clipPath
+       id="clipPath17448">
+      <use
+         id="use17450"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17452"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17454" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17456" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17458" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17460" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17463"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17465" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17467" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17469" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17471" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17807"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17810"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17812"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17814"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17816"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17818"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17347"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17349" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17351" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#96BAD6" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17379"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop17381" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17383" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17862"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,-166.1427,-0.18283)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17864"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3859">
+      <polygon
+         points="465.54,213.52 481.94,217.46 482.74,216.71 487.46,198.05 471.08,194.07 470.26,194.83 465.54,213.52 "
+         id="XMLID_343_" />
+    </defs>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="linearGradient17389"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop17391" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop17393" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop17395" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop17397" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17400">
+      <use
+         id="use17402"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17404"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17406" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17408" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17410" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17412" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17882"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3826">
+      <polygon
+         points="463.52,216.14 480.56,220.24 481.36,219.5 483.03,202.04 469.05,196.69 468.24,197.45 463.52,216.14 "
+         id="XMLID_338_" />
+    </defs>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="linearGradient17357"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17359" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17361" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17364">
+      <use
+         id="use17366"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17368"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17370" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17372" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17374" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17376" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient2387"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5105"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5145"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2381"
+       id="linearGradient2371"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)"
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398" />
+  </defs>
+  <g
+     transform="matrix(0.437808,-0.437808,0.437808,0.437808,-220.8237,43.55311)"
+     id="g5089">
+    <path
+       d="M 8.4382985,-6.28125 C 7.8309069,-6.28125 4.125,-0.33238729 4.125,1.96875 L 4.125,28.6875 C 4.125,29.533884 4.7068159,29.8125 5.28125,29.8125 L 30.84375,29.8125 C 31.476092,29.8125 31.968751,29.319842 31.96875,28.6875 L 31.96875,23.46875 L 32.25,23.46875 C 32.74684,23.46875 33.156249,23.059339 33.15625,22.5625 L 33.15625,-5.375 C 33.15625,-5.8718398 32.74684,-6.28125 32.25,-6.28125 L 8.4382985,-6.28125 z "
+       transform="translate(282.8327,227.1903)"
+       style="fill:#5c5c4f;stroke:black;stroke-width:3.23021388;stroke-miterlimit:4;stroke-dasharray:none"
+       id="path5091" />
+    <rect
+       width="27.85074"
+       height="29.369793"
+       rx="1.1414107"
+       ry="1.1414107"
+       x="286.96509"
+       y="227.63805"
+       style="fill:#032c87"
+       id="rect5093" />
+    <path
+       d="M 288.43262,225.43675 L 313.67442,225.43675 L 313.67442,254.80655 L 287.29827,254.83069 L 288.43262,225.43675 z "
+       style="fill:white"
+       id="rect5095" />
+    <path
+       d="M 302.44536,251.73726 C 303.83227,259.59643 301.75225,263.02091 301.75225,263.02091 C 303.99609,261.41329 305.71651,259.54397 306.65747,257.28491 C 307.62455,259.47755 308.49041,261.71357 310.9319,263.27432 C 310.9319,263.27432 309.33686,256.07392 309.22047,251.73726 L 302.44536,251.73726 z "
+       style="fill:#a70000;fill-opacity:1;stroke-width:2"
+       id="path5097" />
+    <rect
+       width="25.241802"
+       height="29.736675"
+       rx="0.89682275"
+       ry="0.89682275"
+       x="290.73544"
+       y="220.92249"
+       style="fill:#809cc9"
+       id="rect5099" />
+    <path
+       d="M 576.47347,725.93939 L 582.84431,726.35441 L 583.25121,755.8725 C 581.35919,754.55465 576.39694,752.1117 574.98889,754.19149 L 574.98889,727.42397 C 574.98889,726.60151 575.65101,725.93939 576.47347,725.93939 z "
+       transform="matrix(0.499065,-0.866565,0,1,0,0)"
+       style="fill:#4573b3;fill-opacity:1"
+       id="rect5101" />
+    <path
+       d="M 293.2599,221.89363 L 313.99908,221.89363 C 314.45009,221.89363 314.81318,222.25673 314.81318,222.70774 C 315.02865,229.0361 295.44494,244.47124 292.44579,240.30491 L 292.44579,222.70774 C 292.44579,222.25673 292.80889,221.89363 293.2599,221.89363 z "
+       style="opacity:0.65536726;fill:url(#linearGradient2371);fill-opacity:1"
+       id="path5103" />
+  </g>
+</svg>

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/introduction.xml
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/introduction.xml	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/introduction.xml	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<chapter id="introduction">
+   <title>Overview</title>
+
+   <section>
+      <title>What is JBoss Cache?</title>
+
+      <para>
+         JBoss Cache is a tree-structured, clustered, transactional cache.  It can be used in a standalone, non-clustered
+         environment, to cache frequently accessed data in memory thereby removing data retrieval or calculation bottlenecks
+         while providing "enterprise" features such as <ulink url="http://java.sun.com/products/jta">JTA</ulink> compatibility, eviction and persistence.
+         </para>
+      <para>
+         JBoss Cache is also a clustered cache, and can be used in a cluster to replicate state providing a high degree
+         of failover.  A variety of replication modes are supported, including invalidation and buddy replication, and
+         network communications can either be synchronous or asynchronous.
+         </para>
+      <para>
+         When used in a clustered mode, the cache is an effective mechanism of building high availability, fault
+         tolerance and even load balancing into custom applications and frameworks.  For example, the
+         <ulink url="http://www.jboss.org/projects/jbossas/">JBoss Application Server</ulink> and Red Hat's
+         <ulink url="http://www.jboss.com">Enterprise Application Platform</ulink> make extensive use of JBoss Cache to
+         cluster services such as HTTP and <ulink url="http://java.sun.com/products/ejb/">EJB</ulink> sessions, as well as
+         providing a distributed entity cache for <ulink url="http://en.wikipedia.org/wiki/Java_Persistence_API">JPA</ulink>.
+      </para>
+      <para>
+         JBoss Cache can - and often is - used outside of JBoss AS, in other Java EE environments such as Spring, Tomcat,
+         Glassfish, BEA WebLogic, IBM WebSphere, and even in standalone Java programs thanks to its minimal dependency set.
+      </para>
+      <section>
+         <title>And what is POJO Cache?</title>
+         <para>
+            POJO Cache is an extension of the core JBoss Cache API. POJO Cache offers additional functionality such as:
+            <itemizedlist>
+               <listitem>maintaining object references even after replication or persistence.</listitem>
+               <listitem>fine grained replication, where only modified object fields are replicated.</listitem>
+               <listitem>"API-less" clustering model where POJOs are simply annotated as being clustered.</listitem>
+            </itemizedlist>
+         </para>
+         <para>
+            POJO Cache has a complete and separate set of documentation, including a Users' Guide, FAQ and tutorial all
+            available on the JBoss Cache <ulink url="http://www.jboss.org/jbosscache">documentation website</ulink>.
+            As such, POJO Cache will not be discussed further in this book.
+         </para>
+      </section>
+
+   </section>
+
+   <section>
+      <title>Summary of Features</title>
+
+      <section>
+         <title>Caching objects</title>
+
+         <para>
+            JBoss Cache offers a simple and straightforward API, where data  - simple Java objects - can be placed in the
+            cache.  Based on configuration options selected, this data may be one or all of:
+            <itemizedlist>
+               <listitem>cached in-memory for efficient, thread-safe retrieval.</listitem>
+               <listitem>replicated to some or all cache instances in a cluster.</listitem>
+               <listitem>persisted to disk and/or a remote, in-memory cache cluster ("far-cache").</listitem>
+               <listitem>garbage collected from memory when memory runs low, and passivated to disk so state isn't lost.
+               </listitem>
+            </itemizedlist>
+            In addition, JBoss Cache offers a rich set of enterprise-class features:
+            <itemizedlist>
+               <listitem>being able to participate in <ulink url="http://java.sun.com/products/jta">JTA</ulink> transactions
+                  (works with most Java EE compliant transaction managers).</listitem>
+               <listitem>attach to JMX consoles and provide runtime statistics on the state of the cache.</listitem>
+               <listitem>allow client code to attach listeners and receive notifications on cache events.</listitem>
+               <listitem>allow grouping of cache operations into batches, for efficient replication</listitem>
+            </itemizedlist>
+         </para>
+      </section>
+
+      <section>
+         <title>Local and clustered modes</title>
+
+         <para>
+            The cache is organized as a tree, with a single root. Each node in the tree essentially contains a map,
+            which acts as a store for key/value pairs. The only requirement placed on objects that are cached is that
+            they implement <literal>java.io.Serializable</literal>.
+         </para>
+
+         <para>
+            JBoss Cache can be either local or replicated. Local caches exist only within the scope of the JVM in which
+            they are created, whereas replicated caches propagate any changes to some or all other caches in the same
+            cluster. A cluster may span different hosts on a network or just different JVMs on a single host.
+         </para>
+
+      </section>
+
+      <section>
+         <title>Clustered caches and transactions</title>
+
+         <para>
+            When a change is made to an object in the cache and that change is done in
+            the context of a transaction, the replication of changes is deferred until the transaction
+            completes successfully. All modifications are kept in a list associated with
+            the transaction of the caller. When the transaction commits, changes are replicated. Otherwise, on a rollback,
+            we simply undo the changes locally and discard the modification list, resulting in zero network traffic and
+            overhead. For example, if a caller makes 100 modifications and then rolls back the transaction, nothing is
+            replicated, resulting in no network traffic.
+         </para>
+
+         <para>
+            If a caller has no transaction or batch associated with it, modifications are replicated immediately.  E.g.
+            in the example used earlier, 100 messages would be broadcast for each modification. In this sense, running without
+            a batch or transaction can be thought of as analogous as running with auto-commit switched on in JDBC terminology,
+            where each operation is committed automatically and immediately.
+         </para>
+
+         <para>
+            JBoss Cache works out of the box with most popular transaction managers, and even provides an API where
+            custom transaction manager lookups can be written.
+         </para>
+
+         <para>
+            All of the above holds true for batches as well, which has similar behavior.
+         </para>
+      </section>
+
+
+      <section>
+         <title>Thread safety</title>
+         <para>
+            The cache is completely thread-safe. It employs multi-versioned concurrency control (MVCC) to ensure thread
+            safety between readers and writers, while maintaining a high degree of concurrency.  The specific MVCC implementation
+            used in JBoss Cache allows for reader threads to be completely free of locks and synchronized blocks, ensuring a very high
+            degree of performance for read-heavy applications.  It also uses custom, highly performant lock implementations
+            that employ modern compare-and-swap techniques for writer threads, which are tuned to multi-core CPU architectures.
+         </para>
+         <para>
+            Multi-versioned concurrency control (MVCC) is the default locking scheme since JBoss Cache 3.x.
+            Optimistic and pessimistic locking schemes from older versions of JBoss Cache are still available but are
+            deprecated in favor of MVCC, and will be removed in future releases.  Use of these deprecated locking
+            schemes are strongly discouraged.
+         </para>
+         <para>
+            The JBoss Cache MVCC implementation only supports READ_COMMITTED and REPEATABLE_READ isolation levels, corresponding
+            to their database equivalents.  See the section on <link linkend="transactions">transactions and concurrency</link> for details on MVCC.
+         </para>
+      </section>
+   </section>
+
+   <section>
+      <title>
+         Requirements
+      </title>
+      <para>
+         JBoss Cache requires a Java 5.0 (or newer) compatible virtual machine and set of libraries, and is developed
+         and tested on Sun's JDK 5.0 and JDK 6.
+      </para>
+      <para>
+         There is a way to build JBoss Cache as a Java 1.4.x compatible binary using
+         <ulink url="http://www.jboss.org/community/docs/DOC-10738">JBossRetro</ulink>
+         to retroweave the Java 5.0 binaries. However, Red Hat Inc. does not offer professional support around the
+         retroweaved
+         binary at this time and the Java 1.4.x compatible binary is not in the binary distribution. See
+         <ulink url="http://www.jboss.org/community/docs/DOC-10263">this wiki</ulink>
+         page for
+         details on building the retroweaved binary for yourself.
+      </para>
+      <para>
+         In addition to Java 5.0, at a minimum, JBoss Cache has dependencies on
+         <ulink url="http://www.jgroups.org">JGroups</ulink>, and Apache's
+         <ulink url="http://jakarta.apache.org/commons/logging/">commons-logging</ulink>. JBoss Cache ships with all
+         dependent libraries necessary to run out of the box, as well as several optional jars for optional features.
+      </para>
+   </section>
+
+   <section>
+      <title>License</title>
+      <para>
+         JBoss Cache is an open source project, using the business and OEM-friendly
+         <ulink url="http://www.opensource.org/">OSI-approved</ulink>
+         <ulink url="http://www.gnu.org/copyleft/lesser.html">LGPL license.</ulink>
+         Commercial development support, production support and training for JBoss Cache is available through
+         <ulink url="http://www.jboss.com">JBoss, a division of Red Hat Inc.</ulink>
+      </para>
+   </section>
+</chapter>

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/jmx_reference.xml
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/jmx_reference.xml	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/jmx_reference.xml	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,327 @@
+<chapter id="jmx_reference">
+   <title>JMX References</title>
+   <section id="jmx_reference.statistics">
+      <title>JBoss Cache Statistics</title>
+      <para>
+         There is a whole wealth of information being gathered and exposed on to JMX for monitoring the cache.  Some
+         of these are detailed below:
+      </para>
+      <table>
+         <title>JBoss Cache JMX MBeans</title>
+         <tgroup cols="3">
+            <thead>
+               <row>
+                  <entry>MBean</entry>
+                  <entry>Attribute/Operation Name</entry>
+                  <entry>Description</entry>
+               </row>
+            </thead>
+            <tbody>
+               <row>
+                  <entry>DataContainerImpl</entry>
+                  <entry>getNumberOfAttributes()</entry>
+                  <entry>Returns the number of attributes in all nodes in the data container</entry>
+               </row>
+               <row>
+                  <entry></entry>
+                  <entry>getNumberOfNodes()</entry>
+                  <entry>Returns the number of nodes in the data container</entry>
+               </row>
+               <row>
+                  <entry></entry>
+                  <entry>printDetails()</entry>
+                  <entry>Prints details of the data container</entry>
+               </row>
+
+               <row>
+                  <entry>RPCManagerImpl</entry>
+                  <entry>localAddressString</entry>
+                  <entry>String representation of the local address</entry>
+               </row>
+               <row>
+                  <entry></entry>
+                  <entry>membersString</entry>
+                  <entry>String representation of the cluster view</entry>
+               </row>
+               <row>
+                  <entry></entry>
+                  <entry>statisticsEnabled</entry>
+                  <entry>Whether RPC statistics are being gathered</entry>
+               </row>
+               <row>
+                  <entry></entry>
+                  <entry>replicationCount</entry>
+                  <entry>Number of successful replications</entry>
+               </row>
+               <row>
+                  <entry></entry>
+                  <entry>replicationFailures</entry>
+                  <entry>Number of failed replications</entry>
+               </row>
+               <row>
+                  <entry></entry>
+                  <entry>successRatio</entry>
+                  <entry>RPC call success ratio</entry>
+               </row>
+
+               <row>
+                  <entry>RegionManagerImpl</entry>
+                  <entry>dumpRegions()</entry>
+                  <entry>Dumps a String representation of all registered regions, including eviction regions depicting their event queue sizes</entry>
+               </row>
+               <row>
+                  <entry></entry>
+                  <entry>numRegions</entry>
+                  <entry>Number of registered regions</entry>
+               </row>
+               <row>
+                  <entry>BuddyManager</entry>
+                  <entry>buddyGroup</entry>
+                  <entry>A String representation of the cache's buddy group</entry>
+               </row>
+               <row>
+                  <entry></entry>
+                  <entry>buddyGroupsIParticipateIn</entry>
+                  <entry>String representations of all buddy groups the cache participates in</entry>
+               </row>
+               <row>
+                  <entry>TransactionTable</entry>
+                  <entry>numberOfRegisteredTransactions</entry>
+                  <entry>The number of registered, ongoing transactions</entry>
+               </row>
+               <row>
+                  <entry></entry>
+                  <entry>transactionMap</entry>
+                  <entry>A String representation of all currently registered transactions mapped to internal GlobalTransaction instances</entry>
+               </row>
+
+               <row>
+                  <entry>MVCCLockManager</entry>
+                  <entry>concurrencyLevel</entry>
+                  <entry>The configured concurrency level</entry>
+               </row>
+               <row>
+                  <entry></entry>
+                  <entry>numberOfLocksAvailable</entry>
+                  <entry>Number of locks in the shared lock pool that are not used</entry>
+               </row>
+               <row>
+                  <entry></entry>
+                  <entry>numberOfLocksHeld</entry>
+                  <entry>Number of locks in the shared lock pool that are in use</entry>
+               </row>
+               <row>
+                  <entry></entry>
+                  <entry>testHashing(String fqn)</entry>
+                  <entry>Tests the spreading of locks across Fqns. For a given (String based) Fqn, this method returns the index in the lock array that it maps to.</entry>
+               </row>
+               <row>
+                                <entry>ActivationInterceptor</entry>
+                                <entry>Activations</entry>
+                                <entry>Number of passivated nodes that have been activated.</entry>
+                             </row>
+                             <row>
+                                <entry>CacheLoaderInterceptor</entry>
+                                <entry>CacheLoaderLoads</entry>
+                                <entry>Number of nodes loaded through a cache loader.</entry>
+                             </row>
+                             <row>
+                                <entry></entry>
+                                <entry>CacheLoaderMisses</entry>
+                                <entry>Number of unsuccessful attempts to load a node through a cache loader.</entry>
+                             </row>
+                             <row>
+                                <entry>CacheMgmtInterceptor</entry>
+                                <entry>Hits</entry>
+                                <entry>Number of successful attribute retrievals.</entry>
+                             </row>
+                             <row>
+                                <entry></entry>
+                                <entry>Misses</entry>
+                                <entry>Number of unsuccessful attribute retrievals.</entry>
+                             </row>
+                             <row>
+                                <entry></entry>
+                                <entry>Stores</entry>
+                                <entry>Number of attribute store operations.</entry>
+                             </row>
+                             <row>
+                                <entry></entry>
+                                <entry>Evictions</entry>
+                                <entry>Number of node evictions.</entry>
+                             </row>
+                             <row>
+                                <entry></entry>
+                                <entry>NumberOfAttributes</entry>
+                                <entry>Number of attributes currently cached.</entry>
+                             </row>
+                             <row>
+                                <entry></entry>
+                                <entry>NumberOfNodes</entry>
+                                <entry>Number of nodes currently cached.</entry>
+                             </row>
+                             <row>
+                                <entry></entry>
+                                <entry>ElapsedTime</entry>
+                                <entry>Number of seconds that the cache has been running.</entry>
+                             </row>
+                             <row>
+                                <entry></entry>
+                                <entry>TimeSinceReset</entry>
+                                <entry>Number of seconds since the cache statistics have been reset.</entry>
+                             </row>
+                             <row>
+                                <entry></entry>
+                                <entry>AverageReadTime</entry>
+                                <entry>Average time in milliseconds to retrieve a cache attribute, including unsuccessful
+                                   attribute retrievals.
+                                </entry>
+                             </row>
+                             <row>
+                                <entry></entry>
+                                <entry>AverageWriteTime</entry>
+                                <entry>Average time in milliseconds to write a cache attribute.</entry>
+                             </row>
+                             <row>
+                                <entry></entry>
+                                <entry>HitMissRatio</entry>
+                                <entry>Ratio of hits to hits and misses. A hit is a get attribute operation that results in an object
+                                   being
+                                   returned to the client. The retrieval may be from a cache loader if the entry isn't in the local
+                                   cache.
+                                </entry>
+                             </row>
+                             <row>
+                                <entry></entry>
+                                <entry>ReadWriteRatio</entry>
+                                <entry>Ratio of read operations to write operations. This is the ratio of cache hits and misses to
+                                   cache stores.
+                                </entry>
+                             </row>
+                             <row>
+                                <entry>CacheStoreInterceptor</entry>
+                                <entry>CacheLoaderStores</entry>
+                                <entry>Number of nodes written to the cache loader.</entry>
+                             </row>
+                             <row>
+                                <entry>InvalidationInterceptor</entry>
+                                <entry>Invalidations</entry>
+                                <entry>Number of cached nodes that have been invalidated.</entry>
+                             </row>
+                             <row>
+                                <entry>PassivationInterceptor</entry>
+                                <entry>Passivations</entry>
+                                <entry>Number of cached nodes that have been passivated.</entry>
+                             </row>
+                             <row>
+                                <entry>TxInterceptor</entry>
+                                <entry>Prepares</entry>
+                                <entry>Number of transaction prepare operations performed by this interceptor.</entry>
+                             </row>
+                             <row>
+                                <entry></entry>
+                                <entry>Commits</entry>
+                                <entry>Number of transaction commit operations performed by this interceptor.</entry>
+                             </row>
+                             <row>
+                                <entry></entry>
+                                <entry>Rollbacks</entry>
+                                <entry>Number of transaction rollbacks operations performed by this interceptor.</entry>
+                             </row>
+                             <row>
+                                <entry></entry>
+                                <entry>numberOfSyncsRegistered</entry>
+                                <entry>Number of synchronizations registered with the transaction manager pending completion and removal.</entry>
+                             </row>
+
+
+            </tbody>
+         </tgroup>
+      </table>
+   </section>
+
+   <section id="jmx_reference.notifications">
+      <title>JMX MBean Notifications</title>
+      <para>The following table depicts the JMX notifications available for JBoss Cache as well as the cache events to
+         which they correspond. These are the notifications that can be received through the
+         <literal>CacheJmxWrapper</literal>
+         MBean.
+         Each notification represents a single event published by JBoss Cache and provides user data corresponding to
+         the parameters of the event.
+      </para>
+      <table>
+         <title>JBoss Cache MBean Notifications</title>
+         <tgroup cols="3">
+            <thead>
+               <row>
+                  <entry>Notification Type</entry>
+                  <entry>Notification Data</entry>
+                  <entry>CacheListener Event</entry>
+               </row>
+            </thead>
+            <tbody>
+               <row>
+                  <entry>org.jboss.cache.CacheStarted</entry>
+                  <entry>String: cache service name</entry>
+                  <entry>@CacheStarted</entry>
+               </row>
+               <row>
+                  <entry>org.jboss.cache.CacheStopped</entry>
+                  <entry>String: cache service name</entry>
+                  <entry>@CacheStopped</entry>
+               </row>
+               <row>
+                  <entry>org.jboss.cache.NodeCreated</entry>
+                  <entry>String: fqn, boolean: isPre, boolean: isOriginLocal</entry>
+                  <entry>@NodeCreated</entry>
+               </row>
+               <row>
+                  <entry>org.jboss.cache.NodeEvicted</entry>
+                  <entry>String: fqn, boolean: isPre, boolean: isOriginLocal</entry>
+                  <entry>@NodeEvicted</entry>
+               </row>
+               <row>
+                  <entry>org.jboss.cache.NodeLoaded</entry>
+                  <entry>String: fqn, boolean: isPre</entry>
+                  <entry>@NodeLoaded</entry>
+               </row>
+               <row>
+                  <entry>org.jboss.cache.NodeModifed</entry>
+                  <entry>String: fqn, boolean: isPre, boolean: isOriginLocal</entry>
+                  <entry>@NodeModifed</entry>
+               </row>
+               <row>
+                  <entry>org.jboss.cache.NodeRemoved</entry>
+                  <entry>String: fqn, boolean: isPre, boolean: isOriginLocal</entry>
+                  <entry>@NodeRemoved</entry>
+               </row>
+               <row>
+                  <entry>org.jboss.cache.NodeVisited</entry>
+                  <entry>String: fqn, boolean: isPre</entry>
+                  <entry>@NodeVisited</entry>
+               </row>
+               <row>
+                  <entry>org.jboss.cache.ViewChanged</entry>
+                  <entry>String: view</entry>
+                  <entry>@ViewChanged</entry>
+               </row>
+               <row>
+                  <entry>org.jboss.cache.NodeActivated</entry>
+                  <entry>String: fqn</entry>
+                  <entry>@NodeActivated</entry>
+               </row>
+               <row>
+                  <entry>org.jboss.cache.NodeMoved</entry>
+                  <entry>String: fromFqn, String: toFqn, boolean: isPre</entry>
+                  <entry>@NodeMoved</entry>
+               </row>
+               <row>
+                  <entry>org.jboss.cache.NodePassivated</entry>
+                  <entry>String: fqn</entry>
+                  <entry>@NodePassivated</entry>
+               </row>
+            </tbody>
+         </tgroup>
+      </table>
+   </section>
+</chapter>
\ No newline at end of file

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/master.xml
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/master.xml	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/master.xml	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3CR3//EN"
+      "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+      <!ENTITY preface SYSTEM "modules/preface.xml">
+      <!ENTITY introduction SYSTEM "modules/introduction.xml">
+      <!ENTITY architecture SYSTEM "modules/architecture.xml">
+      <!ENTITY basic_api SYSTEM "modules/basic_api.xml">
+      <!ENTITY replication SYSTEM "modules/replication.xml">
+      <!ENTITY transactions SYSTEM "modules/transactions.xml">
+      <!ENTITY eviction_policies SYSTEM "modules/eviction_policies.xml">
+      <!ENTITY cache_loaders SYSTEM "modules/cache_loaders.xml">
+      <!ENTITY compatibility SYSTEM "modules/compatibility.xml">
+      <!ENTITY configuration SYSTEM "modules/configuration.xml">
+      <!ENTITY deployment SYSTEM "modules/deployment.xml">
+      <!ENTITY configuration_reference SYSTEM "modules/configuration_reference.xml">
+      <!ENTITY jmx_reference SYSTEM "modules/jmx_reference.xml">
+      <!ENTITY batching SYSTEM "modules/batching.xml">
+      ]>
+<book lang="en">
+   <bookinfo>
+      <title>JBoss Cache Users' Guide</title>
+      <subtitle>A clustered, transactional cache</subtitle>
+
+      <!-- Release version and date -->
+      <releaseinfo>Release 3.1.0 Cascabel</releaseinfo>
+      <pubdate>April 2009</pubdate>
+
+      <!-- Authors/contributors -->
+      <author>
+         <firstname>Manik</firstname>
+         <surname>Surtani</surname>
+         <email>manik AT jboss DOT org</email>
+      </author>
+
+      <author>
+         <firstname>Brian</firstname>
+         <surname>Stansberry</surname>
+         <email>brian DOT stansberry AT jboss DOT com</email>
+      </author>
+
+      <author>
+         <firstname>Galder</firstname>
+         <surname>Zamarreño</surname>
+         <email>galder DOT zamarreno AT jboss DOT com</email>
+      </author>
+
+      <author>
+         <firstname>Mircea</firstname>
+         <surname>Markus</surname>
+         <email>mircea DOT markus AT jboss DOT com</email>
+      </author>
+
+      <!-- copyright info -->
+      <copyright>
+         <year>2004</year>
+         <year>2005</year>
+         <year>2006</year>
+         <year>2007</year>
+         <year>2008</year>
+         <year>2009</year>
+         <holder>JBoss, a division of Red Hat Inc., and all authors as named.</holder>
+      </copyright>
+
+   </bookinfo>
+
+   <!-- Adds a table of contents here -->
+   <toc/>
+
+   &preface;
+
+   <part label="I">
+      <title>Introduction to JBoss Cache</title>
+      <partintro>
+         <para>
+            This section covers what developers would need to quickly start using JBoss Cache in their projects. It
+            covers an overview of the concepts and API, configuration and deployment information.
+         </para>
+      </partintro>
+      &introduction;
+      &basic_api;
+      &configuration;
+      &batching;
+      &deployment;
+      &compatibility;
+   </part>
+
+   <part label="II">
+      <title>JBoss Cache Architecture</title>
+      <partintro>
+         <para>
+            This section digs deeper into the JBoss Cache architecture, and is meant for developers wishing to use the more
+            advanced cache features,extend or enhance the cache, write plugins, or are just looking for detailed knowledge
+            of how things work under the hood.
+         </para>
+      </partintro>
+      &architecture;
+      &replication;
+      &cache_loaders;
+      &eviction_policies;
+      &transactions;
+   </part>
+
+   <part label="III">
+      <title>JBoss Cache Configuration References</title>
+      <partintro>
+         <para>
+            This section contains technical references for easy looking up.
+         </para>
+      </partintro>
+
+      &configuration_reference;
+      &jmx_reference;
+   </part>
+</book>
\ No newline at end of file

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/preface.xml
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/preface.xml	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/preface.xml	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,55 @@
+<preface id="preface">
+   <title>Preface</title>
+
+   <para>
+      This is the official JBoss Cache Users' Guide. Along with its accompanying documents (an FAQ, a tutorial and a
+      whole set of documents on POJO Cache), this is freely available on the JBoss Cache <ulink url="http://www.jboss.org/jbosscache">documentation website</ulink>.
+   </para>
+   <para>
+      When used, JBoss Cache refers to JBoss Cache Core, a tree-structured, clustered, transactional cache.
+      POJO Cache, also a part of the JBoss Cache distribution, is documented separately. (POJO Cache is a cache that
+      deals with Plain Old Java Objects, complete with object relationships, with the ability to cluster such POJOs
+      while maintaining their relationships. Please see the POJO Cache documentation for more information about this.)
+   </para>
+
+   <para>
+      This book is targeted at developers wishing to use JBoss Cache as either a standalone in-memory cache,
+      a distributed or replicated cache, a clustering library, or an in-memory database.  It is targeted at application
+      developers who wish to use JBoss Cache in their code base, as well as "OEM" developers who wish to build on and
+      extend JBoss Cache features. As such, this book is split into two major sections - one detailing the "User" API
+      and the other going much deeper into specialist topics and the JBoss Cache architecture.
+   </para>
+
+   <para>
+      In general, a good knowledge of the Java programming language along with a strong appreciation and understanding
+      of transactions and concurrent programming is necessary. No prior knowledge of JBoss Application Server is expected
+      or required.
+   </para>
+
+   <para>
+      For further discussion, use the user forum available on the JBoss Cache
+      <ulink url="http://www.jboss.org/jbosscache">website.</ulink>  We also provide a mechanism for
+      tracking bug reports and feature requests on the JBoss Cache <ulink url="http://jira.jboss.com/jira/browse/JBCACHE">JIRA issue tracker</ulink>.
+   </para>
+   <para>
+      If you are interested in the development of JBoss Cache or in translating this documentation into other languages,
+      we'd love to hear from you. Please post a message on the JBoss Cache
+      <ulink url="http://www.jboss.org/jbosscache">user forum</ulink>
+      or contact us by using the JBoss Cache <ulink url="https://lists.jboss.org/mailman/listinfo/jbosscache-dev">developer mailing list</ulink>.
+   </para>
+
+   <para>
+      This book is specifically targeted at the JBoss Cache release of the same version number. It may not apply to
+      older or newer releases of JBoss Cache. It is important that you use the documentation appropriate to the version
+      of JBoss Cache you intend to use.
+   </para>
+
+   <para>
+      I always appreciate feedback, suggestions and corrections, and these should be directed to the
+      <ulink url="https://lists.jboss.org/mailman/listinfo/jbosscache-dev">developer mailing list</ulink> rather than
+      direct emails to any of the authors.  We hope you find this book useful, and wish you happy reading!
+   </para>
+   <para>
+      <emphasis role="bold">Manik Surtani</emphasis>, October 2008
+   </para>
+</preface>
\ No newline at end of file

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/replication.xml
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/replication.xml	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/replication.xml	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,697 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<chapter id="clustering">
+   <title>Cache Modes and Clustering</title>
+
+   <para>This chapter talks about aspects around clustering JBoss Cache.</para>
+
+   <section>
+      <title>Cache Replication Modes</title>
+
+      <para>JBoss Cache can be configured to be either local (standalone) or
+         clustered. If in a cluster, the cache can be configured to replicate
+         changes, or to invalidate changes. A detailed discussion on this
+         follows.
+      </para>
+
+      <section>
+         <title>Local Mode</title>
+
+         <para>Local caches don't join a cluster and don't communicate with other
+            caches in a cluster. The dependency on the
+            JGroups library is still there, although a JGroups channel is not
+            started.
+         </para>
+      </section>
+
+      <section>
+         <title>Replicated Caches</title>
+
+         <para>Replicated caches replicate all changes to some or all of the other cache
+            instances in the cluster. Replication can either happen after each
+            modification (no transactions or batches), or at the end of a transaction or batch.
+         </para>
+
+         <para>Replication can be synchronous or asynchronous. Use of either one
+            of the options is application dependent. Synchronous replication blocks
+            the caller (e.g. on a
+            <literal>put()</literal>
+            ) until the modifications
+            have been replicated successfully to all nodes in a cluster.
+            Asynchronous replication performs replication in the background (the
+            <literal>put()</literal>
+            returns immediately). JBoss Cache also offers a
+            replication queue, where modifications are replicated periodically (i.e.
+            interval-based), or when the queue size exceeds a number of elements, or
+            a combination thereof.  A replication queue can therefore offer much higher performance as the actual
+            replication is performed by a background thread.
+         </para>
+
+         <para>Asynchronous replication is faster (no caller blocking), because
+            synchronous replication requires acknowledgments from all nodes in a
+            cluster that they received and applied the modification successfully
+            (round-trip time). However, when a synchronous replication returns
+            successfully, the caller knows for sure that all modifications have been
+            applied to all cache instances, whereas this is not be the case with asynchronous
+            replication. With asynchronous replication, errors are simply written to
+            a log. Even when using transactions, a transaction may succeed but
+            replication may not succeed on all cache instances.
+         </para>
+
+         <section id="replication.tx">
+            <title>Replicated Caches and Transactions</title>
+
+            <para>When using transactions, replication only occurs at the
+               transaction boundary - i.e., when a transaction commits. This results
+               in minimizing replication traffic since a single modification is
+               broadcast rather than a series of individual modifications, and can be
+               a lot more efficient than not using transactions. Another effect of
+               this is that if a transaction were to roll back, nothing is broadcast
+               across a cluster.
+            </para>
+
+            <para>Depending on whether you are running your cluster in
+               asynchronous or synchronous mode, JBoss Cache will use either a single
+               phase or
+               <ulink
+                     url="http://en.wikipedia.org/wiki/Two-phase_commit_protocol">two phase
+                  commit
+               </ulink>
+               protocol, respectively.
+            </para>
+
+            <section>
+               <title>One Phase Commits</title>
+
+               <para>Used when your cache mode is REPL_ASYNC. All modifications are
+                  replicated in a single call, which instructs remote caches to apply
+                  the changes to their local in-memory state and commit locally.
+                  Remote errors/rollbacks are never fed back to the originator of the
+                  transaction since the communication is asynchronous.
+               </para>
+            </section>
+
+            <section>
+               <title>Two Phase Commits</title>
+
+               <para>Used when your cache mode is REPL_SYNC. Upon committing your
+                  transaction, JBoss Cache broadcasts a prepare call, which carries
+                  all modifications relevant to the transaction. Remote caches then
+                  acquire local locks on their in-memory state and apply the
+                  modifications. Once all remote caches respond to the prepare call,
+                  the originator of the transaction broadcasts a commit. This
+                  instructs all remote caches to commit their data. If any of the
+                  caches fail to respond to the prepare phase, the originator
+                  broadcasts a rollback.
+               </para>
+
+               <para>Note that although the prepare phase is synchronous, the
+                  commit and rollback phases are asynchronous. This is because
+                  <ulink
+                        url="http://java.sun.com/products/jta/">Sun's JTA
+                     specification
+                  </ulink>
+                  does not specify how transactional resources
+                  should deal with failures at this stage of a transaction; and other
+                  resources participating in the transaction may have indeterminate
+                  state anyway. As such, we do away with the overhead of synchronous
+                  communication for this phase of the transaction. That said, they can
+                  be forced to be synchronous using the
+                  <literal>SyncCommitPhase</literal>
+                  and
+                  <literal>SyncRollbackPhase</literal>
+                  configuration
+                  attributes.
+               </para>
+            </section>
+         </section>
+
+         <section id="br">
+            <title>Buddy Replication</title>
+
+            <para>Buddy Replication allows you to suppress replicating your data
+               to all instances in a cluster. Instead, each instance picks one or
+               more 'buddies' in the cluster, and only replicates to these specific
+               buddies. This greatly helps scalability as there is no longer a memory
+               and network traffic impact every time another instance is added to a
+               cluster.
+            </para>
+
+            <para>One of the most common use cases of Buddy Replication is when a
+               replicated cache is used by a servlet container to store HTTP session
+               data. One of the pre-requisites to buddy replication working well and
+               being a real benefit is the use of
+               <emphasis>session
+                  affinity
+               </emphasis>
+               , more casually known as
+               <emphasis>sticky
+                  sessions
+               </emphasis>
+               in HTTP session replication speak. What this means
+               is that if certain data is frequently accessed, it is desirable that
+               this is always accessed on one instance rather than in a round-robin
+               fashion as this helps the cache cluster optimize how it chooses
+               buddies, where it stores data, and minimizes replication
+               traffic.
+            </para>
+
+            <para>If this is not possible, Buddy Replication may prove to be more
+               of an overhead than a benefit.
+            </para>
+
+            <section>
+               <title>Selecting Buddies</title>
+
+               <figure>
+                  <title>BuddyLocator</title>
+
+                  <mediaobject>
+                     <imageobject>
+                        <imagedata fileref="BuddyReplication.png"/>
+                     </imageobject>
+                  </mediaobject>
+               </figure>
+
+               <para>Buddy Replication uses an instance of a
+                  <literal>BuddyLocator</literal>
+                  which contains the logic used to
+                  select buddies in a network. JBoss Cache currently ships with a
+                  single implementation,
+                  <literal>NextMemberBuddyLocator</literal>
+                  ,
+                  which is used as a default if no implementation is provided. The
+                  <literal>NextMemberBuddyLocator</literal>
+                  selects the next member in
+                  the cluster, as the name suggests, and guarantees an even spread of
+                  buddies for each instance.
+               </para>
+
+               <para>The
+                  <literal>NextMemberBuddyLocator</literal>
+                  takes in 2
+                  parameters, both optional.
+                  <itemizedlist>
+                     <listitem>
+
+
+                        <literal>numBuddies</literal>
+
+                        - specifies how many buddies each instance should pick to back its data onto. This defaults to
+                        1.
+                     </listitem>
+
+                     <listitem>
+
+
+                        <literal>ignoreColocatedBuddies</literal>
+
+                        - means that each instance will
+
+                        <emphasis>try</emphasis>
+
+                        to select a buddy on a different physical host. If not able to do so though, it will fall back
+                        to co-located instances. This defaults to
+
+                        <literal>true</literal>
+
+                        .
+                     </listitem>
+                  </itemizedlist>
+               </para>
+            </section>
+
+            <section>
+               <title>BuddyPools</title>
+
+               <para>Also known as
+                  <emphasis>replication groups</emphasis>
+                  , a buddy
+                  pool is an optional construct where each instance in a cluster may
+                  be configured with a buddy pool name. Think of this as an 'exclusive
+                  club membership' where when selecting buddies,
+                  <literal>BuddyLocator</literal>
+                  s that support buddy pools would try
+                  and select buddies sharing the same buddy pool name. This allows
+                  system administrators a degree of flexibility and control over how
+                  buddies are selected. For example, a sysadmin may put two instances
+                  on two separate physical servers that may be on two separate
+                  physical racks in the same buddy pool. So rather than picking an
+                  instance on a different host on the same rack,
+                  <literal>BuddyLocator</literal>
+                  s would rather pick the instance in
+                  the same buddy pool, on a separate rack which may add a degree of
+                  redundancy.
+               </para>
+            </section>
+
+            <section>
+               <title>Failover</title>
+
+               <para>In the unfortunate event of an instance crashing, it is
+                  assumed that the client connecting to the cache (directly or
+                  indirectly, via some other service such as HTTP session replication)
+                  is able to redirect the request to any other random cache instance
+                  in the cluster. This is where a concept of Data Gravitation comes
+                  in.
+               </para>
+
+               <para>Data Gravitation is a concept where if a request is made on a
+                  cache in the cluster and the cache does not contain this
+                  information, it asks other instances in the cluster for the
+                  data. In other words, data is lazily transferred, migrating
+                  <emphasis>only</emphasis>
+                  when other nodes ask for it. This strategy
+                  prevents a network storm effect where lots of data is pushed around
+                  healthy nodes because only one (or a few) of them die.
+               </para>
+
+               <para>If the data is not found in the primary section of some node,
+                  it would (optionally) ask other instances to check in the backup
+                  data they store for other caches.
+                  This means that even if a cache containing your session dies, other
+                  instances will still be able to access this data by asking the cluster
+                  to search through their backups for this data.
+               </para>
+
+               <para>Once located, this data is transferred to the instance
+                  which requested it and is added to this instance's data tree.
+                  The data is then (optionally) removed from all other instances
+                  (and backups) so that if session affinity is used, the affinity
+                  should now be to this new cache instance which has just
+                  <emphasis>taken
+                     ownership
+                  </emphasis>
+                  of this data.
+               </para>
+
+               <para>Data Gravitation is implemented as an interceptor. The
+                  following (all optional) configuration properties pertain to data
+                  gravitation.
+                  <itemizedlist>
+                     <listitem>
+
+
+                        <literal>dataGravitationRemoveOnFind</literal>
+
+                        - forces all remote caches that own the data or hold backups for the data to remove that data,
+                        thereby making the requesting cache the new data owner. This removal, of course, only happens
+                        after the new owner finishes replicating data to its buddy. If set to
+
+                        <literal>false</literal>
+
+                        an evict is broadcast instead of a remove, so any state persisted in cache loaders will remain.
+                        This is useful if you have a shared cache loader configured. Defaults to
+
+                        <literal>true</literal>
+
+                        .
+                     </listitem>
+
+                     <listitem>
+
+
+                        <literal>dataGravitationSearchBackupTrees</literal>
+
+                        - Asks remote instances to search through their backups as well as main data trees. Defaults to
+
+                        <literal>true</literal>
+
+                        . The resulting effect is that if this is
+
+                        <literal>true</literal>
+
+                        then backup nodes can respond to data gravitation requests in addition to data owners.
+                     </listitem>
+
+                     <listitem>
+
+
+                        <literal>autoDataGravitation</literal>
+
+                        - Whether data gravitation occurs for every cache miss. By default this is set to
+
+                        <literal>false</literal>
+
+                        to prevent unnecessary network calls. Most use cases will know when it may need to gravitate
+                        data and will pass in an
+
+                        <literal>Option</literal>
+
+                        to enable data gravitation on a per-invocation basis. If
+
+                        <literal>autoDataGravitation</literal>
+
+                        is
+
+                        <literal>true</literal>
+
+                        this
+
+                        <literal>Option</literal>
+
+                        is unnecessary.
+                     </listitem>
+                  </itemizedlist>
+               </para>
+            </section>
+
+            <section>
+               <title>Configuration</title>
+
+               See the <link linkend="configuration_reference_chapter">configuration reference section</link> for details on configuring buddy replication.
+               </section>
+         </section>
+      </section>
+   </section>
+
+   <section>
+      <title>Invalidation</title>
+
+      <para>If a cache is configured for invalidation rather than replication,
+         every time data is changed in a cache other caches in the cluster receive
+         a message informing them that their data is now stale and should be
+         evicted from memory. Invalidation, when used with a shared cache loader
+         (see chapter on <link linkend="cache_loaders">cache loaders</link>) would cause remote caches to refer to the
+         shared cache loader to retrieve modified data. The benefit of this is
+         twofold: network traffic is minimized as invalidation messages are very
+         small compared to replicating updated data, and also that other caches in
+         the cluster look up modified data in a lazy manner, only when
+         needed.
+      </para>
+
+      <para>Invalidation messages are sent after each modification (no
+         transactions or batches), or at the end of a transaction or batch, upon successful commit.
+         This is usually more efficient as invalidation messages can be optimized
+         for the transaction as a whole rather than on a per-modification
+         basis.
+      </para>
+
+      <para>Invalidation too can be synchronous or asynchronous, and just as in
+         the case of replication, synchronous invalidation blocks until all caches
+         in the cluster receive invalidation messages and have evicted stale data
+         while asynchronous invalidation works in a 'fire-and-forget' mode, where
+         invalidation messages are broadcast but doesn't block and wait for
+         responses.
+      </para>
+   </section>
+
+   <section>
+      <title>State Transfer</title>
+
+      <para>
+         <emphasis>State Transfer</emphasis>
+         refers to the process by which a
+         JBoss Cache instance prepares itself to begin providing a service by
+         acquiring the current state from another cache instance and integrating
+         that state into its own state.
+      </para>
+
+      <section>
+         <title>State Transfer Types</title>
+
+         <para>There are three divisions of state transfer types depending on a
+            point of view related to state transfer. First, in the context of
+            particular state transfer implementation, the underlying plumbing, there
+            are two starkly different state transfer types: byte array and streaming
+            based state transfer. Second, state transfer can be full or partial
+            state transfer depending on a subtree being transferred. Entire cache
+            tree transfer represents full transfer while transfer of a particular
+            subtree represents partial state transfer. And finally state transfer
+            can be "in-memory" and "persistent" transfer depending on a particular
+            use of cache.
+         </para>
+      </section>
+
+      <section>
+         <title>Byte array and streaming based state transfer</title>
+
+         <para>Byte array based transfer was a default and only transfer
+            methodology for cache in all previous releases up to 2.0. Byte array
+            based transfer loads entire state transferred into a byte array and
+            sends it to a state receiving member. Major limitation of this approach
+            is that the state transfer that is very large (&gt;1GB) would likely
+            result in OutOfMemoryException. Streaming state transfer provides an
+            InputStream to a state reader and an OutputStream to a state writer.
+            OutputStream and InputStream abstractions enable state transfer in byte
+            chunks thus resulting in smaller memory requirements. For example, if
+            application state is represented as a tree whose aggregate size is 1GB,
+            rather than having to provide a 1GB byte array streaming state transfer
+            transfers the state in chunks of N bytes where N is user
+            configurable.
+         </para>
+
+         <para>Byte array and streaming based state transfer are completely API
+            transparent, interchangeable, and statically configured through a
+            standard cache configuration XML file. Refer to JGroups documentation on
+            how to change from one type of transfer to another.
+         </para>
+      </section>
+
+      <section>
+         <title>Full and partial state transfer</title>
+
+         <para>If either in-memory or persistent state transfer is enabled, a
+            full or partial state transfer will be done at various times, depending
+            on how the cache is used. "Full" state transfer refers to the transfer
+            of the state related to the entire tree -- i.e. the root node and all
+            nodes below it. A "partial" state transfer is one where just a portion
+            of the tree is transferred -- i.e. a node at a given Fqn and all nodes
+            below it.
+         </para>
+
+         <para>If either in-memory or persistent state transfer is enabled, state
+            transfer will occur at the following times:
+         </para>
+
+         <orderedlist>
+            <listitem>
+               <para>Initial state transfer. This occurs when the cache is first
+                  started (as part of the processing of the
+                  <literal>start()</literal>
+                  method). This is a full state transfer. The state is retrieved from
+                  the cache instance that has been operational the longest.
+                  <footnote>
+                     <para>The longest operating cache instance is always, in JGroups
+                        terms, the coordinator.
+                     </para>
+                  </footnote>
+                  If there is any problem receiving or integrating the state, the cache
+                  will not start.
+               </para>
+
+               <para>Initial state transfer will occur unless:</para>
+
+               <orderedlist>
+                  <listitem>
+                     <para>The cache's
+                        <literal>InactiveOnStartup</literal>
+                        property
+                        is
+                        <literal>true</literal>
+                        . This property is used in
+                        conjunction with region-based marshalling.
+                     </para>
+                  </listitem>
+
+                  <listitem>
+                     <para>Buddy replication is used. See below for more on state
+                        transfer with buddy replication.
+                     </para>
+                  </listitem>
+               </orderedlist>
+            </listitem>
+
+            <listitem>
+               <para>Partial state transfer following region activation. When
+                  region-based marshalling is used, the application needs to register
+                  a specific class loader with the cache. This class loader is used
+                  to unmarshall the state for a specific region (subtree) of the cache.
+               </para>
+
+               <para>After registration, the application calls
+                  <literal>cache.getRegion(fqn, true).activate()</literal>
+                  ,
+                  which initiates a partial state transfer of the relevant subtree's
+                  state. The request is first made to the oldest cache instance in the
+                  cluster. However, if that instance responds with no state, it is then
+                  requested from each instance in turn until one either provides state
+                  or all instances have been queried.
+               </para>
+
+               <para>Typically when region-based marshalling is used, the cache's
+                  <literal>InactiveOnStartup</literal>
+                  property is set to
+                  <literal>true</literal>
+                  . This suppresses initial state transfer,
+                  which would fail due to the inability to deserialize the transferred
+                  state.
+               </para>
+            </listitem>
+
+            <listitem>
+               <para>Buddy replication. When buddy replication is used, initial
+                  state transfer is disabled. Instead, when a cache instance joins the
+                  cluster, it becomes the buddy of one or more other instances, and
+                  one or more other instances become its buddy. Each time an instance
+                  determines it has a new buddy providing backup for it, it pushes
+                  its current state to the new buddy. This "pushing" of state to the
+                  new buddy is slightly different from other forms of state transfer,
+                  which are based on a "pull" approach (i.e. recipient asks for and
+                  receives state). However, the process of preparing and integrating
+                  the state is the same.
+               </para>
+
+               <para>This "push" of state upon buddy group formation only occurs if
+                  the
+                  <literal>InactiveOnStartup</literal>
+                  property is set to
+                  <literal>false</literal>
+                  . If it is
+                  <literal>true</literal>
+                  , state
+                  transfer amongst the buddies only occurs when the application
+                  activates the region on the various members of the group.
+               </para>
+
+               <para>Partial state transfer following a region activation call is
+                  slightly different in the buddy replication case as well. Instead of
+                  requesting the partial state from one cache instance, and trying all
+                  instances until one responds, with buddy replication the instance
+                  that is activating a region will request partial state from each
+                  instance for which it is serving as a backup.
+               </para>
+            </listitem>
+         </orderedlist>
+      </section>
+
+      <section>
+         <title>Transient ("in-memory") and persistent state transfer</title>
+
+         <para>The state that is acquired and integrated can consist of two basic
+            types:
+         </para>
+
+         <orderedlist>
+            <listitem>
+               <para>"Transient" or "in-memory" state. This consists of the actual
+                  in-memory state of another cache instance - the contents of the
+                  various in-memory nodes in the cache that is providing state are
+                  serialized and transferred; the recipient deserializes the data,
+                  creates corresponding nodes in its own in-memory tree, and populates
+                  them with the transferred data.
+               </para>
+
+               <para>"In-memory" state transfer is enabled by setting the cache's
+                  <literal>FetchInMemoryState</literal>
+                  configuration attribute to
+                  <literal>true</literal>
+                  .
+               </para>
+            </listitem>
+
+            <listitem>
+               <para>"Persistent" state. Only applicable if a non-shared cache
+                  loader is used. The state stored in the state-provider cache's
+                  persistent store is deserialized and transferred; the recipient
+                  passes the data to its own cache loader, which persists it to the
+                  recipient's persistent store.
+               </para>
+
+               <para>"Persistent" state transfer is enabled by setting a cache
+                  loader's
+                  <literal>fetchPersistentState</literal>
+                  attribute to
+                  <literal>true</literal>
+                  . If multiple cache loaders are configured
+                  in a chain, only one can have this property set to true; otherwise
+                  you will get an exception at startup.
+               </para>
+
+               <para>Persistent state transfer with a shared cache loader does not
+                  make sense, as the same persistent store that provides the data will
+                  just end up receiving it. Therefore, if a shared cache loader is
+                  used, the cache will not allow a persistent state transfer even if a
+                  cache loader has
+                  <literal>fetchPersistentState</literal>
+                  set to
+                  <literal>true</literal>
+                  .
+               </para>
+            </listitem>
+         </orderedlist>
+
+         <para>Which of these types of state transfer is appropriate depends on
+            the usage of the cache.
+         </para>
+
+         <orderedlist>
+            <listitem>
+               <para>If a write-through cache loader is used, the current cache
+                  state is fully represented by the persistent state. Data may have
+                  been evicted from the in-memory state, but it will still be in the
+                  persistent store. In this case, if the cache loader is not shared,
+                  persistent state transfer is used to ensure the new cache has the
+                  correct state. In-memory state can be transferred as well if the
+                  desire is to have a "hot" cache -- one that has all relevant data in
+                  memory when the cache begins providing service. (Note that the
+                  <literal><![CDATA[<preload>]]></literal>
+                  element in the
+                  <literal><![CDATA[<loaders>]]></literal>
+                  configuration element can be used as well to
+                  provide a "warm" or "hot" cache without requiring an in-memory state
+                  transfer. This approach somewhat reduces the burden on the cache
+                  instance providing state, but increases the load on the persistent
+                  store on the recipient side.)
+               </para>
+            </listitem>
+
+            <listitem>
+               <para>If a cache loader is used with passivation, the full
+                  representation of the state can only be obtained by combining the
+                  in-memory (i.e. non-passivated) and persistent (i.e. passivated)
+                  states. Therefore an in-memory state transfer is necessary. A
+                  persistent state transfer is necessary if the cache loader is not
+                  shared.
+               </para>
+            </listitem>
+
+            <listitem>
+               <para>If no cache loader is used and the cache is solely a
+                  write-aside cache (i.e. one that is used to cache data that can also
+                  be found in a persistent store, e.g. a database), whether or not
+                  in-memory state should be transferred depends on whether or not a
+                  "hot" cache is desired.
+               </para>
+            </listitem>
+         </orderedlist>
+      </section>
+
+      <section>
+          <title>Non-Blocking State Transfer</title>
+          <para>
+              New in JBoss Cache 3.1.0, Non-Blocking State Transfer (NBST) allows senders to generate and stream state while
+              not stopping handling their "work as usual" transactions.  This is particularly important if there is a large
+              volume of state, where generation and streaming of the state can take some time and can cause ongoing
+              transactions on the sender to time out and fail.
+          </para>
+          <para>
+              To achieve this, NBST should be enabled (see
+              configuration reference), and you need to be using MVCC as a node locking scheme.  In addition, you need to
+              use JGroups' STREAMING_STATE_TRANSFER protocol in your cluster properties.
+          </para>
+      </section>
+
+      <section>
+         <title>Configuring State Transfer</title>
+         <para>
+            To ensure state transfer behaves as expected, it is important that all nodes in the cluster are configured
+            with
+            the same settings for persistent and transient state. This is because byte array based transfers, when
+            requested,
+            rely only on the requester's configuration while stream based transfers rely on both the requester and
+            sender's
+            configuration, and this is expected to be identical.
+         </para>
+      </section>
+   </section>
+</chapter>

Added: enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/transactions.xml
===================================================================
--- enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/transactions.xml	                        (rev 0)
+++ enterprise-docs/tags/JBoss_EAP_5_0_0/Cache_User_Guide/en-US/transactions.xml	2009-08-03 23:55:06 UTC (rev 8146)
@@ -0,0 +1,234 @@
+<chapter id="transactions">
+   <title>Transactions and Concurrency</title>
+   <section id="transactions.concurrent">
+      <title>Concurrent Access</title>
+
+      <para>JBoss Cache is a thread safe caching API, and uses its own efficient mechanisms of controlling concurrent
+         access. It uses an innovative implementation of multi-versioned concurrency control
+         (<ulink url="http://en.wikipedia.org/wiki/Multiversion_concurrency_control">MVCC</ulink>) as the default
+         locking scheme.  Versions of JBoss Cache prior to 3.x offered Optimistic and Pessimistic Locking schemes,
+         both of which are now deprecated in favor of MVCC.
+      </para>
+
+      <section id="transactions.locks.mvcc">
+         <title>Multi-Version Concurrency Control (MVCC)</title>
+         <para>
+            <ulink url="http://en.wikipedia.org/wiki/Multiversion_concurrency_control">MVCC</ulink> is a locking scheme
+            commonly used by modern database implementations to control fast, safe concurrent access to shared data.
+         </para>
+         <section id="mvcc.concepts">
+            <title>MVCC Concepts</title>
+            <para>
+               MVCC is designed to provide the following features for concurrent access:
+               <itemizedlist>
+                  <listitem>Readers that don't block writers</listitem>
+                  <listitem>Writers that fail fast</listitem>
+               </itemizedlist>
+               and achieves this by using data versioning and copying for concurrent writers.  The theory is that readers
+               continue reading shared state, while writers copy the shared state, increment a version id, and write that
+               shared state back after verifying that the version is still valid (i.e., another concurrent writer has not
+               changed this state first).
+            </para>
+            <para>
+               This allows readers to continue reading while not preventing writers from writing, and repeatable read
+               semantics are maintained by allowing readers to read off the old version of the state.
+            </para>
+         </section>
+         <section id="mvcc.impl">
+            <title>MVCC Implementation</title>
+            <para>
+               JBoss Cache's implementation of MVCC is based on a few features:
+               <itemizedlist>
+                  <listitem>Readers don't acquire any locks</listitem>
+                  <listitem>Only one additional version is maintained for shared state, for a single writer</listitem>
+                  <listitem>All writes happen sequentially, to provide fail-fast semantics</listitem>
+               </itemizedlist>
+               The extremely high performance of JBoss Cache's MVCC implementation for reading threads is achieved by
+               not requiring any synchronization or locking for readers.  For each reader thread, the
+               <literal>MVCCLockingInterceptor</literal> wraps state in a lightweight container object, which is placed
+               in the thread's <literal>InvocationContext</literal> (or <literal>TransactionContext</literal> if running
+               in a transaction).  All subsequent operations on the state happens via the container object.  This use of
+               Java references allows for repeatable read semantics even if the actual state changes simultaneously.
+            </para>
+            <para>
+               Writer threads, on the other hand, need to acquire a lock before any writing can commence.  Currently,
+               we use lock striping to improve the memory performance of the cache, and the size of the shared lock pool
+               can be tuned using the <literal>concurrencyLevel</literal> attribute of the <literal>locking</literal>
+               element.  See the <link linkend="configuration_reference_chapter">configuration reference</link>
+               for details.  After acquiring an exclusive lock on an Fqn, the writer thread then wraps the state to be
+               modified in a container as well, just like with reader threads, and then copies this state for writing.
+               When copying, a reference to the original version is still maintained in the container (for rollbacks).
+               Changes are then made to the copy and the copy is finally written to the data structure when the write
+               completes.
+            </para>
+            <para>
+               This way, subsequent readers see the new version while existing readers still hold a reference to the
+               original version in their context.
+            </para>
+            <para>
+               If a writer is unable to acquire the write lock after some time, a <literal>TimeoutException</literal> is
+               thrown.  This lock acquisition timeout defaults to 10000 millis and can be configured using the
+               <literal>lockAcquisitionTimeout</literal> attribute of the <literal>locking</literal> element.  See the 
+               <link linkend="configuration_reference_chapter">configuration reference</link> for details.
+            </para>
+            <section id="mvcc.iso">
+               <title>Isolation Levels</title>
+               <para>
+                  JBoss Cache 3.x supports two isolation levels: REPEATABLE_READ and READ_COMMITTED, which correspond
+                  in semantic to <ulink url="http://en.wikipedia.org/wiki/Isolation_level">database-style isolation levels</ulink>.
+                  Previous versions of JBoss Cache supported all 5 database isolation levels, and if an unsupported
+                  isolation level is configured, it is either upgraded or downgraded to the closest supported level.
+               </para>
+               <para>
+                  REPEATABLE_READ is the default isolation level, to maintain compatibility with previous versions of
+                  JBoss Cache.  READ_COMMITTED, while providing a slightly weaker isolation, has a significant
+                  performance benefit over REPEATABLE_READ.
+               </para>
+            </section>
+            <section id="mvcc.writeskew">
+               <title>Concurrent Writers and Write-Skews</title>
+               <para>
+                  Although MVCC forces writers to obtain a write lock, a phenomenon known as write skews may occur when
+                  using REPEATABLE_READ:
+               </para>
+               <mediaobject>
+                  <imageobject>
+                     <imagedata fileref="writeskew.png" format="PNG"/>
+                  </imageobject>
+               </mediaobject>
+               <para>
+                  This happens when concurrent transactions performing a read and then a write, based on the value that
+                  was read.  Since reads involve holding on to the reference to the state in the
+                  transaction context, a subsequent write would work off that original state read, which may now be stale.
+               </para>
+               <para>
+                  The default behavior with dealing with a write skew is to throw a <literal>DataVersioningException</literal>,
+                  when it is detected when copying state for writing. However, in most applications, a write skew may not
+                  be an issue (for example, if the state written has no relationship to the state originally read) and
+                  should be allowed.  If your application does not care about write skews, you can allow them to happen
+                  by setting the <literal>writeSkewCheck</literal> configuration attribute to <literal>false</literal>.
+                  See the <link linkend="configuration_reference_chapter">configuration reference</link> for details.
+               </para>
+               <para>
+                  Note that write skews cannot happen when using READ_COMMITTED since threads always work off committed
+                  state.
+               </para>
+            </section>
+         </section>
+         <section id="mvcc.cfg">
+            <title>Configuring Locking</title>
+            <para>
+               Configuring MVCC involves using the <literal><![CDATA[<locking /> ]]></literal> configuration tag, as follows:
+            </para>
+               <programlisting role="XML"><![CDATA[
+   <locking
+      isolationLevel="REPEATABLE_READ"
+      lockAcquisitionTimeout="10234"
+      nodeLockingScheme="mvcc"
+      writeSkewCheck="false"
+      concurrencyLevel="1000" />                  
+               ]]></programlisting>
+
+            <para>
+               <itemizedlist>
+                  <listitem><literal>nodeLockingScheme</literal> - the node locking scheme used.  Defaults to MVCC if
+                     not provided, deprecated schemes such as <literal>pessimistic</literal> or <literal>optimistic</literal>
+                     may be used but is not encouraged.</listitem>
+                  <listitem><literal>isolationLevel</literal> - transaction isolation level.  Defaults to REPEATABLE_READ if not provided.</listitem>
+                  <listitem><literal>writeSkewCheck</literal> - defaults to <literal>true</literal> if not provided.</listitem>
+                  <listitem><literal>concurrencyLevel</literal> - defaults to 500 if not provided.</listitem>
+                  <listitem><literal>lockAcquisitionTimeout</literal> - only applies to writers when using MVCC.  Defaults to 10000 if not provided.</listitem>
+               </itemizedlist>
+            </para>
+         </section>
+      </section>
+
+      <section id="transactions.locks.dep">
+         <title>Pessimistic and Optimistic Locking Schemes</title>
+         <para>
+            From JBoss Cache 3.x onwards, pessimistic and optimistic locking schemes are deprecated in favor of
+            <link linkend="transactions.locks.mvcc">MVCC</link>.  It is recommended that existing applications
+            move off these legacy locking schemes as support for them will eventually be dropped altogether in future
+            releases.
+         </para>
+         <para>
+            Documentation for legacy locking schemes are not included in this user guide, and if necessary, can be
+            referenced in previous versions of this document, which can be found on
+            <ulink url="http://www.jboss.org/jbosscache">the JBoss Cache website</ulink>.
+         </para>
+      </section>
+   </section>
+
+
+   <section id="transactions.jta">
+      <title>JTA Support</title>
+
+      <para>JBoss Cache can be configured to use and participate in
+         <ulink url="http://java.sun.com/javaee/technologies/jta/">JTA</ulink> compliant transactions. Alternatively, if
+         transaction support is disabled, it is equivalent to using autocommit in JDBC calls, where
+         modifications are potentially replicated after every change (if replication is enabled).
+      </para>
+
+      <para>What JBoss Cache does on every incoming call is:</para>
+      <orderedlist>
+         <listitem>
+            <para>Retrieve the current
+               <literal>javax.transaction.Transaction</literal> associated with the thread
+            </para>
+         </listitem>
+         <listitem>
+            <para>If not already done, register a
+               <literal>javax.transaction.Synchronization</literal>
+               with the transaction manager to be notified when a transaction commits
+               or is rolled back.
+            </para>
+         </listitem>
+      </orderedlist>
+      <para>
+         In order to do this, the cache has to be provided with a reference to environment's
+         <literal>javax.transaction.TransactionManager</literal>. This is usually done by configuring the cache
+         with the class name of an implementation of the <literal>TransactionManagerLookup</literal>
+         interface. When the cache starts, it will create an instance of this class and invoke its
+         <literal>getTransactionManager()</literal> method, which returns a reference to the
+         <literal>TransactionManager</literal>.
+      </para>
+
+      <mediaobject>
+         <imageobject>
+            <imagedata fileref="TransactionLookup.png" format="PNG"/>
+         </imageobject>
+      </mediaobject>
+
+      <para>JBoss Cache ships with
+         <literal>JBossTransactionManagerLookup</literal> and <literal>GenericTransactionManagerLookup</literal>. The
+         <literal>JBossTransactionManagerLookup</literal> is able to bind to a running JBoss AS instance and retrieve a
+         <literal>TransactionManager</literal> while the <literal>GenericTransactionManagerLookup</literal>
+         is able to bind to most popular Java EE application servers and provide the same functionality. A dummy
+         implementation - <literal>DummyTransactionManagerLookup</literal> - is also provided for unit tests. Being a
+         dummy, this is not recommended for production use a it has some severe limitations to do with concurrent
+         transactions and recovery.
+      </para>
+
+      <para>
+         An alternative to configuring a <literal>TransactionManagerLookup</literal> is to programatically inject a
+         reference to the <literal>TransactionManager</literal> into the <literal>Configuration</literal> object's
+         <literal>RuntimeConfig</literal> element:
+      </para>
+
+      <programlisting role="JAVA"><![CDATA[
+   TransactionManager tm = getTransactionManager(); // magic method
+   cache.getConfiguration().getRuntimeConfig().setTransactionManager(tm);
+      ]]></programlisting>
+
+      <para>
+         Injecting the <literal>TransactionManager</literal> is the recommended approach when the
+         <literal>Configuration</literal> is built by some sort of IOC container that already has a reference to the
+         <literal>TransactionManager</literal>.
+      </para>
+
+      <para>When the transaction commits, we initiate either a one- two-phase commit
+         protocol. See <link linkend="replication.tx">replicated caches and transactions</link> for details.
+      </para>
+
+   </section>
+</chapter>



More information about the jbosscache-commits mailing list