We now use asciidoc for documentation

This commit is contained in:
Jaikiran Pai 2018-03-07 15:52:25 +05:30
parent 1dc8749f6e
commit 0c769150cc
265 changed files with 0 additions and 23819 deletions

3
.gitmodules vendored
View File

@ -1,3 +0,0 @@
[submodule "doc/xooki"]
path = doc/xooki
url = git://git.apache.org/ant-xooki.git

View File

@ -1,165 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 0};</script>
<script type="text/javascript" src="xooki/xooki.js"></script>
</head>
<body>
<textarea id="xooki-source">
The main and most frequent way to use ivy is from an ant build file. However, ivy can also be called as a standalone application
If you use ant version <b>1.6.0</b> or superior, you just have to add ivy namespace to your project (<code>xmlns:ivy="antlib:org.apache.ivy.ant"</code> attribute of your project tag), and you can call ivy tasks.
If you want to make your build handle ivy.jar in either ant lib dir or a local lib dir, you can use a taskdef like this:
<code>
<path id="ivy.lib.path">
<fileset dir="path/to/dir/with/ivy/jar" includes="*.jar"/>
</path>
<taskdef resource="org/apache/ivy/ant/antlib.xml"
uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/>
</code>
Combined with the antlib definition in the project namespace, it will load Ivy classes either from your ant lib or a local directory (path/to/dir/with/ivy/jar in this example).
If you use ant <b>1.5.1</b> or superior, you have to define the tasks you use in your build file. For instance:
<code>
<taskdef name="ivy-configure" classname="org.apache.ivy.ant.IvyConfigure"/>
<taskdef name="ivy-resolve" classname="org.apache.ivy.ant.IvyResolve"/>
<taskdef name="ivy-retrieve" classname="org.apache.ivy.ant.IvyRetrieve"/>
<taskdef name="ivy-deliver" classname="org.apache.ivy.ant.IvyDeliver"/>
<taskdef name="ivy-publish" classname="org.apache.ivy.ant.IvyPublish"/>
</code>
<em>Note: the tasks listed above are non exhaustive. For a complete list of tasks with the corresponding classes, see the [[gitfile:src/java/org/apache/ivy/ant/antlib.xml antlib.xml]] file in git or the version you use.</em>
Then you can use the tasks, but check their name, following samples assume you use the ivy namespace (ivy:xxx tasks), whereas with ant 1.5 you cannot use namespace, and should therefore use ivy-xxx tasks if you have followed the taskdefs above.
If you use an ant version lower than 1.5.1, you can not use the ivy tasks... you should then call ivy as any external program.
<h1>Calling ivy from ant: first steps</h1>
Once your build file is ok to call ivy tasks, the simplest way to use ivy is to call the ivy retrieve task with no parameters:
<code>
<ivy:retrieve />
</code>
This calls ivy with default values, which might be ok in several projects. In fact, it is equivalent to:
<code type="xml">
<target name="resolve">
<ivy:configure />
<ivy:resolve file="${ivy.dep.file}" conf="${ivy.configurations}" />
<ivy:retrieve pattern="${ivy.retrieve.pattern}" conf="${ivy.configurations}" />
</target>
</code>
Those 3 tasks follow the 3 main steps of the ivy retrieving dependencies process:
<ul>
<li>First the configure task tells it how it can find dependencies giving it a path to an <a href="settings.html">xml settings file</a>.</li>
<li>Then the resolve task actually resolves dependencies described by an <a href="ivyfile.html">ivy file</a>, and puts those dependencies in the ivy cache (a directory configured in the settings file).</li>
<li>Finally the retrieve task copies dependencies from the cache to anywhere you want in your file system. You can then use those dependencies to make your classpath with standard ant paths.</li>
</ul>
To understand more accurately the behaviour of ivy tasks, one should know that a property file is loaded in ant by ivy at the beginning of the configure call. This property file contains the following properties:
<code>
ivy.project.dir = ${basedir}
ivy.lib.dir = ${ivy.project.dir}/lib
ivy.build.artifacts.dir = ${ivy.project.dir}/build/artifacts
ivy.distrib.dir = ${ivy.project.dir}/distrib
ivy.resolver.default.check.modified = false
ivy.default.always.check.exact.revision = true
ivy.configurations = *
ivy.resolve.default.type.filter = *
ivy.status = integration
ivy.dep.file = ivy.xml
ivy.settings.file = ivysettings.xml
ivy.retrieve.pattern = ${ivy.lib.dir}/[artifact]-[revision].[ext]
ivy.deliver.ivy.pattern = ${ivy.distrib.dir}/[type]s/[artifact]-[revision].[ext]
ivy.publish.src.artifacts.pattern = ${ivy.distrib.dir}/[type]s/[artifact]-[revision].[ext]
ivy.report.output.pattern = [organisation]-[module]-[conf].[ext]
ivy.buildlist.ivyfilepath = ivy.xml
ivy.checksums=sha1,md5
</code>
<em>For the latest version of these properties, you can check the [[gitfile:src/java/org/apache/ivy/core/settings/ivy.properties git version]].</em>
<span class="since">since 2.0</span> After calling the first Ivy task, the property ivy.version will be available and contains the version of the used Ivy library.
<h1>Ivy tasks attributes : generalities</h1>
Some tasks attributes values may be given through different places. The three possible places are :
<ol>
<li>task attribute</li>
<li>ivy instance</li>
<li>project property</li>
</ol>
The places are queried in this order, so anything set in task attribute will overwrite what would have been found in ivy instance, for example.
The ivy instance considered here is an instance of the class Ivy, which is setup by a call to the configure task, and then reused for other tasks. Because most of the tasks need an ivy instance, they first check if one is available (i.e. configure has been called), and if none is available, then a default configure is called and the resulting ivy instance is used in the remaining tasks (unless another configure is called).
It isn't generally necessary to understand this, but it can lead to some issues if you forget to call configure before another task and if the configure step was required in your environment.
<h1>Usual cycle of main tasks</h1>
<center><img src="images/main-tasks.png" /></center>
<h1>Example</h1>
Here is a more complete example of build file using ivy:
<code type="xml">
<project xmlns:ivy="antlib:org.apache.ivy.ant" name="sample" default="resolve">
<target name="resolve">
<ivy:configure file="../ivysettings.xml" />
<ivy:resolve file="my-ivy.xml" conf="default, myconf" />
</target>
<target name="retrieve-default" depends="resolve">
<ivy:retrieve pattern="lib/default/[artifact]-[revision].[ext]" conf="default" />
</target>
<target name="retrieve-myconf" depends="resolve">
<ivy:retrieve pattern="lib/myconf/[artifact]-[revision].[ext]" conf="myconf" />
</target>
<target name="retrieve-all" depends="resolve">
<ivy:retrieve pattern="lib/[conf]/[artifact]-[revision].[ext]" conf="*" />
</target>
<target name="deliver" depends="retrieve-all">
<ivy:deliver deliverpattern="distrib/[artifact]-[revision].[ext]"
pubrevision="1.1b4" pubdate="20050115123254" status="milestone" />
</target>
<target name="publish" depends="deliver">
<ivy:publish resolver="internal"
artifactspattern="distrib/[artifact]-[revision].[ext]"
pubrevision="1.1b4" />
</target>
</project>
</code>
All ivy tasks are documented in the following pages.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,121 +0,0 @@
= Ivy Proposal =
The following presents the proposal for creating a new Ivy project within the Apache Software Foundation.
== Abstract ==
Ivy (http://www.jayasoft.org/ivy) is a java based tool for tracking, resolving and managing project dependencies.
== Proposal ==
Ivy is a tool for managing (recording, tracking, resolving and reporting) project dependencies. It is characterized by the following:
1) flexibility and configurability - Ivy is essentially process agnostic and is not tied to any methodology or structure. Instead it provides the necessary flexibility and configurability to be adapted to a broad range of dependency management and build processes.
2) tight integration with Apache Ant - while available as a standalone tool, Ivy works particularly well with Apache Ant providing a number of powerful Ant tasks ranging from dependency resolution to dependency reporting and publication.
== Rationale ==
Software development is increasingly characterized by leveraging externally provided components/capabilities and by a rapid release cycle. As a result it is not unusual for a project to depend on numerous third-party components which themselves may be dependent on a multitude of third-party of different or identical third-party components. Managing these dependencies - determining what the dependencies are, how they are used, the impact of a change, conflicts among dependencies, etc. - is extremely difficult and absolutely necessary. Ivy is one of a handful of tools addressing this need. While often compared to Maven - which has similar Ant tasks - Ivy differs from Maven in both its focus and philosophy. Ivy is solely focused on dependency management and is designed from the ground up to adapt to a wide range of requirements and scenarios. Examples include multiple aritfacts per module, plugin resolvers, configurable repository configurations and conflict managers.
The maintainers of Ivy are interested in joining the Apache Software Foundation for several reasons:
* Ivy has been hosted since its beginning in 2004 by a private company, which make people feel like it's a corporate product, thus slowing the contribution by the community. We strongly believe in the open source movement, and would like to make Ivy independent from Jayasoft.
* We'd like to enjoy the benefits of utilizing Apache's infrastructure and legal protection.
* It might open the door for cooperation with other projects, such as Ant or Maven.
* We strongly believe in Apache philosophy, especially Meritocracy.
== Current status ==
=== Meritocracy ===
Ivy was originally created by Xavier Hanin in September 2004. Since then more than 20 users have contributed patches, and one of them has been promoted to the status of committer based on his merit through patch contribution.
=== Community ===
Ivy already has a growing user community, with more than 10,000 downloads since its 1.0 version and more than 500 users registered on the forum.
=== Core Developers ===
Ivy has only two core developers for the moment, but we hope joining the ASF will help increase this number.
Xavier Hanin is the creator of the project, is an independant consultant and co founder of Jayasoft. He has an experience of 9 years in Java software development, uses open source projects intensively, and started his real participation in open source development with Ivy.
Maarten Coene has joined the committer team in may 2006. He has an experience of 9 years in java development, is co-administrator of dom4j, ex-committer for scarab, has contributed patches to several open-source projects and is a user of a lot of open-source projects.
=== Alignment ===
Ivy has no mandatory dependencies except java 1.4. However, it is strongly recommended to be used with Ant. Ivy uses also other Apache projects, especially from Jakarta Commons.
== Known risks ==
=== Orphaned products ===
Due to its small number of committers, there is a risk of being orphaned. The main knowledge of the codebase is still mainly owned by Xavier Hanin. Even if Xavier has no plan to leave Ivy development, this is a problem we are aware of and know that need to be worked on so that the project become less dependent on an individual.
=== Inexperience with Open Source ===
While distributed under an open source license, access to Ivy was initially limited with no public access to the issue tracking system or svn repository. While things have changed since then - the svn repository is publicly accessible, a JIRA instance has been setup since june 2005, many new features are first discussed on the forum or JIRA - experience with a true open source development model is currently limited.
However, Maarten has already a good experience with true open development process, and bring his experience to the project.
=== Homogenous Developers ===
With only two core developers, at least they are not homogenous! Xavier and Maarten knew each other only due to their common interest in Ivy.
=== Reliance on Salaried Developers ===
Maarten is not paid to work on Ivy.
Xavier's case is more complex, as a co founder of Jayasoft, part of his time in Jayasoft was dedicated to Ivy and other open source developments. He now works mainly as an independent consultant, and thus is not a salaried developer.
=== Relationships with Other Apache Products ===
Ivy has a strong relationship with Apache Ant, and is often seen as a good companion of Ant. Being part of Apache could help for a closer collaboration between the two projects.
=== A Excessive Fascination with the Apache Brand ===
Even if we recognize the strong value of the Apache Brand, the purpose of joining Apache is not focused on improving the visibility of the project. The main focus of this proposition is to make Ivy a more open project, with a closer integration with Apache Ant. Even if Ivy does not join the ASF, Ivy will move out of Jayasoft umbrella and try to attract more developers.
== Documentation ==
Further reading on Ivy can be found at:
http://www.jayasoft.org/ivy
== Initial Source ==
The initial code base can be found at:
http://svn.jayasoft.org/projects/tools/ivy
== External Dependencies ==
Ivy has no mandatory dependencies at runtime.
For compilation, it requires:
apache ant
apache commons-httpclient
apache commons-cli
apache oro
apache commons-vfs
jcraft jsch (BSD, already used by commons-vfs and by ant)
== Required Resources ==
=== Mailing lists ===
* ivy-private (with moderated subscriptions)
* ivy-dev
* ivy-user
=== Subversion Directory ===
https://svn.apache.org/repos/asf/incubator/ivy
=== Issue Tracking ===
JIRA Ivy (IVY)
An import from existing JIRA issues at http://jira.jayasoft.org/ would also be very much appreciated
== Initial Committers ==
Xavier Hanin (xavier dot hanin at gmail dot com)
Maarten Coene (maarten_coene at yahoo dot com)
== Affiliations ==
As stated in the Reliance on salaried developers section, Xavier is a co founder of Jayasoft which used to host the project. However, Jayasoft is shifting its focus to local consulting and thus won't be involved anymore in open source development. The participation of Xavier in the project is thus made as an individual, not as a member of Jayasoft. He also strongly believe in the meritocracy principle, and he's ready to see it applied to the project whatever the consequence are for his own weight in the project.
== Sponsors ==
=== Champion ===
Antoine Levy-Lambert
Sylvain Wallez
=== Nominated Mentors ===
Antoine Levy-Lambert
Stephane Baillez
Steve Loughran
=== Sponsoring Entity ===
The Ant PMC has voted the following resolution:
The Ant PMC sponsors Ivy moving to the Apache Incubator.
If the Ivy community wishes to move Ivy to become an Ant subproject
after successful incubation, and if the ASF board agrees to it, Ant
will welcome Ivy as a subproject after the incubation period.

View File

@ -1,107 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 0};</script>
<script type="text/javascript" src="xooki/xooki.js"></script>
</head>
<body>
<textarea id="xooki-source">
Here are some recommendations and best practices we have gathered throughout our experience and consultancies with our customers.
<h1>Add module descriptors for all your modules</h1>
In Ivy world, module descriptors are ivy files, which are basically simple xml files describing both what the module produces as artifacts and its dependencies.
It is a good practice to write or download module descriptors for all the modules involved in your development, even for your third party dependencies, and even if they don't provide such module descriptors themselves.
First, it will seem like extra work and require time. But when you have several modules using the same third party library, then you will only need to add one line to your ivy file to get this library and all its own dependencies that you really need (if you have good module descriptors in your repository, especially with the use of module <a href="concept.html#configurations">configurations</a>). It will also be very helpful when you want to upgrade a dependency. One single change in your module ivy file and you will get the updated version with its updated (or not) dependencies.
Therefore we recommend adding ivy files for all the modules in your repository. You can even enforce this rule by setting the descriptor attribute to required on your <a href="settings/resolvers.html">resolvers</a>. Hence you shouldn't need to use the dependency artifact inclusion/exclusion/specification feature of Ivy, which should only be used in very specific cases.
<h1>Use your own enterprise repository</h1>
This is usually not a valid recommendation for open source projects, but for the enterprise world we strongly suggest to avoid relying on a public repository like maven ibiblio or ivyrep. Why? Well, there are a couple of reasons:
<ul>
<li>control</li> The main problem with these kinds of public repositories is that you don't have control over the repository. This means that if a module descriptor is broken you cannot easily fix it. Sure you can use a chain between a shared repository and the public one and put your fixed module descriptor in the shared repository so that it hides the one on the public repository, but this makes repository browsing and maintenance cumbersome.
Even more problematic is the possible updates of the repository. We know that versions published in such repositories should be stable and not be updated, but we also frequently see that a module descriptor is buggy, or an artifact corrupted. We even see sometimes a new version published with the same name as the preceding one because the previous one was simply badly packaged. This can occur even to the best; it occurred to us with Ivy 1.2 :-) But then we decided to publish the new version with a different name, 1.2a. But if the repository manager allows such updates, this means that what worked before can break. It can thus break your build reproducibility.
<li>reliability</li> The Maven repository is not particularly well known for its reliability (we often experience major slow downs or even complete failures of the site), and ivyrep is only supported by a small company (yes we are only a small company!). So slow down and site hangs occur also. And if the repository you rely on is down, this can cause major slow downs in your development or release process.
<li>accuracy</li> A public repository usually contains much more than what you actually need. Is this a problem? We think so. We think that in an enterprise environment the libraries you use should step through some kind of validation process before being used in every projects of your company. And what better way to do so? Setup an enterprise repository with only the libraries you actually want to use. This will not only ensure better quality for your application dependencies, but help to have the same versions everywhere, and even help when declaring your module dependencies, if you use a tool like IvyDE, the code completion will only show relevant information about your repository, with only the libraries you actually want to see.
<li>security</li> The artifacts you download from a module repository are often executable, and are thus a security concern. Imagine a hacker replacing commons-lang by another version containing a virus? If you rely on a public repository to build your software, you expose it to a security risk. You can read more about that in this <a href="http://www.fortifysoftware.com/servlet/downloads/public/fortify_attacking_the_build.pdf">Forrester article</a>.
</ul>
Note that using an enterprise repository doesn't mean you have to build it entirely by hand. Ivy features an [[ant:install]] task which can be used to install modules from one repository to another one, so it can be used to selectively install modules from a public repository to your enterprise repository, where you will then be able to ensure control, reliability and accuracy.
<h1>Always use patterns with at least organisation and module</h1>
Ivy is very flexible and can accomodate a lot of existing repositories, using the concept of <a href="concept.html#pattern">patterns</a>. But if your repository doesn't exist yet, we strongly recommend always using the organisation and the module name in your pattern, even for a private repository where you put only your own modules (which all have the same organisation). Why? Because the Ivy listing feature relies on the token it can find in the pattern. If you have no organisation token in your pattern, Ivy won't be able to list the (only?) organisation in your repository. And this can be a problem for code completion in IvyDE, for example, but also for repository wide tasks like [[ant:install]] or [[ant:repreport]].
<h1>Public ivysettings.xml with public repositories</h1>
If you create a public repository, provide a URL to the <a href="settings.html">ivysettings.xml</a> file. It's pretty easy to do, and if someone wants to leverage your repository, he will just have to load it with [[ant:settings]] with the URL of your ivysettings.xml file, or <a href="configuration/include.html">include</a> it in its own configuration file, which makes it really easy to combine several public repositories.
<h1>Dealing with integration versions</h1>
Very often, especially when working in a team or with several modules, you will need to rely on intermediate, non-finalized versions of your modules. These versions are what we call integration versions, because their main objective is to be integrated with other modules to make and test an application or a framework.
If you follow the continuous integration paradigm across modules, these integration versions can be produced by a continuous integration server, very frequently.
So, how can you deal with these, possibly numerous, integration versions?
There are basically two ways to deal with them, both ways being supported by Ivy:
<ul>
<li>use a naming convention like a special suffix</li> the idea is pretty simple, each time you publish a new integration of your module you give the same name to the version (in maven world this is for example 1.0-SNAPSHOT). The dependency manager should then be aware that this version is special because it changes over time, so that it does not trust its local cache if it already has the version, but checks the date of the version on the repository and sees if it has changed. In Ivy this is supported using the <a href="ivyfile/dependency.html">changing attribute</a> on a dependency or by configuring the <a href="configuration/resolvers.html">changing pattern</a> to use for all your modules.
<li>automatically create a new version for each</li> in this case you use either a build number or a timestamp to publish each new integration version with a new version name. Then you can use one of the numerous ways in Ivy to <a href="ivyfile/dependency.html">express a version constraint</a>. Usually selecting the very latest one (using 'latest.integration' as version constraint) is enough.
</ul>
So, which way is the best? As often, it depends on your context, and if one of the two was really bad it wouldn't be supported in Ivy :-)
But usually we recommend using the second one, because using a new version each time you publish a new version better fits the version identity paradigm, and can make <b>all</b> your builds reproducible, even integration ones. And this is interesting because it enables, with some work in your build system, the ability to introduce a mechanism to promote an integration build to a more stable status, like a milestone or a release.
Imagine you have a customer who comes on a Monday morning and asks for the latest version of your software, for testing or demonstration purposes. Obviously he needs it for the afternoon :-) Now if you have a continuous integration process and good tracking of your changes and your artifacts, it may occur to you that you are actually able to fulfill his request without needing the use of a DeLorean to give you some more time :-) But it may also occur to you that your latest version is stable enough to be used for the purpose of the customer, but was actually built a few days ago, because the very latest just broke a feature or introduced a new one you don't want to deliver. You can deliver this 'stable' integration build if you want, but rest assured that a few days, or weeks, or even months later, the customer will ask for a bug fix on this demo only version. Why? Because it's a customer, and we all know how they are :-)
So, with a build promotion feature of any build in your repository, the solution would be pretty easy: when the customer asks for the version, you not only deliver the integration build, but you also promote it to a milestone status, for example. This promotion indicates that you should keep track of this version for a long period, to be able to come back to it and create a branch if needed.
Unfortunately Ivy does not by its own allow you to have such reproducible builds out of the box, simply because Ivy is a dependency manager, not a build tool. But if you publish only versions with a distinct name and use Ivy features like versions constraint replacement during the publication or recursive delivery of modules, it can really help.
On the other hand, the main drawback of this solution is that it can produce a lot of intermediate versions, and you will have to run some cleaning scripts in your repository unless your company name starts with a G and ends with oogle :-)
<h1>Inlining dependencies or not?</h1>
With Ivy 1.4 you can resolve a dependency without even writing an ivy file. This pratice is called inlining. But what is it good for, and when should it be avoided?
Putting ivy dependencies in a separate file has the following advantages:
<ul>
<li>separate revision cycle</li> if your dependencies may change more often than your build, it's a good idea to separate the two, to isolate the two concepts: describing how to build / describing your project dependencies
<li>possibility to publish</li> if you describe dependencies of a module which can itself be reused, you may want to use ant to publish it to a repository. In this case the publication is only possible if you have a separate ivy file
<li>more flexible</li> inline dependencies can only be used to express one dependency and only one. An ivy file can be used to express much more complex dependencies
</ul>
On the other hand, using inline dependencies is very useful when:
<ul>
<li>you want to use a custom task in your ant build</li> Without ivy you usually either copy the custom task jar in ant lib, which requires maintenance of your workstation installation, or use a manual copy or download and a taskdef with the appropriate classpath, which is better. But if you have several custom tasks, or if they have themselves dependencies, it can become cumbersome. Using Ivy with an inline dependency is an elegant way to solve this problem.
<li>you want to easily deploy an application</li> If you already build your application and its modules using Ivy, it is really easy to leverage your ivy repository to download your application and all its dependencies on the local filesystem, ready to be executed. If you also put your configuration files as artifacts in your repository (maybee packaged as a zip), the whole installation process can rely on ivy, easing the automatic installation of <b>any</b> version of your application available in your repository!
</ul>
<h1>Hire an expert</h1>
Build and dependency management is often given too low a priority in the software development world. We often see build management implemented by developers when they have time. Even if this may seem like a time and money savings in the short term, it often turns out to be a very bad choice in the long term. Building software is not a simple task, when you want to ensure automatic, tested, fully reproducible builds, releases and installations. On the other hand, once a good build system fitting your very specific needs is setup, it can then only rely on a few people with a good understanding of what is going on, with a constant quality ensured.
Therefore hiring a build and dependency expert to analyse and improve your build and release system is most of the time a very good choice.
<h1>Feedback</h1>
These best practices reflect our own experience, but we do not pretend to own the unique truth about dependency management or even Ivy use.
So feel free to comment on this page to add your own experience feedback, suggestions or opinion.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,51 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 0};</script>
<script type="text/javascript" src="xooki/xooki.js"></script>
</head>
<body>
<textarea id="xooki-source">
<h1>JVM compability</h1>
Up to Ivy 2.3.x, a minimum of Java 1.4 is required.
For Ivy 2.4.0, a minimum of Java 5 is required.
Since Ivy 2.5.0, a minimum of Java 7 is required.
<h1>Apache Ant</h1>
Ivy doesn't require a specific version of Ant as long as the Ant being used complies with the JVM compatibility requirements noted above.
<h1>Other optional dependencies</h1>
The required versions of the Apache HttpClient, Jsch or any optional dependency are to be checked against Ivy's dependency descriptor. In Ivy's source, check for the ivy.xml file at the root. Or the pom.xml of <tt>org.apache.ivy#ivy</tt> in the Maven Central repository.
<h1>Environment / Configuration Requirements</h1>
Ivy does not at this time support multithreaded use. It thus should not be used with the ant <tt>&lt;parallel&gt;</tt> task.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,313 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 0};</script>
<script type="text/javascript" src="xooki/xooki.js"></script>
</head>
<body>
<textarea id="xooki-source">
<h1><a name="dependency-resolver"></a>Dependency Resolver</h1>
A dependency resolver is a pluggable class in ivy which is used to:
<ul>
<li>find dependencies' ivy files</li>
<li>download dependencies' artifacts</li>
</ul>
The notion of artifact "downloading" is large: an artifact can be on a web site, or on the local file system of your machine. The download is thus the act of bring a file from a repository to the ivy cache.
Moreover, the fact that it is the responsibility of the resolver to find ivy files and download artifacts helps to implement various resolving strategies.
As you see, a dependency resolver can be thought of as a class responsible for describing a repository.
If you want to see which resolvers are available in ivy, you can go to the <a href="settings/resolvers.html">resolvers configuration page</a>.
<h1><a name="configurations">Module configurations explained</a></h1>
Module configurations are described in the terminology page as <em>a way to use or construct a module</em>. Configurations being a central part of Ivy, they need more explanations as a concept.
<br/>
When you define a way to use or construct a module, you are able to define which artifacts are published by this module in this configuration, and you are also able to define which dependencies are needed in this configuration.
Moreover, because dependencies in ivy are expressed on modules and not on artifacts, it is important to be able to define which configurations of the dependency are required in the configuration you define of your module. That's what is called <strong>configuration mapping</strong>.
If you use only simple modules and do not want to worry about configurations, you don't have to worry about them. They're still there under the hood because ivy can't work without configurations. But most of the time if you declare nothing, ivy assumes that the artifacts of your module are published in all configurations, and that all the dependencies' configurations are required in all configurations. And it works in simple cases. But whenever you want to separate things within a module, or get more control over things published and get better dependencies resolution, configurations will meet most of your needs.
For details on how to declare your module configurations, how to declare in which configuration your artifacts are published, and how to declare configuration mapping, please refer to <a href="ivyfile.html">ivy file documentation</a>. The <a href="tutorial/conf.html">configurations tutorial</a> is also a good place to go to learn more about this concept.
<h1><a name="variables"></a>Variables</h1>
During configuration, ivy allows you to define what are called ivy variables. Ivy variables can be seen as ant properties, and are used in a very similar way. In particular, you use a properties tag in the configuration file to load a properties file containing ivy variables and their values.
But the main differences between ant properties and ivy variables are that ivy variables can be overridden, whereas ant
properties can't, and that they are defined in separate environments.
Actually all ant properties are imported into ivy variables when the configuration is done (if you call ivy from ant).
This means that if you define an ant property after the call to configure, it will not be available as an ivy variable.
On the other hand, ivy variables are NOT exported to ant, thus if you define ivy variables in ivy, do not try to use them as ant properties.
To use ivy variables, you just have to follow the same syntax as for ant properties:
${<i>variablename</i>}
where <i>variablename</i> is the name of the variable.
Finally, it's also important to be aware of the time of substitution of variables. This substitution is done as soon as possible. This means that when ivy encounters a reference to a variable, it tries to substitute it if such a variable is defined. Consequently, <strong>any later modification of the variable will not alter the value already substituted</strong>.
Moreover, in an ant environment, a bunch of variables are going to be set by default via the ant property file loading mechanism (actually they are first loaded as ant properties and then imported as ivy variables, see [[ant]]), and even in the ant properties themselves there is going to be eager substitution on loading, effectively making it impossible to override some variable purely via the ivysettings.properties file. Some variables will really only be able to be overridden via ant properties because of this.
Moreover, it's also important to understand the difference between ivy variables and ivy pattern tokens.
See the Patterns chapter below for what pattern tokens are.
<h1><a name="patterns"></a>Patterns</h1>
Ivy patterns are used in many dependency resolvers and ivy tasks, and are a simple way to structure the way ivy works.
First let's give an example. You can for instance configure the file system dependency resolver by giving it
a pattern to find artifacts. This pattern can be like this:
myrepository/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]
This pattern indicates that the repository we use is in a directory called myrepository.
In this directory we have directories having for name the name of the organisation of the module we look for.
Then we have a directory per module, each having for name the name of the module.
Then in module directories we find a directory per artifact type (jars, wars, ivys, ...), in which we find artifacts named by the artifact id, followed by a hyphen, then the revision, a dot, and the artifact extension.
Not too difficult to understand is it? That's it, you have understood the pattern concept!
To give a bit more explanation, a pattern is composed of tokens, which are replaced by actual values when evaluated for a particular artifact or module. Those tokens are different from variables because they are replaced differently for each artifact, whereas variables are usually given the same value.
You can mix variables and tokens in a pattern:
${repository.dir}/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]<br/><br/>
The tokens available depends on where the pattern is used (will it be evaluated with artifacts or modules, for instance).
But here are all the tokens currently available:
<ul>
<li>[organisation]</li> the organisation name
<li>[orgPath] <span class="since">(since 2.3)</span></li> the organisation name where '.' has been replaced by '/'. This can be used to configure maven2-like repositories.
<li>[module]</li> the module name
<li>[branch]</li> the branch name
<li>[revision]</li> the revision name
<li>[artifact]</li> the artifact name (or id)
<li>[type]</li> the artifact type
<li>[ext]</li> the artifact file extension
<li>[conf]</li> the configuration name
<li>[originalname] <span class="since">(since 1.4)</span></li> the original artifact name (including the extension)
</ul>
The difference between type and extension is explained in the ivy file documentation.
<span class="since">since 1.2</span> [organization] can be used instead of [organisation].
<span class="since">since 1.3</span> Optional parts can be used in patterns.
This provides the possibility to avoid some input when a token is not defined, instead of having only the token as blank. Parenthesis are used to delimit the optional part, and only one token can be found inside the parenthesis.
So if you surround a token with '(' and ')', any other text which is between the parenthesis will be ignored if the token has no value.
For instance, suppose the pattern: "abc(def[type]ghi)"
type = "jar" -> the substituted pattern: abcdefjarghi
type = null or "" -> the substitued pattern: abc
A more real life example:
The pattern <code>[artifact](-[revision]).[ext]</code> lets you accept both myartifact-1.0.jar when a revision is set, and myartifact.jar (instead of myartifact-.jar) when no revision is set.
This is particularly useful when you need to keep control of artifact names.
<span class="since">since 1.4</span> Extra attributes can be used as any other token in a pattern.
<h1><a name="latest">Latest Strategy</a></h1>
Ivy often needs to know which revision between two is considered the "latest". To know that, it uses the concept of latest strategy. Indeed, there are several ways to consider a revision to be the latest. You can choose an existing one or plug in your own.
But before knowing which revision is the latest, ivy needs to be able to consider several revisions of a module. Thus ivy has to get a list of files in a directory, and it uses the dependency resolver for that. So check if the dependency resolver you use is compatible with latest revisions before wondering why ivy does not manage to get your latest revision.
Finally, in order to get several revisions of a module, most of the time you need to use the [revision] token in your pattern so that ivy gets all the files which match the pattern, whatever the revision is. It's only then that the latest strategy is used to determine which of the revisions is the latest one.
Ivy has three built-in latest strategies:
<ul>
<li>latest-time</li> This compares the revisions date to know which is the latest. While this is often a good strategy in terms of pertinence, it has the drawback of being costly to compute for distant repositories. If you use ivyrep, for example, ivy has to ask the http server what is the date of each ivy file before knowing which is the latest.
<li>latest-revision</li> This compares the revisions as strings, using an algorithm close to the one used in the php version_compare function.
This algorithm takes into account special meanings of some text. For instance, with this strategy, 1.0-dev1 is considered before 1.0-alpha1, which in turn is before 1.0-rc1, which is before 1.0, which is before 1.0.1.
<li>latest-lexico</li> This compares the revisions as strings, using lexicographic order (the one used by the Java string comparison).
</ul>
See also how to configure new latest strategies <a href="settings/latest-strategies.html">here</a>.
<h1><a name="conflict">Conflict Manager</a></h1>
A conflict manager is able to select, among a list of module revisions in conflict, a list of revisions to keep.
Yes, it can select a list of revisions, even if most conflict managers select only one revision.
But in some cases you will need to keep several revisions, and load in separate class loaders, for example.
A list of revisions is said to be in conflict if they correspond to the same module, i.e. the same organisation/module name couple.
The list of available conflict managers is available on the <a href="settings/conflict-managers.html">conflict manager configuration page</a>.
For more details on how to setup your conflict managers by module, see the <a href="ivyfile/conflicts.html">conflicts</a> section in the ivy file reference.
<h1><a name="matcher">Pattern matcher</a></h1>
<span class="since">since 1.3</span>
In several places Ivy uses a pattern to match a set of objects. For instance, you can exclude several modules at once when declaring a dependency by using a pattern matching all the modules to exclude.
Ivy uses a pluggable pattern matcher to match those object names. 3 are defined by default:
<ul>
<li>exact</li>This matcher matches only using strings
<li>regexp</li>This matcher lets you use a regular expression as supported by the Pattern class of java 1.4 or greater
<li>glob</li>This matcher lets you use a Unix-like glob matcher, i.e. where the only meta characters are * which matches any sequence of characters and ? which matches exactly one character. Note that this matcher is available only with jakarta oro 2.0.8 in your classpath.
</ul>
Note also that with any matcher, the character '*' has the special meaning of matching anything. This is particularly useful with default values which do not depend on the matcher.
<h1><a name="extra">Extra attributes</a></h1>
<span class="since">since 1.4</span>
Several tags in ivy xml files are extensible with what is called extra attributes.
The idea is very simple: if you need some more information to define your modules, you can add the attribute you want and you will then be able to access it as any other attribute in your patterns.
<span class="since">since 2.0</span>
It's possible and recommended to use xml namespaces for your extra attributes. Using an Ivy extra namespace is the easiest way to add your own extra attributes.
Example:
Here is an ivy file with the attribute 'color' set to blue:
<code type="xml">
<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra">
<info organisation="apache"
module="foo"
e:color="blue"
status="integration"
revision="1.59"
/>
</ivy-module>
</code>
Then you must use the extra attribute when you declare a dependency on foo. Those extra attributes
will indeed be used as identifiers for the module like the org the name and the revision:
<code>
<dependency org="apache" name="foo" e:color="blue" rev="1.5+" />
</code>
And you can define your repository pattern as:
<code>
${repository.dir}/[organisation]/[module]/[color]/[revision]/[artifact].[ext]
</code>
Note that in patterns you must use the unqualified attribute name (no namespace prefix).
If you don't want to use xml namespaces, it's possible but you will need to disable ivy file validation, since your files won't fulffill anymore the official ivy xsd. See the <a href="settings/settings.html">settings documentation</a> to see how to disable validation.
<h1><a name="checksum">Checksums</a></h1>
<span class="since">since 1.4</span>
Ivy allows the use of checksums, also known as digests, to verify the correctness of a downloaded file.
The configuration of using the algorithm can be done globally or by dependency resolver.
Globally, use the ivy.checksums variable to list the check to be done.
On each resolver you can use the checksums attribute to override the global setting.
The setting is a comma separated list of checksum algorithms to use.
During checking (at download time), the first checksum found is checked, and that's all. This means that if you have a "SHA-256, sha1, md5" setting, then if ivy finds a SHA-256 file, it will compare the downloaded file SHA-256 against this SHA-256, and if the comparison is ok, it will assume the file is ok. If no SHA-256 file is found, it will look for an sha1 file. If that isn't found, then it checks for md5 and so on. If none is found no checking is done.
During publish, all listed checksum algorithms are computed and uploaded.
By default checksum algorithms are "sha1, md5".
If you want to change this default, you can set the variable ivy.checksums. Hence, to disable checksum validation you just have to set ivy.checksums to "".
<h2>Supported algorithms</h2>
<span class="since">since 1.4</span>
<ul>
<li>md5</li>
<li>sha1</li>
</ul>
<span class="since">since 2.5</span>
Starting 2.5 version, in addition to md5 and sha1, Ivy supports SHA-256, SHA-512 and SHA-384 algorithms, if the Java runtime in which Ivy is running, supports those. For example, Java 6 runtime supports SHA-256 and SHA-512 as standard algorithms. If Ivy 2.5 and later versions are run under Java 6 or higher runtimes, these algorithms are supported by Ivy too.
<h1><a name="event">Events and Triggers</a></h1>
<span class="since">since 1.4</span>
When Ivy performs the dependency resolution and some other tasks, it fires events before and after the most important steps. You can listen to these events using Ivy API, or you can even register a trigger to perform a particular action when a particular event occur.
This is a particularly powerful and flexible feature which allows, for example, you to perform a build of a dependency just before it is resolved, or follow what's happening during the dependency resolution process accuratly, and so on.
For more details about events and triggers, see the <a href="settings/triggers.html">triggers</a> documentation page in the configuration section of this documentation.
<h1><a name="circular">Circular Dependencies</a></h1>
<span class="since">since 1.4</span>
Circular dependencies can be either direct or indirect. For instance, if A depends on A, it's a circular dependency, and if A depends on B which itself depends on A, this is also a circular dependency.
Prior to Ivy 1.4 circular dependencies where causing a failure in Ivy. As of Ivy 1.4, the behaviour of Ivy when it finds a circular dependency is configurable through a circular dependency strategy.
3 built-in strategies are available:
<ul>
<li>ignore</li> circular dependencies are only signaled in verbose messages
<li>warn</li> same as ignore, except that they are signaled as a warning (default)
<li>error</li> halt the dependency resolution when a circular dependency is found
</ul>
See the <a href="settings/settings.html">configuration page</a> to see how to configure the circular dependency strategy you want to use.
<h1>Cache and Change Management</h1>
Ivy heavily relies on local caching to avoid accessing remote repositories too often, thus saving a lot of network bandwidth and time.
<h2><a name="cache">Cache types</a></h2>
An Ivy cache is composed of two different parts:
<ul>
<li>the repository cache</li>
The repository cache is where Ivy stores data downloaded from module repositories, along with some meta information concerning these artifacts, like their original location.
This part of the cache can be shared if you use a well suited [[settings/lock-strategies lock strategy]].
<li>the resolution cache</li>
This part of the cache is used to store resolution data, which is used by Ivy to reuse the results of a resolve process.
This part of the cache is overwritten each time a new resolve is performed, and should never be used by multiple processes at the same time.
</ul>
While there is always only one resolution cache, you can [[settings/caches define multiple repository caches]], each [[settings/resolvers resolver]] being able to use a separate cache.
<h2><a name="change">Change management</a></h2>
To optimize the dependency resolution and the way the cache is used, Ivy assumes by default that a revision never changes. So once Ivy has a module in its cache (metadata and artifacts), it trusts the cache and does not even query the repository. This optimization is very useful in most cases, and causes no problem as long as you respect this paradigm: a revision never changes. Besides performance, there are several [[bestpractices good reasons]] to follow this principle.
However, depending on your current build system and your dependency management strategy, you may prefer to update your modules sometimes. There are two kinds of changes to consider:
<h3>Changes in module metadata</h3>
Since pretty often module metadata are not considered by module providers with as much attention as their API or behavior (if they even provide module metadata), it happens more than we would like that we have to update module metadata: a dependency has been forgotten, or another one is missing, ...
In this case, setting checkModified="true" on your dependency resolver will be the solution. This flag tells Ivy to check if module metadata has been modified compared to the cache. Ivy first checks the metadata last modified timestamp on the repository to download it only if necessary, and then updates it when needed.
<h3>Changes in artifacts</h3>
Some people, especially those coming from maven 2 land, like to use one special revision to handle often updated modules. In maven 2 this is called a SNAPSHOT version, and some argue that it helps save disk space to keep only one version for the high number of intermediary builds you can make whilst developing.
Ivy supports this kind of approach with the notion of "changing revision". A changing revision is just that: a revision for which Ivy should consider that the artifacts may change over time. To handle this, you can either specify a dependency as changing on the [[ivyfile/dependency]] tag, or use the changingPattern and changingMatcher attributes on your [[settings/resolvers]] to indicate which revision or group of revisions should be considered as changing.
Once Ivy knows that a revision is changing, it will follow this principle to avoid checking your repository too often: if the module metadata has not changed, it will considered the whole module (including artifacts) as not changed. Even if the module descriptor file has changed, it will check the publication data of the module to see if this is a new publication of the same revision or not. Then if the publication date has changed, it will check the artifacts' last modified timestamps, and download them accordingly.
So if you want to use changing revisions, use the [[ant:publish]] task to publish your modules, it will take care of updating the publication date, and everything will work fine. And remember to set checkModified=true" on your resolver too!
<h1><a name="paths">Paths handling</a></h1>
As a dependency manager, Ivy has a lot of file related operations, which most of the time use paths or path patterns to locate the file on the filesystem.
These paths can obviously be relative or absolute. We recommend to always use absolute paths, so that you don't have to worry about what is the base of your relative paths. Ivy provides some variables which can be used as the base of your absolute paths. For instance, Ivy has a concept of base directory, which is basically the same as for Ant. You have access to this base directory with the ivy.basedir variable. So if you have a path like <code>${ivy.basedir}/ivy.xml</code>, you have an absolute path. In [[settings settings files]], you also have a variable called ivy.settings.dir which points to the directory in which your settings file is located, which makes defining paths relative to this directory very easy.
If you really want to use relative paths, the base directory used to actually locate the file depends on where the relative path is defined:
<ul>
<li>In an Ivy file, paths are relative to the Ivy file itself (the only possible path in an Ivy file is for configurations declaration inclusion)</li>
<li>In settings files, paths for file inclusion (namely properties file loading and settings inclusion) are relative to the directory in which the settings file is located. All other paths must be absolute unless explicitly noted.</li>
<li>In Ivy Ant tasks and Ivy parameters or options, paths are relative to Ivy base directory, which when called from Ant is the same as your Ant basedir.</li>
</ul>
<h1><a name="packaging">Packaging</a></h1>
Most of the artifacts found in a repository are jars. They can be downoaded and used as is. But some other kind of artifacts required some <i>unpacking</i> after being downloaded and before being used. Such artifacts can be zipped folders and packed jars. Ivy supports that kind of artifact with <b>packaging</b>.
A <i>packaged</i> artifact needs to be declared as such in the module descriptor via the attribute <a href="ivyfile/artifact.html">packaging</a>. The value of that attribute defined which kind of unpacking algorithm must be used. Here are the list of currently supported algorithms:
<ul>
<li><tt>zip</tt>, <tt>jar</tt> or <tt>war</tt>: the artifact will be uncompressed as a folder</li>
<li><tt>pack200</tt>: the artifact will be unpacked to a file via the <a href="http://docs.oracle.com/javase/7/docs/technotes/tools/share/pack200.html">pack200</a> algorithm</li>
<li><tt>bundle</tt>: the OSGi artifact will be uncompressed as a folder, and every embedded jar file entry which is packed via the the <a href="http://docs.oracle.com/javase/7/docs/technotes/tools/share/pack200.html">pack200</a> algorithm will be unpacked</li>
</ul>
So, if in an <tt>ivy.xml</tt>, there would be declared a such artifact:
<code>
<artifact name="mymodule" type="jar" ext="jar.pack.gz" packaging="pack200" />
</code>
A file <tt>mymodule-1.2.3.jar.pack.gz</tt> would be download into the cache, and also uncompressed in the cache to <tt>mymodule-1.2.3.jar</tt>. Then any post resolve task which supports it, like the <a href="use/cachepath.html">cachepath</a>, will use the uncompressed file instead of the orginal compressed file.
It is possible to chain packing algorithm. The attribute <a href="ivyfile/artifact.html">packaging</a> of a artifact expects a comma separated list of packing types, in packing order. For instance, an artifact '<tt>mymodule-1.2.3.jar.pack.gz</tt>' can have the packaging '<tt>jar,pack200</tt>', so it would be uncompressed as a folder '<tt>mymodule-1.2.3</tt>'.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,8 +0,0 @@
xooki.util.mix({debug:true,
jira: {ids: ['IVY'], url: 'https://issues.apache.org/jira'},
shortcuts: {
gitdir: {pre: 'https://git-wip-us.apache.org/repos/asf?p=ant-ivy.git;a=tree;f='},
gitfile: {pre: 'https://git-wip-us.apache.org/repos/asf?p=ant-ivy.git;a=blob;f='},
ant: {pre: xooki.c.relativeRoot+'use/', post:'.html'}
}
}, xooki.c, false);

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 0};</script>
<script type="text/javascript" src="xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=settings.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="settings.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../settings/caches.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../settings/caches.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 2};</script>
<script type="text/javascript" src="../../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../../settings/caches/cache.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../../settings/caches/cache.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 2};</script>
<script type="text/javascript" src="../../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../../settings/caches/ttl.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../../settings/caches/ttl.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../settings/classpath.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../settings/classpath.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../settings/settings.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../settings/settings.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../settings/conflict-managers.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../settings/conflict-managers.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../settings/include.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../settings/include.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../settings/latest-strategies.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../settings/latest-strategies.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../settings/lock-strategies.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../settings/lockstrategies.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../settings/macrodef.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../settings/macrodef.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 2};</script>
<script type="text/javascript" src="../../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../../settings/macrodef/attribute.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../../settings/macrodef/attribute.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../settings/module.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../settings/module.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../settings/modules.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../settings/modules.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../settings/namespace.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../settings/namespace.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 2};</script>
<script type="text/javascript" src="../../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../../settings/namespace/dest.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../../settings/namespace/dest.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 2};</script>
<script type="text/javascript" src="../../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../../settings/namespace/fromtosystem.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../../settings/namespace/fromtosystem.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 2};</script>
<script type="text/javascript" src="../../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../../settings/namespace/rule.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../../settings/namespace/rule.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 2};</script>
<script type="text/javascript" src="../../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../../settings/namespace/src.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../../settings/namespace/src.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../settings/namespaces.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../settings/namespaces.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../settings/outputters.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../settings/outputters.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../settings/parsers.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../settings/parsers.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../settings/properties.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../settings/properties.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../settings/property.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../settings/property.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../settings/resolvers.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../settings/resolvers.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../settings/status.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../settings/status.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../settings/statuses.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../settings/statuses.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../settings/triggers.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../settings/triggers.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../settings/typedef.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../settings/typedef.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
<meta HTTP-EQUIV="REFRESH" content="3; url=../settings/version-matchers.html">
</head>
<body>
<textarea id="xooki-source">
This page has moved. If your browser doesn't automatically redirect to its new location, click
<a href="../settings/version-matchers.html">here</a>.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,115 +0,0 @@
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
Here are some explanations about the conflict management algorithm in Ivy.<br/><br/>
First, one should have a good understanding on how Ivy resolves dependencies, and especially
transitive dependencies.<br/><br/>
During the resolve process, ivy visits each module of the dependency graph. <br/>
Let's call each module a <b>node</b>, including the module we are trying to resolve dependencies for.<br/><br/>
Each node should be able to give a conflict manager for a particular ModuleId.<br/>
Let's name it <b>node.cm(mid)</b>.<br/><br/>
Each node should be able to matain a map from ModuleId to a resolved Collection of nodes.<br/>
This resolved collection will never contain any evicted node FOR the concerned node as far
as ivy knows, dependening on where it is in graph visit.<br/>
Let's call this map resolved, and the corresponding resolved collection <b>node.resolved(mid)</b>.<br/><br/>
During the visit, ivy should always know from which node it came to visit another node. Let's call
the first node from which ivy came <b>node.parent</b>. Note that this concept is slightly different from
node parent, since a node can have several parents in the graph, but there is also one <b>node.parent</b>
during the visit.<br/><br/>
Let's say that a conflict manager is able to filter a collection of nodes to return only those
that are not evicted. Let's call that <b>cm.resolveConflicts(collection)</b>.<br/><br/>
Let's call <b>node.dependencies</b> the collection of direct dependencies of a node.<br/><br/>
Let's call <b>node.revision</b> the module revision id of a node.<br/><br/>
And now for the algo. This algo attempts to evict nodes on the fly, i.e. during the ivy visit,
to minimize the number of resolved modules, and thus the number of ivy files to download.<br/><br/>
It is presented in a very simplified description language, far away from the whole real complexity,
but giving a good understanding of how it works. In particular, it completely hides some complexity due
to configurations management.<br/><br/>
<pre>
resolve(node) {
node.resolved(node.mid) = <i>collection</i>(node);
resolveConflict(node, node.parent, empty);
if (!node.evicted && !node.alreadyResolved) {
node.loadData();
resolveConflict(node, node.parent, empty);
if (!node.evicted) {
// actually do resolve
foreach (dep in node.dependencies) {
resolve(dep);
}
}
}
}
resolveConflict(node, parent, toevict) {
if (node.revision.exact && parent.resolved(node.mid).revision.contains(node.revision)) {
// exact revision already in resolved
// => job already done
return;
}
if (parent.resolved(node.mid).containsAny(toevict)) {
// parent.resolved(node.mid) is not up to date:
// recompute resolved from all sub nodes
resolved = parent.cm(node.mid).resolveConflicts(
parent.dependencies.resolved(node.mid));
} else {
resolved = parent.cm(node.mid).resolveConflicts(<i>collection</i>(node, parent.resolved(node.mid)));
}
if (resolved.contains(node)) {
// node has been selected for the current parent
// we update its eviction... but it can still be evicted by parent !
node.evicted = false;
// handle previously selected nodes that are now evicted by this new node
toevict = parent.resolved(node.mid) - resolved;
foreach (te in toevict) {
te.evicted = true;
}
// it's very important to update resolved BEFORE recompute parent call
// to allow it to recompute its resolved collection with correct data
// if necessary
parent.resolved(node.mid) = resolved;
if (parent.parent != null) {
resolveConflict(node, parent.parent, toevict);
}
} else {
// node has been evicted for the current parent
// it's time to update parent resolved with found resolved...
// if they have not been recomputed, it does not change anything
parent.resolved(node.mid) = resolved;
node.evicted = true;
}
}
</pre>
</html>

View File

@ -1,102 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 0};</script>
<script type="text/javascript" src="xooki/xooki.js"></script>
</head>
<body>
<textarea id="xooki-source">
<h1>Building from source</h1>
To build Ivy from source it's really easy.
<h2>Requirements</h2>
All you need is
<ul>
<li>an <a href="http://subversion.tigris.org/">svn</a> client</li>
<em>to check out Ivy sources from apache svn, not required if you build from sources packaged in a release</em>
<li><a href="http://ant.apache.org/">Apache Ant</a> 1.6.0 or greater</li>
<em>We recommend either ant 1.6.5 or 1.7.0</em>
<li><a href="http://junit.org">junit</a> 3.8.2 jar in your ant lib</li>
<em> this is not required if you use ant 1.7</em>
<li>a <a href="http://java.sun.com/">jdk</a> 1.5 or greater</li>
<em>Build instructions have been successfully tested with sun jdk 1.5.0 and 1.6.0</em>
</ul>
<h2>Procedure</h2>
<h3>Get the source</h3>
You can either get the sources from a [[download release]], or get them directly from svn. For instance, to get the trunk version:
<code>
svn co https://svn.apache.org/repos/asf/ant/ivy/core/trunk ivy
</code>
<h3>Build</h3>
Go to the directory where you get the Ivy sources (you should see a file named build.xml) and run:
<code>
ant
</code>
<h3>Check the result</h3>
The ant build will compile the core classes of Ivy and use them to resolve the dependencies (used for some optional features). Then it will compile and run tests with coverage metrics.
If everything goes well, you should see the message
<code>
BUILD SUCCESSFUL
</code>
Then you can check the test results in the build/doc/reports/test directory, the jars are in build/artifacts, and the test coverage report in build/doc/reports/coverage
<h1>Coding conventions</h1>
The Ivy code base is supposed to follow the standard java conventions:
http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html
This is a work in progress though (see IVY-511), but patches helping migration to these conventions are welcome.
<h1>Developing with eclipse</h1>
Even though you can develop Ivy with your IDE of choice, we support eclipse development by providing ad hoc metadata.
We currently provide two options:
<h2>Eclipse alone</h2>
To develop with a simple eclipse install all you need is eclipse 3.1 or greater, with no particular plugin.
First call the following ant target in your Ivy workspace:
<code>
ant eclipse-default
</code>
This will resolve the dependencies of Ivy and produce a .classpath using the resolved jars for the build path.
Then you can use the "Import->Existing project into workspace" eclipse feature to import the Ivy project in your workspace.
<h2>Eclipse + IvyDE</h2>
You can also leverage the latest IvyDE version to be able to easily resolve the ivy dependencies from Eclipse.
To do so all you need is call the following ant target in your Ivy workspace:
<code>
ant eclipse-ivyde
</code>
or if you don't have ant installed you can simply copy the file .classpath.ivyde and rename it to .classpath
Then you can import the project using "Import->Existing project into workspace" as long as you already have latest IvyDE installed.
To install latest IvyDE version compatible with the latest Ivy used to resolve Ivy dependencies, you will need to use a snapshot build, not endorsed by the ASF, available here:
http://people.apache.org/~xavier/ivyde/snapshot/
Download the file and unzip its content in your eclipse installation directory.
<h2>recommended plugins</h2>
The Ivy project comes with settings for the <a href="http://eclipse-cs.sourceforge.net/">checkstyle plugin</a> we recommend to use to avoid introducing new disgression to the checkstyle rules we use.
If you use this plugin, you will many errors in Ivy. As we said, following strict checkstyle rules is a work in progress and we used to have pretty different code conventions (like using _ as prefix for private attributes), so we still have things to fix. We usually use the filter in the problems view to filter out checkstyle errors from this view, which helps to know what the real compilation problem are.
Besides this plugin we also recommend to use a subversion plugin, <a href="http://www.eclipse.org/subversive/">subversive</a> or <a href="http://subclipse.tigris.org">subclipse</a> being the two options currently available in the open source landscape.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,225 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
</head>
<body>
<textarea id="xooki-source">
<h1>Making a release</h1>
<h2>Requirements</h2>
Requirements for making a release are similar to the requirements for building from source, except that JDK 1.6+ and Apache Ant 1.9+ are required.
<h2>Procedure</h2>
<h3>1. Check the files which needs to be updated for the release.</h3>
On the master, check that files which require update for the release are up to date.
This includes particularly:
doc/release-notes.html
<h3>2. Check out a clean copy of the branch</h3>
Run the following git command to checkout the branch, revert any change and remove untracked and ignored files:
<code>
git checkout 2.0.x
git reset --hard
git clean -d -x -f
</code>
<h3>3. Add Ivy xsd file.</h3>
You need to store the current ivy xml schema in the documentation, so that it will later be accessible on public web site. To do so, run the following command in the directory in which you checked out the release branch:
<code>
ant -f build-release.xml release-xsd
</code>
And commit your changes in the branch:
<code>
git add doc/ivy.xsd
git commit -m "release the ivy.xsd"
</code>
<h3>4. Launch the release script</h3>
<code>
ant -f build-release.xml release
</code>
The status should be release only for final releases, and milestone for any other intermediate release.
If the release script is successful, release artifacts will be waiting for you in the build/distrib directory.
<h3>5. Verify the release</h3>
Check that all zips can be opened correctly, and that running 'ant' after unzipping the source distribution works properly.
You can also do a smoke test with the generated ivy.jar, to see if it is able to resolve properly a basic module (for instance you can run some tutorials provided in the src/example directory in all distributions).
<h3>6. Sign the artifacts</h3>
It's now time to sign the release artifacts and upload them to a location accessible by other Apache commiters.
Here is a simple way to sign the files using gnupg:
<code>
gpg --armor --output file.zip.asc --detach-sig file.zip
</code>
Here is a ruby script you can use to sign the files:
<code>
require 'find'
Find.find('build/distrib') do |f|
`gpg --armor --output #{f}.asc --detach-sig #{f}` if File.file?(f) && ['.zip', '.gz', '.jar', '.pom'].include?(File.extname(f))
end
</code>
Be prepared to enter your passphrase several times if you use this script, gpg will ask for your passphrase for each file to sign.
<h3>7. Prepare the Eclipse update site</h3>
To be able to test the release within IvyDE, it can be deployed in the IvyDE update site. See <a href="http://ant.apache.org/ivy/ivyde/history/trunk/dev/updatesite.html">that page</a> to know how to process.
<h3>8. Publish the release candidate</h3>
All artifacts in <tt>build/distrib/dist</tt> needs to be published on the 'dist' svn of the ASF, in the <b>dev</b> part.
The following command lines should do the job:
<code>
svn checkout -N https://dist.apache.org/repos/dist/dev/ant/ivy build/distrib/dist
svn add build/distrib/dist/*
svn commit build/distrib/dist -m 'Ivy 2.4.0 distribution'
</code>
<h3>9. Publish the Maven artifact to Nexus</h3>
Having your GPG key ID, its password, your apache ID and the associated password, just launch ant and enter the information as required:
<code>
ant -f build-release.xml upload-nexus
</code>
Once uploaded, log in https://repository.apache.org/ with your prefered web browser (use your Apache ID).
You should find there an <i>open</i> repository with the name of the form <tt>orgapacheant-XXXX</tt>. It should contain the Maven artifacts: the pom, the jar, the sources, the javadocs and the md5 and asc files.
Now <i>close</i> the staging repository, with the description "Ivy 2.0.0-beta1". Closing means you finished the upload and some automatic checks will run. You can see them in the <i>Activity</i> tab of the repository.
Once the checks passed, you can find in the <i>Summary</i> the URL of the staging repository. It will something like: https://repository.apache.org/content/repositories/orgapacheant-XXXX/
<h3>10. Create a signed tag</h3>
As soon as you are happy with the artifacts to be released, it is time to tag the release
<code>
git tag -s 2.0.0-beta1 -m 'Release Ivy 2.0.0-beta1'
</code>
And push the changes to the ASF repo
<code>
git push --tags
</code>
<h3>11. Call for a vote to approve the release</h3>
Cast a vote to approve the release on the dev@ant.apache.org mailing list.
Here is an example:
<code>
Subject: [VOTE] Ivy ${version} Release
I have built a release candidate for Ivy ${version}
The svn tag of this release is: https://git-wip-us.apache.org/repos/asf?p=ant-ivy.git;a=tag;h=refs/tags/2.0.0-beta1
The artifacts has been published to: https://dist.apache.org/repos/dist/dev/ant/ivy/$VERSION at revision ${svn-rev-of-the-check-in}
The staging maven repository is availble there: https://repository.apache.org/content/repositories/orgapacheant-XXXX
The Eclipse updatesite has been build there: https://dist.apache.org/repos/dist/dev/ant/ivyde/updatesite/ivy-2.0.0.beta1_20141213170938/
Do you vote for the release of these binaries?
[ ] Yes
[ ] No
Regards,
${me}, Ivy ${version} release manager
</code>
<h3>12. Publish the release</h3>
If the release is approved, it's now time to make it public. The artifacts in the <i>dev</i> part needs to be moved into the <i>release</i> one:
<code>
$ svn mv https://dist.apache.org/repos/dist/dev/ant/ivy/$VERSION https://dist.apache.org/repos/dist/release/ant/ivy/$VERSION
</code>
In order to keep the main dist area of a reasonable size, old releases should be removed. They will disapear from the main dist but will still be available via the <a href="http://archive.apache.org/dist/ant/ivy/">archive</a>. To do so, just use the <tt>svn rm</tt> command against the artifacts or folders to remove.
<h3>13. Promote the Maven staging repository</h3>
Go log in https://repository.apache.org/ with your prefered web browser (use your Apache ID).
Select the appropriate <tt>orgapacheant-XXXX</tt> repository and select the <i>Release</i> action.
<h3>14. Update the web site</h3>
It's time to update the download image used on the home page and the download page. Use site/images/ivy-dl.xcf as a basis if you have <a href="http://www.gimp.org/">gimp</a> installed. Then you can update the home page to refer to this image, and add a news item announcing the new version. Update also the download page with the new image and update the links to the download location (using a search/replace on the html source is recommended for this).
The just release documentation should be added to the site. To do so, you need to:
<ol>
<li>edit the toc.json file in the site component of Ivy</li>
and add a piece of json with a title and an url; note that the version in the url must be the same as the tag in the git repo.
<code>
{
"title":"2.0.0-beta1",
"url":"http://ant.apache.org/ivy/history/2.0.0-beta1/index.html"
}
</code>
<li>generate the part of the site for the new version:</li>
<code>
ant checkout-history -Dhistory.version=2.0.0-beta1
ant generate-history -Dhistory.version=2.0.0-beta1
</code>
<li>if the 'latest-milestone' needs to be update too, run:</li>
<code>
ant checkout-history -Dhistory.version=2.0.0-beta1 -Dtarget.history.folder=latest-milestone
</code>
</ol>
Now let's generate the website with the new toc:
<code>
ant /all generate-site
</code>
You should verify that the site generated in the production directory is OK. You can open the files with your prefered web browser like it was deployed.
And once your happy with it, commit the changes in the source directory, and in the production directoy to get it actually deployed via svnpubsub.
Tip: lot's of files might need to be 'added' to svn. An handy command to <tt>add</tt> any file which is not yet under version control is the following one:
<code>svn add --force sources</code>
<h3>15. Deploy the Eclipse updatesite</h3>
If the Eclipse update site has already been prepared to include that new Ivy release, it is now needed to be deployed. Then follow the deployment instruction on <a href="http://ant.apache.org/ivy/ivyde/history/trunk/dev/updatesite.html">that page</a>.
<h3>16. Announce</h3>
Announce the release on the dev@ant.a.o, ivy-user@ant.a.o, user@ant.apache.org and announce@apache.org mailing lists.
You can also announce the release on popular web sites, like freshmeat.net (xavier is the owner of the Ivy project on freshmeat), javalobby.org, theserverside.com, dzone.com, ...
<h3>17. Update this doc</h3>
If you feel like anything is missing or misleading in this release doc, update it as soon as you encounter the problem.
<h3>18. Merge your modifications back to the master if necessary.</h3>
Modifications on the template files do not need to be merged, but if you had troubles during your release you may want to merge your fixes back to the trunk.
<h3>19. Prepare next release</h3>
In the master branch, update the file version.properties with the version of the next release so that anyone building from the trunk will obtain jar with the correct version number.
If the version just release is a final one (not an alpha, beta or rc), the list of changes should be emptied in doc/release-notes.html, and update there the next expected version. The announcement in the file should also be changed accordingly to the next expected version.
Release the version in <a href="https://issues.apache.org/jira/browse/IVY">jira</a>, and create a new unreleased version for the next planned version.</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,55 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 0};</script>
<script type="text/javascript" src="xooki/xooki.js"></script>
</head>
<body>
<textarea id="xooki-source">
Many things are configurable in Ivy, and many things are available with Ivy core. But when you want to do something not built in ivy core, you can still plug your own code.
Many things are pluggable in Ivy:
<ul>
<li>module descriptor parsers</li>
<li>dependency resolvers</li>
<li>lock strategies</li>
<li>latest strategies</li>
<li>circular dependency strategies</li>
<li>conflict managers</li>
<li>report outputters</li>
<li>version matchers</li>
<li>triggers</li>
</ul>
Before trying to implement your own, we encourage you to check if the solution to your problem cannot be addressed by existing features, or by [[links contributed ones]]. Do not hesitate to ask for help on the [[mailing-lists]].
If you still don't find what you need, then you'll have to develop your own plugin or find someone who could do that for you.
All ivy plug-ins use the same code patterns as ant specific tasks for parameters. This means that if you want to have a "myattribute" of type String, you just have to declare a method called setMyattribute(String val) on your plug-in. The same applies to child tags, you just have to follow Ant specifications.
All pluggable code in Ivy is located in the [[gitdir:src/java/org/apache/ivy/plugins org.apache.ivy.plugins]] package. In each package you will find an interface that you must implement to provide a new plugin. We usually also provide an abstract class easing the implementation and making your code more independent of interface changes. We heavily recommend using these abstract classes as a base class.
To understand how your implementation can be done, we suggest looking at existing implementations we provide, it's the best way to get started.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,70 +0,0 @@
- messages
it is quite difficult to know exactly what messages should be output to the console or not, and it often
depends on the user profile: beginner, expert, build manager, simple user, ...
Being able to define the messages output in a single and homogeneous way could be a good thing.
To allow this, maybe a solution could be to output messages in the code only by using keys:
LOGGER.debug("unhandled.revision", mrid.getRevision());
The LOGGER would be a constant initialised with the class name.
a profile wold consist in a message.properties file, associating each key (prefixed by the FQCN) to a
message for the given profile. A key with no mapping result in no message at all.
it would be possible to disable all messages of a class or activate only a certain level per class
(as in log4j for instance) to customize a profile at runtime
shifting is costly, about 400 calls to messages
- promote task to update an already published module with a new status
this task would also automatically update compatiblity data (see below)
- tag task to add one or several tags to an already published module
tag could be added in a simple properties file next to the module ivy file
this properties would be updated by this task
every time ivy parses an ivy file, it would try to locate corresponding tag file,
and if any load tags in the module descriptor instance
- compatiblity data
tags could be used for to indicate that a module has some compatibility level
with another one: if module A 2.0 has been tested successfully with B 1.0 and thus obtain status milestone,
then a tag "compatible.with.A.2.0=milestone" is put on B 1.0
then latest version matcher code could be updated to handle something like this:
latest.compatible.milestone
to be able to get the latest version of a dependency with at least a tag like
compatible.with.A.[any revision]=milestone
since all tags should be inspected to know that, maybe using an xml file like this would be better:
<compatible>
<module org="orga" name="A">
<revision name="2.0" status="milestone"/>
</module>
</compatible>
This would be cleaner, but less simple, and less flexible than using a tags system, which could be used
for other use cases.
Another solution would be to put two tags on B 1.0: one with A revision, and one without. The tag without
the revision could be used for latest.compatible.*, meaning that the last compatiblity status only would
be used. For instance, A 2.0 is said to be release compatible with B 1.0. using latest.compatible.release
is thus resolved to B 1.0. But now A 2.1 is built, and a first test tell that it is (at least) milestone
compatible with B 1.0. The compatibility status of B is thus decreased to milestone, and
latest.compatible.release is not resolved anymore to B 1.0, but maybe B 0.9... at least until the release
compatibility tests are done on A. Then if it is release compatible, the tag is put back to the good status,
and if it isn't compatible, the compatiblity status is left to milestone, which is ok.
Consequently the main problem with this solution is the time before all the tests are run. So maybe a module
should be promoted (and thus compatiblity status updated) only when all tests are done, or when an incompatible
level is reached. Note that this solution is only acceptable in case of automatic tests. When the promotion is
done by a QA team several days or even weeks after the previous status, maybe we can't wait for these tests
to be done...
Another solution would be to promote the module at eeach step, but only update the tag if the compatibility level
is better than the previous one. Another task woudl then allow to indicate an incompatibility, if some level of
tests then fails.
switching between latest compatible and latest version could also be done without any modification in ivy file:
use latest.* dependency revision, and configure your resolve task to use compatible only versions.
this way testing absolute latest version for a continuous integration server would be easy, and if the latest
version fails, latest compatible could be used easily, to test the module in a relative isolation of dependency
changes. In this case the continuous integration server should notify of the first failure before notifying of
the success of the compatible build: integration of latest modules has failed, but not the module itself.
It would thus allow to have more often a latest successful build, even in case of api breaks.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

View File

@ -1,951 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 697.32 518.74" xml:space="preserve" viewBox="0 0 680.49139 191.48885" version="1.1" y="0px" x="0px" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<g transform="translate(.77474 .076835)">
<g stroke="#010101">
<path d="m679.14 164.41c-50.58-12.83-278.12-31.26-340.63-44.1-154.18-31.203-207.09-48.383-338.51-110.78 8.242 13.5 38.485 27.738 51.058 37.347 19.865 10.676 50.899 22.75 68.428 28.635 67.796 22.739 138.83 44.402 211.58 56.294 90.439 14.816 293.15 25.048 348.07 32.605z" stroke-width=".59560" fill="#010101"/>
<linearGradient id="bq" y2="3507.4" gradientUnits="userSpaceOnUse" x2="-3432.7" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3621.6" x1="-3428.2">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m484.63 188.6-5.271-1.703-4.654-2.01-4.189-2.167-3.721-2.334-3.572-2.471-3.106-2.631-2.953-2.634-2.784-2.943-2.801-2.955-2.642-3.091-2.784-3.259-2.945-3.248-2.953-3.418-3.259-3.409-3.731-3.409-3.873-3.564-2.481-0.306-2.789-0.156-2.79-0.309-2.795-0.316-2.787-0.3-2.79-0.312-2.476-0.153-2.331-0.145 2.79 0.92 3.106 2.03 3.567 3.093 3.881 3.874 4.192 4.65 4.498 4.955 4.654 5.134 4.973 5.102 5.271 4.965 5.284 4.641 5.587 4.029 5.588 3.101 5.74 2.325 5.737 0.923 5.742-0.475 5.888-2.014-0.021-0.01z" stroke-width="0.254" fill="url(#bq)"/>
<linearGradient id="bf" y2="3488.6" gradientUnits="userSpaceOnUse" x2="-3471.3" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3582.5" x1="-3467.7">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m503.91 187.82h-3.111l-3.26-0.767-3.411-1.4-3.42-2.009-3.409-2.477-3.586-2.942-3.401-3.259-3.418-3.417-3.259-3.565-3.104-3.718-2.953-3.56-2.792-3.564-2.331-3.259-2.173-3.099-1.703-2.64-1.402-2.167-1.861-0.158h-1.862l-1.861-0.147-1.861-0.153-1.856-0.147-1.711-0.313-1.867-0.15-1.706-0.15-1.7-0.166-1.701-0.143-1.706-0.316-1.716-0.15-1.698-0.15-1.553-0.158h-1.714l-1.543-0.147 4.029 3.57 3.881 3.865 3.887 4.182 3.873 4.185 3.729 4.18 3.884 4.345 3.876 4.029 4.192 3.718 4.188 3.56 4.648 3.101 4.661 2.642 5.124 2.162 5.576 1.397 5.894 0.606 6.354-0.152 6.837-1.097 0.016-0.002z" stroke-width="0.254" fill="url(#bf)"/>
<linearGradient id="au" y2="3512.3" gradientUnits="userSpaceOnUse" x2="-3508.2" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3612.3" x1="-3504.6">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m516.58 187.95-2.953-2.021-2.632-2.32-2.642-2.325-2.635-2.315-2.336-2.483-2.479-2.634-2.322-2.629-2.318-2.637-2.183-2.801-2.334-2.62-2.167-2.793-2.328-2.629-2.323-2.789-2.334-2.484-2.32-2.634-2.496-2.481h-5.73l-2.48-0.287-2.477-0.316-2.479-0.309-2.486-0.309-2.483-0.158-2.637 0.008 4.351 6.511 4.188 5.734 4.039 5.263 3.879 4.81 3.723 4.023 3.57 3.729 3.572 3.099 3.573 2.629 3.575 2.325 3.406 1.706 3.415 1.393 3.572 0.772 3.568 0.616 3.567 0.146 3.72-0.304 3.882-0.469-0.026-0.017z" stroke-width="0.254" fill="url(#au)"/>
<linearGradient id="aj" y2="3491.3" gradientUnits="userSpaceOnUse" x2="-3541.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3585.3" x1="-3538.1">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m530.08 187.31-2.948-2.156-2.786-2.173-2.646-2.328-2.479-2.326-2.48-2.31-2.173-2.341-2.176-2.471-2.175-2.323-2.012-2.481-1.869-2.479-2.025-2.476-1.861-2.486-1.859-2.466-1.854-2.491-2.02-2.474-1.869-2.479-16.599-1.545 2.484 2.483 2.789 2.948 2.953 3.406 3.111 3.871 3.262 3.876 3.254 4.039 3.583 4.024 3.404 3.878 3.578 3.716 3.567 3.095 3.567 2.79 3.417 2.025 3.412 1.381 3.267 0.473 3.249-0.62 2.947-1.566-0.013-0.014z" stroke-width="0.254" fill="url(#aj)"/>
<linearGradient id="y" y2="3510.3" gradientUnits="userSpaceOnUse" x2="-3583.2" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3606.7" x1="-3579.6">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m557.56 183.74-2.173-0.152-2.48-0.306-2.486-0.612-2.79-0.928-2.79-1.089-2.945-1.242-3.111-1.703-3.103-1.856-3.109-2.173-3.256-2.471-3.106-2.792-3.105-2.942-3.26-3.259-2.953-3.729-2.945-3.871-2.95-4.187-2.64-0.148-2.021-0.147-1.397 0.003-1.393-0.158-1.395-0.158-1.559-0.15-2.167-0.15-2.787-0.467 3.259 4.501 3.262 4.651 3.417 4.638 3.414 4.493 3.578 4.174 3.404 4.2 3.739 3.567 3.72 3.409 3.89 2.779 3.868 2.181 4.028 1.39 4.183 0.775h4.351l4.495-0.938 4.49-2.025 4.812-3.106h0.011z" stroke-width="0.254" fill="url(#y)"/>
<linearGradient id="n" y2="3494" gradientUnits="userSpaceOnUse" x2="-3612.3" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3588" x1="-3608.7">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m568.25 181.23-3.731-1.863-3.567-2.168-3.564-2.317-3.415-2.474-3.108-2.489-3.096-2.637-2.961-2.457-2.623-2.489-2.336-2.32-2.173-2.173-1.709-1.858-1.548-1.559-1.244-1.239-0.775-0.77-0.309-0.316-0.772-0.147-1.706-0.158-2.323-0.143-2.795-0.312-3.264-0.152-3.251-0.312-3.417-0.301-3.106-0.158 2.79 4.029 2.953 3.881 2.958 3.718 3.101 3.415 3.254 3.256 3.412 2.942 3.42 2.637 3.726 2.318 3.726 2.164 3.881 1.712 4.182 1.395 4.195 0.918 4.493 0.614 4.653 0.316 4.802-0.324 4.973-0.623-3.726-1.556z" stroke-width="0.254" fill="url(#n)"/>
<linearGradient id="c" y2="3519.2" gradientUnits="userSpaceOnUse" x2="-3648.3" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3600.6" x1="-3645.4">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m589.5 183.1-2.175-1.234-2.795-1.703-3.099-2.184-3.425-2.325-3.567-2.637-3.718-2.795-3.729-2.784-3.57-2.618-3.425-2.643-3.09-2.483-2.643-2.165-2.175-1.703-1.543-1.403-0.625-0.765v-0.311l-1.711-0.306-2.009-0.158-2.484-0.166-2.483-0.299h-2.633l-2.476-0.145-2.325-0.161h-1.867l2.637 3.104 2.795 3.108 3.104 3.102 3.265 3.253 3.42 3.102 3.569 2.942 3.718 2.795 3.724 2.626 4.042 2.471 4.031 2.012 4.026 1.719 4.189 1.382 4.185 0.772 4.185 0.459 4.042-0.309 4.185-0.775-1.55-0.775z" stroke-width="0.254" fill="url(#c)"/>
<linearGradient id="b" y2="3496.9" gradientUnits="userSpaceOnUse" x2="-3685.5" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3590.8" x1="-3681.9">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m612.11 183.7-2.795-1.558-2.637-1.696-2.798-1.708-2.786-1.706-2.637-1.854-2.787-1.861-2.632-1.867-2.795-2.009-2.645-1.856-2.784-1.861-2.647-2.015-2.79-1.849-2.629-1.722-2.805-1.846-2.787-1.709-2.784-1.697-2.643-0.153-2.476-0.163-2.486-0.158-2.486-0.29-2.315-0.169-2.325-0.147-2.181-0.143-2.018-0.155 0.78 0.619 1.712 1.548 2.631 2.323 3.57 2.787 4.045 3.417 4.646 3.56 4.968 3.71 5.276 3.723 5.284 3.404 5.432 3.113 5.109 2.613 4.971 1.864 4.495 1.078 4.032-0.002 3.267-1.087 2.476-2.473-0.026-0.005z" stroke-width="0.254" fill="url(#b)"/>
<linearGradient id="a" y2="3562.4" gradientUnits="userSpaceOnUse" x2="-3715.7" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3606.1" x1="-3714.9">
<stop stop-color="#F6EE61" offset="0"/>
<stop stop-color="#F6D65D" offset=".186"/>
<stop stop-color="#F4C35B" offset=".3825"/>
<stop stop-color="#F3BC5A" offset=".5198"/>
<stop stop-color="#F5DA5D" offset=".7809"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m627.66 183.99-2.953-0.62-3.259-1.086-3.412-1.551-3.409-1.851-3.573-2.173-3.414-2.164-3.412-2.477-3.262-2.476-3.262-2.483-2.789-2.311-2.645-2.339-2.329-2.02-1.855-1.7-1.4-1.247-0.928-0.929-0.312-0.467-0.47-0.145-1.244-0.158-1.856-0.155-2.325-0.15-2.635-0.15-2.631 0.002-2.945-0.158-2.645-0.158 6.212 3.876 5.585 3.718 5.123 3.57 4.81 3.249 4.34 2.953 3.884 2.784 3.57 2.479 3.411 2.167 3.111 1.861 2.945 1.551 2.79 1.073 2.632 0.788 2.646 0.446 2.632-0.15 2.629-0.467 2.64-0.931 0.005-0.001z" stroke-width="0.254" fill="url(#a)"/>
<linearGradient id="ca" y2="3536.2" gradientUnits="userSpaceOnUse" x2="-3739.1" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3631.3" x1="-3753.7">
<stop stop-color="#F6EE61" offset="0"/>
<stop stop-color="#F6D65D" offset=".186"/>
<stop stop-color="#F4C35B" offset=".3825"/>
<stop stop-color="#F3BC5A" offset=".5198"/>
<stop stop-color="#F5DA5D" offset=".7809"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m638.96 182.28-2.481-0.611-2.483-0.783-2.323-1.076-2.488-1.252-2.16-1.39-2.339-1.543-2.162-1.703-2.17-1.714-2.181-1.856-2.17-1.856-2.012-1.861-2.02-2.015-2.02-1.863-1.856-1.709-2.027-1.701-1.859-1.703-2.481-0.155-2.47-0.298-2.337-0.147-2.167-0.169-2.328-0.301-2.315-0.147-2.333-0.164-2.484-0.152 0.939 0.938 1.55 1.382 2.004 2.02 2.647 2.32 2.948 2.795 3.411 2.79 3.729 2.945 3.879 2.786 4.034 2.795 4.351 2.463 4.182 2.018 4.343 1.55 4.182 1.084 4.045 0.293 3.879-0.617 3.56-1.393h-0.017z" stroke-width="0.254" fill="url(#ca)"/>
<linearGradient id="bz" y2="3563.4" gradientUnits="userSpaceOnUse" x2="-3772.9" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3607.2" x1="-3772.1">
<stop stop-color="#F6EE61" offset="0"/>
<stop stop-color="#F6D65D" offset=".186"/>
<stop stop-color="#F4C35B" offset=".3825"/>
<stop stop-color="#F3BC5A" offset=".5198"/>
<stop stop-color="#F5DA5D" offset=".7809"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m649.98 177.78-2.649-0.312-2.471-0.608-2.477-0.625-2.333-0.765-2.32-1.087-2.176-1.083-2.024-1.247-2.01-1.239-1.7-1.546-1.717-1.55-1.545-1.551-1.4-1.708-1.097-1.712-1.094-1.851-0.778-1.867-2.479-0.145-2.64-0.301-2.48-0.158-2.326-0.301-2.167-0.158-2.015-0.152-1.861-0.307-1.709-0.168 2.793 2.494 2.792 2.629 2.792 2.792 2.945 2.626 2.953 2.632 2.953 2.483 3.101 2.474 2.953 2.02 3.099 1.854 3.101 1.39 3.104 0.938 3.111 0.612 3.106-0.158 3.105-0.623 3.091-1.399 3.098-2.168-2.629-0.155z" stroke-width="0.254" fill="url(#bz)"/>
<linearGradient id="by" y2="3527.3" gradientUnits="userSpaceOnUse" x2="-3796.7" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3622.5" x1="-3811.3">
<stop stop-color="#F6EE61" offset="0"/>
<stop stop-color="#F6D65D" offset=".186"/>
<stop stop-color="#F4C35B" offset=".3825"/>
<stop stop-color="#F3BC5A" offset=".5198"/>
<stop stop-color="#F5DA5D" offset=".7809"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m662.69 174.98-2.173-0.47-2.006-0.617-1.87-0.611-1.848-0.622-1.706-0.768-1.709-0.772-1.542-0.775-1.405-0.923-1.39-1.097-1.411-0.926-1.242-1.236-1.239-1.245-1.239-1.395-1.244-1.553-1.097-1.562-2.64-0.145-2.325-0.158-2.176-0.15-2.004-0.153-2.024-0.155-2.015-0.309-1.861-0.15-1.864-0.16 0.934 2.642 1.397 2.637 1.861 2.315 2.17 2.178 2.486 2.004 2.634 1.706 2.951 1.558 3.111 1.393 3.253 0.926 3.26 0.931 3.411 0.464 3.104 0.153 3.268-0.006 2.939-0.464 2.792-0.78 2.643-1.076-2.184-0.629z" stroke-width="0.254" fill="url(#by)"/>
<linearGradient id="bx" y2="3564.4" gradientUnits="userSpaceOnUse" x2="-3823.4" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3608.1" x1="-3822.6">
<stop stop-color="#F6EE61" offset="0"/>
<stop stop-color="#F6D65D" offset=".186"/>
<stop stop-color="#F4C35B" offset=".3825"/>
<stop stop-color="#F3BC5A" offset=".5198"/>
<stop stop-color="#F5DA5D" offset=".7809"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m667.97 172.49-3.724-1.543-3.733-2.02-3.713-2.01-3.108-2.02-2.333-1.708-1.385-1.237v-0.619l-1.089 0.003-1.086-0.003-1.245-0.147-1.392-0.158-1.39-0.153-1.551-0.155-1.247-0.146-1.387-0.169 1.239 2.021 1.399 1.861 1.854 1.858 2.175 1.701 2.176 1.559 2.479 1.384 2.486 1.242 2.483 1.094 2.476 0.771 2.484 0.777 2.32 0.456 2.173 0.153h1.861l1.7-0.316 1.405-0.617 0.934-0.926-3.261-0.933z" stroke-width="0.254" fill="url(#bx)"/>
<linearGradient id="bw" y2="3564.6" gradientUnits="userSpaceOnUse" x2="-3837.2" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3608.4" x1="-3836.4">
<stop stop-color="#F6EE61" offset="0"/>
<stop stop-color="#F6D65D" offset=".186"/>
<stop stop-color="#F4C35B" offset=".3825"/>
<stop stop-color="#F3BC5A" offset=".5198"/>
<stop stop-color="#F5DA5D" offset=".7809"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m675.73 169.06-1.556-0.464-1.866-0.775-2.012-0.765-2.168-1.089-2.024-0.931-1.854-0.928-1.566-0.781-0.929-0.616-12.092-1.379 0.155 0.308 0.773 0.617 1.244 0.926 1.7 1.242 1.867 1.407 2.328 1.543 2.326 1.542 2.483 1.4 2.483 1.242 2.323 0.926 2.323 0.777 2.02 0.306 1.703-0.309 1.234-0.63 0.777-1.393 0.316-2.17 0.012-0.006z" stroke-width="0.254" fill="url(#bw)"/>
<linearGradient id="bv" y2="3550.8" gradientUnits="userSpaceOnUse" x2="-3852" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3578.8" x1="-3851.6">
<stop stop-color="#F6EE61" offset="0"/>
<stop stop-color="#F6D65D" offset=".186"/>
<stop stop-color="#F4C35B" offset=".3825"/>
<stop stop-color="#F3BC5A" offset=".5198"/>
<stop stop-color="#F5DA5D" offset=".7809"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m663.92 163.65 2.637 1.395 2.953 1.548 2.789 1.408 2.793 0.767 2.175-0.005 1.39-1.395 0.472-2.956-2.336-0.459-2.017-0.311-2.012-0.148-1.864-0.16-2.018-0.15-2.17-0.147-2.323-0.158-2.639-0.158 2.17 0.929z" stroke-width="0.254" fill="url(#bv)"/>
<linearGradient id="bu" y2="3564.9" gradientUnits="userSpaceOnUse" x2="-3852.7" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3608.6" x1="-3851.9">
<stop stop-color="#F6EE61" offset="0"/>
<stop stop-color="#F6D65D" offset=".186"/>
<stop stop-color="#F4C35B" offset=".3825"/>
<stop stop-color="#F3BC5A" offset=".5198"/>
<stop stop-color="#F5DA5D" offset=".7809"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m662.21 161.18 2.022-0.628 2.635-0.928 3.104-0.783 3.103-0.609 2.943 0.135 2.175 0.777 1.397 2.173-0.152 3.417-2.331-0.622-2.173-0.469-1.859-0.467-1.855-0.462-2.025-0.306-2.012-0.459-2.323-0.309-2.645-0.456-0.004-0.004z" stroke-width="0.254" fill="url(#bu)"/>
<linearGradient id="bt" y2="3725.2" gradientUnits="userSpaceOnUse" x2="-3477.1" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3591.5" x1="-3436.6">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m500.88 98.168-3.562-0.617-3.873 0.158-3.879 0.934-3.876 1.561-4.037 2.012-3.876 2.492-3.86 2.784-3.886 3.101-3.565 3.267-3.56 3.418-3.262 3.414-2.945 3.412-2.787 3.111-2.333 3.101-2.004 2.647-1.548 2.162-1.867-0.312-2.017-0.15-1.851-0.3-1.867-0.161-1.709-0.153-1.854-0.303-1.866-0.166-1.709-0.143-1.706-0.158-1.861-0.147-1.703-0.153-1.714-0.158-1.551-0.309-1.706-0.158-1.703-0.155-1.556-0.29 4.49-3.272 4.346-3.572 4.335-3.729 4.337-3.876 4.351-4.034 4.479-3.884 4.493-3.721 4.654-3.423 4.807-2.953 4.97-2.639 5.113-1.859 5.584-1.255 5.737-0.306 6.038 0.459 6.526 1.695 6.821 2.639 0.012-0.011z" stroke-width="0.254" fill="url(#bt)"/>
<linearGradient id="bs" y2="3761.1" gradientUnits="userSpaceOnUse" x2="-3569.1" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3655" x1="-3496.2">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m512.49 100.8-3.259 1.408-3.104 1.703-3.106 1.714-2.942 2.018-2.787 2.325-2.637 2.334-2.787 2.32-2.637 2.48-2.634 2.64-2.483 2.642-2.629 2.632-2.629 2.626-2.479 2.647-2.792 2.647-2.632 2.483-2.79 2.32-3.098-0.475-2.645-0.453-2.32-0.312-2.176-0.306-2.162-0.312-2.333-0.158-2.474-0.287-2.795-0.158 5.121-6.359 4.801-5.743 4.496-5.126 4.487-4.495 4.185-3.89 4.026-3.251 3.887-2.8 3.87-2.176 3.724-1.711 3.564-1.086 3.721-0.778 3.557-0.313 3.736 0.313 3.557 0.617 3.729 0.918 3.887 1.395-0.018 0.007z" stroke-width="0.254" fill="url(#bs)"/>
<linearGradient id="br" y2="3705.2" gradientUnits="userSpaceOnUse" x2="-3543.1" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3571.6" x1="-3502.6">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m525.54 104.21-3.415 1.402-3.256 1.551-3.104 1.711-2.948 2.012-2.786 2.021-2.64 2.178-2.479 2.32-2.484 2.325-2.167 2.331-2.32 2.489-2.162 2.637-2.175 2.479-2.157 2.479-2.02 2.483-2.17 2.489-2.17 2.481-16.912-2.01 2.792-2.322 2.953-2.801 3.404-3.259 3.403-3.562 3.727-3.878 3.873-3.734 4.021-3.73 4.034-3.567 4.034-3.259 4.029-2.79 3.871-2.173 3.881-1.556 3.56-0.77 3.564 0.301 3.272 1.239 2.945 2.479v0.004z" stroke-width="0.254" fill="url(#br)"/>
<linearGradient id="bp" y2="3722.2" gradientUnits="userSpaceOnUse" x2="-3625.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3616.1" x1="-3552.9">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m550.98 115.03-2.479 0.011h-2.629l-2.645 0.3-2.624 0.319-2.789 0.617-2.948 0.777-2.787 0.929-2.947 1.252-3.111 1.548-2.948 1.867-3.104 2.178-3.245 2.476-3.104 2.951-3.254 3.417-3.104 3.723-3.251 4.188-2.803-0.454-2.312-0.316-2.022-0.3-1.854-0.312-1.867-0.306-2.017-0.158-2.474-0.143-2.953-0.163 3.724-4.493 3.718-4.501 3.712-4.501 3.876-4.188 3.724-4.034 4.034-3.733 3.865-3.256 4.028-2.787 4.032-2.02 4.185-1.562 4.187-0.622 4.34 0.153 4.346 1.239 4.343 2.164 4.501 3.246 4.648 4.504 0.008-0.01z" stroke-width="0.254" fill="url(#bp)"/>
<linearGradient id="bo" y2="3683" gradientUnits="userSpaceOnUse" x2="-3616.5" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3549.3" x1="-3576">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m569.13 119.21-4.346 0.931-4.187 1.408-4.021 1.553-3.728 1.719-3.718 2.004-3.418 2.025-3.101 2.167-2.947 2.02-2.632 2.181-2.328 2.01-2.004 1.716-1.714 1.701-1.39 1.405-1.089 1.081-0.778 0.622-0.306 0.306-0.772 0.006-2.02-0.147-2.629-0.327-3.409-0.459-3.731-0.464-3.73-0.464-3.721-0.451-3.251-0.467 3.251-4.034 3.265-3.733 3.401-3.409 3.572-3.109 3.558-2.792 3.876-2.483 3.72-2.176 4.029-1.698 4.034-1.402 4.192-0.934 4.337-0.627 4.501-0.006 4.49 0.312 4.807 0.765 4.808 1.392 5.133 1.872-0.004-0.014z" stroke-width="0.254" fill="url(#bo)"/>
<linearGradient id="bn" y2="3682.4" gradientUnits="userSpaceOnUse" x2="-3683.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3576.3" x1="-3610.9">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m592.09 121.98-2.007 0.467-2.494 0.777-3.085 1.248-3.428 1.565-3.71 1.852-4.042 2.009-4.032 2.181-3.867 2.186-3.874 2.154-3.72 2.178-3.262 2.025-2.79 1.698-2.325 1.563-1.54 1.084-0.772 0.774-0.006 0.312h-1.708l-2.32-0.147-2.64-0.312-2.953-0.303-2.948-0.314-2.792-0.303-2.476-0.304-2.007-0.152 2.942-2.953 3.246-2.948 3.567-2.945 3.573-2.803 4.026-2.639 4.028-2.64 4.185-2.173 4.182-2.015 4.501-1.714 4.34-1.397 4.488-0.928 4.501-0.478 4.345-0.003 4.488 0.465 4.192 1.244 4.187 1.692 0.007-0.003z" stroke-width="0.254" fill="url(#bn)"/>
<linearGradient id="bm" y2="3659.3" gradientUnits="userSpaceOnUse" x2="-3694.6" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3525.6" x1="-3654.1">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m613.8 126.44-2.95 1.081-2.945 1.258-2.945 1.236-2.79 1.408-2.786 1.244-2.953 1.388-2.785 1.55-2.789 1.416-2.787 1.548-2.95 1.553-2.785 1.554-2.795 1.402-2.787 1.556-2.95 1.545-2.787 1.411-2.953 1.399-2.789-0.466-2.787-0.467-2.953-0.296-2.942-0.316-2.793-0.155-2.645-0.298-2.471-0.312-2.173-0.469 0.932-0.473 2.006-1.39 2.953-1.855 3.863-2.489 4.653-2.948 5.123-2.953 5.424-3.105 5.894-2.948 5.732-2.64 5.89-2.333 5.585-1.709 5.12-1.083h4.646l4.034 0.759 3.259 2.018 2.175 3.409 0.001-0.03z" stroke-width="0.254" fill="url(#bm)"/>
<linearGradient id="bl" y2="3562.9" gradientUnits="userSpaceOnUse" x2="-3744.7" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3606.7" x1="-3743.9">
<stop stop-color="#F6EE61" offset="0"/>
<stop stop-color="#F6D65D" offset=".186"/>
<stop stop-color="#F4C35B" offset=".3825"/>
<stop stop-color="#F3BC5A" offset=".5198"/>
<stop stop-color="#F5DA5D" offset=".7809"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m639.08 133.74h-2.486l-2.489 0.47-2.624 0.767-2.484 0.936-2.642 1.239-2.621 1.244-2.486 1.556-2.479 1.556-2.477 1.712-2.483 1.705-2.479 1.704-2.325 1.55-2.326 1.701-2.17 1.41-2.175 1.387-2.471-0.3-2.334-0.316-2.007-0.312-2.17-0.147-2.03-0.147-2.004-0.309-2.325-0.314-2.479-0.3 0.928-0.781 1.698-1.239 2.326-1.861 2.944-2.022 3.257-2.17 3.721-2.483 4.182-2.331 4.192-2.325 4.485-2.025 4.495-1.703 4.648-1.413 4.509-0.765 4.335-0.003 4.034 0.602 3.871 1.405 3.417 2.471-2.476-0.149z" stroke-width="0.254" fill="url(#bl)"/>
<linearGradient id="bk" y2="3541" gradientUnits="userSpaceOnUse" x2="-3707.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3636.1" x1="-3722.4">
<stop stop-color="#F6EE61" offset="0"/>
<stop stop-color="#F6D65D" offset=".186"/>
<stop stop-color="#F4C35B" offset=".3825"/>
<stop stop-color="#F3BC5A" offset=".5198"/>
<stop stop-color="#F5DA5D" offset=".7809"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m631.33 129.41-3.721 0.003-3.726 0.451-3.876 0.791-3.884 1.233-3.876 1.556-3.868 1.72-3.57 2.014-3.562 2.015-3.251 2.022-2.953 2.025-2.789 1.858-2.323 1.709-1.858 1.392-1.396 1.256-1.094 0.765-0.306 0.321-0.617 0.143-1.403-0.143-1.851-0.316-2.481-0.316-2.797-0.451-2.787-0.316-2.793-0.298-2.483-0.16 6.676-3.109 6.036-3.101 5.579-2.8 5.123-2.635 4.646-2.486 4.335-2.331 3.882-1.858 3.73-1.717 3.394-1.244 3.27-1.092 2.948-0.617 2.789-0.152 2.787 0.3 2.642 0.623 2.787 1.239 2.643 1.711v-0.005z" stroke-width="0.254" fill="url(#bk)"/>
<linearGradient id="bj" y2="3532.6" gradientUnits="userSpaceOnUse" x2="-3762.5" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3627.8" x1="-3777.1">
<stop stop-color="#F6EE61" offset="0"/>
<stop stop-color="#F6D65D" offset=".186"/>
<stop stop-color="#F4C35B" offset=".3825"/>
<stop stop-color="#F3BC5A" offset=".5198"/>
<stop stop-color="#F5DA5D" offset=".7809"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m653.98 141.79-2.789-0.316-2.632-0.292-2.642-0.003-2.635 0.147-2.476 0.316-2.352 0.456-2.315 0.625-2.17 0.771-2.015 0.931-2.024 1.094-1.695 1.097-1.551 1.393-1.556 1.551-1.234 1.708-1.091 1.714-0.929 2.01-2.645-0.301-2.632-0.316-2.795-0.298-2.628-0.319-2.481-0.295-2.326-0.465-2.017-0.155-1.859-0.309 3.254-2.009 3.259-2.342 3.252-2.325 3.414-2.168 3.415-2.183 3.409-2.173 3.262-1.698 3.401-1.708 3.256-1.103 3.417-0.777 3.257-0.304 3.108 0.146 3.101 0.931 2.951 1.545 2.942 2.325 2.797 3.101h-0.006z" stroke-width="0.254" fill="url(#bj)"/>
<linearGradient id="bi" y2="3524.4" gradientUnits="userSpaceOnUse" x2="-3815.9" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3619.6" x1="-3830.5">
<stop stop-color="#F6EE61" offset="0"/>
<stop stop-color="#F6D65D" offset=".186"/>
<stop stop-color="#F4C35B" offset=".3825"/>
<stop stop-color="#F3BC5A" offset=".5198"/>
<stop stop-color="#F5DA5D" offset=".7809"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m673.07 152-3.884-0.145-3.876 0.625-4.031 1.086-3.567 1.255-3.101 1.387-2.643 1.245-1.545 0.934-0.617 0.316h-1.236l-1.247-0.169-1.548-0.147-1.711-0.301-1.701-0.312-1.698-0.306-1.389-0.312 1.542-1.866 1.711-1.709 2.162-1.55 2.331-1.245 2.471-1.092 2.64-0.925 2.795-0.631 2.631-0.461 2.79-0.15 2.481-0.005 2.48 0.147 2.168 0.464 1.861 0.622 1.709 0.923 1.239 1.084 0.782 1.242v-0.004z" stroke-width="0.254" fill="url(#bi)"/>
<linearGradient id="bh" y2="3564.7" gradientUnits="userSpaceOnUse" x2="-3838.5" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3608.4" x1="-3837.6">
<stop stop-color="#F6EE61" offset="0"/>
<stop stop-color="#F6D65D" offset=".186"/>
<stop stop-color="#F4C35B" offset=".3825"/>
<stop stop-color="#F3BC5A" offset=".5198"/>
<stop stop-color="#F5DA5D" offset=".7809"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m675.09 158.06-2.02 0.005-2.167 0.301-2.17 0.464-2.165 0.617-1.859 0.62-1.7 0.472-1.095 0.453-12.411-2.159 0.316-0.146 0.773-0.614 1.553-0.625 1.861-0.928 2.165-0.934 2.483-0.931 2.634-0.936 2.632-0.931 2.787-0.62 2.483-0.312 2.326-0.163 2.015 0.316 1.7 0.77 1.097 1.245 0.614 1.866-0.142 2.466-1.71-0.296z" stroke-width="0.254" fill="url(#bh)"/>
<linearGradient id="bg" y2="3564" gradientUnits="userSpaceOnUse" x2="-3802.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3607.7" x1="-3802">
<stop stop-color="#F6EE61" offset="0"/>
<stop stop-color="#F6D65D" offset=".186"/>
<stop stop-color="#F4C35B" offset=".3825"/>
<stop stop-color="#F3BC5A" offset=".5198"/>
<stop stop-color="#F5DA5D" offset=".7809"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m666.55 147.98-1.864-0.303-2.02-0.155-2.01 0.005-2.012 0.15-2.02 0.161-1.864 0.311-2.012 0.47-1.861 0.622-1.856 0.611-1.717 0.781-1.703 0.928-1.548 0.934-1.39 1.092-1.241 1.083-1.087 1.247-0.933 1.38-2.637-0.293-2.489-0.464-2.326-0.148-2.164-0.316-2.17-0.311-2.025-0.146-1.851-0.313-2.022-0.158 1.395-2.787 1.703-2.483 2.17-2.168 2.629-1.866 2.792-1.551 2.951-1.242 3.256-1.097 3.257-0.627 3.406-0.293 3.417-0.003 3.254 0.443 3.265 0.619 3.259 0.937 2.953 1.387 2.637 1.551 2.478 2.012z" stroke-width="0.254" fill="url(#bg)"/>
<linearGradient id="be" y2="3635.3" gradientUnits="userSpaceOnUse" x2="-2786.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3729.3" x1="-2818.8">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m114.4 73.81 0.771 0.309 0.774 0.316 0.606 0.158 0.62 0.313 0.633 0.146 0.772 0.309 0.62 0.163 0.772 0.301-0.628 2.015-0.76 2.325-0.622 2.331-0.459 2.637-0.616 2.637-0.47 2.795-0.301 2.935-0.306 2.956-0.153 2.947-0.147 2.798v2.945l0.158 2.795 0.306 2.787 0.459 2.476 0.475 2.476 0.78 2.339-4.814-1.556-3.723-2.167-2.637-2.779-1.709-3.114-0.777-3.409-0.203-3.712 0.321-3.729 0.923-3.882 1.224-3.718 1.405-3.728 1.548-3.262 1.566-2.945 1.392-2.484 1.079-2.009 0.777-1.247 0.312-0.475 0.032 0.007z" stroke-width="0.254" fill="url(#be)"/>
<linearGradient id="bd" y2="3627" gradientUnits="userSpaceOnUse" x2="-2811.1" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3721" x1="-2843.1">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m119.63 75.969 1.092 0.314 1.239 0.306 1.545 0.469 1.408 0.454 1.693 0.467 1.708 0.616 1.872 0.615 1.852 0.622-0.923 3.259-0.765 3.106-0.628 3.411-0.459 3.257-0.298 3.417-0.166 3.257 0.005 3.411 0.164 3.265 0.306 3.254 0.47 3.105 0.475 3.091 0.616 3.111 0.628 2.787 0.775 2.787 0.928 2.48 0.929 2.481h-1.556l-1.704-0.153-1.855-0.303-2.188-0.775-2.004-1.078-2.021-1.408-2.009-2.009-1.867-2.481-1.402-3.099-1.244-3.723-0.931-4.34-0.314-5.121 0.153-5.896 0.765-6.663 1.548-7.752 2.164-8.54v-0.001z" stroke-width="0.254" fill="url(#bd)"/>
<linearGradient id="bc" y2="3617.2" gradientUnits="userSpaceOnUse" x2="-2839.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3711.2" x1="-2871.8">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m132.21 79.848 1.078 0.301 1.406 0.475 1.547 0.617 1.862 0.614 1.861 0.619 1.866 0.617 1.856 0.617 1.556 0.617-0.931 3.253-0.617 3.42-0.614 3.268-0.306 3.409-0.298 3.409v3.259l0.155 3.409 0.312 3.257 0.622 3.259 0.617 3.259 0.934 3.111 0.928 3.251 1.244 2.945 1.406 3.101 1.705 2.942 1.709 2.801-4.487 1.244-3.893-0.163-3.401-1.229-2.958-2.326-2.315-3.101-2.021-3.876-1.396-4.493-1.102-4.807-0.775-5.128-0.47-5.273-0.008-5.269 0.166-5.276 0.29-4.807 0.633-4.34 0.918-3.887 0.934-3.101h-0.013z" stroke-width="0.254" fill="url(#bc)"/>
<linearGradient id="bb" y2="3606.6" gradientUnits="userSpaceOnUse" x2="-2871.2" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3700.5" x1="-2903.2">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m171.7 144.17-1.866-1.078-1.706-1.695-1.553-2.339-1.248-2.782-1.086-3.264-0.944-3.724-0.69-3.892-0.633-4.192-0.453-4.177-0.47-4.498-0.155-4.34-0.158-4.188-0.156-4.179-0.163-4.048v-3.56-3.257l-2.02-0.611-1.856-0.617-2.02-0.622-1.852-0.62-1.872-0.617-1.851-0.461-1.722-0.628-1.709-0.611-1.39 4.81-0.923 5.126-0.469 5.275 0.011 5.269 0.316 5.271 0.774 5.269 1.25 5.126 1.556 4.814 2.02 4.487 2.173 4.029 2.64 3.56 3.104 2.958 3.259 2.162 3.56 1.545 4.039 0.623 4.198-0.324h0.065z" stroke-width="0.254" fill="url(#bb)"/>
<linearGradient id="ba" y2="3517.5" gradientUnits="userSpaceOnUse" x2="-2978.6" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1416.2 2021)" y1="3636.1" x1="-2999.2">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#6E2A80" offset=".0752"/>
<stop stop-color="#81287F" offset=".1935"/>
<stop stop-color="#A2237C" offset=".3399"/>
<stop stop-color="#D11C75" offset=".5088"/>
<stop stop-color="#ED2272" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m160.58 89.115 0.316 5.276 0.006 5.121 0.158 5.12 0.15 4.957 0.171 4.965 0.158 4.654 0.448 4.498 0.633 4.343 0.944 3.884 1.239 3.723 1.708 3.396 2.179 2.953 2.637 2.483 3.105 2.162 3.724 1.551 4.487 1.086-2.173-2.009-1.708-2.494-1.4-2.943-1.236-3.253-0.772-3.418-0.783-3.72-0.465-4.026-0.306-4.04-0.158-4.023-0.163-4.203-0.006-4.171-0.005-3.881-0.153-3.879-0.158-3.726-0.163-3.401-0.313-3.106-1.537-0.619-1.562-0.467-1.397-0.459-1.55-0.464-1.563-0.312-1.39-0.464-1.551-0.462-1.556-0.619 0.005-0.013z" stroke-width="0.254" fill="url(#ba)"/>
<linearGradient id="az" y2="3585.4" gradientUnits="userSpaceOnUse" x2="-2935.2" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3658.3" x1="-2945.8">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m201.74 155.31-4.656-5.421-3.733-5.263-3.102-5.424-2.483-5.123-1.698-4.963-1.408-4.814-0.791-4.638-0.458-4.192-0.169-4.034 0.158-3.567 0.316-3.109 0.301-2.787 0.464-2.178 0.316-1.711 0.306-1.089 0.158-0.459-1.719-0.462-1.554-0.308-1.39-0.467-1.545-0.459-1.571-0.459-1.387-0.472-1.551-0.459-1.703-0.462 0.316 4.338 0.306 4.656v4.957l0.011 5.284v5.11l0.163 5.286 0.47 5.107 0.62 4.962 1.094 4.815 1.692 4.337 2.036 3.879 2.789 3.412 3.576 2.631 4.332 2.015 5.281 1.239 6.201 0.295 0.012-0.003z" stroke-width="0.254" fill="url(#az)"/>
<linearGradient id="ay" y2="3580.8" gradientUnits="userSpaceOnUse" x2="-2967" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3653.7" x1="-2977.5">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m222.87 161.97-3.578-2.945-3.259-3.407-2.956-3.723-2.474-4.029-2.33-4.192-1.867-4.335-1.703-4.345-1.408-4.493-1.247-4.49-0.778-4.343-0.774-4.188-0.456-3.881-0.325-3.726-0.152-3.243 0.147-2.956 0.153-2.479-14.739-4.644-1.239 5.898-0.617 5.889 0.163 6.201 0.775 6.06 1.25 6.027 1.877 5.898 2.331 5.579 2.626 5.126 3.117 4.809 3.417 4.335 3.729 3.567 3.87 2.94 4.034 2.17 4.029 1.405 4.192 0.29 4.192-0.77v-0.005z" stroke-width="0.254" fill="url(#ay)"/>
<linearGradient id="ax" y2="3496.7" gradientUnits="userSpaceOnUse" x2="-2989.9" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3657.5" x1="-3006.5">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m199.52 100.89 0.312 8.369 0.786 7.916 1.244 7.121 1.571 6.679 2.004 6.191 2.342 5.421 2.473 4.968 2.79 4.189 3.106 3.879 3.105 3.096 3.27 2.473 3.259 2.025 3.26 1.393 3.259 0.77 3.248 0.153 3.101-0.465-2.631-2.33-2.168-2.632-2.02-2.79-1.708-3.264-1.396-3.412-1.249-3.707-0.941-3.731-0.771-3.873-0.617-4.034-0.469-4.023-0.306-4.203-0.475-4.029-0.158-4.028-0.301-3.887-0.172-3.865-0.309-3.57-2.175-0.464-2.787-0.772-3.259-0.921-3.265-1.091-3.401-0.931-3.27-1.084-2.953-0.775-2.32-0.765-0.009 0.003z" stroke-width="0.254" fill="url(#ax)"/>
<linearGradient id="aw" y2="3570.6" gradientUnits="userSpaceOnUse" x2="-3037.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3643.5" x1="-3048.3">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m258.98 168.14-3.116-2.94-2.79-2.945-2.336-3.108-2.167-3.243-1.709-3.265-1.55-3.262-1.245-3.403-1.086-3.418-0.788-3.569-0.763-3.56-0.627-3.718-0.465-3.895-0.633-3.863-0.469-4.034-0.459-4.019-0.464-4.205-2.336-0.614-2.01-0.62-1.708-0.45-1.872-0.475-1.693-0.454-1.697-0.618-1.874-0.469-2.168-0.462 0.475 4.032 0.304 4.495 0.316 4.81 0.152 5.281 0.475 5.271 0.47 5.266 0.77 5.438 1.248 4.962 1.563 4.957 2.012 4.343 2.797 3.879 3.407 3.248 4.045 2.647 5.12 1.692 5.894 0.62 6.989-0.33-0.012-0.002z" stroke-width="0.254" fill="url(#aw)"/>
<linearGradient id="av" y2="3489" gradientUnits="userSpaceOnUse" x2="-3064.3" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3649.8" x1="-3080.9">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m277.76 171.54-1.861-1.4-2.015-1.551-1.866-1.7-1.861-2.17-1.709-2.323-1.856-2.481-1.725-2.945-1.55-3.251-1.556-3.575-1.556-3.723-1.393-4.338-1.255-4.493-1.092-4.965-1.092-5.268-0.928-5.738-0.777-6.059-2.334-0.467-2.004-0.617-1.722-0.298-1.537-0.459-1.714-0.311-1.703-0.467-1.862-0.451-2.183-0.475 0.327 3.723 0.464 4.346 0.472 4.656 0.772 4.968 0.78 5.258 1.092 5.126 1.405 5.266 1.854 4.97 2.179 4.81 2.488 4.487 3.102 3.876 3.569 3.259 4.192 2.632 4.81 1.692 5.43 0.775 6.204-0.311 0.011-0.008z" stroke-width="0.254" fill="url(#av)"/>
<linearGradient id="at" y2="3565.3" gradientUnits="userSpaceOnUse" x2="-3104.5" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3648.3" x1="-3110.6">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m295.44 173.85-2.5-1.855-2.631-2.315-2.489-2.795-2.325-3.265-2.331-3.406-2.165-3.56-2.175-3.876-2.021-4.029-1.708-4.042-1.562-4.185-1.55-3.876-1.092-4.028-1.092-3.718-0.617-3.415-0.469-3.262-0.153-2.937-2.009-0.475-1.867-0.462-1.856-0.451-1.872-0.466-1.855-0.467-1.872-0.465-1.862-0.464-1.861-0.311 0.628 3.733 0.617 4.177 0.777 4.65 1.095 4.815 1.249 5.109 1.406 5.118 1.711 5.118 2.165 4.814 2.486 4.641 2.795 4.345 3.262 3.721 3.567 3.246 4.34 2.473 4.656 1.72 5.278 0.765 5.901-0.316v-0.004z" stroke-width="0.254" fill="url(#at)"/>
<linearGradient id="as" y2="3522.6" gradientUnits="userSpaceOnUse" x2="-3134.7" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3632.3" x1="-3142">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m314.81 177.4-3.099-0.923-2.945-1.708-2.637-2.326-2.645-2.939-2.322-3.409-2.173-3.884-2.02-4.032-1.867-4.329-1.714-4.515-1.556-4.329-1.387-4.335-1.25-4.192-1.097-4.034-0.929-3.56-0.77-3.101-0.775-2.634-2.015-0.316-2.02-0.467-2.024-0.459-2.168-0.611-2.173-0.47-2.164-0.617-2.176-0.461-2.32-0.451 0.003 1.543 0.461 2.634 0.775 3.564 0.934 4.351 1.561 5.11 1.856 5.271 2.178 5.593 2.484 5.732 3.116 5.429 3.401 5.271 3.733 4.648 4.341 3.868 4.661 3.106 5.115 2.004 5.596 0.775 6.032-0.783-0.001-0.014z" stroke-width="0.254" fill="url(#as)"/>
<linearGradient id="ar" y2="3520.6" gradientUnits="userSpaceOnUse" x2="-3164.6" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3630.3" x1="-3171.9">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m328.94 176.62-3.56-2.167-3.27-2.325-2.942-2.474-2.947-2.795-2.474-2.787-2.491-3.098-2.171-3.254-1.866-3.412-1.867-3.412-1.548-3.417-1.405-3.564-1.25-3.718-0.923-3.576-0.943-3.715-0.765-3.721-0.475-3.564-1.403-0.166-1.233-0.298-1.397-0.316-1.562-0.306-1.397-0.312-1.545-0.303-1.711-0.156-1.695-0.303 0.765 2.942 0.931 3.718 0.936 4.192 1.245 4.644 1.556 4.973 1.561 5.12 2.015 5.11 2.184 4.962 2.639 4.662 2.945 4.321 3.259 3.567 3.573 2.953 4.189 2.168 4.509 1.081 4.952-0.006 5.574-1.239 0.007-0.009z" stroke-width="0.254" fill="url(#ar)"/>
<linearGradient id="aq" y2="3476.5" gradientUnits="userSpaceOnUse" x2="-3185.7" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3637.2" x1="-3202.3">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m346.62 179.42-4.814-2.939-4.346-3.104-3.718-3.099-3.111-2.947-2.784-3.106-2.331-3.101-1.877-3.251-1.698-3.109-1.405-3.253-1.242-3.106-0.923-3.254-0.934-3.256-0.785-3.251-0.938-3.265-0.771-3.406-0.938-3.26-1.856-0.469-2.024-0.312-1.862-0.453-2.009-0.313-2.009-0.301-2.17-0.467-2.022-0.309-2.015-0.456 0.934 5.725 1.397 5.587 1.563 5.426 1.866 5.121 2.323 4.804 2.483 4.656 2.795 4.18 2.953 3.889 3.412 3.407 3.407 3.09 3.886 2.635 3.871 2.159 4.2 1.556 4.332 1.081 4.504 0.469 4.646-0.01 0.01 0.012z" stroke-width="0.254" fill="url(#aq)"/>
<linearGradient id="ap" y2="3472.4" gradientUnits="userSpaceOnUse" x2="-3224.9" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3633.2" x1="-3241.6">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m371.74 182.32-4.341-1.698-4.036-2.012-4.032-2.325-3.73-2.477-3.56-2.792-3.272-2.942-3.105-3.085-2.798-3.42-2.626-3.415-2.326-3.572-2.03-3.718-1.851-3.718-1.551-3.713-1.26-3.887-0.929-3.876-0.611-3.87-2.025-0.464-2.02-0.307-2.025-0.464-1.855-0.316-1.867-0.303-1.846-0.301-1.867-0.472-1.711-0.307 0.946 5.59 1.239 5.58 1.725 5.426 2.01 5.279 2.32 4.951 2.805 4.646 3.106 4.348 3.423 3.868 3.718 3.712 4.179 3.111 4.507 2.629 4.807 2.012 5.125 1.548 5.43 0.931 5.888 0.304 6.054-0.478-0.008-0.003z" stroke-width="0.254" fill="url(#ap)"/>
<linearGradient id="ao" y2="3538.8" gradientUnits="userSpaceOnUse" x2="-3257.9" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3611.7" x1="-3268.4">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m385.54 183.86-5.123-2.474-4.487-2.479-4.034-2.474-3.578-2.634-3.101-2.476-2.785-2.792-2.483-2.629-2.173-2.953-2.02-2.945-1.867-3.093-1.716-3.26-1.864-3.569-1.709-3.724-1.861-4.039-1.859-4.172-2.175-4.503-2.184-0.306-1.848-0.309-1.546-0.309-1.402-0.15-1.39-0.158-1.397-0.158-1.561-0.15-1.698-0.301 0.928 5.261 1.408 5.134 1.861 4.962 2.173 4.799 2.632 4.487 2.958 4.361 3.415 4.021 3.567 3.715 3.878 3.406 4.19 2.956 4.49 2.624 4.503 2.17 4.802 1.854 4.976 1.239 4.965 0.768 5.121 0.303-0.006-0.003z" stroke-width="0.254" fill="url(#ao)"/>
<linearGradient id="an" y2="3465.9" gradientUnits="userSpaceOnUse" x2="-3287.7" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3626.7" x1="-3304.4">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m410.36 185.4-4.654-1.864-4.34-2.01-4.343-2.167-4.028-2.315-3.89-2.483-3.712-2.784-3.584-2.79-3.256-2.942-3.259-3.267-2.953-3.259-2.785-3.56-2.642-3.568-2.317-3.867-2.339-4.026-2.02-4.346-1.864-4.351-1.405-0.143-1.846-0.311-2.179-0.307-2.48-0.464-2.328-0.309-2.32-0.309-1.867-0.316-1.39-0.147 2.009 4.81 2.179 4.968 2.339 4.81 2.639 4.793 2.787 4.82 2.953 4.487 3.417 4.343 3.731 4.021 4.021 3.728 4.509 3.243 4.807 2.801 5.427 2.312 5.894 1.708 6.356 1.084 7.141 0.295 7.602-0.311-0.01-0.007z" stroke-width="0.254" fill="url(#an)"/>
<linearGradient id="am" y2="3529.5" gradientUnits="userSpaceOnUse" x2="-3321.9" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3602.4" x1="-3332.5">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m425.1 187.56-3.573-2.787-3.394-3.111-3.422-3.09-3.41-3.415-3.419-3.401-3.262-3.409-3.257-3.412-3.101-3.56-3.111-3.422-3.106-3.417-3.108-3.249-2.945-3.104-2.95-2.784-2.953-2.787-2.79-2.331-2.795-2.162-0.777-0.469-1.548-0.306-1.867-0.314-2.17-0.15-2.479-0.311-2.473-0.153-2.331-0.295-2.328-0.322 2.333 5.59 2.798 5.427 3.256 5.11 3.56 4.814 4.045 4.653 4.192 4.335 4.501 3.876 4.654 3.718 4.807 3.251 4.812 2.942 4.814 2.484 4.81 2.001 4.805 1.701 4.658 1.086 4.338 0.617 4.188 0.152v0.004z" stroke-width="0.254" fill="url(#am)"/>
<linearGradient id="al" y2="3459.2" gradientUnits="userSpaceOnUse" x2="-3353.2" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3619.9" x1="-3369.8">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m447.75 187.55-3.106-0.928-3.101-1.387-3.105-1.859-3.262-2.167-3.257-2.484-3.259-2.784-3.412-3.114-3.417-3.401-3.423-3.401-3.564-3.723-3.575-3.73-3.567-3.71-3.724-3.724-3.736-3.72-3.876-3.568-3.873-3.564-2.025-0.301-2.314-0.464-2.481-0.459-2.481-0.321-2.32-0.47-2.333-0.155-1.999-0.298h-1.722l4.965 4.174 4.974 4.651 4.965 5.117 4.812 5.121 4.81 5.263 4.817 5.269 4.651 4.957 4.501 4.814 4.495 4.185 4.501 3.71 4.346 2.95 4.337 2.17 4.346 1.089 4.189-0.003 4.177-1.089 4.039-2.649 0.007 0.003z" stroke-width="0.254" fill="url(#al)"/>
<linearGradient id="ak" y2="3519.5" gradientUnits="userSpaceOnUse" x2="-3391" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3592.4" x1="-3401.6">
<stop stop-color="#672A80" offset="0"/>
<stop stop-color="#672A80" offset=".0006"/>
<stop stop-color="#8D236F" offset=".072"/>
<stop stop-color="#AD1E5C" offset=".1459"/>
<stop stop-color="#C81F4D" offset=".2229"/>
<stop stop-color="#DD1D40" offset=".3041"/>
<stop stop-color="#EC1B37" offset=".3913"/>
<stop stop-color="#ED1B35" offset=".4884"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m465.28 189.56-5.595-2.95-5.118-3.248-4.812-3.562-4.499-3.868-4.182-3.884-4.037-4.034-3.575-3.868-3.567-3.881-3.111-3.705-3.104-3.417-2.95-3.262-2.792-2.781-2.803-2.323-2.629-1.711-2.64-1.242-2.637-0.609-0.928 0.003-1.548-0.164-1.859-0.155-2.336-0.298-2.317-0.163-2.334-0.301-1.856-0.147-1.548-0.164 4.343 3.718 4.19 3.876 4.026 4.188 3.884 4.335 3.884 4.334 3.729 4.192 3.873 4.18 4.037 4.026 4.031 3.726 4.354 3.404 4.492 3.098 4.807 2.486 5.282 1.999 5.434 1.561 6.041 0.612 6.37-0.006v0.005z" stroke-width="0.254" fill="url(#ak)"/>
<linearGradient id="ai" y2="3911" gradientUnits="userSpaceOnUse" x2="-2863.9" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3777.4" x1="-2823.4">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m120.12 61.873 0.912 0.316 0.78 0.146 0.622 0.306 0.614 0.321 0.631 0.147 0.762 0.316 0.625 0.153 0.77 0.147 0.456-2.483 0.462-2.632 0.617-2.942 0.627-3.114 0.763-3.101 0.788-3.251 0.765-3.267 0.928-3.104 1.095-3.257 1.073-3.108 1.091-2.79 1.234-2.789 1.239-2.481 1.397-2.325 1.387-1.859 1.562-1.556-4.805-1.239-4.187 0.158-3.412 1.245-2.652 2.172-2.315 2.948-1.54 3.572-1.255 4.034-0.923 4.185-0.453 4.499-0.148 4.34-0.152 4.187 0.158 3.876 0.158 3.265 0.158 2.632 0.158 1.7v0.62l0.01 0.013z" stroke-width="0.254" fill="url(#ai)"/>
<linearGradient id="ah" y2="3898.3" gradientUnits="userSpaceOnUse" x2="-2891.6" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3768.7" x1="-2843.8">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m125.71 64.186 0.928 0.306 0.728 0.164 0.633 0.306 0.612 0.152 0.622 0.312 0.936 0.312 1.396 0.142 1.851 0.314 0.788-3.721 0.921-3.573 0.931-3.409 0.92-3.409 1.086-3.262 1.239-3.111 1.245-3.101 1.392-2.945 1.393-2.8 1.545-2.64 1.714-2.626 1.714-2.486 2.004-2.476 1.867-2.179 2.156-2.322 2.173-2.012-1.239-0.932-1.408-0.931-1.55-0.77-1.695-0.617-1.701-0.316-2.032 0.158-1.854 0.622-2.172 1.403-2.021 2.015-2.162 2.789-2.156 3.882-2.184 4.809-2.156 6.044-2.168 7.293-2.162 8.538-2.02 10.077h-0.114z" stroke-width="0.254" fill="url(#ah)"/>
<linearGradient id="ag" y2="3896.5" gradientUnits="userSpaceOnUse" x2="-2911.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3762.9" x1="-2871.3">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m133.61 67.139 0.932 0.312 1.392 0.608 1.706 0.625 1.867 0.768 2.014 0.772 2.025 0.619 1.867 0.615 1.688 0.461 0.622-4.026 0.77-3.884 0.778-3.726 1.078-3.56 1.086-3.409 1.397-3.259 1.388-3.109 1.714-3.111 1.703-2.789 1.856-2.795 2.009-2.795 2.325-2.474 2.326-2.331 2.481-2.325 2.628-2.334 2.79-2.017-3.57-3.555-3.412-2.022-3.575-0.616-3.564 0.616-3.412 1.723-3.248 2.631-3.102 3.415-2.953 4.034-2.784 4.501-2.473 4.804-2.315 4.973-2.025 5.118-1.534 4.965-1.234 4.656-0.785 4.192-0.459 3.718 0.003 0.011z" stroke-width="0.254" fill="url(#ag)"/>
<linearGradient id="af" y2="3878.4" gradientUnits="userSpaceOnUse" x2="-2945.5" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3748.8" x1="-2897.7">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m194.02 26.449-2.795 0.765-2.621 1.405-2.494 1.858-2.468 2.326-2.184 2.637-2.156 3.101-2.02 3.264-1.852 3.581-1.703 3.718-1.714 3.871-1.695 4.042-1.534 4.034-1.411 3.876-1.551 3.876-1.233 3.884-1.403 3.564-2.014-0.306-1.852-0.625-2.022-0.456-2.012-0.775-1.864-0.622-1.864-0.606-1.855-0.47-1.864-0.469 0.614-5.732 1.236-5.59 1.553-5.574 2.01-5.284 2.32-4.967 2.629-4.81 3.104-4.346 3.085-3.723 3.414-3.259 3.573-2.79 3.723-2.025 3.876-1.244 3.729-0.464 3.876 0.464 3.723 1.393 3.718 2.48v-0.002z" stroke-width="0.254" fill="url(#af)"/>
<linearGradient id="ae" y2="3877.4" gradientUnits="userSpaceOnUse" x2="-2974.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3743.8" x1="-2934.3">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m211.13 31.084-5.568 2.025-4.973 2.8-4.335 3.104-3.887 3.718-3.248 3.879-2.953 4.192-2.326 4.192-1.998 4.189-1.703 4.189-1.237 4.029-1.094 3.729-0.765 3.254-0.464 2.786-0.459 2.018-0.158 1.556-0.147 0.606-1.709-0.301-1.709-0.459-1.556-0.611-1.542-0.479-1.563-0.612-1.551-0.459-1.55-0.467-1.709-0.149 2.015-4.501 1.858-4.81 1.706-5.118 1.852-5.12 1.851-4.963 2.025-4.978 2.004-4.81 2.33-4.343 2.632-3.876 2.932-3.267 3.265-2.635 3.721-1.705 4.189-0.781 4.651 0.153 5.273 1.397 5.896 2.621 0.004 0.007z" stroke-width="0.254" fill="url(#ae)"/>
<linearGradient id="ad" y2="3855.8" gradientUnits="userSpaceOnUse" x2="-3006.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3726.2" x1="-2959">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m233.12 34.327-4.33 1.709-4.034 2.17-3.886 2.483-3.56 2.951-3.249 3.27-3.101 3.411-2.938 3.724-2.642 3.876-2.32 3.873-2.176 3.892-1.851 3.874-1.867 3.723-1.548 3.57-1.239 3.254-1.244 3.116-0.92 2.632-15.979-4.172 0.772-6.829 1.382-6.359 2.178-6.21 2.779-5.734 3.264-5.435 3.549-4.96 4.045-4.355 4.33-3.871 4.501-3.111 4.49-2.488 4.646-1.867 4.656-0.928 4.34-0.164 4.33 0.622 4.037 1.698 3.572 2.637h0.013z" stroke-width="0.254" fill="url(#ad)"/>
<linearGradient id="ac" y2="3858.3" gradientUnits="userSpaceOnUse" x2="-3037.9" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3724.6" x1="-2997.4">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m192.08 86.3 3.248-8.844 3.418-8.068 3.707-6.977 3.729-6.204 3.859-5.281 4.034-4.654 4.019-3.729 4.045-2.945 4.019-2.333 3.876-1.551 3.884-0.938 3.718-0.306 3.562 0.303 3.27 0.934 3.09 1.393 2.8 1.858-3.253 1.239-3.254 1.712-2.953 2.175-2.632 2.643-2.637 2.942-2.483 3.259-2.326 3.423-2.153 3.718-2.013 4.036-2.02 4.032-1.854 4.036-1.706 4.177-1.698 4.195-1.708 4.034-1.709 4.031-1.545 3.876-2.173-0.617-2.626-0.762-2.953-0.775-3.096-1.081-3.27-0.928-2.955-0.931-2.945-0.617-2.315-0.462v-0.013z" stroke-width="0.254" fill="url(#ac)"/>
<linearGradient id="ab" y2="3846.1" gradientUnits="userSpaceOnUse" x2="-3078" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3712.5" x1="-3037.5">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m269.88 45.609-3.87 1.864-3.726 2.015-3.243 2.173-3.114 2.491-2.787 2.643-2.481 2.784-2.468 2.945-2.331 3.27-2.004 3.262-2.024 3.567-2.004 3.567-1.859 3.879-1.854 3.881-1.864 4.023-1.854 4.195-2.025 4.185-2.32-0.453-2.014-0.307-1.862-0.467-1.703-0.461-1.708-0.464-1.709-0.322-1.858-0.448-2.165-0.311 1.849-4.192 1.854-4.651 2.02-5.12 2.17-5.273 2.165-5.427 2.314-5.429 2.632-5.126 2.789-4.81 3.26-4.348 3.403-3.575 4.034-2.801 4.18-1.854 4.807-0.777 5.281 0.458 5.732 2.015 6.359 3.407v-0.008z" stroke-width="0.254" fill="url(#ab)"/>
<linearGradient id="aa" y2="3817.6" gradientUnits="userSpaceOnUse" x2="-3110.4" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3688" x1="-3062.6">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m289.12 51.179-3.101 0.459-2.959 0.63-2.778 1.086-2.643 1.25-2.631 1.703-2.479 2.021-2.479 2.325-2.479 2.637-2.326 3.267-2.468 3.404-2.323 3.892-2.486 4.335-2.637 4.814-2.615 5.273-2.784 5.737-2.79 6.21-2.479-0.467-2.178-0.309-1.867-0.461-1.851-0.47-1.709-0.306-1.856-0.459-2.024-0.464-2.326-0.459 1.712-3.876 1.843-4.501 2.173-4.648 2.473-5.129 2.643-5.117 2.942-4.973 3.243-4.805 3.412-4.656 3.729-4.039 4.034-3.418 4.329-2.789 4.498-1.867 4.963-0.775 5.123 0.307 5.424 1.55 5.745 3.096-0.018-0.008z" stroke-width="0.254" fill="url(#aa)"/>
<linearGradient id="z" y2="3827.6" gradientUnits="userSpaceOnUse" x2="-3139.3" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3693.9" x1="-3098.8">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m303.72 55.353-3.265 0.934-3.248 1.55-3.265 2.015-3.406 2.481-3.259 2.642-3.254 3.101-3.259 3.431-3.101 3.404-2.948 3.726-2.626 3.726-2.637 3.731-2.168 3.72-2.014 3.721-1.704 3.414-1.381 3.42-0.934 3.099-2.01-0.313-1.872-0.454-1.7-0.306-1.706-0.312-1.551-0.469-1.714-0.312-1.703-0.453-1.856-0.459 1.698-3.884 1.852-4.185 2.024-4.656 2.466-4.814 2.48-4.815 2.943-4.809 3.101-4.651 3.248-4.34 3.729-3.876 3.865-3.42 4.188-2.645 4.335-1.856 4.819-0.944 4.946-0.005 5.295 1.25 5.585 2.631 0.007-0.018z" stroke-width="0.254" fill="url(#z)"/>
<linearGradient id="x" y2="3796.8" gradientUnits="userSpaceOnUse" x2="-3166.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3667.2" x1="-3119">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m321.25 59.84-3.576-0.142-3.554 0.611-3.417 1.402-3.423 2.173-3.248 2.64-3.249 3.259-3.105 3.567-2.943 3.884-2.8 4.19-2.615 4.034-2.484 4.187-2.314 4.185-2.176 3.731-1.854 3.569-1.561 3.26-1.393 2.634-2.009-0.309-2.025-0.309-1.856-0.301-2.009-0.467-2.025-0.466-2.02-0.462-2.015-0.459-2.322-0.469 0.456-1.551 0.933-2.642 1.709-3.56 2.17-4.195 2.629-4.807 3.243-4.971 3.57-5.117 4.028-4.979 4.33-4.646 4.651-4.203 4.967-3.56 5.121-2.479 5.268-1.562 5.585-0.158 5.59 1.397 5.737 3.091h0.006z" stroke-width="0.254" fill="url(#x)"/>
<linearGradient id="w" y2="3810.3" gradientUnits="userSpaceOnUse" x2="-3196.4" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3676.6" x1="-3155.9">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m333.97 64.797-4.338 0.929-4.034 1.244-3.723 1.706-3.724 2.025-3.417 2.325-3.101 2.486-3.09 2.784-2.795 3.106-2.629 3.265-2.481 3.417-2.151 3.417-2.173 3.721-1.867 3.718-1.708 3.73-1.703 3.879-1.396 3.868-1.39-0.293-1.249-0.316-1.234-0.467-1.402-0.464-1.245-0.453-1.397-0.467-1.545-0.462-1.864-0.313 1.551-3.101 1.706-3.718 2.167-4.349 2.325-4.656 2.785-4.962 2.942-4.973 3.259-4.799 3.417-4.509 3.707-4.188 3.876-3.415 4.188-2.8 4.338-1.867 4.653-0.772 4.651 0.459 4.962 1.861 5.126 3.407 0.003-0.003z" stroke-width="0.254" fill="url(#w)"/>
<linearGradient id="v" y2="3777.7" gradientUnits="userSpaceOnUse" x2="-3218.7" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3648.1" x1="-3170.9">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m350.12 68.494-5.593 1.392-5.11 1.717-4.493 2.018-4.034 2.175-3.564 2.483-3.259 2.643-2.784 2.945-2.632 2.955-2.162 3.104-2.03 3.412-1.698 3.259-1.708 3.412-1.382 3.575-1.408 3.412-1.39 3.573-1.39 3.409-2.024-0.296-2.012-0.469-2.018-0.62-2.009-0.461-2.015-0.622-2.027-0.467-2.007-0.309-2.015-0.312 2.312-6.038 2.787-5.742 2.789-5.43 3.249-4.965 3.406-4.503 3.573-4.034 3.718-3.727 3.873-3.108 4.182-2.642 4.192-2.173 4.177-1.395 4.493-0.934 4.351-0.316 4.648 0.313 4.49 1.076 4.509 1.708 0.015-0.018z" stroke-width="0.254" fill="url(#v)"/>
<linearGradient id="u" y2="3791.7" gradientUnits="userSpaceOnUse" x2="-3257.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3658" x1="-3217.3">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m373.05 73.926-4.812 0.316-4.641 0.775-4.504 1.239-4.337 1.402-4.032 1.856-3.881 2.183-3.713 2.326-3.406 2.795-3.104 2.947-2.787 3.26-2.637 3.417-2.325 3.57-2.162 3.881-1.698 4.034-1.551 4.023-1.092 4.343-2.167-0.309-2.167-0.306-2.179-0.301-2.156-0.316-2.036-0.301-2.167-0.316-1.867-0.306-1.855-0.311 2.167-6.038 2.474-5.593 2.642-5.429 3.096-5.121 3.401-4.653 3.58-4.195 4.029-3.723 4.019-3.265 4.495-2.637 4.646-2.018 4.965-1.405 5.12-0.77 5.43 0.15 5.426 0.762 5.901 1.562 5.893 2.468h-0.008z" stroke-width="0.254" fill="url(#u)"/>
<linearGradient id="t" y2="3755.9" gradientUnits="userSpaceOnUse" x2="-3277.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3626.3" x1="-3230">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m384.38 75.149-5.732 1.249-5.12 1.403-4.341 1.545-4.028 1.719-3.409 2.021-3.111 2.167-2.787 2.328-2.479 2.64-2.315 2.789-2.015 3.111-2.017 3.254-2.165 3.417-2.024 3.871-2.157 3.881-2.481 4.346-2.64 4.504-2.009-0.312-1.856-0.461-1.55-0.316-1.556-0.301-1.556-0.314-1.551-0.306-1.551-0.155-1.861-0.143 1.54-5.745 2.025-5.432 2.471-4.968 2.786-4.651 3.254-4.187 3.417-3.724 3.863-3.417 4.031-2.953 4.343-2.483 4.49-2.021 4.662-1.556 4.954-1.244 4.973-0.622 5.118-0.158 5.11 0.459 5.274 0.765z" stroke-width="0.254" fill="url(#t)"/>
<linearGradient id="s" y2="3773.6" gradientUnits="userSpaceOnUse" x2="-3317.4" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3640" x1="-3276.9">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m409.03 78.39-4.948 1.25-4.817 1.399-4.644 1.551-4.501 1.717-4.332 2.017-4.188 2.018-4.034 2.317-3.873 2.494-3.721 2.798-3.56 2.939-3.262 3.262-3.101 3.578-2.939 3.718-2.793 4.034-2.483 4.19-2.312 4.65-1.4-0.158-1.697-0.145-1.87-0.464-2.009-0.465-2.03-0.306-1.859-0.469-1.7-0.148-1.245-0.152 2.479-5.121 2.477-4.967 2.787-4.968 2.947-4.646 3.249-4.503 3.417-4.188 3.715-3.887 4.172-3.411 4.351-3.12 4.807-2.317 5.273-1.872 5.737-1.239 6.201-0.627 6.666 0.306 7.29 1.086 7.752 1.852v-0.003z" stroke-width="0.254" fill="url(#s)"/>
<linearGradient id="r" y2="3765.8" gradientUnits="userSpaceOnUse" x2="-3343.2" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3632.1" x1="-3302.7">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m423.76 79.927-4.177 2.178-4.337 2.479-4.029 2.643-4.185 2.95-4.034 2.956-4.028 3.248-3.871 3.272-3.887 3.262-3.707 3.248-3.729 3.111-3.554 3.111-3.415 2.953-3.414 2.79-3.257 2.483-3.088 2.173-3.116 1.864-0.77 0.15-1.239-0.148-1.562-0.475-1.856-0.458-2.17-0.459-2.181-0.462-2.159-0.309-2.175-0.158 2.947-5.893 3.409-5.435 3.871-4.962 4.189-4.651 4.646-4.192 4.804-3.729 4.957-3.42 5.266-2.955 5.273-2.487 5.278-2.012 5.263-1.556 5.134-1.097 5.113-0.777 4.962-0.156 4.509 0.153 4.324 0.765h-0.005z" stroke-width="0.254" fill="url(#r)"/>
<linearGradient id="q" y2="3756.1" gradientUnits="userSpaceOnUse" x2="-3375.2" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3622.4" x1="-3334.7">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m444.4 85.793-4.493 0.475-4.346 0.778-4.187 1.397-4.034 1.709-3.874 2.024-3.726 2.331-3.56 2.637-3.723 2.784-3.562 3.109-3.557 3.259-3.575 3.267-3.724 3.265-3.718 3.406-4.034 3.272-4.021 3.259-4.188 3.101-2.012 0.008h-4.971l-2.623-0.15-2.483-0.15-2.479-0.166-2.022-0.15-1.704-0.295 5.593-3.73 5.571-4.19 5.577-4.503 5.576-4.815 5.43-4.809 5.426-4.82 5.432-4.493 5.269-4.351 5.266-3.56 4.97-3.116 4.96-2.326 4.648-1.249 4.493-0.312 4.351 0.934 4.187 2.314 3.882 3.871-0.015-0.015z" stroke-width="0.254" fill="url(#q)"/>
<linearGradient id="p" y2="3755.3" gradientUnits="userSpaceOnUse" x2="-3454.9" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3641.9" x1="-3354">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m459.93 87.645-6.052 2.024-5.587 2.64-5.271 2.948-5.112 3.272-4.648 3.417-4.49 3.572-4.177 3.718-3.881 3.57-3.726 3.417-3.56 3.268-3.412 2.95-3.104 2.483-3.104 2.01-2.945 1.413-2.792 0.762-2.787 0.008-0.937-0.15-1.537-0.166-2.024-0.29-2.318-0.318-2.333-0.146-2.331-0.316-2.02-0.306-1.537-0.15 4.799-3.267 4.812-3.412 4.482-3.887 4.493-3.879 4.498-4.034 4.338-4.031 4.49-3.733 4.498-3.721 4.648-3.262 4.805-2.953 4.965-2.328 5.109-1.867 5.439-1.094 5.73-0.312 6.048 0.614 6.519 1.543 0.012-0.007z" stroke-width="0.254" fill="url(#p)"/>
<linearGradient id="o" y2="3735.2" gradientUnits="userSpaceOnUse" x2="-3477.4" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1376.5 2061.7)" y1="3621.8" x1="-3376.5">
<stop stop-color="#512A7C" offset="0"/>
<stop stop-color="#682672" offset=".0701"/>
<stop stop-color="#991E5E" offset=".209"/>
<stop stop-color="#C21F4B" offset=".3368"/>
<stop stop-color="#E01D3D" offset=".4512"/>
<stop stop-color="#ED1B35" offset=".5481"/>
<stop stop-color="#ED1B35" offset=".6158"/>
<stop stop-color="#F6EE61" offset="1"/>
</linearGradient>
<path d="m479.47 93.079-5.426 1.241-4.965 1.408-4.341 1.553-4.031 1.867-3.721 2.007-3.409 2.175-3.254 2.334-2.953 2.48-2.939 2.637-3.106 2.795-2.942 2.938-3.105 2.959-3.401 2.945-3.56 3.108-3.882 3.101-4.335 3.267-2.634-0.16-2.95-0.156-3.106-0.467-3.104-0.3-3.098-0.475-2.945-0.454-2.645-0.459-2.474-0.313 2.942-0.472 3.415-1.556 3.873-2.632 4.182-3.422 4.648-4.021 5.115-4.351 5.273-4.659 5.424-4.656 5.732-4.182 5.886-3.89 6.051-3.259 6.057-2.333 6.033-1.25h5.893l6.057 1.384 5.737 3.262 0.008 0.006z" stroke-width="0.254" fill="url(#o)"/>
<g stroke-width="0.254">
<linearGradient id="m" y2="3588.2" gradientUnits="userSpaceOnUse" x2="-2809.5" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1416.2 2021)" y1="3797.2" x1="-2874.7">
<stop stop-color="#D8E7EB" offset="0"/>
<stop stop-color="#CAD9DF" offset=".0849"/>
<stop stop-color="#A5B8C2" offset=".2184"/>
<stop stop-color="#728896" offset=".3836"/>
<stop stop-color="#415867" offset=".5537"/>
<stop stop-color="#677E8B" offset=".6417"/>
<stop stop-color="#92A7B1" offset=".742"/>
<stop stop-color="#B7C8D0" offset=".8374"/>
<stop stop-color="#CFDFE4" offset=".9257"/>
<stop stop-color="#D8E7EB" offset="1"/>
</linearGradient>
<path d="m103.82 29.46 0.472 1.551 0.301 1.703 0.316 1.866 0.153 1.867 0.163 2.015 0.158 2.164v2.018l0.153 2.02 0.005 2.01v3.572l0.147 1.717v1.397l0.172 1.078 0.15 1.089 0.295 0.617-1.382-3.111-1.405-3.096-1.405-3.409-1.556-3.414-1.392-3.565-1.39-3.56-1.253-3.575-0.928-3.718-0.78-3.729-0.473-3.718v-3.723l0.304-3.724 0.77-3.564 1.397-3.406 1.861-3.576 2.474-3.256-0.461 1.7-0.454 1.867-0.321 1.851-0.147 1.859-0.143 1.864 0.005 2.02 0.143 2.017 0.146 1.859 0.171 2.025 0.306 1.858 0.47 2.009 0.475 1.859 0.459 1.703 0.617 1.714 0.616 1.701 0.775 1.553h0.016z" fill="url(#m)"/>
<linearGradient id="l" y2="3592.6" gradientUnits="userSpaceOnUse" x2="-2795.5" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1416.2 2021)" y1="3801.6" x1="-2860.7">
<stop stop-color="#D8E7EB" offset="0"/>
<stop stop-color="#CAD9DF" offset=".0849"/>
<stop stop-color="#A5B8C2" offset=".2184"/>
<stop stop-color="#728896" offset=".3836"/>
<stop stop-color="#415867" offset=".5537"/>
<stop stop-color="#677E8B" offset=".6417"/>
<stop stop-color="#92A7B1" offset=".742"/>
<stop stop-color="#B7C8D0" offset=".8374"/>
<stop stop-color="#CFDFE4" offset=".9257"/>
<stop stop-color="#D8E7EB" offset="1"/>
</linearGradient>
<path d="m56.531 93.846 2.8 0.143 2.801-0.15 2.784-0.467 2.79-0.925 2.789-1.092 2.632-1.4 2.795-1.551 2.631-1.866 2.785-2.012 2.637-2.184 2.637-2.173 2.631-2.476 2.479-2.328 2.484-2.479 2.479-2.494 2.479-2.468-2.795 1.545-2.774 1.563-2.652 1.384-2.474 1.562-2.642 1.55-2.483 1.709-2.463 1.556-2.643 1.556-2.468 1.698-2.494 1.561-2.637 1.711-2.637 1.551-2.784 1.709-2.784 1.706-2.948 1.869-2.953 1.708v-0.016z" fill="url(#l)"/>
<linearGradient id="k" y2="3590.5" gradientUnits="userSpaceOnUse" x2="-2802.2" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1416.2 2021)" y1="3799.5" x1="-2867.4">
<stop stop-color="#D8E7EB" offset="0"/>
<stop stop-color="#CAD9DF" offset=".0849"/>
<stop stop-color="#A5B8C2" offset=".2184"/>
<stop stop-color="#728896" offset=".3836"/>
<stop stop-color="#415867" offset=".5537"/>
<stop stop-color="#677E8B" offset=".6417"/>
<stop stop-color="#92A7B1" offset=".742"/>
<stop stop-color="#B7C8D0" offset=".8374"/>
<stop stop-color="#CFDFE4" offset=".9257"/>
<stop stop-color="#D8E7EB" offset="1"/>
</linearGradient>
<path d="m79.592 31.814 3.259 0.304 3.096 0.616 2.637 0.931 2.484 1.09 2.172 1.392 2.018 1.556 1.869 1.548 1.545 1.864 1.397 2.004 1.261 2.015 1.076 2.02 0.933 2.173 0.923 2.162 0.775 2.175 0.78 2.022 0.623 2.01-1.405-1.862-1.393-1.855-1.405-1.862-1.551-1.708-1.395-1.852-1.548-1.703-1.556-1.708-1.551-1.714-1.719-1.551-1.714-1.703-1.698-1.551-1.861-1.387-1.867-1.397-2.006-1.397-2.025-1.395-2.17-1.25 0.016 0.013z" fill="url(#k)"/>
<linearGradient id="j" y2="3584.8" gradientUnits="userSpaceOnUse" x2="-2820.6" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1416.2 2021)" y1="3793.7" x1="-2885.8">
<stop stop-color="#D8E7EB" offset="0"/>
<stop stop-color="#CAD9DF" offset=".0849"/>
<stop stop-color="#A5B8C2" offset=".2184"/>
<stop stop-color="#728896" offset=".3836"/>
<stop stop-color="#415867" offset=".5537"/>
<stop stop-color="#677E8B" offset=".6417"/>
<stop stop-color="#92A7B1" offset=".742"/>
<stop stop-color="#B7C8D0" offset=".8374"/>
<stop stop-color="#CFDFE4" offset=".9257"/>
<stop stop-color="#D8E7EB" offset="1"/>
</linearGradient>
<path d="m102.7 13.16 2.01 1.703 1.708 1.861 1.556 2.178 1.09 2.32 0.931 2.634 0.78 2.793 0.472 2.784 0.309 3.108 0.158 3.093 0.153 3.265-0.148 3.259-0.152 3.265-0.306 3.406-0.314 3.417-0.456 3.26-0.306 3.409-0.638-2.943-0.606-2.792-0.465-2.789-0.472-2.79-0.478-2.79-0.3-2.637-0.475-2.795-0.327-2.784-0.464-2.789-0.316-2.79-0.465-2.792-0.308-2.943-0.473-2.792-0.622-3.101-0.459-3.106-0.617-3.105v-0.017z" fill="url(#j)"/>
<linearGradient id="i" y2="3592.2" gradientUnits="userSpaceOnUse" x2="-2796.6" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1416.2 2021)" y1="3801.2" x1="-2861.8">
<stop stop-color="#D8E7EB" offset="0"/>
<stop stop-color="#CAD9DF" offset=".0849"/>
<stop stop-color="#A5B8C2" offset=".2184"/>
<stop stop-color="#728896" offset=".3836"/>
<stop stop-color="#415867" offset=".5537"/>
<stop stop-color="#677E8B" offset=".6417"/>
<stop stop-color="#92A7B1" offset=".742"/>
<stop stop-color="#B7C8D0" offset=".8374"/>
<stop stop-color="#CFDFE4" offset=".9257"/>
<stop stop-color="#D8E7EB" offset="1"/>
</linearGradient>
<path d="m86.094 8.092 0.301 4.182 0.791 3.721 0.929 3.101 1.241 2.787 1.247 2.481 1.546 2.181 1.716 2.004 1.551 2.009 1.722 2.03 1.54 2.168 1.566 2.325 1.239 2.629 1.244 3.098 0.772 3.418 0.62 4.028 0.316 4.644-1.551-1.693-1.872-2.183-2.167-2.312-2.484-2.795-2.637-2.787-2.642-3.098-2.474-3.26-2.331-3.253-2.017-3.41-1.717-3.417-1.244-3.414-0.617-3.254 0.161-3.265 0.762-3.101 1.688-2.953 2.803-2.621-0.002 0.01z" fill="url(#i)"/>
<linearGradient id="h" y2="3585.3" gradientUnits="userSpaceOnUse" x2="-2818.9" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1416.2 2021)" y1="3794.3" x1="-2884.1">
<stop stop-color="#D8E7EB" offset="0"/>
<stop stop-color="#CAD9DF" offset=".0849"/>
<stop stop-color="#A5B8C2" offset=".2184"/>
<stop stop-color="#728896" offset=".3836"/>
<stop stop-color="#415867" offset=".5537"/>
<stop stop-color="#677E8B" offset=".6417"/>
<stop stop-color="#92A7B1" offset=".742"/>
<stop stop-color="#B7C8D0" offset=".8374"/>
<stop stop-color="#CFDFE4" offset=".9257"/>
<stop stop-color="#D8E7EB" offset="1"/>
</linearGradient>
<path d="m105.97 57.688-0.316-1.55-0.617-1.859-0.923-1.858-0.934-2.176-1.102-2.159-1.092-2.484-0.76-2.634-0.785-2.792-0.312-2.942 0.147-3.268 0.612-3.259 1.252-3.56 1.852-3.726 2.629-3.884 3.718-4.189 4.503-4.346-1.244 2.792-0.923 2.787-1.089 2.795-0.772 2.784-0.612 2.79-0.765 2.79-0.464 2.95-0.472 2.784-0.298 2.8-0.307 2.943-0.311 2.945-0.147 2.953-0.158 3.111-0.143 3.095-0.155 3.102v3.259l-0.012 0.006z" fill="url(#h)"/>
<linearGradient id="g" y2="3593.5" gradientUnits="userSpaceOnUse" x2="-2792.5" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1416.2 2021)" y1="3802.5" x1="-2857.8">
<stop stop-color="#D8E7EB" offset="0"/>
<stop stop-color="#CAD9DF" offset=".0849"/>
<stop stop-color="#A5B8C2" offset=".2184"/>
<stop stop-color="#728896" offset=".3836"/>
<stop stop-color="#415867" offset=".5537"/>
<stop stop-color="#677E8B" offset=".6417"/>
<stop stop-color="#92A7B1" offset=".742"/>
<stop stop-color="#B7C8D0" offset=".8374"/>
<stop stop-color="#CFDFE4" offset=".9257"/>
<stop stop-color="#D8E7EB" offset="1"/>
</linearGradient>
<path d="m60.544 68.409 2.646 1.864 2.623 1.548 2.642 1.092 2.632 0.775 2.652 0.604 2.632 0.158h2.64l2.48-0.158 2.468-0.309 2.471-0.627 2.328-0.615 2.326-0.782 2.178-0.768 2.167-0.937 2.015-0.774 2.02-0.932-2.325 0.304-2.479 0.321-2.33 0.307-2.483 0.16-2.323 0.156-2.484 0.306h-2.32l-2.479 0.158h-4.809l-2.497-0.146-2.466-0.155-2.483-0.304-2.474-0.303-2.489-0.472-2.479-0.462v-0.009z" fill="url(#g)"/>
<linearGradient id="f" y2="3594.7" gradientUnits="userSpaceOnUse" x2="-2788.8" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1416.2 2021)" y1="3803.7" x1="-2854">
<stop stop-color="#D8E7EB" offset="0"/>
<stop stop-color="#CAD9DF" offset=".0849"/>
<stop stop-color="#A5B8C2" offset=".2184"/>
<stop stop-color="#728896" offset=".3836"/>
<stop stop-color="#415867" offset=".5537"/>
<stop stop-color="#677E8B" offset=".6417"/>
<stop stop-color="#92A7B1" offset=".742"/>
<stop stop-color="#B7C8D0" offset=".8374"/>
<stop stop-color="#CFDFE4" offset=".9257"/>
<stop stop-color="#D8E7EB" offset="1"/>
</linearGradient>
<path d="m74.993 80.984 3.111-1.247 3.412-1.862 3.56-2.02 3.412-2.167 3.412-2.015 2.789-1.875 2.326-1.241 1.703-0.617-3.412 0.775-3.416 0.625-3.721 0.763-3.876 0.785-3.878 0.934-3.871 0.934-3.718 1.244-3.723 1.239-3.573 1.403-3.446 1.7-3.105 2.025-2.785 2.17-2.494 2.64-1.998 2.784-1.709 3.274-1.093 3.716 1.095-1.397 1.231-1.242 1.249-1.242 1.388-1.244 1.561-1.087 1.551-1.097 1.708-1.081 1.703-0.934 1.867-0.928 1.698-0.775 1.851-0.611 1.878-0.786 1.851-0.467 1.867-0.461 1.695-0.306 1.866-0.316 0.034 0.007z" fill="url(#f)"/>
<linearGradient id="e" y2="3588.3" gradientUnits="userSpaceOnUse" x2="-2809.3" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1416.2 2021)" y1="3797.2" x1="-2874.5">
<stop stop-color="#D8E7EB" offset="0"/>
<stop stop-color="#CAD9DF" offset=".0849"/>
<stop stop-color="#A5B8C2" offset=".2184"/>
<stop stop-color="#728896" offset=".3836"/>
<stop stop-color="#415867" offset=".5537"/>
<stop stop-color="#677E8B" offset=".6417"/>
<stop stop-color="#92A7B1" offset=".742"/>
<stop stop-color="#B7C8D0" offset=".8374"/>
<stop stop-color="#CFDFE4" offset=".9257"/>
<stop stop-color="#D8E7EB" offset="1"/>
</linearGradient>
<path d="m67.888 108.74 2.017-4.023 2.015-3.27 2.168-2.795 2.172-2.32 2.168-1.864 2.32-1.553 2.336-1.551 2.315-1.402 2.325-1.397 2.325-1.403 2.32-1.855 2.326-2.021 2.173-2.642 2.314-2.948 2.184-3.723 2.151-4.504-2.009 1.25-2.632 1.393-3.111 1.568-3.243 1.701-3.578 1.858-3.721 2.181-3.56 2.168-3.417 2.483-3.256 2.486-2.945 2.798-2.481 2.942-1.851 2.948-1.247 3.105-0.465 3.409 0.475 3.418 1.396 3.567 0.016-0.004z" fill="url(#e)"/>
<linearGradient id="d" y2="3582.6" gradientUnits="userSpaceOnUse" x2="-2827.4" gradientTransform="matrix(-.5318 .0004 -.0004 -.5318 -1416.2 2021)" y1="3791.6" x1="-2892.6">
<stop stop-color="#D8E7EB" offset="0"/>
<stop stop-color="#CAD9DF" offset=".0849"/>
<stop stop-color="#A5B8C2" offset=".2184"/>
<stop stop-color="#728896" offset=".3836"/>
<stop stop-color="#415867" offset=".5537"/>
<stop stop-color="#677E8B" offset=".6417"/>
<stop stop-color="#92A7B1" offset=".742"/>
<stop stop-color="#B7C8D0" offset=".8374"/>
<stop stop-color="#CFDFE4" offset=".9257"/>
<stop stop-color="#D8E7EB" offset="1"/>
</linearGradient>
<path d="m106.91 70.526-1.256 1.095-1.387 1.247-1.861 1.084-2.009 1.241-2.173 1.237-2.323 1.402-2.167 1.703-2.181 2.021-1.852 2.178-1.703 2.642-1.399 3.101-0.932 3.42-0.464 4.021 0.164 4.656 0.774 5.12 1.562 5.896 0.611-2.956 0.617-2.792 0.78-2.632 0.765-2.79 0.929-2.637 1.097-2.479 1.086-2.634 1.234-2.642 1.233-2.481 1.397-2.486 1.403-2.629 1.397-2.481 1.54-2.483 1.703-2.634 1.703-2.637 1.709-2.643v-0.028z" fill="url(#d)"/>
</g>
</g>
</g>
<g stroke="#000" stroke-width="2" fill="#fff" transform="translate(.77474 .076835)">
<path d="m172.88 122.2h-16.574l-2.303 7.799h-14.906l17.757-47.244h15.924l17.753 47.244h-15.288l-2.363-7.799zm-3.028-10.216-5.215-16.983-5.16 16.983h10.375z"/>
<path d="m195.11 82.756h24.267c5.285 0 9.244 1.257 11.875 3.771s3.948 6.091 3.948 10.731c0 4.77-1.434 8.497-4.302 11.183s-7.246 4.028-13.132 4.028h-7.992v17.531h-14.663v-47.244zm14.664 20.141h3.577c2.814 0 4.791-0.488 5.93-1.466s1.708-2.229 1.708-3.754c0-1.482-0.495-2.739-1.482-3.771-0.988-1.031-2.847-1.547-5.575-1.547h-4.157v10.538z"/>
<path d="m266.27 122.2h-16.574l-2.303 7.799h-14.906l17.757-47.244h15.924l17.753 47.244h-15.288l-2.363-7.799zm-3.028-10.216-5.215-16.983-5.16 16.983h10.375z"/>
<path d="m318.82 110.66 12.794 3.867c-0.859 3.588-2.213 6.585-4.061 8.991s-4.141 4.222-6.88 5.446-6.225 1.837-10.458 1.837c-5.135 0-9.33-0.746-12.584-2.238s-6.064-4.116-8.427-7.874c-2.364-3.757-3.545-8.566-3.545-14.428 0-7.815 2.079-13.821 6.236-18.019s10.039-6.296 17.644-6.296c5.951 0 10.629 1.204 14.035 3.609 3.405 2.406 5.935 6.102 7.589 11.086l-12.891 2.868c-0.451-1.439-0.924-2.492-1.418-3.158-0.817-1.117-1.816-1.977-2.997-2.578-1.182-0.601-2.503-0.902-3.964-0.902-3.309 0-5.844 1.331-7.605 3.992-1.333 1.974-1.998 5.075-1.998 9.302 0 5.236 0.794 8.826 2.385 10.767 1.59 1.942 3.824 2.913 6.703 2.913 2.792 0 4.903-0.784 6.333-2.353 1.428-1.568 2.465-3.846 3.109-6.832z"/>
<path d="m338.77 82.756h14.599v16.532h15.952v-16.532h14.663v47.244h-14.663v-19.11h-15.952v19.11h-14.599v-47.244z"/>
<path d="m393.65 82.756h39.123v10.087h-24.492v7.509h22.72v9.636h-22.72v9.313h25.201v10.699h-39.832v-47.244z"/>
<path d="m492.4 122.2h-16.574l-2.302 7.799h-14.906l17.757-47.244h15.924l17.753 47.244h-15.287l-2.365-7.799zm-3.028-10.216-5.214-16.983-5.161 16.983h10.375z"/>
<path d="m514.79 82.756h13.632l17.789 26.138v-26.138h13.761v47.244h-13.761l-17.692-25.94v25.94h-13.729v-47.244z"/>
<path d="m566.36 82.756h44.376v11.666h-14.889v35.578h-14.599v-35.578h-14.889v-11.666z"/>
</g>
<g stroke="#000" stroke-width="2" fill="#fff" transform="translate(.77474 .076835)">
<path d="m145.15 35.753h32.273v8.484h-10.828v25.875h-10.617v-25.875h-10.828v-8.484z"/>
<path d="m182.27 35.753h10.617v12.023h11.602v-12.023h10.664v34.359h-10.664v-13.898h-11.602v13.898h-10.617v-34.359z"/>
<path d="m222.19 35.753h28.453v7.336h-17.812v5.461h16.523v7.008h-16.523v6.773h18.328v7.781h-28.969v-34.359z"/>
</g>
<g stroke="#000" stroke-width="2" fill="#fff" transform="translate(.77474 .076835)">
<path d="m340.47 142.16h17.648c3.844 0 6.723 0.914 8.637 2.742s2.871 4.43 2.871 7.805c0 3.469-1.043 6.18-3.129 8.133s-5.27 2.93-9.551 2.93h-5.812v12.75h-10.664v-34.36zm10.664 14.648h2.602c2.047 0 3.484-0.355 4.312-1.066s1.242-1.621 1.242-2.73c0-1.078-0.359-1.992-1.078-2.742s-2.07-1.125-4.055-1.125h-3.023v7.663z"/>
<path d="m375.32 176.52v-34.359h17.695c3.281 0 5.789 0.281 7.523 0.844s3.133 1.605 4.195 3.129 1.594 3.379 1.594 5.566c0 1.906-0.406 3.551-1.22 4.934-0.812 1.383-1.931 2.504-3.353 3.363-0.907 0.547-2.15 1-3.729 1.359 1.265 0.423 2.187 0.845 2.764 1.267 0.391 0.282 0.956 0.884 1.698 1.807s1.237 1.634 1.487 2.135l5.142 9.956h-11.996l-5.676-10.5c-0.719-1.359-1.359-2.242-1.922-2.648-0.766-0.531-1.633-0.797-2.602-0.797h-0.938v13.945h-10.662zm10.664-20.438h4.477c0.484 0 1.422-0.156 2.812-0.469 0.703-0.141 1.277-0.5 1.723-1.078s0.668-1.242 0.668-1.992c0-1.109-0.352-1.961-1.055-2.555s-2.023-0.891-3.961-0.891h-4.664v6.985z"/>
<path d="m410.36 159.36c0-5.609 1.562-9.977 4.688-13.102s7.477-4.688 13.055-4.688c5.719 0 10.125 1.535 13.219 4.605s4.641 7.371 4.641 12.902c0 4.016-0.676 7.309-2.027 9.879s-3.305 4.57-5.859 6-5.738 2.145-9.551 2.145c-3.875 0-7.082-0.617-9.621-1.852s-4.598-3.188-6.176-5.859-2.369-6.015-2.369-10.03zm10.618 0.047c0 3.469 0.645 5.961 1.934 7.477s3.043 2.273 5.262 2.273c2.281 0 4.047-0.742 5.297-2.227s1.875-4.148 1.875-7.992c0-3.234-0.652-5.598-1.957-7.09s-3.074-2.238-5.309-2.238c-2.141 0-3.859 0.758-5.156 2.273s-1.946 4.024-1.946 7.524z"/>
<path d="m465.98 142.16h10.641v18.667c0 3.919-0.348 6.902-1.043 8.947-0.695 2.046-2.094 3.779-4.195 5.2s-4.793 2.131-8.074 2.131c-3.469 0-6.156-0.469-8.062-1.406s-3.379-2.309-4.418-4.113-1.652-4.035-1.84-6.691l10.148-1.383c0.016 1.516 0.148 2.641 0.398 3.375s0.672 1.328 1.266 1.781c0.406 0.297 0.984 0.445 1.734 0.445 1.188 0 2.059-0.441 2.613-1.323 0.555-0.882 0.832-2.369 0.832-4.461v-21.169z"/>
<path d="m483.67 142.16h28.453v7.336h-17.812v5.461h16.523v7.008h-16.523v6.773h18.328v7.781h-28.969v-34.359z"/>
<path d="m541.23 162.46 9.305 2.812c-0.625 2.609-1.609 4.789-2.953 6.539s-3.012 3.07-5.004 3.961-4.527 1.336-7.605 1.336c-3.734 0-6.785-0.543-9.152-1.628s-4.41-2.994-6.129-5.727c-1.719-2.732-2.578-6.23-2.578-10.493 0-5.684 1.512-10.052 4.535-13.104s7.301-4.579 12.832-4.579c4.328 0 7.73 0.875 10.207 2.625s4.316 4.438 5.52 8.062l-9.375 2.086c-0.328-1.047-0.672-1.812-1.031-2.297-0.594-0.812-1.32-1.438-2.18-1.875s-1.82-0.656-2.883-0.656c-2.406 0-4.25 0.968-5.531 2.903-0.969 1.436-1.453 3.691-1.453 6.765 0 3.808 0.578 6.418 1.734 7.831s2.781 2.119 4.875 2.119c2.031 0 3.566-0.57 4.605-1.711s1.793-2.797 2.261-4.969z"/>
<path d="m553.28 142.16h32.273v8.484h-10.828v25.875h-10.617v-25.875h-10.828v-8.484z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

View File

@ -1,44 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 697.32 518.74" xml:space="preserve" viewBox="0 0 638.90594 148.79584" version="1.1" y="0px" x="0px" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<g fill="#010101">
<polygon points="604.83 20.641 604.83 36.572 627.9 36.572 627.9 39.274 604.83 39.274 604.83 55.493 630.77 55.493 630.77 58.195 601.84 58.195 601.84 17.938 630.48 17.938 630.48 20.641" transform="translate(-.000078826 -.0012690)"/>
<polygon points="538.58 36.63 538.58 17.938 541.57 17.938 541.57 58.195 538.58 58.195 538.58 39.332 512.81 39.332 512.81 58.195 509.82 58.195 509.82 17.938 512.81 17.938 512.81 36.63" transform="translate(-.000078826 -.0012690)"/>
<path d="m437.3 58.886c-2.877 0-5.539-0.537-7.994-1.61-2.453-1.073-4.572-2.54-6.355-4.4-1.783-1.859-3.172-4.054-4.17-6.585-0.996-2.53-1.494-5.232-1.494-8.108v-0.114c0-2.837 0.508-5.521 1.525-8.052 1.016-2.531 2.412-4.744 4.195-6.642s3.902-3.393 6.355-4.486c2.455-1.093 5.137-1.639 8.053-1.639 1.801 0 3.432 0.154 4.887 0.46 1.459 0.309 2.809 0.749 4.055 1.323 1.246 0.575 2.416 1.256 3.51 2.041 1.094 0.787 2.156 1.66 3.191 2.617l-2.127 2.185c-0.883-0.844-1.803-1.628-2.762-2.357-0.957-0.729-1.984-1.352-3.076-1.869-1.094-0.519-2.281-0.929-3.566-1.236-1.283-0.308-2.674-0.461-4.17-0.461-2.416 0-4.658 0.461-6.727 1.381-2.07 0.919-3.863 2.195-5.379 3.824-1.514 1.63-2.703 3.539-3.564 5.722-0.865 2.187-1.295 4.543-1.295 7.074v0.115c0 2.531 0.441 4.897 1.322 7.102 0.883 2.206 2.08 4.123 3.594 5.752 1.516 1.63 3.307 2.912 5.377 3.853s4.312 1.409 6.729 1.409c2.914 0 5.443-0.535 7.592-1.609 2.146-1.073 4.236-2.626 6.27-4.658l2.012 1.955c-1.074 1.035-2.176 1.984-3.307 2.847s-2.338 1.602-3.623 2.215c-1.287 0.611-2.674 1.093-4.17 1.437-1.496 0.341-3.127 0.514-4.888 0.514z"/>
<path d="m340.63 17.649h2.876l18.75 40.545h-3.277l-5.119-11.271h-23.753l-5.119 11.271h-3.105l18.747-40.545zm11.962 26.571-10.582-23.291-10.638 23.291h21.22z"/>
<path d="m238.6 17.937h14.607c2.224 0 4.246 0.277 6.067 0.834s3.395 1.36 4.715 2.415c1.324 1.055 2.35 2.339 3.077 3.854 0.729 1.516 1.094 3.249 1.094 5.204v0.114c0 2.109-0.422 3.969-1.265 5.578-0.844 1.611-1.985 2.953-3.423 4.026s-3.104 1.879-5.003 2.415c-1.898 0.537-3.899 0.806-6.011 0.806h-10.868v15.011h-2.99v-40.257zm14.032 22.544c1.879 0 3.585-0.229 5.119-0.689 1.533-0.47 2.847-1.132 3.939-2.004 1.095-0.862 1.946-1.917 2.561-3.154 0.613-1.227 0.92-2.597 0.92-4.103v-0.114c0-1.62-0.297-3.039-0.893-4.256-0.593-1.209-1.428-2.225-2.501-3.037-1.073-0.808-2.358-1.42-3.854-1.852-1.493-0.422-3.145-0.633-4.945-0.633h-11.387v19.842h11.041z"/>
<path d="m160.16 17.649h2.875l18.75 40.545h-3.278l-5.119-11.271h-23.752l-5.119 11.271h-3.106l18.749-40.545zm11.962 26.571-10.582-23.291-10.64 23.291h21.222z"/>
<path d="m636.2 95.651c0 9.738-4.248 15.873-12.748 18.406l15.451 21.445h-12.666l-14.1-19.84h-13.086v19.84h-9.963v-59.016h21.953c9.006 0 15.449 1.521 19.334 4.56 3.884 3.04 5.825 7.908 5.825 14.605zm-24.738 10.978c5.629 0 9.457-0.872 11.482-2.619 2.027-1.742 3.039-4.543 3.039-8.4 0-3.854-1.039-6.499-3.121-7.935-2.084-1.437-5.799-2.154-11.146-2.154h-12.664v21.108h12.41z"/>
<path d="m569.87 127.35c-5.965 5.825-13.34 8.738-22.121 8.738-8.779 0-16.154-2.912-22.121-8.738-5.967-5.825-8.949-13.087-8.949-21.784 0-8.696 2.982-15.956 8.949-21.783 5.967-5.823 13.342-8.738 22.121-8.738 8.781 0 16.156 2.912 22.121 8.738 5.967 5.825 8.951 13.087 8.951 21.783 0 8.698-2.984 15.959-8.951 21.784zm-7.303-36.937c-4.023-4.166-8.963-6.248-14.818-6.248-5.854 0-10.791 2.082-14.818 6.248-4.021 4.165-6.037 9.217-6.037 15.154 0 5.939 2.014 10.991 6.037 15.157 4.025 4.165 8.965 6.248 14.818 6.248 5.855 0 10.793-2.083 14.818-6.248 4.023-4.166 6.035-9.218 6.035-15.157 0-5.937-2.011-10.989-6.035-15.154z"/>
<polygon points="485.73 85.605 467.83 85.605 467.83 76.487 513.59 76.487 513.59 85.605 495.7 85.605 495.7 135.5 485.73 135.5" transform="translate(-.000078826 -.0012690)"/>
<path d="m426.07 122.08-5.91 13.424h-10.637l26.006-59.017h10.637l26.006 59.017h-10.639l-5.912-13.424h-29.551zm25.498-9.203-10.722-24.314-10.723 24.314h21.445z"/>
<path d="m386.93 135.5h-25.836v-59.017h22.967c3.996 0 7.443 0.479 10.342 1.437 2.896 0.957 5.049 2.251 6.457 3.885 2.701 3.039 4.053 6.474 4.053 10.301 0 4.614-1.463 8.048-4.391 10.3-1.07 0.788-1.801 1.28-2.195 1.477-0.395 0.198-1.098 0.522-2.109 0.973 3.658 0.789 6.572 2.435 8.74 4.938 2.166 2.505 3.248 5.615 3.248 9.33 0 4.108-1.406 7.739-4.221 10.892-3.321 3.654-9.007 5.484-17.055 5.484zm-15.873-9.203h15.621c3.658 0 6.459-0.576 8.4-1.729 1.941-1.154 2.912-3.336 2.912-6.545 0-5.233-4.191-7.851-12.578-7.851h-14.355v16.125zm0-25.33h12.666c7.205 0 10.807-2.446 10.807-7.345 0-2.812-0.873-4.839-2.617-6.078-1.744-1.238-4.447-1.858-8.105-1.858h-12.748v15.281h-0.003z"/>
<path d="m311.82 121.99c2.701 3.152 6.359 4.728 10.976 4.728s8.275-1.575 10.977-4.728c2.702-3.152 4.053-7.431 4.053-12.833v-32.675h9.963v33.098c0 8.5-2.335 15.043-7.008 19.631-4.672 4.585-10.665 6.88-17.982 6.88-7.318 0-13.312-2.294-17.983-6.88-4.672-4.588-7.009-11.131-7.009-19.631v-33.098h9.963v32.675c-0.003 5.402 1.349 9.681 4.05 12.833z"/>
<path d="m265.68 126.47c3.434 0 6.388-0.576 8.866-1.73 2.476-1.153 5.065-2.997 7.767-5.53l6.416 6.585c-6.247 6.923-13.833 10.384-22.753 10.384-8.922 0-16.323-2.87-22.205-8.611s-8.822-13.003-8.822-21.783 2.996-16.098 8.991-21.951c5.994-5.854 13.565-8.781 22.711-8.781s16.788 3.378 22.922 10.132l-6.332 6.924c-2.812-2.703-5.474-4.588-7.979-5.657-2.503-1.069-5.446-1.604-8.823-1.604-5.966 0-10.976 1.928-15.028 5.784-4.053 3.854-6.079 8.78-6.079 14.773 0 5.994 2.014 11.004 6.038 15.029 4.023 4.024 8.795 6.036 14.31 6.036z"/>
<polygon points="213.87 135.5 180.44 92.445 180.44 135.5 170.48 135.5 170.48 76.487 180.44 76.487 214.71 120.56 214.71 76.487 224.68 76.487 224.68 135.5" transform="translate(-.000078826 -.0012690)"/>
<rect height="59.017" width="9.962" y="76.486" x="146.45"/>
</g>
<linearGradient id="a" y2="446.93" gradientUnits="userSpaceOnUse" x2="139.38" gradientTransform="matrix(1 0 0 -1 -72.34 481.13)" y1="342.52" x1="119.54">
<stop stop-color="#211C52" offset="0"/>
<stop stop-color="#CB2128" offset=".5"/>
<stop stop-color="#F89A20" offset="1"/>
</linearGradient>
<path fill="url(#a)" d="m60.645 20.391c-0.004-0.438-0.01-0.877-0.021-1.319 0.091 0.144 0.346 0.586 0.769 1.319h-0.748zm-15.88 46.21c-4.634 8.616-7.274 17.605-7.949 26.962-0.602 8.33 0.299 15.514 2.728 21.536 0.332 0.819 0.653 1.577 0.975 2.278-1.92-1.357-3.751-2.773-5.498-4.25-0.147-0.116-0.254-0.165-0.322-0.148 2.294 3.668 5.152 6.992 8.578 9.973 0.529 0.463 1.412 0.68 1.63 1.359 0.619 1.948-1.065 19.44 4.346 23.517 3.441 2.589 18.65-0.667 23.346-2.184 24.498-7.912 43.499-30.539 40.673-63.149-3.1-35.763-26.66-72.131-50.158-80.873-6.352-2.364-7.761-2.147-14.357 0.674-22.93 9.805-45.453 45.291-48.478 80.198-2.9061 33.546 17.276 56.526 42.786 63.786 0.689 0.197 1.356 0.378 2.004 0.549-0.657-1.358-1.195-2.9-1.631-4.53-26.719-7.946-41.665-31.636-39.253-59.469 2.306-26.608 20.14-65.826 46.108-76.934 5.429-2.318 5.942-2.649 11.447-0.601 26.655 9.914 45.274 50.485 47.618 77.535 2.507 28.92-13.8 53.254-42.002 60.223-2.836 0.7-5.296 1.163-7.599 1.394-7.308 0.734-9.849 2.027-11.189-5.583-2.952-16.784-0.72-47.158 6.583-58.812 0.059-0.846 0.01 0.703-0.54 2.026-0.254 0.594-0.417 0.957-0.488 1.144-4.374 10.02-6.814 39.086-4.733 44.606-0.602-1.978 0.478-6.143 2.039-6.997l0.895-0.626c4.897-3.527 8.064-9.07 11.604-16.088-0.062-0.098-0.176-0.086-0.341 0.033-1.651 1.382-3.355 2.622-5.106 3.719 3.986-4.187 7.467-9.533 10.45-16.046-0.081-0.118-0.219-0.097-0.415 0.057-1.178 1.063-2.377 2.063-3.601 3.002 5.006-9.063 9.414-19.562 9.876-31.562 0.229-7.766-1.192-15.249-4.265-22.396-1.06-2.443-2.538-5.363-4.444-8.809-2.817-5.081-4.34-7.832-4.583-8.231 0.126 11.012-1.816 19.964-5.825 26.783-1.034 1.812-2.869 4.45-5.521 7.91-2.462 3.228-4.269 5.899-5.388 8.019z"/>
</svg>

Before

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 193 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 141 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 362 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 605 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 215 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

View File

@ -1,173 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 549.56701 519.84498" version="1.2" y="0px" x="0px" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<font id="font3" horiz-origin-x="0" horiz-origin-y="0" horiz-adv-x="2048" vert-origin-x="45" vert-origin-y="90" vert-adv-y="90">
<font-face underline-position="-155" font-family="Helvetica" underline-thickness="101" units-per-em="2048"/>
<missing-glyph d="M66,0l0,1469l1166,0l0,-1469M1048,184l0,1101l-798,0l0,-1101z" horiz-adv-x="1298"/>
<glyph horiz-adv-x="569" unicode=" "/>
<glyph horiz-adv-x="682" unicode="(" d="M606,1493C501,1290 433,1140 402,1044C355,898 331,729 331,538C331,345 358,168 412,8C445,-91 511,-233 609,-418l-121,0C391,-266 330,-169 307,-127C284,-85 258,-28 231,44C194,143 168,248 153,360C146,418 142,473 142,526C142,723 173,899 235,1053C274,1151 356,1298 481,1493z"/>
<glyph horiz-adv-x="682" unicode=")" d="M71,-418C177,-211 245,-61 276,34C323,177 346,345 346,538C346,731 319,907 265,1067C232,1166 166,1308 68,1493l121,0C292,1329 354,1228 376,1190C397,1151 421,1098 446,1031C478,948 501,865 515,784C528,703 535,624 535,549C535,352 504,176 441,21C402,-78 320,-225 196,-418z"/>
<glyph horiz-adv-x="682" unicode="-" d="M85,663l502,0l0,-185l-502,0z"/>
<glyph horiz-adv-x="569" unicode="." d="M175,218l209,0l0,-218l-209,0z"/>
<glyph horiz-adv-x="1139" unicode="0" d="M956,1203C1020,1085 1052,923 1052,718C1052,523 1023,362 965,235C881,52 744,-39 553,-39C381,-39 253,36 169,185C99,310 64,477 64,687C64,850 85,989 127,1106C206,1323 348,1432 554,1432C739,1432 873,1356 956,1203M858,711C858,874 838,1008 798,1113C758,1218 680,1270 565,1270C459,1270 382,1220 333,1121C284,1021 259,874 259,680C259,534 275,417 306,328C354,193 436,125 552,125C645,125 720,166 775,249C830,332 858,486 858,711z"/>
<glyph horiz-adv-x="1139" unicode="1" d="M196,1014l0,138C326,1165 417,1186 468,1216C519,1245 558,1315 583,1426l142,0l0,-1426l-192,0l0,1014z"/>
<glyph horiz-adv-x="1139" unicode="2" d="M400,571l192,111C678,732 738,775 773,810C828,865 855,929 855,1000C855,1083 830,1150 780,1199C730,1248 663,1272 580,1272C457,1272 371,1225 324,1132C299,1082 285,1013 282,924l-183,0C101,1049 124,1150 168,1229C246,1368 384,1437 581,1437C745,1437 865,1393 941,1304C1016,1215 1054,1117 1054,1008C1054,893 1014,795 933,714C886,667 803,609 682,542l-137,-76C480,430 428,396 391,363C324,305 282,241 265,170l782,0l0,-170l-983,0C71,123 96,231 141,322C185,413 271,496 400,571z"/>
<glyph horiz-adv-x="1139" unicode="3" d="M49,440l188,0C245,347 262,280 289,238C336,163 420,125 542,125C637,125 713,150 770,201C827,252 856,317 856,397C856,496 826,565 766,604C705,643 621,663 514,663C502,663 490,663 478,663C465,662 453,662 440,661l0,159C459,818 474,817 487,816C500,815 513,815 528,815C595,815 651,826 694,847C770,884 808,951 808,1047C808,1118 783,1173 732,1212C681,1251 622,1270 555,1270C435,1270 352,1230 306,1150C281,1106 266,1043 263,962l-178,0C85,1069 106,1159 149,1234C222,1367 351,1434 536,1434C682,1434 795,1402 875,1337C955,1272 995,1177 995,1054C995,966 971,895 924,840C895,806 857,779 810,760C885,739 944,700 987,641C1029,582 1050,509 1050,424C1050,287 1005,176 915,90C825,4 697,-39 532,-39C363,-39 240,8 164,101C87,194 49,307 49,440z"/>
<glyph horiz-adv-x="1139" unicode="4" d="M677,507l0,649l-459,-649M680,0l0,350l-628,0l0,176l656,910l152,0l0,-929l211,0l0,-157l-211,0l0,-350z"/>
<glyph horiz-adv-x="1139" unicode="5" d="M253,365C265,262 313,191 396,152C439,132 488,122 544,122C651,122 730,156 781,224C832,292 858,367 858,450C858,550 828,627 767,682C706,737 632,764 547,764C485,764 432,752 388,728C343,704 305,671 274,628l-156,9l109,771l744,0l0,-174l-609,0l-61,-398C334,861 366,880 396,893C449,915 511,926 581,926C712,926 824,884 915,799C1006,714 1052,607 1052,477C1052,342 1010,222 927,119C843,16 709,-36 526,-36C409,-36 306,-3 217,63C127,128 77,229 66,365z"/>
<glyph horiz-adv-x="1139" unicode="6" d="M1028,1057l-178,0C839,1114 822,1158 799,1190C756,1250 690,1280 602,1280C501,1280 421,1234 362,1141C303,1048 270,914 263,741C304,802 356,847 419,877C476,904 540,917 611,917C731,917 836,879 925,802C1014,725 1059,611 1059,459C1059,329 1017,214 932,114C847,13 727,-37 570,-37C436,-37 320,14 223,116C126,217 77,388 77,629C77,807 99,958 142,1082C225,1319 378,1438 599,1438C759,1438 871,1397 934,1314C997,1231 1028,1145 1028,1057M869,444C869,517 848,587 806,654C764,720 688,753 577,753C500,753 432,727 374,676C315,625 286,547 286,444C286,353 313,277 366,216C419,154 492,123 586,123C681,123 752,155 799,219C846,282 869,357 869,444z"/>
<glyph horiz-adv-x="1139" unicode="7" d="M1071,1408l0,-157C1025,1206 964,1129 888,1018C811,907 744,788 685,660C627,535 583,422 553,319C534,253 509,147 478,0l-199,0C324,273 424,545 579,816C670,975 766,1112 867,1227l-792,0l0,181z"/>
<glyph horiz-adv-x="1366" unicode="B" d="M708,848C792,848 857,860 904,883C977,920 1014,986 1014,1081C1014,1177 975,1242 897,1275C853,1294 788,1303 701,1303l-355,0l0,-455M775,170C897,170 984,205 1036,276C1069,321 1085,375 1085,438C1085,545 1037,617 942,656C891,677 824,687 741,687l-395,0l0,-517M151,1469l631,0C954,1469 1076,1418 1149,1315C1192,1254 1213,1184 1213,1105C1213,1012 1187,936 1134,877C1107,846 1067,817 1016,791C1091,762 1148,730 1185,694C1251,630 1284,542 1284,429C1284,334 1254,249 1195,172C1106,57 965,0 772,0l-621,0z"/>
<glyph horiz-adv-x="1139" unicode="_" d="M0,-256l0,101l1139,0l0,-101z"/>
<glyph horiz-adv-x="1139" unicode="a" d="M462,117C525,117 587,132 646,161C746,210 796,289 796,400l0,145C774,531 746,519 711,510C676,501 642,494 609,490l-109,-14C435,467 386,454 353,435C298,404 270,354 270,285C270,233 289,192 327,162C365,132 410,117 462,117M706,649C747,654 775,672 789,701C797,717 801,740 801,770C801,831 779,876 736,904C692,931 629,945 548,945C454,945 387,920 348,869C326,841 312,799 305,744l-168,0C140,876 183,968 266,1020C348,1071 443,1097 552,1097C678,1097 780,1073 859,1025C937,977 976,902 976,801l0,-617C976,165 980,150 988,139C995,128 1011,122 1036,122C1044,122 1053,123 1063,124C1073,125 1084,126 1095,128l0,-133C1067,-13 1046,-18 1031,-20C1016,-22 996,-23 971,-23C909,-23 864,-1 836,43C821,66 811,99 805,142C768,94 716,52 647,17C578,-18 503,-36 420,-36C321,-36 240,-6 177,55C114,115 82,190 82,281C82,380 113,457 175,512C237,567 318,600 419,613z"/>
<glyph horiz-adv-x="1139" unicode="b" d="M118,1474l175,0l0,-533C332,992 379,1032 434,1059C489,1086 548,1099 612,1099C745,1099 854,1053 937,962C1020,870 1061,735 1061,556C1061,387 1020,246 938,134C856,22 742,-34 597,-34C516,-34 447,-14 391,25C358,48 322,86 284,137l0,-137l-166,0M877,547C877,660 853,753 805,827C756,901 685,938 591,938C509,938 437,908 376,847C314,786 283,686 283,547C283,446 296,365 321,302C368,184 457,125 586,125C683,125 756,164 805,241C853,318 877,420 877,547z"/>
<glyph horiz-adv-x="1024" unicode="c" d="M976,711l-175,0C790,777 766,832 728,876C690,919 629,941 545,941C430,941 348,885 299,773C267,700 251,611 251,504C251,397 274,306 319,233C364,160 436,123 533,123C608,123 667,146 711,192C754,237 784,300 801,379l175,0C956,237 906,133 826,68C746,2 644,-31 519,-31C379,-31 267,20 184,123C101,225 59,353 59,506C59,694 105,840 196,945C287,1050 404,1102 545,1102C666,1102 764,1073 840,1014C915,955 961,854 976,711z"/>
<glyph horiz-adv-x="1139" unicode="d" d="M553,119C636,119 705,155 759,227C812,298 839,401 839,535C839,670 811,771 756,836C701,901 632,933 551,933C460,933 387,898 331,829C274,760 246,658 246,523C246,408 270,312 319,235C368,158 446,119 553,119M723,1038C755,1018 791,983 832,933l0,541l173,0l0,-1474l-162,0l0,149C801,83 751,35 694,6C637,-23 571,-38 497,-38C378,-38 274,12 187,113C100,213 56,346 56,513C56,669 96,804 176,919C255,1033 369,1090 517,1090C599,1090 668,1073 723,1038z"/>
<glyph horiz-adv-x="1139" unicode="e" d="M962,903C998,849 1022,786 1034,714C1045,665 1050,586 1050,478l-785,0C268,369 294,282 342,217C390,151 464,118 565,118C659,118 734,149 790,211C822,247 845,289 858,336l177,0C1030,297 1015,253 989,205C962,156 933,117 900,86C845,33 778,-3 697,-22C654,-33 605,-38 550,-38C417,-38 304,11 211,108C118,205 72,340 72,515C72,687 119,827 212,934C305,1041 427,1095 578,1095C654,1095 728,1077 799,1042C870,1006 925,960 962,903M865,621C858,699 841,761 814,808C765,895 682,938 567,938C484,938 415,908 359,849C303,789 273,713 270,621z"/>
<glyph horiz-adv-x="1139" unicode="g" d="M730,1028C764,1005 799,971 834,926l0,135l166,0l0,-974C1000,-49 980,-156 940,-235C865,-380 724,-453 517,-453C402,-453 305,-427 226,-375C147,-324 103,-243 94,-133l183,0C286,-181 303,-218 329,-244C370,-284 434,-304 521,-304C659,-304 749,-255 792,-158C817,-101 829,2 827,149C791,94 748,54 697,27C646,0 579,-13 496,-13C380,-13 279,28 192,111C105,193 61,329 61,519C61,698 105,838 193,939C280,1040 386,1090 510,1090C594,1090 667,1069 730,1028M543,931C416,931 330,872 283,753C258,690 246,607 246,504C246,383 271,292 320,229C369,166 434,134 517,134C646,134 737,192 790,309C819,375 834,452 834,540C834,673 807,771 752,835C697,899 628,931 543,931z"/>
<glyph horiz-adv-x="1139" unicode="h" d="M132,1474l180,0l0,-548C355,980 393,1018 427,1040C485,1078 557,1097 644,1097C799,1097 905,1043 960,934C990,875 1005,792 1005,687l0,-687l-185,0l0,675C820,754 810,811 790,848C757,907 696,936 606,936C531,936 464,910 403,859C342,808 312,711 312,568l0,-568l-180,0z"/>
<glyph horiz-adv-x="455" unicode="i" d="M132,1066l183,0l0,-1066l-183,0M132,1469l183,0l0,-204l-183,0z"/>
<glyph horiz-adv-x="455" unicode="j" d="M312,1261l-180,0l0,208l180,0M-38,-271C43,-268 91,-261 108,-249C124,-238 132,-201 132,-140l0,1206l180,0l0,-1225C312,-237 299,-295 274,-334C232,-399 152,-432 35,-432C26,-432 17,-432 8,-431C-2,-430 -17,-429 -38,-427z"/>
<glyph horiz-adv-x="455" unicode="l" d="M137,1469l180,0l0,-1469l-180,0z"/>
<glyph horiz-adv-x="1706" unicode="m" d="M132,1071l178,0l0,-152C353,972 391,1010 426,1034C485,1075 553,1095 628,1095C713,1095 782,1074 834,1032C863,1008 890,973 914,926C954,983 1001,1026 1055,1054C1109,1081 1170,1095 1237,1095C1381,1095 1479,1043 1531,939C1559,883 1573,808 1573,713l0,-713l-187,0l0,744C1386,815 1368,864 1333,891C1297,918 1253,931 1202,931C1131,931 1071,907 1020,860C969,813 943,734 943,623l0,-623l-183,0l0,699C760,772 751,825 734,858C707,908 656,933 581,933C513,933 451,907 396,854C340,801 312,706 312,568l0,-568l-180,0z"/>
<glyph horiz-adv-x="1139" unicode="n" d="M132,1071l171,0l0,-152C354,982 407,1027 464,1054C521,1081 584,1095 653,1095C805,1095 908,1042 961,936C990,878 1005,795 1005,687l0,-687l-183,0l0,675C822,740 812,793 793,833C761,900 703,933 619,933C576,933 541,929 514,920C465,905 421,876 384,832C354,797 335,760 326,723C317,685 312,631 312,561l0,-561l-180,0z"/>
<glyph horiz-adv-x="1139" unicode="o" d="M869,553C869,653 853,734 821,797C770,896 683,945 559,945C449,945 369,903 319,819C269,735 244,634 244,515C244,401 269,306 319,230C369,154 448,116 557,116C676,116 758,161 803,252C847,342 869,442 869,553M1057,558C1057,385 1015,243 931,130C847,17 717,-39 540,-39C393,-39 276,11 189,111C102,210 59,344 59,512C59,692 105,835 196,942C287,1049 410,1102 564,1102C702,1102 819,1056 914,964C1009,872 1057,737 1057,558z"/>
<glyph horiz-adv-x="682" unicode="r" d="M137,1071l171,0l0,-185C322,922 356,966 411,1018C466,1069 529,1095 600,1095C603,1095 609,1095 617,1094C625,1093 639,1092 658,1090l0,-190C647,902 638,903 629,904C620,905 610,905 599,905C508,905 439,876 390,818C341,759 317,692 317,616l0,-616l-180,0z"/>
<glyph horiz-adv-x="1024" unicode="s" d="M239,336C244,276 259,230 284,198C329,140 408,111 520,111C587,111 645,126 696,155C747,184 772,228 772,289C772,335 752,370 711,394C685,409 634,426 557,445l-143,36C323,504 255,529 212,557C135,606 96,673 96,759C96,860 133,942 206,1005C279,1068 377,1099 500,1099C661,1099 778,1052 849,957C894,897 915,832 914,763l-170,0C741,804 726,841 701,874C660,921 588,945 486,945C418,945 367,932 332,906C297,880 279,846 279,803C279,756 302,719 348,691C375,674 414,660 466,647l119,-29C714,587 801,556 845,527C915,481 950,409 950,310C950,215 914,132 842,63C769,-6 659,-41 511,-41C352,-41 239,-5 173,68C106,140 71,229 66,336z"/>
<glyph horiz-adv-x="569" unicode="t" d="M168,1370l182,0l0,-299l171,0l0,-147l-171,0l0,-699C350,188 363,163 388,150C402,143 425,139 458,139C467,139 476,139 486,140C496,140 508,141 521,142l0,-142C500,-6 479,-10 457,-13C434,-16 410,-17 384,-17C300,-17 243,5 213,48C183,91 168,146 168,215l0,709l-145,0l0,147l145,0z"/>
<glyph horiz-adv-x="1024" unicode="v" d="M220,1071l286,-872l299,872l197,0l-404,-1071l-192,0l-395,1071z"/>
</font>
<path fill="#fcf9ce" d="m97.75 228.83h61.619c2.22 0 4.02 1.8 4.02 4.02v34.436c0 2.22-1.8 4.021-4.02 4.021h-61.619c-2.22 0-4.02-1.801-4.02-4.021v-34.436c0-2.22 1.8-4.02 4.02-4.02z"/>
<text font-size="12.06px" y="247.52879" x="100.7651" font-family="Helvetica" fill="#010101">hibernate
</text>
<text font-size="12.06px" y="261.7319" x="104.3071" font-family="Helvetica" fill="#010101">3.2.6.ga
</text>
<path d="m97.75 228.83h61.619c2.22 0 4.02 1.8 4.02 4.02v34.436c0 2.22-1.8 4.021-4.02 4.021h-61.619c-2.22 0-4.02-1.801-4.02-4.021v-34.436c0-2.22 1.8-4.02 4.02-4.02z" stroke="#010101" stroke-miterlimit="1.45" fill="none"/>
<path fill="#fcf9ce" d="m412.4 87.23h132.64c2.222 0 4.021 1.8 4.021 4.02v48.641c0 2.22-1.799 4.02-4.021 4.02h-132.64c-2.219 0-4.02-1.8-4.02-4.02v-48.641c0.001-2.219 1.802-4.02 4.02-4.02z"/>
<g font-size="12.06px" font-family="Helvetica" fill="#010101">
<text y="105.9243" x="415.41891">commons-collections
</text>
<text y="120.1284" x="463.4707">2.1.1
</text>
<text y="134.3315" x="442.63959">2.1 (evicted)
</text>
</g>
<path d="m412.4 87.23h132.64c2.222 0 4.021 1.8 4.021 4.02v48.641c0 2.22-1.799 4.02-4.021 4.02h-132.64c-2.219 0-4.02-1.8-4.02-4.02v-48.641c0.001-2.219 1.802-4.02 4.02-4.02z" stroke="#010101" stroke-miterlimit="1.45" fill="none"/>
<path fill="#fcf9ce" d="m287.52 476.87h38.753c2.22 0 4.021 1.8 4.021 4.02v34.438c0 2.22-1.801 4.02-4.021 4.02h-38.753c-2.22 0-4.02-1.8-4.02-4.02v-34.438c0-2.221 1.8-4.02 4.02-4.02z"/>
<text font-size="12.06px" y="495.56009" x="292.7612" font-family="Helvetica" fill="#010101">cglib
</text>
<text font-size="12.06px" y="509.76419" x="290.52979" font-family="Helvetica" fill="#010101">2.1_3
</text>
<path d="m287.52 476.87h38.753c2.22 0 4.021 1.8 4.021 4.02v34.438c0 2.22-1.801 4.02-4.021 4.02h-38.753c-2.22 0-4.02-1.8-4.02-4.02v-34.438c0-2.221 1.8-4.02 4.02-4.02z" stroke="#010101" stroke-miterlimit="1.45" fill="none"/>
<path fill="#fcf9ce" d="m460.46 455.98h36.539c2.219 0 4.021 1.8 4.021 4.021v34.437c0 2.221-1.802 4.021-4.021 4.021h-36.539c-2.221 0-4.021-1.801-4.021-4.021v-34.437c0-2.221 1.8-4.021 4.021-4.021z"/>
<text font-size="12.06px" y="474.67331" x="466.69141" font-family="Helvetica" fill="#010101">asm
</text>
<text font-size="12.06px" y="488.8765" x="463.4707" font-family="Helvetica" fill="#010101">1.5.3
</text>
<path d="m460.46 455.98h36.539c2.219 0 4.021 1.8 4.021 4.021v34.437c0 2.221-1.802 4.021-4.021 4.021h-36.539c-2.221 0-4.021-1.801-4.021-4.021v-34.437c0-2.221 1.8-4.021 4.021-4.021z" stroke="#010101" stroke-miterlimit="1.45" fill="none"/>
<path fill="#fcf9ce" d="m288.62 394.19h36.54c2.22 0 4.02 1.801 4.02 4.021v34.438c0 2.221-1.8 4.021-4.02 4.021h-36.54c-2.22 0-4.02-1.8-4.02-4.021v-34.438c0-2.22 1.8-4.021 4.02-4.021z"/>
<text font-size="12.06px" y="412.88229" x="293.353" font-family="Helvetica" fill="#010101">antlr
</text>
<text font-size="12.06px" y="427.0864" x="291.63721" font-family="Helvetica" fill="#010101">2.7.6
</text>
<path d="m288.62 394.19h36.54c2.22 0 4.02 1.801 4.02 4.021v34.438c0 2.221-1.8 4.021-4.02 4.021h-36.54c-2.22 0-4.02-1.8-4.02-4.021v-34.438c0-2.22 1.8-4.021 4.02-4.021z" stroke="#010101" stroke-miterlimit="1.45" fill="none"/>
<path fill="#fcf9ce" d="m285.1 311.51h43.582c2.221 0 4.021 1.798 4.021 4.021v34.437c0 2.221-1.8 4.021-4.021 4.021h-43.582c-2.22 0-4.02-1.801-4.02-4.021v-34.436c0-2.224 1.8-4.022 4.02-4.022z"/>
<text font-size="12.06px" y="330.20749" x="288.11569" font-family="Helvetica" fill="#010101">dom4j
</text>
<text font-size="12.06px" y="344.4097" x="291.63721" font-family="Helvetica" fill="#010101">1.6.1
</text>
<path d="m285.1 311.51h43.582c2.221 0 4.021 1.798 4.021 4.021v34.437c0 2.221-1.8 4.021-4.021 4.021h-43.582c-2.22 0-4.02-1.801-4.02-4.021v-34.436c0-2.224 1.8-4.022 4.02-4.022z" stroke="#010101" stroke-miterlimit="1.45" fill="none"/>
<path fill="#fcf9ce" d="m274.97 228.83h63.839c2.22 0 4.021 1.8 4.021 4.02v34.436c0 2.22-1.801 4.021-4.021 4.021h-63.839c-2.22 0-4.02-1.801-4.02-4.021v-34.436c0-2.22 1.8-4.02 4.02-4.02z"/>
<text font-size="12.06px" y="247.52879" x="277.98679" font-family="Helvetica" fill="#010101">asm-attrs
</text>
<text font-size="12.06px" y="261.7319" x="291.63721" font-family="Helvetica" fill="#010101">1.5.3
</text>
<path d="m274.97 228.83h63.839c2.22 0 4.021 1.8 4.021 4.02v34.436c0 2.22-1.801 4.021-4.021 4.021h-63.839c-2.22 0-4.02-1.801-4.02-4.021v-34.436c0-2.22 1.8-4.02 4.02-4.02z" stroke="#010101" stroke-miterlimit="1.45" fill="none"/>
<path fill="#fcf9ce" d="m285.15 146.16h43.476c2.221 0 4.021 1.8 4.021 4.02v34.437c0 2.22-1.8 4.02-4.021 4.02h-43.476c-2.22 0-4.02-1.8-4.02-4.02v-34.437c0-2.22 1.8-4.02 4.02-4.02z"/>
<text font-size="12.06px" y="164.85201" x="299.4722" font-family="Helvetica" fill="#010101">jta
</text>
<text font-size="12.06px" y="179.05521" x="288.16849" font-family="Helvetica" fill="#010101">1.0.1B
</text>
<path d="m285.15 146.16h43.476c2.221 0 4.021 1.8 4.021 4.02v34.437c0 2.22-1.8 4.02-4.021 4.02h-43.476c-2.22 0-4.02-1.8-4.02-4.02v-34.437c0-2.22 1.8-4.02 4.02-4.02z" stroke="#010101" stroke-miterlimit="1.45" fill="none"/>
<path fill="#fcf9ce" d="m280.17 63.479h53.452c2.22 0 4.02 1.8 4.02 4.02v34.437c0 2.22-1.8 4.02-4.02 4.02h-53.452c-2.22 0-4.02-1.8-4.02-4.02v-34.436c0-2.22 1.8-4.021 4.02-4.021z"/>
<text font-size="12.06px" y="82.173302" x="283.18121" font-family="Helvetica" fill="#010101">ehcache
</text>
<text font-size="12.06px" y="96.377403" x="291.63721" font-family="Helvetica" fill="#010101">1.2.3
</text>
<path d="m280.17 63.479h53.452c2.22 0 4.02 1.8 4.02 4.02v34.437c0 2.221-1.8 4.02-4.02 4.02h-53.452c-2.22 0-4.02-1.799-4.02-4.02v-34.436c0-2.22 1.8-4.021 4.02-4.021z" stroke="#010101" stroke-miterlimit="1.45" fill="none"/>
<path fill="#fcf9ce" d="m421.44 0.5h114.58c2.221 0 4.02 1.799 4.02 4.02v34.437c0 2.22-1.799 4.02-4.02 4.02h-114.58c-2.219 0-4.021-1.8-4.021-4.02v-34.436c0-2.222 1.8-4.021 4.02-4.021z"/>
<text font-size="12.06px" y="19.194799" x="424.45209" font-family="Helvetica" fill="#010101">commons-logging
</text>
<text font-size="12.06px" y="33.398899" x="463.4707" font-family="Helvetica" fill="#010101">1.0.4
</text>
<path d="m421.44 0.5h114.58c2.221 0 4.02 1.799 4.02 4.02v34.437c0 2.22-1.799 4.02-4.02 4.02h-114.58c-2.219 0-4.021-1.8-4.021-4.02v-34.436c0-2.222 1.8-4.021 4.02-4.021z" stroke="#010101" stroke-miterlimit="1.45" fill="none"/>
<line y2="250.07" x2="85.645" stroke="#010101" stroke-miterlimit="1.45" y1="250.07" fill="none"/>
<polygon points="81.625 254.49 93.685 249.47 81.625 244.44 84.639 249.47" fill="#010101" transform="translate(0 .604)"/>
<text font-size="12.06px" y="265.75241" x="33.0396" font-family="Helvetica" fill="#010101">3.2.6.ga
</text>
<polyline transform="translate(0 .604)" stroke="#010101" points="163.39 239.36 173.94 239.36 234.92 129.98 307.39 129.98 372.35 134.45 400.31 134.45" stroke-miterlimit="1.45" fill="none"/>
<polygon points="396.29 139.47 408.35 134.45 396.29 129.42 399.3 134.45" fill="#010101" transform="translate(0 .604)"/>
<text font-size="12.06px" y="128.48579" x="370.52539" font-family="Helvetica" fill="#010101">2.1.1
</text>
<polyline transform="translate(0 .604)" stroke="#010101" points="162.08 269.69 173.94 269.69 234.92 497.5 275.41 497.5" stroke-miterlimit="1.45" fill="none"/>
<polygon points="271.39 502.52 283.45 497.5 271.39 492.48 274.4 497.5" fill="#010101" transform="translate(0 .604)"/>
<text font-size="12.06px" y="285.97119" x="156.88921" font-family="Helvetica" fill="#010101">2.1_3
</text>
<polyline transform="translate(0 .604)" stroke="#010101" points="163.39 264.63 173.94 264.63 234.92 460.68 448.37 460.68" stroke-miterlimit="1.45" fill="none"/>
<polygon points="444.35 465.71 456.41 460.68 444.35 455.66 447.36 460.68" fill="#010101" transform="translate(0 .604)"/>
<text font-size="12.06px" y="476.96829" x="413.74121" font-family="Helvetica" fill="#010101">1.5.3
</text>
<polyline transform="translate(0 .604)" stroke="#010101" points="330.29 497.5 340.84 497.5 420.4 492.54 448.36 492.54" stroke-miterlimit="1.45" fill="none"/>
<polygon points="444.34 497.57 456.4 492.54 444.34 487.52 447.35 492.54" fill="#010101" transform="translate(0 .604)"/>
<text font-size="12.06px" y="508.82571" x="418.57709" font-family="Helvetica" fill="#010101">1.5.3
</text>
<polyline transform="translate(0 .604)" stroke="#010101" points="163.39 259.58 173.94 259.58 234.92 414.82 276.51 414.82" stroke-miterlimit="1.45" fill="none"/>
<polygon points="272.49 419.85 284.55 414.82 272.49 409.8 275.51 414.82" fill="#010101" transform="translate(0 .604)"/>
<text font-size="12.06px" y="409.86771" x="238.5405" font-family="Helvetica" fill="#010101">2.7.6
</text>
<polyline transform="translate(0 .604)" stroke="#010101" points="163.39 254.52 173.94 254.52 234.92 332.15 273 332.15" stroke-miterlimit="1.45" fill="none"/>
<polygon points="268.98 337.17 281.04 332.15 268.98 327.12 271.99 332.15" fill="#010101" transform="translate(0 .604)"/>
<text font-size="12.06px" y="327.19189" x="238.146" font-family="Helvetica" fill="#010101">1.6.1
</text>
<line y2="250.07" x2="262.89" stroke="#010101" stroke-miterlimit="1.45" y1="250.07" x1="163.39" fill="none"/>
<polygon points="258.87 254.49 270.92 249.47 258.87 244.44 261.88 249.47" fill="#010101" transform="translate(0 .604)"/>
<text font-size="12.06px" y="243.5083" x="228.25729" font-family="Helvetica" fill="#010101">1.5.3
</text>
<polyline transform="translate(0 .604)" stroke="#010101" points="163.39 244.42 173.94 244.42 234.92 166.79 273.05 166.79" stroke-miterlimit="1.45" fill="none"/>
<polygon points="269.03 171.82 281.09 166.79 269.03 161.77 272.04 166.79" fill="#010101" transform="translate(0 .604)"/>
<text font-size="12.06px" y="182.06979" x="238.146" font-family="Helvetica" fill="#010101">1.0.1B
</text>
<polyline transform="translate(0 .604)" stroke="#010101" points="163.39 234.3 173.94 234.3 234.92 84.115 268.06 84.115" stroke-miterlimit="1.45" fill="none"/>
<polygon points="264.04 89.14 276.1 84.115 264.04 79.089 267.06 84.115" fill="#010101" transform="translate(0 .604)"/>
<text font-size="12.06px" y="99.392097" x="238.5269" font-family="Helvetica" fill="#010101">1.2.3
</text>
<line y2="96.091" x2="400.31" stroke="#010101" stroke-miterlimit="1.45" y1="96.091" x1="337.64" fill="none"/>
<polygon points="396.29 100.51 408.35 95.487 396.29 90.461 399.3 95.487" fill="#010101" transform="translate(0 .604)"/>
<text font-size="12.06px" y="89.526901" x="377.13089" font-family="Helvetica" fill="#010101">2.1
</text>
<polyline transform="translate(0 .604)" stroke="#010101" points="337.64 72.742 348.19 72.742 381.38 37.063 409.34 37.063" stroke-miterlimit="1.45" fill="none"/>
<polygon points="405.32 42.088 417.38 37.063 405.32 32.039 408.34 37.063" fill="#010101" transform="translate(0 .604)"/>
<text font-size="12.06px" y="31.104" x="379.5596" font-family="Helvetica" fill="#010101">1.0.4
</text>
<polyline transform="translate(0 .604)" stroke="#010101" points="162.08 229.25 173.94 229.25 234.92 5.207 409.33 5.207" stroke-miterlimit="1.45" fill="none"/>
<polygon points="405.31 10.23 417.37 5.207 405.31 0.182 408.33 5.207" fill="#010101" transform="translate(0 .604)"/>
<text font-size="12.06px" y="223.28951" x="157.9966" font-family="Helvetica" fill="#010101">1.0.4
</text>
</svg>

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 237 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

View File

@ -1,82 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 647.669 503.39903" version="1.2" y="0px" x="0px" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<path fill-rule="evenodd" fill="#119a48" d="m237.42 102zm-170.04-102zm16.92 0c-8.399 0-16.92 8.52-16.92 17.039v67.921c0 8.52 8.521 17.04 16.92 17.04h136.08c8.521 0 17.04-8.521 17.04-17.04v-67.921c0-8.52-8.52-17.039-17.04-17.039h-136.08z"/>
<g stroke-width="0" stroke-miterlimit="10" fill="none">
<path d="m84.298 0.000005c-8.399 0-16.92 8.52-16.92 17.039v67.921c0 8.52 8.521 17.04 16.92 17.04h136.08c8.521 0 17.04-8.521 17.04-17.04v-67.921c0-8.52-8.52-17.039-17.04-17.039h-136.08z"/>
<path d="m67.378 0.000005z"/>
<path d="m237.42 102z"/>
</g>
<path fill="#fff" d="m133.61 36.403c0 0.956-0.219 1.811-0.654 2.562-0.437 0.752-1.06 1.334-1.872 1.745-0.812 0.412-1.777 0.617-2.896 0.617h-3.691v5.231h-3.111v-14.86h6.677c1.778 0 3.148 0.409 4.107 1.229s1.44 1.978 1.44 3.476zm-3.133 0.053c0-1.562-0.922-2.342-2.764-2.342h-3.217v4.82h3.302c0.857 0 1.519-0.213 1.982-0.639 0.464-0.424 0.697-1.038 0.697-1.839zm8.152-1.309v6.402c0 2.004 0.675 3.006 2.024 3.006 0.718 0 1.296-0.308 1.735-0.923s0.659-1.404 0.659-2.368v-6.117h2.964v8.859c0 0.971 0.028 1.821 0.084 2.553h-2.826c-0.085-1.013-0.127-1.769-0.127-2.268h-0.053c-0.394 0.865-0.895 1.494-1.503 1.888s-1.33 0.591-2.167 0.591c-1.21 0-2.138-0.371-2.784-1.112-0.647-0.742-0.971-1.83-0.971-3.265v-7.246h2.965zm21.181 5.665c0 1.885-0.378 3.349-1.134 4.393s-1.837 1.566-3.243 1.566c-0.809 0-1.508-0.176-2.099-0.527s-1.044-0.857-1.36-1.519h-0.021c0 0.246-0.016 0.583-0.047 1.013-0.032 0.429-0.065 0.703-0.101 0.822h-2.879c0.056-0.654 0.084-1.522 0.084-2.605v-13.047h2.964v4.366l-0.042 1.856h0.042c0.668-1.463 1.884-2.194 3.649-2.194 1.35 0 2.385 0.512 3.105 1.535 0.722 1.023 1.082 2.47 1.082 4.341zm-5.442 3.933c1.568 0 2.353-1.311 2.353-3.934 0-1.294-0.19-2.254-0.569-2.879-0.38-0.626-0.967-0.939-1.762-0.939-0.802 0-1.411 0.336-1.83 1.008-0.418 0.671-0.627 1.64-0.627 2.905 0 1.21 0.205 2.151 0.616 2.827 0.411 0.675 1.018 1.012 1.819 1.012zm7.948 1.815v-15.652h2.964v15.652h-2.964zm5.982-13.469v-2.183h2.964v2.183h-2.964zm0 13.469v-11.413h2.964v11.413h-2.964zm10.849 0.211c-1.729 0-3.065-0.515-4.008-1.545s-1.413-2.467-1.413-4.309c0-1.885 0.475-3.353 1.424-4.403s2.295-1.577 4.039-1.577c1.343 0 2.454 0.338 3.333 1.013s1.431 1.606 1.655 2.795l-2.984 0.147c-0.084-0.583-0.295-1.049-0.633-1.397s-0.815-0.521-1.435-0.521c-1.525 0-2.288 1.276-2.288 3.828 0 2.63 0.776 3.944 2.33 3.944 0.562 0 1.034-0.177 1.414-0.532 0.379-0.355 0.615-0.884 0.706-1.587l2.975 0.137c-0.105 0.78-0.385 1.477-0.839 2.088-0.453 0.612-1.049 1.085-1.787 1.419s-1.568 0.5-2.489 0.5z"/>
<path fill="#fff" d="m101.17 70.439v-8.732c0-0.626-0.009-1.148-0.026-1.566-0.018-0.419-0.037-0.789-0.058-1.113h2.826c0.021 0.127 0.049 0.512 0.084 1.155s0.053 1.07 0.053 1.281h0.043c0.288-0.802 0.545-1.365 0.77-1.692s0.492-0.569 0.802-0.728 0.696-0.237 1.16-0.237c0.38 0 0.686 0.053 0.917 0.158v2.479c-0.478-0.105-0.899-0.158-1.266-0.158-0.738 0-1.312 0.299-1.724 0.896-0.412 0.598-0.617 1.483-0.617 2.657v5.601h-2.964zm17.871-2.889c-0.809 2.067-2.451 3.101-4.926 3.101-1.715 0-3.033-0.508-3.955-1.524-0.921-1.016-1.381-2.497-1.381-4.445 0-1.884 0.467-3.333 1.402-4.345 0.935-1.013 2.261-1.52 3.977-1.52 1.638 0 2.89 0.544 3.754 1.63 0.865 1.086 1.298 2.678 1.298 4.772v0.084h-7.319c0 1.112 0.205 1.95 0.616 2.516 0.412 0.566 0.997 0.85 1.757 0.85 1.047 0 1.708-0.454 1.982-1.361l2.795 0.242zm-4.925-6.866c-0.695 0-1.232 0.242-1.608 0.728s-0.574 1.164-0.596 2.036h4.43c-0.057-0.922-0.278-1.612-0.664-2.073-0.388-0.461-0.908-0.691-1.562-0.691zm18.137 3.997c0 1.905-0.382 3.377-1.145 4.414s-1.841 1.556-3.232 1.556c-0.802 0-1.5-0.174-2.094-0.522s-1.05-0.849-1.366-1.503h-0.062c0.042 0.211 0.062 0.852 0.062 1.92v4.377h-2.963v-13.269c0-1.076-0.028-1.951-0.085-2.627h2.88c0.035 0.127 0.064 0.377 0.089 0.749 0.025 0.373 0.037 0.742 0.037 1.107h0.042c0.668-1.398 1.885-2.099 3.649-2.099 1.329 0 2.359 0.512 3.091 1.534 0.731 1.025 1.097 2.479 1.097 4.363zm-5.464 3.944c1.582 0 2.373-1.313 2.373-3.944 0-2.559-0.783-3.839-2.352-3.839-0.787 0-1.391 0.345-1.809 1.033-0.419 0.69-0.628 1.652-0.628 2.891 0 1.23 0.209 2.181 0.628 2.853 0.419 0.671 1.015 1.006 1.788 1.006zm18.682-3.902c0 1.851-0.513 3.3-1.54 4.351-1.026 1.052-2.446 1.577-4.261 1.577-1.778 0-3.175-0.527-4.187-1.582-1.013-1.055-1.52-2.503-1.52-4.346 0-1.835 0.507-3.278 1.52-4.329 1.012-1.051 2.429-1.577 4.25-1.577 1.863 0 3.285 0.509 4.267 1.524 0.981 1.015 1.471 2.477 1.471 4.382zm-5.832 3.902c1.821 0 2.731-1.301 2.731-3.902 0-1.356-0.222-2.341-0.664-2.953-0.443-0.611-1.087-0.917-1.931-0.917-1.8 0-2.7 1.291-2.7 3.87 0 1.273 0.22 2.241 0.659 2.906 0.44 0.664 1.075 0.996 1.905 0.996zm17.914-1.519c0 1.104-0.451 1.971-1.355 2.6-0.903 0.63-2.153 0.944-3.749 0.944-1.568 0-2.769-0.248-3.602-0.743-0.833-0.496-1.387-1.268-1.661-2.315l2.604-0.391c0.148 0.542 0.403 0.925 0.765 1.15 0.362 0.226 0.993 0.337 1.894 0.337 0.83 0 1.435-0.105 1.814-0.316s0.569-0.541 0.569-0.991c0-0.365-0.153-0.655-0.459-0.87s-0.824-0.396-1.556-0.543c-1.674-0.331-2.802-0.639-3.386-0.923-0.583-0.285-1.028-0.654-1.334-1.107-0.306-0.454-0.459-1.011-0.459-1.672 0-1.09 0.42-1.938 1.261-2.547 0.84-0.608 2.03-0.912 3.57-0.912 1.356 0 2.448 0.264 3.274 0.791s1.341 1.29 1.545 2.288l-2.626 0.274c-0.084-0.464-0.292-0.811-0.622-1.039-0.331-0.229-0.854-0.343-1.571-0.343-0.703 0-1.23 0.09-1.582 0.27-0.352 0.179-0.527 0.479-0.527 0.901 0 0.331 0.135 0.593 0.405 0.786 0.271 0.193 0.727 0.353 1.366 0.479 0.893 0.184 1.686 0.371 2.378 0.564 0.693 0.193 1.248 0.424 1.667 0.69 0.418 0.268 0.752 0.61 1.002 1.028 0.25 0.421 0.375 0.957 0.375 1.61zm2.262-10.135v-2.183h2.963v2.183h-2.963zm0 13.468v-11.412h2.963v11.412h-2.963zm11.512-0.168c-0.73 0.239-1.564 0.358-2.499 0.358-0.872 0-1.544-0.237-2.015-0.712s-0.707-1.192-0.707-2.156v-6.729h-1.444v-2.004h1.593l0.928-2.679h1.856v2.679h2.162v2.004h-2.162v5.928c0 0.556 0.105 0.965 0.316 1.229s0.538 0.396 0.98 0.396c0.232 0 0.562-0.049 0.991-0.147v1.833h0.001zm12.614-5.548c0 1.851-0.514 3.3-1.54 4.351-1.026 1.052-2.447 1.577-4.261 1.577-1.779 0-3.175-0.527-4.188-1.582s-1.519-2.503-1.519-4.346c0-1.835 0.506-3.278 1.519-4.329s2.43-1.577 4.25-1.577c1.863 0 3.286 0.509 4.267 1.524s1.472 2.477 1.472 4.382zm-5.833 3.902c1.821 0 2.731-1.301 2.731-3.902 0-1.356-0.221-2.341-0.664-2.953-0.443-0.611-1.086-0.917-1.93-0.917-1.801 0-2.7 1.291-2.7 3.87 0 1.273 0.22 2.241 0.659 2.906 0.44 0.664 1.075 0.996 1.904 0.996zm8.166 1.814v-8.732c0-0.626-0.009-1.148-0.026-1.566-0.018-0.419-0.036-0.789-0.058-1.113h2.826c0.021 0.127 0.05 0.512 0.085 1.155s0.053 1.07 0.053 1.281h0.042c0.288-0.802 0.545-1.365 0.77-1.692 0.226-0.327 0.492-0.569 0.802-0.728s0.696-0.237 1.16-0.237c0.38 0 0.686 0.053 0.918 0.158v2.479c-0.479-0.105-0.9-0.158-1.266-0.158-0.738 0-1.313 0.299-1.725 0.896s-0.617 1.483-0.617 2.657v5.601h-2.964zm9.88 4.483c-0.71 0-1.332-0.046-1.867-0.137v-2.109c0.373 0.056 0.714 0.084 1.023 0.084 0.422 0 0.771-0.066 1.05-0.2 0.277-0.134 0.527-0.355 0.748-0.665 0.222-0.309 0.47-0.833 0.744-1.571l-4.515-11.296h3.133l1.793 5.348c0.281 0.767 0.637 1.94 1.065 3.522l0.264-1.002 0.686-2.479 1.688-5.39h3.101l-4.514 12.014c-0.605 1.462-1.232 2.475-1.883 3.037s-1.49 0.844-2.516 0.844z"/>
<path fill-rule="evenodd" fill="#119a48" d="m230.7 367.44zm-170.16-102.12zm17.04 0c-8.521 0-17.04 8.521-17.04 17.04v67.92c0 8.521 8.52 17.161 17.04 17.161h136.08c8.52 0 17.04-8.641 17.04-17.161v-67.92c0-8.52-8.521-17.04-17.04-17.04h-136.08z"/>
<g stroke-width="0" stroke-miterlimit="10" fill="none">
<path d="m77.578 265.32c-8.521 0-17.04 8.521-17.04 17.04v67.92c0 8.521 8.52 17.161 17.04 17.161h136.08c8.52 0 17.04-8.641 17.04-17.161v-67.92c0-8.52-8.521-17.04-17.04-17.04h-136.08z"/>
<path d="m60.538 265.32z"/>
<path d="m230.7 367.44z"/>
</g>
<path fill="#fff" d="m93.663 311.88v-14.859h11.686v2.405h-8.574v3.733h7.932v2.404h-7.932v3.912h9.007v2.404h-12.119zm21.842 0v-6.4c0-2.004-0.679-3.007-2.035-3.007-0.718 0-1.296 0.308-1.735 0.923s-0.659 1.404-0.659 2.367v6.117h-2.964v-8.859c0-0.611-0.009-1.112-0.026-1.502-0.018-0.391-0.036-0.741-0.058-1.05h2.826c0.021 0.133 0.05 0.49 0.085 1.07s0.053 0.98 0.053 1.198h0.042c0.4-0.872 0.903-1.505 1.508-1.898 0.605-0.394 1.326-0.591 2.162-0.591 1.21 0 2.138 0.373 2.785 1.118 0.646 0.745 0.97 1.835 0.97 3.27v7.244h-2.954zm11.333-0.169c-0.73 0.239-1.564 0.359-2.499 0.359-0.872 0-1.544-0.237-2.015-0.712s-0.707-1.194-0.707-2.157v-6.729h-1.444v-2.004h1.593l0.928-2.68h1.856v2.68h2.162v2.004h-2.162v5.927c0 0.556 0.105 0.966 0.316 1.229s0.538 0.395 0.98 0.395c0.232 0 0.562-0.049 0.991-0.147v1.835h0.001zm11.37-2.721c-0.809 2.067-2.45 3.101-4.926 3.101-1.716 0-3.034-0.507-3.955-1.523s-1.382-2.498-1.382-4.446c0-1.884 0.468-3.332 1.403-4.345s2.261-1.519 3.976-1.519c1.639 0 2.891 0.543 3.755 1.63 0.865 1.086 1.298 2.678 1.298 4.772v0.085h-7.32c0 1.11 0.206 1.948 0.617 2.515s0.997 0.849 1.756 0.849c1.048 0 1.709-0.452 1.983-1.359l2.795 0.24zm-4.925-6.865c-0.696 0-1.232 0.242-1.608 0.727s-0.574 1.165-0.596 2.037h4.43c-0.057-0.921-0.277-1.612-0.664-2.073-0.388-0.461-0.908-0.691-1.562-0.691zm7.208 9.755v-8.732c0-0.626-0.009-1.147-0.026-1.565-0.018-0.419-0.037-0.79-0.059-1.113h2.827c0.021 0.126 0.049 0.512 0.084 1.155s0.053 1.071 0.053 1.282h0.042c0.289-0.802 0.545-1.367 0.771-1.693 0.225-0.327 0.492-0.57 0.802-0.729 0.309-0.158 0.695-0.236 1.16-0.236 0.379 0 0.686 0.052 0.917 0.157v2.479c-0.478-0.105-0.899-0.159-1.266-0.159-0.738 0-1.312 0.3-1.725 0.897-0.411 0.598-0.616 1.483-0.616 2.658v5.599h-2.964zm19.203-5.759c0 1.906-0.383 3.378-1.146 4.415s-1.84 1.555-3.231 1.555c-0.802 0-1.5-0.173-2.095-0.521-0.594-0.348-1.049-0.85-1.365-1.503h-0.063c0.043 0.211 0.063 0.851 0.063 1.919v4.378h-2.964v-13.268c0-1.076-0.028-1.952-0.084-2.627h2.879c0.035 0.126 0.064 0.377 0.09 0.75 0.024 0.372 0.037 0.74 0.037 1.105h0.042c0.668-1.398 1.884-2.098 3.649-2.098 1.329 0 2.358 0.512 3.09 1.534 0.731 1.024 1.098 2.477 1.098 4.361zm-5.464 3.945c1.582 0 2.373-1.315 2.373-3.945 0-2.559-0.784-3.839-2.352-3.839-0.788 0-1.392 0.345-1.81 1.034-0.418 0.688-0.627 1.652-0.627 2.89 0 1.23 0.209 2.182 0.627 2.854 0.419 0.67 1.015 1.006 1.789 1.006zm7.84 1.814v-8.732c0-0.626-0.01-1.147-0.026-1.565-0.019-0.419-0.037-0.79-0.059-1.113h2.827c0.021 0.126 0.048 0.512 0.084 1.155 0.034 0.644 0.053 1.071 0.053 1.282h0.042c0.288-0.802 0.545-1.367 0.771-1.693 0.224-0.327 0.491-0.57 0.801-0.729s0.696-0.236 1.16-0.236c0.38 0 0.686 0.052 0.918 0.157v2.479c-0.479-0.105-0.9-0.159-1.266-0.159-0.738 0-1.313 0.3-1.725 0.897s-0.617 1.483-0.617 2.658v5.599h-2.963zm8.402-13.467v-2.185h2.963v2.185h-2.963zm0 13.467v-11.411h2.963v11.411h-2.963zm15.602-3.333c0 1.104-0.452 1.972-1.355 2.601-0.903 0.63-2.153 0.943-3.749 0.943-1.568 0-2.769-0.247-3.603-0.743-0.833-0.495-1.387-1.268-1.661-2.315l2.605-0.389c0.147 0.541 0.402 0.923 0.765 1.148 0.362 0.225 0.993 0.337 1.894 0.337 0.829 0 1.434-0.105 1.813-0.316s0.569-0.541 0.569-0.991c0-0.365-0.152-0.655-0.458-0.869-0.307-0.215-0.825-0.396-1.556-0.544-1.674-0.33-2.803-0.638-3.386-0.922-0.584-0.285-1.028-0.654-1.334-1.107-0.307-0.454-0.459-1.011-0.459-1.672 0-1.09 0.42-1.939 1.26-2.547 0.841-0.608 2.03-0.912 3.57-0.912 1.357 0 2.449 0.263 3.275 0.79s1.341 1.291 1.545 2.29l-2.626 0.273c-0.085-0.464-0.292-0.811-0.623-1.039-0.33-0.229-0.854-0.344-1.571-0.344-0.703 0-1.23 0.091-1.582 0.27-0.352 0.18-0.527 0.48-0.527 0.902 0 0.331 0.136 0.592 0.406 0.785s0.726 0.354 1.366 0.48c0.893 0.184 1.686 0.371 2.378 0.564s1.248 0.423 1.666 0.689c0.419 0.268 0.753 0.611 1.002 1.029 0.251 0.419 0.376 0.956 0.376 1.609zm11.988 0.443c-0.809 2.067-2.45 3.101-4.926 3.101-1.716 0-3.034-0.507-3.955-1.523s-1.382-2.498-1.382-4.446c0-1.884 0.468-3.332 1.403-4.345s2.261-1.519 3.976-1.519c1.639 0 2.891 0.543 3.755 1.63 0.865 1.086 1.298 2.678 1.298 4.772v0.085h-7.32c0 1.11 0.206 1.948 0.617 2.515s0.997 0.849 1.756 0.849c1.048 0 1.709-0.452 1.983-1.359l2.795 0.24zm-4.926-6.865c-0.696 0-1.232 0.242-1.608 0.727s-0.574 1.165-0.596 2.037h4.43c-0.057-0.921-0.277-1.612-0.664-2.073s-0.908-0.691-1.562-0.691z"/>
<path fill="#fff" d="m94.326 335.76v-8.733c0-0.625-0.009-1.148-0.026-1.565-0.018-0.419-0.037-0.79-0.058-1.113h2.826c0.021 0.127 0.05 0.511 0.085 1.155 0.035 0.643 0.053 1.07 0.053 1.281h0.042c0.288-0.802 0.545-1.365 0.77-1.693 0.226-0.326 0.492-0.569 0.802-0.727 0.31-0.159 0.696-0.238 1.16-0.238 0.38 0 0.686 0.053 0.918 0.158v2.479c-0.479-0.105-0.9-0.158-1.266-0.158-0.738 0-1.313 0.299-1.725 0.896s-0.617 1.484-0.617 2.658v5.601h-2.964zm18-2.89c-0.809 2.066-2.45 3.101-4.925 3.101-1.716 0-3.034-0.509-3.955-1.523-0.922-1.018-1.382-2.499-1.382-4.446 0-1.885 0.468-3.333 1.402-4.346 0.936-1.012 2.261-1.519 3.977-1.519 1.638 0 2.89 0.544 3.755 1.629 0.864 1.088 1.297 2.678 1.297 4.773v0.084h-7.319c0 1.111 0.205 1.949 0.617 2.517 0.411 0.564 0.996 0.848 1.756 0.848 1.048 0 1.708-0.453 1.982-1.36l2.795 0.242zm-4.924-6.866c-0.696 0-1.232 0.242-1.608 0.728-0.377 0.485-0.575 1.164-0.597 2.035h4.43c-0.056-0.921-0.277-1.611-0.664-2.072-0.388-0.461-0.908-0.691-1.561-0.691zm18.007 3.997c0 1.905-0.381 3.377-1.144 4.413-0.764 1.038-1.841 1.557-3.233 1.557-0.801 0-1.499-0.174-2.093-0.522-0.595-0.348-1.05-0.849-1.366-1.503h-0.063c0.042 0.211 0.063 0.851 0.063 1.92v4.377h-2.964v-13.269c0-1.075-0.028-1.951-0.084-2.626h2.879c0.035 0.127 0.065 0.376 0.09 0.74901 0.025 0.373 0.037 0.742 0.037 1.107h0.042c0.668-1.399 1.885-2.099 3.649-2.099 1.329 0 2.358 0.512 3.09 1.534 0.731 1.024 1.097 2.477 1.097 4.362zm-5.463 3.944c1.582 0 2.373-1.314 2.373-3.944 0-2.56-0.784-3.839-2.352-3.839-0.788 0-1.391 0.345-1.81 1.033-0.418 0.689-0.627 1.652-0.627 2.89 0 1.23 0.209 2.183 0.627 2.853 0.419 0.672 1.015 1.007 1.789 1.007zm18.811-3.902c0 1.85-0.514 3.3-1.54 4.351-1.027 1.052-2.446 1.577-4.261 1.577-1.779 0-3.175-0.527-4.188-1.582-1.012-1.055-1.519-2.503-1.519-4.346 0-1.835 0.507-3.278 1.519-4.329 1.013-1.052 2.43-1.577 4.251-1.577 1.862 0 3.285 0.509 4.266 1.523 0.982 1.018 1.472 2.478 1.472 4.383zm-5.832 3.902c1.82 0 2.731-1.301 2.731-3.902 0-1.356-0.222-2.341-0.665-2.953-0.442-0.611-1.086-0.917-1.93-0.917-1.8 0-2.7 1.29-2.7 3.87 0 1.272 0.22 2.241 0.659 2.906 0.44 0.663 1.075 0.996 1.905 0.996zm17.784-1.518c0 1.104-0.452 1.971-1.354 2.6-0.904 0.63-2.153 0.944-3.75 0.944-1.567 0-2.769-0.249-3.602-0.743-0.833-0.497-1.387-1.268-1.661-2.315l2.605-0.391c0.147 0.542 0.401 0.925 0.765 1.149 0.361 0.226 0.993 0.338 1.893 0.338 0.83 0 1.435-0.105 1.814-0.31599 0.379-0.211 0.569-0.541 0.569-0.991 0-0.366-0.153-0.656-0.459-0.87-0.306-0.215-0.824-0.396-1.556-0.543-1.673-0.331-2.802-0.638-3.386-0.924-0.583-0.283-1.028-0.654-1.334-1.106-0.306-0.454-0.459-1.011-0.459-1.672 0-1.09 0.421-1.939 1.261-2.547 0.84-0.60899 2.03-0.913 3.57-0.913 1.356 0 2.448 0.264 3.274 0.791s1.342 1.291 1.545 2.289l-2.626 0.274c-0.084-0.464-0.292-0.81-0.622-1.04-0.33-0.227-0.854-0.342-1.571-0.342-0.703 0-1.23 0.089-1.582 0.27-0.352 0.178-0.527 0.479-0.527 0.901 0 0.33 0.135 0.592 0.406 0.786 0.27 0.192 0.726 0.353 1.365 0.479 0.894 0.183 1.686 0.371 2.379 0.563 0.691 0.194 1.248 0.424 1.666 0.691s0.752 0.609 1.002 1.029c0.25 0.418 0.375 0.954 0.375 1.609zm2.391-10.136v-2.183h2.964v2.183h-2.964zm0 13.469v-11.412h2.964v11.412h-2.964zm11.404-0.169c-0.731 0.239-1.564 0.358-2.499 0.358-0.872 0-1.544-0.236-2.015-0.712-0.472-0.474-0.707-1.193-0.707-2.156v-6.729h-1.444v-2.004h1.592l0.929-2.679h1.856v2.679h2.162v2.004h-2.162v5.928c0 0.556 0.105 0.966 0.316 1.228 0.211 0.266 0.537 0.396 0.98 0.396 0.232 0 0.562-0.049 0.991-0.147v1.834h0.001zm12.614-5.548c0 1.85-0.514 3.3-1.54 4.351-1.027 1.052-2.446 1.577-4.261 1.577-1.779 0-3.175-0.527-4.188-1.582-1.012-1.055-1.519-2.503-1.519-4.346 0-1.835 0.507-3.278 1.519-4.329 1.013-1.052 2.429-1.577 4.251-1.577 1.862 0 3.285 0.509 4.266 1.523 0.982 1.018 1.472 2.478 1.472 4.383zm-5.832 3.902c1.82 0 2.731-1.301 2.731-3.902 0-1.356-0.222-2.341-0.665-2.953-0.442-0.611-1.086-0.917-1.93-0.917-1.801 0-2.7 1.29-2.7 3.87 0 1.272 0.22 2.241 0.659 2.906 0.441 0.663 1.074 0.996 1.905 0.996zm8.166 1.815v-8.733c0-0.625-0.01-1.148-0.026-1.565-0.018-0.419-0.037-0.79-0.059-1.113h2.827c0.021 0.127 0.049 0.511 0.084 1.155 0.035 0.643 0.053 1.07 0.053 1.281h0.042c0.289-0.802 0.545-1.365 0.771-1.693 0.225-0.326 0.491-0.569 0.802-0.727 0.309-0.159 0.695-0.238 1.16-0.238 0.379 0 0.686 0.053 0.917 0.158v2.479c-0.479-0.105-0.9-0.158-1.266-0.158-0.738 0-1.312 0.299-1.725 0.896-0.411 0.598-0.616 1.484-0.616 2.658v5.601h-2.964zm9.879 4.482c-0.71 0-1.333-0.046-1.867-0.138v-2.109c0.373 0.057 0.714 0.085 1.023 0.085 0.422 0 0.771-0.067 1.049-0.2 0.278-0.134 0.527-0.355 0.749-0.665s0.47-0.833 0.744-1.571l-4.515-11.296h3.133l1.793 5.348c0.281 0.767 0.636 1.94 1.065 3.522l0.264-1.002 0.686-2.479 1.688-5.39h3.101l-4.515 12.013c-0.604 1.463-1.231 2.476-1.882 3.038s-1.489 0.844-2.516 0.844z"/>
<path fill-rule="evenodd" fill="#119a48" d="m570.78 234.72zm-170.04-102.12zm16.92 0c-8.4 0-16.92 8.52-16.92 17.04v68.04c0 8.521 8.52 17.04 16.92 17.04h136.08c8.52 0 17.04-8.52 17.04-17.04v-68.04c0-8.521-8.521-17.04-17.04-17.04h-136.08z"/>
<g stroke-width="0" stroke-miterlimit="10" fill="none">
<path d="m417.66 132.6c-8.4 0-16.92 8.52-16.92 17.04v68.04c0 8.521 8.52 17.04 16.92 17.04h136.08c8.52 0 17.04-8.52 17.04-17.04v-68.04c0-8.521-8.521-17.04-17.04-17.04h-136.08z"/>
<path d="m400.74 132.6z"/>
<path d="m570.78 234.72z"/>
</g>
<path fill="#fff" d="m461.8 188.92c1.877 0 3.182-0.942 3.912-2.827l2.711 1.023c-0.584 1.435-1.439 2.501-2.567 3.201-1.129 0.699-2.481 1.049-4.056 1.049-2.391 0-4.238-0.677-5.542-2.03-1.305-1.354-1.957-3.246-1.957-5.679 0-2.44 0.629-4.314 1.888-5.622s3.083-1.962 5.474-1.962c1.744 0 3.164 0.351 4.261 1.05 1.098 0.699 1.867 1.728 2.311 3.085l-2.742 0.749c-0.232-0.745-0.688-1.338-1.365-1.777-0.679-0.439-1.479-0.659-2.4-0.659-1.406 0-2.473 0.436-3.2 1.308s-1.093 2.148-1.093 3.829c0 1.708 0.375 3.013 1.124 3.912 0.747 0.9 1.827 1.35 3.241 1.35zm15.109 0.2c-0.829 1.498-2.081 2.246-3.754 2.246-1.104 0-1.966-0.3-2.584-0.901-0.619-0.602-0.929-1.446-0.929-2.536 0-1.182 0.386-2.082 1.155-2.7 0.771-0.619 1.886-0.936 3.349-0.949l2.457-0.042v-0.58c0-0.746-0.13-1.3-0.39-1.661-0.261-0.362-0.686-0.544-1.276-0.544-0.549 0-0.95 0.125-1.207 0.375-0.257 0.249-0.417 0.662-0.48 1.239l-3.091-0.147c0.19-1.111 0.699-1.953 1.525-2.526s1.952-0.859 3.379-0.859c1.441 0 2.553 0.354 3.333 1.065 0.78 0.71 1.171 1.719 1.171 3.026v4.155c0 0.641 0.072 1.081 0.217 1.324 0.145 0.242 0.385 0.363 0.722 0.363 0.226 0 0.443-0.021 0.654-0.062v1.603c-0.176 0.042-0.334 0.081-0.475 0.116s-0.281 0.063-0.422 0.084-0.29 0.039-0.448 0.053c-0.158 0.015-0.343 0.021-0.554 0.021-0.745 0-1.295-0.183-1.65-0.549-0.354-0.365-0.568-0.903-0.639-1.613h-0.063v-0.001zm-0.305-3.248-1.519 0.021c-0.689 0.028-1.178 0.104-1.466 0.227s-0.508 0.312-0.659 0.564c-0.15 0.253-0.227 0.591-0.227 1.013 0 0.541 0.125 0.944 0.375 1.208 0.249 0.264 0.581 0.396 0.996 0.396 0.464 0 0.888-0.127 1.271-0.38s0.683-0.604 0.9-1.05c0.219-0.446 0.327-0.919 0.327-1.418v-0.581zm10.552 5.494c-1.729 0-3.065-0.515-4.008-1.545s-1.413-2.466-1.413-4.309c0-1.884 0.475-3.352 1.424-4.403s2.296-1.576 4.039-1.576c1.343 0 2.454 0.337 3.333 1.013 0.879 0.675 1.431 1.606 1.656 2.795l-2.985 0.147c-0.084-0.584-0.295-1.05-0.633-1.397-0.337-0.349-0.815-0.522-1.435-0.522-1.525 0-2.288 1.276-2.288 3.829 0 2.629 0.776 3.944 2.331 3.944 0.562 0 1.033-0.178 1.413-0.533 0.38-0.354 0.615-0.884 0.706-1.587l2.975 0.137c-0.105 0.781-0.386 1.477-0.839 2.089-0.454 0.611-1.049 1.084-1.787 1.418s-1.569 0.5-2.489 0.5zm10.173-9.344c0.401-0.872 0.904-1.505 1.509-1.898 0.604-0.395 1.325-0.591 2.162-0.591 1.209 0 2.138 0.372 2.784 1.118 0.646 0.745 0.971 1.835 0.971 3.27v7.234h-2.953v-6.391c0-2.004-0.679-3.006-2.036-3.006-0.717 0-1.295 0.308-1.734 0.923s-0.659 1.404-0.659 2.367v6.106h-2.964v-15.651h2.964v4.271c0 0.767-0.028 1.516-0.085 2.247h0.041zm19.854 6.244c-0.809 2.067-2.451 3.101-4.926 3.101-1.716 0-3.034-0.508-3.955-1.523-0.921-1.017-1.382-2.498-1.382-4.445 0-1.885 0.468-3.333 1.403-4.346s2.26-1.519 3.976-1.519c1.639 0 2.89 0.543 3.755 1.629 0.865 1.087 1.297 2.678 1.297 4.772v0.085h-7.319c0 1.11 0.205 1.949 0.616 2.516 0.412 0.565 0.998 0.849 1.757 0.849 1.048 0 1.709-0.453 1.983-1.36l2.795 0.241zm-4.926-6.867c-0.696 0-1.232 0.243-1.609 0.729-0.376 0.484-0.574 1.163-0.595 2.035h4.43c-0.057-0.921-0.278-1.612-0.665-2.072-0.387-0.461-0.907-0.692-1.561-0.692z"/>
<path fill-rule="evenodd" fill="#119a48" d="m574.26 503.4zm-170.16-102zm17.041 0c-8.521 0-17.041 8.52-17.041 16.92v68.04c0 8.52 8.52 17.04 17.041 17.04h136.08c8.399 0 17.04-8.521 17.04-17.04v-68.04c0-8.4-8.641-16.92-17.04-16.92h-136.08z"/>
<g stroke-width="0" stroke-miterlimit="10" fill="none">
<path d="m421.14 401.4c-8.521 0-17.041 8.52-17.041 16.92v68.04c0 8.52 8.52 17.04 17.041 17.04h136.08c8.399 0 17.04-8.521 17.04-17.04v-68.04c0-8.4-8.641-16.92-17.04-16.92h-136.08z"/>
<path d="m404.1 401.4z"/>
<path d="m574.26 503.4z"/>
</g>
<path fill="#fff" d="m466.25 437.8c0 0.956-0.218 1.811-0.653 2.563-0.437 0.752-1.061 1.333-1.873 1.746-0.812 0.41-1.776 0.616-2.895 0.616h-3.691v5.231h-3.111v-14.861h6.676c1.779 0 3.148 0.409 4.107 1.229 0.96 0.819 1.44 1.979 1.44 3.476zm-3.131 0.052c0-1.561-0.923-2.341-2.764-2.341h-3.217v4.819h3.301c0.858 0 1.52-0.212 1.983-0.639 0.464-0.423 0.697-1.037 0.697-1.839zm5.356 10.105v-8.733c0-0.626-0.009-1.148-0.026-1.565-0.018-0.42-0.037-0.79-0.059-1.113h2.827c0.021 0.127 0.049 0.511 0.084 1.155 0.035 0.643 0.053 1.07 0.053 1.281h0.042c0.289-0.802 0.545-1.365 0.771-1.693 0.225-0.326 0.492-0.569 0.802-0.727 0.309-0.159 0.695-0.238 1.16-0.238 0.379 0 0.686 0.053 0.917 0.158v2.479c-0.478-0.105-0.899-0.158-1.266-0.158-0.738 0-1.312 0.299-1.724 0.896s-0.617 1.483-0.617 2.658v5.601h-2.964zm19.244-5.717c0 1.85-0.513 3.3-1.54 4.35-1.026 1.053-2.446 1.578-4.261 1.578-1.778 0-3.173-0.527-4.186-1.582s-1.519-2.504-1.519-4.346c0-1.835 0.506-3.279 1.519-4.329 1.013-1.052 2.428-1.577 4.249-1.577 1.863 0 3.286 0.509 4.267 1.523 0.982 1.018 1.471 2.478 1.471 4.383zm-5.831 3.903c1.82 0 2.73-1.301 2.73-3.902 0-1.357-0.221-2.342-0.663-2.953-0.443-0.611-1.088-0.918-1.932-0.918-1.8 0-2.7 1.291-2.7 3.871 0 1.272 0.221 2.24 0.66 2.906 0.44 0.662 1.074 0.996 1.905 0.996zm8.113 6.296c-0.703 0-1.301-0.032-1.793-0.096v-2.088l0.537 0.042c0.507 0 0.853-0.11 1.04-0.333 0.185-0.22 0.278-0.68 0.278-1.375v-12.045h2.964v12.762c0 1.006-0.255 1.779-0.764 2.32-0.51 0.542-1.264 0.813-2.262 0.813zm0.063-17.951v-2.184h2.964v2.184h-2.964zm15.571 10.578c-0.809 2.067-2.452 3.102-4.926 3.102-1.717 0-3.034-0.509-3.955-1.523-0.922-1.018-1.382-2.499-1.382-4.446 0-1.885 0.468-3.333 1.403-4.346 0.934-1.013 2.259-1.519 3.976-1.519 1.638 0 2.891 0.544 3.755 1.629 0.865 1.088 1.298 2.678 1.298 4.773v0.084h-7.32c0 1.111 0.205 1.949 0.617 2.516 0.411 0.565 0.997 0.849 1.756 0.849 1.047 0 1.709-0.453 1.983-1.36l2.795 0.241zm-4.926-6.865c-0.696 0-1.232 0.242-1.608 0.728-0.377 0.485-0.574 1.163-0.596 2.035h4.43c-0.058-0.921-0.279-1.611-0.664-2.073-0.389-0.459-0.907-0.69-1.562-0.69zm12.094 9.967c-1.729 0-3.065-0.516-4.008-1.545-0.942-1.031-1.413-2.467-1.413-4.309 0-1.885 0.475-3.354 1.424-4.403 0.949-1.052 2.296-1.577 4.039-1.577 1.344 0 2.454 0.338 3.333 1.013s1.431 1.606 1.656 2.795l-2.985 0.147c-0.084-0.584-0.295-1.049-0.633-1.398-0.337-0.347-0.815-0.521-1.434-0.521-1.526 0-2.289 1.276-2.289 3.829 0 2.63 0.777 3.944 2.331 3.944 0.562 0 1.033-0.178 1.413-0.532 0.38-0.356 0.615-0.885 0.707-1.588l2.974 0.138c-0.105 0.78-0.386 1.477-0.839 2.088s-1.049 1.085-1.787 1.418c-0.738 0.334-1.568 0.501-2.489 0.501zm12.674-0.38c-0.731 0.239-1.564 0.358-2.499 0.358-0.872 0-1.544-0.236-2.015-0.713-0.472-0.473-0.707-1.192-0.707-2.156v-6.729h-1.444v-2.004h1.592l0.929-2.679h1.856v2.679h2.162v2.004h-2.162v5.928c0 0.555 0.105 0.965 0.316 1.228 0.211 0.265 0.537 0.396 0.98 0.396 0.232 0 0.562-0.05 0.991-0.147v1.835h0.001z"/>
<path fill="#fff" d="m447.23 471.84h-3.133l-1.813-6.961c-0.085-0.316-0.25-1.097-0.496-2.341l-0.548 2.362-1.836 6.939h-3.132l-2.953-11.411h2.784l1.877 8.722 0.148-0.781 0.264-1.233 1.793-6.707h3.174l1.751 6.707c0.099 0.366 0.243 1.036 0.433 2.015l0.295-1.394 1.646-7.328h2.742l-2.996 11.411zm15.392-5.716c0 1.849-0.514 3.299-1.54 4.35s-2.446 1.577-4.261 1.577c-1.779 0-3.175-0.527-4.188-1.582-1.012-1.055-1.519-2.503-1.519-4.345 0-1.836 0.507-3.279 1.519-4.33 1.013-1.052 2.43-1.576 4.251-1.576 1.863 0 3.286 0.507 4.267 1.523s1.471 2.477 1.471 4.383zm-5.832 3.902c1.82 0 2.731-1.301 2.731-3.902 0-1.357-0.222-2.342-0.665-2.953-0.442-0.612-1.086-0.919-1.93-0.919-1.8 0-2.7 1.291-2.7 3.872 0 1.272 0.221 2.24 0.66 2.904 0.441 0.665 1.074 0.998 1.904 0.998zm8.166 1.814v-8.732c0-0.626-0.009-1.148-0.026-1.567-0.018-0.418-0.036-0.788-0.058-1.111h2.826c0.021 0.126 0.05 0.511 0.085 1.154s0.053 1.069 0.053 1.28h0.042c0.288-0.802 0.545-1.365 0.77-1.692 0.226-0.326 0.492-0.569 0.802-0.728s0.696-0.237 1.16-0.237c0.38 0 0.686 0.054 0.918 0.159v2.478c-0.479-0.105-0.9-0.157-1.266-0.157-0.738 0-1.313 0.298-1.726 0.896-0.411 0.598-0.616 1.483-0.616 2.657v5.602h-2.964zm15.691 0-3.048-5.168-1.276 0.886v4.282h-2.964v-15.651h2.964v8.965l4.071-4.725h3.186l-4.008 4.45 4.313 6.961h-3.238zm14.212-3.333c0 1.104-0.453 1.971-1.356 2.6s-2.152 0.944-3.749 0.944c-1.567 0-2.769-0.248-3.602-0.744-0.834-0.495-1.387-1.267-1.661-2.314l2.605-0.392c0.147 0.543 0.401 0.926 0.764 1.151 0.362 0.225 0.994 0.337 1.894 0.337 0.83 0 1.435-0.105 1.814-0.316s0.569-0.541 0.569-0.991c0-0.365-0.153-0.656-0.459-0.87-0.306-0.215-0.824-0.396-1.556-0.543-1.673-0.33-2.802-0.639-3.385-0.924-0.584-0.284-1.029-0.653-1.335-1.107-0.306-0.453-0.458-1.011-0.458-1.672 0-1.09 0.419-1.938 1.26-2.547 0.84-0.607 2.03-0.912 3.57-0.912 1.357 0 2.448 0.265 3.274 0.792s1.341 1.289 1.546 2.287l-2.627 0.274c-0.084-0.464-0.291-0.81-0.622-1.038s-0.854-0.343-1.571-0.343c-0.703 0-1.23 0.09-1.582 0.269-0.352 0.18-0.527 0.479-0.527 0.901 0 0.33 0.135 0.593 0.405 0.786s0.727 0.353 1.366 0.479c0.894 0.183 1.686 0.371 2.378 0.564s1.248 0.425 1.667 0.691c0.418 0.268 0.752 0.609 1.002 1.028s0.376 0.957 0.376 1.61zm13.19-2.426c0 1.906-0.382 3.377-1.146 4.414-0.763 1.037-1.84 1.556-3.231 1.556-0.802 0-1.5-0.175-2.095-0.522-0.594-0.348-1.049-0.849-1.365-1.502h-0.062c0.042 0.211 0.062 0.851 0.062 1.919v4.377h-2.963v-13.269c0-1.076-0.028-1.95-0.085-2.625h2.88c0.035 0.126 0.064 0.375 0.089 0.747 0.024 0.373 0.037 0.743 0.037 1.108h0.042c0.668-1.398 1.885-2.1 3.649-2.1 1.329 0 2.359 0.512 3.091 1.535 0.731 1.024 1.097 2.478 1.097 4.362zm-5.464 3.945c1.582 0 2.373-1.315 2.373-3.945 0-2.559-0.783-3.839-2.352-3.839-0.787 0-1.391 0.345-1.81 1.034-0.418 0.688-0.627 1.652-0.627 2.89 0 1.23 0.209 2.181 0.627 2.853 0.42 0.67 1.016 1.007 1.789 1.007zm14.361-0.221c-0.829 1.497-2.081 2.246-3.755 2.246-1.104 0-1.965-0.301-2.584-0.902-0.618-0.601-0.928-1.446-0.928-2.536 0-1.181 0.385-2.081 1.154-2.699 0.77-0.619 1.887-0.936 3.35-0.949l2.457-0.043v-0.581c0-0.745-0.13-1.298-0.391-1.66-0.26-0.362-0.686-0.543-1.275-0.543-0.549 0-0.952 0.124-1.209 0.374-0.256 0.25-0.416 0.662-0.479 1.238l-3.091-0.147c0.19-1.11 0.697-1.952 1.523-2.525s1.954-0.858 3.381-0.858c1.441 0 2.553 0.354 3.333 1.063s1.171 1.721 1.171 3.028v4.155c0 0.64 0.071 1.081 0.216 1.323 0.144 0.242 0.385 0.364 0.723 0.364 0.225 0 0.443-0.021 0.654-0.063v1.604c-0.176 0.042-0.334 0.081-0.475 0.116s-0.281 0.063-0.422 0.084-0.291 0.039-0.449 0.053c-0.158 0.015-0.342 0.021-0.553 0.021-0.746 0-1.297-0.183-1.651-0.549-0.355-0.365-0.567-0.903-0.638-1.613h-0.062v-0.001zm-0.306-3.25-1.519 0.021c-0.689 0.028-1.178 0.104-1.466 0.228-0.289 0.123-0.509 0.312-0.66 0.564s-0.227 0.591-0.227 1.013c0 0.541 0.125 0.943 0.374 1.207 0.25 0.264 0.583 0.396 0.997 0.396 0.465 0 0.888-0.126 1.271-0.379 0.384-0.254 0.685-0.604 0.902-1.051 0.218-0.446 0.327-0.918 0.327-1.418v-0.581zm10.551 5.496c-1.73 0-3.066-0.516-4.008-1.546-0.942-1.029-1.414-2.467-1.414-4.309 0-1.885 0.477-3.352 1.426-4.402 0.949-1.052 2.294-1.576 4.038-1.576 1.343 0 2.454 0.337 3.333 1.012 0.879 0.676 1.431 1.605 1.656 2.794l-2.985 0.147c-0.085-0.583-0.296-1.049-0.633-1.396-0.338-0.348-0.815-0.522-1.435-0.522-1.525 0-2.287 1.277-2.287 3.829 0 2.63 0.775 3.945 2.329 3.945 0.562 0 1.034-0.179 1.413-0.533 0.38-0.355 0.615-0.885 0.708-1.588l2.975 0.138c-0.105 0.78-0.386 1.477-0.839 2.089-0.454 0.611-1.051 1.084-1.789 1.418s-1.567 0.5-2.488 0.5zm16.851-3.101c-0.809 2.067-2.451 3.101-4.926 3.101-1.716 0-3.034-0.509-3.955-1.524s-1.382-2.497-1.382-4.445c0-1.884 0.468-3.332 1.403-4.345s2.26-1.519 3.976-1.519c1.639 0 2.89 0.542 3.755 1.629 0.865 1.086 1.297 2.676 1.297 4.771v0.084h-7.319c0 1.111 0.205 1.95 0.616 2.517 0.412 0.565 0.998 0.85 1.757 0.85 1.048 0 1.709-0.454 1.983-1.362l2.795 0.243zm-4.925-6.867c-0.696 0-1.232 0.244-1.609 0.729-0.376 0.485-0.574 1.163-0.595 2.035h4.43c-0.057-0.922-0.278-1.611-0.665-2.072s-0.907-0.692-1.561-0.692z"/>
<path fill-rule="evenodd" fill="#010101" d="m158.58 241.56zm-13.679-115.68zm3.479 0v86.64h-3.479l6.84 29.04 6.84-29.04h-3.48v-86.64h-6.721z"/>
<g stroke-width="0" stroke-miterlimit="10" fill="none">
<polygon transform="translate(-2.779 0.000005)" points="154.52 241.56 161.36 212.52 157.88 212.52 157.88 125.88 151.16 125.88 151.16 212.52 147.68 212.52"/>
<path d="m144.9 125.88z"/>
<path d="m158.58 241.56z"/>
</g>
<path fill-rule="evenodd" fill="#010101" d="m496.14 381zm-13.561-115.68zm3.361 0v86.76h-3.36l6.72 28.921 6.841-28.921h-3.36v-86.76h-6.841z"/>
<g stroke-width="0" stroke-miterlimit="10" fill="none">
<polygon transform="translate(-2.779 0.000005)" points="492.08 381 498.92 352.08 495.56 352.08 495.56 265.32 488.72 265.32 488.72 352.08 485.36 352.08"/>
<path d="m482.58 265.32z"/>
<path d="m496.14 381z"/>
</g>
<path fill-rule="evenodd" fill="#010101" d="m378.18 217.08zm-110.64 49.199zm1.68 2.761 78.12-45.121-1.56-2.76 29.16-9.6-22.8 20.521-1.681-2.761-78.12 45.24-3.119-5.519z"/>
<g stroke-width="0" stroke-miterlimit="10" fill="none">
<polygon transform="translate(-2.779 0.000005)" points="377.72 211.56 354.92 232.08 353.24 229.32 275.12 274.56 272 269.04 350.12 223.92 348.56 221.16"/>
<path d="m267.54 266.28z"/>
<path d="m378.18 217.08z"/>
</g>
<path fill-rule="evenodd" fill="#010101" d="m273.78 364.08zm97.92 71.161zm1.559-2.761-78.119-45.12-1.681 2.76-22.92-20.52 29.28 9.479-1.561 2.881 78.121 45.119-3.12 5.401z"/>
<g stroke-width="0" stroke-miterlimit="10" fill="none">
<polygon transform="translate(-2.779 0.000005)" points="273.32 369.6 302.6 379.08 301.04 381.96 379.16 427.08 376.04 432.48 297.92 387.36 296.24 390.12"/>
<path d="m371.7 435.24z"/>
<path d="m273.78 364.08z"/>
</g>
<g fill="#010101">
<path d="m12.487 191.76-12.487-6.24l12.487-6.243v1.74l-8.996 4.503 8.996 4.493v1.751zm4.4-13.532v-2.077h2.077v2.077h-2.077zm0 13.532v-11.454h2.077v11.454h-2.077zm8.485 0-4.261-11.454h2.077l3.333 8.912 3.513-8.912h1.94l-4.524 11.454h-2.078zm9.545 4.166 1.856-4.166-4.43-11.454h2.246l3.28 8.627 3.502-8.627h1.961l-6.254 15.62h-2.161zm10.798-13.532v-2.088h2.078v2.088h-2.078zm0 9.366v-2.078h2.078v2.078h-2.078zm6.53-13.532v-2.077h2.078v2.077h-2.078zm0 13.532v-11.454h2.078v11.454h-2.078zm6.114 0v-11.454h2.077v2.151c1.097-1.603 2.44-2.404 4.029-2.404 0.991 0 1.782 0.314 2.373 0.943 0.591 0.63 0.886 1.476 0.886 2.537v8.227h-2.078v-7.552c0-0.851-0.124-1.457-0.374-1.819s-0.663-0.543-1.239-0.543c-1.272 0-2.472 0.833-3.597 2.499v7.415h-2.077zm16.451 0.263c-0.949 0-2.103-0.222-3.46-0.665v-1.908c1.357 0.675 2.539 1.012 3.544 1.012 0.598 0 1.094-0.161 1.487-0.484 0.394-0.324 0.591-0.729 0.591-1.213 0-0.711-0.552-1.298-1.656-1.762l-1.213-0.517c-1.793-0.745-2.689-1.817-2.689-3.217 0-0.999 0.354-1.784 1.061-2.357 0.706-0.573 1.675-0.859 2.905-0.859 0.64 0 1.431 0.088 2.373 0.264l0.433 0.084v1.729c-1.16-0.344-2.081-0.517-2.764-0.517-1.336 0-2.004 0.485-2.004 1.456 0 0.625 0.507 1.152 1.519 1.582l1.002 0.422c1.133 0.478 1.934 0.982 2.405 1.513s0.706 1.194 0.706 1.988c0 1.006-0.396 1.832-1.191 2.479-0.796 0.647-1.812 0.97-3.049 0.97zm12.996-0.263c-0.64 0.176-1.195 0.264-1.666 0.264-1.055 0-1.877-0.303-2.468-0.907s-0.886-1.445-0.886-2.521v-6.729h-1.435v-1.561h1.435v-2.078l2.077-0.2v2.278h2.995v1.561h-2.995v6.35c0 1.498 0.647 2.246 1.94 2.246 0.274 0 0.608-0.045 1.002-0.137v1.434h0.001zm10.693 0.263c-0.971 0-1.589-0.573-1.856-1.72-1.244 1.146-2.443 1.72-3.597 1.72-0.949 0-1.736-0.297-2.362-0.892-0.626-0.594-0.938-1.345-0.938-2.252 0-1.251 0.525-2.213 1.576-2.884 1.052-0.672 2.558-1.008 4.52-1.008h0.496v-1.382c0-1.328-0.683-1.993-2.046-1.993-1.098 0-2.282 0.338-3.555 1.013v-1.719c1.399-0.57 2.711-0.854 3.934-0.854 1.28 0 2.224 0.288 2.832 0.864 0.608 0.577 0.912 1.474 0.912 2.689v5.189c0 1.188 0.366 1.782 1.098 1.782 0.091 0 0.225-0.014 0.4-0.042l0.147 1.149c-0.471 0.228-0.991 0.34-1.561 0.34zm-4.862-1.698c0.865 0 1.765-0.383 2.7-1.149v-2.964l-0.696-0.021c-1.139 0-2.061 0.217-2.764 0.649s-1.055 1-1.055 1.703c0 0.499 0.176 0.921 0.527 1.266s0.782 0.516 1.288 0.516zm9.088 1.435v-16.653h2.078v16.653h-2.078zm6.112 0v-16.653h2.078v16.653h-2.078zm6.2 3.122 5.622-18.731h1.635l-5.622 18.731h-1.635zm11.69-3.122 12.488-6.244-12.488-6.243v1.74l8.997 4.503-8.997 4.493v1.751z"/>
<path d="m515.89 331.2-12.487-6.244 12.487-6.244v1.74l-8.996 4.504 8.996 4.493v1.751zm4.399-13.532v-2.077h2.077v2.077h-2.077zm0 13.532v-11.454h2.077v11.454h-2.077zm8.487 0-4.261-11.454h2.078l3.332 8.912 3.513-8.912h1.94l-4.524 11.454h-2.078zm9.545 4.166 1.856-4.166-4.43-11.454h2.246l3.28 8.627 3.502-8.627h1.962l-6.255 15.62h-2.161zm10.798-13.532v-2.088h2.078v2.088h-2.078zm0 9.366v-2.078h2.078v2.078h-2.078zm6.529 0v-11.454h2.078v2.151c0.822-1.604 2.018-2.404 3.586-2.404 0.211 0 0.433 0.018 0.664 0.053v1.94c-0.358-0.12-0.675-0.18-0.949-0.18-1.314 0-2.415 0.78-3.301 2.342v7.552h-2.078zm17.166-0.369c-1.393 0.422-2.584 0.633-3.575 0.633-1.688 0-3.064-0.561-4.13-1.684-1.065-1.12-1.598-2.574-1.598-4.36 0-1.736 0.469-3.16 1.408-4.271 0.938-1.11 2.14-1.666 3.602-1.666 1.386 0 2.455 0.492 3.211 1.477s1.135 2.384 1.135 4.197l-0.011 0.644h-7.225c0.303 2.721 1.635 4.082 3.997 4.082 0.865 0 1.927-0.232 3.186-0.696v1.644zm-4.419-9.788c-1.597 0-2.485 1.065-2.669 3.196h5.053c0-2.131-0.795-3.196-2.384-3.196zm13.225 10.157c-0.64 0.174-1.195 0.264-1.667 0.264-1.055 0-1.877-0.303-2.468-0.907s-0.886-1.445-0.886-2.521v-6.729h-1.435v-1.561h1.435v-2.078l2.078-0.2v2.278h2.995v1.561h-2.995v6.35c0 1.497 0.646 2.246 1.94 2.246 0.274 0 0.608-0.046 1.002-0.137v1.434h0.001zm2.929 0v-11.454h2.077v2.151c0.823-1.604 2.019-2.404 3.586-2.404 0.211 0 0.433 0.018 0.665 0.053v1.94c-0.358-0.12-0.675-0.18-0.949-0.18-1.315 0-2.415 0.78-3.302 2.342v7.552h-2.077zm8.771-13.532v-2.077h2.077v2.077h-2.077zm0 13.532v-11.454h2.077v11.454h-2.077zm14.637-0.369c-1.393 0.422-2.584 0.633-3.575 0.633-1.688 0-3.064-0.561-4.13-1.684-1.065-1.12-1.598-2.574-1.598-4.36 0-1.736 0.469-3.16 1.407-4.271 0.939-1.11 2.141-1.666 3.603-1.666 1.386 0 2.455 0.492 3.211 1.477s1.135 2.384 1.135 4.197l-0.011 0.644h-7.225c0.303 2.721 1.635 4.082 3.997 4.082 0.865 0 1.926-0.232 3.186-0.696v1.644zm-4.419-9.788c-1.597 0-2.486 1.065-2.669 3.196h5.052c0-2.131-0.794-3.196-2.383-3.196zm10.493 10.157-4.261-11.454h2.078l3.333 8.912 3.512-8.912h1.94l-4.524 11.454h-2.078zm17.189-0.369c-1.393 0.422-2.584 0.633-3.575 0.633-1.688 0-3.064-0.561-4.13-1.684-1.065-1.12-1.598-2.574-1.598-4.36 0-1.736 0.469-3.16 1.408-4.271 0.938-1.11 2.14-1.666 3.602-1.666 1.386 0 2.455 0.492 3.211 1.477s1.135 2.384 1.135 4.197l-0.011 0.644h-7.225c0.303 2.721 1.635 4.082 3.997 4.082 0.865 0 1.927-0.232 3.186-0.696v1.644zm-4.419-9.788c-1.597 0-2.485 1.065-2.669 3.196h5.053c0-2.131-0.795-3.196-2.384-3.196zm8.384 10.157 12.487-6.244-12.487-6.244v1.74l8.996 4.504-8.996 4.493v1.751z"/>
<path d="m260.77 463.92-12.488-6.243 12.488-6.244v1.74l-8.997 4.504 8.997 4.493v1.75zm4.398-13.531v-2.078h2.078v2.078h-2.078zm0 13.531v-11.453h2.078v11.453h-2.078zm8.487 0-4.262-11.453h2.078l3.333 8.912 3.512-8.912h1.94l-4.524 11.453h-2.077zm9.545 4.166 1.855-4.166-4.43-11.453h2.247l3.28 8.627 3.501-8.627h1.962l-6.254 15.619h-2.161zm10.797-13.531v-2.088h2.078v2.088h-2.078zm0 9.365v-2.077h2.078v2.077h-2.078zm6.531 4.166v-15.619h2.078v2.151c0.851-1.604 2.127-2.405 3.828-2.405 1.378 0 2.463 0.503 3.254 1.509 0.791 1.005 1.187 2.38 1.187 4.124 0 1.898-0.448 3.43-1.345 4.592-0.896 1.165-2.076 1.746-3.539 1.746-1.356 0-2.485-0.52-3.385-1.561v5.463h-2.078zm2.078-6.897c1.068 0.956 2.088 1.435 3.059 1.435 1.996 0 2.995-1.522 2.995-4.566 0-2.686-0.886-4.029-2.658-4.029-1.16 0-2.292 0.629-3.396 1.888v5.272zm18.647 2.731v-2.151c-1.104 1.61-2.443 2.415-4.018 2.415-0.999 0-1.793-0.313-2.384-0.944-0.591-0.628-0.886-1.477-0.886-2.546v-8.227h2.078v7.551c0 0.859 0.124 1.469 0.374 1.83 0.249 0.363 0.666 0.543 1.25 0.543 1.265 0 2.46-0.833 3.585-2.499v-7.425h2.078v11.453h-2.077zm6.167 0.127v-16.78h2.077v7.352c0.851-1.604 2.127-2.405 3.829-2.405 1.378 0 2.462 0.503 3.253 1.509 0.791 1.005 1.187 2.38 1.187 4.124 0 1.898-0.448 3.43-1.345 4.592-0.896 1.165-2.075 1.746-3.538 1.746-1.357 0-2.485-0.52-3.386-1.561l-0.253 1.424h-1.824zm2.077-2.858c1.069 0.956 2.089 1.435 3.059 1.435 1.997 0 2.995-1.522 2.995-4.566 0-2.686-0.886-4.029-2.657-4.029-1.16 0-2.292 0.629-3.396 1.888v5.272zm11.488 2.731v-16.653h2.077v16.653h-2.077zm6.242-13.531v-2.078h2.078v2.078h-2.078zm0 13.531v-11.453h2.078v11.453h-2.078zm9.15 0.264c-0.949 0-2.103-0.221-3.46-0.664v-1.909c1.357 0.675 2.538 1.013 3.544 1.013 0.598 0 1.094-0.162 1.487-0.485s0.591-0.728 0.591-1.213c0-0.71-0.553-1.297-1.656-1.761l-1.213-0.518c-1.793-0.744-2.689-1.817-2.689-3.217 0-0.998 0.354-1.783 1.061-2.357 0.707-0.572 1.675-0.859 2.905-0.859 0.64 0 1.431 0.088 2.373 0.264l0.433 0.085v1.729c-1.16-0.345-2.082-0.517-2.764-0.517-1.336 0-2.004 0.485-2.004 1.455 0 0.627 0.506 1.154 1.519 1.582l1.002 0.422c1.132 0.479 1.934 0.983 2.405 1.513 0.471 0.532 0.706 1.194 0.706 1.989 0 1.007-0.397 1.831-1.191 2.479-0.796 0.645-1.811 0.969-3.049 0.969zm7.979-0.264v-16.653h2.078v7.352c1.097-1.604 2.439-2.405 4.029-2.405 0.991 0 1.782 0.315 2.373 0.943 0.59 0.631 0.886 1.477 0.886 2.537v8.227h-2.078v-7.551c0-0.85-0.125-1.457-0.375-1.82-0.249-0.361-0.663-0.543-1.238-0.543-1.274 0-2.473 0.834-3.597 2.5v7.414h-2.078zm13.591 0 12.487-6.243-12.487-6.244v1.74l8.996 4.504-8.996 4.493v1.75z"/>
<path d="m264.13 195.24-12.487-6.243 12.487-6.244v1.74l-8.996 4.504 8.996 4.492v1.751zm4.4-13.531v-2.078h2.077v2.078h-2.077zm0 13.531v-11.454h2.077v11.454h-2.077zm8.615 0-4.261-11.454h2.078l3.332 8.912 3.513-8.912h1.94l-4.524 11.454h-2.078zm9.459 4.166 1.856-4.166-4.43-11.454h2.246l3.28 8.628 3.502-8.628h1.961l-6.254 15.62h-2.161zm10.906-13.531v-2.089h2.077v2.089h-2.077zm0 9.365v-2.077h2.077v2.077h-2.077zm6.422 0v-11.454h2.077v2.152c0.823-1.604 2.019-2.405 3.586-2.405 0.211 0 0.433 0.018 0.665 0.053v1.94c-0.358-0.119-0.675-0.179-0.949-0.179-1.315 0-2.415 0.78-3.302 2.341v7.552h-2.077zm17.164-0.369c-1.392 0.422-2.584 0.633-3.574 0.633-1.688 0-3.064-0.561-4.13-1.682-1.064-1.122-1.598-2.575-1.598-4.361 0-1.736 0.47-3.16 1.408-4.271s2.14-1.667 3.602-1.667c1.386 0 2.456 0.492 3.212 1.477s1.133 2.384 1.133 4.198l-0.011 0.644h-7.224c0.303 2.721 1.635 4.081 3.997 4.081 0.864 0 1.926-0.231 3.185-0.696v1.644zm-4.418-9.787c-1.597 0-2.486 1.065-2.669 3.195h5.052c0-2.13-0.794-3.195-2.383-3.195zm11.157 10.42c-0.949 0-2.104-0.222-3.459-0.664v-1.909c1.355 0.675 2.537 1.013 3.544 1.013 0.597 0 1.092-0.162 1.485-0.485 0.395-0.323 0.591-0.728 0.591-1.213 0-0.71-0.552-1.297-1.654-1.762l-1.214-0.517c-1.793-0.744-2.688-1.817-2.688-3.217 0-0.998 0.353-1.784 1.06-2.357 0.706-0.572 1.674-0.859 2.906-0.859 0.639 0 1.43 0.089 2.371 0.264l0.434 0.085v1.729c-1.16-0.344-2.082-0.517-2.763-0.517-1.337 0-2.004 0.484-2.004 1.455 0 0.626 0.506 1.153 1.519 1.582l1.001 0.422c1.132 0.479 1.934 0.982 2.404 1.514 0.472 0.53 0.708 1.193 0.708 1.988 0 1.006-0.398 1.831-1.193 2.479-0.795 0.647-1.811 0.969-3.048 0.969zm12.461 0c-1.639 0-2.946-0.543-3.924-1.629-0.977-1.087-1.466-2.54-1.466-4.361 0-1.842 0.49-3.3 1.471-4.372s2.312-1.608 3.993-1.608c1.68 0 3.01 0.536 3.991 1.608 0.98 1.072 1.472 2.522 1.472 4.351 0 1.871-0.492 3.34-1.477 4.409s-2.337 1.602-4.06 1.602zm-3.175-5.99c0 2.953 1.069 4.43 3.206 4.43 2.201 0 3.302-1.483 3.302-4.451 0-2.932-1.087-4.397-3.259-4.397-2.166-0.001-3.249 1.471-3.249 4.418zm11.89 5.726v-16.653h2.078v16.653h-2.078zm8.486 0-4.262-11.454h2.078l3.333 8.912 3.512-8.912h1.94l-4.524 11.454h-2.077zm17.276-0.369c-1.393 0.422-2.584 0.633-3.575 0.633-1.688 0-3.063-0.561-4.129-1.682-1.065-1.122-1.599-2.575-1.599-4.361 0-1.736 0.471-3.16 1.409-4.271s2.139-1.667 3.601-1.667c1.386 0 2.457 0.492 3.213 1.477s1.133 2.384 1.133 4.198l-0.011 0.644h-7.225c0.303 2.721 1.635 4.081 3.997 4.081 0.865 0 1.927-0.231 3.186-0.696v1.644zm-4.419-9.787c-1.597 0-2.485 1.065-2.669 3.195h5.053c0-2.13-0.795-3.195-2.384-3.195zm8.384 10.156 12.487-6.243-12.487-6.244v1.74l8.996 4.504-8.996 4.492v1.751z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 229 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 762 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

View File

@ -1,81 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 0};</script>
<script type="text/javascript" src="xooki/xooki.js"></script>
</head>
<body>
<textarea id="xooki-source">
Welcome to the official Ivy documentation.
<h1>What is Ivy?</h1>
Ivy is a tool for managing (recording, tracking, resolving and reporting) project dependencies. It is characterized by the following:
<ol>
<li>flexibility and configurability - Ivy is essentially process agnostic and is not tied to any methodology or structure. Instead it provides the necessary flexibility and configurability to be adapted to a broad range of dependency management and build processes.</li>
<li>tight integration with Apache Ant - while available as a standalone tool, Ivy works particularly well with Apache Ant providing a number of powerful Ant tasks ranging from dependency resolution to dependency reporting and publication.</li>
</ol>
Ivy is open source and released under a very permissive [[license Apache License]].
Ivy has a lot of powerful [[features]], the most popular and useful being its flexibility, integration with ant, and its strong transitive dependencies management engine.
The transitive dependencies management is a feature which lets you get dependencies of your dependencies, transitively. In order to address this general problem, ivy needs to find metadata about your modules, usually in an <a href="ivyfile.html">ivy file</a>. To find the metadata and your dependencies' artifacts (usually jars), Ivy can be configured to use a lot of different <a href="configuration/resolvers.html">repositories</a>.
<h1>About this doc</h1>
<div class="postit" style="width: 250px;">
Tip: The menu on the left is dynamic, you can click on the arrows to browse the menu without going to each page.
</div>
This documentation has been migrated from the old Ivy web site hosted by Jayasoft, feel free to report any problem on the [[mailing-lists]].
If you browse this documentation from your installation of Ivy, you can also check the <a href="http://ant.apache.org/ivy/">online version</a> for the latest updates.
You can also browse this documentation offline either by downloading the documentation distribution, or by checking out the doc directory from git. This documentation uses <a href="http://xooki.sourceforge.net/">xooki</a> as its documentation engine, so you can very easily [[get-involved edit it and submit patches]] when you browse it from source.
A <a href="book.html">printer-friendly version</a> of this whole documentation is also provided for your convenience.
Since Ivy [[history/2.0.0-alpha-2 2.0.0-alpha-2]], we keep an online history of the documentation. You can thus browse history versions online (in the history menu in the web site) and even check the trunk version documentation currently in development.
For earlier versions, we suggest downloading the documentation to browse the documentation corresponding to the version you use. The full history of Ivy versions with corresponding links for download is available in the history menu on the web site.
<h1>Other places to go</h1>
Check out Ivy [[features features]].
Read our [[faq FAQ]].
Ask for help on our [[mailing-lists mailing lists]].
Report a bug or feature request in our [[issues issue tracking system]].
Check [[links external tools and resources]].
<h1>Overview</h1>
This documentation is composed of three main parts:
<ul>
<li>[[tutorial]]</li>
The tutorials is the best way to begin to play with Ivy. You will easily and quickly learn the basics of Ivy.
<li>[[reference]]</li>
The reference documentation gives you all the details of Ivy.
The introduction part is particularly useful: it defines some vocabulary, explains main concepts such as dependency resolvers and patterns, and gives an overview of how ivy works internally.
It's also in the reference doc that you will find all you always dreamed to know about ivy settings, ivy files, and ivy use (especially with ant).
<li>[[dev]]</li>
The developers's doc is useful for users who would like to extend Ivy or build it from source. It's also the documentation used by the Ivy team, so you will also find information about how we make releases.
</ul>
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,89 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 0};</script>
<script type="text/javascript" src="xooki/xooki.js"></script>
</head>
<body>
<textarea id="xooki-source">
There are basically two ways to install Ivy: either manually or automatically.
<h1>Manually</h1>
Download the version you want [[download here]], unpack the downloaded zip file wherever you want, and copy the ivy jar file into your ant lib directory (ANT_HOME/lib).
If you use ant 1.6.0 or superior, you can then simply go to the src/example/hello-ivy dir and run ant: if the build is successful, you have successfully installed Ivy!
If you use ant 1.5.1 or superior, you have to modify the build files in the examples:
- remove the namespace section at their head: xmlns:ivy="antlib:org.apache.ivy.ant"
- add taskdefs for ivy tasks:
<code>
<taskdef name="ivy-configure" classname="org.apache.ivy.ant.IvyConfigure"/>
<taskdef name="ivy-resolve" classname="org.apache.ivy.ant.IvyResolve"/>
<taskdef name="ivy-retrieve" classname="org.apache.ivy.ant.IvyRetrieve"/>
<taskdef name="ivy-publish" classname="org.apache.ivy.ant.IvyPublish"/>
</code>
- replace ivy:xxx tasks by ivy-xxx
You can now run the build, if it is successful, you have successfully installed Ivy!
If the build is not successful, check the [[faq FAQ]] to see what might be the problem with the ivyrep resolver.
<h2>Ivy dependendencies</h2>
One of the two binary versions of Ivy doesn't include the optional dependencies. To download them using Ivy, all you need is to run the Ant build file provided in the distribution. This will use Ivy itself to download the dependencies. Then you should see the Ivy optional dependencies in the lib directory, organized per configuration (see the ivy.xml for details about the configurations and their use).
<h1>Automatically</h1>
If you want to use Ivy only in your ant build scripts, and have an internet connection when you build, you can download Ivy from this site and use the downloaded version automatically, using this simple build snippet:
<code type="xml">
<property name="ivy.install.version" value="2.1.0-rc2" />
<condition property="ivy.home" value="${env.IVY_HOME}">
<isset property="env.IVY_HOME" />
</condition>
<property name="ivy.home" value="${user.home}/.ant" />
<property name="ivy.jar.dir" value="${ivy.home}/lib" />
<property name="ivy.jar.file" value="${ivy.jar.dir}/ivy.jar" />
<target name="download-ivy" unless="offline">
<mkdir dir="${ivy.jar.dir}"/>
<!-- download Ivy from web site so that it can be used even without any special installation -->
<get src="https://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar"
dest="${ivy.jar.file}" usetimestamp="true"/>
</target>
<target name="init-ivy" depends="download-ivy">
<!-- try to load ivy here from ivy home, in case the user has not already dropped
it into ant's lib dir (note that the latter copy will always take precedence).
We will not fail as long as local lib dir exists (it may be empty) and
ivy is in at least one of ant's lib dir or the local lib dir. -->
<path id="ivy.lib.path">
<fileset dir="${ivy.jar.dir}" includes="*.jar"/>
</path>
<taskdef resource="org/apache/ivy/ant/antlib.xml"
uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/>
</target>
</code>
Then the only thing to do is to add the init-ivy target in the depends attribute of your targets using Ivy, and add the ivy namespace to your build script. See the self contained [[gitfile:src/example/go-ivy/build.xml go-ivy]] example for details about this.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,137 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 0};</script>
<script type="text/javascript" src="xooki/xooki.js"></script>
</head>
<body>
<textarea id="xooki-source">
Ivy use is entirely based on <em>module descriptors</em> known as "ivy files". Ivy files are xml files, usually called ivy.xml, containing the description of the dependencies of a module, its published artifacts and its configurations.
Here is the simplest ivy file you can write:
<code type="xml">
<ivy-module version="2.0">
<info organisation="myorg"
module="mymodule"
/>
</ivy-module>
</code>
If you want to see a sample module descriptor using almost all possibilities of ivy files, check this one, <a href="samples/ivy-sample-xslt.xml">with</a> or <a href="samples/ivy-sample.xml">without</a> xslt.
Before beginning the reference itself, it is required to have in mind the terminology defined in the <a href="reference.html">main page</a> of this reference documentation.
For those familiar with xml schema, the schema used to validate ivy files can be found <a href="http://ant.apache.org/ivy/schemas/ivy.xsd">here</a>. For those using xsd aware IDE, you can declare the xsd in your ivy files to benefit from code completion / validation:
<code type="xml">
<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation=
"http://ant.apache.org/ivy/schemas/ivy.xsd">
<info organisation="myorg"
module="mymodule"
/>
</ivy-module>
</code>
<h2>Dynamic and <a name="resolved">resolved</a> ivy files</h2>
A module descriptor (ivy file) is needed both before and after the publication of each revision of the module. Depending on the case, a module descriptor can be either <em>dynamic</em> or <em>resolved</em>:
<h3>Dynamic descriptor for module development</h3>
During the module development time, between publications, the descriptor helps in managing all the possibly changing dependencies of the module. For that purpose, development time ivy files can declare dynamic dependencies to allow for a greater flexibility of use. <a href="ivyfile/dependency.html#revision">Dynamic revision</a> references like "latest.integration" or "1.0.+" are possible and may resolve to different artifacts at different times. Variables can be used for even more flexibility. Development time ivy files are hence called "dynamic", because they can produce different results over time. The dynamic ivy files are normally considered source files and kept with them (under SCM control).
<h3>Resolved descriptors for publishing</h3>
At each publication, another kind of a module descriptor is needed to document the dependencies of the particular published revision of the module. For that purpose, the descriptor usually needs to be fixed as its dependencies should no longer change. In doing so, the published module revision gets fixed, explicitly resolved dependencies. No variables are allowed either. Such publication-friendly, static ivy files are called "resolved", because they should always produce the same results. The resolved ivy files are comparable to published artifacts and are kept with them in a repository.
Resolved ivy files are generated from their original dynamic ivy files via the <a href="use/deliver.html">deliver</a> task.
Note that although it is technically possible to publish module revisions with dynamic ivy files, it is not a generally recommended practice.
<h1>Hierarchical Index</h1>
<pre>
ivy-module
<a href="ivyfile/info.html">info</a>
<a href="ivyfile/license.html">license</a>
<a href="ivyfile/ivyauthor.html">ivyauthor</a>
<a href="ivyfile/repository.html">repository</a>
<a href="ivyfile/description.html">description</a>
<a href="ivyfile/configurations.html">configurations</a>
<a href="ivyfile/conf.html">conf</a>
<a href="ivyfile/publications.html">publications</a>
<a href="ivyfile/artifact.html">artifact</a>
<a href="ivyfile/artifact-conf.html">conf</a>
<a href="ivyfile/dependencies.html">dependencies</a>
<a href="ivyfile/dependency.html">dependency</a>
<a href="ivyfile/dependency-conf.html">conf</a>
<a href="ivyfile/mapped.html">mapped</a>
<a href="ivyfile/dependency-artifact.html">artifact</a>
<a href="ivyfile/dependency-artifact-conf.html">conf</a>
<a href="ivyfile/dependency-artifact.html">include</a>
<a href="ivyfile/dependency-artifact-conf.html">conf</a>
<a href="ivyfile/artifact-exclude.html">exclude</a>
<a href="ivyfile/artifact-exclude-conf.html">conf</a>
<a href="ivyfile/exclude.html">exclude</a>
<a href="ivyfile/override.html">override</a>
<a href="ivyfile/conflict.html">conflict</a>
<a href="ivyfile/conflicts.html">conflicts</a>
<a href="ivyfile/manager.html">manager</a>
</pre>
<h1>ivy-module</h1>
<b>Tag:</b> ivy-module
The root tag of any ivy file (module descriptor).
<h2>Attributes</h2>
<table class="ivy-attributes">
<thead>
<tr><th class="ivy-att">Attribute</th><th class="ivy-att-desc">Description</th><th class="ivy-att-req">Required</th></tr>
</thead>
<tbody>
<tr><td>version</td><td>the version of the ivy file specification - should be '2.0' with current version of ivy</td>
<td>Yes</td></tr>
</tbody>
</table>
<h2>Child elements</h2>
<table class="ivy-children">
<thead>
<tr><th class="ivy-chld">Element</th><th class="ivy-chld-desc">Description</th><th class="ivy-chld-card">Cardinality</th></tr>
</thead>
<tbody>
<tr><td>info</td><td>contains information about the described module</td>
<td>1</td></tr>
<tr><td>configurations</td><td>container for configuration elements</td>
<td>0..1</td></tr>
<tr><td>publications</td><td>container for published artifact elements</td>
<td>0..1</td></tr>
<tr><td>dependencies</td><td>container for dependency elements</td>
<td>0..1</td></tr>
<tr><td>conflicts</td><td>section to configure the conflict managers to use</td>
<td>0..1</td></tr>
</tbody>
</table>
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,46 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
</head>
<body>
<textarea id="xooki-source">
<b>Tag:</b> conf <b>Parent:</b> <a href="../ivyfile/artifact.html">artifact</a><br/>
<br/>
Indicates a public configuration in which enclosing artifact is published.
<h1>Attributes</h1>
<table class="ivy-attributes">
<thead>
<tr><th class="ivy-att">Attribute</th><th class="ivy-att-desc">Description</th><th class="ivy-att-req">Required</th></tr>
</thead>
<tbody>
<tr><td>name</td><td>the name of the module public configuration in which this artifact is published.
'*' wildcard can be used to designate all public configurations of this module</td>
<td>Yes</td></tr>
</tbody>
</table>
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,46 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
</head>
<body>
<textarea id="xooki-source">
<b>Tag:</b> conf <b>Parent:</b> <a href="../ivyfile/artifact-exclude.html">artifact</a><br/>
<br/>
Specify a configuration in which the enclosing artifact exclusion should be included.
<h1>Attributes</h1>
<table class="ivy-attributes">
<thead>
<tr><th class="ivy-att">Attribute</th><th class="ivy-att-desc">Description</th><th class="ivy-att-req">Required</th></tr>
</thead>
<tbody>
<tr><td>name</td><td>the name of the master configuration in which the enclosing artifact should be excluded</td>
<td>Yes</td></tr>
</tbody>
</table>
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,83 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
</head>
<body>
<textarea id="xooki-source">
<b>Tag:</b> exclude <b>Parent:</b> <a href="../ivyfile/dependency.html">dependency</a>
This feature gives you more control on a dependency for which you do not control its ivy file.
It enables to restrict the artifacts required, by excluding artifacts being published by the dependency or any of its transitive dependencies,
even if configuration does not a good separation of published artifacts
The same principle concerning configuration as for include applies to this exclude feature (see the [[ivyfile/dependency-include include]] feature).
Note that exclusion is always done AFTER inclusion has been done.
<span class="since">since 1.3</span> This exclude feature can also be used not only to exclude artifacts but also to exclude whole modules. Indeed when you exclude artifacts, it doesn't avoid ivy to search for the module itself, and to resolve the dependencies of the module. But you can also exclude the whole module, which means that the module will not be downloaded at all, and so its own dependencies will not be resolved. For sure, this is usually done to exclude not a direct dependency but an indirect one. To exclude a whole module, you just have to not specify any artifact name, type and ext in your exclude rule. For instance:
<code type="xml">
<dependency name="A" rev="1.0">
<exclude module="B"/>
</dependency>
</code>
<span class="since">since 2.0</span> A [[ivyfile/exclude module wide exclude]] can also be used to exclude dependencies for the whole module (and not only in the context of one dependency as it is the case here).
<h1>Attributes</h1>
<table class="ivy-attributes">
<thead>
<tr><th class="ivy-att">Attribute</th><th class="ivy-att-desc">Description</th><th class="ivy-att-req">Required</th></tr>
</thead>
<tbody>
<tr><td>org</td><td>the organisation of the dependency module or artifact to exclude, or a regexp matching this organisation <span class="since">since 1.3</span></td>
<td>No, defaults to *</td></tr>
<tr><td>module</td><td>the name of the dependency module or the artifact to exclude, or a regexp matching this module name <span class="since">since 1.3</span></td>
<td>No, defaults to *</td></tr>
<tr><td>name</td><td>the name of an artifact of the dependency module to add to the exclude list, or an expression matching this name (see matcher attribute below)</td>
<td>No, defaults to *</td></tr>
<tr><td>type</td><td>the type of the artifact of the dependency module to add to the exclude list, or a regexp matching this name</td>
<td>No, defaults to *</td></tr>
<tr><td>ext</td><td>the extension of the artifact of the dependency module to add to the exclude list, or an expression matching this name (see matcher attribute below)</td>
<td>No, defaults to type</td></tr>
<tr><td>matcher</td><td>the <a href="../concept.html#matcher">matcher</a> to use to match the modules to excludes <span class="since">since 1.3</span></td>
<td>No, defaults to exactOrRegexp in pre 1.3 ivy files, and exact in 1.3 and superior</td></tr>
<tr><td>conf</td><td>comma separated list of the master configurations in which this artifact should be excluded.
'*' wildcard can be used to designate all configurations of this module</td>
<td>No, defaults to '*', unless nested conf are specified</td></tr>
</tbody>
</table>
<h1>Child elements</h1>
<table class="ivy-children">
<thead>
<tr><th class="ivy-chld">Element</th><th class="ivy-chld-desc">Description</th><th class="ivy-chld-card">Cardinality</th></tr>
</thead>
<tbody>
<tr><td><a href="../ivyfile/artifact-exclude-conf.html">conf</a></td><td>configuration in which the artifact should be excluded</td>
<td>0..n</td></tr>
</tbody>
</table>
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,100 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
</head>
<body>
<textarea id="xooki-source">
<b>Tag:</b> artifact <b>Parent:</b> <a href="../ivyfile/publications.html">publications</a>
Declares an artifact published by this module. This is especially useful for other modules dependending on this one. They thus get all published artifacts belonging to the configurations asked. Indeed, each published artifact declares in which public configuration it is published. Thus a module depending on this module only get artifacts marked with the asked configurations, taking into account configurations extension (see <a href="../ivyfile/conf.html">configuration declaration</a>).
The configurations in which an artifact is published can be configured in two ways:
<ul>
<li>conf attribute on artifact element</li>
<li>conf subelement</li>
</ul>
The two are equivalent, it is only a matter of preference. However, do not mix both for one artifact.
<span class="since">since 1.4</span> The artifact element has default values for all its attributes, so if you want to declare a default artifact you can just declare it like that:<code type="xml">
<artifact />
</code>If this is the only artifact declared, then it's equivalent to having no publication section at all.
<span class="since">since 1.4</span> It is possible to give a url at which artifacts can be found. This is not mandatory, and even not recommended. This is only a convenient way to deal with an existing repository with a bad layout, but should not be avoided in an enterprise repository.
<span class="since">since 1.4</span> This tag supports <a href="../concept.html#extra">extra attributes</a>.
<span class="since">since 2.4</span> This tag supports the 'packaging' attributes; complete documentation can be found in the <a href="../concept.html#packaging">concept page</a>.
<h1>Attributes</h1>
<table class="ivy-attributes">
<thead>
<tr><th class="ivy-att">Attribute</th><th class="ivy-att-desc">Description</th><th class="ivy-att-req">Required</th></tr>
</thead>
<tbody>
<tr><td>name</td><td>the name of the published artifact. This name must not include revision.</td>
<td>No, defaults to the name of the module</td></tr>
<tr><td>type</td><td>the type of the published artifact. It's usually its extension, but not necessarily. For instance, ivy files are of type 'ivy' but have 'xml' extension</td>
<td>No, defaults to jar</td></tr>
<tr><td>ext</td><td>the extension of the published artifact</td>
<td>No, defaults to type</td></tr>
<tr><td>conf</td><td>comma separated list of public configurations in which this artifact is published.
'*' wildcard can be used to designate all public configurations of this module</td>
<td>No, defaults to defaultconf attribute value on parent publications element.</td></tr>
<tr><td>url</td><td>a url at which this artifact can be found if it isn't located at the standard location in the repository <span class="since">since 1.4</span></td>
<td>No, defaults to no url</td></tr>
<tr><td>packaging</td><td>a comma separated list of <a href="../concept.html#packaging">packaging</a> types <span class="since">since 2.4</span></td>
<td>No, defaults to no packaging</td></tr>
</tbody>
</table>
<h1>Child elements</h1>
<table class="ivy-children">
<thead>
<tr><th class="ivy-chld">Element</th><th class="ivy-chld-desc">Description</th><th class="ivy-chld-card">Cardinality</th></tr>
</thead>
<tbody>
<tr><td><a href="../ivyfile/artifact-conf.html">conf</a></td><td>indicates a public configuration in which this artifact is published</td>
<td>0..n</td></tr>
</tbody>
</table>
<h1>Examples</h1>
<code type="xml">
<artifact />
</code>
Declares an artifact with the name of the module as name, type and ext jar, and published in all configurations.
<hr />
<code type="xml">
<artifact name="foo-src" type="source" ext="zip" conf="src" />
</code>
Declares an artifact foo-src, of type 'source' with extension 'zip', and published in the src configuration.
<hr />
<code type="xml">
<artifact name="foo" url="http://www.acme.com/repository/barbaz/foo-1.2-bar.jar" />
</code>
Declares an artifact foo, of type and extension 'jar' located at the url http://www.acme.com/repository/barbaz/foo-1.2-bar.jar. This url will only be used if the artifact cannot be found at its standard location.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,86 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
</head>
<body>
<textarea id="xooki-source">
<b>Tag:</b> conf <b>Parent:</b> [[ivyfile/configurations]]
Declares a configuration of this module. As described in the reference page, a configuration is a way to use or construct a module. Some modules may be used in different ways (think about hibernate which can be used inside or outside an application server), and this way may alter the artifacts you need (in the case of hibernate, jta.jar is needed only if it is used outside an application server). Moreover, a module may need some other modules and artifacts only at build time, and some others at runtime. All those differents ways to use or build a module are called in Ivy module configurations.
The conf element in the configurations section declares one configuration. This declaration gives the name of the configuration declared, its visibility and the other configurations of the module it extends.
Visibility is used to indicate whether or not a configuration can be used from other modules depending on this one. Thus a private configuration is only used for internal purpose (maybe at build time), and other modules cannot declare to depend on it.
A configuration can also extend one or several other ones of the same module. When a configuration extends another one, then all artifacts required in the extended configuration will also be required in the configuration that extends the other one. For instance, if configuration B extends configuration A, and if artifacts art1 and art2 are required in configuration A, then they will be automatically required in configuration B. On the other hand, artifacts required in configuration B are not necessarily required in configuration A.
This notion is very helpful to define configurations which are similar with some differences.
<span class="since">since 1.4</span> The extends attribute can use the following wildcards:<table class="ivy-attributes">
<tr><td>*</td><td>all other configurations</td></tr>
<tr><td>*(public)</td><td>all other public configurations</td></tr>
<tr><td>*(private)</td><td>all other private configurations</td></tr>
</table>
<br/>
<span class="since">since 1.4</span> A whole configuration can be declared as non transitive, so that all dependencies resolved in this configuration will be resolved with transitivity disabled. Note that the transitivity is disabled for all the configuration dependencies (including those obtained because this conf extends other ones), and only for this configuration (which means that a conf extending this one with transitivityy enabled will get transitive dependencies even for dependencies being part of the non transitive configuration).
This is very useful to build a compile configuration, for instance, forcing the dependency declaration on each direct dependency, with no risk to forget some because of transitivity.
<span class="since">since 1.4</span> This tag supports <a href="../concept.html#extra">extra attributes</a>.
<h1>Attributes</h1>
<table class="ivy-attributes">
<thead>
<tr><th class="ivy-att">Attribute</th><th class="ivy-att-desc">Description</th><th class="ivy-att-req">Required</th></tr>
</thead>
<tbody>
<tr><td>name</td><td>the name of the declared configuration</td>
<td>Yes</td></tr>
<tr><td>description</td><td>a description for the declared configuration</td>
<td>No</td></tr>
<tr><td>visibility</td><td>the visibility of the declared configuration.
'public' means that this configuration can be used by other modules, while 'private' means that this configuration is used only in the module itself, and is not exposed to other modules</td>
<td>No, defaults to public</td></tr>
<tr><td>extends</td><td>a comma separated list of configurations of this module that the
current configuration extends</td>
<td>No, defaults to none</td></tr>
<tr><td>transitive</td><td>a boolean to indicate if this conf is transitive or not <span class="since">since 1.4</span></td>
<td>No, defaults to true</td></tr>
<tr><td>deprecated</td><td>indicates that this conf has been deprecated by giving the date of the deprecation.
It should be given in this format: yyyyMMddHHmmss</td>
<td>No, by default the conf is not deprecated</td></tr>
</tbody>
</table>
<h1>Examples</h1>
<code type="xml">
<conf name="core" visibility="private" />
<conf name="compile" extends="core" transitive="false" visibility="private" />
<conf name="runtime" extends="compile" description="everything needed to run this module" />
</code>
Declares three configurations, core compile and runtime, with only the runtime one accessible from other modules, and with the compile one being non transitive.
Therefore the core configuration will only be composed of dependencies declared in the core configuration itself, the compile configuration will be composed of all dependencies required in either core or compile configuration, but without transivity (neither for core nor compile dependencies), and runtime will be composed of all dependencies, all transitively, including the dependencies declared only in compile.
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,114 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
</head>
<body>
<textarea id="xooki-source">
<b>Tag:</b> configurations <b>Parent:</b> <a href="../ivyfile.html">ivy-module</a>
A container for configuration elements. If this container is not present, it is assumed that the module has one public configuration called 'default'.
<span class="since">since 2.2</span> You can define the default conf on this container by specifying the defaultconf attribute. This attribute defines the conf mapping to use when no conf mapping is specified for a dependency in this ivy file.
<span class="since">since 1.3</span> You can define a default conf mapping on this container by specifying the defaultconfmapping attribute.
This attribute modifies the way ivy interprets conf mapping with no mapped conf. In this case, Ivy will look in the default conf mapping and use the conf mapping defined in the default conf mapping for the conf for which there is no mapped conf.
In order to maintain backwards compatibility with Ivy 2.1.0 and earlier, the defaultconfmapping also provides one additional function. If no defaultconf is specified (on either the configurations tag or the dependencies tag), the defaultconfmapping becomes the default configuration for dependencies in this ivy file when no configuration is specified. In other words, in addition to altering the interpretation of individual configurations with no mapping, defaultconfmapping also performs exactly like defaultconf in the absence of a definition for defaultconf.
If several defaultconfmapping or defaultconf attributes are defined (in the configurations tag, one or several in an included configurations file, and/or in the dependency tag, then it's only the last definition of each property which is taken into account. The others will have no effect at all.
See <a href="#defaultconfmapping">examples below</a> to clarify the behavior of these two attributes together.
<span class="since">since 1.4</span> You can activate a confmappingoverride mode for all configurations, in which case the extending configurations will override the mappings of the configurations they extend from.
<h1>Attributes</h1>
<table class="ivy-attributes">
<thead>
<tr><th class="ivy-att">Attribute</th><th class="ivy-att-desc">Description</th><th class="ivy-att-req">Required</th></tr>
</thead>
<tbody>
<tr><td>defaultconf</td><td>the default conf to use in this ivy file <span class="since">since 2.2</span></td><td>No, defaults to no default conf</td></tr>
<tr><td>defaultconfmapping</td><td>the default conf mapping to use in this ivy file <span class="since">since 1.3</span></td>
<td>No, defaults to no default conf mapping</td></tr>
<tr><td>confmappingoverride</td><td>true to activate configuration mapping override, false otherwise <span class="since">since 1.4</span></td>
<td>No, defaults to false</td></tr>
</tbody>
</table>
<h1>Child elements</h1>
<table class="ivy-children">
<thead>
<tr><th class="ivy-chld">Element</th><th class="ivy-chld-desc">Description</th><th class="ivy-chld-card">Cardinality</th></tr>
</thead>
<tbody>
<tr><td><a href="../ivyfile/conf.html">conf</a></td><td>declares a configuration of this module</td>
<td>0..n</td></tr>
<tr><td><a href="../ivyfile/include.html">include</a></td><td>include configurations from another file</td>
<td>0..n</td></tr>
</tbody>
</table>
<h1>Configuration mappings details</h1>
When Ivy parses your Ivy file, it will create (internally) modify the configuration mapping of your dependencies.
For instance, say you have:
<code type="xml">
<configurations defaultconfmapping="conf1->other1;conf2->other2">
<conf name="conf1" />
<conf name="conf2" extends="conf1" />
</configurations>
<dependencies>
<dependency name="other-module" conf="conf1" />
</dependencies>
</code>
When Ivy parses this file, it will construct the following dependency (in-memory only):
<code type="xml"><dependency name="other-module" conf="conf1->other1" /></code>
So, if you now resolve the conf2 configuration, you will only get the other1 dependencies of your other-module.
But when you set confmappingoverride to true, Ivy will construct the following dependency in memory:
<code type="xml"><dependency name="other-module" conf="conf1->other1;conf2->other2" /></code>
As you can see, the defaultmappings of the extending configurations are also added (although you didn't explicitly defined them)
When you now resolve the conf2 configuration, you'll get the other2 dependencies of your other-module.
<h1>Examples involving defaultconf and defaultconfmapping</h1>
The table below indicates how Ivy interprets the conf attribute according to how [[ivyfile/configurations defaultconfmapping]] and [[ivyfile/configurations defaultconf]] are set:<table class="ivy-attributes"><thead><tr><th>defaultconf</th><th>defaultconfmapping</th><th>conf</th><th>ivy interpretation</th></tr>
</thead>
<tbody>
<tr><td></td><td></td><td></td><td><code>*->*</code></td></tr>
<tr><td></td><td></td><td>runtime</td><td><code>runtime->runtime</code></td></tr>
<tr><td></td><td></td><td>test</td><td><code>test->test</code></td></tr>
<tr><td><code>runtime</code></td><td></td><td></td><td><code>runtime->runtime</code></td></tr>
<tr><td><code>runtime</code></td><td><code>runtime->*;test->default</code></td><td></td><td>runtime->*</td></tr>
<tr><td><code>runtime</code></td><td><code>runtime->*;test->default</code></td><td>test</td><td>test->default</td></tr>
<tr><td></td><td><code>runtime->*;test->default</code></td><td></td><td><code>runtime->*;test->default</code></td></tr>
<tr><td></td><td><code>runtime->*;test->default</code></td><td>runtime</td><td><code>runtime->*</code></td></tr>
<tr><td></td><td><code>runtime->*;test->default</code></td><td>test</td><td><code>test->default</code></td></tr>
</tbody>
</table>
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,66 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
</head>
<body>
<textarea id="xooki-source">
<b>Tag:</b> conflict <b>Parent:</b> <a href="../ivyfile/dependencies.html">dependencies</a><br/>
<br/>
<span class="since">(since 2.0)</span>
Specify a a conflict manager for one or several dependencies.
The way to specify a conflict manager is by giving indication to which dependencies the conflict manager applies (by giving organisation and module names or name regexp), and then specifying the conflict manager, either by giving its name or by specifying a fixed revision list, in which case a fixed conflicts manager is used.
The list of built-in conflict managers available is listed on the [[settings/conflict-managers conflict manager configuration page]].
Conflicts manager are used during the resolve operation, i.e. when ivy analyse the graph of dependencies and download corresponding ivy files and artifacts. The fact to manage conflict at resolve time enables to minimize downloads: when a module is evicted by a conflict manager, it is not downloaded.
There are two things optimized during conflict resolution: download of artifacts and download of ivy files. The first is always ensured by ivy, i.e. artifacts of a module evicted will never be downloaded. The second is not as simple to handle because to know what are the conflicts ivy needs to know the dependency graph, and to know the dependency graph, it has to download ivy files. But ivy is highly optimized on this too, and it tries to evict modules as soon as possible.
That's why the order of dependencies is important for download optimization. Indeed ivy traverses the dependency graph in the order in which dependencies are declared in the ivy files, and each time it encounters a dependency on a module, it first check if there is a conflict on this module, and if this is the case, it asks the conflict manager to resolve the conflict. Then if the module is evicted, it does not download its ivy file, and the whole branch is not traversed, which can saves a lot of time.
If no specific conflict manager is defined, a default conflict manager is used for all modules.
The current default conflict manager is the "latest-revision" conflict manager.
<h1>Attributes</h1>
<table class="ivy-attributes">
<thead>
<tr><th class="ivy-att">Attribute</th><th class="ivy-att-desc">Description</th><th class="ivy-att-req">Required</th></tr>
</thead>
<tbody>
<tr><td>org</td><td>the name, or an expression matching the name of organisation to which this conflict manager should apply (see matcher attribute below)</td>
<td>No, defaults to * (match all)</td></tr>
<tr><td>module</td><td>the name, or an expression matching the name of module to which this conflict manager should apply (see matcher attribute below)</td>
<td>No, defaults to * (match all)</td></tr>
<tr><td>manager</td><td>the name of the conflict manager to use</td>
<td rowspan="2">Exactly one of two</td></tr>
<tr><td>rev</td><td>a comma separated list of revisions this conflict manager should select</td></tr>
<tr><td>matcher</td><td>the <a href="../concept.html#matcher">matcher</a> to use to match the modules for which the conflict manager should be used</td>
<td>No, defaults to exact</td></tr>
</tbody>
</table>
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

View File

@ -1,69 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<script type="text/javascript">var xookiConfig = {level: 1};</script>
<script type="text/javascript" src="../xooki/xooki.js"></script>
</head>
<body>
<textarea id="xooki-source">
<b>Tag:</b> conflicts <b>Parent:</b> <a href="../ivyfile.html">ivy-module</a><br/><br/>
<span class="since">(since 2.0)</span> the conflicts section is deprecated. Use the [[ivyfile/conflict]] instead.
Container for conflict manager elements, used to indicate how conflicts should be resolved
for this module. <br/><br/>
The list of built-in conflict managers available is listed on the [[settings/conflict-managers conflict manager configuration page]].<br/><br/>
Conflicts manager are used during the resolve operation, i.e. when ivy analyse the graph of dependencies
and download corresponding ivy files and artifacts. The fact to manage conflict at resolve time
enables to minimize downloads: when a module is evicted by a conflict manager, it is not downloaded.<br/><br/>
There are two things optimized during conflict resolution: download of artifacts and download
of ivy files. The first is always ensured by ivy, i.e. artifacts of a module evicted will never
be downloaded. The second is not as simple to handle because to know what are the conflicts
ivy needs to know the dependency graph, and to know the dependency graph, it has to download
ivy files. But ivy is highly optimized on this too, and it tries to evict modules as soon as possible.<br/>
That's why the order of dependencies is important for download optimization. Indeed ivy
traverses the dependency graph in the order in which dependencies are declared in the ivy files,
and each time it encounters a dependency on a module, it first check if there is a conflict on this module,
and if this is the case, it asks the conflict manager to resolve the conflict. Then if the module is evicted,
it does not download its ivy file, and the whole branch is not traversed, which can saves
a lot of time.<br/><br/>
If this container is not present, a default conflict manager is used for all modules.
The current default conflict manager is the "latest-revision" conflict manager.
<h1>Child elements</h1>
<table class="ivy-children">
<thead>
<tr><th class="ivy-chld">Element</th><th class="ivy-chld-desc">Description</th><th class="ivy-chld-card">Cardinality</th></tr>
</thead>
<tbody>
<tr><td><a href="../ivyfile/manager.html">manager</a></td><td>declares a conflict manager for this module</td>
<td>1..n</td></tr>
</tbody>
</table>
</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More