You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by pa...@apache.org on 2017/04/25 23:06:01 UTC

[01/20] groovy-user-site git commit: move content to asf-site branch

Repository: groovy-user-site
Updated Branches:
  refs/heads/master [created] de805f317


http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/wiki/incubation-release-process.adoc
----------------------------------------------------------------------
diff --git a/site/src/site/wiki/incubation-release-process.adoc b/site/src/site/wiki/incubation-release-process.adoc
deleted file mode 100644
index a285e59..0000000
--- a/site/src/site/wiki/incubation-release-process.adoc
+++ /dev/null
@@ -1,263 +0,0 @@
-= Incubation release process
-C�dric Champeau <cc...@apache.org>
-v1.1, July 15, 2015: Update after concrete release
-
-:teamcity: http://ci.groovy-lang.org
-:groovy: http://groovy-lang.org
-:bintray: https://bintray.com/[Bintray]
-:gradle: http://gradle.org[Gradle]
-
-The goal of this document is to guide the release manager in order to perform a release under the Apache Incubator. This document, reflecting the status of incubation, is work in progress and will be adapted with regards to comments from the community, mentors and IPMC.
-
-== Initiating a release
-
-Releases can be initiated by a committer, as long as:
-
-* an email has been sent to the dev mailing list, where a committer volunteers for a release
-* there's a general agreement that a release can be done. There's still no explicit rule telling when a new Groovy version can be released, but the history of the project shows that releases are usually done when a significant amount of bugfixes have been done justifying a release, or that new major features are ready.
-* release manager has his personal setup ready. In particular:
-** release manager can log into his people.apache.org account using SSH
-** release manager has administration privileges on {teamcity}[the CI server]
-
-Releases are launched from the CI server. A release should never be done from a personal computer.
-
-== Preparing a release
-
-Releases are done from the CI server, but since it will involve creating tags, branches and several commits, and that the CI server doesn't have privileges to do it, we cannot work on the Apache Git origin. Instead, it is required that the release manager forks the repository and pushes changes to his personal fork. Given that `GROOVY_2_4_X` is the branch to release, `upstream` references Apache Git, and `origin` the release manager fork on GitHub, preparing for a release usually starts with:
-
-```
-git checkout GROOVY_2_4_X
-git pull --rebase upstream GROOVY_2_4_X
-git push origin GROOVY_GROOVY_2_4_X
-```
-
-If you haven't done it already, create a token on https://github.com/settings/tokens[your GitHub profile] so that the CI server can have write access on your fork. Keep the token safe!
-
-== Setup the TeamCity release configuration
-
-Go to the http://ci.groovy-lang.org/admin/editBuild.html?id=buildType:Groovy_BintrayIntegration_ReleasePlan[TeamCity release plan] configuration and open the VCS settings. If the VCS root attached to the configuration is not your GitHub fork, attach your VCS root, or create a new VCS root if you haven't done it already. The VCS root MUST have write access using the token authentication.
-
-
-== Trigger the release
-
-Go to the http://ci.groovy-lang.org/viewType.html?buildTypeId=Groovy_BintrayIntegration_ReleasePlan&tab=artifactory[Artifactory Release Management tab] and fill the form appropriately:
-
-* _groovyVersion_
-** _release version_ must be set to the version number of Groovy you are releasing. For example `2.4.4`.
-** _next integration version_ *must* be set to the subsequent version number of Groovy you are releasing and as it will be a development version, *must* end with `-SNAPSHOT`. For example `2.4.5-SNAPSHOT`.
-* _groovyBundleVersion_
-** _release version_ must be set to the OSGi bundle version number of Groovy you are releasing. For example `2.4.4`.
-** _next integration version_ *must* be set to the subsequent OSGi bundle version number of Groovy you are releasing and as it will be a development version, *must* end with `.SNAPSHOT`. For example `2.4.5.SNAPSHOT`.
-* _Checkout branch:_ must be set to the branch your are releasing. For example, if you are releasing a 2.4.x version of Groovy, `GROOVY_2_4_X`.
-* _Use release branch_ must be checked, and it will automate the creation of a release branch. Use a branch name in the form of `REL_BRANCH_2_4_3`
-* _Create VCS tag_ must be checked, and it will automate the creation of a release tag. Use a tag name in the form of `GROOVY_2_4_4`
-* _Tag comment_ must be set to something useful describing the release version
-* _Repository to stage the release to (Artifactory Pro):_ must be set to `oss-release-local`
-* _Staging comment_ should be set with something useful like `release of Groovy 2.4.4`
-
-Hit the release button.
-
-== Upload to Apache servers
-
-At this point, if the release build was successful, artifacts are staging on Bintray. You must log into Bintray and download the distribution artifacts. The URL for
-the staging distribution should be in the form of https://bintray.com/groovy/maven/groovy/2.4.4[https://bintray.com/groovy/maven/groovy/2.4.4].
-
-Downloads of the following files are only possible if you use the (groovy-operator,<api key>) credentials. If you don't have them please ask one of the PPMC members:
-
-* apache-groovy-src-_version_-incubating.zip
-* apache-groovy-binary-_version_.zip
-* apache-groovy-docs-_version_.zip
-* apache-groovy-sdk-_version_.zip
-
-as well as the corresponding _asc_ and _md5_ files. There should therefore be a total of _12_ files.
-
-NOTE: at this point it is possible that the MD5 files are missing, in which cases you would have to create them locally before uploading to Apache.
-```
-for f in `ls *.zip`; do md5sum $f > $f.md5; done
-```
-
-It is in general not accepted that the release is signed using the CI server key, so you *must* replace the signatures with your own. If you didn't yet,
-add your public key to the `KEYS` file, then sign each zip individually. This can be done, for each file, with a command line like:
-
-```
-gpg --armor --output apache-groovy-src-2.4.4-incubating.zip.asc --detach-sign apache-groovy-src-2.4.4-incubating.zip
-```
-
-Now you are ready to upload to the dev space on _dist.apache.org_. First of all, please make sure your local layout
-looks like this:
-
-```
-|-- KEYS
-|-- 2.4.4-incubating
-|     |
-|     -- distribution
-|     |  |-- apache-groovy-binary-2.4.4.zip
-|     |  |-- apache-groovy-binary-2.4.4.zip.asc
-|     |  |-- apache-groovy-binary-2.4.4.zip.md5
-|     |  |-- apache-groovy-docs-2.4.4.zip
-|     |  |-- apache-groovy-docs-2.4.4.zip.asc
-|     |  |-- apache-groovy-docs-2.4.4.zip.md5
-|     |  |-- apache-groovy-sdk-2.4.4.zip
-|     |  |-- apache-groovy-sdk-2.4.4.zip.asc
-|     |  `-- apache-groovy-sdk-2.4.4.zip.md5
-|     |-- sources
-         |-- apache-groovy-src-2.4.4-incubating.zip
-         |-- apache-groovy-src-2.4.4-incubating.zip.asc
-         `-- apache-groovy-src-2.4.4-incubating.zip.md5
-```
-
-Then you need to perform the upload:
-
-```
-svn https://dist.apache.org/repos/dist/dev/incubator/groovy groovy-release
-cd groovy-release
-cp -r ../path/to/local/groovy/<version> .
-svn add <version>
-svn ci <version>
-```
-
-== Push the tag and new HEAD
-
-```
-git fetch origin --tags
-git push upstream GROOVY_2_4_4
-git push upstream GROOVY_2_4_X
-```
-
-== Send a [VOTE] thread
-
-You can use the following template to send a VOTE thread on the dev@ list:
-
-```
-Dear community,
-
-I am happy to start the VOTE thread for a Groovy xxx-incubating!
-This release includes bugfixes for ...
-
-The changelog for this release can be found here: https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123&version=12331941
-
-Tag: https://git1-us-west.apache.org/repos/asf?p=groovy.git;a=tag;h=19f70958f39f0cc5c6b4d3e9471fd297400647d2
-
-The artifacts to be voted on are located here: https://dist.apache.org/repos/dist/dev/incubator/groovy/
-
-Release artifacts are signed with the following key: https://dist.apache.org/repos/dist/dev/incubator/groovy/KEYS
-
-Please vote on releasing this package as Apache Groovy 2.4.4-incubating.
-
-The vote is open for the next 72 hours and passes if a majority of at least three +1 PPMC votes are cast.
-
-[ ] +1 Release Apache Groovy 2.4.4-incubating
-[ ]  0 I don't have a strong opinion about this, but I assume it's ok
-[ ] -1 Do not release Apache Groovy 2.4.4-incubating because...
-
-Here is my vote:
-
-+1 (binding)
-```
-
-After 72h, send another email summarizing the result of the vote. If it passed, you *must* send another vote to
-`general@incubator.apache.org` to ask the IPMC to vote:
-
-```
-Hi all!
-
-The Apache Groovy PPMC has successfully voted the release of Apache Groovy 2.4.4-incubating [1], with 6 "+1" binding votes, one "+1" non binding, no "0" votes and one "-1" vote (see the explanation below). We are now asking the IPMC to vote it too. Since it is our first release under the Apache Software Foundation umbrella, let me give a few more details:
-
-<decription of the release>
-
-Vote on dev list: http://mail-archives.apache.org/mod_mbox/groovy-dev/201507.mbox/%3CCADQzvm%3DzDNCxpOua3LQ1ZNo62Aq40QZM7SJwgER5MfkArWrTeA%40mail.gmail.com%3E
-Result of vote on dev list: http://mail-archives.apache.org/mod_mbox/groovy-dev/201507.mbox/%3CCADQzvmn1yEMMz_ZaCL5QqqUtQJdgd0NNcy8v7BVY8Lt4Uog0Zg%40mail.gmail.com%3E
-Relicensing of the documentation tracking: https://issues.apache.org/jira/browse/GROOVY-7470
-Vote for relicensing the docs: http://mail-archives.apache.org/mod_mbox/groovy-dev/201506.mbox/%3CCADQzvm%3DMfajQuMxoZJmpLe%2B4W22a_MDY_dC4W%2BNMWiakEEOyNg%40mail.gmail.com%3E
-Result of vote for relicensing the docs: http://mail-archives.apache.org/mod_mbox/groovy-dev/201506.mbox/%3CCADQzvmkQyOEk3ofOrnTHfnvTKO5xECY87hKAGf5pD%2BuePyA8UA%40mail.gmail.com%3E
-
-The changelog for this release can be found here: https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123&version=12331941
-
-Tag for the release: https://git1-us-west.apache.org/repos/asf?p=groovy.git;a=commit;h=716b0b1bd56eeab04e4441eecc91c2cd8bfda8b6
-<https://git1-us-west.apache.org/repos/asf?p=groovy.git;a=tag;h=19f70958f39f0cc5c6b4d3e9471fd297400647d2>
-
-The artifacts to be voted on are located here: https://dist.apache.org/repos/dist/dev/incubator/groovy/
-
-Release artifacts are signed with the following keys: https://dist.apache.org/repos/dist/dev/incubator/groovy/KEYS
-
-Vote is open for at least 72 hours. Artifacts will be moved to dist as soon as the vote passes.
-
-[ ] +1, release Apache Groovy 2.4.4-incubating
-[ ] 0, I don't care
-[ ] -1, because...
-```
-
-If the vote passes:
-
-== Publish the release
-
-* Open `https://bintray.com/groovy/maven/groovy/2.4.4` and click `Publish` on the notice message (something like `ou have 532 unpublished item(s) for this version (expiring in 21 hours)`)
-* Perform Maven Central synchronization: on https://bintray.com/groovy/maven/groovy/2.4.4/view?sort=&order=#central[this page (update the link to the appropriate version)], click 'sync'. This step may take several minutes to complete.
-* Update the documentation symlinks on the website. You need credentials on the server:
-```
-cd /var/www/docs/docs
-rm -f latest
-ln -s groovy-2.4.4 latest
-```
-* Publish to GVM. Open http://ci.groovy-lang.org/viewType.html?buildTypeId=Groovy_BintrayIntegration_GvmPublish[the publish configuration], click on the 3 dots near `run` then on the _parameters_ tab, fill
-in the `groovyVersion` parameter. Click on `run build`.
-* if the release is NOT a beta or a release candidate, make it the default version on GVM. Open http://ci.groovy-lang.org/viewType.html?buildTypeId=Groovy_BintrayIntegration_GvmMakeDefault[the GVM make default configuration], click on the 3 dots near `run` then on the _parameters_ tab, fill
-in the `groovyVersion` parameter. Click on `run build`.
-
-== Update the web site
-
-If you don't have it locally, checkout `https://github.com/groovy/groovy-website`.
-
-* Update the https://github.com/melix/groovy-website/blob/master/site/src/site/sitemap.groovy[site map] to include the newly released version.
-* Push the changes
-* Wait for the http://ci.groovy-lang.org/viewType.html?buildTypeId=Groovy_Website[CI website deployment build] to complete.
-
-== Send an announcement email
-
-You should wait 24h before doing this (in order for `dist.apache.org` to be properly mirrored).
-Send an email to `dev@`, `user@` and `announce@apache.org`.
-
-You can use this template. Please make sure that the email at least contains the DISCLAIMER:
-
-```
-Dear community,
-
-We are pleased to announce the first release of Apache Groovy done under the Apache Software Foundation
-Incubator sponsorship! Apache Groovy is a multi-facet programming language for the JVM. Details can be
-found at http://groovy-lang.org
-
-This release is a maintenance release of the 2.4.x branch, but contains critical fixes, in particular a fix
-for a 0-day vulnerability. Details can be found on http://groovy-lang.org/security.html
-
-It is strongly encouraged that all users upgrade to this version. There is no plan to provide patches for
-older versions of Groovy which were not developped under the Foundation umbrella.
-
-Changelog for this version can be found at: http://groovy-lang.org/changelogs/changelog-2.4.4.html
-Sources can be downloaded from: http://www.groovy-lang.org/download.html
-Convenience binaries, SDK and documentation can be found at: http://www.groovy-lang.org/download.html
-
-We would like to thank all people who contributed to this release. In particular, thanks to our mentors who are
-having hard days at explaining the Apache Way :) Despite comments we received about this release, we felt that
-the security issue is so important that we deserved this to our community.
-
-Best regards,
-
-----
-DISCLAIMER
-
-Apache Groovy is an effort undergoing incubation at the Apache
-Software Foundation (ASF), sponsored by the Apache Incubator PMC.
-
-Incubation is required of all newly accepted projects until a further
-review indicates that the infrastructure, communications, and decision
-making process have stabilized in a manner consistent with other
-successful ASF projects.
-
-While incubation status is not necessarily a reflection of the
-completeness or stability of the code, it does indicate that the
-project has yet to be fully endorsed by the ASF.
-
-```
-
-* Broadcast the release on GVM. Open http://ci.groovy-lang.org/viewType.html?buildTypeId=Groovy_BintrayIntegration_GvmBroadcast[the GVM broadcast configuration], click on the 3 dots near `run` then on the _parameters_ tab, fill
-in the `groovyVersion` parameter. Click on `run build`.


[14/20] groovy-user-site git commit: move content to asf-site branch

Posted by pa...@apache.org.
http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/fonts/fontawesome-webfont.woff
----------------------------------------------------------------------
diff --git a/site/src/site/assets/fonts/fontawesome-webfont.woff b/site/src/site/assets/fonts/fontawesome-webfont.woff
deleted file mode 100644
index 9eaecb3..0000000
Binary files a/site/src/site/assets/fonts/fontawesome-webfont.woff and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/asf_logo.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/asf_logo.png b/site/src/site/assets/img/asf_logo.png
deleted file mode 100644
index b20bb7f..0000000
Binary files a/site/src/site/assets/img/asf_logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/books/Kousen-MJG.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/books/Kousen-MJG.png b/site/src/site/assets/img/books/Kousen-MJG.png
deleted file mode 100644
index 1ec8359..0000000
Binary files a/site/src/site/assets/img/books/Kousen-MJG.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/books/g2cook.jpg
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/books/g2cook.jpg b/site/src/site/assets/img/books/g2cook.jpg
deleted file mode 100644
index 53dcbbd..0000000
Binary files a/site/src/site/assets/img/books/g2cook.jpg and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/books/gdsl.jpg
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/books/gdsl.jpg b/site/src/site/assets/img/books/gdsl.jpg
deleted file mode 100644
index 7b486c6..0000000
Binary files a/site/src/site/assets/img/books/gdsl.jpg and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/books/ggood.jpg
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/books/ggood.jpg b/site/src/site/assets/img/books/ggood.jpg
deleted file mode 100644
index c638c61..0000000
Binary files a/site/src/site/assets/img/books/ggood.jpg and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/books/pratical-grails-3-book-cover.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/books/pratical-grails-3-book-cover.png b/site/src/site/assets/img/books/pratical-grails-3-book-cover.png
deleted file mode 100644
index 46825bf..0000000
Binary files a/site/src/site/assets/img/books/pratical-grails-3-book-cover.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/books/regina.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/books/regina.png b/site/src/site/assets/img/books/regina.png
deleted file mode 100644
index 38fba5a..0000000
Binary files a/site/src/site/assets/img/books/regina.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/books/vslg2.jpg
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/books/vslg2.jpg b/site/src/site/assets/img/books/vslg2.jpg
deleted file mode 100644
index 399f787..0000000
Binary files a/site/src/site/assets/img/books/vslg2.jpg and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/books/weissmann_groovy_grails.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/books/weissmann_groovy_grails.png b/site/src/site/assets/img/books/weissmann_groovy_grails.png
deleted file mode 100644
index 4fd63e2..0000000
Binary files a/site/src/site/assets/img/books/weissmann_groovy_grails.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/confs/g3summit2016.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/confs/g3summit2016.png b/site/src/site/assets/img/confs/g3summit2016.png
deleted file mode 100644
index b043aa0..0000000
Binary files a/site/src/site/assets/img/confs/g3summit2016.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/confs/gr8confeu.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/confs/gr8confeu.png b/site/src/site/assets/img/confs/gr8confeu.png
deleted file mode 100644
index 0456dd1..0000000
Binary files a/site/src/site/assets/img/confs/gr8confeu.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/confs/gr8confin.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/confs/gr8confin.png b/site/src/site/assets/img/confs/gr8confin.png
deleted file mode 100644
index 0c4573d..0000000
Binary files a/site/src/site/assets/img/confs/gr8confin.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/confs/gr8confus.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/confs/gr8confus.png b/site/src/site/assets/img/confs/gr8confus.png
deleted file mode 100644
index 03a4e7c..0000000
Binary files a/site/src/site/assets/img/confs/gr8confus.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/confs/greach2017.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/confs/greach2017.png b/site/src/site/assets/img/confs/greach2017.png
deleted file mode 100644
index 9f1f305..0000000
Binary files a/site/src/site/assets/img/confs/greach2017.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/courses/groovy-course-cover.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/courses/groovy-course-cover.png b/site/src/site/assets/img/courses/groovy-course-cover.png
deleted file mode 100644
index dec9ec4..0000000
Binary files a/site/src/site/assets/img/courses/groovy-course-cover.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/ecosystem/geb.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/ecosystem/geb.png b/site/src/site/assets/img/ecosystem/geb.png
deleted file mode 100644
index b451961..0000000
Binary files a/site/src/site/assets/img/ecosystem/geb.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/ecosystem/gpars.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/ecosystem/gpars.png b/site/src/site/assets/img/ecosystem/gpars.png
deleted file mode 100644
index 9079b7d..0000000
Binary files a/site/src/site/assets/img/ecosystem/gpars.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/ecosystem/gradle.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/ecosystem/gradle.png b/site/src/site/assets/img/ecosystem/gradle.png
deleted file mode 100644
index d6faf67..0000000
Binary files a/site/src/site/assets/img/ecosystem/gradle.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/ecosystem/grails.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/ecosystem/grails.png b/site/src/site/assets/img/ecosystem/grails.png
deleted file mode 100644
index 9e46aa8..0000000
Binary files a/site/src/site/assets/img/ecosystem/grails.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/ecosystem/griffon.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/ecosystem/griffon.png b/site/src/site/assets/img/ecosystem/griffon.png
deleted file mode 100644
index 407b401..0000000
Binary files a/site/src/site/assets/img/ecosystem/griffon.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/ecosystem/ratpack.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/ecosystem/ratpack.png b/site/src/site/assets/img/ecosystem/ratpack.png
deleted file mode 100644
index cbab1d8..0000000
Binary files a/site/src/site/assets/img/ecosystem/ratpack.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/ecosystem/sdkman.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/ecosystem/sdkman.png b/site/src/site/assets/img/ecosystem/sdkman.png
deleted file mode 100644
index 0b82592..0000000
Binary files a/site/src/site/assets/img/ecosystem/sdkman.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/favicon.ico
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/favicon.ico b/site/src/site/assets/img/favicon.ico
deleted file mode 100644
index 2d6c529..0000000
Binary files a/site/src/site/assets/img/favicon.ico and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/groovy-logo-black.svg
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/groovy-logo-black.svg b/site/src/site/assets/img/groovy-logo-black.svg
deleted file mode 100644
index 410b3d2..0000000
--- a/site/src/site/assets/img/groovy-logo-black.svg
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   version="1.1"
-   width="1000"
-   height="499"
-   id="svg3944">
-  <defs
-     id="defs3946" />
-  <metadata
-     id="metadata3949">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     transform="translate(-35.396599,164.8432)"
-     id="layer1">
-    <path
-       d="m 535.2694,-164.8432 c 0,0 -70.08429,116.134127 -103.38337,172.6061967 -6.4281,2.4088603 -7.14247,1.73215 -14.19486,8.6380303 -17.0619,-19.5616103 -37.36994,-1.7231 -42.83897,9.2036 C 372.47507,1.9707367 368.54798,1.9596267 363.2521,-3.3430333 366.31133,-24.016473 376.40683,-57.706575 353.17832,-81.856483 308.2561,-112.15896 256.27913,-38.080203 227.30704,0.71889667 L 211.68761,26.632967 c -64.41236,-1.31627 -115.141479,0.36378 -176.291011,-0.87409 74.565591,27.94511 77.655211,28.59645 167.743571,62.77992 0,2.7554 6.73603,15.496863 14.14398,22.983313 6.15699,6.22224 12.87199,9.7366 16.22997,11.82587 -4.40832,2.25628 -13.36407,5.77744 -16.02646,10.74611 -12.18833,22.74645 5.76755,27.99967 17.40015,46.12087 13.11826,23.69061 15.94177,39.36548 46.90919,26.06832 10.6135,-4.55735 23.41683,-6.19404 31.59501,-8.74085 -28.85417,45.54568 -36.27108,57.99099 -86.79725,136.40879 l 0.50877,0.15416 c 202.09001,-78.8838 207.26341,-80.9127 307.19919,-120.41816 143.6739,55.7507 151.917,60.
 3364 309.69219,120.46958 -22.03838,-34.3997 -37.09678,-55.9613 -53.11625,-83.14098 6.30949,-0.50992 20.1357,-1.90003 32.41063,-9.70169 8.85894,-5.63055 19.26354,-11.9767 28.64254,-23.9249 18.45056,-23.50474 22.97538,-53.18375 16.22996,-90.23649 -3.20752,-17.61905 -9.77721,-34.746133 -8.85271,-35.374763 85.87954,-32.43645 95.9848,-35.95678 176.08752,-66.17343 -96.25527,1.41063 -100.90223,0.46404 -191.29993,0.66842 C 842.62498,9.0340067 833.95777,0.16857667 807.36301,1.0273167 797.41843,2.6563967 791.16264,6.0539367 786.50318,19.588787 771.63716,-7.8190533 751.0984,0.24436667 742.39227,13.727267 730.90958,1.9977867 704.15574,-1.9500033 690.70059,6.6317467 680.78438,1.9906567 669.25949,1.9720567 659.15645,14.035767 651.83897,7.9290767 649.58932,6.2059167 633.565,-0.20668333 596.66041,-62.601163 565.9659,-112.36779 535.2694,-164.8432 z m 0.50877,33.42092 c 14.574,22.26603 64.64344,108.722277 77.02875,128.0792467 C 598.76353,-2.396198 584.96251,5.0622677 574.54693,20.051617 565.52614,10.
 749593 554.98061,1.5250074 536.3486,0.78926085 513.69764,-3.1042287 501.61959,6.945404 486.37598,24.422047 481.84773,9.2462513 464.29824,5.6575459 449.0318,12.801847 462.6397,-8.8452233 527.00887,-117.28988 535.77817,-131.42228 z m -190.02798,96.406497 c -2.09294,59.75931 -44.49802,112.97903 -74.89189,93.52717 -22.96574,-18.69278 6.20436,-65.9927403 24.5739,-82.67822 -1.36272,12.75271 10.23546,20.7177297 0.96668,32.0326697 -18.56681,22.6655903 -11.26099,39.0155303 -3.25617,41.5447703 21.36735,6.75135 41.82142,-51.1318303 41.82142,-91.72757 0,-26.03238 -15.23389,-25.55012 -45.23022,5.65584 -40.95422,42.6056097 -63.06382,83.85864 -48.33376,112.14006 8.20761,15.75838 20.20513,27.093703 39.93895,24.731483 38.53801,-4.613169 61.79707,-52.272283 64.30933,-82.832483 6.14604,-0.15383 4.5204,0.37009 6.1562,-0.87408 0,5.39149 7.39663,31.45961 13.22818,48.58888 7.63176,29.24323 40.17312,87.916423 -57.03383,110.751793 -18.38731,4.63331 -25.61398,6.17496 -43.75477,13.31696 -8.89367,-18.4206 -10.
 9835,-24.36579 -29.05113,-42.16178 24.51346,-8.55813 24.68821,-7.71321 40.4986,-13.21412 61.13387,-21.27027 79.51442,-39.451033 77.38489,-65.402183 0,0 0.74581,-13.37447 -7.7334,-24.52581 -4.2797,14.93065 -12.21064,26.89099 -12.21064,26.89099 -18.17891,28.333144 -53.97424,45.875653 -85.7797,34.706343 -17.39351,-6.108185 -24.87916,-19.424773 -24.87916,-42.316033 0,-29.26533 66.72325,-113.959533 99.46578,-128.33633 23.13028,-6.88233 24.12398,12.203706 23.81074,30.18165 z m 270.92343,54.19331 c 10.82124,0.20172 22.63996,5.52156 30.62834,14.13962 24.75016,26.7011 22.05022,59.04154 6.8176,79.387553 -18.12144,24.20455 -63.83983,13.4674 -74.63749,-20.361053 -5.0168,-15.71732 3.94377,-54.65478 19.7914,-67.66452 4.78429,-3.92754 10.90741,-5.62263 17.40015,-5.5016 z m -88.01832,2.72509 c 1.5996,0.0385 3.23362,0.2796 4.88426,0.71984 20.93957,1.26543 25.38896,13.00621 29.20376,23.34323 9.61324,26.04922 7.2074,50.457293 -12.56677,70.441023 -29.61924,29.93307 -64.13302,16.70679 -64.00408,-23.6517
 33 0.61145,-28.7005 18.48897,-71.43043 42.48283,-70.85236 z m 77.84279,1.59392 c -15.96846,11.9459 -18.03722,42.61099 -3.35792,53.98765 5.77091,5.38776 8.97792,9.14035 25.54057,10.64328 11.37364,1.03207 29.32526,-10.50351 30.22132,-21.95498 0.40525,-5.17888 -0.52694,-13.85674 -13.02467,-27.91932 -10.46813,-11.77891 -24.09992,-14.518 -27.52481,-12.49429 -11.02187,6.51268 0.88457,11.69202 5.18952,15.99063 6.76723,6.75727 8.38973,9.71258 5.2404,11.72303 -6.2636,3.99857 -13.22593,3.42734 -15.51768,2.36517 -4.35707,-2.01937 -18.97459,-10.24517 -6.76673,-32.34117 z m 156.60138,0.10284 c 6.95636,10.838 8.96444,13.18184 16.73874,40.20794 10.03979,34.901745 22.78604,48.466303 34.03714,42.110363 30.83727,-17.420523 6.12661,-61.530613 -4.73162,-82.266883 6.95809,-0.0984 5.58036,0.28892 11.90537,0.20566 5.00874,19.62551 3.608,16.13524 16.99313,75.53129 16.0161,71.070523 18.41027,89.993063 -22.03002,121.909243 -18.58369,14.66657 -45.95753,15.43934 -69.44798,14.13962 l -26.50725,-3.90768 c 18.265
 76,-11.98044 22.70201,-23.20105 22.58968,-46.5322 53.24702,22.32422 81.62079,5.50673 92.95344,-21.90356 5.45697,-13.19877 3.56421,-30.61507 -1.67896,-61.28883 0.32863,24.9949 -0.21214,29.60153 -3.51056,41.95611 -6.61695,24.78449 -22.80827,31.70625 -33.83363,14.13962 -4.24259,-6.75969 -14.38417,-29.20948 -17.5019,-53.37064 -3.11772,-24.161213 -5.50729,-58.153723 -20.85984,-72.343453 1.67908,-3.34113 3.41642,-7.10317 4.88426,-8.5866 z m -51.94607,0.41133 c 10.74736,2.85598 23.82289,8.52721 30.85661,21.68335 9.71551,18.17221 16.14983,27.84463 15.62033,60.294373 -0.56527,34.64255 -14.1841,43.93582 -23.17498,45.22746 -11.61336,1.66837 -31.7463,1.42928 -43.7039,-66.584763 -3.96118,-22.53091 -11.19399,-43.9709 -18.77385,-51.00548 3.76415,-4.54387 4.06137,-3.975 6.86849,-8.48377 3.81797,4.17478 7.11476,11.23213 12.41414,32.39259 8.43235,33.67037 16.13233,40.620527 31.03536,42.521693 23.28236,2.97012 32.43743,-32.526513 13.27906,-57.998153 -4.20516,-5.59089 -15.20079,-12.78577 -20.98027,-9.8
 1447 0.33439,9.81798 4.72696,6.7343 4.77597,13.23301 -1.09709,7.72607 -2.21513,9.10835 -4.70641,13.34334 -5.91639,-2.32514 -8.78887,-3.24436 -13.95353,-12.13437 -6.52787,-12.90125 -2.28586,-25.01138 10.44298,-22.67481 z m -191.55432,3.18784 c -10.95551,7.71708 -24.72389,33.31716 -12.66853,56.24999 5.95324,8.52117 12.3732,15.500135 26.60901,12.494284 10.17214,-2.147824 27.94621,-14.160994 30.42483,-31.210004 2.12452,-14.61354 -19.00784,-42.82644 -30.78098,-36.24885 -13.62907,7.6145 -5.31656,13.07763 3.10354,21.28656 7.69871,7.50564 2.17071,12.03053 -3.20529,14.24246 -10.76144,4.42772 -16.79068,0.1178 -19.48614,-8.43236 -2.69544,-8.55018 -0.36879,-15.83297 6.00356,-28.38208 z m -119.46069,2.67368 c 2.34016,7.16684 4.21366,16.71192 9.10709,25.96548 1.15166,0.95711 5.47874,0.0505 11.19308,-6.52993 3.59895,-4.14446 7.68806,-9.91059 14.85627,-19.2813 4.36399,3.9724 4.74431,6.92722 5.95269,9.10077 3.01002,5.41428 9.35938,4.98656 11.34571,4.42185 7.01055,-6.93941 8.12367,-11.44112 12.77029,
 -12.03153 0.43162,8.97415 0.86624,14.56275 -10.73518,28.1764 -6.79577,7.97448 -17.21806,8.164648 -20.85983,7.14694 -5.01901,-1.402585 -8.27218,-4.496024 -16.18705,-8.529754 -10.7567,1.649919 -7.90622,13.117879 -5.99561,22.772214 5.03698,25.451933 20.88046,35.598553 34.69855,28.124993 4.8078,-2.60033 3.70798,-2.58471 12.9738,-6.37569 -1.55158,16.15299 -2.48089,19.28201 0.40702,37.3286 -22.53954,12.54495 -40.88385,10.37629 -45.89163,-21.08089 -3.80053,-26.360873 -10.88273,-58.352903 -17.29839,-64.836593 -6.05804,-6.12194 -8.54745,-8.12385 -8.54745,-8.12385 0,0 7.58937,-10.07268 12.21064,-16.24771 z m -296.41313,3.39351 c 31.37174,0.39121 66.74576,0.39802 104.40091,0.71983 -5.40726,13.23712 -7.26249,22.50641 -8.03866,35.58043 -17.57855,-6.80531 -78.17637,-28.49901 -96.36225,-36.30026 z m 863.44442,0.41133 c -41.53727,14.97073 -71.44761,26.55704 -111.52379,41.85328 -4.38379,-18.77362 -5.18602,-24.50354 -9.10709,-41.44194 66.69298,-0.19512 67.81873,-0.093 120.63088,-0.41134 z M 676.45485
 ,118.72046 c 4.36141,17.91207 10.51208,26.69056 10.51208,26.69056 8.41675,14.47977 18.93827,22.69893 35.01359,26.84064 3.53863,5.67134 4.78595,6.7896 6.18626,9.83973 1.53184,19.05472 0.42761,21.42153 -14.37313,32.26433 -8.68812,8.50703 -9.05854,20.69052 -0.0964,32.03267 9.63539,9.13361 19.76096,12.42877 57.28822,2.67367 7.25421,12.46712 17.39483,27.20062 32.3073,50.69698 -50.22842,-18.92757 -119.49557,-45.95037 -267.92165,-103.7077 0,0 -173.68384,67.43138 -266.80234,103.75912 38.94593,-61.43401 42.15913,-66.60904 69.855,-109.62064 9.37539,-3.65164 6.21591,-2.15318 14.551,-6.4271 19.12967,-10.18566 34.47824,-25.37398 42.83898,-47.71479 15.32853,34.56596 32.45023,38.53814 68.17603,27.30232 7.37119,-3.39413 15.8369,-8.34706 17.65454,-21.59506 19.14227,17.23743 59.66642,20.4245 89.23938,-15.88779 25.49868,29.83981 83.39187,32.67982 105.57111,-7.14694 z m 89.84991,35.99177 c 0,0 1.70301,5.38083 2.69651,7.0441 -4.23207,0.14101 -8.90358,0.0513 -8.90358,0.0513 2.11939,-1.74264 3.82601,-3.86
 946 6.20707,-7.09552 z"
-       id="path4019"
-       style="fill:#000000;fill-opacity:1" />
-  </g>
-</svg>


[08/20] groovy-user-site git commit: move content to asf-site branch

Posted by pa...@apache.org.
http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/js/vendor/modernizr-2.6.2.min.js
----------------------------------------------------------------------
diff --git a/site/src/site/assets/js/vendor/modernizr-2.6.2.min.js b/site/src/site/assets/js/vendor/modernizr-2.6.2.min.js
deleted file mode 100644
index f65d479..0000000
--- a/site/src/site/assets/js/vendor/modernizr-2.6.2.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/* Modernizr 2.6.2 (Custom Build) | MIT & BSD
- * Build: http://modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-mq-cssclasses-addtest-prefixed-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load
- */
-;window.Modernizr=function(a,b,c){function D(a){j.cssText=a}function E(a,b){return D(n.join(a+";")+(b||""))}function F(a,b){return typeof a===b}function G(a,b){return!!~(""+a).indexOf(b)}function H(a,b){for(var d in a){var e=a[d];if(!G(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function I(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:F(f,"function")?f.bind(d||b):f}return!1}function J(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+p.join(d+" ")+d).split(" ");return F(b,"string")||F(b,"undefined")?H(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),I(e,b,c))}function K(){e.input=function(c){for(var d=0,e=c.length;d<e;d++)u[c[d]]=c[d]in k;return u.list&&(u.list=!!b.createElement("datalist")&&!!a.HTMLDataListElement),u}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)k.setAttribute("type",f=a[d]),e=k.type!=="text",e&&(k.value=l,k.style.cssText="position:
 absolute;visibility:hidden;",/^range$/.test(f)&&k.style.WebkitAppearance!==c?(g.appendChild(k),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(k,null).WebkitAppearance!=="textfield"&&k.offsetHeight!==0,g.removeChild(k)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=k.checkValidity&&k.checkValidity()===!1:e=k.value!=l)),t[a[d]]=!!e;return t}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var d="2.6.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k=b.createElement("input"),l=":)",m={}.toString,n=" -webkit- -moz- -o- -ms- ".split(" "),o="Webkit Moz O ms",p=o.split(" "),q=o.toLowerCase().split(" "),r={svg:"http://www.w3.org/2000/svg"},s={},t={},u={},v=[],w=v.slice,x,y=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["&#173;",'<style id="s',h,'">',a,
 "</style>"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},z=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function(a,b){return B.
 call(a,b)}:C=function(a,b){return b in a&&F(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e}),s.flexbox=function(){return J("flexWrap")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!F(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){return!!a.WebGLRenderingContext},s.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:y(["@media (",n.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},s.geolocation=funct
 ion(){return"geolocation"in navigator},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!J("indexedDB",a)},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){return"WebSocket"in a||"MozWebSocket"in a},s.rgba=function(){return D("background-color:rgba(150,255,150,.5)"),G(j.backgroundColor,"rgba")},s.hsla=function(){return D("background-color:hsla(120,40%,100%,.5)"),G(j.backgroundColor,"rgba")||G(j.backgroundColor,"hsla")},s.multiplebgs=function(){return D("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return J("backgroundSize")},s.borderimage=function(){return J("borderImage")},s.borderradius=fun
 ction(){return J("borderRadius")},s.boxshadow=function(){return J("boxShadow")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return E("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return J("animationName")},s.csscolumns=function(){return J("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return D((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),G(j.backgroundImage,"gradient")},s.cssreflections=function(){return J("boxReflect")},s.csstransforms=function(){return!!J("transform")},s.csstransforms3d=function(){var a=!!J("perspective");return a&&"webkitPerspective"in g.style&&y("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},s.csstransitions=function(){return J("
 transition")},s.fontface=function(){var a;return y('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&g.indexOf(d.split(" ")[0])===0}),a},s.generatedcontent=function(){var a;return y(["#",h,"{font:0/0 a}#",h,':after{content:"',l,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3}),a},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayTy
 pe("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var L 
 in s)C(s,L)&&(x=L.toLowerCase(),e[x]=s[L](),v.push((e[x]?"":"no-")+x));return e.input||K(),e.addTest=function(a,b){if(typeof a=="object")for(var d in a)C(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},D(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var 
 d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function p(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return r.shivMethods?n(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+l().join().replace(/\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(r,b.frag)}function q(a){a||(a=b);var c=m(a);return r.shivCSS&&!f&&!c.hasCSS&&(c.hasCSS=!!k(a,"article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}")),j||p(a,c),a}var c=a.html5||{},d=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,e=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,f,g="_html5shiv",h=0,i={},j;(function(){try{var a=b.create
 Element("a");a.innerHTML="<xyz></xyz>",f="hidden"in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a])},e.testAllProps=J,e.testStyles=y,e.prefixed=function(a,b,c){return b?J(a,b,c):J(a,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document),function(a,b,c){functio
 n d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.load
 er={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop().split("?").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&"css"==i.url.split(".").pop().split("?").shift()?"c":c,i.noexec,
 i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState="loading",b.
 addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/js/vendor/sidebarEffects.js
----------------------------------------------------------------------
diff --git a/site/src/site/assets/js/vendor/sidebarEffects.js b/site/src/site/assets/js/vendor/sidebarEffects.js
deleted file mode 100644
index 5906710..0000000
--- a/site/src/site/assets/js/vendor/sidebarEffects.js
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * sidebarEffects.js v1.0.0
- * http://www.codrops.com
- *
- * Licensed under the MIT license.
- * http://www.opensource.org/licenses/mit-license.php
- * 
- * Copyright 2013, Codrops
- * http://www.codrops.com
- */
- var SidebarMenuEffects = (function() {
-
- 	function hasParentClass( e, classname ) {
-		if(e === document) return false;
-		if( classie.has( e, classname ) ) {
-			return true;
-		}
-		return e.parentNode && hasParentClass( e.parentNode, classname );
-	}
-
-	// http://coveroverflow.com/a/11381730/989439
-	function mobilecheck() {
-		var check = false;
-		(function(a){if(/(android|ipad|playbook|silk|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kdd
 i|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4)))check = tru
 e})(navigator.userAgent||navigator.vendor||window.opera);
-		return check;
-	}
-
-	function init() {
-
-		var container = document.getElementById( 'st-container' ),
-			buttons = Array.prototype.slice.call( document.querySelectorAll( '.st-trigger' ) ),
-			// event type (if mobile use touch events)
-			eventtype = mobilecheck() ? 'touchstart' : 'click',
-			resetMenu = function() {
-				classie.remove( container, 'st-menu-open' );
-                $("html").removeClass('noScroll');
-			},
-			bodyClickFn = function(evt) {
-				if( !hasParentClass( evt.target, 'st-menu' ) ) {
-					resetMenu();
-					document.removeEventListener( eventtype, bodyClickFn );
-				}
-			};
-
-		buttons.forEach( function( el, i ) {
-			var effect = el.getAttribute( 'data-effect' );
-
-			el.addEventListener( eventtype, function( ev ) {
-				ev.stopPropagation();
-				ev.preventDefault();
-				container.className = 'st-container'; // clear
-				classie.add( container, effect );
-				setTimeout( function() {
-					classie.add( container, 'st-menu-open' );
-					$("html").addClass('noScroll');
-				}, 25 );
-				document.addEventListener( eventtype, bodyClickFn );
-			});
-		} );
-
-	}
-
-	init();
-
-})();
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/html/index.html
----------------------------------------------------------------------
diff --git a/site/src/site/html/index.html b/site/src/site/html/index.html
deleted file mode 100644
index 970d45e..0000000
--- a/site/src/site/html/index.html
+++ /dev/null
@@ -1,68 +0,0 @@
-    <section class="row colset-2-its">
-        <h1>A multi-faceted language for the Java platform</h1>
-
-        <p>
-            <a href='http://www.apache.org/'>Apache</a> Groovy is a <strong>powerful</strong>, <strong>optionally typed</strong> and <strong>dynamic</strong>
-            language, with <strong>static-typing and static compilation</strong> capabilities, for the Java platform
-            aimed at improving developer productivity thanks to a concise, <strong>familiar and easy to learn
-            syntax</strong>. It integrates smoothly with any Java program, and immediately delivers to your application
-            powerful features, including scripting capabilities, <strong>Domain-Specific Language</strong> authoring,
-            runtime and compile-time <strong>meta-programming</strong> and <strong>functional</strong> programming.
-        </p>
-
-        <div class="col1">
-            <article>
-                <div class="icon icon-1"></div>
-                <h1>Flat learning curve</h1>
-
-                <p>Concise, readable and expressive syntax, easy to learn for Java developers</p>
-            </article>
-            <article>
-                <div class="icon icon-2"></div>
-                <h1>Smooth Java integration</h1>
-
-                <p>
-                    Seamlessly and transparently integrates and interoperates with Java and any third-party libraries
-                </p>
-            </article>
-            <article>
-                <div class="icon icon-6"></div>
-                <h1>Vibrant and rich ecosystem</h1>
-
-                <p>
-                    Web development, reactive applications, concurrency / asynchronous / parallelism library, test
-                    frameworks, build tools, code analysis, GUI building
-                </p>
-            </article>
-        </div>
-
-        <div class="col2">
-            <article>
-                <div class="icon icon-4"></div>
-                <h1>Powerful features</h1>
-
-                <p>
-                    Closures, builders, runtime &amp; compile-time meta-programming, functional programming, type
-                    inference, and static compilation
-                </p>
-            </article>
-            <article>
-                <div class="icon icon-5"></div>
-                <h1>Domain-Specific Languages</h1>
-
-                <p>
-                    Flexible &amp; malleable syntax, advanced integration &amp; customization mechanisms, to integrate
-                    readable business rules in your applications
-                </p>
-            </article>
-            <article>
-                <div class="icon icon-3"></div>
-                <h1>Scripting and testing glue</h1>
-
-                <p>
-                    Great for writing concise and maintainable tests, and for all your build and automation tasks
-                </p>
-            </article>
-        </div>
-    </section>
-    <hr class="row"/>

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/html/they-use-groovy.html
----------------------------------------------------------------------
diff --git a/site/src/site/html/they-use-groovy.html b/site/src/site/html/they-use-groovy.html
deleted file mode 100644
index 69124ed..0000000
--- a/site/src/site/html/they-use-groovy.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<div id="they-use-groovy" class="orange-band">
-    <div class="row">
-        <div class="item">
-            <h1><strong>They all use Apache Groovy!</strong></h1>
-            <div id='logos-holder'>
-                <div class='logo' style='background-image:url(img/logos/netflix.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/amadeus.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/bestbuy.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/carfax.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/carriots.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/cisco.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/mutual-of-omaha.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/credit-suisse.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/airbusgroup.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/energy-transfer.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/epo.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/fanniemae.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/google.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/hypoport.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/ibm.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/jpmorganchase.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/linkedin.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/mastercard.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/mtv.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/commerzbank.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/national-cancer-institute.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/nestle.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/oracle.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/paterson-cancer-institute.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/roche.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/sas.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/sky.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/sony.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/smartthings.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/target.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/thales.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/ubs.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/vodafone.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/voyages-sncf.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/walmart.png)'></div>
-                <div class='logo' style='background-image:url(img/logos/wells-fargo.png)'></div>
-            </div>
-        </div>
-    </div>
-</div>

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/html/twittersearch.html
----------------------------------------------------------------------
diff --git a/site/src/site/html/twittersearch.html b/site/src/site/html/twittersearch.html
deleted file mode 100644
index e4897de..0000000
--- a/site/src/site/html/twittersearch.html
+++ /dev/null
@@ -1,2 +0,0 @@
-<a width="100%" height="450" class="twitter-timeline" href="https://twitter.com/groovylang" data-widget-id="484358291535851520" data-link-color="#db4800" data-screen-name="ApacheGroovy">Tweets by @ApacheGroovy</a>
-<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/includes/bottommenu.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/includes/bottommenu.groovy b/site/src/site/includes/bottommenu.groovy
deleted file mode 100644
index 828f23a..0000000
--- a/site/src/site/includes/bottommenu.groovy
+++ /dev/null
@@ -1,29 +0,0 @@
-
-// footer
-footer(id: 'footer') {
-    div(class: 'row') {
-        div(class: 'colset-3-footer') {
-            menu.entrySet().eachWithIndex { entry, i ->
-                def (name, menu) = [entry.key, entry.value]
-                div(class: "col-${i+1}") {
-                    h1(name)
-                    ul {
-                        menu.each { menuItem ->
-                            li { a(href: relative(menuItem.link), menuItem.name) }
-                        }
-                    }
-                }
-            }
-            div(class: 'col-right') {
-                p {
-                    yield "The Groovy programming language is supported by the " 
-                    a href: 'http://www.apache.org', 'Apache Software Foundation'
-                    yield " and the Groovy community"
-                }
-                img(src: 'img/asf_logo.png', title: 'The Apache Software Foundation', alt: 'The Apache Software Foundation', class:'img-responsive')
-            }
-        }
-        div(class: 'clearfix', "&copy; 2003-${Calendar.instance[Calendar.YEAR]} the Apache Groovy project &mdash; " +
-                "Groovy is Open Source, ${$a(href: 'http://www.apache.org/licenses/LICENSE-2.0.html', 'Apache 2 License')}")
-    }
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/includes/community-navbar.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/includes/community-navbar.groovy b/site/src/site/includes/community-navbar.groovy
deleted file mode 100644
index 86a3474..0000000
--- a/site/src/site/includes/community-navbar.groovy
+++ /dev/null
@@ -1,22 +0,0 @@
-
-ul(class: 'nav-sidebar') {
-    [
-            'community': 'Community',
-            'contribute': 'Contribute',
-            'thanks': 'Thanks',
-            'mailing-lists': 'Mailing-lists',
-            'events': 'Events',
-            'usergroups': 'User groups',
-            'groovy-weekly': 'Groovy newsletter'
-    ].each { page, label ->
-        if (currentPage == page) {
-            li(class: 'active') { a(href: relative("${page}.html")) { strong(label) } }
-        } else {
-            li { a(href: "${page}.html", label) }
-        }
-    }
-    li { a(href: relative("groovy-weekly.html#subscribe"), class: 'anchor-link', 'Subscribe') }
-    li { a(href: relative("groovy-weekly.html#archives"), class: 'anchor-link', 'Archive') }
-}
-br()
-include unescaped: 'html/twittersearch.html'

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/includes/contribute-button.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/includes/contribute-button.groovy b/site/src/site/includes/contribute-button.groovy
deleted file mode 100644
index 41729e8..0000000
--- a/site/src/site/includes/contribute-button.groovy
+++ /dev/null
@@ -1,7 +0,0 @@
-div(id: 'contribute-btn') {
-    button(type: 'button', class: 'btn btn-default',
-            onclick: "window.location.href=\"https://github.com/groovy/groovy-website/tree/master/site/src/site/pages/${currentPage}.groovy\"") {
-        i(class: 'fa fa-pencil-square-o') {}
-        yield ' Improve this doc'
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/includes/topmenu.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/includes/topmenu.groovy b/site/src/site/includes/topmenu.groovy
deleted file mode 100644
index 2d5fc1d..0000000
--- a/site/src/site/includes/topmenu.groovy
+++ /dev/null
@@ -1,31 +0,0 @@
-div(class: 'navbar navbar-default navbar-static-top', role: 'navigation') {
-    div(class: 'container') {
-        div(class: 'navbar-header') {
-            button(type: 'button', class: 'navbar-toggle', 'data-toggle': 'collapse', 'data-target': '.navbar-collapse') {
-                span(class: 'sr-only') {}
-                span(class: 'icon-bar') {}
-                span(class: 'icon-bar') {}
-                span(class: 'icon-bar') {}
-            }
-            a(class: 'navbar-brand', href: relative('index.html')) {
-                i(class: 'fa fa-star') {}
-                yield ' Apache Groovy'
-            }
-        }
-        div(class: 'navbar-collapse collapse') {
-            ul(class: 'nav navbar-nav navbar-right') {
-                menu['Groovy'].each { menuItem ->
-                    li(class: category == menuItem.name ? 'active' : '') { a(href: relative(menuItem.link), menuItem.name) }
-                }
-                li {
-                    a('data-effect': 'st-effect-9', class: 'st-trigger', href: '#', 'Socialize')
-                }
-                li(class: (category == 'Search') ? 'active' : '') {
-                    a(href: relative('search.html')) {
-                        i(class: 'fa fa-search') {}
-                    }
-                }
-            }
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/layouts/iframedoc.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/layouts/iframedoc.groovy b/site/src/site/layouts/iframedoc.groovy
deleted file mode 100644
index fb528fd..0000000
--- a/site/src/site/layouts/iframedoc.groovy
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * This layout accepts the following parameters:
- *
- * @param menu the navigation menu
- * @param pageTitle the page title
- * @param extraStyles , a list of CSS files to be added in the header
- * @param scripts , a list of scripts to be imported
- * @param iframeTarget , the URL of the page to be included as an iframe
- */
-layout 'layouts/page.groovy', true,
-        mainContent: contents {
-            div {
-                include template: 'includes/topmenu.groovy'
-            }
-            iframe(class: 'doc-embed', frameborder: '0', height: '100%', width: '100%', src: iframeTarget) {}
-        }

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/layouts/main.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/layouts/main.groovy b/site/src/site/layouts/main.groovy
deleted file mode 100644
index 2f4626c..0000000
--- a/site/src/site/layouts/main.groovy
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * This layout accepts the following parameters:
- *
- * @param menu the navigation menu
- * @param pageTitle the page title
- * @param extraStyles , a list of CSS files to be added in the header
- * @param scripts , a list of scripts to be imported
- * @param extraFooter , a section to be added before closing body
- */
-layout 'layouts/page.groovy', true,
-        mainContent: contents {
-            // 'Content'
-            div {
-                include template: 'includes/topmenu.groovy'
-
-                // main contents goes here!
-                mainContent()
-
-                include template: 'includes/bottommenu.groovy'
-            }
-        }

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/layouts/page.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/layouts/page.groovy b/site/src/site/layouts/page.groovy
deleted file mode 100644
index bff19e9..0000000
--- a/site/src/site/layouts/page.groovy
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- * This layout accepts the following parameters:
- *
- * @param pageTitle the page title
- * @param extraStyles , a list of CSS files to be added in the header
- * @param scripts , a list of scripts to be imported
- * @param contents the main page contents
- * @param extraFooter, a section to be added before closing body
- */
-
-// main layout
-yieldUnescaped '''<!DOCTYPE html>
-<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
-<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
-<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
-<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->'''
-
-head {
-    meta charset: 'utf-8'
-    meta 'http-equiv': 'X-UA-Compatible', content: 'IE=edge'
-    meta name: 'viewport', content: "width=device-width, initial-scale=1"
-    title(pageTitle)
-    link(href: relative("img/favicon.ico"), type: "image/x-ico", rel: "icon")
-    def styles = extraStyles ?: []
-    ['bootstrap.css', 'font-awesome.min.css', 'style.css', *styles].each {
-        link rel: 'stylesheet', type: 'text/css', href:
-                it.startsWith('http')?it:relative("css/$it")
-    }
-}
-
-body {
-    div(id: 'fork-me') {
-        a(href: 'https://github.com/apache/groovy') {
-            img(
-                    style: "position: fixed; top: -14px; right: -14px; border: 0; z-index: 100",
-                    src: 'https://camo.githubusercontent.com/365986a132ccd6a44c23a9169022c0b5c890c387/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f7265645f6161303030302e706e67', alt: 'Fork me on GitHub', 'data-canonical-src': 'https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png'
-            )
-        }
-    }
-
-    div(id: 'st-container', class: "st-container st-effect-9") {
-        nav(class: "st-menu st-effect-9", id: "menu-12") {
-            h2(class: "icon icon-lab", 'Socialize')
-            ul {
-                menu['Socialize'].each {
-                    def (text,url, style) = [it.name, it.link, it.style ]
-                    li {
-                        a(href: relative(url), class: 'icon') { yieldUnescaped "<span class='fa $style'></span> $text" }
-                    }
-                }
-            }
-        }
-
-        // 'content push wrapper'
-
-        div(class: 'st-pusher') {
-            div(class: 'st-content') {
-                div(class: 'st-content-inner') {
-                    yieldUnescaped '''<!--[if lt IE 7]>
-                    <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
-                <![endif]-->'''
-                    if (mainContent) {
-                        mainContent()
-                    }
-                }
-            }
-        }
-    }
-
-    def scripts = extraScripts ?: []
-    ['vendor/jquery-1.10.2.min.js', 'vendor/classie.js', 'vendor/bootstrap.js', 'vendor/sidebarEffects.js', 'vendor/modernizr-2.6.2.min.js','plugins.js', *scripts].each {
-        yieldUnescaped "<script src='${it.startsWith('http')?it:relative('js/'+it)}' defer></script>"
-    }
-
-    if (extraFooter) {
-        extraFooter()
-    }
-
-    script '''
-          (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-          (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-          m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-          })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-
-          ga('create', 'UA-257558-10', 'auto');
-          ga('send', 'pageview');
-    '''
-}
-
-yieldUnescaped '</html>'
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/pages/404.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/pages/404.groovy b/site/src/site/pages/404.groovy
deleted file mode 100644
index 283d3b6..0000000
--- a/site/src/site/pages/404.groovy
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * Ths template is generating the 404 page
- */
-
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - 404',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'panel panel-danger') {
-                            div(class: 'panel-heading', 'Oops! The page you are looking for does not exist!')
-                            div(class: 'panel-body') {
-                                p 'We could not find the page you are looking for. Maybe you are looking for one of those?'
-                                ul {
-                                    li("The ${$a(href: latestDocURL('documentation'), 'reference documentation')} of the Groovy language.")
-                                    li("The latest ${$a(href: latestDocURL('api'), 'Javadocs')} of the language.")
-                                    li("The latest ${$a(href: latestDocURL('gapi'), 'Groovdocs')} of the language.")
-                                    li("Description of ${$a(href: latestDocURL('groovy-jdk'), 'the Groovy development kit APIs')}.")
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/pages/api.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/pages/api.groovy b/site/src/site/pages/api.groovy
deleted file mode 100644
index ec42398..0000000
--- a/site/src/site/pages/api.groovy
+++ /dev/null
@@ -1,2 +0,0 @@
-layout 'layouts/iframedoc.groovy', true,
-        pageTitle: "The Apache Groovy programming language - Groovy Development Kit"

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/pages/buildstatus.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/pages/buildstatus.groovy b/site/src/site/pages/buildstatus.groovy
deleted file mode 100644
index 3cf930c..0000000
--- a/site/src/site/pages/buildstatus.groovy
+++ /dev/null
@@ -1,77 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Continuous integration',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            include template: 'includes/community-navbar.groovy'
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-circle-o-notch') {}
-                                yield ' Continuous integration'
-                            }
-                            article {
-                                p """
-                                    Our ${
-                                    $a(href: 'http://ci.groovy-lang.org?guest=1', 'continuous integration server')
-                                },
-                                    sponsored by ${$a(href: 'http://www.jetbrains.com', 'JetBrains')},
-                                    builds Groovy against multiple JDK versions, as well as some projects from the community tested
-                                    against development versions of Groovy:
-                                """
-                                hr(class: 'divider')
-
-                                h2 'Groovy builds'
-
-                                def renderBuilds = { Map builds ->
-                                    table(class: 'table table-stripped') {
-                                        thead {
-                                            tr {
-                                                th('Build name')
-                                                th('Status')
-                                            }
-                                        }
-                                        tbody {
-                                            builds.each { name, ref ->
-                                                def (id, branch) = ref
-                                                tr {
-                                                    td(name)
-                                                    td {
-                                                        a(href: "http://ci.groovy-lang.org/viewType.html?buildTypeId=$id&branch=$branch&tab=buildTypeStatusDiv&guest=1") {
-                                                            img(src: """http://ci.groovy-lang.org:8111/app/rest/builds/buildType:(id:$id)${branch?",branch:$branch":''}/statusIcon""")
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                                renderBuilds(['Groovy master, JDK 7': ['Groovy_Jdk7Build', 'master'],
-                                        'Groovy master, JDK 8': ['Groovy_Jdk8Build_2', 'master'],
-                                        'Groovy master, JDK 9': ['Groovy_Jdk9Build', 'master'],
-                                        'Groovy 2.4.X, JDK 6': ['Groovy_Jdk6Build', 'GROOVY_2_4_X'],
-                                        'Groovy 2.4.X, JDK 7': ['Groovy_Jdk7Build', 'GROOVY_2_4_X']
-                                        ])
-
-                                hr(class: 'divider')
-
-                                h2 'Community joint builds'
-                                renderBuilds(['Nextflow master, Groovy 2.4.X': ['JointBuilds_Nextflow_Groovy24xJointBuild', ''],
-                                              'Ratpack master, Groovy 2.4.X': ['JointBuilds_Ratpac_RatpackGroovy24x', '']
-                                ])
-
-                                p """
-                                    The Groovy development team is willing to test Groovy development versions against important
-                                    ecosystem projects. If you want your project to be added to the list, please contact
-                                    us on the ${$a(href:'mailing-lists.html','development mailing list')}.
-                                """
-                            }
-                        }
-                    }
-                }
-            }
-        }

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/pages/changelog.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/pages/changelog.groovy b/site/src/site/pages/changelog.groovy
deleted file mode 100644
index dfbdf09..0000000
--- a/site/src/site/pages/changelog.groovy
+++ /dev/null
@@ -1,39 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: "The Apache Groovy programming language - Groovy $groovyVersion Changelog",
-        mainContent: contents {
-            def issueMap = issues.groupBy { it.type }
-            def issueTypes = issueMap.keySet().sort()
-
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li(class:'active') {
-                                    a(href: '#changelog', "Changelog for Groovy $groovyVersion")
-                                }
-                                issueTypes.eachWithIndex { type, i ->
-                                    li { a(href: "#type$i", class: 'anchor-link', type) }
-                                }
-                            }
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            a(name:"changelog"){}
-                            h1("Changelog for Groovy $groovyVersion")
-                            issueTypes.eachWithIndex { type,i ->
-                                def list = issueMap[type]
-                                a(name:"type$i"){}
-                                h2("$type")
-                                ul {
-                                    list.each { issue ->
-                                        li("[${$a(href: 'https://issues.apache.org/jira/browse/' + issue.id, issue.id)}] - ${issue.description}")
-                                    }
-                                }
-
-                            }
-                        }
-                    }
-                }
-            }
-        }

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/pages/changelogs.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/pages/changelogs.groovy b/site/src/site/pages/changelogs.groovy
deleted file mode 100644
index 3d8cd8e..0000000
--- a/site/src/site/pages/changelogs.groovy
+++ /dev/null
@@ -1,43 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: "The Apache Groovy programming language - Changelogs",
-        mainContent: contents {
-            def majorize = { it.split(/\.|-/)[0..1].join('.')}
-
-            def major = versions.collect([] as Set) { majorize(it) }
-
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li(class:'active') {
-                                    a(href: '#changelog', "Changelogs")
-                                }
-                                major.each { v ->
-                                    li { a(href: "#changelog$v", class: 'anchor-link', "Groovy $v") }
-                                }
-                            }
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            h1('Changelogs for Groovy')
-                            p 'Here you can find the changelogs for the past Groovy releases.'
-                            versions.groupBy { majorize(it) }.each {
-                                String mj = it.key
-                                List<String> minor = it.value
-                                a(name: "changelog$mj") {}
-                                h2("Groovy $mj")
-                                ul {
-                                    minor.each { v->
-                                        li {
-                                            yieldUnescaped "Changelog for "
-                                            a(href: "changelogs/changelog-${v}.html", "Groovy $v")
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/pages/community.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/pages/community.groovy b/site/src/site/pages/community.groovy
deleted file mode 100644
index efb44ac..0000000
--- a/site/src/site/pages/community.groovy
+++ /dev/null
@@ -1,58 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Community',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            include template: 'includes/community-navbar.groovy'
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-users') {}
-                                yield ' Community'
-                            }
-                            article {
-                                p {
-                                    yield '''
-                                        Groovy would not be the successful Open Source project it is today,
-                                        without the help of its users, forming the base of a wider Groovy community
-                                        and '''
-                                    a(href: 'ecosystem.html', 'ecosystem')
-                                    yield ' of projects using Groovy.'
-                                }
-                                p 'In this section of the website, you can find useful links and information about: '
-                                ul {
-                                    li "how you can ${$a(href: 'contribute.html', 'contribute')} to the project, its codebase, its documentation,"
-                                    li "how to raise issues in our ${$a(href: 'contribute.html#reporting-issues', 'bug tracker')},"
-                                    li "how to interact with other Groovy users and developers through the ${$a(href: 'mailing-lists.html', 'mailing-lists')} or ${$a(href: 'https://groovycommunity.com/', 'Slack')}. The Slack channel is not endorsed by the Apache Software Foundation, It's run by Groovy enthusiasts in the community for casual conversations and Q&A. Official discussions must happen on the mailing lists only,"
-                                    li "the upcoming ${$a(href: 'events.html', 'events and conferences')} you might want to attend to learn more about Groovy and to share your experience with others,"
-                                    li "the list of ${$a(href: 'usergroups.html', 'user groups')} you can attend and where to meet other Groovy users."
-                                }
-                                p '''
-                                    If you click on the socialize link in the menu, you will also find other ways to interact
-                                    with the Groovy community, and follow the news around the ecosystem:
-                                '''
-                                ul {
-                                    li {
-                                        a(href: 'groovy-weekly.html', 'Groovy newsletter')
-                                        yieldUnescaped ' &mdash; links to articles, presentations, tweets, podcasts, etc.'
-                                    }
-                                    li {
-                                        a(href: 'https://google.com/+groovy', 'Google+ Groovy page')
-                                        yieldUnescaped ' &mdash; for sharing news and articles'
-                                    }
-                                    li {
-                                        a(href: 'http://bit.ly/g-community', 'Google+ Groovy community')
-                                        yieldUnescaped ' &mdash; for discussing and exchanging with other Groovy users'
-                                    }
-                                }
-                            }
-                            hr(class: 'divider')
-                        }
-                    }
-                }
-            }
-        }

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/pages/contribute.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/pages/contribute.groovy b/site/src/site/pages/contribute.groovy
deleted file mode 100644
index 89eb478..0000000
--- a/site/src/site/pages/contribute.groovy
+++ /dev/null
@@ -1,197 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Contribute',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            include template: 'includes/community-navbar.groovy'
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-pencil-square-o') {}
-                                yield ' Contribute'
-                            }
-                            article {
-                                p '''
-                                    Would you like to help us make the Groovy programming language even better? 
-                                    There are many ways in which you can get involved, make a difference and help the Groovy development team to make Groovy even, well, groovier? 
-                                    We really appreciate and welcome contributions and you can help us by:
-
-                                '''
-                                ul {
-                                    li {
-                                        yield 'helping other users on the '
-                                        a(href: 'mailing-lists.html', 'mailing-lists')
-                                    }
-                                    li {
-                                        a(href: '#reporting-issues', 'reporting issues')
-                                        yield ' you encounter in our '
-                                        a(href: 'https://issues.apache.org/jira/browse/GROOVY', 'bug tracker')
-                                    }
-                                    li {
-                                        a(href: '#documenting', 'documenting')
-                                        yield ' various aspects of the language or its APIs'
-                                    }
-                                    li {
-                                        yield 'improving this '
-                                        a(href: 'https://github.com/groovy/groovy-website', 'website')
-                                    }
-                                    li 'covering the code base with more tests to avoid future regressions, '
-                                    li {
-                                        yield 'and of course, by '
-                                        a(href: '#code', 'contributing bug fixes or new features')
-                                    }
-                                }
-                                hr(class: 'divider')
-
-                                h2 'Discussing on the mailing-lists'
-                                p {
-                                    yield '''
-                                        If you encounter a problem, want to discuss a new feature,
-                                        share interesting findings, and more, then the '''
-                                    a(href: 'mailing-lists.html', 'mailing-lists')
-                                    yield ' are the place to go to start a conversation with the Groovy developers and other Groovy users.'
-                                }
-                                hr(class: 'divider')
-
-                                a(name: 'reporting-issues') {}
-                                h2 'Reporting issues'
-                                p {
-                                    yield 'The Groovy project is using the '
-                                    a(href: 'https://issues.apache.org/jira/browse/GROOVY/', 'JIRA bug tracker')
-                                    yield '''
-                                        to report and track issues, feature enhancements, and new features.
-                                        Be sure to be signed-up and logged-in, before proceeding.
-                                    '''
-                                }
-                                p {
-                                    button(type: 'button', class: 'btn btn-default', 'Report an issue',
-                                            onclick: 'window.location.href="https://issues.apache.org/jira/browse/GROOVY"')
-                                }
-
-                                hr(class: 'divider')
-
-                                a(name: 'documenting') {}
-                                h2 'Improving the documentation'
-                                p 'The documentation of the Groovy programming language comes in various forms:'
-                                ul {
-                                    li {
-                                        yield 'the '
-                                        a(href: 'single-page-documentation.html', 'reference documentation')
-                                        yield ' covering the language specification, the user guides, getting started, and more.'
-                                    }
-                                    li {
-                                        yield 'the '
-                                        a(href: 'api.html', 'GroovyDoc APIs')
-                                        yield ' documenting the classes of the Groovy code base'
-                                    }
-                                    li {
-                                        yield 'the '
-                                        a(href: 'gdk.html', 'Groovy GDK')
-                                        yield ' documentation, explaining how Groovy enriches the JDK APIs'
-                                    }
-                                    li {
-                                        yield 'this '
-                                        a(href: 'https://github.com/groovy/groovy-website', 'website')
-                                    }
-                                }
-                                p {
-                                    yield 'To contribute to the Groovy reference documentation, this '
-                                    a(href: 'http://blog.cacoethes.co.uk/groovyandgrails/contributing-to-the-groovy-documentation', 'blog post')
-                                    yield ' gives all the details on how you can work on that documentation.'
-                                }
-                                p {
-                                    yield 'All the above is stored in our code '
-                                    a(href: 'https://github.com/groovy', 'repositories on Github')
-                                    yield ', so having an account on Github would be ideal.'
-                                }
-                                p """
-                                    Contributing to this website is fairly easy, if you have a Github account already,
-                                    as you can click on the ${$em('Improve this doc')} buttons that you can see on all the pages of this website.
-                                    So don't hesitate to help us improve it, fix typos, broken language, clarify complicated sections,
-                                    add new material, etc.
-                                """
-                                p 'Please check the following section for more information on how to contribute to our codebase.'
-                                hr(class: 'divider')
-
-                                a(name: 'code') {}
-                                h2 'Contributing code'
-                                p {
-                                    yield '''
-                                        If you know the area you want to contribute to, this is great, but if you are looking for
-                                        some first contributions, the Groovy development team tries to maintain a '''
-                                    a(href: 'https://issues.apache.org/jira/secure/IssueNavigator%21executeAdvanced.jspa?jqlQuery=project%3DGROOVY+and+labels+%3D+contrib+AND+resolution%3DUnresolved&runQuery=true&clear=true', 'list of tickets')
-                                    yield '''
-                                        of possible easy contributions that could get you started on your journey
-                                        to become a Groovy committer. Just raise your hand on the Groovy developer '''
-                                    a(href: 'mailing-lists.html', 'mailing-list')
-                                    yield ''' to tell us about your desire to work on that ticket.'''
-                                }
-                                p '''
-                                    For more complicated tasks, the best approach is also to bring that to the attention of the Groovy developers,
-                                    so they can give you some guidance on how best to tackle a particular problem, discuss implementation ideas
-                                    and the semantics or scope of the proposed change.
-                                '''
-
-                                h3 'Cloning the code base'
-                                p {
-                                    yield 'To work on the Groovy code base, you should be proficient enough in '
-                                    a(href: 'http://git-scm.com/', 'git')
-                                    yield ' and you should have an account on '
-                                    a(href: 'https://github.com/', 'Github')
-                                    yield ' to be able to create '
-                                    a(href: 'https://help.github.com/articles/creating-a-pull-request', 'pull requests')
-                                    yield ' with your changes.'
-                                }
-                                p { 
-                                    yield 'Please fork '
-                                    a(href: 'https://github.com/apache/groovy', 'https://github.com/apache/groovy')
-                                    yield ' and create a local clone of your fork as explained in '
-                                    a(href: 'https://help.github.com/articles/fork-a-repo/', 'fork a repo')
-                                    yield '.'
-                                }
-                                p 'Make sure you configure Git appropriately with the same email that you registered with on Github:'
-                                pre { code 'git config --global user.name "YOUR NAME"\n' +
-                                        'git config --global user.email "YOUR EMAIL"' }
-                                p 'You can verify these are configured appropriately by running:'
-                                pre { code 'git config --list' }
-
-                                h3 'Working on the code base'
-                                p {
-                                    yield 'If you are working with the IntelliJ IDEA development environment, this '
-                                    a(href: 'http://melix.github.io/blog/2014/06/contribute-groovy-ide.html', 'screencast')
-                                    yield ' gives lots of details on how to setup your IDE.'
-                                }
-                                p {
-                                    yield 'Then, to work on the Groovy code base, to build and test Groovy, you can follow the '
-                                    a(href: 'https://github.com/apache/groovy/blob/master/README.adoc', 'instructions')
-                                    yield ' from the readme file in the Groovy repository.'
-                                }
-                                p 'The most important command you will have to run before sending your changes is the test command:'
-                                pre { code './gradlew test' }
-                                p 'For a successful contribution, all tests should be green!'
-
-                                h3 'Creating a pull request'
-                                p 'Once you are satisfied with your changes:'
-                                ul {
-                                    li 'commit your changes in your local branch'
-                                    li 'push your changes to your remote branch on Github'
-                                    li {
-                                        yield 'send us a '
-                                        a(href: 'https://help.github.com/articles/creating-a-pull-request', 'pull requests')
-                                    }
-                                }
-                            }
-                            hr(class: 'divider')
-
-                            h2('Build status')
-
-                            p "The Groovy sources are tested thanks to our ${$a(href:'buildstatus.html','continuous integration server')}."
-                        }
-                    }
-                }
-            }
-        }

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/pages/docpage.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/pages/docpage.groovy b/site/src/site/pages/docpage.groovy
deleted file mode 100644
index b15e3df..0000000
--- a/site/src/site/pages/docpage.groovy
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * This layout accepts the following parameters:
- *
- * @param menu the navigation menu
- * @param pageTitle the page title
- * @param extraStyles , a list of CSS files to be added in the header
- * @param scripts , a list of scripts to be imported
- * @param iframeTarget , the URL of the page to be included as an iframe
- */
-layout 'layouts/main.groovy', true,
-        pageTitle: "The Apache Groovy programming language - $title",
-        extraStyles: ['docstyle.css','https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.css'],
-        extraFooter: contents {
-            script(src: 'https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.js') {}
-            script { yieldUnescaped "document.addEventListener('DOMContentLoaded',prettyPrint)" }
-        },
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li(class: 'active') {
-                                    a(href: '#') { strong('Table of contents') }
-                                }
-                                yieldUnescaped page.toc
-                            }
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            h1(title)
-                            yieldUnescaped(page.content)
-                        }
-                    }
-                }
-            }
-        }

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/pages/documentation.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/pages/documentation.groovy b/site/src/site/pages/documentation.groovy
deleted file mode 100644
index 08fd3af..0000000
--- a/site/src/site/pages/documentation.groovy
+++ /dev/null
@@ -1,79 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Documentation',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li(class: 'active') {
-                                    a(href: '#') { strong('Documentation') }
-                                }
-                                docSections.each { section ->
-                                    li { a(href: "#${section.anchor}", class: 'anchor-link', section.name) }
-                                }
-                                li {
-                                    a(href: "#all-versions", class: 'anchor-link', 'Documentation for other versions')
-                                }
-                                li {
-                                    a(href: 'faq.html', 'FAQ')
-                                }
-                            }
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-university') {}
-                                yield ' Documentation'
-                            }
-                            p {
-                                yield 'The documentation is available as a '
-                                a(href: "single-page-documentation.html", 'single-page document')
-                                yield ', or feel free to pick at a direct section below.'
-                            }
-                            p "You can also browse ${$a(href: '#all-versions', 'documentation for other versions')}."
-                            hr(class: 'divider')
-
-                            // group sections by 2, for 2 columns
-                            def rows = docSections.collate(2)
-                            rows.each { row ->
-                                div(class: 'row-fluid') {
-                                    article {
-                                        row.each { section ->
-                                            div(class: 'col-md-6') {
-                                                a(name: section.anchor) {}
-                                                h2 {
-                                                    i(class: "fa ${section.icon}", " $section.name")
-                                                }
-                                                ul {
-                                                    section.getItems().each { item ->
-                                                        li { a(href: "${item.targetFilename}.html", item.name) }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                            div(class: 'col-md-12') {
-                                hr(class: 'divider')
-
-                                a(name: 'all-versions') {}
-                                article {
-                                    h2 'Documentation for all Groovy versions'
-                                    p 'You can browse the documentation of a particular version of Groovy (since Groovy 1.7):'
-                                    def allVersions =  [*allDocVersions, 'Select a version'].reverse()
-
-                                    select(class: 'form-control', onchange: "window.location.href='http://docs.groovy-lang.org/docs/groovy-' + this.value + '/html/'") {
-                                        allVersions.each { String version ->
-                                            option version
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }


[04/20] groovy-user-site git commit: move content to asf-site branch

Posted by pa...@apache.org.
http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/releasenotes/groovy-1.8.adoc
----------------------------------------------------------------------
diff --git a/site/src/site/releasenotes/groovy-1.8.adoc b/site/src/site/releasenotes/groovy-1.8.adoc
deleted file mode 100644
index 25f96d6..0000000
--- a/site/src/site/releasenotes/groovy-1.8.adoc
+++ /dev/null
@@ -1,1554 +0,0 @@
-The 1.8 release of Groovy comes with many new features that greatly
-enhance
-
-* the dynamic expressiveness of Groovy, specifically for defining DSLs
-* runtime performance
-* concurrent and parallel execution
-* design by contract
-* functional programming style
-* first-class JSON support
-* compile-time meta programming
-* and more helpers and library additions
-
-These features have undergone the Groovy developer process with formal
-descriptions, discussion, and voting (GEP - Groovy Enhancement Proposal)
-for core parts and less formal developer discussions and JIRA voting for
-additional parts.
-
-Our goal has stayed the same, though: to give the Java developer a tool
-that makes him more productive, allows him to achieve his goals faster
-and with a smaller margin of error, and extend the scalability of the
-Java platform from full-blown enterprise projects to everyday "getting
-things done" tasks.
-
-[[Groovy18releasenotes-CommandchainsfornicerDomain-SpecificLanguages]]
-== Command chains for nicer Domain-Specific Languages
-
-Thanks to its flexible syntax and its compile-time and runtime
-metaprogramming capabilities, Groovy is well known for its
-Domain-Specific Language capabilities. However, we felt that we could
-improve upon the syntax further by removing additional punctuation
-symbols when users chain method calls. This allows DSL implementors to
-develop command descriptions that read almost like natural sentences.
-
-Before Groovy 1.8, we could omit parentheses around the arguments of a
-method call for top-level statements. But we couldn\u2019t chain method
-calls. The new `command chain` feature allows us to chain such
-parentheses-free method calls, requiring neither parentheses around
-arguments, nor dots between the chained calls. The general idea is that
-a call like `a b c d` will actually be equivalent to `a(b).c(d)`. This
-also works with multiple arguments, closure arguments, and even named
-arguments. Furthermore, such command chains can also appear on the
-right-hand side of assignments. Let\u2019s have a look at some examples
-supported by this new syntax:
-
-[source,groovy]
----------------------------------------------------------------------------------------------------------------
-turn left then right                           // equivalent to: turn(left).then(right)
-take 2.pills of chloroquinine after 6.hours    // equivalent to: take(2.pills).of(chloroquinine).after(6.hours)
-paint wall with red, green and yellow          // equivalent to: paint(wall).with(red, green).and(yellow)
-
-// with named parameters too
-check that: margarita tastes good             // equivalent to: check(that: margarita).tastes(good)
-
-// with closures as parameters
-given { } when { } then { }                    // equivalent to: given({}).when({}).then({})
----------------------------------------------------------------------------------------------------------------
-
-It is also possible to use methods in the chain which take no arguments,
-but in that case, the parentheses are needed:
-
-[source,groovy]
--------------------------------------------------------------------------------------------------
-select all unique() from names                 // equivalent to: select(all).unique().from(names)
--------------------------------------------------------------------------------------------------
-
-If your command chain contains an odd number of elements, the chain will
-be composed of method / arguments, and will finish by a final property
-access:
-
-[source,groovy]
--------------------------------------------------------------------------------------
-take 3 cookies                                 // equivalent to: take(3).cookies
-                                               // and also this: take(3).getCookies()
--------------------------------------------------------------------------------------
-
-This new command chain approach opens up interesting possibilities in
-terms of the much wider range of DSLs which can now be written in
-Groovy. This new feature has been developed thanks to the Google Summer
-of Code program, where our student, Lidia, helped us modify the Groovy
-Antlr grammar to extend top-level statements to accept that command
-chain syntax.
-
-The above examples illustrate using a command chain based DSL but not
-how to create one. You will be able to find some
-http://groovyconsole.appspot.com/tag/gep3[further examples] of `command chains`
-on the Groovy Web Console but to illustrate creating such a
-DSL, we will show just a couple of examples - first using maps and
-Closures:
-
-[source,groovy]
-------------------------------------------------------------------------------------------------------
-show = { println it }
-square_root = { Math.sqrt(it) }
-
-def please(action) {
-  [the: { what ->
-    [of: { n -> action(what(n)) }]
-  }]
-}
-
-please show the square_root of 100             // equivalent to: please(show).the(square_root).of(100)
-// ==> 10.0
-------------------------------------------------------------------------------------------------------
-
-Or if you prefer Japanese and a metaprogramming style (see
-http://d.hatena.ne.jp/uehaj/20100919/1284906117[here] for more details):
-
-[source,groovy]
-----------------------------------------------------------
-// Japanese DSL using GEP3 rules
-Object.metaClass.\u3092�=
-Object.metaClass.\u306e�= {�clos�->�clos(delegate)�}
-
-\u307e\u305a = {�it�}
-\u8868\u793a\u3059\u308b = {�println�it�}
-\u5e73\u65b9\u6839 = {�Math.sqrt(it)�}
-
-\u307e\u305a�100�\u306e�\u5e73\u65b9\u6839�\u3092�\u8868\u793a\u3059\u308b  // First, show the square root of 100
-// => 10.0
-----------------------------------------------------------
-
-As a second example, consider how you might write a DSL for simplifying
-one of your existing APIs. Maybe you need to put this code in front of
-customers, business analysts or testers who might be not hard-core Java
-developers. We\u2019ll use the `Splitter` from the Google
-http://code.google.com/p/guava-libraries/[Guava libraries] project as it
-already has a nice Fluent API. Here is how we might use it out of the
-box:
-
-[source,groovy]
-----------------------------------------------------------------------------------------------------------------
-@Grab('com.google.guava:guava:r09')
-import com.google.common.base.*
-def result = Splitter.on(',').trimResults(CharMatcher.is('_' as char)).split("_a ,_b_ ,c__").iterator().toList()
-assert result == ['a ', 'b_ ', 'c']
-----------------------------------------------------------------------------------------------------------------
-
-It reads fairly well for a Java developer but if that is not your target
-audience or you have many such statements to write, it could be
-considered a little verbose. Again, there are many options for writing a
-DSL. We\u2019ll keep it simple with Maps and Closures. We\u2019ll first write a
-helper method:
-
-[source,groovy]
-------------------------------------------------------------------------------------------------------
-def split(string) {
-  [on: { sep ->
-    [trimming: { trimChar ->
-      Splitter.on(sep).trimResults(CharMatcher.is(trimChar as char)).split(string).iterator().toList()
-    }]
-  }]
-}
-------------------------------------------------------------------------------------------------------
-
-now instead of this line from our original example:
-
-[source,groovy]
-----------------------------------------------------------------------------------------------------------------
-def result = Splitter.on(',').trimResults(CharMatcher.is('_' as char)).split("_a ,_b_ ,c__").iterator().toList()
-----------------------------------------------------------------------------------------------------------------
-
-we can write this:
-
-[source,groovy]
------------------------------------------------------
-def result = split "_a ,_b_ ,c__" on ',' trimming '_'
------------------------------------------------------
-
-[[Groovy18releasenotes-Performanceimprovements]]
-== Performance improvements
-
-Groovy\u2019s flexible metaprogramming model involves numerous decision
-points when making method calls or accessing properties to determine
-whether any metaprogamming hooks are being utilized. During complex
-expression calculations, such decision points involved identical checks
-being executed numerous times. Recent performance improvements allow
-some of these checks to be bypassed during an expression calculation
-once certain initial assumptions have been checked. Basically if certain
-preconditions hold, some streamlining can take place.
-
-Groovy 1.8.0 contains two main streams of optimization work:
-
-* There are several optimizations for basic operations on integers like
-plus, minus, multiply, increment, decrement and comparisons. This
-version doesn\u2019t support the mixed usage of different types. If an
-expression contains different types, then it falls back to the classical
-way of performing the operation, i.e. no streamlining occurs.
-* There is also an optimization for direct method calls. Such a method
-call is done directly if it is done on `this` and if the argument
-types are a direct match with the parameter types of the method we may
-call. Since this is an operation that does not behave too well with a
-method call logic based on runtime types we select only methods where
-the primitive types match, the parameter types are final or for methods
-that take no arguments. Currently methods with a variable parameter list
-are not matched in general, unless a fitting array is used for the
-method call.
-
-Those two areas of optimization are only the beginning of further
-similar improvements. Upcoming versions of the Groovy 1.8.x branch will
-see more optimizations coming. In particular, primitive types other than
-integers should be expected to be supported shortly.
-
-[[Groovy18releasenotes-GParsbundledwithintheGroovydistribution]]
-== GPars bundled within the Groovy distribution
-
-The http://gpars.github.io[GPars] project offers developers new
-intuitive and safe ways to handle Java or Groovy tasks concurrently,
-asynchronously, and distributed by utilizing the power of the Java
-platform and the flexibility of the Groovy language. Groovy 1.8 now
-bundles GPars 0.11 in the libraries of the Groovy installation, so that
-you can leverage all the features of the library for +
- Fork/Join, Map/Filter/Reduce, DataFlow, Actors, Agents, and more with
-all the Groovy goodness.
-
-To learn more about GPars, head over to the
-http://gpars.github.io/[GPars website], read the
-http://gpars.org/guide/index.html[detailed online user guide], or check
-out chapter 17 of http://www.manning.com/koenig2[Groovy in Action, 2nd
-Edition (MEAP)].
-
-[[Groovy18releasenotes-Closureenhancements]]
-== Closure enhancements
-
-Closures are a central and essential piece of the Groovy programming
-language and are used in various ways throughout the Groovy APIs. In
-Groovy 1.8, we introduce the ability to use closures as annotation
-parameters. Closures are also a key part of what gives Groovy its
-functional flavor.
-
-[[Groovy18releasenotes-Closureannotationparameters]]
-=== Closure annotation parameters
-
-In Java, there\u2019s a limited set of types you can use as annotation
-parameters (String, primitives, annotations, classes, and arrays of
-these). But in Groovy 1.8, we\u2019re going further and let you use closures
-as annotation parameters \u2013 which are actually transformed into a class
-parameter for compatibility reasons.
-
-[source,groovy]
-------------------------------------------------
-import java.lang.annotation.*
-
-@Retention(RetentionPolicy.RUNTIME)
-@interface Invariant {
-    Class value() // will hold a closure class
-}
-
-@Invariant({ number >= 0 })
-class Distance {
-    float number
-    String unit
-}
-
-def d = new Distance(number: 10, unit: "meters")
-
-def anno = Distance.getAnnotation(Invariant)
-def check = anno.value().newInstance(d, d)
-
-assert check(d)
-------------------------------------------------
-
-Closure annotation parameters open up some interesting possibilities for
-framework authors! As an example, the
-https://github.com/andresteingress/gcontracts/wiki/[GContracts] project,
-which brings the `Design by Contract` paradigm to Groovy makes heavy
-use of annotation parameters to allow preconditions, postconditions and
-invariants to be declared.
-
-[[Groovy18releasenotes-Closurefunctionalflavors]]
-=== Closure functional flavors
-
-[[Groovy18releasenotes-Closurecomposition]]
-==== Closure composition
-
-If you recall your math lessons, function composition may be a concept
-you\u2019re familiar with. And in turn, *Closure composition* is about that:
-the ability to compose Closures together to form a new Closure which
-chains the call of those Closures. Here\u2019s an example of composition in
-action:
-
-[source,groovy]
----------------------------------------------
-def plus2� = { it +�2 }
-def�times3 = { it *�3�}
-
-def�times3plus2 = plus2 << times3
-assert�times3plus2(3) ==�11
-assert�times3plus2(4) == plus2(times3(4))
-
-def�plus2times3 = times3 << plus2
-assert�plus2times3(3) ==�15
-assert�plus2times3(5) == times3(plus2(5))
-
-// reverse composition
-assert�times3plus2(3) == (times3 >> plus2)(3)
----------------------------------------------
-
-To see more examples of Closure composition and reverse composition,
-please have a look at our
-https://github.com/apache/groovy/blob/master/src/test/groovy/ClosureComposeTest.groovy[test
-case].
-
-[[Groovy18releasenotes-Closuretrampoline]]
-==== Closure trampoline
-
-When writing recursive algorithms, you may be getting the infamous stack
-overflow exceptions, as the stack starts to have a too high depth of
-recursive calls. An approach that helps in those situations is by using
-Closures and their new
-http://en.wikipedia.org/wiki/Tail_call#Through_trampolining[trampoline]
-capability.
-
-Closures are wrapped in a `TrampolineClosure`. Upon calling, a
-trampolined Closure will call the original Closure waiting for its
-result. If the outcome of the call is another instance of a
-`TrampolineClosure`, created perhaps as a result to a call to the
-`trampoline()` method, the Closure will again be invoked. This
-repetitive invocation of returned trampolined Closures instances will
-continue until a value other than a trampolined Closure is returned.
-That value will become the final result of the trampoline. That way,
-calls are made serially, rather than filling the stack.
-
-Here\u2019s an example of the use of `trampoline()` to implement the
-factorial function:
-
-[source,groovy]
-------------------------------------------------------------------
-def factorial
-factorial = { int n, def accu = 1G ->
-    if (n < 2) return accu
-    factorial.trampoline(n - 1, n * accu)
-}
-factorial = factorial.trampoline()
-
-assert factorial(1)    == 1
-assert factorial(3)    == 1 * 2 * 3
-assert factorial(1000) == 402387260... // plus another 2560 digits
-------------------------------------------------------------------
-
-[[Groovy18releasenotes-Closurememoization]]
-==== Closure memoization
-
-Another improvement to Closures is the ability to
-http://en.wikipedia.org/wiki/Memoization[memoize] the outcome of
-previous (ideally side-effect free) invocations of your Closures. The
-return values for a given set of Closure parameter values are kept in a
-cache, for those memoized Closures. That way, if you have an expensive
-computation to make that takes seconds, you can put the return value in
-cache, so that the next execution with the same parameter will return
-the same result \u2013 again, we assume results of an invocation are the same
-given the same set of parameter values.
-
-There are three forms of memoize functions:
-
-* the standard `memoize()` which caches all the invocations
-* `memoizeAtMost(max)` call which caches a maximum number of invocations
-* `memoizeAtLeast(min)` call which keeps at least a certain number of
-invocation results
-* and `memoizeBetween(min, max)` which keeps a range results (between a
-minimum and a maximum)
-
-Let\u2019s illustrate that:
-
-[source,groovy]
---------------------------------------------------
-def plus = { a, b -> sleep 1000; a + b }.memoize()
-assert plus(1, 2) == 3 // after 1000ms
-assert plus(1, 2) == 3 // return immediately
-assert plus(2, 2) == 4 // after 1000ms
-assert plus(2, 2) == 4 // return immediately
-�
-// other forms:
-
-// at least 10 invocations cached
-def plusAtLeast = { ... }.memoizeAtLeast(10)
-
-// at most 10 invocations cached
-def plusAtMost = { ... }.memoizeAtMost(10)
-
-// between 10 and 20 invocations cached
-def plusAtLeast = { ... }.memoizeBetween(10, 20)
---------------------------------------------------
-
-[[Groovy18releasenotes-Curryingimprovements]]
-=== Currying improvements
-
-Currying improvements have also been backported to recent releases of
-Groovy 1.7, but it\u2019s worth outlining here for reference. Currying used
-to be done only from left to right, but it\u2019s also possible to do it from
-right to left, or from a given index, as the following examples
-demonstrate:
-
-[source,groovy]
-------------------------------------------
-// right currying
-def divide = { a, b -> a / b }
-def halver = divide.rcurry(2)
-assert halver(8) == 4
-�
-// currying n-th parameter
-def joinWithSeparator = { one, sep, two ->
-    one + sep + two
-}
-def joinWithComma =
-    joinWithSeparator.ncurry(1, ', ')
-assert joinWithComma('a', 'b') == 'a, b'
-------------------------------------------
-
-[[Groovy18releasenotes-NativeJSONsupport]]
-== Native JSON support
-
-With the ubiquity of JSON as an interchange format for our applications,
-it is natural that Groovy added support for JSON, in a similar fashion
-as the support Groovy\u2019s always had with XML. So Groovy 1.8 introduces a
-JSON builder and parser.
-
-[[Groovy18releasenotes-ReadingJSON]]
-=== Reading JSON
-
-A `JsonSlurper` class allows you to parse JSON payloads, and access the
-nested Map and List data structures representing that content. JSON
-objects and arrays are indeed simply represented as Maps and Lists,
-giving you access to all the GPath expression benefits
-(subscript/property notation, find/findAll/each/inject/groupBy/etc.).
-Here\u2019s an example showing how to find all the recent commit messages on
-the Grails project:
-
-[source,groovy]
---------------------------------------------------------------------------------------------------
-import groovy.json.*
-
-def payload = new URL("http://github.com/api/v2/json/commits/list/grails/grails-core/master").text
-
-def slurper = new JsonSlurper()
-def doc = slurper.parseText(payload)
-
-doc.commits.message.each { println it }
---------------------------------------------------------------------------------------------------
-
-If you want to see some more examples of the usage of the JSON parser,
-you can have a look at the
-https://github.com/apache/groovy/blob/master/subprojects/groovy-json/src/test/groovy/groovy/json/JsonSlurperTest.groovy[JsonSlurper
-tests] in our code base.
-
-[[Groovy18releasenotes-JSONbuilder]]
-=== JSON builder
-
-Parsing JSON data structures is one thing, but we should also be able to
-produce JSON content just like we create markup with the
-`MarkupBuilder`. The following example:
-
-[source,groovy]
-----------------------------
-import groovy.json.*
-
-def json = new JsonBuilder()
-
-json.person {
-    name "Guillaume"
-    age 33
-    pets "Hector", "Felix"
-}
-
-println json.toString()
-----------------------------
-
-Will create the JSON output:
-
-[source,groovy]
-------------------------------------------------------------------
-{"person":{"name":"Guillaume","age":33,"pets":["Hector","Felix"]}}
-------------------------------------------------------------------
-
-You can find some more usages of the JSON builder in our
-https://github.com/apache/groovy/blob/master/subprojects/groovy-json/src/test/groovy/groovy/json/JsonBuilderTest.groovy[JsonBuilder
-tests].
-
-[[Groovy18releasenotes-PrettyprintingJSONcontent]]
-=== Pretty printing JSON content
-
-When given a JSON data structure, you may wish to pretty-print it, so
-that you can more easily inspect it, with a more friendly layout. So for
-instance, if you want to pretty print the result of the previous
-example, you could do:
-
-[source,groovy]
---------------------------------------------------------------------------------------------------------------------
-import groovy.json.*
-
-println JsonOutput.prettyPrint('''{"person":{"name":"Guillaume","age":33,"pets":["Hector","Felix"]}}''')\u200b\u200b\u200b\u200b\u200b\u200b\u200b\u200b\u200b\u200b\u200b\u200b
---------------------------------------------------------------------------------------------------------------------
-
-Which would result in the following pretty-printed output:
-
-[source,groovy]
-----------------------------
-{
-    "person": {
-        "name": "Guillaume",
-        "age": 33,
-        "pets": [
-            "Hector",
-            "Felix"
-        ]
-    }
-}
-----------------------------
-
-[[Groovy18releasenotes-NewASTTransformations]]
-== New AST Transformations
-
-The Groovy compiler reads the source code, builds an Abstract Syntax
-Tree (AST) from it, and then puts the AST into bytecode. With AST
-transformations, the programmer can hook into this process. A general
-description of this process, an exhaustive description of all available
-transformations, and a guide of how to write you own ones can be found
-for example in http://www.manning.com/koenig2[Groovy in Action, 2nd
-Edition (MEAP)], chapter 9.
-
-Below is a list of all new transformations that come with Groovy 1.8.
-They save you from writing repetitive code and help avoiding common
-errors.
-
-[[Groovy18releasenotes-Log]]
-=== @Log
-
-You can annotate your classes with the @Log transformation to
-automatically inject a logger in your Groovy classes, under the `log`
-property. Four kind of loggers are actually available:
-
-* `@Log` for java.util.logging
-* `@Commons` for Commons-Logging
-* `@Log4j` for Log4J
-* `@Slf4j` for SLF4J
-
-Here\u2019s a sample usage of the @Log transformation:
-
-[source,groovy]
-----------------------------------
-import groovy.util.logging.*
-
-@Log
-class Car {
-    Car() {
-        log.info 'Car constructed'
-    }
-}
-
-def c = new Car()
-----------------------------------
-
-You can change the name of the logger by specifying a different name,
-for instance with `@Log('myLoggerName')`.
-
-Another particularity of these logger AST transformations is that they
-take care of wrapping and safe-guarding logger calls with the usual
-`isSomeLevelEnabled()` calls. So when you write
-`log.info 'Car constructed'`, the generated code is actually equivalent
-to:
-
-[source,groovy]
----------------------------------
-if (log.isLoggable(Level.INFO)) {
-    log.info 'Car constructed'
-}
----------------------------------
-
-[[Groovy18releasenotes-Field]]
-=== @Field
-
-When defining variables in a script, those variables are actually local
-to the script\u2019s run method, so they are not accessible from other
-methods of the script. A usual approach to that problem has been to
-store variables in the binding, by not def\u2019ining those variables and by
-just assigning them a value. Fortunately, the `@Field` transformation
-provides a better alternative: by annotating your variables in your
-script with this annotation, the annotated variable will become a
-private field of the script class.
-
-More concretely, you\u2019ll be able to do as follows:
-
-[source,groovy]
----------------------------
-@Field List awe = [1, 2, 3]
-def awesum() { awe.sum() }
-assert awesum() == 6
----------------------------
-
-[[Groovy18releasenotes-PackageScopeenhancements]]
-=== @PackageScope enhancements
-
-The @PackageScope annotation can be placed on classes, methods or fields
-and is used for turning off Groovy\u2019s visibility conventions and
-reverting back to Java conventions. This ability is usually only needed
-when using 3rd party libraries which rely on the package scope
-visibility. When adding the `@PackageScope` annotation to a field,
-Groovy will assign package scope access to the field rather than
-automatically treating it as a property (and adding setters/getters).
-Annotating a class or method with `@PackageScope` will cause Groovy to
-revert to Java\u2019s convention of leaving the class/method as package
-scoped rather than automatically promoting it to public scope. The class
-variant can also take one or more parameters to allow nested setting of
-visibility of attributes within the class - see the Javadoc for more
-details. Recent releases of Groovy 1.7 have had a more limited version
-of this annotation.
-
-[[Groovy18releasenotes-AutoClone]]
-=== @AutoClone
-
-The `@AutoClone` annotation is placed on classes which you want to be
-`Cloneable`. The annotation instructs the compiler to execute an AST
-transformation which adds a public `clone()` method and adds `Cloneable`
-to the classes implements list of interfaces. Because the JVM doesn\u2019t
-have a one-size-fits-all cloning strategy, several customizations exist
-for the cloning implementation:
-
-* By default, the `clone()` method will call `super.clone()` before
-calling `clone()` on each `Cloneable` property of the class. Example
-usage:
-
-[source,groovy]
----------------------------------
-import groovy.transform.AutoClone
-
-@AutoClone
-class Person {
-    String first, last
-    List favItems
-    Date since
-}
----------------------------------
-
-Which will create a class of the following form:
-
-[source,groovy]
--------------------------------------------------------------
-class Person implements Cloneable {
-    ...
-    public Object clone() throws CloneNotSupportedException {
-        Object result = super.clone()
-        result.favItems = favItems.clone()
-        result.since = since.clone()
-        return result
-    }
-    ...
-}
--------------------------------------------------------------
-
-
-* Another popular cloning strategy is known as the copy constructor
-pattern. If any of your fields are `final` and `Cloneable` you should
-set `style=COPY_CONSTRUCTOR` which will then use the copy constructor
-pattern.
-* As a final alternative, if your class already implements the
-`Serializable` or `Externalizable` interface, you might like to set
-`style=SERIALIZATION` which will then use serialization to do the
-cloning.
-
-See the Javadoc for `AutoClone` for further details.
-
-[[Groovy18releasenotes-AutoExternalizable]]
-=== @AutoExternalizable
-
-The `@AutoExternalizable` class annotation is used to assist in the
-creation of `Externalizable` classes. The annotation instructs the
-compiler to execute an AST transformation which adds `writeExternal()`
-and `readExternal()` methods to a class and adds `Externalizable` to the
-interfaces which the class implements. The `writeExternal()` method
-writes each property (or field) for the class while the `readExternal()`
-method will read each one back in the same order. Properties or fields
-marked as `transient` are ignored. Example usage:
-
-[source,groovy]
--------------------------
-import groovy.transform.*
-
-@AutoExternalize
-class Person {
-    String first, last
-    List favItems
-    Date since
-}
--------------------------
-
-Which will create a class of the following form:
-
-[source,groovy]
--------------------------------------------------------------
-class Person implements Externalizable {
-    ...
-    void writeExternal(ObjectOutput out) throws IOException {
-        out.writeObject(first)
-        out.writeObject(last)
-        out.writeObject(favItems)
-        out.writeObject(since)
-    }
-
-    void readExternal(ObjectInput oin) {
-        first = oin.readObject()
-        last = oin.readObject()
-        favItems = oin.readObject()
-        since = oin.readObject()
-    }
-    ...
-}
--------------------------------------------------------------
-
-[[Groovy18releasenotes-Controllingtheexecutionofyourcode]]
-=== Controlling the execution of your code
-
-When integrating user-provided Groovy scripts and classes in your Java
-application, you may be worried about code that would eat all your CPU
-with infinite loops, or that call methods like `System.exit(0)` (for the
-latter, check the section on compiler customizers, and particularly the
-`SecureASTCustomizer`). It would be interesting to have a wait to
-control the execution of that Groovy code, to be able to interrupt its
-execution when the thread is interrupted, when a certain duration has
-elapsed, or when a certain condition is met (lack of resources, etc).
-
-Groovy 1.8 introduces three transformations for those purposes, as we
-shall see in the following sections. By default, the three
-transformations add some checks in at the beginning of each method body,
-and each closure body, to check whether a condition of interruption is
-met or not.
-
-Note that those transformations are local (triggered by an annotation).
-If you want to apply them transparently, so that the annotation doesn\u2019t
-show up, I encourage you to have a look at the
-`ASTTransformationCustomizer` explained at the end of this article.
-
-C�dric Champeau, our most recent Groovy committer, who implemented those
-features, has a
-http://www.jroller.com/melix/entry/upcoming_groovy_goodness_automatic_thread[very
-nice blog post] covering those code interruption transformations.
-
-[[Groovy18releasenotes-ThreadInterrupt]]
-==== @ThreadInterrupt
-
-You don\u2019t need to write checks in your scripts for whether the current
-thread of execution has been interrupted or not, by default, the
-transformation will add those checks for you for scripts and classes, at
-the beginning of each method body and closure body:
-
-[source,groovy]
----------------------------------------
-@ThreadInterrupt
-import groovy.transform.ThreadInterrupt
-
-while (true) {
-    // eat lots of CPU
-}
----------------------------------------
-
-You can specify a `checkOnMethodStart` annotation parameter (defaults to
-true) to customize where checks are added by the transformation (adds an
-interrupt check by default as the first statement of a method body). And
-you can also specify the `applyToAllClasses` annotation parameter
-(default to true) if you want to specify whether only the current class
-or script should have this interruption logic applied or not.
-
-[[Groovy18releasenotes-TimedInterrupt]]
-==== @TimedInterrupt
-
-With `@TimedInterrupt`, you can interrupt the script after a certain
-amount of time:
-
-[source,groovy]
---------------------------------------
-@TimedInterrupt(10)
-import groovy.transform.TimedInterrupt
-
-while (true) {
-    // eat lots of CPU
-}
---------------------------------------
-
-In addition to the previous annotation parameters we mentioned for
-`@ThreadInterrupt`, you should specify `value`, the amount of time to
-wait, and `unit` (defaulting to `TimeUnit.SECONDS`) to specify the unit
-of time to be used.
-
-[[Groovy18releasenotes-ConditionalInterrupt]]
-==== @ConditionalInterrupt
-
-An example of `@ConditionalInterrupt` which leverages the closure
-annotation parameter feature, and the `@Field` transformation as well:
-
-[source,groovy]
---------------------------------------------
-@ConditionalInterrupt({ counter++ > 2 })
-import groovy.transform.ConditionalInterrupt
-import groovy.transform.Field
-
-@Field int counter = 0
-
-100.times {
-    println 'executing script method...'
-}
---------------------------------------------
-
-You can imagine defining any kind of condition: on counters, on resource
-availability, on resource usage, and more.
-
-[[Groovy18releasenotes-ToString]]
-=== @ToString
-
-Provides your classes with a default `toString()` method which prints
-out the values of the class\u2019 properties (and optionally the property
-names and optionally fields). A basic example is here:
-
-[source,groovy]
------------------------------------------
-import groovy.transform.ToString
-
-@ToString
-class Person {
-    String name
-    int age
-}
-
-println new Person(name: 'Pete', age: 15)
-// => Person(Pete, 15)
------------------------------------------
-
-And here\u2019s another example using a few more options:
-
-[source,groovy]
-----------------------------------------------------
-@ToString(includeNames = true, includeFields = true)
-class Coord {
-    int x, y
-    private z = 0
-}
-println new Coord(x:20, y:5)
-// => Coord(x:20, y:5, z:0)
-----------------------------------------------------
-
-[[Groovy18releasenotes-EqualsAndHashCode]]
-=== @EqualsAndHashCode
-
-Provides your classes with `equals()` and `hashCode()` methods based on
-the values of the class\u2019 properties (and optionally fields and
-optionally super class values for `equals()` and `hashCode()`).
-
-[source,groovy]
------------------------------------------
-import groovy.transform.EqualsAndHashCode
-
-@EqualsAndHashCode
-class Coord {
-    int x, y
-}
-
-def c1 = new Coord(x:20, y:5)
-def c2 = new Coord(x:20, y:5)
-
-assert c1 == c2
-assert c1.hashCode() == c2.hashCode()
------------------------------------------
-
-[[Groovy18releasenotes-TupleConstructor]]
-=== @TupleConstructor
-
-Provides a tuple (ordered) constructor. For POGOs (plain old Groovy
-objects), this will be in addition to Groovy\u2019s default `named-arg`
-constructor.
-
-[source,groovy]
----------------------------------------------------------
-import groovy.transform.TupleConstructor
-
-@TupleConstructor
-class Person {
-    String name
-    int age
-}
-
-def p1 = new Person(name: 'Pete', age: 15) // map-based
-def p2 = new Person('Pete', 15)            // tuple-based
-
-assert p1.name == p2.name
-assert p1.age == p2.age
----------------------------------------------------------
-
-[[Groovy18releasenotes-Canonical]]
-=== @Canonical
-
-Allows you to combine `@ToString`, `@EqualsAndHashCode` and
-`@TupleConstructor`. For those familiar with Groovy\u2019s `@Immutable`
-transform, this provides similar features but for mutable objects.
-
-[source,groovy]
---------------------------------------------
-import groovy.transform.Canonical
-
-@Canonical
-class Person {
-    String name
-    int age
-}
-
-def p1 = new Person(name: 'Pete', age: 15)
-def p2 = new Person('Paul', 15)
-
-p2.name = 'Pete'
-println "${p1.equals(p2)} $p1 $p2"
-// => true Person(Pete, 15) Person(Pete, 15)
---------------------------------------------
-
-By default, `@Canonical` gives you vanilla versions for each of the
-combined annotations. If you want to use any of the special features
-that the individual annotations give you, simply include the individual
-annotation as well.
-
-[source,groovy]
------------------------------------------
-import groovy.transform.*
-
-@Canonical
-@ToString(includeNames = true)
-class Person {
-    String name
-    int age
-}
-
-def p = new Person(name: 'Pete', age: 15)
-println p
-// => Person(name:Pete, age:15)
------------------------------------------
-
-You will find a great
-http://prystash.blogspot.com/2011/04/groovy-18-playing-with-new-canonical.html[write-up
-on @Canonical, @ToString, @EqualsAndHashCode and @TupleConstructor] on
-John Prystash\u2019s weblog.
-
-[[Groovy18releasenotes-InheritConstructors]]
-=== @InheritConstructors
-
-Sometimes, when you want to subclass certain classes, you also need to
-override all the constructors of the parent, even if only to call the
-super constructor. Such a case happens for instance when you define your
-own exceptions, you want your exceptions to also have the constructors
-taking messages and throwable as parameters. But instead of writing this
-kind of boilerplate code each time for your exceptions:
-
-[source,groovy]
---------------------------------------------------------------
-class CustomException extends Exception {
-    CustomException() { super() }
-    CustomException(String msg) { super(msg) }
-    CustomException(String msg, Throwable t) { super(msg, t) }
-    CustomException(Throwable t) { super(t) }
-}
---------------------------------------------------------------
-
-Simply use the @InheritConstructors transformation which takes care of
-overriding the base constructors for you:
-
-[source,groovy]
-------------------------------------------
-import groovy.transform.*
-
-@InheritConstructors
-class CustomException extends Exception {}
-------------------------------------------
-
-[[Groovy18releasenotes-WithReadLockandWithWriteLock]]
-=== @WithReadLock and @WithWriteLock
-
-Those two transformations, combined together, simplify the usage of
-`java.util.concurrent.locks.ReentrantReadWriteLock`, are safer to use
-than the `synchronized` keyword, and improve upon the `@Synchronized`
-transformation with a more granular locking.
-
-More concretely, with an example, the following:
-
-[source,groovy]
-------------------------------------------------------------
-import groovy.transform.*
-
-class ResourceProvider {
-    private final Map<String, String> data = new HashMap<>()
-
-    @WithReadLock
-    String getResource(String key) {
-        return data.get(key)
-    }
-
-    @WithWriteLock
-    void refresh() {
-        //reload the resources into memory
-    }
-}
-------------------------------------------------------------
-
-Will generate code as follows:
-
-[source,groovy]
------------------------------------------------------------------------------
-import java.util.concurrent.locks.ReentrantReadWriteLock
-import java.util.concurrent.locks.ReadWriteLock
-
-class ResourceProvider {
-    private final ReadWriteLock $reentrantlock = new ReentrantReadWriteLock()
-    private final Map<String, String> data = new HashMap<String, String>()
-
-    String getResource(String key) {
-        $reentrantlock.readLock().lock()
-        try {
-            return data.get(key)
-        } finally {
-            $reentrantlock.readLock().unlock()
-        }
-    }
-
-    void refresh() throws Exception {
-        $reentrantlock.writeLock().lock()
-        try {
-            //reload the resources into memory
-        } finally {
-            $reentrantlock.writeLock().unlock()
-        }
-    }
-}
------------------------------------------------------------------------------
-
-[[Groovy18releasenotes-ListenerList]]
-=== @ListenerList
-
-If you annotate a Collection type field with @ListenerList, it generates
-everything that is needed to follow the bean event pattern. This is kind
-of an EventType independent version of what @Bindable is for
-PropertyChangeEvents.
-
-This example shows the most basic usage of the @ListenerList annotation.
-The easiest way to use this annotation is to annotate a field of type
-List and give the List a generic type. In this example we use a List of
-type MyListener. MyListener is a one method interface that takes a
-MyEvent as a parameter. The following code is some sample source code
-showing the simplest scenario.
-
-[source,groovy]
------------------------------------------
-interface MyListener {
-    void eventOccurred(MyEvent event)
-}
-
-class MyEvent {
-    def source
-    String message
-
-    MyEvent(def source, String message) {
-        this.source = source
-        this.message = message
-    }
-}
-class MyBeanClass {
-    @ListenerList
-    List<MyListener> listeners
-}
------------------------------------------
-
-* + addMyListener(MyListener) : void - This method is created based on
-the generic type of your annotated List field. The name and parameter
-type is are based on the List field\u2019s generic parameter.
-* + removeMyListener(MyListener) : void- This method is created based on
-the generic type of your annotated List field. The name and parameter
-type is are based on the List field\u2019s generic parameter.
-* + getMyListeners() : MyListener[] - This method is created based on
-the generic type of your annotated List field.The name is the plural
-form of the List field\u2019s generic parameter, and the return type is an
-array of the generic parameter.
-* + fireEventOccurred(MyEvent) : void - This method is created based on
-the type that the List\u2019s generic type points to. In this case,
-MyListener is a one method interface with an eventOccurred(MyEvent)
-method. The method name is fire[MethodName of the interface] and the
-parameter is the parameter list from the interface. A fireX method will
-be generated for each public method in the target class, including
-overloaded methods.�
-
-[[Groovy18releasenotes-AlignmentswithJDK7]]
-== Alignments with JDK 7
-
-Groovy 1.9 will be the version which will align as much as possible with
-the upcoming JDK 7, so beyond those aspects already covered in Groovy
-(like strings in switch and others), most of those `Project Coin`
-proposals will be in 1.9, except the `diamond operator` which was
-added in 1.8, as explained in the following paragraph.
-
-[[Groovy18releasenotes-Diamondoperator]]
-=== Diamond operator
-
-Java 7 will introduce the `diamond` operator in generics type
-information, so that you can avoid the usual repetition of the
-parameterized types. Groovy decided to adopt the notation before JDK 7
-is actually released. So instead of writing:
-
-[source,groovy]
---------------------------------------------------------
-List<List<String>> list1 = new ArrayList<List<String>>()
---------------------------------------------------------
-
-You can _omit_ the parameterized types and just use the pointy
-brackets, which now look like a diamond:
-
-[source,groovy]
---------------------------------------------
-List<List<String>> list1 = new ArrayList<>()
---------------------------------------------
-
-[[Groovy18releasenotes-NewDGMmethods]]
-== New DGM methods
-
-* count Closure variants
-
-[source,groovy]
----------------------------------------------
-def isEven = { it % 2 == 0 }
-assert [2,4,2,1,3,5,2,4,3].count(isEven) == 5
----------------------------------------------
-
-* countBy
-
-[source,groovy]
-----------------------------------------------------------------------
-assert [0:2, 1:3] == [1,2,3,4,5].countBy{ it % 2 }
-assert [(true):2, (false):4] == 'Groovy'.toList().countBy{ it == 'o' }
-----------------------------------------------------------------------
-
-* plus variants specifying a starting index
-
-[source,groovy]
--------------------------------------------------------
-assert [10, 20].plus(1, 'a', 'b') == [10, 'a', 'b', 20]
--------------------------------------------------------
-
-* equals for Sets and Maps now do flexible numeric comparisons (on
-values for Maps)
-
-[source,groovy]
-----------------------------------------
-assert [1L, 2.0] as Set == [1, 2] as Set
-assert [a:2, b:3] == [a:2L, b:3.0]
-----------------------------------------
-
-* toSet for primitive arrays, Strings and Collections
-
-[source,groovy]
------------------------------------------------------------
-assert [1, 2, 2, 2, 3].toSet() == [1, 2, 3] as Set
-assert 'groovy'.toSet() == ['v', 'g', 'r', 'o', 'y'] as Set
------------------------------------------------------------
-
-* min / max methods for maps taking closures +
- (also available in Groovy 1.7)
-
-[source,groovy]
-----------------------------------------------
-def map = [a: 1, bbb: 4, cc: 5, dddd: 2]
-
-assert map.max { it.key.size() }.key == 'dddd'
-assert map.min { it.value }.value == 1
-----------------------------------------------
-
-* map withDefault\{} +
- Oftentimes, when using a map, for example for counting the frequency of
-words in a document, you need to check that a certain key exists, before
-doing something with the associating value (like incrementing it).
-Nothing really complex, but we could improve upon that with a new
-method, called `withDefault`. So instead of writing code like below:
-
-[source,groovy]
----------------------------------------------------
-def words = "one two two three three three".split()
-def freq = [:]
-words.each {
-    if (it in freq)
-        freq[it] += 1
-    else
-        freq[it] = 1
-}
----------------------------------------------------
-
-Thanks to the new method (also backported to 1.7), you can write the
-example as follows:
-
-[source,groovy]
----------------------------------------------------
-def words = "one two two three three three".split()
-def freq = [:].withDefault { k -> 0 }
-words.each {
-        freq[it] += 1
-}
----------------------------------------------------
-
-[[Groovy18releasenotes-Miscellaneous]]
-== Miscellaneous
-
-[[Groovy18releasenotes-Slashystrings]]
-=== Slashy strings
-
-Slashy strings are now multi-line:
-
-[source,groovy]
------------------------------------
-def poem = /
-to be
-or
-not to be
-/
-
-assert poem.readLines().size() == 4
------------------------------------
-
-This is particularly useful for multi-line regexs when using the regex
-free-spacing comment style (though you would still need to escape
-slashes):
-
-[source,groovy]
--------------------------------------------------------------------------------------------
-// match yyyy-mm-dd from this or previous century
-def dateRegex = /(?x)     # enable whitespace and comments
-((?:19|20)\d\d)           # year (group 1) (non-capture alternation for century)
--                         # seperator
-(0[1-9]|1[012])           # month (group 2)
--                         # seperator
-(0[1-9]|[12][0-9]|3[01])  # day (group 3)
-/
-
-assert '04/04/1988' == '1988-04-04'.find(dateRegex) { all, y, m, d -> [d, m, y].join('/') }
--------------------------------------------------------------------------------------------
-
-[[Groovy18releasenotes-Dollarslashystrings]]
-=== Dollar slashy strings
-
-A new string notation has been introduced: the `dollar slashy` string.
-This is a multi-line GString similar to the slashy string, but with
-slightly different escaping rules. You are no longer required to escape
-slash (with a preceding backslash) but you can use `$$' to escape a `$'
-or `$/' to escape a slash if needed. Here\u2019s an example of its usage:
-
-[source,groovy]
-------------------------
-def name = "Guillaume"
-def date = "April, 21st"
-
-def dollarSlashy = $/
-    Hello $name,
-    today we're ${date}
-    $ dollar-sign
-    $$ dollar-sign
-    \ backslash
-    / slash
-    $/ slash
-/$
-
-println dollarSlashy
-------------------------
-
-This form of string is typically used when you wish to embed content
-that may naturally contains slashes or backslashes and you don\u2019t want to
-have to rework the content to include all of the necessary escaping.
-Some examples are shown below:
-
-* Embedded XML fragments with backslashes:
-
-[source,groovy]
--------------------------------------------
-def tic = 'tic'
-
-def xml = $/
-  <xml>
-  $tic\tac
-  </xml>
-/$
-
-assert "\n<xml>\ntic\\tac\n</xml>\n" == xml
--------------------------------------------
-
-Better than a normal (now multi-line) slashy string where you would have
-to escape the slashes or a triple quote (``'''``) GString where you would
-have to escape the backslashes.
-
-* Or windows pathnames containing a slash at the end:
-
-[source,groovy]
-----------------------
-def dir = $/C:\temp\/$
-----------------------
-
-Previously, triple quote (`'''`) GString required extra escaping, and
-the above sequence was illegal for a normal slashy string. Now, ugly
-workarounds are not needed.
-
-* Embedding multi-line regexs when using the regex free-spacing comment
-style (particularly ones which contain slashes):
-
-[source,groovy]
--------------------------------------------------------------------------------------------
-// match yyyy-mm-dd from current or previous century
-def dateRegex = $/(?x)    # enable whitespace and comments
-((?:19|20)\d\d)           # year (group 1) (non-capture alternation for century)
-[- /.]                    # seperator
-(0[1-9]|1[012])           # month (group 2)
-[- /.]                    # seperator
-(0[1-9]|[12][0-9]|3[01])  # day (group 3)
-/$
-
-assert '04/04/1988' == '1988-04-04'.find(dateRegex) { all, y, m, d -> [d, m, y].join('/') }
-assert '10-08-1989' == '1989/08/10'.find(dateRegex) { all, y, m, d -> [d, m, y].join('-') }
--------------------------------------------------------------------------------------------
-
-So, you can cut and paste most PERL regex examples without further
-escaping.
-
-* Or Strings which are themselves Groovy code fragments containing
-slashes:
-
-[source,groovy]
------------------------------------
-def alphabet = ('a'..'z').join('')
-def code = $/
-    def normal = '\b\t\n\r'
-    def slashy = /\b\t\n\r/
-    assert '$alphabet'.size() == 26
-    assert normal.size() == 4
-    assert slashy.size() == 8
-/$
-println code
-Eval.me(code)
------------------------------------
-
-Again allowing you to cut and paste many slashy string Groovy examples
-and have them embedded within dollar slashy strings without further
-escaping.
-
-[[Groovy18releasenotes-Compilationcustomizers]]
-=== Compilation customizers
-
-The compilation of Groovy code can be configured through the
-`CompilerConfiguration` class, for example for setting the encoding of
-your sources, the base script class, the recompilation parameters, etc).
-`CompilerConfiguration` now has a new option for setting _compilation
-customizers_ (belonging to the `org.codehaus.groovy.control.customizers`
-package). Those customizers allow to customize the compilation process
-in three ways:
-
-* adding default imports with the `ImportCustomizer`: so you don\u2019t have
-to always add the same imports all over again
-* securing your scripts and classes with the `SecureASTCustomizer`: by
-allowing/disallowing certain classes, or special AST nodes (Abstract
-Syntax Tree), filtering imports, you can secure your scripts to avoid
-malicious code or code that would go beyond the limits of what the code
-should be allowed to do.
-* applying AST transformations with the `ASTTransformationCustomizer`:
-lets you apply transformations to all the class nodes of your
-compilation unit.
-
-For example, if you want to apply the @Log transformation to all the
-classes and scripts, you could do:
-
-[source,groovy]
------------------------------------------------------------------------------
-import org.codehaus.groovy.control.CompilerConfiguration
-import org.codehaus.groovy.control.customizers.*
-import groovy.util.logging.Log
-
-def configuration = new CompilerConfiguration()
-configuration.addCompilationCustomizers(new ASTTransformationCustomizer(Log))
-
-def shell = new GroovyShell(configuration)
-shell.evaluate("""
-    class Car {
-        Car() {
-            log.info 'Car constructed'
-        }
-    }
-
-    log.info 'Constructing a car'
-    def c = new Car()
-""")
------------------------------------------------------------------------------
-
-This will log the two messages, the one from the script, and the one
-from the Car class constructor, through java.util.logging. No need to
-apply the @Log transformation manually to both the script and the class:
-the transformation is applied to all class nodes transparently. This
-mechanism can also be used for adding global transformations, just for
-the classes and scripts that you compile, instead of those global
-transformations being applied to all scripts and classes globally.
-
-If you want to add some default imports (single import, static import,
-star import, star static imports, and also aliased imports and static
-imports), you can use the import customizer as follows:
-
-[source,groovy]
---------------------------------------------------------
-import org.codehaus.groovy.control.CompilerConfiguration
-import org.codehaus.groovy.control.customizers.*
-
-def configuration = new CompilerConfiguration()
-def custo = new ImportCustomizer()
-custo.addStaticStar(Math.name)
-configuration.addCompilationCustomizers(custo)
-
-def shell = new GroovyShell(configuration)
-shell.evaluate("""
-    cos PI/3
-""")
---------------------------------------------------------
-
-When you want to evaluate Math expressions, you don\u2019t need anymore to
-use the `import static java.lang.Math.*` star static import to import
-all the Math constants and static functions.
-
-[[Groovy18releasenotes-GStringtoEnumcoercion]]
-=== (G)String to Enum coercion
-
-Given a String or a GString, you can coerce it to Enum values bearing
-the same name, as the sample below presents:
-
-[source,groovy]
------------------------------
-enum Color {
-    red, green, blue
-}
-
-// coercion with as
-def r = "red" as Color
-
-// implicit coercion
-Color b = "blue"
-
-// with GStrings too
-def g = "${'green'}" as Color
------------------------------
-
-[[Groovy18releasenotes-MapssupportisCase]]
-=== Maps support isCase()
-
-Maps now support `isCase()`, so you can use maps in your switch/case
-statements, for instance:
-
-[source,groovy]
-----------------------------------------------
-def m = [a: 1, b: 2]
-def val = 'a'
-
-switch (val) {
-    case m: "key in map"; break
-    // equivalent to // case { val in m }: ...
-    default: "not in map"
-}
-----------------------------------------------
-
-[[Groovy18releasenotes-GrapeGrabImprovements]]
-=== Grape/Grab Improvements
-
-[[Groovy18releasenotes-ShorternotationforGrabResolver]]
-==== Shorter notation for @GrabResolver
-
-When you need to specify a special grab resolver, for when the artifacts
-you need are not stored in Maven central, you could use:
-
-[source,groovy]
-----------------------------------------------------------------------
-@GrabResolver(name = 'restlet.org', root = 'http://maven.restlet.org')
-@Grab('org.restlet:org.restlet:2.0.6')
-import org.restlet.Restlet
-----------------------------------------------------------------------
-
-Groovy 1.8 adds a shorter syntax as well:
-
-[source,groovy]
------------------------------------------
-@GrabResolver('http://maven.restlet.org')
-@Grab('org.restlet:org.restlet:2.0.6')
-import org.restlet.Restlet
------------------------------------------
-
-[[Groovy18releasenotes-CompactformforoptionalGrabattributes]]
-==== Compact form for optional Grab attributes
-
-The `@Grab` annotation has numerous options. For example, to download
-the Apache commons-io library (where you wanted to set the `transitive`
-and `force` attributes - not strictly needed for this example but see
-the Grab or Ivy documentation for details on what those attributes do)
-you could use a grab statement similar to below:
-
-[source,groovy]
----------------------------------------------------------------------------------------------
-@Grab(group='commons-io', module='commons-io', version='2.0.1', transitive=false, force=true)
----------------------------------------------------------------------------------------------
-
-The compact form for grab which allows the artifact information to be
-represented as a string now supports specifying additional attributes.
-As an example, the following script will download the commons-io jar and
-the corresponding javadoc jar before using one of the commons-io
-methods.
-
-[source,groovy]
-----------------------------------------------------------------
-@Grab('commons-io:commons-io:2.0.1;transitive=false;force=true')
-@Grab('commons-io:commons-io:2.0.1;classifier=javadoc')
-import static org.apache.commons.io.FileSystemUtils.*
-assert freeSpaceKb() > 0
-----------------------------------------------------------------
-
-[[Groovy18releasenotes-Sqlimprovements]]
-=== Sql improvements
-
-The `eachRow` and `rows` methods in the `groovy.sql.Sql` class now
-support paging. Here\u2019s an example:
-
-[source,groovy]
----------------------------------------------------
-sql.eachRow('select * from PROJECT', 2, 2) { row ->
-  println "${row.name.padRight(10)} ($row.url)"
-}
----------------------------------------------------
-
-Which will start at the second row and return a maximum of 2 rows.
-Here\u2019s an example result from a database containing numerous projects
-with their URLs:
-
-----------------------------------------
-Grails     (http://grails.org)
-Griffon    (http://griffon-framework.org)
-----------------------------------------
-
-[[Groovy18releasenotes-StoringASTnodemetadata]]
-=== Storing AST node metadata
-
-When developing AST transformations, and particularly when using a
-visitor to navigate the AST nodes, it is sometimes tricky to keep track
-of information as you visit the tree, or if a combination of transforms
-need to be sharing some context. The `ASTNode` base class features 4
-methods to store node metadata:
-
-* `public Object getNodeMetaData(Object key)`
-* `public void copyNodeMetaData(ASTNode other)`
-* `public void setNodeMetaData(Object key, Object value)`
-* `public void removeNodeMetaData(Object key)`
-
-[[Groovy18releasenotes-AbilitytocustomizetheGroovyDoctemplates]]
-=== Ability to customize the GroovyDoc templates
-
-GroovyDoc uses hard-coded templates to create the JavaDoc for your
-Groovy classes. Three templates are used: top-level templates, a
-package-level template, a class template. If you want to customize these
-templates, you can subclass the `Groovydoc` Ant task and override the
-`getDocTemplates()`, `getPackageTemplates()`, and `getClassTemplates()`
-methods pointing at your own templates. Then you can use your custom
-GroovyDoc Ant task in lieu of Groovy\u2019s original one.


[09/20] groovy-user-site git commit: move content to asf-site branch

Posted by pa...@apache.org.
http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/js/vendor/jquery-1.10.2.min.js
----------------------------------------------------------------------
diff --git a/site/src/site/assets/js/vendor/jquery-1.10.2.min.js b/site/src/site/assets/js/vendor/jquery-1.10.2.min.js
deleted file mode 100644
index da41706..0000000
--- a/site/src/site/assets/js/vendor/jquery-1.10.2.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
-//@ sourceMappingURL=jquery-1.10.2.min.map
-*/
-(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;
 if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){retur
 n x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.ran
 dom()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);fo
 r(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t)
 {e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length
 =i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply
 (e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<
 <31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?
 :\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.ge
 tElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t
 .parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r
 .attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e
 ):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.
 call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);wh
 ile(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at
 .getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0]
 .slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(
 m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(
 e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"
 option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);retu
 rn e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!
 0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e
 .length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]
 ||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached
 =ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n
 ,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:functi
 on(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},
 when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.
 getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.c
 hecked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.d
 isplay="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offs
 etWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t
-}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,
 embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeDat
 a(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:functi
 on(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.le
 ngth>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while
 (i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+=""
 :x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:funct
 ion(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!=
 =t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r
 )?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","c
 ontentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g
 =y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.
 test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i
 )){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.
 isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t
 =r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.tar
 get?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n
 ){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i
 ))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e)
 {this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof
  e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))
 /,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.len
 gth>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},sibl
 ings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!=
 =n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Ct=/^(?:checkbox|radio)$/i,Nt=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","
 </map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domMani
 p(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhites
 pace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++
 )i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.
 data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagNa
 me!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.
 nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=
 x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle);
-u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,
 $t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style
 &&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||
 x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.widt
 h=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i
 ||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity||(x.cssHooks.opacity={get:function(e,t){return I
 t.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr.filters.visible=function(e){return!x.expr.filters.hidde
 n(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=function(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURI
 Component(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return
  this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x
 .ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("<div>").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text
 /javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),
 this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn+
 +)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.if
 Modified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[
 0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPr
 efilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(
 o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.usernam
 e,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){v
 ar n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.dur
 ation,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[
 r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&
 (f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(th
 is),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};ret
 urn a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});functi

<TRUNCATED>

[16/20] groovy-user-site git commit: move content to asf-site branch

Posted by pa...@apache.org.
http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/css/style.css
----------------------------------------------------------------------
diff --git a/site/src/site/assets/css/style.css b/site/src/site/assets/css/style.css
deleted file mode 100644
index 1fcf3ec..0000000
--- a/site/src/site/assets/css/style.css
+++ /dev/null
@@ -1,1098 +0,0 @@
-@import url(http://fonts.googleapis.com/css?family=Source+Code+Pro:500,700|Open+Sans:400,600);
-
-html, code, kbd, pre, samp {
-    -ms-text-size-adjust: 100%;
-    -webkit-text-size-adjust: 100%;
-}
-
-html, body {
-    height: 100%;
-    -webkit-overflow-scrolling: touch;
-}
-
-p, ul, pre, h1, h2, h3, h4, h5, h6, h7, h8 {
-    margin: 1em 0;
-}
-
-p {
-    display: block;
-}
-
-h1, h2, h3, h4, h5, h6, h7, h8 {
-    font-weight: bold;
-}
-
-pre {
-    border-radius: 0;
-    border: 0 !important;;
-    font-size: 14px;
-}
-
-/* customizing bootstrap nav bar */
-.navbar {
-    margin-bottom: 0px;
-    padding-right: 110px;
-}
-.navbar .container {
-    margin: 10px;
-}
-.navbar-default a {
-    color: #c0d3db !important;
-    font-size: 18px !important;
-    text-decoration: none;
-}
-.navbar-default, .navbar-static-top {
-    background-color: #286b86;
-    border: 0px;
-}
-a.navbar-brand {
-    color: white !important;
-    font-size: 19px !important;
-}
-.navbar-default .navbar-nav>.active>a, .navbar-default .navbar-nav>.active>a:hover, .navbar-default .navbar-nav>.active>a:focus {
-    background-color: transparent;
-    color: white;
-}
-.navbar-nav>li.active>a {
-    color: white !important;
-}
-.navbar-nav>li>a:hover {
-    background-color: #db4800 !important;
-    color: white !important;
-}
-.navbar-nav>li>a {
-    color: #c0d3db;
-}
-.navbar-default .navbar-toggle .icon-bar {
-    background-color: white;
-}
-.navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus {
-    background-color: #db4800;
-}
-
-@media (min-width: 768px) {
-    .container {
-        width: auto;
-    }
-}
-
-/* specific to index.html */
-
-@media (max-width: 999px) {
-    #fork-me {
-        display: none;
-    }
-
-    .navbar {
-        padding-right: 0px;
-    }
-}
-
-#band {
-    background: #4298b8 no-repeat 50% 30%;
-    height: 400px;
-}
-
-.svg #band {
-    background-image: url(../img/groovy-logo-white.svg);
-}
-
-.no-svg #band {
-    background-image: url(../img/groovy-logo-white.png);
-}
-
-@media (max-width: 1010px) {
-    #band {
-        background-size: 90%;
-        height: 300px;
-    }
-}
-
-@media (max-width: 690px) {
-    #band {
-        background-size: 80%;
-        height: 200px;
-    }
-}
-
-@media (max-width: 475px) {
-    #band {
-        background-size: 70%;
-        height: 100px;
-    }
-}
-
-#they-use-groovy {
-    width: 100%;
-    height: 450px;
-    background-color: #db4800;
-    margin-bottom: 20px;
-    text-align: center;
-}
-
-#they-use-groovy .item {
-    text-align: center;
-    color: white;
-}
-
-#logos-holder {
-    display: inline-block;
-    padding: 0px;
-    margin: 0px;
-    text-align: center;
-}
-
-#logos-holder .logo {
-    padding: 0px;
-    margin: 0px;
-    display: inline-block;
-    width: 100px;
-    height: 80px;
-    background-size: 95%;
-    background-repeat: no-repeat;
-    background-position: 50% 50%;
-}
-
-@media (min-width: 330px) {
-    #logos-holder {
-        width: 320px;
-    }
-
-    #they-use-groovy {
-        height: 1130px;
-    }
-}
-
-@media (min-width: 475px) {
-    #logos-holder {
-        width: 420px;
-    }
-
-    #they-use-groovy {
-        height: 900px;
-    }
-}
-
-@media (min-width: 690px) {
-    #logos-holder {
-        width: 630px;
-    }
-
-    #they-use-groovy {
-        height: 600px;
-    }
-}
-
-@media (min-width: 1010px) {
-    #logos-holder {
-        width: 940px;
-    }
-
-    #they-use-groovy {
-        height: 450px;
-    }
-}
-
-.centered {
-    text-align: center;
-}
-
-.event-img {
-    margin: -20px -20px 20px -20px;
-    background-repeat: no-repeat;
-    background-position: 50% top;
-    height: 180px;
-}
-
-.event-logo {
-    height: 180px;
-    float: right;
-}
-
-@media (max-width: 1010px) {
-    .event-logo {
-        height: ;
-    }
-
-}
-
-@media (max-width: 690px) {
-    .event-logo {
-        height: 60px;
-    }}
-
-@media (max-width: 475px) {
-    .event-logo {
-        display: none;
-    }
-}
-
-article .content time {
-    font-weight: bold;
-}
-
-.doc-embed {
-    border: 0;
-    width: 100%;
-    min-height: 100%;
-}
-
-.download-table {
-    width: 100%;
-    text-align: center;
-}
-
-.download-table td {
-    width: 20%;
-}
-
-#mc-embedded-subscribe {
-    width: 200px;
-    font-weight: bold;
-}
-
-#mc-embedded-subscribe:hover {
-    background-color: #F2F2F2;
-    font-weight: bold;
-}
-
-#footer .colset-3-footer .col-1 h1, #footer .colset-3-footer .col-2 h1, #footer .colset-3-footer .col-3 h1 {
-    font-size: 15px !important;
-}
-
-.anchor-link:before {
-    content: ' # ';
-    color: lightgray;
-}
-
-.anchor-link:hover:before {
-    color: orange;
-}
-
-code, kbd, pre, samp {
-    font-family: "Source Code Pro", "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace;
-}
-
-#contribute-btn {
-    position: absolute;
-    right: 15px;
-}
-
-@media (max-width: 767px) {
-    #contribute-btn {
-        width: 100%;
-        position: relative;
-        margin-top: 30px;
-        right: 0px;
-    }
-
-    #contribute-btn button {
-        width: 100%;
-        right: 15px;
-    }
-}
-
-@media (min-width: 1200px) {
-    #contribute-btn {
-        top: 25px;
-        right: 15px;
-    }
-}
-
-#big-download-button {
-    float: right;
-    font-size: 30px;
-    padding: 15px;
-    margin: 10px 0px 10px 20px;
-    border: 2px solid #db4800;
-    border-radius: 6px;
-    background-color: #db4800;
-    color: white;
-}
-
-#big-download-button:hover {
-    background-color: #e6e6e6;
-    color: #db4800;
-}
-
-.colset-3-footer .col-1, .colset-3-footer .col-2, .colset-3-footer .col-3 {
-    min-width: 180px;
-    float: left;
-}
-
-.colset-3-footer .col-3 {
-    min-width: 220px;
-}
-
-.colset-3-article article {
-    float: left;
-}
-
-.col1, .col2 {
-    min-width: 300px;
-    float: left;
-}
-
-@media (max-width: 988px) {
-    .col1, .col2 {
-        width: 98% !important;
-        max-width: 98%;
-    }
-
-    .colset-3-article article {
-        width: 98% !important;
-        max-width: 98%;
-    }
-}
-
-body, html {
-    font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
-    padding: 0;
-    margin: 0;
-    background: #FFF;
-    color: #343437;
-    line-height: 25px;
-    font-weight: normal;
-    font-size: 14px;
-}
-
-a {
-    color: #db4800;
-    text-decoration: underline;
-}
-
-a:hover {
-    color: #db4800;
-    text-decoration: none
-}
-
-h1 {
-    font-size: 2.125em;
-    margin: .67em 0
-}
-
-h2 {
-    font-size: 1.6875em;
-    font-weight: bold;
-}
-
-h3, #toctitle, .sidebarblock > .content > .title {
-    font-size: 1.375em;
-    font-weight: bold;
-}
-
-h4 {
-    font-size: 1.125em;
-    font-weight: bold;
-}
-
-h5 {
-    font-size: 1.125em;
-    font-weight: bold;
-    color: #db4800;
-}
-
-h6 {
-    font-size: 1.08em;
-    font-weight: normal;
-    color: #db4800;
-}
-
-h7 {
-    font-weight: bold;
-    color: #245f78;
-}
-
-h8 {
-    color: #245f78;
-}
-
-#footer {
-    background: #f2f2f2;
-    text-align: center;
-    font-size: 14px;
-    padding: 20px 0 30px;
-    margin-top: 30px;
-    color: #AAA
-}
-
-#footer .col-right {
-    float: right;
-    width: 300px;
-    text-align: right;
-    padding-top: 10px
-}
-
-#footer .colset-3-footer {
-    color: #222;
-    font-size: 14px
-}
-
-#footer .colset-3-footer:before, #footer .colset-3-footer:after {
-    content: " ";
-    display: table
-}
-
-#footer .colset-3-footer:after {
-    clear: both
-}
-
-#footer .colset-3-footer .col-1, #footer .colset-3-footer .col-2, #footer .colset-3-footer .col-3 {
-    width: 18%;
-    padding: 20px 0 30px;
-    padding-right: 3%;
-    float: left;
-    text-align: left
-}
-
-#footer .colset-3-footer .col-3 {
-    width: 24%;
-}
-
-#footer .colset-3-footer .col-1 h1, #footer .colset-3-footer .col-2 h1, #footer .colset-3-footer .col-3 h1 {
-    font-weight: 600;
-    font-size: 15px;
-    line-height: 30px;
-    margin: 0
-}
-
-#footer .colset-3-footer .col-1 ul, #footer .colset-3-footer .col-2 ul, #footer .colset-3-footer .col-3 ul {
-    list-style-type: none;
-    margin: 0;
-    padding: 0
-}
-
-#footer .colset-3-footer .col-1 ul li, #footer .colset-3-footer .col-2 ul li, #footer .colset-3-footer .col-3 ul li {
-    margin: 0;
-    padding: 0
-}
-
-#footer .colset-3-footer .col-1 ul li a, #footer .colset-3-footer .col-2 ul li a, #footer .colset-3-footer .col-3 ul li a {
-    color: #343437;
-    text-decoration: none
-}
-
-#footer .colset-3-footer .col-1 ul li a:hover, #footer .colset-3-footer .col-2 ul li a:hover, #footer .colset-3-footer .col-3 ul li a:hover {
-    text-decoration: underline
-}
-
-#footer .second a {
-    color: #db4800
-}
-
-.row {
-    position: relative;
-    max-width: 1400px;
-    margin: 0 auto;
-    padding: 0 5%
-}
-
-.row:before, .row:after {
-    content: " ";
-    display: table
-}
-
-.row:after {
-    clear: both
-}
-
-.band {
-    background: #4298b8;
-    height: 400px;
-    margin-bottom: 20px;
-    color: white
-}
-
-.band .item {
-    text-align: center
-}
-
-.band .item:before, .band .item:after {
-    content: " ";
-    display: table
-}
-
-.band .item:after {
-    clear: both
-}
-
-#content {
-    background: white
-}
-
-#content .row:before, #content .row:after {
-    content: " ";
-    display: table
-}
-
-#content .row:after {
-    clear: both
-}
-
-#content .row > h1 {
-    font-size: 34px;
-    line-height: 40px;
-    font-weight: 200;
-    text-align: center;
-    margin: 0;
-    padding: 20px 0
-}
-
-#content hr.row, #content hr.divider {
-    border: 0 none;
-    border-top: 1px solid #EEE;
-    margin: 0 5%;
-    margin-top: 40px
-}
-
-#content hr.divider {
-    margin: 0;
-    margin-top: 40px;
-    margin-bottom: 30px
-}
-
-#content .colset-2-its:before, #content .colset-2-its:after {
-    content: " ";
-    display: table
-}
-
-#content .colset-2-its:after {
-    clear: both
-}
-
-#content .colset-2-its > h1 {
-    padding-bottom: 15px;
-    margin-top: 15px;
-    margin-bottom: 0
-}
-
-#content .colset-2-its > p {
-    margin-top: 0;
-    padding-bottom: 5px;
-    text-align: center;
-    color: #222;
-    font-size: 15px
-}
-
-#content .colset-2-its .col1, #content .colset-2-its .col2 {
-    float: left;
-    width: 48%;
-    padding-right: 1%;
-    padding-left: 1%;
-}
-
-#content .colset-2-its .col2 {
-    padding-left: 1%;
-    padding-right: 1%;
-}
-
-#content .colset-2-its article {
-    padding: 10px 0
-}
-
-#content .colset-2-its article:before, #content .colset-2-its article:after {
-    content: " ";
-    display: table
-}
-
-#content .colset-2-its article:after {
-    clear: both
-}
-
-#content .colset-2-its article .icon {
-    display: block;
-    width: 80px;
-    height: 80px;
-    background-image: url(/img/icons-colset-2-its.png);
-    float: left;
-    margin-top: 12px;
-    margin-right: 15px
-}
-
-#content .colset-2-its article .icon.icon-1 {
-    background-position: 0 0
-}
-
-#content .colset-2-its article .icon.icon-2 {
-    background-position: 0 -80px
-}
-
-#content .colset-2-its article .icon.icon-3 {
-    background-position: 0 -160px
-}
-
-#content .colset-2-its article .icon.icon-4 {
-    background-position: 0 -240px
-}
-
-#content .colset-2-its article .icon.icon-5 {
-    background-position: 0 -320px
-}
-
-#content .colset-2-its article .icon.icon-6 {
-    background-position: 0 -400px
-}
-
-#content .colset-2-its article > h1 {
-    font-size: 19px;
-    font-weight: 600;
-    margin-bottom: 0;
-    line-height: 30px
-}
-
-#content .colset-2-its article p {
-    margin: 0;
-    line-height: 24px;
-    font-size: 14px
-}
-
-#content .colset-3-article {
-    padding-top: 30px;
-    padding-bottom: 30px
-}
-
-#content .colset-3-article > h1 {
-    font-size: 24px
-}
-
-#content .colset-3-article div.content {
-    padding: 20px;
-    padding-bottom: 5px
-}
-
-#content .colset-3-article article {
-    float: left;
-    width: 29%;
-    margin: 10px 2%;
-    -webkit-box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1);
-    box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1)
-}
-
-#content .colset-3-article article .img {
-    margin: -20px -20px 20px -20px;
-    background-position: center top;
-    height: 180px
-}
-
-#content .colset-3-article article h1 {
-    margin: 0;
-    font-size: 18px;
-    font-weight: normal;
-    line-height: 25px
-}
-
-#content .colset-3-article article h1 a {
-    color: #343437;
-    cursor: pointer
-}
-
-#content .colset-3-article article h1 a:hover {
-    color: #46a5c8
-}
-
-#content .colset-3-article article p, #content .colset-3-article article time {
-    font-size: 13px
-}
-
-#content .colset-3-article article .author a {
-    color: #db4800
-}
-
-#content .colset-3-article article:first-child {
-    padding-left: 0
-}
-
-#content .colset-3-article article:last-child {
-    padding-right: 0
-}
-
-#content.page-1 .row {
-    padding-top: 10px;
-    padding-bottom: 10px
-}
-
-#content.page-1 .row h1 {
-    text-align: left;
-    font-size: 36px
-}
-
-#content.page-1 .row article {
-    font-size: 14px
-}
-
-#content.page-1 .row article .desc {
-    font-size: 16px
-}
-
-#content.page-1 .row article h1 {
-    margin: 0;
-    paddnig: 0;
-    text-align: left;
-    font-size: 26px
-}
-
-#content.page-1 .row article h2 {
-    margin: 0;
-    paddnig: 0
-}
-
-#content.page-1 .row article h3 {
-    font-weight: bold
-}
-
-#content.page-1 .row article pre {
-    display: block;
-    background: #f2f2f2;
-    padding: 12px 20px
-}
-
-ul.nav-sidebar {
-    margin: 0;
-    margin-top: 20px;
-    padding: 5px 0;
-    border: 1px solid #EEE;
-    list-style-type: none
-}
-
-ul.nav-sidebar li a {
-    display: block;
-    cursor: pointer;
-    padding: 5px 10px;
-    font-weight: 400;
-    text-decoration: none;
-    color: #343437
-}
-
-ul.nav-sidebar li.active a:hover, ul.nav-sidebar li a:hover {
-    color: white;
-    background-color: #db4800;
-}
-
-ul.nav-sidebar li.active a {
-    background-color: #f2f2f2
-}
-
-.table {
-    margin: 20px 0
-}
-
-.table thead tr th {
-    padding: 10px;
-    font-weight: normal;
-    font-size: 18px
-}
-
-.table tbody tr td {
-    vertical-align: top;
-    font-size: 12px;
-    padding: 10px;
-    border-top: 1px solid #EEE
-}
-
-*, *:after, *::before {
-    -moz-box-sizing: border-box;
-    box-sizing: border-box
-}
-
-body {
-    background: #444
-}
-
-html.noScroll {
-    overflow: hidden
-}
-
-html.noScroll body, html.noScroll .st-container, html.noScroll .st-pusher, html.noScroll .st-content {
-    overflow: hidden
-}
-
-html, body, .st-container, .st-pusher, .st-content {
-    overflow: auto
-}
-
-.sign-in-fa-icon:before {
-    font-family: FontAwesome;
-    content: '\f090';
-    padding-right: 10px;
-}
-
-#st-container {
-    height: 100%;
-}
-
-.st-content {
-    background: white
-}
-
-.st-content, .st-content-inner {
-    position: relative;
-    height: 100%;
-}
-
-.st-container {
-    position: relative;
-    overflow: hidden
-}
-
-.st-pusher {
-    position: relative;
-    left: 0;
-    z-index: 99;
-    height: 100%;
-    -webkit-transition: -webkit-transform .5s;
-    transition: transform .5s
-}
-
-.st-pusher::after {
-    position: absolute;
-    top: 0;
-    right: 0;
-    width: 0;
-    height: 0;
-    background: rgba(0, 0, 0, 0.3);
-    content: '';
-    opacity: 0;
-    -webkit-transition: opacity .5s, width .1s .5s, height .1s .5s;
-    transition: opacity .5s, width .1s .5s, height .1s .5s
-}
-
-.st-menu-open .st-pusher::after {
-    width: 100%;
-    height: 100%;
-    opacity: 1;
-    -webkit-transition: opacity .5s;
-    transition: opacity .5s
-}
-
-.st-menu {
-    position: fixed;
-    top: 0;
-    left: auto;
-    z-index: 100;
-    visibility: hidden;
-    width: 300px;
-    height: 100%;
-    background: #4298b8;
-    -webkit-transition: all .5s;
-    transition: all .5s;
-    right: -600px
-}
-
-.st-menu::after {
-    position: absolute;
-    top: 0;
-    right: 0;
-    width: 100%;
-    height: 100%;
-    background: rgba(0, 0, 0, 0.2);
-    content: '';
-    opacity: 1;
-    -webkit-transition: opacity .5s;
-    transition: opacity .5s
-}
-
-.st-menu-open .st-menu::after {
-    width: 0;
-    height: 0;
-    opacity: 0;
-    -webkit-transition: opacity .5s, width .1s .5s, height .1s .5s;
-    transition: opacity .5s, width .1s .5s, height .1s .5s
-}
-
-.st-menu ul {
-    margin: 0;
-    padding: 0;
-    list-style: none
-}
-
-.st-menu h2 {
-    margin: 0;
-    padding: 1em;
-    color: white;
-    text-shadow: 0 0 1px rgba(0, 0, 0, 0.1);
-    font-weight: 300;
-    font-size: 2em
-}
-
-.st-menu ul li {
-    display: block
-}
-
-.st-menu ul li a {
-    display: block;
-    position: relative;
-    padding: 1em 1em 1em 45px;
-    outline: 0;
-    box-shadow: inset 0 -1px rgba(0, 0, 0, 0.2);
-    color: #f3efe0;
-    text-shadow: 0 0 1px rgba(255, 255, 255, 0.1);
-    letter-spacing: 1px;
-    font-weight: 400;
-    text-decoration: none
-}
-
-.st-menu ul li a span.fa {
-    display: block;
-    position: absolute;
-    left: 12px;
-    top: 17px;
-    font-size: 20px;
-    width: 30px;
-    text-align: center
-}
-
-.st-menu ul li a span.fa.fa-tasks, .st-menu ul li a span.fa.fa-envelope {
-    top: 18px;
-    font-size: 18px
-}
-
-.st-menu ul li:first-child a {
-    box-shadow: inset 0 -1px rgba(0, 0, 0, 0.2), inset 0 1px rgba(0, 0, 0, 0.2)
-}
-
-.st-menu ul li a:hover {
-    background: rgba(0, 0, 0, 0.2);
-    box-shadow: inset 0 -1px rgba(0, 0, 0, 0);
-    color: #fff
-}
-
-.st-effect-9.st-container {
-    -webkit-perspective: 10000px;
-    perspective: 10000px
-}
-
-.st-effect-9 .st-pusher {
-    -webkit-transform-style: preserve-3d;
-    transform-style: preserve-3d
-}
-
-.st-effect-9.st-menu-open .st-pusher {
-    -webkit-transform: translate3d(0, 0, -300px);
-    transform: translate3d(0, 0, -300px)
-}
-
-.st-effect-9.st-menu {
-    right: -600px;
-    opacity: 1;
-    -webkit-transform: translate3d(-100%, 0, 0);
-    transform: translate3d(-100%, 0, 0)
-}
-
-.st-effect-9.st-menu-open .st-effect-9.st-menu {
-    visibility: visible;
-    right: -300px
-}
-
-.st-effect-9.st-menu::after {
-    display: none
-}
-
-/* Video from the learn page */
-.presentations {
-    margin-top: 30px;
-    margin-bottom: 30px;
-}
-
-.presentations img.screenshot {
-    float: left;
-    margin-right: 40px;
-    margin-top: 1em;
-    margin-bottom: 0px;
-    width: 300px;
-    height: auto;
-}
-
-.presentations .metadata {
-    display: table-cell;
-    min-width: 328px;
-}
-
-.presentations .title {
-    margin-top: 1em !important;
-    margin-bottom: 0.5em !important;
-}
-
-
-.presentations .speaker {
-    color: #245f78;
-    margin-bottom: 0.5em;
-}
-
-.presentations .summary {
-    line-height: 1.3;
-}
-
-.presentations .urls {
-}
-
-/* Courses from the Learn Page */
-.courses {
-    margin-top: 30px;
-    margin-bottom: 30px;
-}
-
-.courses img.screenshot {
-    float: left;
-    margin-right: 40px;
-    margin-top: 1em;
-    margin-bottom: 0px;
-    width: 300px;
-    height: auto;
-}
-
-.courses .metadata {
-    display: table-cell;
-    min-width: 328px;
-}
-
-.courses .title {
-    margin-top: 1em !important;
-    margin-bottom: 0.5em !important;
-}
-
-.courses .instructor {
-    color: #245f78;
-    margin-bottom: 0.5em;
-}
-
-.courses .description {
-    line-height: 1.3;
-}
-
-@media screen and (max-width: 767px) {
-    .presentations .img.screenshot, .video .metadata {
-        float: none;
-    }
-}
-
-#content #toc {
-    margin-bottom: 1.25em;
-    padding: 1.25em;
-    border-width: 0;
-    -webkit-border-radius: 4px;
-    border-radius: 4px;
-}
-
-#content #toc > :first-child {
-    margin-top: 0;
-}
-
-#content #toc > :last-child {
-    margin-bottom: 0;
-}
-
-#content #toc a {
-    text-decoration: none;
-}
-
-#content #toctitle {
-    font-weight: bold;
-    font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;
-    font-size: 1em;
-    padding-left: 0.125em;
-}
-
-#content #toc ul {
-    list-style-type: none;
-    padding-left: 0.2em;
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/fonts/FontAwesome.otf
----------------------------------------------------------------------
diff --git a/site/src/site/assets/fonts/FontAwesome.otf b/site/src/site/assets/fonts/FontAwesome.otf
deleted file mode 100644
index 3461e3f..0000000
Binary files a/site/src/site/assets/fonts/FontAwesome.otf and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/fonts/fontawesome-webfont.eot
----------------------------------------------------------------------
diff --git a/site/src/site/assets/fonts/fontawesome-webfont.eot b/site/src/site/assets/fonts/fontawesome-webfont.eot
deleted file mode 100644
index 6cfd566..0000000
Binary files a/site/src/site/assets/fonts/fontawesome-webfont.eot and /dev/null differ


[03/20] groovy-user-site git commit: move content to asf-site branch

Posted by pa...@apache.org.
http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/releasenotes/groovy-2.0.adoc
----------------------------------------------------------------------
diff --git a/site/src/site/releasenotes/groovy-2.0.adoc b/site/src/site/releasenotes/groovy-2.0.adoc
deleted file mode 100644
index 0cbf311..0000000
--- a/site/src/site/releasenotes/groovy-2.0.adoc
+++ /dev/null
@@ -1,886 +0,0 @@
-The newly released Groovy 2.0 brings key static features to the language
-with static type checking and static compilation, adopts JDK 7 related
-improvements with Project Coin syntax enhancements and the support of
-the new `invokedynamic` JVM instruction, and becomes more modular
-than before. In this article, we\u2019re going to look into those new
-features in more detail.
-
-[[Groovy20releasenotes-Astaticthemeforadynamiclanguage]]
-== A static theme for a dynamic language
-
-[[Groovy20releasenotes-Statictypechecking]]
-=== Static type checking
-
-Groovy, by nature, is and will always be a dynamic language. However,
-Groovy is often used as a "Java scripting language", or as a "better
-Java" (ie. a Java with less boilerplate and more power features). A lot
-of Java developers actually use and embed Groovy in their Java
-applications as an extension language, to author more expressive
-business rules, to further customize the application for different
-customers, etc. For such Java-oriented use cases, developers don\u2019t need
-all the dynamic capabilities offered by the language, and they usually
-expect the same kind of feedback from the Groovy compiler as the one
-given by javac. In particular, they want to get compilation errors
-(rather than runtime errors) for things like typos on variable or method
-names, incorrect type assignments and the like. That\u2019s why Groovy 2
-features static type checking support.** +
-**
-
-[[Groovy20releasenotes-Spottingobvioustypos]]
-==== Spotting obvious typos
-
-The static type checker is built using Groovy\u2019s existing powerful AST
-(Abstract Syntax Tree) transformation mechanisms but for those not
-familiar with these mechanisms you can think of it as an optional
-compiler plugin triggered through an annotation. Being an optional
-feature, you are not forced to use it if you don\u2019t need it. To trigger
-static type checking, just use the @TypeChecked annotation on a method
-or on a class to turn on checking at your desired level of granularity.
-Let\u2019s see that in action with a first example:
-
-[source,groovy]
--------------------------------------------------
-import groovy.transform.TypeChecked
-
-void someMethod() {}
-
-@TypeChecked
-void test() {
-    // compilation error:
-    // cannot find matching method sommeeMethod()
-    sommeeMethod()
-
-    def name = "Marion"
-    // compilation error:
-    // the variable naaammme is undeclared
-    println naaammme
-}
--------------------------------------------------
-
-We annotated the test() method with the @TypeChecked annotation, which
-instructs the Groovy compiler to run the static type checking for that
-particular method at compilation time. We\u2019re trying to call someMethod()
-with some obvious typos, and to print the name variable again with
-another typo, and the compiler will throw two compilation errors because
-respectively, the method and variable are not found or declared.** +
-**
-
-[[Groovy20releasenotes-Checkyourassignmentsandreturnvalues]]
-==== Check your assignments and return values
-
-The static type checker also verifies that the return types and values
-of your assignments are coherent:
-
-[source,groovy]
------------------------------------------
-import groovy.transform.TypeChecked
-
-@TypeChecked
-Date test() {
-    // compilation error:
-    // cannot assign value of Date
-    // to variable of type int
-    int object = new Date()
-
-    String[] letters = ['a', 'b', 'c']
-
-    // compilation error:
-    // cannot assign value of type String
-    // to variable of type Date
-    Date aDateVariable = letters[0]
-
-    // compilation error:
-    // cannot return value of type String
-    // on method returning type Date
-    return "today"
-}
------------------------------------------
-
-In this example, the compiler will complain about the fact you cannot
-assign a Date in an int variable, nor can you return a String instead of
-a Date value specified in the method signature. The compilation error
-from the middle of the script is also interesting, as not only does it
-complain of the wrong assignment, but also because it shows type
-inference at play, because the type checker, of course, knows that
-letters[0] is of type String, because we\u2019re dealing with an array of
-Strings.** +
-**
-
-[[Groovy20releasenotes-Moreontypeinference]]
-==== More on type inference
-
-Since we\u2019re mentioning type inference, let\u2019s have a look at some other
-occurrences of it. We mentioned the type checker tracks the return types
-and values:
-
-[source,groovy]
---------------------------------------------
-import groovy.transform.TypeChecked
-
-@TypeChecked
-int method() {
-   if (true) {
-       // compilation error:
-       // cannot return value of type String
-       // on method returning type int
-       'String'
-   } else {
-       42
-   }
-}�
---------------------------------------------
-
-Given a method returning �a value of primitive type int, the type
-checker is able to also check the values returned from different
-constructs like if / else branches, try / catch blocks or switch / case
-blocks. Here, in our example, one branch of the if / else blocks tries
-to return a String value instead of a primitive int, and the compiler
-complains about it.** +
-**
-
-[[Groovy20releasenotes-Commontypeconversionsstillallowed]]
-==== Common type conversions still allowed
-
-The static type checker, however, won\u2019t complain for certain automatic
-type conversions that Groovy supports. For instance, for method
-signatures returning String, boolean or Class, Groovy converts return
-values to these types automatically:
-
-[source,groovy]
-----------------------------------------------------------
-import groovy.transform.TypeChecked
-
-@TypeChecked
-boolean booleanMethod() {
-   "non empty strings are evaluated to true"
-}
-
-assert booleanMethod() == true
-
-@TypeChecked
-String stringMethod() {
-   // StringBuilder converted to String calling toString()
-   new StringBuilder() << "non empty string"
-}
-
-assert stringMethod() instanceof String
-
-@TypeChecked
-Class classMethod() {
-   // the java.util.List class will be returned
-   "java.util.List"
-}
-
-assert classMethod() == List�
-----------------------------------------------------------
-
-The static type checker is also clever enough to do type inference:
-
-[source,groovy]
-------------------------------------------------
-import groovy.transform.TypeChecked
-
-@TypeChecked
-void method() {
-   def name = "  Guillaume  "
-
-   // String type inferred (even inside GString)
-   println "NAME = ${name.toUpperCase()}"
-
-   // Groovy GDK method support
-   // (GDK operator overloading too)
-   println name.trim()
-
-   int[] numbers = [1, 2, 3]
-   // Element n is an int
-   for (int n in numbers) {
-       println n
-   }
-}
-------------------------------------------------
-
-Although the name variable was defined with def, the type checker
-understands it is of type String. Then, when this variable is used in
-the interpolated string, it knows it can call String\u2019s toUpperCase()
-method, or the trim() method later one, which is a method added by the
-Groovy Development Kit decorating the String class. Last, when iterating
-over the elements of an array of primitive ints, it also understands
-that an element of that array is obviously an int.** +
-**
-
-[[Groovy20releasenotes-Mixingdynamicfeaturesandstaticallytypedmethods]]
-==== Mixing dynamic features and statically typed methods
-
-An important aspect to have in mind is that using the static type
-checking facility restricts what you are allowed to use in Groovy. Most
-runtime dynamic features are not allowed, as they can\u2019t be statically
-type checked at compilation time. So adding a new method at runtime
-through the type\u2019s metaclasses is not allowed. But when you need to use
-some particular dynamic feature, like Groovy\u2019s builders, you can opt out
-of static type checking should you wish to.  +
-� +
-The @TypeChecked annotation can be put at the class level or at the
-method level. So if you want to have a whole class type checked, put the
-annotation on the class, and if you want only a few methods type
-checked, put the annotation on just those methods. Also, if you want to
-have everything type checked, except a specific method, you can annotate
-the latter with @TypeChecked(TypeCheckingMode.SKIP) \u2014 or
-@TypeChecked(SKIP) for short, if you statically import the associated
-enum. Let\u2019s illustrate the situation with the following script, where
-the greeting() method is type checked, whereas the generateMarkup()
-method is not:
-
-[source,groovy]
------------------------------------------------------------
-import groovy.transform.TypeChecked
-import groovy.xml.MarkupBuilder
-
-// this method and its code are type checked
-@TypeChecked
-String greeting(String name) {
-   generateMarkup(name.toUpperCase())
-}
-
-// this method isn't type checked
-// and you can use dynamic features like the markup builder
-String generateMarkup(String name) {
-   def sw = new StringWriter()
-   new MarkupBuilder(sw).html {
-       body {
-           div name
-       }
-   }
-   sw.toString()
-}
-
-assert greeting("C�dric").contains("C�DRIC")
------------------------------------------------------------
-
-[[Groovy20releasenotes-Typeinferenceandinstanceofchecks]]
-==== Type inference and instanceof checks
-
-Current production releases of Java don\u2019t support general type
-inference; hence we find today many places where code is often quite
-verbose and cluttered with boilerplate constructs. This obscures the
-intent of the code and without the support of powerful IDEs is also
-harder to write. This is the case with instanceof checks: You often
-check the class of a value with instanceof inside an if condition, and
-afterwards in the if block, you must still use casts to be able to use
-methods of the value at hand. In plain Groovy, as well as in the new
-static type checking mode, you can completely get rid of those casts.
-
-[source,groovy]
------------------------------------------------------
-import groovy.transform.TypeChecked
-import groovy.xml.MarkupBuilder
-
-@TypeChecked
-String test(Object val) {
-   if (val instanceof String) {
-       // unlike Java:
-       // return ((String)val).toUpperCase()
-       val.toUpperCase()
-   } else if (val instanceof Number) {
-       // unlike Java:
-       // return ((Number)val).intValue().multiply(2)
-       val.intValue() * 2
-   }
-}
-
-assert test('abc') == 'ABC'
-assert test(123)   == '246'
------------------------------------------------------
-
-In the above example, the static type checker knows that the val
-parameter is of type String inside the if block, and of type Number in
-the else if block, without requiring any cast.** +
-**
-
-[[Groovy20releasenotes-LowestUpperBound]]
-==== Lowest Upper Bound
-
-The static type checker goes a bit further in terms of type inference in
-the sense that it has a more granular understanding of the type of your
-objects. Consider the following code:
-
-[source,groovy]
-----------------------------------------------------------
-import groovy.transform.TypeChecked
-
-// inferred return type:
-// a list of numbers which are comparable and serializable
-@TypeChecked test() {
-   // an integer and a BigDecimal
-   return [1234, 3.14]
-}�
-----------------------------------------------------------
-
-In this example, we return, intuitively, a list of numbers: an Integer
-and a BigDecimal. But the static type checker computes what we call a
-"lowest upper bound", which is actually a list of numbers which are
-also serializable and comparable. It\u2019s not possible to denote that type
-with the standard Java type notation, but if we had some kind of
-intersection operator like an ampersand, it could look like List<Number
-& Serializable & Comparable>.** +
-**
-
-[[Groovy20releasenotes-Flowtyping]]
-==== Flow typing
-
-Although this is not really recommended as a good practice, sometimes
-developers use the same untyped variable to store values of different
-types. Look at this method body:
-
-[source,groovy]
------------------------------------------------------------
-import groovy.transform.TypeChecked
-
-@TypeChecked test() {
-   def var = 123             // inferred type is int
-   var = "123"               // assign var with a String
-
-   println var.toInteger()   // no problem, no need to cast
-
-   var = 123
-   println var.toUpperCase() // error, var is int!
-}�
------------------------------------------------------------
-
-The var variable is initialized with an int. Then, a String is assigned.
-The "flow typing" algorithm follows the flow of assignment and
-understands that the variable now holds a String, so the static type
-checker will be happy with the toInteger() method added by Groovy on top
-of String. Next, a number is put back in the var variable, but then,
-when calling toUpperCase(), the type checker will throw a compilation
-error, as there\u2019s no toUpperCase() method on Integer. +
-� +
-There are some special cases for the flow typing algorithm when a
-variable is shared with a closure which are interesting. What happens
-when a local variable is referenced in a closure inside a method where
-that variable is defined? Let\u2019s have a look at this example:
-
-[source,groovy]
--------------------------------------------------------
-import groovy.transform.TypeChecked
-
-@TypeChecked test() {
-   def var = "abc"
-   def cl = {
-       if (new Random().nextBoolean()) var = new Date()
-   }
-   cl()
-   var.toUpperCase() // compilation error!
-}�
--------------------------------------------------------
-
-The var local variable is assigned a String, but then, var might be
-assigned a Date if some random value is true. Typically, it\u2019s only at
-runtime that we really know if the condition in the if statement of the
-closure is made or not. Hence, at compile-time, there\u2019s no chance the
-compiler can know if var now contains a String or a Date. That\u2019s why the
-compiler will actually complain about the toUpperCase() call, as it is
-not able to infer that the variable contains a String or not. This
-example is certainly a bit contrived, but there are some more
-interesting cases:
-
-[source,groovy]
---------------------------------------------
-import groovy.transform.TypeChecked
-
-class A           { void foo() {} }
-class B extends A { void bar() {} }
-
-@TypeChecked test() {
-   def var = new A()
-   def cl = { var = new B() }
-   cl()
-   // var is at least an instance of A
-   // so we are allowed to call method foo()
-   var.foo()
-}�
---------------------------------------------
-
-In the test() method above, var is assigned an instance of A, and then
-an instance of B in the closure which is call afterwards, so we can at
-least infer that var is of type A. +
-� +
-All those checks added to the Groovy compiler are done at compile-time,
-but the generated bytecode is still the same dynamic code as usual \u2014 no
-changes in behavior at all.  +
-� +
-Since the compiler now knows a lot more about your program in terms of
-types, it opens up some interesting possibilities: what about compiling
-that type checked code statically? The obvious advantage will be that
-the generated bytecode will more closely resemble the bytecode created
-by the javac compiler itself, making statically compiled Groovy code as
-fast as plain Java, among other advantages. In the next section, we\u2019ll
-learn more about Groovy\u2019s static compilation.** +
-**
-
-[[Groovy20releasenotes-Staticcompilation]]
-=== Static compilation
-
-As we shall see in the following chapter about the JDK 7 alignments,
-Groovy 2.0 supports the new `invokedynamic` instruction of the JVM
-and its related APIs, facilitating the development of dynamic languages
-on the Java platform and bringing some additional performance to
-Groovy\u2019s dynamic calls. However, unfortunately shall I say, JDK 7 is not
-widely deployed in production at the time of this writing, so not
-everybody has the chance to run on the latest version. So developers
-looking for performance improvements would not see much changes in
-Groovy 2.0, if they aren\u2019t able to run on JDK 7. Luckily, the Groovy
-development team thought those developers could get interesting
-performance boost, among other advantages, by allowing type checked code
-to be compiled statically. +
-� +
-Without further ado, let\u2019s dive in and use the new @CompileStatic
-transform:
-
-[source,groovy]
--------------------------------------
-import groovy.transform.CompileStatic
-
-@CompileStatic
-int squarePlusOne(int num) {
-   num * num + 1
-}
-
-assert squarePlusOne(3) == 10�
--------------------------------------
-
-This time, instead of using @TypeChecked, use @CompileStatic, and your
-code will be statically compiled, and the bytecode generated here will
-look like javac\u2019s bytecode, running just as fast. Like the @TypeChecked
-annotation, @CompileStatic can annotate classes and methods, and
-@CompileStatic(SKIP) can bypass static compilation for a specific
-method, when its class is marked with @CompileStatic. +
-� +
-Another advantage of the javac-like bytecode generation is that the size
-of the bytecode for those annotated methods will be smaller than the
-usual bytecode generated by Groovy for dynamic methods, since to support
-Groovy\u2019s dynamic features, the bytecode in the dynamic case contains
-additional instructions to call into Groovy\u2019s runtime system. +
-� +
-Last but not least, static compilation can be used by framework or
-library code writers to help avoid adverse interactions when dynamic
-metaprogramming is in use in several parts of the codebase. The dynamic
-features available in languages like Groovy are what give developers
-incredible power and flexibility but if care is not taken, different
-assumptions can exist in different parts of the system with regards to
-what metaprogramming features are in play and this can have unintended
-consequences. As a slightly contrived example, consider what happens if
-you are using two different libraries, both of which add a similarly
-named but differently implemented method to one of your core classes.
-What behaviour is expected? Experienced users of dynamic languages will
-have seen this problem before and probably heard it referred to as
-"monkey patching". Being able to statically compile parts of your code
-base \u2014 those parts that don\u2019t need dynamic features \u2014 shields you from
-the effects of monkey patching, as the statically compiled code doesn\u2019t
-go through Groovy\u2019s dynamic runtime system. Although dynamic runtime
-aspects of the language are not allowed in a static compilation context,
-all the usual AST transformation mechanisms work just as well as before,
-since most AST transforms perform their magic at compilation time. +
-� +
-In terms of performance, Groovy\u2019s statically compiled code is usually
-more or less as fast as javac\u2019s. In the few micro-benchmarks the
-development team used, performance is identical in several cases, and
-sometimes it\u2019s slightly slower. +
-� +
-Historically, thanks to the transparent and seamless integration of Java
-and Groovy, we used to advise developers to optimize some hotspot
-routines in Java for further performance gains, but now, with this
-static compilation option, this is no longer the case, and people
-wishing to develop their projects in full Groovy can do so.** +
-**
-
-[[Groovy20releasenotes-TheJava7andJDK7theme]]
-== The Java 7 and JDK 7 theme
-
-The grammar of the Groovy programming language actually derives from the
-Java grammar itself, but obviously, Groovy provides additional nice
-shortcuts to make developers more productive. This familiarity of syntax
-for Java developers has always been a key selling point for the project
-and its wide adoption, thanks to a flat learning curve. And of course,
-we expect Groovy users and newcomers to also want to benefit from the
-few syntax refinements offered by Java 7 with its "Project Coin"
-additions. +
-� +
-Beyond the syntax aspects, JDK 7 also brings interesting novelties to
-its APIs, and for a first time in a long time, even a new bytecode
-instruction called `invoke dynamic`, which is geared towards helping
-implementors develop their dynamic languages more easily and benefit
-from more performance.** +
-**
-
-[[Groovy20releasenotes-ProjectCoinsyntaxenhancements]]
-=== Project Coin syntax enhancements
-
-Since day 1 (that was back in 2003 already!) Groovy has had several
-syntax enhancements and features on top of Java. One can think of
-closures, for example, but also the ability to put more than just
-discrete values in switch / case statements, where Java 7 only allows
-Strings in addition. So some of the Project Coin syntax enhancements,
-like Strings in switch, were already present in Groovy. However, some of
-the enhancements are new, such as binary literals, underscore in number
-literals, or the multi catch block, and Groovy 2 supports them. The sole
-omission from the Project Coin enhancements is the "try with
-resources" construct, for which Groovy already provides various
-alternatives through the rich API of the Groovy Development Kit.
-
-[[Groovy20releasenotes-Binaryliterals]]
-==== Binary literals
-
-In Java 6 and before, as well as in Groovy, numbers could be represented
-in decimal, octal and hexadecimal bases, and with Java 7 and Groovy 2,
-you can use a binary notation with the `0b` prefix:
-
-[source,groovy]
-------------------------------
-int x = 0b10101111
-assert x == 175
-
-byte aByte = 0b00100001
-assert aByte == 33
-
-int anInt = 0b1010000101000101
-assert anInt == 41285
-------------------------------
-
-[[Groovy20releasenotes-Underscoreinnumberliterals]]
-==== Underscore in number literals
-
-When writing long literal numbers, it\u2019s harder on the eye to figure out
-how some numbers are grouped together, for example with groups of
-thousands, of words, etc. By allowing you to place underscore in number
-literals, it\u2019s easier to spot those groups:
-
-[source,groovy]
---------------------------------------------------
-long creditCardNumber = 1234_5678_9012_3456L
-long socialSecurityNumbers = 999_99_9999L
-double monetaryAmount = 12_345_132.12
-long hexBytes = 0xFF_EC_DE_5E
-long hexWords = 0xFFEC_DE5E
-long maxLong = 0x7fff_ffff_ffff_ffffL
-long alsoMaxLong = 9_223_372_036_854_775_807L
-long bytes = 0b11010010_01101001_10010100_10010010
---------------------------------------------------
-
-[[Groovy20releasenotes-Multicatchblock]]
-==== Multicatch block
-
-When catching exceptions, we often replicate the catch block for two or
-more exceptions as we want to handle them in the same way. A workaround
-is either to factor out the commonalities in its own method, or in a
-more ugly fashion to have a catch-all approach by catching Exception, or
-worse, Throwable. With the multi catch block, we\u2019re able to define
-several exceptions to be catch and treated by the same catch block:
-
-[source,groovy]
------------------------------------------------
-try {
-   /* ... */
-} catch(IOException | NullPointerException e) {
-   /* one block to handle 2 exceptions */
-}
------------------------------------------------
-
-[[Groovy20releasenotes-InvokeDynamicsupport]]
-=== Invoke Dynamic support
-
-As we mentioned earlier in this article, JDK 7 came with a new bytecode
-instruction called `invokedynamic`, as well as with its associated
-APIs. Their goal is to help dynamic language implementors in their job
-of crafting their languages on top of the Java platform, by simplifying
-the wiring of dynamic method calls, by defining "call sites" where
-dynamic method call section can be cached, "method handles" as method
-pointers, "class values" to store any kind of metadata along class
-objects, and a few other things. One caveat though, despite promising
-performance improvements, `invokedynamic` hasn\u2019t yet fully been
-optimized inside the JVM, and doesn\u2019t yet always deliver the best
-performance possible, but update after update, the optimizations are
-coming. +
-� +
-Groovy brought its own implementation techniques, to speed up method
-selection and invocation with "call site caching", to store
-metaclasses (the dynamic runtime equivalent of classes) with its
-metaclass registry, to perform native primitive calculations as fast as
-Java, and much more. But with the advent of `invokedynamic`, we can
-rebase the implementation of Groovy on top of these APIs and this JVM
-bytecode instruction, to gain performance improvements and to simplify
-our code base. +
-� +
-If you\u2019re lucky to run on JDK 7, you\u2019ll be able to use a new version of
-the Groovy JARs which has been compiled with the `invokedynamic`
-support. Those JARs are easily recognizable as they use the `-indy`
-classifier in their names.**� +
-**
-
-[[Groovy20releasenotes-Enablinginvokedynamicsupport]]
-==== Enabling invoke dynamic support
-
-Using the `indy` JARs is not enough, however, to compile your Groovy
-code so that it leverages the `invokedynamic` support. For that,
-you\u2019ll have to use the \u2013indy flag when using the `groovyc` compiler or
-the `groovy` command. This also means that even if you\u2019re using the
-indy JARs, you can still target JDK 5 or 6 for compilation.  +
-� +
-Similarly, if you\u2019re using the groovyc Ant task for compiling your
-projects, you can also specify the indy attribute:
-
-[source,xml]
--------------------------------------------------------------
-...
-<taskdef name="groovyc"
-        classname="org.codehaus.groovy.ant.Groovyc"
-        classpathref="cp"/>
-...
-<groovyc srcdir="${srcDir}" destdir="${destDir}" indy="true">
-   <classpath>
-...
-   </classpath>
-</groovyc>
-...�
--------------------------------------------------------------
-
-The Groovy Eclipse Maven compiler plugin hasn\u2019t yet been updated with
-the support of Groovy 2.0 but this will be the case shortly. For GMaven
-plugin users, although it\u2019s possible to configure the plugin to use
-Groovy 2.0 already, there\u2019s currently no flag to enable the invoke
-dynamic support. Again, GMaven will also be updated soon in that
-regard. +
-� +
-When integrating Groovy in your Java applications, with GroovyShell, for
-example, you can also enable the invoke dynamic support by passing a
-CompilerConfiguration instance to the GroovyShell constructor on which
-you access and set the optimization options:
-
-[source,groovy]
------------------------------------------------------------
-CompilerConfiguration config = new CompilerConfiguration();
-config.getOptimizationOptions().put("indy", true);
-config.getOptimizationOptions().put("int", false);
-GroovyShell shell = new GroovyShell(config);�
------------------------------------------------------------
-
-As invokedynamic is supposed to be a full replacement to dynamic method
-dispatch, it is also necessary to disable the primitive optimizations
-which generate extra bytecode that is here to optimize edge cases. Even
-if it is in some cases slower than with primitive optimizations
-activated, future versions of the JVM will feature an improved JIT which
-will be capable of inlining most of the calls and remove unnecessary
-boxings.
-
-[[Groovy20releasenotes-Promisingperformanceimprovements]]
-==== Promising performance improvements
-
-In our testing, we noticed some interesting performance gains in some
-areas, whereas other programs could run slower than when not using the
-invoke dynamic support. The Groovy team has further performance
-improvements in the pipeline for Groovy 2.1 however, but we noticed the
-JVM isn\u2019t yet finely tuned and still has a long way to go to be fully
-optimized. But fortunately, upcoming JDK 7 updates (in particular update
-8) should already contain such improvements, so the situation can only
-improve. Furthermore, as invoke dynamic is used for the implementation
-of JDK 8 Lambdas, we can be sure more improvements are forthcoming.** +
-**
-
-[[Groovy20releasenotes-AmoremodularGroovy]]
-== A more modular Groovy
-
-We\u2019ll finish our journey through the new features of Groovy 2.0 by
-speaking about modularity. Just like Java, Groovy is not just a
-language, but it\u2019s also a set of APIs serving various purposes:
-templating, Swing UI building, Ant scripting, JMX integration, SQL
-access, servlet serving, and more. The Groovy deliverables were bundling
-all these features and APIs inside a single big JAR. However, not
-everybody needs everything at all times in their own applications: you
-might be interested in the template engine and the servlets if you\u2019re
-writing some web application, but you might only need the Swing builder
-when working on a rich desktop client program.**� +
-**
-
-[[Groovy20releasenotes-Groovymodules]]
-=== Groovy modules
-
-So the first goal of the modularity aspect of this release is to
-actually split the original Groovy JAR into smaller modules, smaller
-JARs. The core Groovy JAR is now twice as small, and we have the
-following feature modules available:** +
-� +
-**
-
-* Ant: for scripting Ant tasks for automating administration tasks
-* BSF: for integrating Groovy in your Java applications with the old
-Apache Bean Scripting Framework
-* Console: module containing the Groovy Swing console
-* GroovyDoc: for documenting your Groovy and Java classes
-* Groovysh: module corresponding to the Groovysh command-line shell
-* JMX: for exposing and consuming JMX beans
-* JSON: for producing and consuming JSON payloads
-* JSR-223: for integrating Groovy in your Java applications with the JDK
-6+ javax.scripting APIs
-* Servlet: for writing and serving Groovy script servlets and templates
-* SQL: for querying relational databases
-* Swing: for building Swing UIs
-* Templates: for using the template engine
-* Test: for some test support, like the GroovyTestCase, mocking, and
-more
-* TestNG: for writing TestNG tests in Groovy
-* XML: for producing and consuming XML documents
-
-With Groovy 2, you\u2019re now able to just pick up the modules you\u2019re
-interested in, rather than bringing everything on your classpath.
-However, we still provide the `all` JAR which contains everything, if
-you don\u2019t want to complicate your dependencies for just a few megabytes
-of saved space. We also provide those JARs compiled with the `invokedynamic`
-support as well, for those running on JDK 7.
-
-[[Groovy20releasenotes-Extensionmodules]]
-=== Extension modules
-
-The work on making Groovy more modular also yielded an interesting new
-feature: extension modules. By splitting Groovy into smaller modules, a
-mechanism for modules to contribute extension methods has been created.
-That way, extension modules can provide instance and static methods to
-other classes, including the ones from the JDK or third-party libraries.
-Groovy uses this mechanism to decorate classes from the JDK, to add new
-useful methods to classes like String, File, streams, and many more \u2014
-for example, a getText() method on URL allows you to retrieve the
-content of a remote URL through an HTTP get. Notice also that those
-extension methods in your modules are also understood by the static type
-checker and compiler. But let\u2019s now have a look at how you can add new
-methods to existing types.** +
-**
-
-[[Groovy20releasenotes-Contributinganinstancemethod]]
-==== Contributing an instance method
-
-To add new methods to an existing type, you\u2019ll have to create a helper
-class that will contain those methods. Inside that helper class, all the
-extension methods will actually be public (the default for Groovy but
-required if implementing in Java) and static (although they will be
-available on instances of that class). They will always take a first
-parameter which is actually the instance on which this method will be
-called. And then following parameters will be the parameters passed when
-calling the method. This is the same convention use for Groovy
-categories. +
-� +
-Say we want to add a greets() method on String, that would greet the
-name of the person passed in parameters, so that you could that method
-as follow:
-
-[source,groovy]
--------------------------------------------------------------
-assert "Guillaume".greets("Paul") == "Hi Paul, I'm Guillaume"
--------------------------------------------------------------
-
-To accomplish that, you will create a helper class with an extension
-method like so:
-
-[source,groovy]
----------------------------------------------------
-�
-package com.acme
-
-class MyExtension {
-   static String greets(String self, String name) {
-       "Hi ${name}, I'm ${self}"
-   }
-}
----------------------------------------------------
-
-[[Groovy20releasenotes-Contributingastaticmethod]]
-==== Contributing a static method
-
-Static extension methods are defined using the same mechanism, but have
-to be declared in a separate class. The extension module descriptor then
-determines whether the class provides instance or static methods. Let\u2019s
-add a new static method to Random to get a random integer between two
-values, you could proceed as in this class:
-
-[source,groovy]
----------------------------------------------------------------
-package com.acme
-
-class MyStaticExtension {
-   static String between(Random selfType, int start, int end) {
-       new Random().nextInt(end - start + 1) + start
-   }
-}�
----------------------------------------------------------------
-
-That way, you are able to use that extension method as follows:
-
-[source,groovy]
---------------------
-Random.between(3, 4)
---------------------
-
-[[Groovy20releasenotes-Extensionmoduledescriptor]]
-==== Extension module descriptor
-
-Once you\u2019ve coded your helper classes (in Groovy or even in Java)
-containing the extension methods, you need to create a descriptor for
-your module. You must create a file called
-org.codehaus.groovy.runtime.ExtensionModule in the META-INF/services
-directory of your module archive. Four essential fields can be defined,
-to tell the Groovy runtime about the name and version of your module, as
-well as to point at your helper classes for extension methods with a
-comma-separated list of class names. Here is what our final module
-descriptor looks like:
-
----------------------------------------------------
-moduleName = MyExtension
-moduleVersion = 1.0
-extensionClasses = com.acme.MyExtension
-staticExtensionClasses = com.acme.MyStaticExtension
----------------------------------------------------
-
-With this extension module descriptor on the classpath, you are now able
-to use those extension methods in your code, without needing an import
-or anything else, as those extension methods are automatically
-registered.** +
-**
-
-[[Groovy20releasenotes-Grabbinganextension]]
-==== Grabbing an extension
-
-With the @Grab annotation in your scripts, you can fetch dependencies
-from Maven repositories like Maven Central. With the addition of the
-@GrabResolver annotation, you can specify your own location for your
-dependencies as well. If you are "grabbing" an extension module
-dependency through this mechanism, the extension method will also be
-installed automatically. Ideally, for consistency, your module name and
-version should be coherent with the artifact id and version of your
-artifact.** +
-**
-
-[[Groovy20releasenotes-Summary]]
-== Summary
-
-Groovy is very popular among Java developers and offers them a mature
-platform and ecosystem for their application needs. But without resting
-still, the Groovy development team continues to further improve the
-language and its APIs to help its users increase their productivity on
-the Java platform.  +
-� +
-Groovy 2.0 responds to three key themes:** +
-**
-
-* More performance: with the support of JDK 7 Invoke Dynamic to speed up
-Groovy for those lucky to have JDK 7 already in production, but also
-with static compilation for JDK 5 and beyond for everyone, and
-particularly those ready to abandon some aspects of dynamicity to shield
-themselves from the reach of "monkey patching" and to gain the same
-speed as Java.
-* More Java friendliness: with the support of the Java 7 Project Coin
-enhancements to keep Groovy and Java as close syntax cousins as ever,
-and with the static type checker to have the same level of �feedback and
-type safety as provided by the javac compiler for developers using
-Groovy as a Java scripting language
-* More modularity: with a new level of modularity, Groovy opens the
-doors for smaller deliverables, for example for integration in mobile
-applications on Android, and allowing the Groovy APIs to grow and evolve
-with newer versions and newer extension modules, as well as allowing
-users to contribute extension methods to existing types.

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/releasenotes/groovy-2.1.adoc
----------------------------------------------------------------------
diff --git a/site/src/site/releasenotes/groovy-2.1.adoc b/site/src/site/releasenotes/groovy-2.1.adoc
deleted file mode 100644
index 187eb20..0000000
--- a/site/src/site/releasenotes/groovy-2.1.adoc
+++ /dev/null
@@ -1,963 +0,0 @@
-With this new 2.1 release, Groovy:
-
-* has *full support for the JDK 7 `invoke dynamic`* instruction and
-API,
-* goes beyond conventional static type checking capabilities with a
-*special annotation for closure delegate based Domain-Specific
-Languages* and *static type checker extensions*,
-* provides *additional compilation customization* options,
-* and features a *meta-annotation facility* for combining annotations
-elegantly.
-
-[[Groovy21releasenotes-Fullinvokedynamicsupport]]
-== Full invoke dynamic support
-
-With Groovy 2.0, we introduced support for JDK 7\u2019s `invoke dynamic`
-bytecode instruction and API to benefit from the dedicated support and
-performance improvements for dynamic languages starting with JDK
-7.�Groovy 2.1 brings�*full support for `invokedynamic`*�(aka
-`indy`),�completing the work introduced in 2.0.�
-
-In Groovy 2.0, most method calls were using the `invokedynamic`
-instruction, but there have been exceptions: constructor calls
-or�"spread calls" (where you pass arguments with the "spread
-operator"). Groovy 2.1 completes the implementation started in 2.0.
-Now, code compiled with the `invokedynamic` JAR on JDK 7 will not be
-using the old "call site caching" code which served us well for
-getting good performance for Groovy prior to JDK 7. If you are lucky
-enough to be using JDK 7 in production, be sure to use the Groovy 2.1
-`indy` JAR to benefit from the full `invokedynamic` support. The
-`indy` version is bundled with the binary download package and can be
-obtained via Maven (all JARs with `invokedynamic` support are
-postfixed with `-indy`).
-
-You can link:../indy.html[learn more about the invoke dynamic support].
-
-[[Groovy21releasenotes-GPars10]]
-== GPars 1.0
-
-Groovy 2.1\u2019s distribution�*bundles the recently released GPars 1.0*, the
-one-stop shop for all your concurrency needs. This new version comes
-with various enhancements in the asynchronous
-functions,�link:http://www.jroller.com/vaclav/entry/broken_promises[promises],
-parallel collections, actors, dataflow
-support,�link:http://www.jroller.com/vaclav/entry/gpars_actors_and_dataflow_for[Google App Engine support], etc.
-
-Be sure to check
-the�link:http://www.jroller.com/vaclav/entry/i_like_the_smell_of[release announcement]�and read the \u201cwhat\u2019s new section\u201d
-of the GPars user guide.
-You can also have a look at the
-detailed�link:https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318123&version=17007[JIRA release notes].
-
-[[Groovy21releasenotes-DelegatesToannotation]]
-== @DelegatesTo annotation
-
-Authoring Domain-Specific Languages (DSLs) has always been a sweet spot
-for Groovy, and the availability of closures and the malleable syntax of
-the language has allowed DSL implementors to build nice mini-languages
-like "builders", to represent configuration or hierarchical data.
-
-Thanks to the various delegation strategies of
-the�`groovy.lang.Closure`�class, a range of very powerful techniques can
-be used when building DSLs. Due to different implementation techniques,
-inferring type information within the DSL has not been straightforward.
-This is especially an issue when DSLs should have proper IDE support
-(e.g. code completion).
-
-The very popular and powerful�link:http://www.gradle.org[Gradle]�build
-automation system uses its own DSL for build script specifications. On
-the DSL implementation layer are various methods taking closures as
-arguments, and with special delegation strategies delegating to some
-other parameter passed to them. Providing good IDE support for Groovy
-DSLs \u2014 like the one in Gradle \u2014 has presented a few challenges. Hence
-the need for the�`@DelegatesTo`�annotation.
-
-Groovy 2.1 introduces the�*`@groovy.lang.DelegatesTo`�annotation*�as
-a�*documentation mechanism*�for DSL users and maintainers, as an�*IDE
-hint for providing better coding assistance*, and as additional
-information that can be�*taken into account by the static type checker
-and static compilation*�introduced in Groovy 2.0. Let\u2019s see that in
-action with some examples.
-
-A closure delegate based method usage might look like the following:
-
-[source,groovy]
-------------
-exec {
-    launch()
-}
-------------
-
-The�`exec()`�method takes a closure as parameter, and the
-actual�`launch()`�call inside that closure is delegated to some
-particular object (the closure delegate), instead of being dispatched to
-the enclosing class. The above code would only fail at runtime (not at
-compile-time!), as the�`launch()`�method can not be found in the closure
-context. In order to delegate method calls within the closure\u2019s code
-block to another object instance, we need to set the closure delegate.
-
-Setting a closure delegate is as easy as
-invoking�`Closure#setDelegate(Object)`:�
-
-[source,groovy]
--------------------------------
-void exec(Closure c) {
-    c.delegate = new Executor()
-    c()
-}
--------------------------------
-
-The delegate can be set to an arbitrary object instance (here, an
-instance of an�`Executor`�class that has a�`launch()`�method). When the
-delegate is set accordingly, we can execute the closure code.
-
-Note that usually, to avoid odd behavior if the closure is used in
-multiple threads, we tend to clone that closure.
-
-The problem with delegate objects are IDEs not knowing about them. Given
-our example, most IDEs will underline the�`launch()`�method as being an
-unknown method in this context.
-
-This is where�`@DelegatesTo`�comes into play. By adding
-the�`@DelegatesTo`�annotation to DSL methods like�`exec(Closure)`, IDEs
-get the actual delegate type and other meta-data.
-
-A future update might let GroovyDoc show the details about the
-annotation usage to help users know what methods they can call, what
-properties they can access, etc.
-
-Here\u2019s what your�`exec()`�method will look like with the annotation:
-
-[source,groovy]
----------------------------------------------
-void exec(@DelegatesTo(Executor) Closure c) {
-    c.delegate = new Executor()
-    c()
-}
----------------------------------------------
-
-Besides specifying the actual delegate type,�`@DelegatesTo`� can be used
-to hint at the actual resolve strategy. The resolve strategy determines
-the order in which non-closure method / property calls are looked up. In
-our example,�`Closure.DELEGATE_FIRST`�will be used. This indicates the
-closure will attempt to resolve against the given delegate object in
-first place, followed by the owner object:
-
-[source,groovy]
---------------------------------------------------------------------------------
-import static groovy.lang.Closure.*
-// ...
-void exec(@DelegatesTo(strategy = DELEGATE_FIRST, value = Executor) Closure c) {
-    c.delegate = new Executor()
-    c.resolveStrategy = DELEGATE_FIRST
-    c()
-}
---------------------------------------------------------------------------------
-
-IDE support is not the only reason to use�`@DelegatesTo`.�The�*static
-type checker and static compiler take the additional meta-data specified
-by the�@DelegatesTo�annotation into account*. If there is a typo in the
-closure code block, the type checker will complain. And if you use the
-static compilation capability introduced in Groovy 2.0, the calls will
-be compiled statically.
-
-Let\u2019s say we wouldn\u2019t call�`launch()`�but�`launchr()`�in the closure
-code block, we would get a message like:
-
-----------------------------------------------------------------------------------
-[Static type checking] - Cannot find matching method DelegatesToSamples#launchr().
-Please check if the declared type is right and if the method exists.
-----------------------------------------------------------------------------------
-
-*Static type checks for custom Domain-Specific Languages*�is a very
-convenient feature in Groovy 2.1!
-
-In addition, Groovy 2.1 features other abilities for even further type
-checking your DSLs, as you shall see in the following section.
-
-Before moving on, let\u2019s mention a few closing details
-about�`@DelegatesTo`.
-
-`@DelegatesTo`�allows to specify the receiver calls are delegated to.
-For instance, when a delegate calls a method or property on another
-method parameter. Imagine our�`exec()`�method taking
-the�`Executor`�argument instance as delegate:
-
-[source,groovy]
-----------------------------------------------------------
-void exec(Executor ex, @DelegatesTo(Executor) Closure c) {
-    c.delegate = ex
-    c()
-}
-----------------------------------------------------------
-
-In this example, the information is lost that the call is delegated to
-the�`ex`�parameter. Thanks to the�`@DelegatesTo.Target`�annotation we
-can specify�ex�as target for being the delegate object:
-
-[source,groovy]
---------------------------------------------------------------------
-void exec(@DelegatesTo.Target Executor ex, @DelegatesTo Closure c) {
-    c.delegate = ex
-    c()
-}
---------------------------------------------------------------------
-
-What if we had several�`Executor`�parameters, how would we differentiate
-which one we\u2019re targeting?
-
-[source,groovy]
-------------------------------------------------------
-void exec(
-    @DelegatesTo.Target('param1') Executor ex,
-    @DelegatesTo(target = 'param1') Closure c) { ... }
-------------------------------------------------------
-
-The delegation "target" can be specified with an arbitrary id. In the
-example above it is�`param1`.
-
-One last very nice little feature: if you are using static type
-checking, you can omit the type of the parameter
-and�`@DelegatesTo`�combined with "flow typing" (the ability of
-following the current type of an untyped variable) would still know if
-method calls are valid:
-
-[source,groovy]
------------------------------------------------------------
-void exec(@DelegatesTo.Target ex, @DelegatesTo Closure c) {
-    c.delegate = ex
-    c()
-}
-
-class Executor {
-    void launch() {}
-}
-
-def ex = new Executor()
-
-exec(ex) {
-    launch()
-}
------------------------------------------------------------
-
-We\u2019ve seen that the�`@DelegatesTo`�helps documenting, tooling, and
-checking Domain-Specific Languages in the specific context of closure
-delegate based methods, but we hinted at the fact we can go beyond, in
-terms of static type checking for your DSLs.
-
-For more details take a look at
-the�link:{DOCS_BASEURL}/html/documentation/#__code_delegatesto_code[@DelegatesTo documentation].
-
-[[Groovy21releasenotes-Typecheckerextensions]]
-== Type checker extensions
-
-Static type checking was introduced in Groovy 2.0, but Groovy 2.1 goes
-beyond built-in type checks and offers a way�to *create type checker
-extensions*. This is great news for Groovy scripts, configuration files,
-or Domain-Specific Languages implementations as they can can be "type
-checked" with more advanced, domain-specific rules. As an example, it
-would be possible to create a custom DSL type checker that throws
-compilation errors when certain verbs of the DSL are not recognized, or
-tells this other noun is allowed even if it\u2019s a dynamic name bound at
-runtime, or type checks literal strings containing SQL code to see if
-the syntax is correct, and more.
-
-Imagine a script, where we define a small robot class and instantiate
-it:
-
-[source,groovy]
-----------------------------------------------------
-class Robot {
-    void move(String dist) { println "Moved $dist" }
-}
-
-robot = new Robot()
-----------------------------------------------------
-
-And we want to operate our robot in the�`operate()`�method, but we want
-this method to be type checked:
-
-[source,groovy]
------------------------------
-@groovy.transform.TypeChecked
-void operate() {
-    robot.move "left"
-}
-
-operate()
------------------------------
-
-The static type checker will complain as it doesn\u2019t understand where the
-`robot` variable is coming from, as it\u2019s going through the binding of
-the script \u2014 note that we could teach the type checker to figure out
-binding-bound variables. It will throw an error telling us that
-the�robot�variable was undeclared.
-
-But by utilizing type checker extensions, we can hook into the type
-checking process to teach it how to handle unresolved variables! In
-order to do that, we\u2019ll specify an extension script through the newly
-introduced�`extensions`�annotation parameter of
-the�`@TypeChecked`�annotation:
-
-[source,groovy]
----------------------------------------------
-@TypeChecked(extensions = 'RobotMove.groovy')
-void operate() {
-    robot.move "left"
-}
----------------------------------------------
-
-Now it\u2019s time to define the type checker extension script
-called�`RobotMove.groovy`. The type checker extension script is written
-by applying a new DSL \u2014 the "type checking DSL". The DSL provides
-various hooks for type checker extensions to register to. Going back to
-the example above, we register for unresolved variables using
-the�`unresolvedVariable`�hook:
-
-[source,groovy]
--------------------------------------------------------------------------------
-unresolvedVariable { VariableExpression var ->
-    if ('robot' == var.name) {
-        def robotClass = context.source.AST.classes.find { it.name == 'Robot' }
-        storeType(var, robotClass)
-        handled = true
-    }
-}
--------------------------------------------------------------------------------
-
-The type checker extension script needs to be on the classpath. If this
-is the case, the script gets notified during compile-time when the
-static type checker encounters an unresolved variable. The unresolved
-variable closure is handed over a�`VariableExpression`.
-
-The�`VariableExpression`�is an object directly from Groovy\u2019s AST
-(Abstract Syntax Tree). It is a representation of the unresolved
-variable expression. The script checks if the variable is named�`robot`,
-if this is the case, we lookup a�`ClassNode`�representing
-the�`Robot`�class, and store the type of that variable back in the AST.
-At the end, the�`handled`�property is set to true, to indicate the type
-checker already managed that variable. As a consequence, you won\u2019t get
-the compilation error about that undeclared variable.
-
-To continue the journey, let\u2019s consider the case where the user enters a
-wrong direction string. We could of course use an enum or some other
-class containing direction constants, but for the sake of the example,
-we\u2019ll have a look at how we can teach the type checker to inspect
-strings and how you can actually throw your own compilation errors.
-
-For that purpose, let\u2019s say a robot can only move left, right, forward
-and backward. And now, let\u2019s change our robot move instruction to:
-
-[source,groovy]
----------------------
-robot.move "sideways"
----------------------
-
-The robot is not allowed to move sideways, so we should instruct the
-type checker to throw a compilation error if it encounters a direction
-the robot will not be able to understand. Here\u2019s how we can achieve our
-goal, by adding a new event handler to our�`RobotMove.groovy`�script:
-
-[source,groovy]
----------------------------------------------------------------------------------------
-afterMethodCall { MethodCall mc ->
-    def method = getTargetMethod(mc)
-    if (mc.objectExpression.name == 'robot' && method.name == 'move') {
-        def args = getArguments(mc)
-        if (args && isConstantExpression(args[0]) && args[0].value instanceof String) {
-            def content = args[0].text
-            if (!(content in ['left', 'right', 'backward', 'forward'])) {
-                addStaticTypeError("'${content}' is not a valid direction", args[0])
-            }
-        }
-    }
-}
----------------------------------------------------------------------------------------
-
-This handler receives a�`MethodCall`�expression. We are using
-the�`getTargetMethod()`�utility method to retrieve the
-corresponding�`MethodNode`. We check that the method call is a call to
-our�`robot`, and that the name of the method corresponds to
-themove�method. Then, we fetch the arguments passed to that method call,
-and if we\u2019re passed a direction in the form of a string constant, we are
-checking that the direction is an actual allowed direction. If this is
-not the case, we are adding a new static typing compilation error into
-the mix, so that the compiler will yell at the poor user because he used
-a direction which is forbidden and not understood by our robot.
-
-This second example is also interesting in a way that it shows how you
-can even add compilation checks on things like literal strings on a
-domain-specific level, paving the way for possible checks on sprintf
-strings, on SQL or HQL code in strings, etc, allowing you to go even
-further that what the Java compiler actually checks.
-
-The extension script can make use of various event oriented extension
-points and utility methods coming from the�`TypeCheckingExtension`�class
-from Groovy, such as:
-
-* unresolvedVariable
-* unresolvedProperty
-* unresolvedAttribute
-* methodNotFound
-* incompatibleAssignment
-* beforeVisitMethod
-* afterVisitMethod
-* beforeVisitClass
-* afterVisitClass
-* beforeMethodCall
-* afterMethodCall
-* onMethodSelection
-* setup
-* finish
-
-The two examples are just the tip of the iceberg, but we will work out
-more complete documentation of the various extension points and utility
-methods going forward.
-
-For more details take a look at
-the�link:http://docs.groovy-lang.org/latest/html/documentation/type-checking-extensions.html[type checking extensions documentation].
-
-[[Groovy21releasenotes-Compile-time-Meta-annotations]]
-== Compile-time�Meta-annotations
-
-Annotations are a great way to add supplementary meta-data to classes,
-methods, fields, and other source code elements, thus frameworks,
-libraries, and even Groovy\u2019s homegrown AST transformations can take
-advantage of them�to do some special treatments to the corresponding AST
-nodes. Every now and then the use case arises�to reuse a combination of
-annotations, potentially at the expense of a galore of at-signs that
-obscure the general intent of that particular combination.
-
-To group annotations together, to make the intent clearer or to
-streamline your code, Groovy 2.1 offers a�*meta-annotation system, which
-allows to combine other annotations into one "alias" annotation*.
-
-Imagine we are using some annotations defining constraints on properties
-of your class, like�`@NotNull`,�`@Length`, or�`@Pattern`, which could be
-defined as follows:
-
-[source,groovy]
--------------------------------
-@interface NotNull {}
-
-@interface Length {
-    int value() default 0
-}
-
-@interface Pattern {
-    String value() default ".*"
-}
--------------------------------
-
-An example of how to annotate an `ISBN` property with those annotations
-could look like this:
-
-[source,groovy]
----------------------------
-class Book {
-    @NotNull
-    @Length(10)
-    @Pattern(/\d{9}(\d|X)/)
-    String isbn10
-}
----------------------------
-
-For a single property, that\u2019s quite a bit of annotation overload! And it
-could be the case of other domain classes with properties having the
-same validation rules as the ISBN property, where we would need to
-duplicate that pattern.
-
-As of Groovy 2.1,�`@groovy.transform.AnnotationCollector`�can be used to
-solve code duplication for this use case.�`@AnnotationCollector`�can be
-specified on annotation types and acts as meta-annotation. Whenever an
-annotation marked with it is found, it is replaced with its own
-annotations. Let\u2019s illustrate this with our ISBN example.
-
-We will create a new annotation combination for the 13-digit ISBN
-standard, but this time, using
-the�`@AnnotationCollector`�meta-annotation:
-
-[source,groovy]
--------------------------------------
-@NotNull
-@Length(13)
-@Pattern(/\d{12}(\d|X)/)
-@groovy.transform.AnnotationCollector
-@interface ISBN13 {}
--------------------------------------
-
-`@ISBN13`�as a single annotation�can now be applied on code elements,
-instead of applying the entire annotation gang::
-
-[source,groovy]
------------------
-class Book {
-    // ...
-    @ISBN13
-    String isbn13
-}
------------------
-
-What is particularly interesting with such�*meta-annotations*�is that
-they are actually�*replaced at compilation time with
-the�_real_�annotations*. So if you counted the number of annotations on
-the�`isbn13`�property, you would count 3
-(`@NotNull`,�`@Length`�and�`@Pattern`). Thus, your underlying framework
-doesn\u2019t need to know about that meta-annotation solution and act
-accordingly.
-
-[[Groovy21releasenotes-Alternatenotation]]
-=== Alternate notation
-
-In our example above, we annotated our meta-annotation with the
-annotations that are then combined together. But for annotations for
-which you don\u2019t need to specify arguments, you could have also passed
-the names of the annotations to combine as parameters to the annotation
-collector:
-
-[source,groovy]
-------------------------------------------------------------
-import groovy.transform.*
-@groovy.transform.AnnotationCollector([ToString, Singleton])
-@interface ChattySingleton {}
-------------------------------------------------------------
-
-In the above case, we combine
-the�`@Singleton`�and�`@ToString`�transformation into a meta-annotation
-called�`@ChattySingleton`.
-
-[[Groovy21releasenotes-Passingparameters]]
-=== Passing parameters
-
-If you need to pass some specific parameter to one of the underlying
-annotations which are combined, you can still do so by passing the
-parameter to the meta-annotation.
-
-Let\u2019s assume we need to combine the following annotations:
-
-[source,groovy]
--------------------------------------------
-@interface Service {}
-
-@interface Transactional {
-    String propagation() default "required"
-}
--------------------------------------------
-
-We define the meta-annotation combining both the above annotations:
-
-[source,groovy]
----------------------------------------------------------------
-@groovy.transform.AnnotationCollector([Service, Transactional])
-@interface TransactionalService {}
----------------------------------------------------------------
-
-But we want to change the propagation strategy for the
-underlying�`@Transactional`�annotation, we do so by passing the
-parameter to the meta-annotation:
-
-[source,groovy]
-------------------------------------------------
-@TransactionalService(propagation = "mandatory")
-class BankingService { }
-------------------------------------------------
-
-Note that if two combined annotations share the same parameter name, the
-last annotation declared wins and gets the parameter passed to the
-meta-annotation.
-
-[[Groovy21releasenotes-Customprocessor]]
-=== Custom processor
-
-If you need even more flexibility, meta-annotations allow you to define
-custom processors. The role of the custom processor is to go beyond the
-simple exchange of the meta-annotation with the combined annotations, to
-further customize the logic of that transformation.
-
-Custom processors must be precompiled to take action, so we\u2019ll create
-our processor, and then evaluate our final example with `GroovyShell`,
-but first, let\u2019s talk about the use case.
-
-We have two validation annotations for defining a minimum and maximum
-value for an integer property:
-
-[source,groovy]
----------------------------
-@interface Min {
-    int value() default 0
-}
-
-@interface Max {
-    int value() default 100
-}
----------------------------
-
-If we want to define a range of values, with a lower and an upper bound,
-we could define a new annotation and implement the associated validation
-logic, or we could use custom meta-annotation processors to�replace�a
-range annotation with a minimum and a maximum one.
-
-So instead of writing:
-
-[source,groovy]
------------------------
-class Room {
-    @Min(1)
-    @Max(4)
-    int numberOfPersons
-}
------------------------
-
-We could write:
-
-[source,groovy]
-----------------------------
-class Room {
-    @Range(from = 1, to = 4)
-    int numberOfPersons
-}
-----------------------------
-
-With the normal replacement logic, there\u2019s no way we can map the lower
-and upper bound values to the minimum and maximum annotation element
-default values. That is where custom processors come into play.
-
-Our meta-annotation definition will look like this:
-
-[source,groovy]
-------------------------------------------------------------
-@Min @Max
-@AnnotationCollector(processor = 'RangeAnnotationProcessor')
-@interface Range {}
-------------------------------------------------------------
-
-Notice how we specify that the�`@Range`�annotation is a combination
-of�`@Min`�and�`@Max`, and more importantly, how we pass a processor
-parameter to the�`@AnnotationCollector`�to instruct it about our custom
-meta-annotation processing logic.
-
-In order to create a custom processor, you have to extend
-the�`AnnotationCollectorTransform`�class�and override
-the�`visit()`�method:
-
-[source,groovy]
--------------------------------------------------------------------------------
-import org.codehaus.groovy.transform.AnnotationCollectorTransform
-import org.codehaus.groovy.ast.*
-import org.codehaus.groovy.control.SourceUnit
-
-class RangeAnnotationProcessor extends AnnotationCollectorTransform {
-    List<AnnotationNode> visit(AnnotationNode collector,
-                               AnnotationNode usage,
-                               AnnotatedNode annotated,
-                               SourceUnit src) {
-
-        def minExpr = usage.getMember('from')
-        def maxExpr = usage.getMember('to')
-
-        def (minAnno, maxAnno) = getTargetAnnotationList(collector, usage, src)
-
-        minAnno.addMember('value', minExpr)
-        maxAnno.addMember('value', maxExpr)
-
-        usage.members.remove('from')
-        usage.members.remove('to')
-
-        return [minAnno, maxAnno]
-    }
-}
--------------------------------------------------------------------------------
-
-A few words about the parameters : the�`collector`�corresponds to
-the�`@Range`�annotation definition,�`usage`�to the actual usage of
-the�`@Range`�annotation,�`annotated`�is the annotated class,
-and�`src`�is script being compiled.
-
-We start our implementation of the processor by retrieving the numeric
-expressions of the bounds defined as the�from�and�to�annotation
-parameters, because we\u2019ll pass those values back to the
-underlying�`@Min`�and�`@Max`�combined annotations. In order to do that,
-we retrieve the�`@Min`�and�`@Max`�combined annotations thanks to
-the�`getTargetAnnotationList()`�method. We then set the�values of
-the�`@Min`�and�`@Max`�annotations to the expressions we\u2019ve retrieved
-before. We remove the�from�and�to�bounds from
-the�`@Range`�meta-annotation since those parameters
-aren\u2019t�really�defined on a real annotation but on a meta-annotation. And
-last, we return the two�`@Min`�and�`@Max`�annotations. If you wanted the
-Groovy compiler to do its usual replacement logic, you could have also
-called�`super.visit(...)`, but in our case it wasn\u2019t needed.
-
-The full example can be found in this Gist on
-Github:�https://gist.github.com/4563430
-
-Additional details can be found in the
-link:http://www.groovy-lang.org/objectorientation.html#_meta_annotations[meta-annotations documentation].
-
-[[Groovy21releasenotes-Compilationcustomization]]
-== Compilation customization
-
-[[Groovy21releasenotes-Custombasescriptclassflag]]
-=== Custom base script class flag
-
-When integrating and evaluating Groovy scripts in an application for
-business rules or Domain-Specific Languages, it is often valuable to
-define a base script class, in order to add various utility methods,
-properties, or interception mechanisms for missing methods or
-properties.
-
-The�`CompilerConfiguration`�object, that you can pass
-to�`GroovyShell`�and other integration mechanisms, allows you to specify
-a base script class with the�`setScriptBaseClass()`�method.
-
-As of Groovy 2.1, we introduce the ability to define a base script class
-reference for your scripts via an additional command-line option�`-b`�/
-�`--basescript`�for the�`groovyc`�command, as well as for
-the�`groovy`�command.
-
-Here\u2019s an example using a script called�`businessRule.groovy`:
-
-[source,groovy]
------------------------------------
-assert lookupRate(EUR, USD) == 1.33
------------------------------------
-
-In the above script, we notice two things: the usage of
-a�`lookupRate()`�method, and two undeclared variables:�`EUR`�and�`USD`.
-Neither the method, nor the variables have been defined in our script.
-Instead, they are provided by a base script class, which can look like
-the following�`ExchangeRateBaseScript.groovy`�class:
-
-[source,groovy]
---------------------------------------------------------
-abstract class ExchangeRateBaseScript extends Script {
-    def lookupRate(String currency1, String currency2) {
-        if (currency1 == 'EUR' && currency2 == 'USD')
-            return 1.33
-        else return 1
-    }
-
-    def getProperty(String name) { name }
-}
---------------------------------------------------------
-
-The�`lookupRate()`�method used in our script is declared in the the base
-class, and the two currencies are retrieved via
-the�`getProperty()`�method.
-
-Now it\u2019s time to wire them together, by instructing the�groovyc�compiler
-or the�`groovy`�command line launcher to use our base script class for
-all�`groovy.lang.Script`�descendants:
-
----------------------------------------------------------------------
-groovy --basescript ExchangeRateBaseScript.groovy businessRule.groovy
----------------------------------------------------------------------
-
-[[Groovy21releasenotes-Compilerconfigurationscript]]
-=== Compiler configuration script
-
-Similarly to the�`--basescript`�flag, there\u2019s another new option for
-the�`groovy`�and�`groovyc`�commands: the�`--configscript`�flag. Its
-purpose is to let you further configure the compiler, in a configuration
-script, by parameterizing the�`CompilerConfiguration`�object used for
-the compilation.
-
-With a�`CompilerConfiguration`, you can customize the various aspects of
-the Groovy compilation process. For example, you can specify various
-compilation customizers introduced in Groovy 1.8. Imagine you want to
-add a new default import to your classes, like importing
-all�`java.lang.Math`�functions and constants, so that your scripts and
-classes don\u2019t have to prefix those functions and constants all the time,
-and to avoid having to do that import wherever needed. Here\u2019s how you
-can proceed.
-
-At first, your script,�`mathFormula.groovy`, contains the following
-lines:
-
-[source,groovy]
-------------------------------
-import static java.lang.Math.*
-
-assert sin(PI/2) == 1
-------------------------------
-
-For evaluating such math expressions, you wish to make the static import
-implicit, so that the final script will actually look like this:
-
-[source,groovy]
----------------------
-assert sin(PI/2) == 1
----------------------
-
-If you\u2019d run it as is, you\u2019d get an error message saying:
-
--------------------------------------------
-No such property: PI for class: mathFormula
--------------------------------------------
-
-We need to use�`CompilerConfiguration`�to do add an�`ImportCustomizer`.
-We\u2019ll create ai `mportConfigurer.groovy`�script with the content below:
-
-[source,groovy]
----------------------------------------------------------------
-import org.codehaus.groovy.control.customizers.ImportCustomizer
-
-def importCustomizer = new ImportCustomizer()
-importCustomizer.addStaticStar('java.lang.Math')
-
-configuration.addCompilationCustomizers(importCustomizer)
----------------------------------------------------------------
-
-We import and then instantiate an�`ImportCustomizer`, on which we ask
-for a static star import of the methods and constants of
-the�`java.lang.Math`�class. Eventually, we pass that customizer to
-the�`configuration`�variable, which is an instance
-of�`CompilerConfiguration`�that will be used for the compilation of your
-math formula.
-
-Now, we are able to execute your formula with the following
-command-line:
-
-----------------------------------------------------------------
-groovy --configscript importConfigurer.groovy mathFormula.groovy
-----------------------------------------------------------------
-
-[[Groovy21releasenotes-Source-awarecustomizer]]
-=== Source-aware customizer
-
-If you use the groovy compiler to compile all your classes, one drawback
-of the approach above is that the customization applies globally to all
-classes that are going to be compiled. You may want to add certain
-default imports only in certain classes (ie. scripts containing math),
-but you might want to do something different for other classes, like
-adding a�`@ToString`�transformation to all the domain classes of your
-application. For that purpose, a new customizer was created,
-the�`SourceAwareCustomizer`, to let you filter which classes should be
-impacted by particular compilation customizations, such as filtering by
-class name, by file extension, or by a custom logic.
-
-Coming back to our previous example, let\u2019s add the default import to
-our�`mathFormula.groovy`�script, but add a�`@ToString`�transformation to
-the�`MyDomain.groovy`�class:
-
-[source,groovy]
---------------------------------------------------------------------------
-import org.codehaus.groovy.control.customizers.*
-import groovy.transform.ToString
-
-def importCustomizer = new ImportCustomizer()
-importCustomizer.addStaticStar('java.lang.Math')
-
-configuration.addCompilationCustomizers(
-    new SourceAwareCustomizer(new ASTTransformationCustomizer(ToString)) {
-        boolean acceptBaseName(baseName) { baseName ==~ 'MyDomain' }
-    },
-    new SourceAwareCustomizer(importCustomizer) {
-        boolean acceptBaseName(baseName) { baseName ==~ 'mathFormula' }
-    })
---------------------------------------------------------------------------
-
-[[Groovy21releasenotes-Compilercustomizationbuilder]]
-=== Compiler customization builder
-
-The more complex the customization becomes, the more cumbersome the
-above configuration becomes to write too, that\u2019s why Groovy 2.1 also
-provides a builder for building these types of configurations.
-
-The builder allows you to use a familiar declarative syntax and saves
-you from adding manually various imports. Let\u2019s adapt our example above
-with the builder:
-
-[source,groovy]
----------------------------------------------------------------
-withConfig(configuration) {
-    source(basenameValidator: { it.endsWith('MyDomain') }) {
-        ast(ToString)
-    }
-    source(basenameValidator: { it.endsWith('mathFormula') }) {
-        imports {
-            staticStar 'java.lang.Math'
-        }
-    }
-}
----------------------------------------------------------------
-
-The configuration code is easier to read and maintain, thanks to the
-clarity brought by the builder�approach. But we\u2019ve only seen a couple
-examples of customization, and you should have a look at the other
-customizations available in the
-org.codehaus.groovy.control.customizers.builder�package to learn more
-about them.
-
-More details can be found in the
-link:http://www.groovy-lang.org/dsls.html#compilation-customizers[compilation customizers documentation].
-
-[[Groovy21releasenotes-OtherMinorEnhancements]]
-== Other Minor Enhancements
-
-[[Groovy21releasenotes-AdditionalDGMmethods]]
-=== Additional DGM methods
-
-There are now `leftShift` and `withFormatter` methods for `Appendable`
-objects. +
-There are now methods for creating temporary directories and determining
-the total size of all files in a directory. +
-There is now a `collectMany` for maps (has been backported to earlier
-versions of Groovy too). +
-There is now a `closeStreams()` method for `Process` objects.
-
-[[Groovy21releasenotes-GroovyDoc]]
-=== GroovyDoc
-
-You can now explicitly set a file encoding.
-
-[[Groovy21releasenotes-Command-line]]
-=== Command-line
-
-There is support for using a `jar:` prefix when running a script from
-a URL, in addition to the `file:` and `http:`.
-
-[[Groovy21releasenotes-XMLProcessing]]
-=== XML Processing
-
-There is a method for escaping / encoding XML entities in Strings. +
-There is a convenience method for serializing `Elements` objects.� +
-You can now clone `Node` and `NodeList` objects.� +
-The name() method now works for all `Node` objects, not just `Element`
-objects.�
-
-[[Groovy21releasenotes-ConfigSlurper]]
-=== ConfigSlurper
-
-Multiple environments blocks are now supported and merged.
-
-[[Groovy21releasenotes-Delegate]]
-=== @Delegate
-
-Can now carry over annotations if desired for methods and method
-parameters.
-
-[[Groovy21releasenotes-ToString]]
-=== @ToString
-
-You can now cache the `toString` value. This is useful for immutable
-objects.
-
-[[Groovy21releasenotes-EqualsAndHashCode]]
-=== @EqualsAndHashCode
-
-You can now cache the calculated hashCode value. This is useful for
-immutable objects.
-
-[[Groovy21releasenotes-Immutable]]
-=== @Immutable
-
-You can now specify `knownImmutables`. This is useful when you know you
-are using an immutable object, but its type isn\u2019t one of the known
-immutable types.
-
-[[Groovy21releasenotes-AutoClone]]
-=== @AutoClone
-
-There is now a `SIMPLE` `AutoCloneStyle` which avoids some annoyances
-with Java\u2019s cloning behavior from `Object`. Those who need to clone
-Grails domain objects might find this useful.

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/releasenotes/groovy-2.2.adoc
----------------------------------------------------------------------
diff --git a/site/src/site/releasenotes/groovy-2.2.adoc b/site/src/site/releasenotes/groovy-2.2.adoc
deleted file mode 100644
index 8afed88..0000000
--- a/site/src/site/releasenotes/groovy-2.2.adoc
+++ /dev/null
@@ -1,256 +0,0 @@
-[[Groovy2.2releasenotes-Implicitclosurecoercion]]
-== Implicit closure coercion
-
-Java 8 will feature lambdas, which are similar to Groovy\u2019s closures. One
-particular aspect which is interesting with lambdas is how they are
-converted transparently by Java to interface types that contain one
-single abstract method. With Groovy closures, except for a few cases, we
-have to explicitly use the as operator to do the coercion. In Groovy
-2.2, we are allowing the
-same�link:http://docs.groovy-lang.org/latest/html/documentation/core-semantics.html#closure-coercion[transparent closure coercion]�
-to happen, but without the explicit as type coercion,
-and furthermore, we make it possible to work as well with abstract
-classes as well.
-
-
-[source,groovy]
-----
-interface Predicate {
-   boolean test(obj)
-}�
-
-List filter(List list,Predicate pred) {
-   list.findAll { pred.test(it) }
-}�
-def input = [1, 2, 3, 4, 5]�
-def odd = filter(input) { it % 2 == 1 }
-assert odd == [1, 3, 5]
-----
-
-
-Notice how the closure is coerced into a Predicate instance. Without
-that new capabilities, we would have had to write the following instead:
-
-[source,groovy]
-----
-def odd = filter(input, { it % 2 == 1} as Predicate)
-----
-
-
-That way, Groovy closure coercion to SAM types is as concise as Java 8
-lambda closure conversion.
-
-Here\u2019s another example using abstract classes, which are not supported
-by Java 8 lambda conversion:
-
-[[Groovy2.2releasenotes-MemoizedASTtransformationformethods]]
-== @Memoized AST transformation for methods
-
-Similarly to our Closure memoization capability, you can now annotate
-your methods with the
-new�link:https://issues.apache.org/jira/browse/GROOVY-4993[@Memoized annotation].
-It will use the same underlying cache solution used for closures, and
-will cache the result of previous executions of the annotated method
-with the same entry parameters.
-
-[source,groovy]
-----
-import groovy.transform.Memoized�
-
-@Memoized
-int expensiveOp(int a, int b) {
-   sleep 1000����
-   return a + b
-}
-
-expensiveOp(1, 2)�// one second to return
-expensiveOp(1, 2)�// immediate result returned�expensiveOp(1, 2)
-----
-
-
-[[Groovy2.2releasenotes-Bintray]]
-== Bintray\u2019s JCenter repository�
-
-The default Grab configuration now use Bintray\u2019s JCenter repository as
-the first in the chain of resolvers, as Bintray\u2019s JCenter repository is
-noticeably faster and more responsive than Maven Central, offers
-dependencies always with their checksums, and stores and caches
-dependencies it wouldn\u2019t have for faster delivery the next time a
-dependency is required. This should make your scripts relying on�@Grab
-faster when downloading dependencies for the first time.
-
-[[Groovy2.2releasenotes-Definebasescriptclasseswithanannotation]]
-== Define base script classes with an annotation
-
-All scripts usually extend
-the�link:http://docs.groovy-lang.org/latest/html/api/groovy/lang/Script.html[groovy.lang.Script]�abstract
-class, but it\u2019s possible to set up our own base script class extending
-Script
-through�link:http://docs.groovy-lang.org/latest/html/api/org/codehaus/groovy/control/CompilerConfiguration.html[CompilerConfiguration].
-A new AST transformation is introduced in Groovy 2.2 which allows you to
-define the base script class as follows:
-
-[source,groovy]
-----
-import groovy.transform.BaseScript�
-
-abstract class DeclaredBaseScript extends Script {
-   int meaningOfLife = 42
-}
-
-@BaseScript DeclaredBaseScript baseScript�
-
-assert meaningOfLife == 42
-----
-
-[[Groovy2.2releasenotes-NewDelegatingScriptbaseclassforscripts]]
-== New DelegatingScript base class for scripts
-
-With the CompilerConfiguration class that you pass to GroovyShell (as
-well as GroovyClassLoader and others), you can define a base script
-class for the scripts that will be compiled with that shell. It\u2019s handy
-to share common methods to all scripts.
-
-For DSL purposes, it\u2019s interesting to actually delegate the method calls
-and unbound variable assignments to a different object than the script
-itself, thanks to the
-new�link:https://issues.apache.org/jira/browse/GROOVY-6076[DelegatingScript].
-
-To make it more concrete, let\u2019s have a look at the following
-configuration script:
-
-[source,groovy]
-----
-// import the CompilerConfiguration class// to configure the base script class
-import org.codehaus.groovy.control.CompilerConfiguration�
-
-// the script we want to compile
-def scriptContent = '''
-name = 'Guillaume'
-sayHi()'''
-
-// the class definition of the delegate
-class Person {
-   String name
-   void sayHi() {
-      println "Hi $name"
-   }
-}�
-
-// configure the base script class
-def cc = new CompilerConfiguration()
-cc.scriptBaseClass = DelegatingScript.class.name�
-
-// parse script with GroovyShell// and the
-configurationdef sh = new GroovyShell(cc)
-def script = sh.parse(scriptContent)�
-
-// set the delegate and run the script
-def p = new Person()
-script.setDelegate(p)
-script.run()�// the name is set correctly
-
-// and the output will display "Hi Guillaume"
-assert p.name == 'Guillaume'
-----
-
-[[Groovy2.2releasenotes-NewLogvariantfortheLog4j2loggingframework]]
-== New�@Log variant for the�Log4j2 logging framework
-
-A new�@Log variant has been added to support Log4j2, with the�@Log4j2
-AST transformation:
-
-[source,groovy]
-----
-import groovy.util.logging.Log4j2
-
-@Log4j2
-class MyClass {
-   void doSomething() {
-      log.info 'did something groovy today!'
-   }
-}
-----
-
-[[Groovy2.2releasenotes-DelegatesTowithgenericstypetokens]]
-== @DelegatesTo with generics type tokens
-
-The @DelegatesTo annotation, introduced in Groovy 2.1 that helps the
-type checker, IDEs, tools, to provide better support for DSLs using
-closure delegation
-strategies,�link:https://issues.apache.org/jira/browse/GROOVY-6134[works with generics token types]�as well.
-You can tell Groovy that the delegatee is
-of the type of the generics component:
-
-[source,groovy]
-----
-import groovy.transform.*
-
-@InheritConstructors
-class MyList extends LinkedList<String> {}�
-
-public <T> Object map(
-    @DelegatesTo.Target List<T> target,
-    @DelegatesTo(genericTypeIndex = 0) Closure arg) {
-    arg.delegate = target.join('')
-    arg()
-}
-
-@TypeChecked
-def test() {
-   map(new MyList([\u2019f', `o', `o'])) {
-      assert toUpperCase() == 'FOO'
-   }
-}�
-----
-
-Note the genericTypeIndex attribute of @DelegatesTo that points at the
-index of the generic component. Unfortunately, as the generic
-placeholders are not kept at the bytecode level, it\u2019s impossible to just
-reference T, and we had to use an index to point at the right type.
-
-[[Groovy2.2releasenotes-Precompiledtypecheckingextensions]]
-== Precompiled type checking extensions
-
-The static type checking extensions introduced in Groovy 2.1 were
-working solely with non-compiled scripts. But with this beta, you can
-also specify a fully-qualified name of
-the�link:https://issues.apache.org/jira/browse/GROOVY-6043[precompiled class implementing your extension]:
-
-[source,groovy]
-----
-@TypeChecked(extensions = 'com.enterprise.MyDslExtension')\u2028
-----
-
-Type checking extensions now also support two more
-events:�link:https://issues.apache.org/jira/browse/GROOVY-6039[ambiguousMethods]�and�link:https://issues.apache.org/jira/browse/GROOVY-6044[incompatibleReturnType].�
-
-[[Groovy2.2releasenotes-Groovyshenhancements]]
-== Groovysh enhancements
-
-Groovysh has been expanded with various enhancements:
-
-* support for�link:https://issues.apache.org/jira/browse/GROOVY-6073[code completion]�in various places, like imports, package names, class names,
-variable names, parameter names, keywords, etc.
-* a�link:https://issues.apache.org/jira/browse/GROOVY-6150[doc command]�allows you
-to open the relevant JavaDoc and Groovy GDK web pages to have more
-information for a given class, for example try in Groovysh: +
-----
-doc java.util.List
-----
-
-* you can�link:https://issues.apache.org/jira/browse/GROOVY-6145[complete file names]�inside strings, particularly handy for your scripting tasks where
-you want to open a file with�`new File('data.|')`�(where the pipe
-character is the position of your cursor), and then hit the TAB key to
-have the completion of the file name
-
-[[Groovy2.2releasenotes-OSGimanifestsfortheindyjar]]
-== OSGi manifests for the `invokedynamic` JARs
-
-If you\u2019re using Groovy in the context of an OSGi container, the Groovy
-JARs contained the right OSGi metadata information in its manifest.
-However, it wasn\u2019t the case for the `invokedynamic` JARs, as the
-underlying library used by the Gradle OSGi plugin wasn\u2019t supporting JDK
-7 bytecode. Fortunately, this deficiency has been fixed, the Gradle OSGi
-plugin updated, and we\u2019re now able to have our `indy` JARs work fine
-under OSGi has well.
\ No newline at end of file


[18/20] groovy-user-site git commit: move content to asf-site branch

Posted by pa...@apache.org.
http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/css/bootstrap.css
----------------------------------------------------------------------
diff --git a/site/src/site/assets/css/bootstrap.css b/site/src/site/assets/css/bootstrap.css
deleted file mode 100644
index 1a98538..0000000
--- a/site/src/site/assets/css/bootstrap.css
+++ /dev/null
@@ -1,6203 +0,0 @@
-/*!
- * Bootstrap v3.2.0 (http://getbootstrap.com)
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-
-/*! normalize.css v3.0.1 | MIT License | git.io/normalize */
-html {
-  font-family: sans-serif;
-  -webkit-text-size-adjust: 100%;
-      -ms-text-size-adjust: 100%;
-}
-body {
-  margin: 0;
-}
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-main,
-nav,
-section,
-summary {
-  display: block;
-}
-audio,
-canvas,
-progress,
-video {
-  display: inline-block;
-  vertical-align: baseline;
-}
-audio:not([controls]) {
-  display: none;
-  height: 0;
-}
-[hidden],
-template {
-  display: none;
-}
-a {
-  background: transparent;
-}
-a:active,
-a:hover {
-  outline: 0;
-}
-abbr[title] {
-  border-bottom: 1px dotted;
-}
-b,
-strong {
-  font-weight: bold;
-}
-dfn {
-  font-style: italic;
-}
-h1 {
-  margin: .67em 0;
-  font-size: 2em;
-}
-mark {
-  color: #000;
-  background: #ff0;
-}
-small {
-  font-size: 80%;
-}
-sub,
-sup {
-  position: relative;
-  font-size: 75%;
-  line-height: 0;
-  vertical-align: baseline;
-}
-sup {
-  top: -.5em;
-}
-sub {
-  bottom: -.25em;
-}
-img {
-  border: 0;
-}
-svg:not(:root) {
-  overflow: hidden;
-}
-figure {
-  margin: 1em 40px;
-}
-hr {
-  height: 0;
-  -webkit-box-sizing: content-box;
-     -moz-box-sizing: content-box;
-          box-sizing: content-box;
-}
-pre {
-  overflow: auto;
-}
-code,
-kbd,
-pre,
-samp {
-  font-family: monospace, monospace;
-  font-size: 1em;
-}
-button,
-input,
-optgroup,
-select,
-textarea {
-  margin: 0;
-  font: inherit;
-  color: inherit;
-}
-button {
-  overflow: visible;
-}
-button,
-select {
-  text-transform: none;
-}
-button,
-html input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  -webkit-appearance: button;
-  cursor: pointer;
-}
-button[disabled],
-html input[disabled] {
-  cursor: default;
-}
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-input {
-  line-height: normal;
-}
-input[type="checkbox"],
-input[type="radio"] {
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  padding: 0;
-}
-input[type="number"]::-webkit-inner-spin-button,
-input[type="number"]::-webkit-outer-spin-button {
-  height: auto;
-}
-input[type="search"] {
-  -webkit-box-sizing: content-box;
-     -moz-box-sizing: content-box;
-          box-sizing: content-box;
-  -webkit-appearance: textfield;
-}
-input[type="search"]::-webkit-search-cancel-button,
-input[type="search"]::-webkit-search-decoration {
-  -webkit-appearance: none;
-}
-fieldset {
-  padding: .35em .625em .75em;
-  margin: 0 2px;
-  border: 1px solid #c0c0c0;
-}
-legend {
-  padding: 0;
-  border: 0;
-}
-textarea {
-  overflow: auto;
-}
-optgroup {
-  font-weight: bold;
-}
-table {
-  border-spacing: 0;
-  border-collapse: collapse;
-}
-td,
-th {
-  padding: 0;
-}
-@media print {
-  * {
-    color: #000 !important;
-    text-shadow: none !important;
-    background: transparent !important;
-    -webkit-box-shadow: none !important;
-            box-shadow: none !important;
-  }
-  a,
-  a:visited {
-    text-decoration: underline;
-  }
-  a[href]:after {
-    content: " (" attr(href) ")";
-  }
-  abbr[title]:after {
-    content: " (" attr(title) ")";
-  }
-  a[href^="javascript:"]:after,
-  a[href^="#"]:after {
-    content: "";
-  }
-  pre,
-  blockquote {
-    border: 1px solid #999;
-
-    page-break-inside: avoid;
-  }
-  thead {
-    display: table-header-group;
-  }
-  tr,
-  img {
-    page-break-inside: avoid;
-  }
-  img {
-    max-width: 100% !important;
-  }
-  p,
-  h2,
-  h3 {
-    orphans: 3;
-    widows: 3;
-  }
-  h2,
-  h3 {
-    page-break-after: avoid;
-  }
-  select {
-    background: #fff !important;
-  }
-  .navbar {
-    display: none;
-  }
-  .table td,
-  .table th {
-    background-color: #fff !important;
-  }
-  .btn > .caret,
-  .dropup > .btn > .caret {
-    border-top-color: #000 !important;
-  }
-  .label {
-    border: 1px solid #000;
-  }
-  .table {
-    border-collapse: collapse !important;
-  }
-  .table-bordered th,
-  .table-bordered td {
-    border: 1px solid #ddd !important;
-  }
-}
-@font-face {
-  font-family: 'Glyphicons Halflings';
-
-  src: url('../fonts/glyphicons-halflings-regular.eot');
-  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
-}
-.glyphicon {
-  position: relative;
-  top: 1px;
-  display: inline-block;
-  font-family: 'Glyphicons Halflings';
-  font-style: normal;
-  font-weight: normal;
-  line-height: 1;
-
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-}
-.glyphicon-asterisk:before {
-  content: "\2a";
-}
-.glyphicon-plus:before {
-  content: "\2b";
-}
-.glyphicon-euro:before {
-  content: "\20ac";
-}
-.glyphicon-minus:before {
-  content: "\2212";
-}
-.glyphicon-cloud:before {
-  content: "\2601";
-}
-.glyphicon-envelope:before {
-  content: "\2709";
-}
-.glyphicon-pencil:before {
-  content: "\270f";
-}
-.glyphicon-glass:before {
-  content: "\e001";
-}
-.glyphicon-music:before {
-  content: "\e002";
-}
-.glyphicon-search:before {
-  content: "\e003";
-}
-.glyphicon-heart:before {
-  content: "\e005";
-}
-.glyphicon-star:before {
-  content: "\e006";
-}
-.glyphicon-star-empty:before {
-  content: "\e007";
-}
-.glyphicon-user:before {
-  content: "\e008";
-}
-.glyphicon-film:before {
-  content: "\e009";
-}
-.glyphicon-th-large:before {
-  content: "\e010";
-}
-.glyphicon-th:before {
-  content: "\e011";
-}
-.glyphicon-th-list:before {
-  content: "\e012";
-}
-.glyphicon-ok:before {
-  content: "\e013";
-}
-.glyphicon-remove:before {
-  content: "\e014";
-}
-.glyphicon-zoom-in:before {
-  content: "\e015";
-}
-.glyphicon-zoom-out:before {
-  content: "\e016";
-}
-.glyphicon-off:before {
-  content: "\e017";
-}
-.glyphicon-signal:before {
-  content: "\e018";
-}
-.glyphicon-cog:before {
-  content: "\e019";
-}
-.glyphicon-trash:before {
-  content: "\e020";
-}
-.glyphicon-home:before {
-  content: "\e021";
-}
-.glyphicon-file:before {
-  content: "\e022";
-}
-.glyphicon-time:before {
-  content: "\e023";
-}
-.glyphicon-road:before {
-  content: "\e024";
-}
-.glyphicon-download-alt:before {
-  content: "\e025";
-}
-.glyphicon-download:before {
-  content: "\e026";
-}
-.glyphicon-upload:before {
-  content: "\e027";
-}
-.glyphicon-inbox:before {
-  content: "\e028";
-}
-.glyphicon-play-circle:before {
-  content: "\e029";
-}
-.glyphicon-repeat:before {
-  content: "\e030";
-}
-.glyphicon-refresh:before {
-  content: "\e031";
-}
-.glyphicon-list-alt:before {
-  content: "\e032";
-}
-.glyphicon-lock:before {
-  content: "\e033";
-}
-.glyphicon-flag:before {
-  content: "\e034";
-}
-.glyphicon-headphones:before {
-  content: "\e035";
-}
-.glyphicon-volume-off:before {
-  content: "\e036";
-}
-.glyphicon-volume-down:before {
-  content: "\e037";
-}
-.glyphicon-volume-up:before {
-  content: "\e038";
-}
-.glyphicon-qrcode:before {
-  content: "\e039";
-}
-.glyphicon-barcode:before {
-  content: "\e040";
-}
-.glyphicon-tag:before {
-  content: "\e041";
-}
-.glyphicon-tags:before {
-  content: "\e042";
-}
-.glyphicon-book:before {
-  content: "\e043";
-}
-.glyphicon-bookmark:before {
-  content: "\e044";
-}
-.glyphicon-print:before {
-  content: "\e045";
-}
-.glyphicon-camera:before {
-  content: "\e046";
-}
-.glyphicon-font:before {
-  content: "\e047";
-}
-.glyphicon-bold:before {
-  content: "\e048";
-}
-.glyphicon-italic:before {
-  content: "\e049";
-}
-.glyphicon-text-height:before {
-  content: "\e050";
-}
-.glyphicon-text-width:before {
-  content: "\e051";
-}
-.glyphicon-align-left:before {
-  content: "\e052";
-}
-.glyphicon-align-center:before {
-  content: "\e053";
-}
-.glyphicon-align-right:before {
-  content: "\e054";
-}
-.glyphicon-align-justify:before {
-  content: "\e055";
-}
-.glyphicon-list:before {
-  content: "\e056";
-}
-.glyphicon-indent-left:before {
-  content: "\e057";
-}
-.glyphicon-indent-right:before {
-  content: "\e058";
-}
-.glyphicon-facetime-video:before {
-  content: "\e059";
-}
-.glyphicon-picture:before {
-  content: "\e060";
-}
-.glyphicon-map-marker:before {
-  content: "\e062";
-}
-.glyphicon-adjust:before {
-  content: "\e063";
-}
-.glyphicon-tint:before {
-  content: "\e064";
-}
-.glyphicon-edit:before {
-  content: "\e065";
-}
-.glyphicon-share:before {
-  content: "\e066";
-}
-.glyphicon-check:before {
-  content: "\e067";
-}
-.glyphicon-move:before {
-  content: "\e068";
-}
-.glyphicon-step-backward:before {
-  content: "\e069";
-}
-.glyphicon-fast-backward:before {
-  content: "\e070";
-}
-.glyphicon-backward:before {
-  content: "\e071";
-}
-.glyphicon-play:before {
-  content: "\e072";
-}
-.glyphicon-pause:before {
-  content: "\e073";
-}
-.glyphicon-stop:before {
-  content: "\e074";
-}
-.glyphicon-forward:before {
-  content: "\e075";
-}
-.glyphicon-fast-forward:before {
-  content: "\e076";
-}
-.glyphicon-step-forward:before {
-  content: "\e077";
-}
-.glyphicon-eject:before {
-  content: "\e078";
-}
-.glyphicon-chevron-left:before {
-  content: "\e079";
-}
-.glyphicon-chevron-right:before {
-  content: "\e080";
-}
-.glyphicon-plus-sign:before {
-  content: "\e081";
-}
-.glyphicon-minus-sign:before {
-  content: "\e082";
-}
-.glyphicon-remove-sign:before {
-  content: "\e083";
-}
-.glyphicon-ok-sign:before {
-  content: "\e084";
-}
-.glyphicon-question-sign:before {
-  content: "\e085";
-}
-.glyphicon-info-sign:before {
-  content: "\e086";
-}
-.glyphicon-screenshot:before {
-  content: "\e087";
-}
-.glyphicon-remove-circle:before {
-  content: "\e088";
-}
-.glyphicon-ok-circle:before {
-  content: "\e089";
-}
-.glyphicon-ban-circle:before {
-  content: "\e090";
-}
-.glyphicon-arrow-left:before {
-  content: "\e091";
-}
-.glyphicon-arrow-right:before {
-  content: "\e092";
-}
-.glyphicon-arrow-up:before {
-  content: "\e093";
-}
-.glyphicon-arrow-down:before {
-  content: "\e094";
-}
-.glyphicon-share-alt:before {
-  content: "\e095";
-}
-.glyphicon-resize-full:before {
-  content: "\e096";
-}
-.glyphicon-resize-small:before {
-  content: "\e097";
-}
-.glyphicon-exclamation-sign:before {
-  content: "\e101";
-}
-.glyphicon-gift:before {
-  content: "\e102";
-}
-.glyphicon-leaf:before {
-  content: "\e103";
-}
-.glyphicon-fire:before {
-  content: "\e104";
-}
-.glyphicon-eye-open:before {
-  content: "\e105";
-}
-.glyphicon-eye-close:before {
-  content: "\e106";
-}
-.glyphicon-warning-sign:before {
-  content: "\e107";
-}
-.glyphicon-plane:before {
-  content: "\e108";
-}
-.glyphicon-calendar:before {
-  content: "\e109";
-}
-.glyphicon-random:before {
-  content: "\e110";
-}
-.glyphicon-comment:before {
-  content: "\e111";
-}
-.glyphicon-magnet:before {
-  content: "\e112";
-}
-.glyphicon-chevron-up:before {
-  content: "\e113";
-}
-.glyphicon-chevron-down:before {
-  content: "\e114";
-}
-.glyphicon-retweet:before {
-  content: "\e115";
-}
-.glyphicon-shopping-cart:before {
-  content: "\e116";
-}
-.glyphicon-folder-close:before {
-  content: "\e117";
-}
-.glyphicon-folder-open:before {
-  content: "\e118";
-}
-.glyphicon-resize-vertical:before {
-  content: "\e119";
-}
-.glyphicon-resize-horizontal:before {
-  content: "\e120";
-}
-.glyphicon-hdd:before {
-  content: "\e121";
-}
-.glyphicon-bullhorn:before {
-  content: "\e122";
-}
-.glyphicon-bell:before {
-  content: "\e123";
-}
-.glyphicon-certificate:before {
-  content: "\e124";
-}
-.glyphicon-thumbs-up:before {
-  content: "\e125";
-}
-.glyphicon-thumbs-down:before {
-  content: "\e126";
-}
-.glyphicon-hand-right:before {
-  content: "\e127";
-}
-.glyphicon-hand-left:before {
-  content: "\e128";
-}
-.glyphicon-hand-up:before {
-  content: "\e129";
-}
-.glyphicon-hand-down:before {
-  content: "\e130";
-}
-.glyphicon-circle-arrow-right:before {
-  content: "\e131";
-}
-.glyphicon-circle-arrow-left:before {
-  content: "\e132";
-}
-.glyphicon-circle-arrow-up:before {
-  content: "\e133";
-}
-.glyphicon-circle-arrow-down:before {
-  content: "\e134";
-}
-.glyphicon-globe:before {
-  content: "\e135";
-}
-.glyphicon-wrench:before {
-  content: "\e136";
-}
-.glyphicon-tasks:before {
-  content: "\e137";
-}
-.glyphicon-filter:before {
-  content: "\e138";
-}
-.glyphicon-briefcase:before {
-  content: "\e139";
-}
-.glyphicon-fullscreen:before {
-  content: "\e140";
-}
-.glyphicon-dashboard:before {
-  content: "\e141";
-}
-.glyphicon-paperclip:before {
-  content: "\e142";
-}
-.glyphicon-heart-empty:before {
-  content: "\e143";
-}
-.glyphicon-link:before {
-  content: "\e144";
-}
-.glyphicon-phone:before {
-  content: "\e145";
-}
-.glyphicon-pushpin:before {
-  content: "\e146";
-}
-.glyphicon-usd:before {
-  content: "\e148";
-}
-.glyphicon-gbp:before {
-  content: "\e149";
-}
-.glyphicon-sort:before {
-  content: "\e150";
-}
-.glyphicon-sort-by-alphabet:before {
-  content: "\e151";
-}
-.glyphicon-sort-by-alphabet-alt:before {
-  content: "\e152";
-}
-.glyphicon-sort-by-order:before {
-  content: "\e153";
-}
-.glyphicon-sort-by-order-alt:before {
-  content: "\e154";
-}
-.glyphicon-sort-by-attributes:before {
-  content: "\e155";
-}
-.glyphicon-sort-by-attributes-alt:before {
-  content: "\e156";
-}
-.glyphicon-unchecked:before {
-  content: "\e157";
-}
-.glyphicon-expand:before {
-  content: "\e158";
-}
-.glyphicon-collapse-down:before {
-  content: "\e159";
-}
-.glyphicon-collapse-up:before {
-  content: "\e160";
-}
-.glyphicon-log-in:before {
-  content: "\e161";
-}
-.glyphicon-flash:before {
-  content: "\e162";
-}
-.glyphicon-log-out:before {
-  content: "\e163";
-}
-.glyphicon-new-window:before {
-  content: "\e164";
-}
-.glyphicon-record:before {
-  content: "\e165";
-}
-.glyphicon-save:before {
-  content: "\e166";
-}
-.glyphicon-open:before {
-  content: "\e167";
-}
-.glyphicon-saved:before {
-  content: "\e168";
-}
-.glyphicon-import:before {
-  content: "\e169";
-}
-.glyphicon-export:before {
-  content: "\e170";
-}
-.glyphicon-send:before {
-  content: "\e171";
-}
-.glyphicon-floppy-disk:before {
-  content: "\e172";
-}
-.glyphicon-floppy-saved:before {
-  content: "\e173";
-}
-.glyphicon-floppy-remove:before {
-  content: "\e174";
-}
-.glyphicon-floppy-save:before {
-  content: "\e175";
-}
-.glyphicon-floppy-open:before {
-  content: "\e176";
-}
-.glyphicon-credit-card:before {
-  content: "\e177";
-}
-.glyphicon-transfer:before {
-  content: "\e178";
-}
-.glyphicon-cutlery:before {
-  content: "\e179";
-}
-.glyphicon-header:before {
-  content: "\e180";
-}
-.glyphicon-compressed:before {
-  content: "\e181";
-}
-.glyphicon-earphone:before {
-  content: "\e182";
-}
-.glyphicon-phone-alt:before {
-  content: "\e183";
-}
-.glyphicon-tower:before {
-  content: "\e184";
-}
-.glyphicon-stats:before {
-  content: "\e185";
-}
-.glyphicon-sd-video:before {
-  content: "\e186";
-}
-.glyphicon-hd-video:before {
-  content: "\e187";
-}
-.glyphicon-subtitles:before {
-  content: "\e188";
-}
-.glyphicon-sound-stereo:before {
-  content: "\e189";
-}
-.glyphicon-sound-dolby:before {
-  content: "\e190";
-}
-.glyphicon-sound-5-1:before {
-  content: "\e191";
-}
-.glyphicon-sound-6-1:before {
-  content: "\e192";
-}
-.glyphicon-sound-7-1:before {
-  content: "\e193";
-}
-.glyphicon-copyright-mark:before {
-  content: "\e194";
-}
-.glyphicon-registration-mark:before {
-  content: "\e195";
-}
-.glyphicon-cloud-download:before {
-  content: "\e197";
-}
-.glyphicon-cloud-upload:before {
-  content: "\e198";
-}
-.glyphicon-tree-conifer:before {
-  content: "\e199";
-}
-.glyphicon-tree-deciduous:before {
-  content: "\e200";
-}
-* {
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-*:before,
-*:after {
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-html {
-  font-size: 10px;
-
-  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-}
-body {
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 14px;
-  line-height: 1.42857143;
-  color: #333;
-  background-color: #fff;
-}
-input,
-button,
-select,
-textarea {
-  font-family: inherit;
-  font-size: inherit;
-  line-height: inherit;
-}
-a {
-  color: #428bca;
-  text-decoration: none;
-}
-a:hover,
-a:focus {
-  color: #2a6496;
-  text-decoration: underline;
-}
-a:focus {
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-figure {
-  margin: 0;
-}
-img {
-  vertical-align: middle;
-}
-.img-responsive,
-.thumbnail > img,
-.thumbnail a > img,
-.carousel-inner > .item > img,
-.carousel-inner > .item > a > img {
-  display: block;
-  width: 100% \9;
-  max-width: 100%;
-  height: auto;
-}
-.img-rounded {
-  border-radius: 6px;
-}
-.img-thumbnail {
-  display: inline-block;
-  width: 100% \9;
-  max-width: 100%;
-  height: auto;
-  padding: 4px;
-  line-height: 1.42857143;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  border-radius: 4px;
-  -webkit-transition: all .2s ease-in-out;
-       -o-transition: all .2s ease-in-out;
-          transition: all .2s ease-in-out;
-}
-.img-circle {
-  border-radius: 50%;
-}
-hr {
-  margin-top: 20px;
-  margin-bottom: 20px;
-  border: 0;
-  border-top: 1px solid #eee;
-}
-.sr-only {
-  position: absolute;
-  width: 1px;
-  height: 1px;
-  padding: 0;
-  margin: -1px;
-  overflow: hidden;
-  clip: rect(0, 0, 0, 0);
-  border: 0;
-}
-.sr-only-focusable:active,
-.sr-only-focusable:focus {
-  position: static;
-  width: auto;
-  height: auto;
-  margin: 0;
-  overflow: visible;
-  clip: auto;
-}
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-.h1,
-.h2,
-.h3,
-.h4,
-.h5,
-.h6 {
-  font-family: inherit;
-  font-weight: 500;
-  line-height: 1.1;
-  color: inherit;
-}
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small,
-.h1 small,
-.h2 small,
-.h3 small,
-.h4 small,
-.h5 small,
-.h6 small,
-h1 .small,
-h2 .small,
-h3 .small,
-h4 .small,
-h5 .small,
-h6 .small,
-.h1 .small,
-.h2 .small,
-.h3 .small,
-.h4 .small,
-.h5 .small,
-.h6 .small {
-  font-weight: normal;
-  line-height: 1;
-  color: #777;
-}
-h1,
-.h1,
-h2,
-.h2,
-h3,
-.h3 {
-  margin-top: 20px;
-  margin-bottom: 10px;
-}
-h1 small,
-.h1 small,
-h2 small,
-.h2 small,
-h3 small,
-.h3 small,
-h1 .small,
-.h1 .small,
-h2 .small,
-.h2 .small,
-h3 .small,
-.h3 .small {
-  font-size: 65%;
-}
-h4,
-.h4,
-h5,
-.h5,
-h6,
-.h6 {
-  margin-top: 10px;
-  margin-bottom: 10px;
-}
-h4 small,
-.h4 small,
-h5 small,
-.h5 small,
-h6 small,
-.h6 small,
-h4 .small,
-.h4 .small,
-h5 .small,
-.h5 .small,
-h6 .small,
-.h6 .small {
-  font-size: 75%;
-}
-h1,
-.h1 {
-  font-size: 36px;
-}
-h2,
-.h2 {
-  font-size: 30px;
-}
-h3,
-.h3 {
-  font-size: 24px;
-}
-h4,
-.h4 {
-  font-size: 18px;
-}
-h5,
-.h5 {
-  font-size: 14px;
-}
-h6,
-.h6 {
-  font-size: 12px;
-}
-p {
-  margin: 0 0 10px;
-}
-.lead {
-  margin-bottom: 20px;
-  font-size: 16px;
-  font-weight: 300;
-  line-height: 1.4;
-}
-@media (min-width: 768px) {
-  .lead {
-    font-size: 21px;
-  }
-}
-small,
-.small {
-  font-size: 85%;
-}
-cite {
-  font-style: normal;
-}
-mark,
-.mark {
-  padding: .2em;
-  background-color: #fcf8e3;
-}
-.text-left {
-  text-align: left;
-}
-.text-right {
-  text-align: right;
-}
-.text-center {
-  text-align: center;
-}
-.text-justify {
-  text-align: justify;
-}
-.text-nowrap {
-  white-space: nowrap;
-}
-.text-lowercase {
-  text-transform: lowercase;
-}
-.text-uppercase {
-  text-transform: uppercase;
-}
-.text-capitalize {
-  text-transform: capitalize;
-}
-.text-muted {
-  color: #777;
-}
-.text-primary {
-  color: #428bca;
-}
-a.text-primary:hover {
-  color: #3071a9;
-}
-.text-success {
-  color: #3c763d;
-}
-a.text-success:hover {
-  color: #2b542c;
-}
-.text-info {
-  color: #31708f;
-}
-a.text-info:hover {
-  color: #245269;
-}
-.text-warning {
-  color: #8a6d3b;
-}
-a.text-warning:hover {
-  color: #66512c;
-}
-.text-danger {
-  color: #a94442;
-}
-a.text-danger:hover {
-  color: #843534;
-}
-.bg-primary {
-  color: #fff;
-  background-color: #428bca;
-}
-a.bg-primary:hover {
-  background-color: #3071a9;
-}
-.bg-success {
-  background-color: #dff0d8;
-}
-a.bg-success:hover {
-  background-color: #c1e2b3;
-}
-.bg-info {
-  background-color: #d9edf7;
-}
-a.bg-info:hover {
-  background-color: #afd9ee;
-}
-.bg-warning {
-  background-color: #fcf8e3;
-}
-a.bg-warning:hover {
-  background-color: #f7ecb5;
-}
-.bg-danger {
-  background-color: #f2dede;
-}
-a.bg-danger:hover {
-  background-color: #e4b9b9;
-}
-.page-header {
-  padding-bottom: 9px;
-  margin: 40px 0 20px;
-  border-bottom: 1px solid #eee;
-}
-ul,
-ol {
-  margin-top: 0;
-  margin-bottom: 10px;
-}
-ul ul,
-ol ul,
-ul ol,
-ol ol {
-  margin-bottom: 0;
-}
-.list-unstyled {
-  padding-left: 0;
-  list-style: none;
-}
-.list-inline {
-  padding-left: 0;
-  margin-left: -5px;
-  list-style: none;
-}
-.list-inline > li {
-  display: inline-block;
-  padding-right: 5px;
-  padding-left: 5px;
-}
-dl {
-  margin-top: 0;
-  margin-bottom: 20px;
-}
-dt,
-dd {
-  line-height: 1.42857143;
-}
-dt {
-  font-weight: bold;
-}
-dd {
-  margin-left: 0;
-}
-@media (min-width: 768px) {
-  .dl-horizontal dt {
-    float: left;
-    width: 160px;
-    overflow: hidden;
-    clear: left;
-    text-align: right;
-    text-overflow: ellipsis;
-    white-space: nowrap;
-  }
-  .dl-horizontal dd {
-    margin-left: 180px;
-  }
-}
-abbr[title],
-abbr[data-original-title] {
-  cursor: help;
-  border-bottom: 1px dotted #777;
-}
-.initialism {
-  font-size: 90%;
-  text-transform: uppercase;
-}
-blockquote {
-  padding: 10px 20px;
-  margin: 0 0 20px;
-  font-size: 17.5px;
-  border-left: 5px solid #eee;
-}
-blockquote p:last-child,
-blockquote ul:last-child,
-blockquote ol:last-child {
-  margin-bottom: 0;
-}
-blockquote footer,
-blockquote small,
-blockquote .small {
-  display: block;
-  font-size: 80%;
-  line-height: 1.42857143;
-  color: #777;
-}
-blockquote footer:before,
-blockquote small:before,
-blockquote .small:before {
-  content: '\2014 \00A0';
-}
-.blockquote-reverse,
-blockquote.pull-right {
-  padding-right: 15px;
-  padding-left: 0;
-  text-align: right;
-  border-right: 5px solid #eee;
-  border-left: 0;
-}
-.blockquote-reverse footer:before,
-blockquote.pull-right footer:before,
-.blockquote-reverse small:before,
-blockquote.pull-right small:before,
-.blockquote-reverse .small:before,
-blockquote.pull-right .small:before {
-  content: '';
-}
-.blockquote-reverse footer:after,
-blockquote.pull-right footer:after,
-.blockquote-reverse small:after,
-blockquote.pull-right small:after,
-.blockquote-reverse .small:after,
-blockquote.pull-right .small:after {
-  content: '\00A0 \2014';
-}
-blockquote:before,
-blockquote:after {
-  content: "";
-}
-address {
-  margin-bottom: 20px;
-  font-style: normal;
-  line-height: 1.42857143;
-}
-code,
-kbd,
-pre,
-samp {
-  font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
-}
-code {
-  padding: 2px 4px;
-  font-size: 90%;
-  color: #c7254e;
-  background-color: #f9f2f4;
-  border-radius: 4px;
-}
-kbd {
-  padding: 2px 4px;
-  font-size: 90%;
-  color: #fff;
-  background-color: #333;
-  border-radius: 3px;
-  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
-          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
-}
-kbd kbd {
-  padding: 0;
-  font-size: 100%;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-}
-pre {
-  display: block;
-  padding: 9.5px;
-  margin: 0 0 10px;
-  font-size: 13px;
-  line-height: 1.42857143;
-  color: #333;
-  word-break: break-all;
-  word-wrap: break-word;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc;
-  border-radius: 4px;
-}
-pre code {
-  padding: 0;
-  font-size: inherit;
-  color: inherit;
-  white-space: pre-wrap;
-  background-color: transparent;
-  border-radius: 0;
-}
-.pre-scrollable {
-  max-height: 340px;
-  overflow-y: scroll;
-}
-.container {
-  padding-right: 15px;
-  padding-left: 15px;
-  margin-right: auto;
-  margin-left: auto;
-}
-@media (min-width: 768px) {
-  .container {
-    width: 750px;
-  }
-}
-@media (min-width: 992px) {
-  .container {
-    width: 970px;
-  }
-}
-@media (min-width: 1200px) {
-  .container {
-    width: 1170px;
-  }
-}
-.container-fluid {
-  padding-right: 15px;
-  padding-left: 15px;
-  margin-right: auto;
-  margin-left: auto;
-}
-.row {
-  margin-right: -15px;
-  margin-left: -15px;
-}
-.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
-  position: relative;
-  min-height: 1px;
-  padding-right: 15px;
-  padding-left: 15px;
-}
-.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
-  float: left;
-}
-.col-xs-12 {
-  width: 100%;
-}
-.col-xs-11 {
-  width: 91.66666667%;
-}
-.col-xs-10 {
-  width: 83.33333333%;
-}
-.col-xs-9 {
-  width: 75%;
-}
-.col-xs-8 {
-  width: 66.66666667%;
-}
-.col-xs-7 {
-  width: 58.33333333%;
-}
-.col-xs-6 {
-  width: 50%;
-}
-.col-xs-5 {
-  width: 41.66666667%;
-}
-.col-xs-4 {
-  width: 33.33333333%;
-}
-.col-xs-3 {
-  width: 25%;
-}
-.col-xs-2 {
-  width: 16.66666667%;
-}
-.col-xs-1 {
-  width: 8.33333333%;
-}
-.col-xs-pull-12 {
-  right: 100%;
-}
-.col-xs-pull-11 {
-  right: 91.66666667%;
-}
-.col-xs-pull-10 {
-  right: 83.33333333%;
-}
-.col-xs-pull-9 {
-  right: 75%;
-}
-.col-xs-pull-8 {
-  right: 66.66666667%;
-}
-.col-xs-pull-7 {
-  right: 58.33333333%;
-}
-.col-xs-pull-6 {
-  right: 50%;
-}
-.col-xs-pull-5 {
-  right: 41.66666667%;
-}
-.col-xs-pull-4 {
-  right: 33.33333333%;
-}
-.col-xs-pull-3 {
-  right: 25%;
-}
-.col-xs-pull-2 {
-  right: 16.66666667%;
-}
-.col-xs-pull-1 {
-  right: 8.33333333%;
-}
-.col-xs-pull-0 {
-  right: auto;
-}
-.col-xs-push-12 {
-  left: 100%;
-}
-.col-xs-push-11 {
-  left: 91.66666667%;
-}
-.col-xs-push-10 {
-  left: 83.33333333%;
-}
-.col-xs-push-9 {
-  left: 75%;
-}
-.col-xs-push-8 {
-  left: 66.66666667%;
-}
-.col-xs-push-7 {
-  left: 58.33333333%;
-}
-.col-xs-push-6 {
-  left: 50%;
-}
-.col-xs-push-5 {
-  left: 41.66666667%;
-}
-.col-xs-push-4 {
-  left: 33.33333333%;
-}
-.col-xs-push-3 {
-  left: 25%;
-}
-.col-xs-push-2 {
-  left: 16.66666667%;
-}
-.col-xs-push-1 {
-  left: 8.33333333%;
-}
-.col-xs-push-0 {
-  left: auto;
-}
-.col-xs-offset-12 {
-  margin-left: 100%;
-}
-.col-xs-offset-11 {
-  margin-left: 91.66666667%;
-}
-.col-xs-offset-10 {
-  margin-left: 83.33333333%;
-}
-.col-xs-offset-9 {
-  margin-left: 75%;
-}
-.col-xs-offset-8 {
-  margin-left: 66.66666667%;
-}
-.col-xs-offset-7 {
-  margin-left: 58.33333333%;
-}
-.col-xs-offset-6 {
-  margin-left: 50%;
-}
-.col-xs-offset-5 {
-  margin-left: 41.66666667%;
-}
-.col-xs-offset-4 {
-  margin-left: 33.33333333%;
-}
-.col-xs-offset-3 {
-  margin-left: 25%;
-}
-.col-xs-offset-2 {
-  margin-left: 16.66666667%;
-}
-.col-xs-offset-1 {
-  margin-left: 8.33333333%;
-}
-.col-xs-offset-0 {
-  margin-left: 0;
-}
-@media (min-width: 768px) {
-  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
-    float: left;
-  }
-  .col-sm-12 {
-    width: 100%;
-  }
-  .col-sm-11 {
-    width: 91.66666667%;
-  }
-  .col-sm-10 {
-    width: 83.33333333%;
-  }
-  .col-sm-9 {
-    width: 75%;
-  }
-  .col-sm-8 {
-    width: 66.66666667%;
-  }
-  .col-sm-7 {
-    width: 58.33333333%;
-  }
-  .col-sm-6 {
-    width: 50%;
-  }
-  .col-sm-5 {
-    width: 41.66666667%;
-  }
-  .col-sm-4 {
-    width: 33.33333333%;
-  }
-  .col-sm-3 {
-    width: 25%;
-  }
-  .col-sm-2 {
-    width: 16.66666667%;
-  }
-  .col-sm-1 {
-    width: 8.33333333%;
-  }
-  .col-sm-pull-12 {
-    right: 100%;
-  }
-  .col-sm-pull-11 {
-    right: 91.66666667%;
-  }
-  .col-sm-pull-10 {
-    right: 83.33333333%;
-  }
-  .col-sm-pull-9 {
-    right: 75%;
-  }
-  .col-sm-pull-8 {
-    right: 66.66666667%;
-  }
-  .col-sm-pull-7 {
-    right: 58.33333333%;
-  }
-  .col-sm-pull-6 {
-    right: 50%;
-  }
-  .col-sm-pull-5 {
-    right: 41.66666667%;
-  }
-  .col-sm-pull-4 {
-    right: 33.33333333%;
-  }
-  .col-sm-pull-3 {
-    right: 25%;
-  }
-  .col-sm-pull-2 {
-    right: 16.66666667%;
-  }
-  .col-sm-pull-1 {
-    right: 8.33333333%;
-  }
-  .col-sm-pull-0 {
-    right: auto;
-  }
-  .col-sm-push-12 {
-    left: 100%;
-  }
-  .col-sm-push-11 {
-    left: 91.66666667%;
-  }
-  .col-sm-push-10 {
-    left: 83.33333333%;
-  }
-  .col-sm-push-9 {
-    left: 75%;
-  }
-  .col-sm-push-8 {
-    left: 66.66666667%;
-  }
-  .col-sm-push-7 {
-    left: 58.33333333%;
-  }
-  .col-sm-push-6 {
-    left: 50%;
-  }
-  .col-sm-push-5 {
-    left: 41.66666667%;
-  }
-  .col-sm-push-4 {
-    left: 33.33333333%;
-  }
-  .col-sm-push-3 {
-    left: 25%;
-  }
-  .col-sm-push-2 {
-    left: 16.66666667%;
-  }
-  .col-sm-push-1 {
-    left: 8.33333333%;
-  }
-  .col-sm-push-0 {
-    left: auto;
-  }
-  .col-sm-offset-12 {
-    margin-left: 100%;
-  }
-  .col-sm-offset-11 {
-    margin-left: 91.66666667%;
-  }
-  .col-sm-offset-10 {
-    margin-left: 83.33333333%;
-  }
-  .col-sm-offset-9 {
-    margin-left: 75%;
-  }
-  .col-sm-offset-8 {
-    margin-left: 66.66666667%;
-  }
-  .col-sm-offset-7 {
-    margin-left: 58.33333333%;
-  }
-  .col-sm-offset-6 {
-    margin-left: 50%;
-  }
-  .col-sm-offset-5 {
-    margin-left: 41.66666667%;
-  }
-  .col-sm-offset-4 {
-    margin-left: 33.33333333%;
-  }
-  .col-sm-offset-3 {
-    margin-left: 25%;
-  }
-  .col-sm-offset-2 {
-    margin-left: 16.66666667%;
-  }
-  .col-sm-offset-1 {
-    margin-left: 8.33333333%;
-  }
-  .col-sm-offset-0 {
-    margin-left: 0;
-  }
-}
-@media (min-width: 992px) {
-  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
-    float: left;
-  }
-  .col-md-12 {
-    width: 100%;
-  }
-  .col-md-11 {
-    width: 91.66666667%;
-  }
-  .col-md-10 {
-    width: 83.33333333%;
-  }
-  .col-md-9 {
-    width: 75%;
-  }
-  .col-md-8 {
-    width: 66.66666667%;
-  }
-  .col-md-7 {
-    width: 58.33333333%;
-  }
-  .col-md-6 {
-    width: 50%;
-  }
-  .col-md-5 {
-    width: 41.66666667%;
-  }
-  .col-md-4 {
-    width: 33.33333333%;
-  }
-  .col-md-3 {
-    width: 25%;
-  }
-  .col-md-2 {
-    width: 16.66666667%;
-  }
-  .col-md-1 {
-    width: 8.33333333%;
-  }
-  .col-md-pull-12 {
-    right: 100%;
-  }
-  .col-md-pull-11 {
-    right: 91.66666667%;
-  }
-  .col-md-pull-10 {
-    right: 83.33333333%;
-  }
-  .col-md-pull-9 {
-    right: 75%;
-  }
-  .col-md-pull-8 {
-    right: 66.66666667%;
-  }
-  .col-md-pull-7 {
-    right: 58.33333333%;
-  }
-  .col-md-pull-6 {
-    right: 50%;
-  }
-  .col-md-pull-5 {
-    right: 41.66666667%;
-  }
-  .col-md-pull-4 {
-    right: 33.33333333%;
-  }
-  .col-md-pull-3 {
-    right: 25%;
-  }
-  .col-md-pull-2 {
-    right: 16.66666667%;
-  }
-  .col-md-pull-1 {
-    right: 8.33333333%;
-  }
-  .col-md-pull-0 {
-    right: auto;
-  }
-  .col-md-push-12 {
-    left: 100%;
-  }
-  .col-md-push-11 {
-    left: 91.66666667%;
-  }
-  .col-md-push-10 {
-    left: 83.33333333%;
-  }
-  .col-md-push-9 {
-    left: 75%;
-  }
-  .col-md-push-8 {
-    left: 66.66666667%;
-  }
-  .col-md-push-7 {
-    left: 58.33333333%;
-  }
-  .col-md-push-6 {
-    left: 50%;
-  }
-  .col-md-push-5 {
-    left: 41.66666667%;
-  }
-  .col-md-push-4 {
-    left: 33.33333333%;
-  }
-  .col-md-push-3 {
-    left: 25%;
-  }
-  .col-md-push-2 {
-    left: 16.66666667%;
-  }
-  .col-md-push-1 {
-    left: 8.33333333%;
-  }
-  .col-md-push-0 {
-    left: auto;
-  }
-  .col-md-offset-12 {
-    margin-left: 100%;
-  }
-  .col-md-offset-11 {
-    margin-left: 91.66666667%;
-  }
-  .col-md-offset-10 {
-    margin-left: 83.33333333%;
-  }
-  .col-md-offset-9 {
-    margin-left: 75%;
-  }
-  .col-md-offset-8 {
-    margin-left: 66.66666667%;
-  }
-  .col-md-offset-7 {
-    margin-left: 58.33333333%;
-  }
-  .col-md-offset-6 {
-    margin-left: 50%;
-  }
-  .col-md-offset-5 {
-    margin-left: 41.66666667%;
-  }
-  .col-md-offset-4 {
-    margin-left: 33.33333333%;
-  }
-  .col-md-offset-3 {
-    margin-left: 25%;
-  }
-  .col-md-offset-2 {
-    margin-left: 16.66666667%;
-  }
-  .col-md-offset-1 {
-    margin-left: 8.33333333%;
-  }
-  .col-md-offset-0 {
-    margin-left: 0;
-  }
-}
-@media (min-width: 1200px) {
-  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
-    float: left;
-  }
-  .col-lg-12 {
-    width: 100%;
-  }
-  .col-lg-11 {
-    width: 91.66666667%;
-  }
-  .col-lg-10 {
-    width: 83.33333333%;
-  }
-  .col-lg-9 {
-    width: 75%;
-  }
-  .col-lg-8 {
-    width: 66.66666667%;
-  }
-  .col-lg-7 {
-    width: 58.33333333%;
-  }
-  .col-lg-6 {
-    width: 50%;
-  }
-  .col-lg-5 {
-    width: 41.66666667%;
-  }
-  .col-lg-4 {
-    width: 33.33333333%;
-  }
-  .col-lg-3 {
-    width: 25%;
-  }
-  .col-lg-2 {
-    width: 16.66666667%;
-  }
-  .col-lg-1 {
-    width: 8.33333333%;
-  }
-  .col-lg-pull-12 {
-    right: 100%;
-  }
-  .col-lg-pull-11 {
-    right: 91.66666667%;
-  }
-  .col-lg-pull-10 {
-    right: 83.33333333%;
-  }
-  .col-lg-pull-9 {
-    right: 75%;
-  }
-  .col-lg-pull-8 {
-    right: 66.66666667%;
-  }
-  .col-lg-pull-7 {
-    right: 58.33333333%;
-  }
-  .col-lg-pull-6 {
-    right: 50%;
-  }
-  .col-lg-pull-5 {
-    right: 41.66666667%;
-  }
-  .col-lg-pull-4 {
-    right: 33.33333333%;
-  }
-  .col-lg-pull-3 {
-    right: 25%;
-  }
-  .col-lg-pull-2 {
-    right: 16.66666667%;
-  }
-  .col-lg-pull-1 {
-    right: 8.33333333%;
-  }
-  .col-lg-pull-0 {
-    right: auto;
-  }
-  .col-lg-push-12 {
-    left: 100%;
-  }
-  .col-lg-push-11 {
-    left: 91.66666667%;
-  }
-  .col-lg-push-10 {
-    left: 83.33333333%;
-  }
-  .col-lg-push-9 {
-    left: 75%;
-  }
-  .col-lg-push-8 {
-    left: 66.66666667%;
-  }
-  .col-lg-push-7 {
-    left: 58.33333333%;
-  }
-  .col-lg-push-6 {
-    left: 50%;
-  }
-  .col-lg-push-5 {
-    left: 41.66666667%;
-  }
-  .col-lg-push-4 {
-    left: 33.33333333%;
-  }
-  .col-lg-push-3 {
-    left: 25%;
-  }
-  .col-lg-push-2 {
-    left: 16.66666667%;
-  }
-  .col-lg-push-1 {
-    left: 8.33333333%;
-  }
-  .col-lg-push-0 {
-    left: auto;
-  }
-  .col-lg-offset-12 {
-    margin-left: 100%;
-  }
-  .col-lg-offset-11 {
-    margin-left: 91.66666667%;
-  }
-  .col-lg-offset-10 {
-    margin-left: 83.33333333%;
-  }
-  .col-lg-offset-9 {
-    margin-left: 75%;
-  }
-  .col-lg-offset-8 {
-    margin-left: 66.66666667%;
-  }
-  .col-lg-offset-7 {
-    margin-left: 58.33333333%;
-  }
-  .col-lg-offset-6 {
-    margin-left: 50%;
-  }
-  .col-lg-offset-5 {
-    margin-left: 41.66666667%;
-  }
-  .col-lg-offset-4 {
-    margin-left: 33.33333333%;
-  }
-  .col-lg-offset-3 {
-    margin-left: 25%;
-  }
-  .col-lg-offset-2 {
-    margin-left: 16.66666667%;
-  }
-  .col-lg-offset-1 {
-    margin-left: 8.33333333%;
-  }
-  .col-lg-offset-0 {
-    margin-left: 0;
-  }
-}
-table {
-  background-color: transparent;
-}
-th {
-  text-align: left;
-}
-.table {
-  width: 100%;
-  max-width: 100%;
-  margin-bottom: 20px;
-}
-.table > thead > tr > th,
-.table > tbody > tr > th,
-.table > tfoot > tr > th,
-.table > thead > tr > td,
-.table > tbody > tr > td,
-.table > tfoot > tr > td {
-  padding: 8px;
-  line-height: 1.42857143;
-  vertical-align: top;
-  border-top: 1px solid #ddd;
-}
-.table > thead > tr > th {
-  vertical-align: bottom;
-  border-bottom: 2px solid #ddd;
-}
-.table > caption + thead > tr:first-child > th,
-.table > colgroup + thead > tr:first-child > th,
-.table > thead:first-child > tr:first-child > th,
-.table > caption + thead > tr:first-child > td,
-.table > colgroup + thead > tr:first-child > td,
-.table > thead:first-child > tr:first-child > td {
-  border-top: 0;
-}
-.table > tbody + tbody {
-  border-top: 2px solid #ddd;
-}
-.table .table {
-  background-color: #fff;
-}
-.table-condensed > thead > tr > th,
-.table-condensed > tbody > tr > th,
-.table-condensed > tfoot > tr > th,
-.table-condensed > thead > tr > td,
-.table-condensed > tbody > tr > td,
-.table-condensed > tfoot > tr > td {
-  padding: 5px;
-}
-.table-bordered {
-  border: 1px solid #ddd;
-}
-.table-bordered > thead > tr > th,
-.table-bordered > tbody > tr > th,
-.table-bordered > tfoot > tr > th,
-.table-bordered > thead > tr > td,
-.table-bordered > tbody > tr > td,
-.table-bordered > tfoot > tr > td {
-  border: 1px solid #ddd;
-}
-.table-bordered > thead > tr > th,
-.table-bordered > thead > tr > td {
-  border-bottom-width: 2px;
-}
-.table-striped > tbody > tr:nth-child(odd) > td,
-.table-striped > tbody > tr:nth-child(odd) > th {
-  background-color: #f9f9f9;
-}
-.table-hover > tbody > tr:hover > td,
-.table-hover > tbody > tr:hover > th {
-  background-color: #f5f5f5;
-}
-table col[class*="col-"] {
-  position: static;
-  display: table-column;
-  float: none;
-}
-table td[class*="col-"],
-table th[class*="col-"] {
-  position: static;
-  display: table-cell;
-  float: none;
-}
-.table > thead > tr > td.active,
-.table > tbody > tr > td.active,
-.table > tfoot > tr > td.active,
-.table > thead > tr > th.active,
-.table > tbody > tr > th.active,
-.table > tfoot > tr > th.active,
-.table > thead > tr.active > td,
-.table > tbody > tr.active > td,
-.table > tfoot > tr.active > td,
-.table > thead > tr.active > th,
-.table > tbody > tr.active > th,
-.table > tfoot > tr.active > th {
-  background-color: #f5f5f5;
-}
-.table-hover > tbody > tr > td.active:hover,
-.table-hover > tbody > tr > th.active:hover,
-.table-hover > tbody > tr.active:hover > td,
-.table-hover > tbody > tr:hover > .active,
-.table-hover > tbody > tr.active:hover > th {
-  background-color: #e8e8e8;
-}
-.table > thead > tr > td.success,
-.table > tbody > tr > td.success,
-.table > tfoot > tr > td.success,
-.table > thead > tr > th.success,
-.table > tbody > tr > th.success,
-.table > tfoot > tr > th.success,
-.table > thead > tr.success > td,
-.table > tbody > tr.success > td,
-.table > tfoot > tr.success > td,
-.table > thead > tr.success > th,
-.table > tbody > tr.success > th,
-.table > tfoot > tr.success > th {
-  background-color: #dff0d8;
-}
-.table-hover > tbody > tr > td.success:hover,
-.table-hover > tbody > tr > th.success:hover,
-.table-hover > tbody > tr.success:hover > td,
-.table-hover > tbody > tr:hover > .success,
-.table-hover > tbody > tr.success:hover > th {
-  background-color: #d0e9c6;
-}
-.table > thead > tr > td.info,
-.table > tbody > tr > td.info,
-.table > tfoot > tr > td.info,
-.table > thead > tr > th.info,
-.table > tbody > tr > th.info,
-.table > tfoot > tr > th.info,
-.table > thead > tr.info > td,
-.table > tbody > tr.info > td,
-.table > tfoot > tr.info > td,
-.table > thead > tr.info > th,
-.table > tbody > tr.info > th,
-.table > tfoot > tr.info > th {
-  background-color: #d9edf7;
-}
-.table-hover > tbody > tr > td.info:hover,
-.table-hover > tbody > tr > th.info:hover,
-.table-hover > tbody > tr.info:hover > td,
-.table-hover > tbody > tr:hover > .info,
-.table-hover > tbody > tr.info:hover > th {
-  background-color: #c4e3f3;
-}
-.table > thead > tr > td.warning,
-.table > tbody > tr > td.warning,
-.table > tfoot > tr > td.warning,
-.table > thead > tr > th.warning,
-.table > tbody > tr > th.warning,
-.table > tfoot > tr > th.warning,
-.table > thead > tr.warning > td,
-.table > tbody > tr.warning > td,
-.table > tfoot > tr.warning > td,
-.table > thead > tr.warning > th,
-.table > tbody > tr.warning > th,
-.table > tfoot > tr.warning > th {
-  background-color: #fcf8e3;
-}
-.table-hover > tbody > tr > td.warning:hover,
-.table-hover > tbody > tr > th.warning:hover,
-.table-hover > tbody > tr.warning:hover > td,
-.table-hover > tbody > tr:hover > .warning,
-.table-hover > tbody > tr.warning:hover > th {
-  background-color: #faf2cc;
-}
-.table > thead > tr > td.danger,
-.table > tbody > tr > td.danger,
-.table > tfoot > tr > td.danger,
-.table > thead > tr > th.danger,
-.table > tbody > tr > th.danger,
-.table > tfoot > tr > th.danger,
-.table > thead > tr.danger > td,
-.table > tbody > tr.danger > td,
-.table > tfoot > tr.danger > td,
-.table > thead > tr.danger > th,
-.table > tbody > tr.danger > th,
-.table > tfoot > tr.danger > th {
-  background-color: #f2dede;
-}
-.table-hover > tbody > tr > td.danger:hover,
-.table-hover > tbody > tr > th.danger:hover,
-.table-hover > tbody > tr.danger:hover > td,
-.table-hover > tbody > tr:hover > .danger,
-.table-hover > tbody > tr.danger:hover > th {
-  background-color: #ebcccc;
-}
-@media screen and (max-width: 767px) {
-  .table-responsive {
-    width: 100%;
-    margin-bottom: 15px;
-    overflow-x: auto;
-    overflow-y: hidden;
-    -webkit-overflow-scrolling: touch;
-    -ms-overflow-style: -ms-autohiding-scrollbar;
-    border: 1px solid #ddd;
-  }
-  .table-responsive > .table {
-    margin-bottom: 0;
-  }
-  .table-responsive > .table > thead > tr > th,
-  .table-responsive > .table > tbody > tr > th,
-  .table-responsive > .table > tfoot > tr > th,
-  .table-responsive > .table > thead > tr > td,
-  .table-responsive > .table > tbody > tr > td,
-  .table-responsive > .table > tfoot > tr > td {
-    white-space: nowrap;
-  }
-  .table-responsive > .table-bordered {
-    border: 0;
-  }
-  .table-responsive > .table-bordered > thead > tr > th:first-child,
-  .table-responsive > .table-bordered > tbody > tr > th:first-child,
-  .table-responsive > .table-bordered > tfoot > tr > th:first-child,
-  .table-responsive > .table-bordered > thead > tr > td:first-child,
-  .table-responsive > .table-bordered > tbody > tr > td:first-child,
-  .table-responsive > .table-bordered > tfoot > tr > td:first-child {
-    border-left: 0;
-  }
-  .table-responsive > .table-bordered > thead > tr > th:last-child,
-  .table-responsive > .table-bordered > tbody > tr > th:last-child,
-  .table-responsive > .table-bordered > tfoot > tr > th:last-child,
-  .table-responsive > .table-bordered > thead > tr > td:last-child,
-  .table-responsive > .table-bordered > tbody > tr > td:last-child,
-  .table-responsive > .table-bordered > tfoot > tr > td:last-child {
-    border-right: 0;
-  }
-  .table-responsive > .table-bordered > tbody > tr:last-child > th,
-  .table-responsive > .table-bordered > tfoot > tr:last-child > th,
-  .table-responsive > .table-bordered > tbody > tr:last-child > td,
-  .table-responsive > .table-bordered > tfoot > tr:last-child > td {
-    border-bottom: 0;
-  }
-}
-fieldset {
-  min-width: 0;
-  padding: 0;
-  margin: 0;
-  border: 0;
-}
-legend {
-  display: block;
-  width: 100%;
-  padding: 0;
-  margin-bottom: 20px;
-  font-size: 21px;
-  line-height: inherit;
-  color: #333;
-  border: 0;
-  border-bottom: 1px solid #e5e5e5;
-}
-label {
-  display: inline-block;
-  max-width: 100%;
-  margin-bottom: 5px;
-  font-weight: bold;
-}
-input[type="search"] {
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-input[type="radio"],
-input[type="checkbox"] {
-  margin: 4px 0 0;
-  margin-top: 1px \9;
-  line-height: normal;
-}
-input[type="file"] {
-  display: block;
-}
-input[type="range"] {
-  display: block;
-  width: 100%;
-}
-select[multiple],
-select[size] {
-  height: auto;
-}
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus {
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-output {
-  display: block;
-  padding-top: 7px;
-  font-size: 14px;
-  line-height: 1.42857143;
-  color: #555;
-}
-.form-control {
-  display: block;
-  width: 100%;
-  height: 34px;
-  padding: 6px 12px;
-  font-size: 14px;
-  line-height: 1.42857143;
-  color: #555;
-  background-color: #fff;
-  background-image: none;
-  border: 1px solid #ccc;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-  -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
-       -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
-          transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
-}
-.form-control:focus {
-  border-color: #66afe9;
-  outline: 0;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
-          box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
-}
-.form-control::-moz-placeholder {
-  color: #777;
-  opacity: 1;
-}
-.form-control:-ms-input-placeholder {
-  color: #777;
-}
-.form-control::-webkit-input-placeholder {
-  color: #777;
-}
-.form-control[disabled],
-.form-control[readonly],
-fieldset[disabled] .form-control {
-  cursor: not-allowed;
-  background-color: #eee;
-  opacity: 1;
-}
-textarea.form-control {
-  height: auto;
-}
-input[type="search"] {
-  -webkit-appearance: none;
-}
-input[type="date"],
-input[type="time"],
-input[type="datetime-local"],
-input[type="month"] {
-  line-height: 34px;
-  line-height: 1.42857143 \0;
-}
-input[type="date"].input-sm,
-input[type="time"].input-sm,
-input[type="datetime-local"].input-sm,
-input[type="month"].input-sm {
-  line-height: 30px;
-}
-input[type="date"].input-lg,
-input[type="time"].input-lg,
-input[type="datetime-local"].input-lg,
-input[type="month"].input-lg {
-  line-height: 46px;
-}
-.form-group {
-  margin-bottom: 15px;
-}
-.radio,
-.checkbox {
-  position: relative;
-  display: block;
-  min-height: 20px;
-  margin-top: 10px;
-  margin-bottom: 10px;
-}
-.radio label,
-.checkbox label {
-  padding-left: 20px;
-  margin-bottom: 0;
-  font-weight: normal;
-  cursor: pointer;
-}
-.radio input[type="radio"],
-.radio-inline input[type="radio"],
-.checkbox input[type="checkbox"],
-.checkbox-inline input[type="checkbox"] {
-  position: absolute;
-  margin-top: 4px \9;
-  margin-left: -20px;
-}
-.radio + .radio,
-.checkbox + .checkbox {
-  margin-top: -5px;
-}
-.radio-inline,
-.checkbox-inline {
-  display: inline-block;
-  padding-left: 20px;
-  margin-bottom: 0;
-  font-weight: normal;
-  vertical-align: middle;
-  cursor: pointer;
-}
-.radio-inline + .radio-inline,
-.checkbox-inline + .checkbox-inline {
-  margin-top: 0;
-  margin-left: 10px;
-}
-input[type="radio"][disabled],
-input[type="checkbox"][disabled],
-input[type="radio"].disabled,
-input[type="checkbox"].disabled,
-fieldset[disabled] input[type="radio"],
-fieldset[disabled] input[type="checkbox"] {
-  cursor: not-allowed;
-}
-.radio-inline.disabled,
-.checkbox-inline.disabled,
-fieldset[disabled] .radio-inline,
-fieldset[disabled] .checkbox-inline {
-  cursor: not-allowed;
-}
-.radio.disabled label,
-.checkbox.disabled label,
-fieldset[disabled] .radio label,
-fieldset[disabled] .checkbox label {
-  cursor: not-allowed;
-}
-.form-control-static {
-  padding-top: 7px;
-  padding-bottom: 7px;
-  margin-bottom: 0;
-}
-.form-control-static.input-lg,
-.form-control-static.input-sm {
-  padding-right: 0;
-  padding-left: 0;
-}
-.input-sm,
-.form-horizontal .form-group-sm .form-control {
-  height: 30px;
-  padding: 5px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-select.input-sm {
-  height: 30px;
-  line-height: 30px;
-}
-textarea.input-sm,
-select[multiple].input-sm {
-  height: auto;
-}
-.input-lg,
-.form-horizontal .form-group-lg .form-control {
-  height: 46px;
-  padding: 10px 16px;
-  font-size: 18px;
-  line-height: 1.33;
-  border-radius: 6px;
-}
-select.input-lg {
-  height: 46px;
-  line-height: 46px;
-}
-textarea.input-lg,
-select[multiple].input-lg {
-  height: auto;
-}
-.has-feedback {
-  position: relative;
-}
-.has-feedback .form-control {
-  padding-right: 42.5px;
-}
-.form-control-feedback {
-  position: absolute;
-  top: 25px;
-  right: 0;
-  z-index: 2;
-  display: block;
-  width: 34px;
-  height: 34px;
-  line-height: 34px;
-  text-align: center;
-}
-.input-lg + .form-control-feedback {
-  width: 46px;
-  height: 46px;
-  line-height: 46px;
-}
-.input-sm + .form-control-feedback {
-  width: 30px;
-  height: 30px;
-  line-height: 30px;
-}
-.has-success .help-block,
-.has-success .control-label,
-.has-success .radio,
-.has-success .checkbox,
-.has-success .radio-inline,
-.has-success .checkbox-inline {
-  color: #3c763d;
-}
-.has-success .form-control {
-  border-color: #3c763d;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-}
-.has-success .form-control:focus {
-  border-color: #2b542c;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
-}
-.has-success .input-group-addon {
-  color: #3c763d;
-  background-color: #dff0d8;
-  border-color: #3c763d;
-}
-.has-success .form-control-feedback {
-  color: #3c763d;
-}
-.has-warning .help-block,
-.has-warning .control-label,
-.has-warning .radio,
-.has-warning .checkbox,
-.has-warning .radio-inline,
-.has-warning .checkbox-inline {
-  color: #8a6d3b;
-}
-.has-warning .form-control {
-  border-color: #8a6d3b;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-}
-.has-warning .form-control:focus {
-  border-color: #66512c;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
-}
-.has-warning .input-group-addon {
-  color: #8a6d3b;
-  background-color: #fcf8e3;
-  border-color: #8a6d3b;
-}
-.has-warning .form-control-feedback {
-  color: #8a6d3b;
-}
-.has-error .help-block,
-.has-error .control-label,
-.has-error .radio,
-.has-error .checkbox,
-.has-error .radio-inline,
-.has-error .checkbox-inline {
-  color: #a94442;
-}
-.has-error .form-control {
-  border-color: #a94442;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-}
-.has-error .form-control:focus {
-  border-color: #843534;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
-}
-.has-error .input-group-addon {
-  color: #a94442;
-  background-color: #f2dede;
-  border-color: #a94442;
-}
-.has-error .form-control-feedback {
-  color: #a94442;
-}
-.has-feedback label.sr-only ~ .form-control-feedback {
-  top: 0;
-}
-.help-block {
-  display: block;
-  margin-top: 5px;
-  margin-bottom: 10px;
-  color: #737373;
-}
-@media (min-width: 768px) {
-  .form-inline .form-group {
-    display: inline-block;
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .form-inline .form-control {
-    display: inline-block;
-    width: auto;
-    vertical-align: middle;
-  }
-  .form-inline .input-group {
-    display: inline-table;
-    vertical-align: middle;
-  }
-  .form-inline .input-group .input-group-addon,
-  .form-inline .input-group .input-group-btn,
-  .form-inline .input-group .form-control {
-    width: auto;
-  }
-  .form-inline .input-group > .form-control {
-    width: 100%;
-  }
-  .form-inline .control-label {
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .form-inline .radio,
-  .form-inline .checkbox {
-    display: inline-block;
-    margin-top: 0;
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .form-inline .radio label,
-  .form-inline .checkbox label {
-    padding-left: 0;
-  }
-  .form-inline .radio input[type="radio"],
-  .form-inline .checkbox input[type="checkbox"] {
-    position: relative;
-    margin-left: 0;
-  }
-  .form-inline .has-feedback .form-control-feedback {
-    top: 0;
-  }
-}
-.form-horizontal .radio,
-.form-horizontal .checkbox,
-.form-horizontal .radio-inline,
-.form-horizontal .checkbox-inline {
-  padding-top: 7px;
-  margin-top: 0;
-  margin-bottom: 0;
-}
-.form-horizontal .radio,
-.form-horizontal .checkbox {
-  min-height: 27px;
-}
-.form-horizontal .form-group {
-  margin-right: -15px;
-  margin-left: -15px;
-}
-@media (min-width: 768px) {
-  .form-horizontal .control-label {
-    padding-top: 7px;
-    margin-bottom: 0;
-    text-align: right;
-  }
-}
-.form-horizontal .has-feedback .form-control-feedback {
-  top: 0;
-  right: 15px;
-}
-@media (min-width: 768px) {
-  .form-horizontal .form-group-lg .control-label {
-    padding-top: 14.3px;
-  }
-}
-@media (min-width: 768px) {
-  .form-horizontal .form-group-sm .control-label {
-    padding-top: 6px;
-  }
-}
-.btn {
-  display: inline-block;
-  padding: 6px 12px;
-  margin-bottom: 0;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 1.42857143;
-  text-align: center;
-  white-space: nowrap;
-  vertical-align: middle;
-  cursor: pointer;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  background-image: none;
-  border: 1px solid transparent;
-  border-radius: 4px;
-}
-.btn:focus,
-.btn:active:focus,
-.btn.active:focus {
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-.btn:hover,
-.btn:focus {
-  color: #333;
-  text-decoration: none;
-}
-.btn:active,
-.btn.active {
-  background-image: none;
-  outline: 0;
-  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
-          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
-}
-.btn.disabled,
-.btn[disabled],
-fieldset[disabled] .btn {
-  pointer-events: none;
-  cursor: not-allowed;
-  filter: alpha(opacity=65);
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  opacity: .65;
-}
-.btn-default {
-  color: #333;
-  background-color: #fff;
-  border-color: #ccc;
-}
-.btn-default:hover,
-.btn-default:focus,
-.btn-default:active,
-.btn-default.active,
-.open > .dropdown-toggle.btn-default {
-  color: #333;
-  background-color: #e6e6e6;
-  border-color: #adadad;
-}
-.btn-default:active,
-.btn-default.active,
-.open > .dropdown-toggle.btn-default {
-  background-image: none;
-}
-.btn-default.disabled,
-.btn-default[disabled],
-fieldset[disabled] .btn-default,
-.btn-default.disabled:hover,
-.btn-default[disabled]:hover,
-fieldset[disabled] .btn-default:hover,
-.btn-default.disabled:focus,
-.btn-default[disabled]:focus,
-fieldset[disabled] .btn-default:focus,
-.btn-default.disabled:active,
-.btn-default[disabled]:active,
-fieldset[disabled] .btn-default:active,
-.btn-default.disabled.active,
-.btn-default[disabled].active,
-fieldset[disabled] .btn-default.active {
-  background-color: #fff;
-  border-color: #ccc;
-}
-.btn-default .badge {
-  color: #fff;
-  background-color: #333;
-}
-.btn-primary {
-  color: #fff;
-  background-color: #428bca;
-  border-color: #357ebd;
-}
-.btn-primary:hover,
-.btn-primary:focus,
-.btn-primary:active,
-.btn-primary.active,
-.open > .dropdown-toggle.btn-primary {
-  color: #fff;
-  background-color: #3071a9;
-  border-color: #285e8e;
-}
-.btn-primary:active,
-.btn-primary.active,
-.open > .dropdown-toggle.btn-primary {
-  background-image: none;
-}
-.btn-primary.disabled,
-.btn-primary[disabled],
-fieldset[disabled] .btn-primary,
-.btn-primary.disabled:hover,
-.btn-primary[disabled]:hover,
-fieldset[disabled] .btn-primary:hover,
-.btn-primary.disabled:focus,
-.btn-primary[disabled]:focus,
-fieldset[disabled] .btn-primary:focus,
-.btn-primary.disabled:active,
-.btn-primary[disabled]:active,
-fieldset[disabled] .btn-primary:active,
-.btn-primary.disabled.active,
-.btn-primary[disabled].active,
-fieldset[disabled] .btn-primary.active {
-  background-color: #428bca;
-  border-color: #357ebd;
-}
-.btn-primary .badge {
-  color: #428bca;
-  background-color: #fff;
-}
-.btn-success {
-  color: #fff;
-  background-color: #5cb85c;
-  border-color: #4cae4c;
-}
-.btn-success:hover,
-.btn-success:focus,
-.btn-success:active,
-.btn-success.active,
-.open > .dropdown-toggle.btn-success {
-  color: #fff;
-  background-color: #449d44;
-  border-color: #398439;
-}
-.btn-success:active,
-.btn-success.active,
-.open > .dropdown-toggle.btn-success {
-  background-image: none;
-}
-.btn-success.disabled,
-.btn-success[disabled],
-fieldset[disabled] .btn-success,
-.btn-success.disabled:hover,
-.btn-success[disabled]:hover,
-fieldset[disabled] .btn-success:hover,
-.btn-success.disabled:focus,
-.btn-success[disabled]:focus,
-fieldset[disabled] .btn-success:focus,
-.btn-success.disabled:active,
-.btn-success[disabled]:active,
-fieldset[disabled] .btn-success:active,
-.btn-success.disabled.active,
-.btn-success[disabled].active,
-fieldset[disabled] .btn-success.active {
-  background-color: #5cb85c;
-  border-color: #4cae4c;
-}
-.btn-success .badge {
-  color: #5cb85c;
-  background-color: #fff;
-}
-.btn-info {
-  color: #fff;
-  background-color: #5bc0de;
-  border-color: #46b8da;
-}
-.btn-info:hover,
-.btn-info:focus,
-.btn-info:active,
-.btn-info.active,
-.open > .dropdown-toggle.btn-info {
-  color: #fff;
-  background-color: #31b0d5;
-  border-color: #269abc;
-}
-.btn-info:active,
-.btn-info.active,
-.open > .dropdown-toggle.btn-info {
-  background-image: none;
-}
-.btn-info.disabled,
-.btn-info[disabled],
-fieldset[disabled] .btn-info,
-.btn-info.disabled:hover,
-.btn-info[disabled]:hover,
-fieldset[disabled] .btn-info:hover,
-.btn-info.disabled:focus,
-.btn-info[disabled]:focus,
-fieldset[disabled] .btn-info:focus,
-.btn-info.disabled:active,
-.btn-info[disabled]:active,
-fieldset[disabled] .btn-info:active,
-.btn-info.disabled.active,
-.btn-info[disabled].active,
-fieldset[disabled] .btn-info.active {
-  background-color: #5bc0de;
-  border-color: #46b8da;
-}
-.btn-info .badge {
-  color: #5bc0de;
-  background-color: #fff;
-}
-.btn-warning {
-  color: #fff;
-  background-color: #f0ad4e;
-  border-color: #eea236;
-}
-.btn-warning:hover,
-.btn-warning:focus,
-.btn-warning:active,
-.btn-warning.active,
-.open > .dropdown-toggle.btn-warning {
-  color: #fff;
-  background-color: #ec971f;
-  border-color: #d58512;
-}
-.btn-warning:active,
-.btn-warning.active,
-.open > .dropdown-toggle.btn-warning {
-  background-image: none;
-}
-.btn-warning.disabled,
-.btn-warning[disabled],
-fieldset[disabled] .btn-warning,
-.btn-warning.disabled:hover,
-.btn-warning[disabled]:hover,
-fieldset[disabled] .btn-warning:hover,
-.btn-warning.disabled:focus,
-.btn-warning[disabled]:focus,
-fieldset[disabled] .btn-warning:focus,
-.btn-warning.disabled:active,
-.btn-warning[disabled]:active,
-fieldset[disabled] .btn-warning:active,
-.btn-warning.disabled.active,
-.btn-warning[disabled].active,
-fieldset[disabled] .btn-warning.active {
-  background-color: #f0ad4e;
-  border-color: #eea236;
-}
-.btn-warning .badge {
-  color: #f0ad4e;
-  background-color: #fff;
-}
-.btn-danger {
-  color: #fff;
-  background-color: #d9534f;
-  border-color: #d43f3a;
-}
-.btn-danger:hover,
-.btn-danger:focus,
-.btn-danger:active,
-.btn-danger.active,
-.open > .dropdown-toggle.btn-danger {
-  color: #fff;
-  background-color: #c9302c;
-  border-color: #ac2925;
-}
-.btn-danger:active,
-.btn-danger.active,
-.open > .dropdown-toggle.btn-danger {
-  background-image: none;
-}
-.btn-danger.disabled,
-.btn-danger[disabled],
-fieldset[disabled] .btn-danger,
-.btn-danger.disabled:hover,
-.btn-danger[disabled]:hover,
-fieldset[disabled] .btn-danger:hover,
-.btn-danger.disabled:focus,
-.btn-danger[disabled]:focus,
-fieldset[disabled] .btn-danger:focus,
-.btn-danger.disabled:active,
-.btn-danger[disabled]:active,
-fieldset[disabled] .btn-danger:active,
-.btn-danger.disabled.active,
-.btn-danger[disabled].active,
-fieldset[disabled] .btn-danger.active {
-  background-color: #d9534f;
-  border-color: #d43f3a;
-}
-.btn-danger .badge {
-  color: #d9534f;
-  background-color: #fff;
-}
-.btn-link {
-  font-weight: normal;
-  color: #428bca;
-  cursor: pointer;
-  border-radius: 0;
-}
-.btn-link,
-.btn-link:active,
-.btn-link[disabled],
-fieldset[disabled] .btn-link {
-  background-color: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-}
-.btn-link,
-.btn-link:hover,
-.btn-link:focus,
-.btn-link:active {
-  border-color: transparent;
-}
-.btn-link:hover,
-.btn-link:focus {
-  color: #2a6496;
-  text-decoration: underline;
-  background-color: transparent;
-}
-.btn-link[disabled]:hover,
-fieldset[disabled] .btn-link:hover,
-.btn-link[disabled]:focus,
-fieldset[disabled] .btn-link:focus {
-  color: #777;
-  text-decoration: none;
-}
-.btn-lg,
-.btn-group-lg > .btn {
-  padding: 10px 16px;
-  font-size: 18px;
-  line-height: 1.33;
-  border-radius: 6px;
-}
-.btn-sm,
-.btn-group-sm > .btn {
-  padding: 5px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-.btn-xs,
-.btn-group-xs > .btn {
-  padding: 1px 5px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-.btn-block {
-  display: block;
-  width: 100%;
-}
-.btn-block + .btn-block {
-  margin-top: 5px;
-}
-input[type="submit"].btn-block,
-input[type="reset"].btn-block,
-input[type="button"].btn-block {
-  width: 100%;
-}
-.fade {
-  opacity: 0;
-  -webkit-transition: opacity .15s linear;
-       -o-transition: opacity .15s linear;
-          transition: opacity .15s linear;
-}
-.fade.in {
-  opacity: 1;
-}
-.collapse {
-  display: none;
-}
-.collapse.in {
-  display: block;
-}
-tr.collapse.in {
-  display: table-row;
-}
-tbody.collapse.in {
-  display: table-row-group;
-}
-.collapsing {
-  position: relative;
-  height: 0;
-  overflow: hidden;
-  -webkit-transition: height .35s ease;
-       -o-transition: height .35s ease;
-          transition: height .35s ease;
-}
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  margin-left: 2px;
-  vertical-align: middle;
-  border-top: 4px solid;
-  border-right: 4px solid transparent;
-  border-left: 4px solid transparent;
-}
-.dropdown {
-  position: relative;
-}
-.dropdown-toggle:focus {
-  outline: 0;
-}
-.dropdown-menu {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: 1000;
-  display: none;
-  float: left;
-  min-width: 160px;
-  padding: 5px 0;
-  margin: 2px 0 0;
-  font-size: 14px;
-  text-align: left;
-  list-style: none;
-  background-color: #fff;
-  -webkit-background-clip: padding-box;
-          background-clip: padding-box;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, .15);
-  border-radius: 4px;
-  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
-          box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
-}
-.dropdown-menu.pull-right {
-  right: 0;
-  left: auto;
-}
-.dropdown-menu .divider {
-  height: 1px;
-  margin: 9px 0;
-  overflow: hidden;
-  background-color: #e5e5e5;
-}
-.dropdown-menu > li > a {
-  display: block;
-  padding: 3px 20px;
-  clear: both;
-  font-weight: normal;
-  line-height: 1.42857143;
-  color: #333;
-  white-space: nowrap;
-}
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > a:focus {
-  color: #262626;
-  text-decoration: none;
-  background-color: #f5f5f5;
-}
-.dropdown-menu > .active > a,
-.dropdown-menu > .active > a:hover,
-.dropdown-menu > .active > a:focus {
-  color: #fff;
-  text-decoration: none;
-  background-color: #428bca;
-  outline: 0;
-}
-.dropdown-menu > .disabled > a,
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  color: #777;
-}
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  text-decoration: none;
-  cursor: not-allowed;
-  background-color: transparent;
-  background-image: none;
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.open > .dropdown-menu {
-  display: block;
-}
-.open > a {
-  outline: 0;
-}
-.dropdown-menu-right {
-  right: 0;
-  left: auto;
-}
-.dropdown-menu-left {
-  right: auto;
-  left: 0;
-}
-.dropdown-header {
-  display: block;
-  padding: 3px 20px;
-  font-size: 12px;
-  line-height: 1.42857143;
-  color: #777;
-  white-space: nowrap;
-}
-.dropdown-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 990;
-}
-.pull-right > .dropdown-menu {
-  right: 0;
-  left: auto;
-}
-.dropup .caret,
-.navbar-fixed-bottom .dropdown .caret {
-  content: "";
-  border-top: 0;
-  border-bottom: 4px solid;
-}
-.dropup .dropdown-menu,
-.navbar-fixed-bottom .dropdown .dropdown-menu {
-  top: auto;
-  bottom: 100%;
-  margin-bottom: 1px;
-}
-@media (min-width: 1000px) {
-  .navbar-right .dropdown-menu {
-    right: 0;
-    left: auto;
-  }
-  .navbar-right .dropdown-menu-left {
-    right: auto;
-    left: 0;
-  }
-}
-.btn-group,
-.btn-group-vertical {
-  position: relative;
-  display: inline-block;
-  vertical-align: middle;
-}
-.btn-group > .btn,
-.btn-group-vertical > .btn {
-  position: relative;
-  float: left;
-}
-.btn-group > .btn:hover,
-.btn-group-vertical > .btn:hover,
-.btn-group > .btn:focus,
-.btn-group-vertical > .btn:focus,
-.btn-group > .btn:active,
-.btn-group-vertical > .btn:active,
-.btn-group > .btn.active,
-.btn-group-vertical > .btn.active {
-  z-index: 2;
-}
-.btn-group > .btn:focus,
-.btn-group-vertical > .btn:focus {
-  outline: 0;
-}
-.btn-group .btn + .btn,
-.btn-group .btn + .btn-group,
-.btn-group .btn-group + .btn,
-.btn-group .btn-group + .btn-group {
-  margin-left: -1px;
-}
-.btn-toolbar {
-  margin-left: -5px;
-}
-.btn-toolbar .btn-group,
-.btn-toolbar .input-group {
-  float: left;
-}
-.btn-toolbar > .btn,
-.btn-toolbar > .btn-group,
-.btn-toolbar > .input-group {
-  margin-left: 5px;
-}
-.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
-  border-radius: 0;
-}
-.btn-group > .btn:first-child {
-  margin-left: 0;
-}
-.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 0;
-}
-.btn-group > .btn:last-child:not(:first-child),
-.btn-group > .dropdown-toggle:not(:first-child) {
-  border-top-left-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.btn-group > .btn-group {
-  float: left;
-}
-.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
-  border-radius: 0;
-}
-.btn-group > .btn-group:first-child > .btn:last-child,
-.btn-group > .btn-group:first-child > .dropdown-toggle {
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 0;
-}
-.btn-group > .btn-group:last-child > .btn:first-child {
-  border-top-left-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
-  outline: 0;
-}
-.btn-group > .btn + .dropdown-toggle {
-  padding-right: 8px;
-  padding-left: 8px;
-}
-.btn-group > .btn-lg + .dropdown-toggle {
-  padding-right: 12px;
-  padding-left: 12px;
-}
-.btn-group.open .dropdown-toggle {
-  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
-          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
-}
-.btn-group.open .dropdown-toggle.btn-link {
-  -webkit-box-shadow: none;
-          box-shadow: none;
-}
-.btn .caret {
-  margin-left: 0;
-}
-.btn-lg .caret {
-  border-width: 5px 5px 0;
-  border-bottom-width: 0;
-}
-.dropup .btn-lg .caret {
-  border-width: 0 5px 5px;
-}
-.btn-group-vertical > .btn,
-.btn-group-vertical > .btn-group,
-.btn-group-vertical > .btn-group > .btn {
-  display: block;
-  float: none;
-  width: 100%;
-  max-width: 100%;
-}
-.btn-group-vertical > .btn-group > .btn {
-  float: none;
-}
-.btn-group-vertical > .btn + .btn,
-.btn-group-vertical > .btn + .btn-group,
-.btn-group-vertical > .btn-group + .btn,
-.btn-group-vertical > .btn-group + .btn-group {
-  margin-top: -1px;
-  margin-left: 0;
-}
-.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
-  border-radius: 0;
-}
-.btn-group-vertical > .btn:first-child:not(:last-child) {
-  border-top-right-radius: 4px;
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.btn-group-vertical > .btn:last-child:not(:first-child) {
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-  border-bottom-left-radius: 4px;
-}
-.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
-  border-radius: 0;
-}
-.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
-.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-}
-.btn-group-justified {
-  display: table;
-  width: 100%;
-  table-layout: fixed;
-  border-collapse: separate;
-}
-.btn-group-justified > .btn,
-.btn-group-justified > .btn-group {
-  display: table-cell;
-  float: none;
-  width: 1%;
-}
-.btn-group-justified > .btn-group .btn {
-  width: 100%;
-}
-.btn-group-justified > .btn-group .dropdown-menu {
-  left: auto;
-}
-[data-toggle="buttons"] > .btn > input[type="radio"],
-[data-toggle="buttons"] > .btn > input[type="checkbox"] {
-  position: absolute;
-  z-index: -1;
-  filter: alpha(opacity=0);
-  opacity: 0;
-}
-.input-group {
-  position: relative;
-  display: table;
-  border-collapse: separate;
-}
-.input-group[class*="col-"] {
-  float: none;
-  padding-right: 0;
-  padding-left: 0;
-}
-.input-group .form-control {
-  position: relative;
-  z-index: 2;
-  float: left;
-  width: 100%;
-  margin-bottom: 0;
-}
-.input-group-lg > .form-control,
-.input-group-lg > .input-group-addon,
-.input-group-lg > .input-group-btn > .btn {
-  height: 46px;
-  padding: 10px 16px;
-  font-size: 18px;
-  line-height: 1.33;
-  border-radius: 6px;
-}
-select.input-group-lg > .form-control,
-select.input-group-lg > .input-group-addon,
-select.input-group-lg > .input-group-btn > .btn {
-  height: 46px;
-  line-height: 46px;
-}
-textarea.input-group-lg > .form-control,
-textarea.input-group-lg > .input-group-addon,
-textarea.input-group-lg > .input-group-btn > .btn,
-select[multiple].input-group-lg > .form-control,
-select[multiple].input-group-lg > .input-group-addon,
-select[multiple].input-group-lg > .input-group-btn > .btn {
-  height: auto;
-}
-.input-group-sm > .form-control,
-.input-group-sm > .input-group-addon,
-.input-group-sm > .input-group-btn > .btn {
-  height: 30px;
-  padding: 5px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-select.input-group-sm > .form-control,
-select.input-group-sm > .input-group-addon,
-select.input-group-sm > .input-group-btn > .btn {
-  height: 30px;
-  line-height: 30px;
-}
-textarea.input-group-sm > .form-control,
-textarea.input-group-sm > .input-group-addon,
-textarea.input-group-sm > .input-group-btn > .btn,
-select[multiple].input-group-sm > .form-control,
-select[multiple].input-group-sm > .input-group-addon,
-select[multiple].input-group-sm > .input-group-btn > .btn {
-  height: auto;
-}
-.input-group-addon,
-.input-group-btn,
-.input-group .form-control {
-  display: table-cell;
-}
-.input-group-addon:not(:first-child):not(:last-child),
-.input-group-btn:not(:first-child):not(:last-child),
-.input-group .form-control:not(:first-child):not(:last-child) {
-  border-radius: 0;
-}
-.input-group-addon,
-.input-group-btn {
-  width: 1%;
-  white-space: nowrap;
-  vertical-align: middle;
-}
-.input-group-addon {
-  padding: 6px 12px;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 1;
-  color: #555;
-  text-align: center;
-  background-color: #eee;
-  border: 1px solid #ccc;
-  border-radius: 4px;
-}
-.input-group-addon.input-sm {
-  padding: 5px 10px;
-  font-size: 12px;
-  border-radius: 3px;
-}
-.input-group-addon.input-lg {
-  padding: 10px 16px;
-  font-size: 18px;
-  border-radius: 6px;
-}
-.input-group-addon input[type="radio"],
-.input-group-addon input[type="checkbox"] {
-  margin-top: 0;
-}
-.input-group .form-control:first-child,
-.input-group-addon:first-child,
-.input-group-btn:first-child > .btn,
-.input-group-btn:first-child > .btn-group > .btn,
-.input-group-btn:first-child > .dropdown-toggle,
-.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
-.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 0;
-}
-.input-group-addon:first-child {
-  border-right: 0;
-}
-.input-group .form-control:last-child,
-.input-group-addon:last-child,
-.input-group-btn:last-child > .btn,
-.input-group-btn:last-child > .btn-group > .btn,
-.input-group-btn:last-child > .dropdown-toggle,
-.input-group-btn:first-child > .btn:not(:first-child),
-.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
-  border-top-left-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.input-group-addon:last-child {
-  border-left: 0;
-}
-.input-group-btn {
-  position: relative;
-  font-size: 0;
-  white-space: nowrap;
-}
-.input-group-btn > .btn {
-  position: relative;
-}
-.input-group-btn > .btn + .btn {
-  margin-left: -1px;
-}
-.input-group-btn > .btn:hover,
-.input-group-btn > .btn:focus,
-.input-group-btn > .btn:active {
-  z-index: 2;
-}
-.input-group-btn:first-child > .btn,
-.input-group-btn:first-child > .btn-group {
-  margin-right: -1px;
-}
-.input-group-btn:last-child > .btn,
-.input-group-btn:last-child > .btn-group {
-  margin-left: -1px;
-}
-.nav {
-  padding-left: 0;
-  margin-bottom: 0;
-  list-style: none;
-}
-.nav > li {
-  position: relative;
-  display: block;
-}
-.nav > li > a {
-  position: relative;
-  display: block;
-  padding: 10px 15px;
-}
-.nav > li > a:hover,
-.nav > li > a:focus {
-  text-decoration: none;
-  background-color: #eee;
-}
-.nav > li.disabled > a {
-  color: #777;
-}
-.nav > li.disabled > a:hover,
-.nav > li.disabled > a:focus {
-  color: #777;
-  text-decoration: none;
-  cursor: not-allowed;
-  background-color: transparent;
-}
-.nav .open > a,
-.nav .open > a:hover,
-.nav .open > a:focus {
-  background-color: #eee;
-  border-color: #428bca;
-}
-.nav .nav-divider {
-  height: 1px;
-  margin: 9px 0;
-  overflow: hidden;
-  background-color: #e5e5e5;
-}
-.nav > li > a > img {
-  max-width: none;
-}
-.nav-tabs {
-  border-bottom: 1px solid #ddd;
-}
-.nav-tabs > li {
-  float: left;
-  margin-bottom: -1px;
-}
-.nav-tabs > li > a {
-  margin-right: 2px;
-  line-height: 1.42857143;
-  border: 1px solid transparent;
-  border-radius: 4px 4px 0 0;
-}
-.nav-tabs > li > a:hover {
-  border-color: #eee #eee #ddd;
-}
-.nav-tabs > li.active > a,
-.nav-tabs > li.active > a:hover,
-.nav-tabs > li.active > a:focus {
-  color: #555;
-  cursor: default;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  border-bottom-color: transparent;
-}
-.nav-tabs.nav-justified {
-  width: 100%;
-  border-bottom: 0;
-}
-.nav-tabs.nav-justified > li {
-  float: none;
-}
-.nav-tabs.nav-justified > li > a {
-  margin-bottom: 5px;
-  text-align: center;
-}
-.nav-tabs.nav-justified > .dropdown .dropdown-menu {
-  top: auto;
-  left: auto;
-}
-@media (min-width: 768px) {
-  .nav-tabs.nav-justified > li {
-    display: table-cell;
-    width: 1%;
-  }
-  .nav-tabs.nav-justified > li > a {
-    margin-bottom: 0;
-  }
-}
-.nav-tabs.nav-justified > li > a {
-  margin-right: 0;
-  border-radius: 4px;
-}
-.nav-tabs.nav-justified > .active > a,
-.nav-tabs.nav-justified > .active > a:hover,
-.nav-tabs.nav-justified > .active > a:focus {
-  border: 1px solid #ddd;
-}
-@media (min-width: 768px) {
-  .nav-tabs.nav-justified > li > a {
-    border-bottom: 1px solid #ddd;
-    border-radius: 4px 4px 0 0;
-  }
-  .nav-tabs.nav-justified > .active > a,
-  .nav-tabs.nav-justified > .active > a:hover,
-  .nav-tabs.nav-justified > .active > a:focus {
-    border-bottom-color: #fff;
-  }
-}
-.nav-pills > li {
-  float: left;
-}
-.nav-pills > li > a {
-  border-radius: 4px;
-}
-.nav-pills > li + li {
-  margin-left: 2px;
-}
-.nav-pills > li.active > a,
-.nav-pills > li.active > a:hover,
-.nav-pills > li.active > a:focus {
-  color: #fff;
-  background-color: #428bca;
-}
-.nav-stacked > li {
-  float: none;
-}
-.nav-stacked > li + li {
-  margin-top: 2px;
-  margin-left: 0;
-}
-.nav-justified {
-  width: 100%;
-}
-.nav-justified > li {
-  float: none;
-}
-.nav-justified > li > a {
-  margin-bottom: 5px;
-  text-align: center;
-}
-.nav-justified > .dropdown .dropdown-menu {
-  top: auto;
-  left: auto;
-}
-@media (min-width: 768px) {
-  .nav-justified > li {
-    display: table-cell;
-    width: 1%;
-  }
-  .nav-justified > li > a {
-    margin-bottom: 0;
-  }
-}
-.nav-tabs-justified {
-  border-bottom: 0;
-}
-.nav-tabs-justified > li > a {
-  margin-right: 0;
-  border-radius: 4px;
-}
-.nav-tabs-justified > .active > a,
-.nav-tabs-justified > .active > a:hover,
-.nav-tabs-justified > .active > a:focus {
-  border: 1px solid #ddd;
-}
-@media (min-width: 768px) {
-  .nav-tabs-justified > li > a {
-    border-bottom: 1px solid #ddd;
-    border-radius: 4px 4px 0 0;
-  }
-  .nav-tabs-justified > .active > a,
-  .nav-tabs-justified > .active > a:hover,
-  .nav-tabs-justified > .active > a:focus {
-    border-bottom-color: #fff;
-  }
-}
-.tab-content > .tab-pane {
-  display: none;
-}
-.tab-content > .active {
-  display: block;
-}
-.nav-tabs .dropdown-menu {
-  margin-top: -1px;
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-}
-.navbar {
-  position: relative;
-  min-height: 50px;
-  margin-bottom: 20px;
-  border: 1px solid transparent;
-}
-@media (min-width: 1000px) {
-  .navbar {
-    border-radius: 4px;
-  }
-}
-@media (min-width: 1000px) {
-  .navbar-header {
-    float: left;
-  }
-}
-.navbar-collapse {
-  padding-right: 15px;
-  padding-left: 15px;
-  overflow-x: visible;
-  -webkit-overflow-scrolling: touch;
-  border-top: 1px solid transparent;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
-          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
-}
-.navbar-collapse.in {
-  overflow-y: auto;
-}
-@media (min-width: 1000px) {
-  .navbar-collapse {
-    width: auto;
-    border-top: 0;
-    -webkit-box-shadow: none;
-            box-shadow: none;
-  }
-  .navbar-collapse.collapse {
-    display: block !important;
-    height: auto !important;
-    padding-bottom: 0;
-    overflow: visible !important;
-  }
-  .navbar-collapse.in {
-    overflow-y: visible;
-  }
-  .navbar-fixed-top .navbar-collapse,
-  .navbar-static-top .navbar-collapse,
-  .navbar-fixed-bottom .navbar-collapse {
-    padding-right: 0;
-    padding-left: 0;
-  }
-}
-.navbar-fixed-top .navbar-collapse,
-.navbar-fixed-bottom .navbar-collapse {
-  max-height: 340px;
-}
-@media (max-width: 480px) and (orientation: landscape) {
-  .navbar-fixed-top .navbar-collapse,
-  .navbar-fixed-bottom .navbar-collapse {
-    max-height: 200px;
-  }
-}
-.container > .navbar-header,
-.container-fluid > .navbar-header,
-.container > .navbar-collapse,
-.container-fluid > .navbar-collapse {
-  margin-right: -15px;
-  margin-left: -15px;
-}
-@media (min-width: 1000px) {
-  .container > .navbar-header,
-  .container-fluid > .navbar-header,
-  .container > .navbar-collapse,
-  .container-fluid > .navbar-collapse {
-    margin-right: 0;
-    margin-left: 0;
-  }
-}
-.navbar-static-top {
-  z-index: 1000;
-  border-width: 0 0 1px;
-}
-@media (min-width: 1000px) {
-  .navbar-static-top {
-    border-radius: 0;
-  }
-}
-.navbar-fixed-top,
-.navbar-fixed-bottom {
-  position: fixed;
-  right: 0;
-  left: 0;
-  z-index: 1030;
-  -webkit-transform: translate3d(0, 0, 0);
-       -o-transform: translate3d(0, 0, 0);
-          transform: translate3d(0, 0, 0);
-}
-@media (min-width: 1000px) {
-  .navbar-fixed-top,
-  .navbar-fixed-bottom {
-    border-radius: 0;
-  }
-}
-.navbar-fixed-top {
-  top: 0;
-  border-width: 0 0 1px;
-}
-.navbar-fixed-bottom {
-  bottom: 0;
-  margin-bottom: 0;
-  border-width: 1px 0 0;
-}
-.navbar-brand {
-  float: left;
-  height: 50px;
-  padding: 15px 15px;
-  font-size: 18px;
-  line-height: 20px;
-}
-.navbar-brand:hover,
-.navbar-brand:focus {
-  text-decoration: none;
-}
-@media (min-width: 1000px) {
-  .navbar > .container .navbar-brand,
-  .navbar > .container-fluid .navbar-brand {
-    margin-left: -15px;
-  }
-}
-.navbar-toggle {
-  position: relative;
-  float: right;
-  padding: 9px 10px;
-  margin-top: 8px;
-  margin-right: 15px;
-  margin-bottom: 8px;
-  background-color: transparent;
-  background-image: none;
-  border: 1px solid transparent;
-  border-radius: 4px;
-}
-.navbar-toggle:focus {
-  outline: 0;
-}
-.navbar-toggle .icon-bar {
-  display: block;
-  width: 22px;
-  height: 2px;
-  border-radius: 1px;
-}
-.navbar-toggle .icon-bar + .icon-bar {
-  margin-top: 4px;
-}
-@media (min-width: 1000px) {
-  .navbar-toggle {
-    display: none;
-  }
-}
-.navbar-nav {
-  margin: 7.5px -15px;
-}
-.navbar-nav > li > a {
-  padding-top: 10px;
-  padding-bottom: 10px;
-  line-height: 20px;
-}
-@media (max-width: 999px) {
-  .navbar-nav .open .dropdown-menu {
-    position: static;
-    float: none;
-    width: auto;
-    margin-top: 0;
-    background-color: transparent;
-    border: 0;
-    -webkit-box-shadow: none;
-            box-shadow: none;
-  }
-  .navbar-nav .open .dropdown-menu > li > a,
-  .navbar-nav .open .dropdown-menu .dropdown-header {
-    padding: 5px 15px 5px 25px;
-  }
-  .navbar-nav .open .dropdown-menu > li > a {
-    line-height: 20px;
-  }
-  .navbar-nav .open .dropdown-menu > li > a:hover,
-  .navbar-nav .open .dropdown-menu > li > a:focus {
-    background-image: none;
-  }
-}
-@media (min-width: 1000px) {
-  .navbar-nav {
-    float: left;
-    margin: 0;
-  }
-  .navbar-nav > li {
-    float: left;
-  }
-  .navbar-nav > li > a {
-    padding-top: 15px;
-    padding-bottom: 15px;
-  }
-  .navbar-nav.navbar-right:last-child {
-    margin-right: -15px;
-  }
-}
-@media (min-width: 1000px) {
-  .navbar-left {
-    float: left !important;
-  }
-  .navbar-right {
-    float: right !important;
-  }
-}
-.navbar-form {
-  padding: 10px 15px;
-  margin-top: 8px;
-  margin-right: -15px;
-  margin-bottom: 8px;
-  margin-left: -15px;
-  border-top: 1px solid transparent;
-  border-bottom: 1px solid transparent;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
-          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
-}
-@media (min-width: 1000px) {
-  .navbar-form .form-group {
-    display: inline-block;
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .navbar-form .form-control {
-    display: inline-block;
-    width: auto;
-    vertical-align: middle;
-  }
-  .navbar-form .input-group {
-    display: inline-table;
-    vertical-align: middle;
-  }
-  .navbar-form .input-group .input-group-addon,
-  .navbar-form .input-group .input-group-btn,
-  .navbar-form .input-group .form-control {
-    width: auto;
-  }
-  .navbar-form .input-group > .form-control {
-    width: 100%;
-  }
-  .navbar-form .control-label {
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .navbar-form .radio,
-  .navbar-form .checkbox {
-    display: inline-block;
-    margin-top: 0;
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .navbar-form .radio label,
-  .navbar-form .checkbox label {
-    padding-left: 0;
-  }
-  .navbar-form .radio input[type="radio"],
-  .navbar-form .checkbox input[type="checkbox"] {
-    position: relative;
-    margin-left: 0;
-  }
-  .navbar-form .has-feedback .form-control-feedback {
-    top: 0;
-  }
-}
-@media (max-width: 999px) {
-  .navbar-form .form-group {
-    margin-bottom: 5px;
-  }
-}
-@media (min-width: 1000px) {
-  .navbar-form {
-    width: auto;
-    padding-top: 0;
-    padding-bottom: 0;
-    margin-right: 0;
-    margin-left: 0;
-    border: 0;
-    -webkit-box-shadow: none;
-            box-shadow: none;
-  }
-  .navbar-form.navbar-right:last-child {
-    margin-right: -15px;
-  }
-}
-.navbar-nav > li > .dropdown-menu {
-  margin-top: 0;
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-}
-.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.navbar-btn {
-  margin-top: 8px;
-  margin-bottom: 8px;
-}
-.navbar-btn.btn-sm {
-  margin-top: 10px;
-  margin-bottom: 10px;
-}
-.navbar-btn.btn-xs {
-  margin-top: 14px;
-  margin-bottom: 14px;
-}
-.navbar-text {
-  margin-top: 15px;
-  margin-bottom: 15px;
-}
-@media (min-width: 1000px) {
-  .navbar-text {
-    float: left;
-    margin-right: 15px;
-    margin-left: 15px;
-  }
-  .navbar-text.navbar-right:last-child {
-    margin-right: 0;
-  }
-}
-.navbar-default {
-  background-color: #f8f8f8;
-  border-color: #e7e7e7;
-}
-.navbar-default .navbar-brand {
-  color: #777;
-}
-.navbar-default .navbar-brand:hover,
-.navbar-default .navbar-brand:focus {
-  color: #5e5e5e;
-  background-color: transparent;
-}
-.navbar-default .navbar-text {
-  color: #777;
-}
-.navbar-default .navbar-nav > li > a {
-  color: #777;
-}
-.navbar-default .navbar-nav > li > a:hover,
-.navbar-default .navbar-nav > li > a:focus {
-  color: #333;
-  background-color: transparent;
-}
-.navbar-default .navbar-nav > .active > a,
-.navbar-default .navbar-nav > .active > a:hover,
-.navbar-default .navbar-nav > .active > a:focus {
-  color: #555;
-  background-color: #e7e7e7;
-}
-.navbar-default .navbar-nav > .disabled > a,
-.navbar-default .navbar-nav > .disabled > a:hover,
-.navbar-default .navbar-nav > .disabled > a:focus {
-  color: #ccc;
-  background-color: transparent;
-}
-.navbar-default .navbar-toggle {
-  border-color: #ddd;
-}
-.navbar-default .navbar-toggle:hover,
-.navbar-default .navbar-toggle:focus {
-  background-color: #ddd;
-}
-.navbar-default .navbar-toggle .icon-bar {
-  background-color: #888;
-}
-.navbar-default .navbar-collapse,
-.navbar-default .navbar-form {
-  border-color: #e7e7e7;
-}
-.navbar-default .navbar-nav > .open > a,
-.navbar-default .navbar-nav > .open > a:hover,
-.navbar-default .navbar-nav > .open > a:focus {
-  color: #555;
-  background-color: #e7e7e7;
-}
-@media (max-width: 999px) {
-  .navbar-default .navbar-nav .open .dropdown-menu > li > a {
-    color: #777;
-  }
-  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
-  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
-    color: #333;
-    background-color: transparent;
-  }
-  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
-  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
-  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
-    color: #555;
-    background-color: #e7e7e7;
-  }
-  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
-  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
-  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
-    color: #ccc;
-    background-color: transparent;
-  }
-}
-.navbar-default .navbar-link {
-  color: #777;
-}
-.navbar-default .navbar-link:hover {
-  color: #333;
-}
-.navbar-default .btn-link {
-  color: #777;
-}
-.navbar-default .btn-link:hover,
-.navbar-default .btn-link:focus {
-  color: #333;
-}
-.navbar-default .btn-link[disabled]:hover,
-fieldset[disabled] .navbar-default .btn-link:hover,
-.navbar-default .btn-link[disabled]:focus,
-fieldset[disabled] .navbar-default .btn-link:focus {
-  color: #ccc;
-}
-.navbar-inverse {
-  background-color: #222;
-  border-color: #080808;
-}
-.navbar-inverse .navbar-brand {
-  color: #777;
-}
-.navbar-inverse .navbar-brand:hover,
-.navbar-inverse .navbar-brand:focus {
-  color: #fff;
-  background-color: transparent;
-}
-.navbar-inverse .navbar-text {
-  color: #777;
-}
-.navbar-inverse .navbar-nav > li > a {
-  color: #777;
-}
-.navbar-inverse .navbar-nav > li > a:hover,
-.navbar-inverse .navbar-nav > li > a:focus {
-  color: #fff;
-  background-color: transparent;
-}
-.navbar-inverse .navbar-nav > .active > a,
-.navbar-inverse .navbar-nav > .active > a:hover,
-.navbar-inverse .navbar-nav > .active > a:focus {
-  color: #fff;
-  background-color: #080808;
-}
-.navbar-inverse .navbar-nav > .disabled > a,
-.navbar-inverse .navbar-nav > .disabled > a:hover,
-.navbar-inverse .navbar-nav > .disabled > a:focus {
-  color: #444;
-  background-color: transparent;
-}
-.navbar-inverse .navbar-toggle {
-  border-color: #333;
-}
-.navbar-inverse .navbar-toggle:hover,
-.navbar-inverse .navbar-toggle:focus {
-  background-color: #333;
-}
-.navbar-inverse .navbar-toggle .icon-bar {
-  background-color: #fff;
-}
-.navbar-inverse .navbar-collapse,
-.navbar-inverse .navbar-form {
-  border-color: #101010;
-}
-.navbar-inverse .navbar-nav > .open > a,
-.navbar-inverse .navbar-nav > .open > a:hover,
-.navbar-inverse .navbar-nav > .open > a:focus {
-  color: #fff;
-  background-color: #080808;
-}
-@media (max-width: 999px) {
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
-    border-color: #080808;
-  }
-  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
-    background-color: #080808;
-  }


<TRUNCATED>

[11/20] groovy-user-site git commit: move content to asf-site branch

Posted by pa...@apache.org.
http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/js/vendor/bootstrap.js
----------------------------------------------------------------------
diff --git a/site/src/site/assets/js/vendor/bootstrap.js b/site/src/site/assets/js/vendor/bootstrap.js
deleted file mode 100644
index 53da1c7..0000000
--- a/site/src/site/assets/js/vendor/bootstrap.js
+++ /dev/null
@@ -1,2114 +0,0 @@
-/*!
- * Bootstrap v3.2.0 (http://getbootstrap.com)
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-
-if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript requires jQuery') }
-
-/* ========================================================================
- * Bootstrap: transition.js v3.2.0
- * http://getbootstrap.com/javascript/#transitions
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
-  // ============================================================
-
-  function transitionEnd() {
-    var el = document.createElement('bootstrap')
-
-    var transEndEventNames = {
-      WebkitTransition : 'webkitTransitionEnd',
-      MozTransition    : 'transitionend',
-      OTransition      : 'oTransitionEnd otransitionend',
-      transition       : 'transitionend'
-    }
-
-    for (var name in transEndEventNames) {
-      if (el.style[name] !== undefined) {
-        return { end: transEndEventNames[name] }
-      }
-    }
-
-    return false // explicit for ie8 (  ._.)
-  }
-
-  // http://blog.alexmaccaw.com/css-transitions
-  $.fn.emulateTransitionEnd = function (duration) {
-    var called = false
-    var $el = this
-    $(this).one('bsTransitionEnd', function () { called = true })
-    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
-    setTimeout(callback, duration)
-    return this
-  }
-
-  $(function () {
-    $.support.transition = transitionEnd()
-
-    if (!$.support.transition) return
-
-    $.event.special.bsTransitionEnd = {
-      bindType: $.support.transition.end,
-      delegateType: $.support.transition.end,
-      handle: function (e) {
-        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
-      }
-    }
-  })
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: alert.js v3.2.0
- * http://getbootstrap.com/javascript/#alerts
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // ALERT CLASS DEFINITION
-  // ======================
-
-  var dismiss = '[data-dismiss="alert"]'
-  var Alert   = function (el) {
-    $(el).on('click', dismiss, this.close)
-  }
-
-  Alert.VERSION = '3.2.0'
-
-  Alert.prototype.close = function (e) {
-    var $this    = $(this)
-    var selector = $this.attr('data-target')
-
-    if (!selector) {
-      selector = $this.attr('href')
-      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
-    }
-
-    var $parent = $(selector)
-
-    if (e) e.preventDefault()
-
-    if (!$parent.length) {
-      $parent = $this.hasClass('alert') ? $this : $this.parent()
-    }
-
-    $parent.trigger(e = $.Event('close.bs.alert'))
-
-    if (e.isDefaultPrevented()) return
-
-    $parent.removeClass('in')
-
-    function removeElement() {
-      // detach from parent, fire event then clean up data
-      $parent.detach().trigger('closed.bs.alert').remove()
-    }
-
-    $.support.transition && $parent.hasClass('fade') ?
-      $parent
-        .one('bsTransitionEnd', removeElement)
-        .emulateTransitionEnd(150) :
-      removeElement()
-  }
-
-
-  // ALERT PLUGIN DEFINITION
-  // =======================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this = $(this)
-      var data  = $this.data('bs.alert')
-
-      if (!data) $this.data('bs.alert', (data = new Alert(this)))
-      if (typeof option == 'string') data[option].call($this)
-    })
-  }
-
-  var old = $.fn.alert
-
-  $.fn.alert             = Plugin
-  $.fn.alert.Constructor = Alert
-
-
-  // ALERT NO CONFLICT
-  // =================
-
-  $.fn.alert.noConflict = function () {
-    $.fn.alert = old
-    return this
-  }
-
-
-  // ALERT DATA-API
-  // ==============
-
-  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: button.js v3.2.0
- * http://getbootstrap.com/javascript/#buttons
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // BUTTON PUBLIC CLASS DEFINITION
-  // ==============================
-
-  var Button = function (element, options) {
-    this.$element  = $(element)
-    this.options   = $.extend({}, Button.DEFAULTS, options)
-    this.isLoading = false
-  }
-
-  Button.VERSION  = '3.2.0'
-
-  Button.DEFAULTS = {
-    loadingText: 'loading...'
-  }
-
-  Button.prototype.setState = function (state) {
-    var d    = 'disabled'
-    var $el  = this.$element
-    var val  = $el.is('input') ? 'val' : 'html'
-    var data = $el.data()
-
-    state = state + 'Text'
-
-    if (data.resetText == null) $el.data('resetText', $el[val]())
-
-    $el[val](data[state] == null ? this.options[state] : data[state])
-
-    // push to event loop to allow forms to submit
-    setTimeout($.proxy(function () {
-      if (state == 'loadingText') {
-        this.isLoading = true
-        $el.addClass(d).attr(d, d)
-      } else if (this.isLoading) {
-        this.isLoading = false
-        $el.removeClass(d).removeAttr(d)
-      }
-    }, this), 0)
-  }
-
-  Button.prototype.toggle = function () {
-    var changed = true
-    var $parent = this.$element.closest('[data-toggle="buttons"]')
-
-    if ($parent.length) {
-      var $input = this.$element.find('input')
-      if ($input.prop('type') == 'radio') {
-        if ($input.prop('checked') && this.$element.hasClass('active')) changed = false
-        else $parent.find('.active').removeClass('active')
-      }
-      if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')
-    }
-
-    if (changed) this.$element.toggleClass('active')
-  }
-
-
-  // BUTTON PLUGIN DEFINITION
-  // ========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.button')
-      var options = typeof option == 'object' && option
-
-      if (!data) $this.data('bs.button', (data = new Button(this, options)))
-
-      if (option == 'toggle') data.toggle()
-      else if (option) data.setState(option)
-    })
-  }
-
-  var old = $.fn.button
-
-  $.fn.button             = Plugin
-  $.fn.button.Constructor = Button
-
-
-  // BUTTON NO CONFLICT
-  // ==================
-
-  $.fn.button.noConflict = function () {
-    $.fn.button = old
-    return this
-  }
-
-
-  // BUTTON DATA-API
-  // ===============
-
-  $(document).on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
-    var $btn = $(e.target)
-    if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
-    Plugin.call($btn, 'toggle')
-    e.preventDefault()
-  })
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: carousel.js v3.2.0
- * http://getbootstrap.com/javascript/#carousel
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // CAROUSEL CLASS DEFINITION
-  // =========================
-
-  var Carousel = function (element, options) {
-    this.$element    = $(element).on('keydown.bs.carousel', $.proxy(this.keydown, this))
-    this.$indicators = this.$element.find('.carousel-indicators')
-    this.options     = options
-    this.paused      =
-    this.sliding     =
-    this.interval    =
-    this.$active     =
-    this.$items      = null
-
-    this.options.pause == 'hover' && this.$element
-      .on('mouseenter.bs.carousel', $.proxy(this.pause, this))
-      .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
-  }
-
-  Carousel.VERSION  = '3.2.0'
-
-  Carousel.DEFAULTS = {
-    interval: 5000,
-    pause: 'hover',
-    wrap: true
-  }
-
-  Carousel.prototype.keydown = function (e) {
-    switch (e.which) {
-      case 37: this.prev(); break
-      case 39: this.next(); break
-      default: return
-    }
-
-    e.preventDefault()
-  }
-
-  Carousel.prototype.cycle = function (e) {
-    e || (this.paused = false)
-
-    this.interval && clearInterval(this.interval)
-
-    this.options.interval
-      && !this.paused
-      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
-
-    return this
-  }
-
-  Carousel.prototype.getItemIndex = function (item) {
-    this.$items = item.parent().children('.item')
-    return this.$items.index(item || this.$active)
-  }
-
-  Carousel.prototype.to = function (pos) {
-    var that        = this
-    var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
-
-    if (pos > (this.$items.length - 1) || pos < 0) return
-
-    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
-    if (activeIndex == pos) return this.pause().cycle()
-
-    return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
-  }
-
-  Carousel.prototype.pause = function (e) {
-    e || (this.paused = true)
-
-    if (this.$element.find('.next, .prev').length && $.support.transition) {
-      this.$element.trigger($.support.transition.end)
-      this.cycle(true)
-    }
-
-    this.interval = clearInterval(this.interval)
-
-    return this
-  }
-
-  Carousel.prototype.next = function () {
-    if (this.sliding) return
-    return this.slide('next')
-  }
-
-  Carousel.prototype.prev = function () {
-    if (this.sliding) return
-    return this.slide('prev')
-  }
-
-  Carousel.prototype.slide = function (type, next) {
-    var $active   = this.$element.find('.item.active')
-    var $next     = next || $active[type]()
-    var isCycling = this.interval
-    var direction = type == 'next' ? 'left' : 'right'
-    var fallback  = type == 'next' ? 'first' : 'last'
-    var that      = this
-
-    if (!$next.length) {
-      if (!this.options.wrap) return
-      $next = this.$element.find('.item')[fallback]()
-    }
-
-    if ($next.hasClass('active')) return (this.sliding = false)
-
-    var relatedTarget = $next[0]
-    var slideEvent = $.Event('slide.bs.carousel', {
-      relatedTarget: relatedTarget,
-      direction: direction
-    })
-    this.$element.trigger(slideEvent)
-    if (slideEvent.isDefaultPrevented()) return
-
-    this.sliding = true
-
-    isCycling && this.pause()
-
-    if (this.$indicators.length) {
-      this.$indicators.find('.active').removeClass('active')
-      var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
-      $nextIndicator && $nextIndicator.addClass('active')
-    }
-
-    var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
-    if ($.support.transition && this.$element.hasClass('slide')) {
-      $next.addClass(type)
-      $next[0].offsetWidth // force reflow
-      $active.addClass(direction)
-      $next.addClass(direction)
-      $active
-        .one('bsTransitionEnd', function () {
-          $next.removeClass([type, direction].join(' ')).addClass('active')
-          $active.removeClass(['active', direction].join(' '))
-          that.sliding = false
-          setTimeout(function () {
-            that.$element.trigger(slidEvent)
-          }, 0)
-        })
-        .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000)
-    } else {
-      $active.removeClass('active')
-      $next.addClass('active')
-      this.sliding = false
-      this.$element.trigger(slidEvent)
-    }
-
-    isCycling && this.cycle()
-
-    return this
-  }
-
-
-  // CAROUSEL PLUGIN DEFINITION
-  // ==========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.carousel')
-      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
-      var action  = typeof option == 'string' ? option : options.slide
-
-      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
-      if (typeof option == 'number') data.to(option)
-      else if (action) data[action]()
-      else if (options.interval) data.pause().cycle()
-    })
-  }
-
-  var old = $.fn.carousel
-
-  $.fn.carousel             = Plugin
-  $.fn.carousel.Constructor = Carousel
-
-
-  // CAROUSEL NO CONFLICT
-  // ====================
-
-  $.fn.carousel.noConflict = function () {
-    $.fn.carousel = old
-    return this
-  }
-
-
-  // CAROUSEL DATA-API
-  // =================
-
-  $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
-    var href
-    var $this   = $(this)
-    var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
-    if (!$target.hasClass('carousel')) return
-    var options = $.extend({}, $target.data(), $this.data())
-    var slideIndex = $this.attr('data-slide-to')
-    if (slideIndex) options.interval = false
-
-    Plugin.call($target, options)
-
-    if (slideIndex) {
-      $target.data('bs.carousel').to(slideIndex)
-    }
-
-    e.preventDefault()
-  })
-
-  $(window).on('load', function () {
-    $('[data-ride="carousel"]').each(function () {
-      var $carousel = $(this)
-      Plugin.call($carousel, $carousel.data())
-    })
-  })
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: collapse.js v3.2.0
- * http://getbootstrap.com/javascript/#collapse
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // COLLAPSE PUBLIC CLASS DEFINITION
-  // ================================
-
-  var Collapse = function (element, options) {
-    this.$element      = $(element)
-    this.options       = $.extend({}, Collapse.DEFAULTS, options)
-    this.transitioning = null
-
-    if (this.options.parent) this.$parent = $(this.options.parent)
-    if (this.options.toggle) this.toggle()
-  }
-
-  Collapse.VERSION  = '3.2.0'
-
-  Collapse.DEFAULTS = {
-    toggle: true
-  }
-
-  Collapse.prototype.dimension = function () {
-    var hasWidth = this.$element.hasClass('width')
-    return hasWidth ? 'width' : 'height'
-  }
-
-  Collapse.prototype.show = function () {
-    if (this.transitioning || this.$element.hasClass('in')) return
-
-    var startEvent = $.Event('show.bs.collapse')
-    this.$element.trigger(startEvent)
-    if (startEvent.isDefaultPrevented()) return
-
-    var actives = this.$parent && this.$parent.find('> .panel > .in')
-
-    if (actives && actives.length) {
-      var hasData = actives.data('bs.collapse')
-      if (hasData && hasData.transitioning) return
-      Plugin.call(actives, 'hide')
-      hasData || actives.data('bs.collapse', null)
-    }
-
-    var dimension = this.dimension()
-
-    this.$element
-      .removeClass('collapse')
-      .addClass('collapsing')[dimension](0)
-
-    this.transitioning = 1
-
-    var complete = function () {
-      this.$element
-        .removeClass('collapsing')
-        .addClass('collapse in')[dimension]('')
-      this.transitioning = 0
-      this.$element
-        .trigger('shown.bs.collapse')
-    }
-
-    if (!$.support.transition) return complete.call(this)
-
-    var scrollSize = $.camelCase(['scroll', dimension].join('-'))
-
-    this.$element
-      .one('bsTransitionEnd', $.proxy(complete, this))
-      .emulateTransitionEnd(350)[dimension](this.$element[0][scrollSize])
-  }
-
-  Collapse.prototype.hide = function () {
-    if (this.transitioning || !this.$element.hasClass('in')) return
-
-    var startEvent = $.Event('hide.bs.collapse')
-    this.$element.trigger(startEvent)
-    if (startEvent.isDefaultPrevented()) return
-
-    var dimension = this.dimension()
-
-    this.$element[dimension](this.$element[dimension]())[0].offsetHeight
-
-    this.$element
-      .addClass('collapsing')
-      .removeClass('collapse')
-      .removeClass('in')
-
-    this.transitioning = 1
-
-    var complete = function () {
-      this.transitioning = 0
-      this.$element
-        .trigger('hidden.bs.collapse')
-        .removeClass('collapsing')
-        .addClass('collapse')
-    }
-
-    if (!$.support.transition) return complete.call(this)
-
-    this.$element
-      [dimension](0)
-      .one('bsTransitionEnd', $.proxy(complete, this))
-      .emulateTransitionEnd(350)
-  }
-
-  Collapse.prototype.toggle = function () {
-    this[this.$element.hasClass('in') ? 'hide' : 'show']()
-  }
-
-
-  // COLLAPSE PLUGIN DEFINITION
-  // ==========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.collapse')
-      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
-
-      if (!data && options.toggle && option == 'show') option = !option
-      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.collapse
-
-  $.fn.collapse             = Plugin
-  $.fn.collapse.Constructor = Collapse
-
-
-  // COLLAPSE NO CONFLICT
-  // ====================
-
-  $.fn.collapse.noConflict = function () {
-    $.fn.collapse = old
-    return this
-  }
-
-
-  // COLLAPSE DATA-API
-  // =================
-
-  $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
-    var href
-    var $this   = $(this)
-    var target  = $this.attr('data-target')
-        || e.preventDefault()
-        || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
-    var $target = $(target)
-    var data    = $target.data('bs.collapse')
-    var option  = data ? 'toggle' : $this.data()
-    var parent  = $this.attr('data-parent')
-    var $parent = parent && $(parent)
-
-    if (!data || !data.transitioning) {
-      if ($parent) $parent.find('[data-toggle="collapse"][data-parent="' + parent + '"]').not($this).addClass('collapsed')
-      $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
-    }
-
-    Plugin.call($target, option)
-  })
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: dropdown.js v3.2.0
- * http://getbootstrap.com/javascript/#dropdowns
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // DROPDOWN CLASS DEFINITION
-  // =========================
-
-  var backdrop = '.dropdown-backdrop'
-  var toggle   = '[data-toggle="dropdown"]'
-  var Dropdown = function (element) {
-    $(element).on('click.bs.dropdown', this.toggle)
-  }
-
-  Dropdown.VERSION = '3.2.0'
-
-  Dropdown.prototype.toggle = function (e) {
-    var $this = $(this)
-
-    if ($this.is('.disabled, :disabled')) return
-
-    var $parent  = getParent($this)
-    var isActive = $parent.hasClass('open')
-
-    clearMenus()
-
-    if (!isActive) {
-      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
-        // if mobile we use a backdrop because click events don't delegate
-        $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
-      }
-
-      var relatedTarget = { relatedTarget: this }
-      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
-
-      if (e.isDefaultPrevented()) return
-
-      $this.trigger('focus')
-
-      $parent
-        .toggleClass('open')
-        .trigger('shown.bs.dropdown', relatedTarget)
-    }
-
-    return false
-  }
-
-  Dropdown.prototype.keydown = function (e) {
-    if (!/(38|40|27)/.test(e.keyCode)) return
-
-    var $this = $(this)
-
-    e.preventDefault()
-    e.stopPropagation()
-
-    if ($this.is('.disabled, :disabled')) return
-
-    var $parent  = getParent($this)
-    var isActive = $parent.hasClass('open')
-
-    if (!isActive || (isActive && e.keyCode == 27)) {
-      if (e.which == 27) $parent.find(toggle).trigger('focus')
-      return $this.trigger('click')
-    }
-
-    var desc = ' li:not(.divider):visible a'
-    var $items = $parent.find('[role="menu"]' + desc + ', [role="listbox"]' + desc)
-
-    if (!$items.length) return
-
-    var index = $items.index($items.filter(':focus'))
-
-    if (e.keyCode == 38 && index > 0)                 index--                        // up
-    if (e.keyCode == 40 && index < $items.length - 1) index++                        // down
-    if (!~index)                                      index = 0
-
-    $items.eq(index).trigger('focus')
-  }
-
-  function clearMenus(e) {
-    if (e && e.which === 3) return
-    $(backdrop).remove()
-    $(toggle).each(function () {
-      var $parent = getParent($(this))
-      var relatedTarget = { relatedTarget: this }
-      if (!$parent.hasClass('open')) return
-      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
-      if (e.isDefaultPrevented()) return
-      $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
-    })
-  }
-
-  function getParent($this) {
-    var selector = $this.attr('data-target')
-
-    if (!selector) {
-      selector = $this.attr('href')
-      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
-    }
-
-    var $parent = selector && $(selector)
-
-    return $parent && $parent.length ? $parent : $this.parent()
-  }
-
-
-  // DROPDOWN PLUGIN DEFINITION
-  // ==========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this = $(this)
-      var data  = $this.data('bs.dropdown')
-
-      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
-      if (typeof option == 'string') data[option].call($this)
-    })
-  }
-
-  var old = $.fn.dropdown
-
-  $.fn.dropdown             = Plugin
-  $.fn.dropdown.Constructor = Dropdown
-
-
-  // DROPDOWN NO CONFLICT
-  // ====================
-
-  $.fn.dropdown.noConflict = function () {
-    $.fn.dropdown = old
-    return this
-  }
-
-
-  // APPLY TO STANDARD DROPDOWN ELEMENTS
-  // ===================================
-
-  $(document)
-    .on('click.bs.dropdown.data-api', clearMenus)
-    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
-    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
-    .on('keydown.bs.dropdown.data-api', toggle + ', [role="menu"], [role="listbox"]', Dropdown.prototype.keydown)
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: modal.js v3.2.0
- * http://getbootstrap.com/javascript/#modals
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // MODAL CLASS DEFINITION
-  // ======================
-
-  var Modal = function (element, options) {
-    this.options        = options
-    this.$body          = $(document.body)
-    this.$element       = $(element)
-    this.$backdrop      =
-    this.isShown        = null
-    this.scrollbarWidth = 0
-
-    if (this.options.remote) {
-      this.$element
-        .find('.modal-content')
-        .load(this.options.remote, $.proxy(function () {
-          this.$element.trigger('loaded.bs.modal')
-        }, this))
-    }
-  }
-
-  Modal.VERSION  = '3.2.0'
-
-  Modal.DEFAULTS = {
-    backdrop: true,
-    keyboard: true,
-    show: true
-  }
-
-  Modal.prototype.toggle = function (_relatedTarget) {
-    return this.isShown ? this.hide() : this.show(_relatedTarget)
-  }
-
-  Modal.prototype.show = function (_relatedTarget) {
-    var that = this
-    var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
-
-    this.$element.trigger(e)
-
-    if (this.isShown || e.isDefaultPrevented()) return
-
-    this.isShown = true
-
-    this.checkScrollbar()
-    this.$body.addClass('modal-open')
-
-    this.setScrollbar()
-    this.escape()
-
-    this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
-
-    this.backdrop(function () {
-      var transition = $.support.transition && that.$element.hasClass('fade')
-
-      if (!that.$element.parent().length) {
-        that.$element.appendTo(that.$body) // don't move modals dom position
-      }
-
-      that.$element
-        .show()
-        .scrollTop(0)
-
-      if (transition) {
-        that.$element[0].offsetWidth // force reflow
-      }
-
-      that.$element
-        .addClass('in')
-        .attr('aria-hidden', false)
-
-      that.enforceFocus()
-
-      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
-
-      transition ?
-        that.$element.find('.modal-dialog') // wait for modal to slide in
-          .one('bsTransitionEnd', function () {
-            that.$element.trigger('focus').trigger(e)
-          })
-          .emulateTransitionEnd(300) :
-        that.$element.trigger('focus').trigger(e)
-    })
-  }
-
-  Modal.prototype.hide = function (e) {
-    if (e) e.preventDefault()
-
-    e = $.Event('hide.bs.modal')
-
-    this.$element.trigger(e)
-
-    if (!this.isShown || e.isDefaultPrevented()) return
-
-    this.isShown = false
-
-    this.$body.removeClass('modal-open')
-
-    this.resetScrollbar()
-    this.escape()
-
-    $(document).off('focusin.bs.modal')
-
-    this.$element
-      .removeClass('in')
-      .attr('aria-hidden', true)
-      .off('click.dismiss.bs.modal')
-
-    $.support.transition && this.$element.hasClass('fade') ?
-      this.$element
-        .one('bsTransitionEnd', $.proxy(this.hideModal, this))
-        .emulateTransitionEnd(300) :
-      this.hideModal()
-  }
-
-  Modal.prototype.enforceFocus = function () {
-    $(document)
-      .off('focusin.bs.modal') // guard against infinite focus loop
-      .on('focusin.bs.modal', $.proxy(function (e) {
-        if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
-          this.$element.trigger('focus')
-        }
-      }, this))
-  }
-
-  Modal.prototype.escape = function () {
-    if (this.isShown && this.options.keyboard) {
-      this.$element.on('keyup.dismiss.bs.modal', $.proxy(function (e) {
-        e.which == 27 && this.hide()
-      }, this))
-    } else if (!this.isShown) {
-      this.$element.off('keyup.dismiss.bs.modal')
-    }
-  }
-
-  Modal.prototype.hideModal = function () {
-    var that = this
-    this.$element.hide()
-    this.backdrop(function () {
-      that.$element.trigger('hidden.bs.modal')
-    })
-  }
-
-  Modal.prototype.removeBackdrop = function () {
-    this.$backdrop && this.$backdrop.remove()
-    this.$backdrop = null
-  }
-
-  Modal.prototype.backdrop = function (callback) {
-    var that = this
-    var animate = this.$element.hasClass('fade') ? 'fade' : ''
-
-    if (this.isShown && this.options.backdrop) {
-      var doAnimate = $.support.transition && animate
-
-      this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
-        .appendTo(this.$body)
-
-      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
-        if (e.target !== e.currentTarget) return
-        this.options.backdrop == 'static'
-          ? this.$element[0].focus.call(this.$element[0])
-          : this.hide.call(this)
-      }, this))
-
-      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
-
-      this.$backdrop.addClass('in')
-
-      if (!callback) return
-
-      doAnimate ?
-        this.$backdrop
-          .one('bsTransitionEnd', callback)
-          .emulateTransitionEnd(150) :
-        callback()
-
-    } else if (!this.isShown && this.$backdrop) {
-      this.$backdrop.removeClass('in')
-
-      var callbackRemove = function () {
-        that.removeBackdrop()
-        callback && callback()
-      }
-      $.support.transition && this.$element.hasClass('fade') ?
-        this.$backdrop
-          .one('bsTransitionEnd', callbackRemove)
-          .emulateTransitionEnd(150) :
-        callbackRemove()
-
-    } else if (callback) {
-      callback()
-    }
-  }
-
-  Modal.prototype.checkScrollbar = function () {
-    if (document.body.clientWidth >= window.innerWidth) return
-    this.scrollbarWidth = this.scrollbarWidth || this.measureScrollbar()
-  }
-
-  Modal.prototype.setScrollbar = function () {
-    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
-    if (this.scrollbarWidth) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
-  }
-
-  Modal.prototype.resetScrollbar = function () {
-    this.$body.css('padding-right', '')
-  }
-
-  Modal.prototype.measureScrollbar = function () { // thx walsh
-    var scrollDiv = document.createElement('div')
-    scrollDiv.className = 'modal-scrollbar-measure'
-    this.$body.append(scrollDiv)
-    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
-    this.$body[0].removeChild(scrollDiv)
-    return scrollbarWidth
-  }
-
-
-  // MODAL PLUGIN DEFINITION
-  // =======================
-
-  function Plugin(option, _relatedTarget) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.modal')
-      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
-
-      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
-      if (typeof option == 'string') data[option](_relatedTarget)
-      else if (options.show) data.show(_relatedTarget)
-    })
-  }
-
-  var old = $.fn.modal
-
-  $.fn.modal             = Plugin
-  $.fn.modal.Constructor = Modal
-
-
-  // MODAL NO CONFLICT
-  // =================
-
-  $.fn.modal.noConflict = function () {
-    $.fn.modal = old
-    return this
-  }
-
-
-  // MODAL DATA-API
-  // ==============
-
-  $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
-    var $this   = $(this)
-    var href    = $this.attr('href')
-    var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
-    var option  = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
-
-    if ($this.is('a')) e.preventDefault()
-
-    $target.one('show.bs.modal', function (showEvent) {
-      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
-      $target.one('hidden.bs.modal', function () {
-        $this.is(':visible') && $this.trigger('focus')
-      })
-    })
-    Plugin.call($target, option, this)
-  })
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: tooltip.js v3.2.0
- * http://getbootstrap.com/javascript/#tooltip
- * Inspired by the original jQuery.tipsy by Jason Frame
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // TOOLTIP PUBLIC CLASS DEFINITION
-  // ===============================
-
-  var Tooltip = function (element, options) {
-    this.type       =
-    this.options    =
-    this.enabled    =
-    this.timeout    =
-    this.hoverState =
-    this.$element   = null
-
-    this.init('tooltip', element, options)
-  }
-
-  Tooltip.VERSION  = '3.2.0'
-
-  Tooltip.DEFAULTS = {
-    animation: true,
-    placement: 'top',
-    selector: false,
-    template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
-    trigger: 'hover focus',
-    title: '',
-    delay: 0,
-    html: false,
-    container: false,
-    viewport: {
-      selector: 'body',
-      padding: 0
-    }
-  }
-
-  Tooltip.prototype.init = function (type, element, options) {
-    this.enabled   = true
-    this.type      = type
-    this.$element  = $(element)
-    this.options   = this.getOptions(options)
-    this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport)
-
-    var triggers = this.options.trigger.split(' ')
-
-    for (var i = triggers.length; i--;) {
-      var trigger = triggers[i]
-
-      if (trigger == 'click') {
-        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
-      } else if (trigger != 'manual') {
-        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'
-        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
-
-        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
-        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
-      }
-    }
-
-    this.options.selector ?
-      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
-      this.fixTitle()
-  }
-
-  Tooltip.prototype.getDefaults = function () {
-    return Tooltip.DEFAULTS
-  }
-
-  Tooltip.prototype.getOptions = function (options) {
-    options = $.extend({}, this.getDefaults(), this.$element.data(), options)
-
-    if (options.delay && typeof options.delay == 'number') {
-      options.delay = {
-        show: options.delay,
-        hide: options.delay
-      }
-    }
-
-    return options
-  }
-
-  Tooltip.prototype.getDelegateOptions = function () {
-    var options  = {}
-    var defaults = this.getDefaults()
-
-    this._options && $.each(this._options, function (key, value) {
-      if (defaults[key] != value) options[key] = value
-    })
-
-    return options
-  }
-
-  Tooltip.prototype.enter = function (obj) {
-    var self = obj instanceof this.constructor ?
-      obj : $(obj.currentTarget).data('bs.' + this.type)
-
-    if (!self) {
-      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
-      $(obj.currentTarget).data('bs.' + this.type, self)
-    }
-
-    clearTimeout(self.timeout)
-
-    self.hoverState = 'in'
-
-    if (!self.options.delay || !self.options.delay.show) return self.show()
-
-    self.timeout = setTimeout(function () {
-      if (self.hoverState == 'in') self.show()
-    }, self.options.delay.show)
-  }
-
-  Tooltip.prototype.leave = function (obj) {
-    var self = obj instanceof this.constructor ?
-      obj : $(obj.currentTarget).data('bs.' + this.type)
-
-    if (!self) {
-      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
-      $(obj.currentTarget).data('bs.' + this.type, self)
-    }
-
-    clearTimeout(self.timeout)
-
-    self.hoverState = 'out'
-
-    if (!self.options.delay || !self.options.delay.hide) return self.hide()
-
-    self.timeout = setTimeout(function () {
-      if (self.hoverState == 'out') self.hide()
-    }, self.options.delay.hide)
-  }
-
-  Tooltip.prototype.show = function () {
-    var e = $.Event('show.bs.' + this.type)
-
-    if (this.hasContent() && this.enabled) {
-      this.$element.trigger(e)
-
-      var inDom = $.contains(document.documentElement, this.$element[0])
-      if (e.isDefaultPrevented() || !inDom) return
-      var that = this
-
-      var $tip = this.tip()
-
-      var tipId = this.getUID(this.type)
-
-      this.setContent()
-      $tip.attr('id', tipId)
-      this.$element.attr('aria-describedby', tipId)
-
-      if (this.options.animation) $tip.addClass('fade')
-
-      var placement = typeof this.options.placement == 'function' ?
-        this.options.placement.call(this, $tip[0], this.$element[0]) :
-        this.options.placement
-
-      var autoToken = /\s?auto?\s?/i
-      var autoPlace = autoToken.test(placement)
-      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
-
-      $tip
-        .detach()
-        .css({ top: 0, left: 0, display: 'block' })
-        .addClass(placement)
-        .data('bs.' + this.type, this)
-
-      this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
-
-      var pos          = this.getPosition()
-      var actualWidth  = $tip[0].offsetWidth
-      var actualHeight = $tip[0].offsetHeight
-
-      if (autoPlace) {
-        var orgPlacement = placement
-        var $parent      = this.$element.parent()
-        var parentDim    = this.getPosition($parent)
-
-        placement = placement == 'bottom' && pos.top   + pos.height       + actualHeight - parentDim.scroll > parentDim.height ? 'top'    :
-                    placement == 'top'    && pos.top   - parentDim.scroll - actualHeight < 0                                   ? 'bottom' :
-                    placement == 'right'  && pos.right + actualWidth      > parentDim.width                                    ? 'left'   :
-                    placement == 'left'   && pos.left  - actualWidth      < parentDim.left                                     ? 'right'  :
-                    placement
-
-        $tip
-          .removeClass(orgPlacement)
-          .addClass(placement)
-      }
-
-      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
-
-      this.applyPlacement(calculatedOffset, placement)
-
-      var complete = function () {
-        that.$element.trigger('shown.bs.' + that.type)
-        that.hoverState = null
-      }
-
-      $.support.transition && this.$tip.hasClass('fade') ?
-        $tip
-          .one('bsTransitionEnd', complete)
-          .emulateTransitionEnd(150) :
-        complete()
-    }
-  }
-
-  Tooltip.prototype.applyPlacement = function (offset, placement) {
-    var $tip   = this.tip()
-    var width  = $tip[0].offsetWidth
-    var height = $tip[0].offsetHeight
-
-    // manually read margins because getBoundingClientRect includes difference
-    var marginTop = parseInt($tip.css('margin-top'), 10)
-    var marginLeft = parseInt($tip.css('margin-left'), 10)
-
-    // we must check for NaN for ie 8/9
-    if (isNaN(marginTop))  marginTop  = 0
-    if (isNaN(marginLeft)) marginLeft = 0
-
-    offset.top  = offset.top  + marginTop
-    offset.left = offset.left + marginLeft
-
-    // $.fn.offset doesn't round pixel values
-    // so we use setOffset directly with our own function B-0
-    $.offset.setOffset($tip[0], $.extend({
-      using: function (props) {
-        $tip.css({
-          top: Math.round(props.top),
-          left: Math.round(props.left)
-        })
-      }
-    }, offset), 0)
-
-    $tip.addClass('in')
-
-    // check to see if placing tip in new offset caused the tip to resize itself
-    var actualWidth  = $tip[0].offsetWidth
-    var actualHeight = $tip[0].offsetHeight
-
-    if (placement == 'top' && actualHeight != height) {
-      offset.top = offset.top + height - actualHeight
-    }
-
-    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
-
-    if (delta.left) offset.left += delta.left
-    else offset.top += delta.top
-
-    var arrowDelta          = delta.left ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
-    var arrowPosition       = delta.left ? 'left'        : 'top'
-    var arrowOffsetPosition = delta.left ? 'offsetWidth' : 'offsetHeight'
-
-    $tip.offset(offset)
-    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], arrowPosition)
-  }
-
-  Tooltip.prototype.replaceArrow = function (delta, dimension, position) {
-    this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + '%') : '')
-  }
-
-  Tooltip.prototype.setContent = function () {
-    var $tip  = this.tip()
-    var title = this.getTitle()
-
-    $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
-    $tip.removeClass('fade in top bottom left right')
-  }
-
-  Tooltip.prototype.hide = function () {
-    var that = this
-    var $tip = this.tip()
-    var e    = $.Event('hide.bs.' + this.type)
-
-    this.$element.removeAttr('aria-describedby')
-
-    function complete() {
-      if (that.hoverState != 'in') $tip.detach()
-      that.$element.trigger('hidden.bs.' + that.type)
-    }
-
-    this.$element.trigger(e)
-
-    if (e.isDefaultPrevented()) return
-
-    $tip.removeClass('in')
-
-    $.support.transition && this.$tip.hasClass('fade') ?
-      $tip
-        .one('bsTransitionEnd', complete)
-        .emulateTransitionEnd(150) :
-      complete()
-
-    this.hoverState = null
-
-    return this
-  }
-
-  Tooltip.prototype.fixTitle = function () {
-    var $e = this.$element
-    if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') {
-      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
-    }
-  }
-
-  Tooltip.prototype.hasContent = function () {
-    return this.getTitle()
-  }
-
-  Tooltip.prototype.getPosition = function ($element) {
-    $element   = $element || this.$element
-    var el     = $element[0]
-    var isBody = el.tagName == 'BODY'
-    return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : null, {
-      scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop(),
-      width:  isBody ? $(window).width()  : $element.outerWidth(),
-      height: isBody ? $(window).height() : $element.outerHeight()
-    }, isBody ? { top: 0, left: 0 } : $element.offset())
-  }
-
-  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
-    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2  } :
-           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2  } :
-           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
-        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width   }
-
-  }
-
-  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
-    var delta = { top: 0, left: 0 }
-    if (!this.$viewport) return delta
-
-    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
-    var viewportDimensions = this.getPosition(this.$viewport)
-
-    if (/right|left/.test(placement)) {
-      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll
-      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
-      if (topEdgeOffset < viewportDimensions.top) { // top overflow
-        delta.top = viewportDimensions.top - topEdgeOffset
-      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
-        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
-      }
-    } else {
-      var leftEdgeOffset  = pos.left - viewportPadding
-      var rightEdgeOffset = pos.left + viewportPadding + actualWidth
-      if (leftEdgeOffset < viewportDimensions.left) { // left overflow
-        delta.left = viewportDimensions.left - leftEdgeOffset
-      } else if (rightEdgeOffset > viewportDimensions.width) { // right overflow
-        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
-      }
-    }
-
-    return delta
-  }
-
-  Tooltip.prototype.getTitle = function () {
-    var title
-    var $e = this.$element
-    var o  = this.options
-
-    title = $e.attr('data-original-title')
-      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
-
-    return title
-  }
-
-  Tooltip.prototype.getUID = function (prefix) {
-    do prefix += ~~(Math.random() * 1000000)
-    while (document.getElementById(prefix))
-    return prefix
-  }
-
-  Tooltip.prototype.tip = function () {
-    return (this.$tip = this.$tip || $(this.options.template))
-  }
-
-  Tooltip.prototype.arrow = function () {
-    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
-  }
-
-  Tooltip.prototype.validate = function () {
-    if (!this.$element[0].parentNode) {
-      this.hide()
-      this.$element = null
-      this.options  = null
-    }
-  }
-
-  Tooltip.prototype.enable = function () {
-    this.enabled = true
-  }
-
-  Tooltip.prototype.disable = function () {
-    this.enabled = false
-  }
-
-  Tooltip.prototype.toggleEnabled = function () {
-    this.enabled = !this.enabled
-  }
-
-  Tooltip.prototype.toggle = function (e) {
-    var self = this
-    if (e) {
-      self = $(e.currentTarget).data('bs.' + this.type)
-      if (!self) {
-        self = new this.constructor(e.currentTarget, this.getDelegateOptions())
-        $(e.currentTarget).data('bs.' + this.type, self)
-      }
-    }
-
-    self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
-  }
-
-  Tooltip.prototype.destroy = function () {
-    clearTimeout(this.timeout)
-    this.hide().$element.off('.' + this.type).removeData('bs.' + this.type)
-  }
-
-
-  // TOOLTIP PLUGIN DEFINITION
-  // =========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.tooltip')
-      var options = typeof option == 'object' && option
-
-      if (!data && option == 'destroy') return
-      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.tooltip
-
-  $.fn.tooltip             = Plugin
-  $.fn.tooltip.Constructor = Tooltip
-
-
-  // TOOLTIP NO CONFLICT
-  // ===================
-
-  $.fn.tooltip.noConflict = function () {
-    $.fn.tooltip = old
-    return this
-  }
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: popover.js v3.2.0
- * http://getbootstrap.com/javascript/#popovers
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // POPOVER PUBLIC CLASS DEFINITION
-  // ===============================
-
-  var Popover = function (element, options) {
-    this.init('popover', element, options)
-  }
-
-  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
-
-  Popover.VERSION  = '3.2.0'
-
-  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
-    placement: 'right',
-    trigger: 'click',
-    content: '',
-    template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
-  })
-
-
-  // NOTE: POPOVER EXTENDS tooltip.js
-  // ================================
-
-  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
-
-  Popover.prototype.constructor = Popover
-
-  Popover.prototype.getDefaults = function () {
-    return Popover.DEFAULTS
-  }
-
-  Popover.prototype.setContent = function () {
-    var $tip    = this.tip()
-    var title   = this.getTitle()
-    var content = this.getContent()
-
-    $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
-    $tip.find('.popover-content').empty()[ // we use append for html objects to maintain js events
-      this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
-    ](content)
-
-    $tip.removeClass('fade top bottom left right in')
-
-    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
-    // this manually by checking the contents.
-    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
-  }
-
-  Popover.prototype.hasContent = function () {
-    return this.getTitle() || this.getContent()
-  }
-
-  Popover.prototype.getContent = function () {
-    var $e = this.$element
-    var o  = this.options
-
-    return $e.attr('data-content')
-      || (typeof o.content == 'function' ?
-            o.content.call($e[0]) :
-            o.content)
-  }
-
-  Popover.prototype.arrow = function () {
-    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
-  }
-
-  Popover.prototype.tip = function () {
-    if (!this.$tip) this.$tip = $(this.options.template)
-    return this.$tip
-  }
-
-
-  // POPOVER PLUGIN DEFINITION
-  // =========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.popover')
-      var options = typeof option == 'object' && option
-
-      if (!data && option == 'destroy') return
-      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.popover
-
-  $.fn.popover             = Plugin
-  $.fn.popover.Constructor = Popover
-
-
-  // POPOVER NO CONFLICT
-  // ===================
-
-  $.fn.popover.noConflict = function () {
-    $.fn.popover = old
-    return this
-  }
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: scrollspy.js v3.2.0
- * http://getbootstrap.com/javascript/#scrollspy
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // SCROLLSPY CLASS DEFINITION
-  // ==========================
-
-  function ScrollSpy(element, options) {
-    var process  = $.proxy(this.process, this)
-
-    this.$body          = $('body')
-    this.$scrollElement = $(element).is('body') ? $(window) : $(element)
-    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)
-    this.selector       = (this.options.target || '') + ' .nav li > a'
-    this.offsets        = []
-    this.targets        = []
-    this.activeTarget   = null
-    this.scrollHeight   = 0
-
-    this.$scrollElement.on('scroll.bs.scrollspy', process)
-    this.refresh()
-    this.process()
-  }
-
-  ScrollSpy.VERSION  = '3.2.0'
-
-  ScrollSpy.DEFAULTS = {
-    offset: 10
-  }
-
-  ScrollSpy.prototype.getScrollHeight = function () {
-    return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
-  }
-
-  ScrollSpy.prototype.refresh = function () {
-    var offsetMethod = 'offset'
-    var offsetBase   = 0
-
-    if (!$.isWindow(this.$scrollElement[0])) {
-      offsetMethod = 'position'
-      offsetBase   = this.$scrollElement.scrollTop()
-    }
-
-    this.offsets = []
-    this.targets = []
-    this.scrollHeight = this.getScrollHeight()
-
-    var self     = this
-
-    this.$body
-      .find(this.selector)
-      .map(function () {
-        var $el   = $(this)
-        var href  = $el.data('target') || $el.attr('href')
-        var $href = /^#./.test(href) && $(href)
-
-        return ($href
-          && $href.length
-          && $href.is(':visible')
-          && [[$href[offsetMethod]().top + offsetBase, href]]) || null
-      })
-      .sort(function (a, b) { return a[0] - b[0] })
-      .each(function () {
-        self.offsets.push(this[0])
-        self.targets.push(this[1])
-      })
-  }
-
-  ScrollSpy.prototype.process = function () {
-    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset
-    var scrollHeight = this.getScrollHeight()
-    var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()
-    var offsets      = this.offsets
-    var targets      = this.targets
-    var activeTarget = this.activeTarget
-    var i
-
-    if (this.scrollHeight != scrollHeight) {
-      this.refresh()
-    }
-
-    if (scrollTop >= maxScroll) {
-      return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
-    }
-
-    if (activeTarget && scrollTop <= offsets[0]) {
-      return activeTarget != (i = targets[0]) && this.activate(i)
-    }
-
-    for (i = offsets.length; i--;) {
-      activeTarget != targets[i]
-        && scrollTop >= offsets[i]
-        && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
-        && this.activate(targets[i])
-    }
-  }
-
-  ScrollSpy.prototype.activate = function (target) {
-    this.activeTarget = target
-
-    $(this.selector)
-      .parentsUntil(this.options.target, '.active')
-      .removeClass('active')
-
-    var selector = this.selector +
-        '[data-target="' + target + '"],' +
-        this.selector + '[href="' + target + '"]'
-
-    var active = $(selector)
-      .parents('li')
-      .addClass('active')
-
-    if (active.parent('.dropdown-menu').length) {
-      active = active
-        .closest('li.dropdown')
-        .addClass('active')
-    }
-
-    active.trigger('activate.bs.scrollspy')
-  }
-
-
-  // SCROLLSPY PLUGIN DEFINITION
-  // ===========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.scrollspy')
-      var options = typeof option == 'object' && option
-
-      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.scrollspy
-
-  $.fn.scrollspy             = Plugin
-  $.fn.scrollspy.Constructor = ScrollSpy
-
-
-  // SCROLLSPY NO CONFLICT
-  // =====================
-
-  $.fn.scrollspy.noConflict = function () {
-    $.fn.scrollspy = old
-    return this
-  }
-
-
-  // SCROLLSPY DATA-API
-  // ==================
-
-  $(window).on('load.bs.scrollspy.data-api', function () {
-    $('[data-spy="scroll"]').each(function () {
-      var $spy = $(this)
-      Plugin.call($spy, $spy.data())
-    })
-  })
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: tab.js v3.2.0
- * http://getbootstrap.com/javascript/#tabs
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // TAB CLASS DEFINITION
-  // ====================
-
-  var Tab = function (element) {
-    this.element = $(element)
-  }
-
-  Tab.VERSION = '3.2.0'
-
-  Tab.prototype.show = function () {
-    var $this    = this.element
-    var $ul      = $this.closest('ul:not(.dropdown-menu)')
-    var selector = $this.data('target')
-
-    if (!selector) {
-      selector = $this.attr('href')
-      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
-    }
-
-    if ($this.parent('li').hasClass('active')) return
-
-    var previous = $ul.find('.active:last a')[0]
-    var e        = $.Event('show.bs.tab', {
-      relatedTarget: previous
-    })
-
-    $this.trigger(e)
-
-    if (e.isDefaultPrevented()) return
-
-    var $target = $(selector)
-
-    this.activate($this.closest('li'), $ul)
-    this.activate($target, $target.parent(), function () {
-      $this.trigger({
-        type: 'shown.bs.tab',
-        relatedTarget: previous
-      })
-    })
-  }
-
-  Tab.prototype.activate = function (element, container, callback) {
-    var $active    = container.find('> .active')
-    var transition = callback
-      && $.support.transition
-      && $active.hasClass('fade')
-
-    function next() {
-      $active
-        .removeClass('active')
-        .find('> .dropdown-menu > .active')
-        .removeClass('active')
-
-      element.addClass('active')
-
-      if (transition) {
-        element[0].offsetWidth // reflow for transition
-        element.addClass('in')
-      } else {
-        element.removeClass('fade')
-      }
-
-      if (element.parent('.dropdown-menu')) {
-        element.closest('li.dropdown').addClass('active')
-      }
-
-      callback && callback()
-    }
-
-    transition ?
-      $active
-        .one('bsTransitionEnd', next)
-        .emulateTransitionEnd(150) :
-      next()
-
-    $active.removeClass('in')
-  }
-
-
-  // TAB PLUGIN DEFINITION
-  // =====================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this = $(this)
-      var data  = $this.data('bs.tab')
-
-      if (!data) $this.data('bs.tab', (data = new Tab(this)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.tab
-
-  $.fn.tab             = Plugin
-  $.fn.tab.Constructor = Tab
-
-
-  // TAB NO CONFLICT
-  // ===============
-
-  $.fn.tab.noConflict = function () {
-    $.fn.tab = old
-    return this
-  }
-
-
-  // TAB DATA-API
-  // ============
-
-  $(document).on('click.bs.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
-    e.preventDefault()
-    Plugin.call($(this), 'show')
-  })
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: affix.js v3.2.0
- * http://getbootstrap.com/javascript/#affix
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // AFFIX CLASS DEFINITION
-  // ======================
-
-  var Affix = function (element, options) {
-    this.options = $.extend({}, Affix.DEFAULTS, options)
-
-    this.$target = $(this.options.target)
-      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
-      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))
-
-    this.$element     = $(element)
-    this.affixed      =
-    this.unpin        =
-    this.pinnedOffset = null
-
-    this.checkPosition()
-  }
-
-  Affix.VERSION  = '3.2.0'
-
-  Affix.RESET    = 'affix affix-top affix-bottom'
-
-  Affix.DEFAULTS = {
-    offset: 0,
-    target: window
-  }
-
-  Affix.prototype.getPinnedOffset = function () {
-    if (this.pinnedOffset) return this.pinnedOffset
-    this.$element.removeClass(Affix.RESET).addClass('affix')
-    var scrollTop = this.$target.scrollTop()
-    var position  = this.$element.offset()
-    return (this.pinnedOffset = position.top - scrollTop)
-  }
-
-  Affix.prototype.checkPositionWithEventLoop = function () {
-    setTimeout($.proxy(this.checkPosition, this), 1)
-  }
-
-  Affix.prototype.checkPosition = function () {
-    if (!this.$element.is(':visible')) return
-
-    var scrollHeight = $(document).height()
-    var scrollTop    = this.$target.scrollTop()
-    var position     = this.$element.offset()
-    var offset       = this.options.offset
-    var offsetTop    = offset.top
-    var offsetBottom = offset.bottom
-
-    if (typeof offset != 'object')         offsetBottom = offsetTop = offset
-    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)
-    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
-
-    var affix = this.unpin   != null && (scrollTop + this.unpin <= position.top) ? false :
-                offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' :
-                offsetTop    != null && (scrollTop <= offsetTop) ? 'top' : false
-
-    if (this.affixed === affix) return
-    if (this.unpin != null) this.$element.css('top', '')
-
-    var affixType = 'affix' + (affix ? '-' + affix : '')
-    var e         = $.Event(affixType + '.bs.affix')
-
-    this.$element.trigger(e)
-
-    if (e.isDefaultPrevented()) return
-
-    this.affixed = affix
-    this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
-
-    this.$element
-      .removeClass(Affix.RESET)
-      .addClass(affixType)
-      .trigger($.Event(affixType.replace('affix', 'affixed')))
-
-    if (affix == 'bottom') {
-      this.$element.offset({
-        top: scrollHeight - this.$element.height() - offsetBottom
-      })
-    }
-  }
-
-
-  // AFFIX PLUGIN DEFINITION
-  // =======================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.affix')
-      var options = typeof option == 'object' && option
-
-      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.affix
-
-  $.fn.affix             = Plugin
-  $.fn.affix.Constructor = Affix
-
-
-  // AFFIX NO CONFLICT
-  // =================
-
-  $.fn.affix.noConflict = function () {
-    $.fn.affix = old
-    return this
-  }
-
-
-  // AFFIX DATA-API
-  // ==============
-
-  $(window).on('load', function () {
-    $('[data-spy="affix"]').each(function () {
-      var $spy = $(this)
-      var data = $spy.data()
-
-      data.offset = data.offset || {}
-
-      if (data.offsetBottom) data.offset.bottom = data.offsetBottom
-      if (data.offsetTop)    data.offset.top    = data.offsetTop
-
-      Plugin.call($spy, data)
-    })
-  })
-
-}(jQuery);


[17/20] groovy-user-site git commit: move content to asf-site branch

Posted by pa...@apache.org.
http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/css/docstyle.css
----------------------------------------------------------------------
diff --git a/site/src/site/assets/css/docstyle.css b/site/src/site/assets/css/docstyle.css
deleted file mode 100644
index b21b97f..0000000
--- a/site/src/site/assets/css/docstyle.css
+++ /dev/null
@@ -1,65 +0,0 @@
-.hdlist>table,.colist>table{
-    border:0;
-    background:none
-}
-
-.hdlist>table>tbody>tr,.colist>table>tbody>tr{
-    background:none
-}
-
-td.hdlist1{
-    padding-right:.8em;
-    font-weight:bold
-}
-
-td.hdlist1,td.hdlist2{
-    vertical-align:top
-}
-
-.literalblock+.colist,.listingblock+.colist{
-    margin-top:-.5em
-}
-
-.colist>table tr>td:first-of-type{
-    padding:0 .8em;
-    line-height:1
-}
-
-.colist>table tr>td:last-of-type{
-    padding:.25em 0
-}
-
-.conum{
-    display:inline-block;
-    color:#fff!important;
-    background-color:#222;
-    -webkit-border-radius:100px;
-    border-radius:100px;
-    text-align:center;
-    width:20px;
-    height:20px;
-    font-size:12px;
-    font-weight:bold;
-    line-height:20px;
-    font-family:Arial,sans-serif;
-    font-style:normal;
-    position:relative;
-    top:-2px;
-    letter-spacing:-1px
-}
-
-.conum *{
-    color:#fff!important
-}
-
-.conum+b{
-    display:none
-}
-
-.conum:after{
-    content:attr(data-value)
-}
-
-.conum:not([data-value]):empty {
-    display:none
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/css/documentation.css
----------------------------------------------------------------------
diff --git a/site/src/site/assets/css/documentation.css b/site/src/site/assets/css/documentation.css
deleted file mode 100644
index c42f982..0000000
--- a/site/src/site/assets/css/documentation.css
+++ /dev/null
@@ -1 +0,0 @@
-/*! normalize.css v2.1.0 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{border:1px solid #c0c0c0;margin:0 2px;p
 adding:.35em .625em .75em}legend{border:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@-ms-viewport{width:device-width}@media screen and (max-width:400px){@-ms-viewport{width:320px}}.hidden{display:none!important;visibility:hidden!impor
 tant}.visible-xs{display:none!important}tr.visible-xs{display:none!important}th.visible-xs,td.visible-xs{display:none!important}@media(max-width:767px){.visible-xs{display:block!important}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}tr.visible-xs.visible-sm{display:table-row!important}th.visible-xs.visible-sm,td.visible-xs.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}tr.visible-xs.visible-md{display:table-row!important}th.visible-xs.visible-md,td.visible-xs.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-xs.visible-lg{display:block!important}tr.visible-xs.visible-lg{display:table-row!important}th.visible-xs.visible-lg,td.visible-xs.visible-lg{display:table-cell!important}}.visible-sm{display:none!important}tr.visible-sm{di
 splay:none!important}th.visible-sm,td.visible-sm{display:none!important}@media(max-width:767px){.visible-sm.visible-xs{display:block!important}tr.visible-sm.visible-xs{display:table-row!important}th.visible-sm.visible-xs,td.visible-sm.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-sm{display:block!important}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}tr.visible-sm.visible-md{display:table-row!important}th.visible-sm.visible-md,td.visible-sm.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-sm.visible-lg{display:block!important}tr.visible-sm.visible-lg{display:table-row!important}th.visible-sm.visible-lg,td.visible-sm.visible-lg{display:table-cell!important}}.visible-md{display:none!important}tr.visible-md{display:none!important}th.visible-md,td.visible-md{display
 :none!important}@media(max-width:767px){.visible-md.visible-xs{display:block!important}tr.visible-md.visible-xs{display:table-row!important}th.visible-md.visible-xs,td.visible-md.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}tr.visible-md.visible-sm{display:table-row!important}th.visible-md.visible-sm,td.visible-md.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-md{display:block!important}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-md.visible-lg{display:block!important}tr.visible-md.visible-lg{display:table-row!important}th.visible-md.visible-lg,td.visible-md.visible-lg{display:table-cell!important}}.visible-lg{display:none!important}tr.visible-lg{display:none!important}th.visible-lg,td.visible-lg{display:none!important}@media(max-width:767px){.visible-lg.visi
 ble-xs{display:block!important}tr.visible-lg.visible-xs{display:table-row!important}th.visible-lg.visible-xs,td.visible-lg.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}tr.visible-lg.visible-sm{display:table-row!important}th.visible-lg.visible-sm,td.visible-lg.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}tr.visible-lg.visible-md{display:table-row!important}th.visible-lg.visible-md,td.visible-lg.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-lg{display:block!important}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}.hidden-xs{display:block!important}tr.hidden-xs{display:table-row!important}th.hidden-xs,td.hidden-xs{display:table-cell!important}@media(max-width:767px){.hidden-xs{display:none!important}tr.hidden-xs{display:none!impo
 rtant}th.hidden-xs,td.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm{display:none!important}tr.hidden-xs.hidden-sm{display:none!important}th.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md{display:none!important}tr.hidden-xs.hidden-md{display:none!important}th.hidden-xs.hidden-md,td.hidden-xs.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-xs.hidden-lg{display:none!important}tr.hidden-xs.hidden-lg{display:none!important}th.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg{display:none!important}}.hidden-sm{display:block!important}tr.hidden-sm{display:table-row!important}th.hidden-sm,td.hidden-sm{display:table-cell!important}@media(max-width:767px){.hidden-sm.hidden-xs{display:none!important}tr.hidden-sm.hidden-xs{display:none!important}th.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs{display:none!important}}@media(min-width:768px) and 
 (max-width:991px){.hidden-sm{display:none!important}tr.hidden-sm{display:none!important}th.hidden-sm,td.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md{display:none!important}tr.hidden-sm.hidden-md{display:none!important}th.hidden-sm.hidden-md,td.hidden-sm.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-sm.hidden-lg{display:none!important}tr.hidden-sm.hidden-lg{display:none!important}th.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg{display:none!important}}.hidden-md{display:block!important}tr.hidden-md{display:table-row!important}th.hidden-md,td.hidden-md{display:table-cell!important}@media(max-width:767px){.hidden-md.hidden-xs{display:none!important}tr.hidden-md.hidden-xs{display:none!important}th.hidden-md.hidden-xs,td.hidden-md.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-md.hidden-sm{display:none!important}tr.hidden-md.hidden-sm{display:none!important}th.hidden-md.hid
 den-sm,td.hidden-md.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}tr.hidden-md{display:none!important}th.hidden-md,td.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-md.hidden-lg{display:none!important}tr.hidden-md.hidden-lg{display:none!important}th.hidden-md.hidden-lg,td.hidden-md.hidden-lg{display:none!important}}.hidden-lg{display:block!important}tr.hidden-lg{display:table-row!important}th.hidden-lg,td.hidden-lg{display:table-cell!important}@media(max-width:767px){.hidden-lg.hidden-xs{display:none!important}tr.hidden-lg.hidden-xs{display:none!important}th.hidden-lg.hidden-xs,td.hidden-lg.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-lg.hidden-sm{display:none!important}tr.hidden-lg.hidden-sm{display:none!important}th.hidden-lg.hidden-sm,td.hidden-lg.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-lg.hidden-md{di
 splay:none!important}tr.hidden-lg.hidden-md{display:none!important}th.hidden-lg.hidden-md,td.hidden-lg.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-lg{display:none!important}tr.hidden-lg{display:none!important}th.hidden-lg,td.hidden-lg{display:none!important}}.visible-print{display:none!important}tr.visible-print{display:none!important}th.visible-print,td.visible-print{display:none!important}@media print{.visible-print{display:block!important}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}.hidden-print{display:none!important}tr.hidden-print{display:none!important}th.hidden-print,td.hidden-print{display:none!important}}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}.row-fluid{margin-left:-15px;margin-right:-15px}.row-fluid:before,.row-fluid:after{content:" ";display:table}.row-fl
 uid:after{clear:both}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11{float:left}.col-xs-1{width:8.333333333333332%}.col-xs-2{width:16.666666666666664%}.col-xs-3{width:25%}.col-xs-4{width:33.33333333333333%}.col-xs-5{width:41.66666666666667%}.col-xs-6{width:50%}.col-xs-7{width:58.333333333333336%}.col-xs-8{width:66.66666666666666%}.col-xs-9{width:75%}.col-xs-10{width:83
 .33333333333334%}.col-xs-11{width:91.66666666666666%}.col-xs-12{width:100%}@media(min-width:768px){.container{max-width:750px}.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11{float:left}.col-sm-1{width:8.333333333333332%}.col-sm-2{width:16.666666666666664%}.col-sm-3{width:25%}.col-sm-4{width:33.33333333333333%}.col-sm-5{width:41.66666666666667%}.col-sm-6{width:50%}.col-sm-7{width:58.333333333333336%}.col-sm-8{width:66.66666666666666%}.col-sm-9{width:75%}.col-sm-10{width:83.33333333333334%}.col-sm-11{width:91.66666666666666%}.col-sm-12{width:100%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-11{left:91.6666666666
 6666%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-11{margin-left:91.66666666666666%}}@media(min-width:992px){.container{max-width:970px}.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.co
 l-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11{float:left}.col-md-1{width:8.333333333333332%}.col-md-2{width:16.666666666666664%}.col-md-3{width:25%}.col-md-4{width:33.33333333333333%}.col-md-5{width:41.66666666666667%}.col-md-6{width:50%}.col-md-7{width:58.333333333333336%}.col-md-8{width:66.66666666666666%}.col-md-9{width:75%}.col-md-10{width:83.33333333333334%}.col-md-11{width:91.66666666666666%}.col-md-12{width:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.333333333333332%}.col-md-push-2{left:16.666666666666664%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333333333333%}.col-md-push-5{left:41.66666666666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.333333333333336%}.col-md-push-8{left:66.66666666666666%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333333333334%}.col-md-push-11{left:91.66666666666666%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-3{right:25%}.col-md-pull-4{r
 ight:33.33333333333333%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-11{right:91.66666666666666%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-11{margin-left:91.66666666666666%}}@media(min-width:1200px){.container{max-width:1170px}.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11{float:left}.col-lg-1{width:8.3333333
 33333332%}.col-lg-2{width:16.666666666666664%}.col-lg-3{width:25%}.col-lg-4{width:33.33333333333333%}.col-lg-5{width:41.66666666666667%}.col-lg-6{width:50%}.col-lg-7{width:58.333333333333336%}.col-lg-8{width:66.66666666666666%}.col-lg-9{width:75%}.col-lg-10{width:83.33333333333334%}.col-lg-11{width:91.66666666666666%}.col-lg-12{width:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-11{left:91.66666666666666%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-6{right:50%}.col-l
 g-pull-7{right:58.333333333333336%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-11{margin-left:91.66666666666666%}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:normal;line-height:1.428571429;text-align:center;vertical-align:middle;cursor:pointer;border:1px solid transparent;border-radius:0;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-sele
 ct:none;-o-user-select:none;user-select:none}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabl
 ed] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-pr
 imary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-danger{color:#fff;background-color:#d9
 534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447
 ;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .
 btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-link{color:#428bca;font-weight:normal;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg{padding:10px 16px;font-siz
 e:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-xs{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs{padding:1px 5px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.btn-default .caret{border-top-color:#333}.btn-primary .caret,.btn-success .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret{border-top-color:#fff}.dropup .btn-default .caret{border-bottom-color:#333}.dropup .btn-primary .caret,.dropup .btn-success .caret,.dropup .btn-warning .caret,.dropup .btn-danger .caret,.dropup .btn-info .caret{border-bottom-color:#fff}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,
 .btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar:before,.btn-toolbar:after{content:" ";display:table}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group{float:left}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group,.btn-toolbar>.btn-group+.btn-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:le
 ft}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group-xs>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px;padding:1px 5px}.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{background:#f2f2f2}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{bord
 er-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{content:" ";display:table}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:0;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-grou
 p-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified .btn{float:none;display:table-cell;width:1%}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{display:none}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;border-bottom:0 dotted;content:""}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.1
 5);border-radius:0;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{font-size:14px;text-decoration:none;display:block;padding:5px 20px;clear:both;font-weight:normal;line-height:1.428571429;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#fff;background-color:#428bca}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.d
 ropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0 dotted;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media(min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}body,html{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;margin:0;background:#ededed;color:#343437;line-height:2em;font-weight:100;font-size:.95em}h1{font-size:2.5em;margin:.8em 0}body.center{padding:0 30px;background:#FFF;font-size:1em}ul li{list-style-type:disc}a{color:#4290ad;text-decoration:none;font-weight:normal}a:hover{text-decoration:underline}h1,h2,h3{font-weight:300;line-height:1.2em}.topNav,.bottomNav{background:#f2f2f2;margin:0 -30px;margin-bottom:20
 px}.topNav:before,.bottomNav:before,.topNav:after,.bottomNav:after{content:" ";display:table}.topNav:after,.bottomNav:after{clear:both}.topNav ul.navList,.bottomNav ul.navList{padding:10px 20px;margin:0;list-style-type:none}.topNav ul.navList li,.bottomNav ul.navList li{display:inline;padding:0 10px}.topNav ul.navList li.navBarCell1Rev,.bottomNav ul.navList li.navBarCell1Rev{font-weight:bold}.bottomNav{margin-top:30px;margin-bottom:0}.aboutLanguage{color:#BBB;background:white;text-align:center;padding:20px 0}.subNav{padding-bottom:10px;margin-bottom:10px;border-bottom:1px solid #EEE}.subNav:before,.subNav:after{content:" ";display:table}.subNav:after{clear:both}.subNav div:before,.subNav div:after{content:" ";display:table}.subNav div:after{clear:both}.subNav ul.navList,.subNav ul{font-size:.9em;margin:0;padding:00;float:left;list-style-type:none}.subNav ul.navList li,.subNav ul li{padding:0 5px;display:inline}table.overviewSummary,.contentContainer ul li table{width:100%;margin:20p
 x 0}table.overviewSummary caption,.contentContainer ul li table caption{text-align:left;font-weight:100;font-size:1em;float:left;padding:0 10px;margin-top:10px;background:#db4800;color:white}table.overviewSummary tr th,.contentContainer ul li table tr th{padding:10px;font-weight:bold;font-size:1em;text-align:left}table.overviewSummary tr td,.contentContainer ul li table tr td{vertical-align:top;font-size:.9em;padding:5px 10px;border-top:1px solid #EEE}table.overviewSummary tbody>tr:nth-child(odd)>td,.contentContainer ul li table tbody>tr:nth-child(odd)>td{background-color:#f9f9f9}body.left{padding-top:10px}body.left h1,body.left h2{display:inline;text-align:left;font-weight:100;font-size:1em;margin:0 10px;padding:3px 10px;margin-top:10px;background:#db4800;color:white;line-height:40px}body.left .indexHeader{margin:0;padding:0 15px;font-size:.9em}body.left ul{list-style-type:none;margin:0;padding:0}body.left ul li{margin:0;padding:0}body.left ul li a{display:block;padding:0 15px;text
 -decoration:none}body.left ul li a:hover{text-decoration:underline}.contentContainer .header ul,.contentContainer ul.blockList{padding:0}.contentContainer .header ul>li,.contentContainer ul.blockList>li{list-style-type:none}.contentContainer ul.inheritance{margin-left:0;padding-left:0}.contentContainer ul.inheritance li{list-style-type:none}.contentContainer ul.inheritance ul.inheritance{padding-left:20px}.contentContainer hr{border:0 none;border-top:1px solid #EEE;margin-top:30px;margin-botom:0}ul.blockList ul.blockList,ul.blockList ul.blockListLast{border:1px solid #EEE;margin:20px 0;padding:0 20px}ul.blockList ul.blockList h4,ul.blockList ul.blockListLast h4,ul.blockList ul.blockList h3,ul.blockList ul.blockListLast h3{font-size:1em;font-weight:bold;line-height:2em;text-indent:10px;border-bottom:1px solid #EEE;margin:0 -20px;padding:5px 0;background:#f2f2f2}ul.blockList ul.blockList li,ul.blockList ul.blockListLast li{list-style-type:none}ul.horizontal{list-style-type:none;paddin
 g:0;margin:0;font-size:.9em}ul.horizontal li{display:inline}span.strong{font-weight:bold}a span.strong{font-weight:normal}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/css/font-awesome.min.css
----------------------------------------------------------------------
diff --git a/site/src/site/assets/css/font-awesome.min.css b/site/src/site/assets/css/font-awesome.min.css
deleted file mode 100644
index 2ed777e..0000000
--- a/site/src/site/assets/css/font-awesome.min.css
+++ /dev/null
@@ -1,4 +0,0 @@
-/*!
- *  Font Awesome 4.1.0 by @davegandy - http://fontawesome.io - @fontawesome
- *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
- */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.1.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff') format('woff'),url('../fonts/fontawesome-webfont.ttf') format('truetype'),url('../fonts/fontawesome-webfont.svg#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{
 padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:spin 2s infinite linear;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImage
 Transform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1)}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stac
 k-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{co
 ntent:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:
 "\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\
 f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\
 f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"
 \f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-ha
 nd-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strik
 ethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-co
 mments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101
 "}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content
 :"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:
 before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.f
 a-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{
 content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content
 :"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa
 -google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-square:before,.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:b
 efore{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-gi
 t-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/css/main.css
----------------------------------------------------------------------
diff --git a/site/src/site/assets/css/main.css b/site/src/site/assets/css/main.css
deleted file mode 100644
index 294e019..0000000
--- a/site/src/site/assets/css/main.css
+++ /dev/null
@@ -1,304 +0,0 @@
-/*! HTML5 Boilerplate v4.3.0 | MIT License | http://h5bp.com/ */
-
-/*
- * What follows is the result of much research on cross-browser styling.
- * Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal,
- * Kroc Camen, and the H5BP dev community and team.
- */
-
-/* ==========================================================================
-   Base styles: opinionated defaults
-   ========================================================================== */
-
-html,
-button,
-input,
-select,
-textarea {
-    color: #222;
-}
-
-html {
-    font-size: 1em;
-    line-height: 1.4;
-}
-
-/*
- * Remove text-shadow in selection highlight: h5bp.com/i
- * These selection rule sets have to be separate.
- * Customize the background color to match your design.
- */
-
-::-moz-selection {
-    background: #b3d4fc;
-    text-shadow: none;
-}
-
-::selection {
-    background: #b3d4fc;
-    text-shadow: none;
-}
-
-/*
- * A better looking default horizontal rule
- */
-
-hr {
-    display: block;
-    height: 1px;
-    border: 0;
-    border-top: 1px solid #ccc;
-    margin: 1em 0;
-    padding: 0;
-}
-
-/*
- * Remove the gap between images, videos, audio and canvas and the bottom of
- * their containers: h5bp.com/i/440
- */
-
-audio,
-canvas,
-img,
-video {
-    vertical-align: middle;
-}
-
-/*
- * Remove default fieldset styles.
- */
-
-fieldset {
-    border: 0;
-    margin: 0;
-    padding: 0;
-}
-
-/*
- * Allow only vertical resizing of textareas.
- */
-
-textarea {
-    resize: vertical;
-}
-
-/* ==========================================================================
-   Browse Happy prompt
-   ========================================================================== */
-
-.browsehappy {
-    margin: 0.2em 0;
-    background: #ccc;
-    color: #000;
-    padding: 0.2em 0;
-}
-
-/* ==========================================================================
-   Author's custom styles
-   ========================================================================== */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/* ==========================================================================
-   Helper classes
-   ========================================================================== */
-
-/*
- * Image replacement
- */
-
-.ir {
-    background-color: transparent;
-    border: 0;
-    overflow: hidden;
-    /* IE 6/7 fallback */
-    *text-indent: -9999px;
-}
-
-.ir:before {
-    content: "";
-    display: block;
-    width: 0;
-    height: 150%;
-}
-
-/*
- * Hide from both screenreaders and browsers: h5bp.com/u
- */
-
-.hidden {
-    display: none !important;
-    visibility: hidden;
-}
-
-/*
- * Hide only visually, but have it available for screenreaders: h5bp.com/v
- */
-
-.visuallyhidden {
-    border: 0;
-    clip: rect(0 0 0 0);
-    height: 1px;
-    margin: -1px;
-    overflow: hidden;
-    padding: 0;
-    position: absolute;
-    width: 1px;
-}
-
-/*
- * Extends the .visuallyhidden class to allow the element to be focusable
- * when navigated to via the keyboard: h5bp.com/p
- */
-
-.visuallyhidden.focusable:active,
-.visuallyhidden.focusable:focus {
-    clip: auto;
-    height: auto;
-    margin: 0;
-    overflow: visible;
-    position: static;
-    width: auto;
-}
-
-/*
- * Hide visually and from screenreaders, but maintain layout
- */
-
-.invisible {
-    visibility: hidden;
-}
-
-/*
- * Clearfix: contain floats
- *
- * For modern browsers
- * 1. The space content is one way to avoid an Opera bug when the
- *    `contenteditable` attribute is included anywhere else in the document.
- *    Otherwise it causes space to appear at the top and bottom of elements
- *    that receive the `clearfix` class.
- * 2. The use of `table` rather than `block` is only necessary if using
- *    `:before` to contain the top-margins of child elements.
- */
-
-.clearfix:before,
-.clearfix:after {
-    content: " "; /* 1 */
-    display: table; /* 2 */
-}
-
-.clearfix:after {
-    clear: both;
-}
-
-/*
- * For IE 6/7 only
- * Include this rule to trigger hasLayout and contain floats.
- */
-
-.clearfix {
-    *zoom: 1;
-}
-
-/* ==========================================================================
-   EXAMPLE Media Queries for Responsive Design.
-   These examples override the primary ('mobile first') styles.
-   Modify as content requires.
-   ========================================================================== */
-
-@media only screen and (min-width: 35em) {
-    /* Style adjustments for viewports that meet the condition */
-}
-
-@media print,
-       (-o-min-device-pixel-ratio: 5/4),
-       (-webkit-min-device-pixel-ratio: 1.25),
-       (min-resolution: 120dpi) {
-    /* Style adjustments for high resolution devices */
-}
-
-/* ==========================================================================
-   Print styles.
-   Inlined to avoid required HTTP connection: h5bp.com/r
-   ========================================================================== */
-
-@media print {
-    * {
-        background: transparent !important;
-        color: #000 !important; /* Black prints faster: h5bp.com/s */
-        box-shadow: none !important;
-        text-shadow: none !important;
-    }
-
-    a,
-    a:visited {
-        text-decoration: underline;
-    }
-
-    a[href]:after {
-        content: " (" attr(href) ")";
-    }
-
-    abbr[title]:after {
-        content: " (" attr(title) ")";
-    }
-
-    /*
-     * Don't show links for images, or javascript/internal links
-     */
-
-    .ir a:after,
-    a[href^="javascript:"]:after,
-    a[href^="#"]:after {
-        content: "";
-    }
-
-    pre,
-    blockquote {
-        border: 1px solid #999;
-        page-break-inside: avoid;
-    }
-
-    thead {
-        display: table-header-group; /* h5bp.com/t */
-    }
-
-    tr,
-    img {
-        page-break-inside: avoid;
-    }
-
-    img {
-        max-width: 100% !important;
-    }
-
-    @page {
-        margin: 0.5cm;
-    }
-
-    p,
-    h2,
-    h3 {
-        orphans: 3;
-        widows: 3;
-    }
-
-    h2,
-    h3 {
-        page-break-after: avoid;
-    }
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/css/normalize.css
----------------------------------------------------------------------
diff --git a/site/src/site/assets/css/normalize.css b/site/src/site/assets/css/normalize.css
deleted file mode 100644
index 42e24d6..0000000
--- a/site/src/site/assets/css/normalize.css
+++ /dev/null
@@ -1,527 +0,0 @@
-/*! normalize.css v1.1.3 | MIT License | git.io/normalize */
-
-/* ==========================================================================
-   HTML5 display definitions
-   ========================================================================== */
-
-/**
- * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3.
- */
-
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-main,
-nav,
-section,
-summary {
-    display: block;
-}
-
-/**
- * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
- */
-
-audio,
-canvas,
-video {
-    display: inline-block;
-    *display: inline;
-    *zoom: 1;
-}
-
-/**
- * Prevent modern browsers from displaying `audio` without controls.
- * Remove excess height in iOS 5 devices.
- */
-
-audio:not([controls]) {
-    display: none;
-    height: 0;
-}
-
-/**
- * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4.
- * Known issue: no IE 6 support.
- */
-
-[hidden] {
-    display: none;
-}
-
-/* ==========================================================================
-   Base
-   ========================================================================== */
-
-/**
- * 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using
- *    `em` units.
- * 2. Prevent iOS text size adjust after orientation change, without disabling
- *    user zoom.
- */
-
-html {
-    font-size: 100%; /* 1 */
-    -ms-text-size-adjust: 100%; /* 2 */
-    -webkit-text-size-adjust: 100%; /* 2 */
-}
-
-/**
- * Address `font-family` inconsistency between `textarea` and other form
- * elements.
- */
-
-html,
-button,
-input,
-select,
-textarea {
-    font-family: sans-serif;
-}
-
-/**
- * Address margins handled incorrectly in IE 6/7.
- */
-
-body {
-    margin: 0;
-}
-
-/* ==========================================================================
-   Links
-   ========================================================================== */
-
-/**
- * Address `outline` inconsistency between Chrome and other browsers.
- */
-
-a:focus {
-    outline: thin dotted;
-}
-
-/**
- * Improve readability when focused and also mouse hovered in all browsers.
- */
-
-a:active,
-a:hover {
-    outline: 0;
-}
-
-/* ==========================================================================
-   Typography
-   ========================================================================== */
-
-/**
- * Address font sizes and margins set differently in IE 6/7.
- * Address font sizes within `section` and `article` in Firefox 4+, Safari 5,
- * and Chrome.
- */
-
-h1 {
-    font-size: 2em;
-    margin: 0.67em 0;
-}
-
-h2 {
-    font-size: 1.5em;
-    margin: 0.83em 0;
-}
-
-h3 {
-    font-size: 1.17em;
-    margin: 1em 0;
-}
-
-h4 {
-    font-size: 1em;
-    margin: 1.33em 0;
-}
-
-h5 {
-    font-size: 0.83em;
-    margin: 1.67em 0;
-}
-
-h6 {
-    font-size: 0.67em;
-    margin: 2.33em 0;
-}
-
-/**
- * Address styling not present in IE 7/8/9, Safari 5, and Chrome.
- */
-
-abbr[title] {
-    border-bottom: 1px dotted;
-}
-
-/**
- * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome.
- */
-
-b,
-strong {
-    font-weight: bold;
-}
-
-blockquote {
-    margin: 1em 40px;
-}
-
-/**
- * Address styling not present in Safari 5 and Chrome.
- */
-
-dfn {
-    font-style: italic;
-}
-
-/**
- * Address differences between Firefox and other browsers.
- * Known issue: no IE 6/7 normalization.
- */
-
-hr {
-    -moz-box-sizing: content-box;
-    box-sizing: content-box;
-    height: 0;
-}
-
-/**
- * Address styling not present in IE 6/7/8/9.
- */
-
-mark {
-    background: #ff0;
-    color: #000;
-}
-
-/**
- * Address margins set differently in IE 6/7.
- */
-
-p,
-pre {
-    margin: 1em 0;
-}
-
-/**
- * Correct font family set oddly in IE 6, Safari 4/5, and Chrome.
- */
-
-code,
-kbd,
-pre,
-samp {
-    font-family: monospace, serif;
-    _font-family: 'courier new', monospace;
-    font-size: 1em;
-}
-
-/**
- * Improve readability of pre-formatted text in all browsers.
- */
-
-pre {
-    white-space: pre;
-    white-space: pre-wrap;
-    word-wrap: break-word;
-}
-
-/**
- * Address CSS quotes not supported in IE 6/7.
- */
-
-q {
-    quotes: none;
-}
-
-/**
- * Address `quotes` property not supported in Safari 4.
- */
-
-q:before,
-q:after {
-    content: '';
-    content: none;
-}
-
-/**
- * Address inconsistent and variable font size in all browsers.
- */
-
-small {
-    font-size: 80%;
-}
-
-/**
- * Prevent `sub` and `sup` affecting `line-height` in all browsers.
- */
-
-sub,
-sup {
-    font-size: 75%;
-    line-height: 0;
-    position: relative;
-    vertical-align: baseline;
-}
-
-sup {
-    top: -0.5em;
-}
-
-sub {
-    bottom: -0.25em;
-}
-
-/* ==========================================================================
-   Lists
-   ========================================================================== */
-
-/**
- * Address margins set differently in IE 6/7.
- */
-
-dl,
-menu,
-ol,
-ul {
-    margin: 1em 0;
-}
-
-dd {
-    margin: 0 0 0 40px;
-}
-
-/**
- * Address paddings set differently in IE 6/7.
- */
-
-menu,
-ol,
-ul {
-    padding: 0 0 0 40px;
-}
-
-/**
- * Correct list images handled incorrectly in IE 7.
- */
-
-nav ul,
-nav ol {
-    list-style: none;
-    list-style-image: none;
-}
-
-/* ==========================================================================
-   Embedded content
-   ========================================================================== */
-
-/**
- * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3.
- * 2. Improve image quality when scaled in IE 7.
- */
-
-img {
-    border: 0; /* 1 */
-    -ms-interpolation-mode: bicubic; /* 2 */
-}
-
-/**
- * Correct overflow displayed oddly in IE 9.
- */
-
-svg:not(:root) {
-    overflow: hidden;
-}
-
-/* ==========================================================================
-   Figures
-   ========================================================================== */
-
-/**
- * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
- */
-
-figure {
-    margin: 0;
-}
-
-/* ==========================================================================
-   Forms
-   ========================================================================== */
-
-/**
- * Correct margin displayed oddly in IE 6/7.
- */
-
-form {
-    margin: 0;
-}
-
-/**
- * Define consistent border, margin, and padding.
- */
-
-fieldset {
-    border: 1px solid #c0c0c0;
-    margin: 0 2px;
-    padding: 0.35em 0.625em 0.75em;
-}
-
-/**
- * 1. Correct color not being inherited in IE 6/7/8/9.
- * 2. Correct text not wrapping in Firefox 3.
- * 3. Correct alignment displayed oddly in IE 6/7.
- */
-
-legend {
-    border: 0; /* 1 */
-    padding: 0;
-    white-space: normal; /* 2 */
-    *margin-left: -7px; /* 3 */
-}
-
-/**
- * 1. Correct font size not being inherited in all browsers.
- * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5,
- *    and Chrome.
- * 3. Improve appearance and consistency in all browsers.
- */
-
-button,
-input,
-select,
-textarea {
-    font-size: 100%; /* 1 */
-    margin: 0; /* 2 */
-    vertical-align: baseline; /* 3 */
-    *vertical-align: middle; /* 3 */
-}
-
-/**
- * Address Firefox 3+ setting `line-height` on `input` using `!important` in
- * the UA stylesheet.
- */
-
-button,
-input {
-    line-height: normal;
-}
-
-/**
- * Address inconsistent `text-transform` inheritance for `button` and `select`.
- * All other form control elements do not inherit `text-transform` values.
- * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+.
- * Correct `select` style inheritance in Firefox 4+ and Opera.
- */
-
-button,
-select {
-    text-transform: none;
-}
-
-/**
- * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
- *    and `video` controls.
- * 2. Correct inability to style clickable `input` types in iOS.
- * 3. Improve usability and consistency of cursor style between image-type
- *    `input` and others.
- * 4. Remove inner spacing in IE 7 without affecting normal text inputs.
- *    Known issue: inner spacing remains in IE 6.
- */
-
-button,
-html input[type="button"], /* 1 */
-input[type="reset"],
-input[type="submit"] {
-    -webkit-appearance: button; /* 2 */
-    cursor: pointer; /* 3 */
-    *overflow: visible;  /* 4 */
-}
-
-/**
- * Re-set default cursor for disabled elements.
- */
-
-button[disabled],
-html input[disabled] {
-    cursor: default;
-}
-
-/**
- * 1. Address box sizing set to content-box in IE 8/9.
- * 2. Remove excess padding in IE 8/9.
- * 3. Remove excess padding in IE 7.
- *    Known issue: excess padding remains in IE 6.
- */
-
-input[type="checkbox"],
-input[type="radio"] {
-    box-sizing: border-box; /* 1 */
-    padding: 0; /* 2 */
-    *height: 13px; /* 3 */
-    *width: 13px; /* 3 */
-}
-
-/**
- * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
- * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
- *    (include `-moz` to future-proof).
- */
-
-input[type="search"] {
-    -webkit-appearance: textfield; /* 1 */
-    -moz-box-sizing: content-box;
-    -webkit-box-sizing: content-box; /* 2 */
-    box-sizing: content-box;
-}
-
-/**
- * Remove inner padding and search cancel button in Safari 5 and Chrome
- * on OS X.
- */
-
-input[type="search"]::-webkit-search-cancel-button,
-input[type="search"]::-webkit-search-decoration {
-    -webkit-appearance: none;
-}
-
-/**
- * Remove inner padding and border in Firefox 3+.
- */
-
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-    border: 0;
-    padding: 0;
-}
-
-/**
- * 1. Remove default vertical scrollbar in IE 6/7/8/9.
- * 2. Improve readability and alignment in all browsers.
- */
-
-textarea {
-    overflow: auto; /* 1 */
-    vertical-align: top; /* 2 */
-}
-
-/* ==========================================================================
-   Tables
-   ========================================================================== */
-
-/**
- * Remove most spacing between table cells.
- */
-
-table {
-    border-collapse: collapse;
-    border-spacing: 0;
-}


[13/20] groovy-user-site git commit: move content to asf-site branch

Posted by pa...@apache.org.
http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/groovy-logo-colored.svg
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/groovy-logo-colored.svg b/site/src/site/assets/img/groovy-logo-colored.svg
deleted file mode 100644
index c81b366..0000000
--- a/site/src/site/assets/img/groovy-logo-colored.svg
+++ /dev/null
@@ -1,444 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   viewBox="0 0 1000 499"
-   height="499"
-   width="1000"
-   xml:space="preserve"
-   version="1.1"
-   id="svg2"
-   inkscape:version="0.48.4 r9939"
-   sodipodi:docname="Groovy-Logo (1).svg"><sodipodi:namedview
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1"
-     objecttolerance="10"
-     gridtolerance="10"
-     guidetolerance="10"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:window-width="1920"
-     inkscape:window-height="1017"
-     id="namedview3495"
-     showgrid="false"
-     inkscape:zoom="1.1852457"
-     inkscape:cx="523.07356"
-     inkscape:cy="229.21677"
-     inkscape:window-x="-8"
-     inkscape:window-y="-8"
-     inkscape:window-maximized="1"
-     inkscape:current-layer="g12" /><metadata
-     id="metadata8"><rdf:RDF><cc:Work
-         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
-     id="defs6" /><g
-     transform="matrix(1.25,0,0,-1.25,0,499)"
-     id="g10"><g
-       transform="scale(0.1,0.1)"
-       id="g12"><path
-         id="path14"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="M 6476.1262,3.8687586 4002.141,962.83678 1528.2591,4.1131885 2505.0758,1532.4826 -0.81654949,2468.4049 3076.8615,2454.0529 4002.0305,3991.2072 4927.288,2453.969 8005.0319,2468.0364 5499.1401,1532.3403 6476.1262,3.8687586"
-         inkscape:connector-curvature="0" /><path
-         id="path16"
-         style="fill:#619cbc;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="M 6141.4743,277.229 4004.278,1105.6131 1867.1923,277.40047 2711.0287,1597.7089 546.28434,2406.1993 3204.9636,2393.8173 4004.2043,3721.714 4803.4929,2393.7443 7462.2127,2405.9148 5297.4941,1597.5958 6141.4743,277.229"
-         inkscape:connector-curvature="0" /><path
-         id="path18"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2363.7468,3205.7479 c 213.4801,0 89.0587,-533.441 13.1421,-694.2905 -65.0108,-137.7053 -211.3653,-336.321 -384.8184,-336.321 -208.1083,0 -201.9185,233.0877 -119.079,408.5555 44.8462,94.9994 113.7698,201.4906 208.7273,279.7811 -24.3058,-81.7198 57.8558,-137.5374 24.6264,-207.9478 -22.6958,-48.0834 -69.6716,-100.6176 -94.0806,-152.3346 -39.4781,-83.6097 -24.3943,-232.0042 70.9795,-232.0042 85.3744,0 161.2357,105.7579 192.3355,171.6373 63.7139,134.9946 223.0227,710.9008 44.9494,710.9008 -205.0871,0 -558.4851,-499.7681 -632.4895,-656.5316 -132.0923,-279.8176 -36.3427,-624.4857 264.6266,-624.4857 203.3592,0 370.6262,195.5075 451.4209,366.6741 48.129,101.9492 74.336,203.3877 84.6559,299.0364 l 39.4781,7.2234 c 8.7209,-263.2948 287.2635,-699.2703 168.6892,-950.4385 -151.7521,-321.4728 -605.5052,-318.5944 -864.5905,-432.6848 -54.4588,127.3882 -128.2348,245.8272 -232.1158,336.2189 231.1062,77.7397 799.0197,208.2762 922.5053,469.8783 51.8981,109.9168 16.5649,292.1558 -43.3946,35
 3.92 -10.202,-38.8498 -24.3206,-78.4511 -43.0593,-118.14 -105.7379,-223.9817 -332.1281,-397.6839 -565.5223,-397.6839 -324.9473,0 -462.7061,233.5 -309.7787,557.5046 91.7815,194.413 560.46,841.5322 802.7925,841.5322"
-         inkscape:connector-curvature="0" /><path
-         id="path20"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 2363.7468,3205.7479 c 213.4801,0 89.0587,-533.441 13.1421,-694.2905 -65.0108,-137.7053 -211.3653,-336.321 -384.8184,-336.321 -208.1083,0 -201.9185,233.0877 -119.079,408.5555 44.8462,94.9994 113.7698,201.4906 208.7273,279.7811 -24.3058,-81.7198 57.8558,-137.5374 24.6264,-207.9478 -22.6958,-48.0834 -69.6716,-100.6176 -94.0806,-152.3346 -39.4781,-83.6097 -24.3943,-232.0042 70.9795,-232.0042 85.3744,0 161.2357,105.7579 192.3355,171.6373 63.7139,134.9946 223.0227,710.9008 44.9494,710.9008 -205.0871,0 -558.4851,-499.7681 -632.4895,-656.5316 -132.0923,-279.8176 -36.3427,-624.4857 264.6266,-624.4857 203.3592,0 370.6262,195.5075 451.4209,366.6741 48.129,101.9492 74.336,203.3877 84.6559,299.0364 l 39.4781,7.2234 c 8.7209,-263.2948 287.2635,-699.2703 168.6892,-950.4385 -151.7521,-321.4728 -605.5052,-318.5944 -864.5905,-432.6848 -54.4588,127.3882 -128.2348,245.8272 -232.1158,336.2189 231.1062,77.7397 799.0197,208.2762 922.5053,469.8783 51.8981,109.9168 16.5649,292.1558 -43.3946,35
 3.92 -10.202,-38.8498 -24.3206,-78.4511 -43.0593,-118.14 -105.7379,-223.9817 -332.1281,-397.6839 -565.5223,-397.6839 -324.9473,0 -462.7061,233.5 -309.7787,557.5046 91.7815,194.413 560.46,841.5322 802.7925,841.5322 z"
-         inkscape:connector-curvature="0" /><path
-         id="path22"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2918.9086,2433.6886 c 12.9101,-31.7212 50.2291,-211.3371 78.5804,-211.3371 61.2085,0 171.8283,166.548 201.5022,209.7866 54.433,-35.643 24.2359,-110.4751 125.1104,-110.4751 45.6679,0 68.6363,98.374 116.161,99.9719 1.6838,-39.7618 4.2297,-75.7441 -17.4455,-121.6751 -33.432,-70.8263 -118.0143,-166.7924 -201.1559,-166.7924 -59.5543,0 -142.4969,71.6982 -158.7893,71.6982 -17.7034,0 -50.1849,-8.2814 -60.549,-30.2108 -43.2914,-91.7342 72.4533,-397.9684 188.5369,-397.9684 62.0302,0 136.0493,45.5004 200.9275,73.577 -16.8929,-110.3473 -19.2398,-203.3876 3.1096,-298.3285 -59.1232,-37.4635 -128.3784,-53.2566 -183.9572,-53.2566 -285.2371,0 -127.9326,663.361 -390.9492,804.689 l 98.9181,130.3213"
-         inkscape:connector-curvature="0" /><path
-         id="path24"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 2918.9086,2433.6886 c 12.9101,-31.7212 50.2291,-211.3371 78.5804,-211.3371 61.2085,0 171.8283,166.548 201.5022,209.7866 54.433,-35.643 24.2359,-110.4751 125.1104,-110.4751 45.6679,0 68.6363,98.374 116.161,99.9719 1.6838,-39.7618 4.2297,-75.7441 -17.4455,-121.6751 -33.432,-70.8263 -118.0143,-166.7924 -201.1559,-166.7924 -59.5543,0 -142.4969,71.6982 -158.7893,71.6982 -17.7034,0 -50.1849,-8.2814 -60.549,-30.2108 -43.2914,-91.7342 72.4533,-397.9684 188.5369,-397.9684 62.0302,0 136.0493,45.5004 200.9275,73.577 -16.8929,-110.3473 -19.2398,-203.3876 3.1096,-298.3285 -59.1232,-37.4635 -128.3784,-53.2566 -183.9572,-53.2566 -285.2371,0 -127.9326,663.361 -390.9492,804.689 l 98.9181,130.3213 z"
-         inkscape:connector-curvature="0" /><path
-         id="path26"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4015.1837,2486.8466 c 215.5729,0 300.682,-387.7936 203.9671,-592.6916 -75.0507,-158.956 -208.0936,-274.1847 -378.5328,-274.1847 -301.0062,0 -263.2855,410.3213 -145.8645,659.0999 32.3857,68.5316 143.0275,217.9075 229.5735,217.9075 31.7962,0 58.1395,-10.1311 90.8567,-10.1311 z m -6.6687,-36.1975 c -33.9331,0 -63.7766,-16.7745 -79.5088,-50.1629 -33.0489,-69.9726 131.7164,-140.7843 108.0627,-190.8633 -14.8849,-31.5205 -71.5506,-61.0199 -100.1413,-61.0199 -142.8433,0 -141.6275,185.8579 -56.4815,306.9894 -52.9445,-33.7313 -87.6513,-85.2623 -110.1997,-133.0574 -83.7091,-177.2957 -17.2798,-421.1966 173.7552,-421.1966 105.5574,0 227.1418,94.8388 274.3755,194.9493 58.1395,123.0978 -90.5251,354.3614 -209.8621,354.3614"
-         inkscape:connector-curvature="0" /><path
-         id="path28"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4015.1837,2486.8466 c 215.5729,0 300.682,-387.7936 203.9671,-592.6916 -75.0507,-158.956 -208.0936,-274.1847 -378.5328,-274.1847 -301.0062,0 -263.2855,410.3213 -145.8645,659.0999 32.3857,68.5316 143.0275,217.9075 229.5735,217.9075 31.7962,0 58.1395,-10.1311 90.8567,-10.1311 z"
-         inkscape:connector-curvature="0" /><path
-         id="path30"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4008.515,2450.6491 c -33.9331,0 -63.7766,-16.7745 -79.5088,-50.1629 -33.0489,-69.9726 131.7164,-140.7843 108.0627,-190.8633 -14.8849,-31.5205 -71.5506,-61.0199 -100.1413,-61.0199 -142.8433,0 -141.6275,185.8579 -56.4815,306.9894 -52.9445,-33.7313 -87.6513,-85.2623 -110.1997,-133.0574 -83.7091,-177.2957 -17.2798,-421.1966 173.7552,-421.1966 105.5574,0 227.1418,94.8388 274.3755,194.9493 58.1395,123.0978 -90.5251,354.3614 -209.8621,354.3614 z"
-         inkscape:connector-curvature="0" /><path
-         id="path32"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4994.8963,1848.4247 c -56.3341,-119.3219 -161.302,-184.8328 -279.4968,-184.8328 -375.1064,0 -449.5308,342.0451 -286.9761,686.4323 38.3912,81.2857 101.394,171.2104 197.5931,171.2104 301.3452,0 511.2809,-371.1213 368.8798,-672.8099 z m -299.2819,629.6005 c -27.6697,0 -51.9497,-10.0034 -65.2135,-38.1201 -29.1802,-61.8371 129.5795,-116.9725 129.8006,-180.8745 -16.5797,-19.6347 -63.0028,-41.6115 -83.2301,-41.6115 -114.3262,0 -200.6143,154.9942 -103.0151,270.1827 -39.6071,-25.1544 -63.1134,-62.8039 -79.8405,-98.2025 -98.9623,-209.6297 42.1125,-421.5687 247.6638,-421.5687 85.5512,0 195.8246,47.6128 240.2582,141.7694 62.8923,133.2581 -161.1178,368.4252 -286.4234,368.4252"
-         inkscape:connector-curvature="0" /><path
-         id="path34"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4994.8963,1848.4247 c -56.3341,-119.3219 -161.302,-184.8328 -279.4968,-184.8328 -375.1064,0 -449.5308,342.0451 -286.9761,686.4323 38.3912,81.2857 101.394,171.2104 197.5931,171.2104 301.3452,0 511.2809,-371.1213 368.8798,-672.8099 z"
-         inkscape:connector-curvature="0" /><path
-         id="path36"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4695.6144,2478.0252 c -27.6697,0 -51.9497,-10.0034 -65.2135,-38.1201 -29.1802,-61.8371 129.5795,-116.9725 129.8006,-180.8745 -16.5797,-19.6347 -63.0028,-41.6115 -83.2301,-41.6115 -114.3262,0 -200.6143,154.9942 -103.0151,270.1827 -39.6071,-25.1544 -63.1134,-62.8039 -79.8405,-98.2025 -98.9623,-209.6297 42.1125,-421.5687 247.6638,-421.5687 85.5512,0 195.8246,47.6128 240.2582,141.7694 62.8923,133.2581 -161.1178,368.4252 -286.4234,368.4252 z"
-         inkscape:connector-curvature="0" /><path
-         id="path38"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 5382.8243,2480.0755 c 323.2672,0 487.5167,-593.2023 343.0523,-899.1666 -27.596,-58.5026 -79.0667,-116.9725 -146.9329,-116.9725 -369.3219,0 -275.0388,734.1034 -482.9481,942.6788 19.0114,20.1928 37.2122,41.3269 53.9024,62.6033 140.4853,-164.8699 70.6664,-598.7622 370.722,-598.7622 69.1189,0 121.4002,60.5238 149.2909,119.5919 74.4981,157.8434 -63.3713,431.9843 -214.2833,431.9843 -1.5106,0 -23.1748,-0.8974 -22.6958,-9.675 5.5634,-100.7416 84.8144,-37.9231 5.0108,-209.3743 -81.5353,16.2454 -167.8971,147.1395 -123.3161,241.5953 13.1164,27.7592 45.9442,35.497 68.1978,35.497"
-         inkscape:connector-curvature="0" /><path
-         id="path40"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 5382.8243,2480.0755 c 323.2672,0 487.5167,-593.2023 343.0523,-899.1666 -27.596,-58.5026 -79.0667,-116.9725 -146.9329,-116.9725 -369.3219,0 -275.0388,734.1034 -482.9481,942.6788 19.0114,20.1928 37.2122,41.3269 53.9024,62.6033 140.4853,-164.8699 70.6664,-598.7622 370.722,-598.7622 69.1189,0 121.4002,60.5238 149.2909,119.5919 74.4981,157.8434 -63.3713,431.9843 -214.2833,431.9843 -1.5106,0 -23.1748,-0.8974 -22.6958,-9.675 5.5634,-100.7416 84.8144,-37.9231 5.0108,-209.3743 -81.5353,16.2454 -167.8971,147.1395 -123.3161,241.5953 13.1164,27.7592 45.9442,35.497 68.1978,35.497 z"
-         inkscape:connector-curvature="0" /><path
-         id="path42"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 6186.6447,2486.6751 c 30.433,-2.8784 76.1929,-0.1568 102.3152,-8.1099 4.9002,-1.4812 1.179,-7.6102 2.0264,-12.4404 7.9214,-44.8183 20.4114,-87.3564 31.2066,-130.6642 42.1125,-168.7735 67.461,-342.0196 115.8,-509.2972 52.576,-182.1259 107.3996,-387.3668 43.7335,-615.9051 -6.2266,-22.3599 -14.5532,-45.0627 -25.3116,-67.8494 -72.177,-152.9256 -693.7313,-329.12312 -855.9912,-329.12312 -19.7114,0 -41.0071,5.58906 -50.4023,18.41251 68.4557,43.53772 111.3419,88.1699 141.959,152.99856 36.6596,77.69585 36.1069,150.47395 31.2804,217.48065 12.969,-7.5372 490.501,4.2319 507.8176,4.2319 70.1874,0 130.4638,67.8786 158.6124,127.545 51.7287,109.574 42.8862,221.4025 33.9331,314.7164 -4.4949,46.7116 -10.7952,92.7994 -19.4903,137.5629 l -13.1901,64.8251 -1.658,7.0994 -1.6211,7.0811 c 7.8477,0 0.8106,-13.7646 1.1053,-20.6926 4.8266,-112.9668 2.8001,-270.6788 -57.8815,-399.249 -28.2224,-59.7394 -74.3508,-121.3321 -145.1645,-121.3321 -310.3719,0 -154.2648,880.258 -402.9971,1089.5009 13.7796
 ,22.7612 26.0854,46.1754 36.4017,69.1336 147.1908,-177.7663 154.8912,-667.8082 371.5325,-667.8082 52.576,0 106.9206,49.28 129.2848,96.6338 96.2359,203.8728 -63.6292,441.3784 -133.3008,575.2494"
-         inkscape:connector-curvature="0" /><path
-         id="path44"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 6186.6447,2486.6751 c 30.433,-2.8784 76.1929,-0.1568 102.3152,-8.1099 4.9002,-1.4812 1.179,-7.6102 2.0264,-12.4404 7.9214,-44.8183 20.4114,-87.3564 31.2066,-130.6642 42.1125,-168.7735 67.461,-342.0196 115.8,-509.2972 52.576,-182.1259 107.3996,-387.3668 43.7335,-615.9051 -6.2266,-22.3599 -14.5532,-45.0627 -25.3116,-67.8494 -72.177,-152.9256 -693.7313,-329.12312 -855.9912,-329.12312 -19.7114,0 -41.0071,5.58906 -50.4023,18.41251 68.4557,43.53772 111.3419,88.1699 141.959,152.99856 36.6596,77.69585 36.1069,150.47395 31.2804,217.48065 12.969,-7.5372 490.501,4.2319 507.8176,4.2319 70.1874,0 130.4638,67.8786 158.6124,127.545 51.7287,109.574 42.8862,221.4025 33.9331,314.7164 -4.4949,46.7116 -10.7952,92.7994 -19.4903,137.5629 l -13.1901,64.8251 -1.658,7.0994 -1.6211,7.0811 c 7.8477,0 0.8106,-13.7646 1.1053,-20.6926 4.8266,-112.9668 2.8001,-270.6788 -57.8815,-399.249 -28.2224,-59.7394 -74.3508,-121.3321 -145.1645,-121.3321 -310.3719,0 -154.2648,880.258 -402.9971,1089.5009 13.7796
 ,22.7612 26.0854,46.1754 36.4017,69.1336 147.1908,-177.7663 154.8912,-667.8082 371.5325,-667.8082 52.576,0 106.9206,49.28 129.2848,96.6338 96.2359,203.8728 -63.6292,441.3784 -133.3008,575.2494 z"
-         inkscape:connector-curvature="0" /><path
-         id="path46"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2363.7468,3205.7479 c 213.4801,0 89.0587,-533.441 13.1421,-694.2905 -65.0108,-137.7053 -211.3653,-336.321 -384.8184,-336.321 -208.1083,0 -201.9185,233.0877 -119.079,408.5555 44.8462,94.9994 113.7698,201.4906 208.7273,279.7811 -24.3058,-81.7198 57.8558,-137.5374 24.6264,-207.9478 -22.6958,-48.0834 -69.6716,-100.6176 -94.0806,-152.3346 -39.4781,-83.6097 -24.3943,-232.0042 70.9795,-232.0042 85.3744,0 161.2357,105.7579 192.3355,171.6373 63.7139,134.9946 223.0227,710.9008 44.9494,710.9008 -205.0871,0 -558.4851,-499.7681 -632.4895,-656.5316 -132.0923,-279.8176 -36.3427,-624.4857 264.6266,-624.4857 203.3592,0 370.6262,195.5075 451.4209,366.6741 48.129,101.9492 74.336,203.3877 84.6559,299.0364 l 39.4781,7.2234 c 8.7209,-263.2948 287.2635,-699.2703 168.6892,-950.4385 -151.7521,-321.4728 -605.5052,-318.5944 -864.5905,-432.6848 -54.4588,127.3882 -128.2348,245.8272 -232.1158,336.2189 231.1062,77.7397 799.0197,208.2762 922.5053,469.8783 51.8981,109.9168 16.5649,292.1558 -43.3946,35
 3.92 -10.202,-38.8498 -24.3206,-78.4511 -43.0593,-118.14 -105.7379,-223.9817 -332.1281,-397.6839 -565.5223,-397.6839 -324.9473,0 -462.7061,233.5 -309.7787,557.5046 91.7815,194.413 560.46,841.5322 802.7925,841.5322"
-         inkscape:connector-curvature="0" /><path
-         id="path48"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 2363.7468,3205.7479 c 213.4801,0 89.0587,-533.441 13.1421,-694.2905 -65.0108,-137.7053 -211.3653,-336.321 -384.8184,-336.321 -208.1083,0 -201.9185,233.0877 -119.079,408.5555 44.8462,94.9994 113.7698,201.4906 208.7273,279.7811 -24.3058,-81.7198 57.8558,-137.5374 24.6264,-207.9478 -22.6958,-48.0834 -69.6716,-100.6176 -94.0806,-152.3346 -39.4781,-83.6097 -24.3943,-232.0042 70.9795,-232.0042 85.3744,0 161.2357,105.7579 192.3355,171.6373 63.7139,134.9946 223.0227,710.9008 44.9494,710.9008 -205.0871,0 -558.4851,-499.7681 -632.4895,-656.5316 -132.0923,-279.8176 -36.3427,-624.4857 264.6266,-624.4857 203.3592,0 370.6262,195.5075 451.4209,366.6741 48.129,101.9492 74.336,203.3877 84.6559,299.0364 l 39.4781,7.2234 c 8.7209,-263.2948 287.2635,-699.2703 168.6892,-950.4385 -151.7521,-321.4728 -605.5052,-318.5944 -864.5905,-432.6848 -54.4588,127.3882 -128.2348,245.8272 -232.1158,336.2189 231.1062,77.7397 799.0197,208.2762 922.5053,469.8783 51.8981,109.9168 16.5649,292.1558 -43.3946,35
 3.92 -10.202,-38.8498 -24.3206,-78.4511 -43.0593,-118.14 -105.7379,-223.9817 -332.1281,-397.6839 -565.5223,-397.6839 -324.9473,0 -462.7061,233.5 -309.7787,557.5046 91.7815,194.413 560.46,841.5322 802.7925,841.5322 z"
-         inkscape:connector-curvature="0" /><path
-         id="path50"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2918.9086,2433.6886 c 12.9101,-31.7212 50.2291,-211.3371 78.5804,-211.3371 61.2085,0 171.8283,166.548 201.5022,209.7866 54.433,-35.643 24.2359,-110.4751 125.1104,-110.4751 45.6679,0 68.6363,98.374 116.161,99.9719 1.6838,-39.7618 4.2297,-75.7441 -17.4455,-121.6751 -33.432,-70.8263 -118.0143,-166.7924 -201.1559,-166.7924 -59.5543,0 -142.4969,71.6982 -158.7893,71.6982 -17.7034,0 -50.1849,-8.2814 -60.549,-30.2108 -43.2914,-91.7342 72.4533,-397.9684 188.5369,-397.9684 62.0302,0 136.0493,45.5004 200.9275,73.577 -16.8929,-110.3473 -19.2398,-203.3876 3.1096,-298.3285 -59.1232,-37.4635 -128.3784,-53.2566 -183.9572,-53.2566 -285.2371,0 -127.9326,663.361 -390.9492,804.689 l 98.9181,130.3213"
-         inkscape:connector-curvature="0" /><path
-         id="path52"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 2918.9086,2433.6886 c 12.9101,-31.7212 50.2291,-211.3371 78.5804,-211.3371 61.2085,0 171.8283,166.548 201.5022,209.7866 54.433,-35.643 24.2359,-110.4751 125.1104,-110.4751 45.6679,0 68.6363,98.374 116.161,99.9719 1.6838,-39.7618 4.2297,-75.7441 -17.4455,-121.6751 -33.432,-70.8263 -118.0143,-166.7924 -201.1559,-166.7924 -59.5543,0 -142.4969,71.6982 -158.7893,71.6982 -17.7034,0 -50.1849,-8.2814 -60.549,-30.2108 -43.2914,-91.7342 72.4533,-397.9684 188.5369,-397.9684 62.0302,0 136.0493,45.5004 200.9275,73.577 -16.8929,-110.3473 -19.2398,-203.3876 3.1096,-298.3285 -59.1232,-37.4635 -128.3784,-53.2566 -183.9572,-53.2566 -285.2371,0 -127.9326,663.361 -390.9492,804.689 l 98.9181,130.3213 z"
-         inkscape:connector-curvature="0" /><path
-         id="path54"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4015.1837,2486.8466 c 215.5729,0 300.682,-387.7936 203.9671,-592.6916 -75.0507,-158.956 -208.0936,-274.1847 -378.5328,-274.1847 -301.0062,0 -263.2855,410.3213 -145.8645,659.0999 32.3857,68.5316 143.0275,217.9075 229.5735,217.9075 31.7962,0 58.1395,-10.1311 90.8567,-10.1311 z m -6.6687,-36.1975 c -33.9331,0 -63.7766,-16.7745 -79.5088,-50.1629 -33.0489,-69.9726 131.7164,-140.7843 108.0627,-190.8633 -14.8849,-31.5205 -71.5506,-61.0199 -100.1413,-61.0199 -142.8433,0 -141.6275,185.8579 -56.4815,306.9894 -52.9445,-33.7313 -87.6513,-85.2623 -110.1997,-133.0574 -83.7091,-177.2957 -17.2798,-421.1966 173.7552,-421.1966 105.5574,0 227.1418,94.8388 274.3755,194.9493 58.1395,123.0978 -90.5251,354.3614 -209.8621,354.3614"
-         inkscape:connector-curvature="0" /><path
-         id="path56"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4015.1837,2486.8466 c 215.5729,0 300.682,-387.7936 203.9671,-592.6916 -75.0507,-158.956 -208.0936,-274.1847 -378.5328,-274.1847 -301.0062,0 -263.2855,410.3213 -145.8645,659.0999 32.3857,68.5316 143.0275,217.9075 229.5735,217.9075 31.7962,0 58.1395,-10.1311 90.8567,-10.1311 z"
-         inkscape:connector-curvature="0" /><path
-         id="path58"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4008.515,2450.6491 c -33.9331,0 -63.7766,-16.7745 -79.5088,-50.1629 -33.0489,-69.9726 131.7164,-140.7843 108.0627,-190.8633 -14.8849,-31.5205 -71.5506,-61.0199 -100.1413,-61.0199 -142.8433,0 -141.6275,185.8579 -56.4815,306.9894 -52.9445,-33.7313 -87.6513,-85.2623 -110.1997,-133.0574 -83.7091,-177.2957 -17.2798,-421.1966 173.7552,-421.1966 105.5574,0 227.1418,94.8388 274.3755,194.9493 58.1395,123.0978 -90.5251,354.3614 -209.8621,354.3614 z"
-         inkscape:connector-curvature="0" /><path
-         id="path60"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4994.8963,1848.4247 c -56.3341,-119.3219 -161.302,-184.8328 -279.4968,-184.8328 -375.1064,0 -449.5308,342.0451 -286.9761,686.4323 38.3912,81.2857 101.394,171.2104 197.5931,171.2104 301.3452,0 511.2809,-371.1213 368.8798,-672.8099 z m -299.2819,629.6005 c -27.6697,0 -51.9497,-10.0034 -65.2135,-38.1201 -29.1802,-61.8371 129.5795,-116.9725 129.8006,-180.8745 -16.5797,-19.6347 -63.0028,-41.6115 -83.2301,-41.6115 -114.3262,0 -200.6143,154.9942 -103.0151,270.1827 -39.6071,-25.1544 -63.1134,-62.8039 -79.8405,-98.2025 -98.9623,-209.6297 42.1125,-421.5687 247.6638,-421.5687 85.5512,0 195.8246,47.6128 240.2582,141.7694 62.8923,133.2581 -161.1178,368.4252 -286.4234,368.4252"
-         inkscape:connector-curvature="0" /><path
-         id="path62"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4994.8963,1848.4247 c -56.3341,-119.3219 -161.302,-184.8328 -279.4968,-184.8328 -375.1064,0 -449.5308,342.0451 -286.9761,686.4323 38.3912,81.2857 101.394,171.2104 197.5931,171.2104 301.3452,0 511.2809,-371.1213 368.8798,-672.8099 z"
-         inkscape:connector-curvature="0" /><path
-         id="path64"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4695.6144,2478.0252 c -27.6697,0 -51.9497,-10.0034 -65.2135,-38.1201 -29.1802,-61.8371 129.5795,-116.9725 129.8006,-180.8745 -16.5797,-19.6347 -63.0028,-41.6115 -83.2301,-41.6115 -114.3262,0 -200.6143,154.9942 -103.0151,270.1827 -39.6071,-25.1544 -63.1134,-62.8039 -79.8405,-98.2025 -98.9623,-209.6297 42.1125,-421.5687 247.6638,-421.5687 85.5512,0 195.8246,47.6128 240.2582,141.7694 62.8923,133.2581 -161.1178,368.4252 -286.4234,368.4252 z"
-         inkscape:connector-curvature="0" /><path
-         id="path66"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 5382.8243,2480.0755 c 323.2672,0 487.5167,-593.2023 343.0523,-899.1666 -27.596,-58.5026 -79.0667,-116.9725 -146.9329,-116.9725 -369.3219,0 -275.0388,734.1034 -482.9481,942.6788 19.0114,20.1928 37.2122,41.3269 53.9024,62.6033 140.4853,-164.8699 70.6664,-598.7622 370.722,-598.7622 69.1189,0 121.4002,60.5238 149.2909,119.5919 74.4981,157.8434 -63.3713,431.9843 -214.2833,431.9843 -1.5106,0 -23.1748,-0.8974 -22.6958,-9.675 5.5634,-100.7416 84.8144,-37.9231 5.0108,-209.3743 -81.5353,16.2454 -167.8971,147.1395 -123.3161,241.5953 13.1164,27.7592 45.9442,35.497 68.1978,35.497"
-         inkscape:connector-curvature="0" /><path
-         id="path68"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 5382.8243,2480.0755 c 323.2672,0 487.5167,-593.2023 343.0523,-899.1666 -27.596,-58.5026 -79.0667,-116.9725 -146.9329,-116.9725 -369.3219,0 -275.0388,734.1034 -482.9481,942.6788 19.0114,20.1928 37.2122,41.3269 53.9024,62.6033 140.4853,-164.8699 70.6664,-598.7622 370.722,-598.7622 69.1189,0 121.4002,60.5238 149.2909,119.5919 74.4981,157.8434 -63.3713,431.9843 -214.2833,431.9843 -1.5106,0 -23.1748,-0.8974 -22.6958,-9.675 5.5634,-100.7416 84.8144,-37.9231 5.0108,-209.3743 -81.5353,16.2454 -167.8971,147.1395 -123.3161,241.5953 13.1164,27.7592 45.9442,35.497 68.1978,35.497 z"
-         inkscape:connector-curvature="0" /><path
-         id="path70"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 6186.6447,2486.6751 c 30.433,-2.8784 76.1929,-0.1568 102.3152,-8.1099 4.9002,-1.4812 1.179,-7.6102 2.0264,-12.4404 7.9214,-44.8183 20.4114,-87.3564 31.2066,-130.6642 42.1125,-168.7735 67.461,-342.0196 115.8,-509.2972 52.576,-182.1259 107.3996,-387.3668 43.7335,-615.9051 -6.2266,-22.3599 -14.5532,-45.0627 -25.3116,-67.8494 -72.177,-152.9256 -257.759,-298.49641 -420.0558,-298.49641 -19.7114,0 -40.9703,5.57082 -50.4023,18.39792 68.4926,43.53406 111.3419,88.18449 141.9591,152.99489 36.6964,77.7105 36.1437,150.4886 31.3172,217.4843 12.969,-7.5408 54.5287,-26.3802 71.8453,-26.3802 70.1874,0 130.4638,67.8786 158.6124,127.545 51.7287,109.574 42.8862,221.4025 33.9331,314.7164 -4.4949,46.7116 -10.7952,92.7994 -19.4903,137.5629 l -13.1901,64.8251 -1.658,7.0994 -1.6211,7.0811 c 7.8477,0 0.8106,-13.7646 1.1053,-20.6926 4.8266,-112.9668 2.8001,-270.6788 -57.8815,-399.249 -28.2224,-59.7394 -74.3508,-121.3321 -145.1645,-121.3321 -310.3719,0 -154.2648,880.258 -402.9971,1089.5009 13.779
 6,22.7612 26.0854,46.1754 36.4017,69.1336 147.1908,-177.7663 154.8912,-667.8082 371.5325,-667.8082 52.576,0 106.9206,49.28 129.2848,96.6338 96.2359,203.8728 -63.6292,441.3784 -133.3008,575.2494"
-         inkscape:connector-curvature="0" /><path
-         id="path72"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 6186.6447,2486.6751 c 30.433,-2.8784 76.1929,-0.1568 102.3152,-8.1099 4.9002,-1.4812 1.179,-7.6102 2.0264,-12.4404 7.9214,-44.8183 20.4114,-87.3564 31.2066,-130.6642 42.1125,-168.7735 67.461,-342.0196 115.8,-509.2972 52.576,-182.1259 107.3996,-387.3668 43.7335,-615.9051 -6.2266,-22.3599 -14.5532,-45.0627 -25.3116,-67.8494 -72.177,-152.9256 -257.759,-298.49641 -420.0558,-298.49641 -19.7114,0 -40.9703,5.57082 -50.4023,18.39792 68.4926,43.53406 111.3419,88.18449 141.9591,152.99489 36.6964,77.7105 36.1437,150.4886 31.3172,217.4843 12.969,-7.5408 54.5287,-26.3802 71.8453,-26.3802 70.1874,0 130.4638,67.8786 158.6124,127.545 51.7287,109.574 42.8862,221.4025 33.9331,314.7164 -4.4949,46.7116 -10.7952,92.7994 -19.4903,137.5629 l -13.1901,64.8251 -1.658,7.0994 -1.6211,7.0811 c 7.8477,0 0.8106,-13.7646 1.1053,-20.6926 4.8266,-112.9668 2.8001,-270.6788 -57.8815,-399.249 -28.2224,-59.7394 -74.3508,-121.3321 -145.1645,-121.3321 -310.3719,0 -154.2648,880.258 -402.9971,1089.5009 13.779
 6,22.7612 26.0854,46.1754 36.4017,69.1336 147.1908,-177.7663 154.8912,-667.8082 371.5325,-667.8082 52.576,0 106.9206,49.28 129.2848,96.6338 96.2359,203.8728 -63.6292,441.3784 -133.3008,575.2494 z"
-         inkscape:connector-curvature="0" /><path
-         id="path74"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2363.7468,3205.7479 c 213.4801,0 89.0587,-533.441 13.1421,-694.2905 -65.0108,-137.7053 -211.3653,-336.321 -384.8184,-336.321 -208.1083,0 -201.9185,233.0877 -119.079,408.5555 44.8462,94.9994 113.7698,201.4906 208.7273,279.7811 -24.3058,-81.7198 57.8558,-137.5374 24.6264,-207.9478 -22.6958,-48.0834 -69.6716,-100.6176 -94.0806,-152.3346 -39.4781,-83.6097 -24.3943,-232.0042 70.9795,-232.0042 85.3744,0 161.2357,105.7579 192.3355,171.6373 63.7139,134.9946 223.0227,710.9008 44.9494,710.9008 -205.0871,0 -558.4851,-499.7681 -632.4895,-656.5316 -132.0923,-279.8176 -36.3427,-624.4857 264.6266,-624.4857 203.3592,0 370.6262,195.5075 451.4209,366.6741 48.129,101.9492 74.336,203.3877 84.6559,299.0364 l 39.4781,7.2234 c 8.7209,-263.2948 287.2635,-699.2703 168.6892,-950.4385 -151.7521,-321.4728 -605.5052,-318.5944 -864.5905,-432.6848 -54.4588,127.3882 -128.2348,245.8272 -232.1158,336.2189 231.1062,77.7397 799.0197,208.2762 922.5053,469.8783 51.8981,109.9168 16.5649,292.1558 -43.3946,35
 3.92 -10.202,-38.8498 -24.3206,-78.4511 -43.0593,-118.14 -105.7379,-223.9817 -332.1281,-397.6839 -565.5223,-397.6839 -324.9473,0 -462.7061,233.5 -309.7787,557.5046 91.7815,194.413 560.46,841.5322 802.7925,841.5322"
-         inkscape:connector-curvature="0" /><path
-         id="path76"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 2363.7468,3205.7479 c 213.4801,0 89.0587,-533.441 13.1421,-694.2905 -65.0108,-137.7053 -211.3653,-336.321 -384.8184,-336.321 -208.1083,0 -201.9185,233.0877 -119.079,408.5555 44.8462,94.9994 113.7698,201.4906 208.7273,279.7811 -24.3058,-81.7198 57.8558,-137.5374 24.6264,-207.9478 -22.6958,-48.0834 -69.6716,-100.6176 -94.0806,-152.3346 -39.4781,-83.6097 -24.3943,-232.0042 70.9795,-232.0042 85.3744,0 161.2357,105.7579 192.3355,171.6373 63.7139,134.9946 223.0227,710.9008 44.9494,710.9008 -205.0871,0 -558.4851,-499.7681 -632.4895,-656.5316 -132.0923,-279.8176 -36.3427,-624.4857 264.6266,-624.4857 203.3592,0 370.6262,195.5075 451.4209,366.6741 48.129,101.9492 74.336,203.3877 84.6559,299.0364 l 39.4781,7.2234 c 8.7209,-263.2948 287.2635,-699.2703 168.6892,-950.4385 -151.7521,-321.4728 -605.5052,-318.5944 -864.5905,-432.6848 -54.4588,127.3882 -128.2348,245.8272 -232.1158,336.2189 231.1062,77.7397 799.0197,208.2762 922.5053,469.8783 51.8981,109.9168 16.5649,292.1558 -43.3946,35
 3.92 -10.202,-38.8498 -24.3206,-78.4511 -43.0593,-118.14 -105.7379,-223.9817 -332.1281,-397.6839 -565.5223,-397.6839 -324.9473,0 -462.7061,233.5 -309.7787,557.5046 91.7815,194.413 560.46,841.5322 802.7925,841.5322 z"
-         inkscape:connector-curvature="0" /><path
-         id="path78"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2918.9086,2433.6886 c 12.9101,-31.7212 50.2291,-211.3371 78.5804,-211.3371 61.2085,0 171.8283,166.548 201.5022,209.7866 54.433,-35.643 24.2359,-110.4751 125.1104,-110.4751 45.6679,0 68.6363,98.374 116.161,99.9719 1.6838,-39.7618 4.2297,-75.7441 -17.4455,-121.6751 -33.432,-70.8263 -118.0143,-166.7924 -201.1559,-166.7924 -59.5543,0 -142.4969,71.6982 -158.7893,71.6982 -17.7034,0 -50.1849,-8.2814 -60.549,-30.2108 -43.2914,-91.7342 72.4533,-397.9684 188.5369,-397.9684 62.0302,0 136.0493,45.5004 200.9275,73.577 -16.8929,-110.3473 -19.2398,-203.3876 3.1096,-298.3285 -59.1232,-37.4635 -128.3784,-53.2566 -183.9572,-53.2566 -285.2371,0 -127.9326,663.361 -390.9492,804.689 l 98.9181,130.3213"
-         inkscape:connector-curvature="0" /><path
-         id="path80"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 2918.9086,2433.6886 c 12.9101,-31.7212 50.2291,-211.3371 78.5804,-211.3371 61.2085,0 171.8283,166.548 201.5022,209.7866 54.433,-35.643 24.2359,-110.4751 125.1104,-110.4751 45.6679,0 68.6363,98.374 116.161,99.9719 1.6838,-39.7618 4.2297,-75.7441 -17.4455,-121.6751 -33.432,-70.8263 -118.0143,-166.7924 -201.1559,-166.7924 -59.5543,0 -142.4969,71.6982 -158.7893,71.6982 -17.7034,0 -50.1849,-8.2814 -60.549,-30.2108 -43.2914,-91.7342 72.4533,-397.9684 188.5369,-397.9684 62.0302,0 136.0493,45.5004 200.9275,73.577 -16.8929,-110.3473 -19.2398,-203.3876 3.1096,-298.3285 -59.1232,-37.4635 -128.3784,-53.2566 -183.9572,-53.2566 -285.2371,0 -127.9326,663.361 -390.9492,804.689 l 98.9181,130.3213 z"
-         inkscape:connector-curvature="0" /><path
-         id="path82"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4015.1837,2486.8466 c 215.5729,0 300.682,-387.7936 203.9671,-592.6916 -75.0507,-158.956 -208.0936,-274.1847 -378.5328,-274.1847 -301.0062,0 -263.2855,410.3213 -145.8645,659.0999 32.3857,68.5316 143.0275,217.9075 229.5735,217.9075 31.7962,0 58.1395,-10.1311 90.8567,-10.1311 z m -6.6687,-36.1975 c -33.9331,0 -63.7766,-16.7745 -79.5088,-50.1629 -33.0489,-69.9726 131.7164,-140.7843 108.0627,-190.8633 -14.8849,-31.5205 -71.5506,-61.0199 -100.1413,-61.0199 -142.8433,0 -141.6275,185.8579 -56.4815,306.9894 -52.9445,-33.7313 -87.6513,-85.2623 -110.1997,-133.0574 -83.7091,-177.2957 -17.2798,-421.1966 173.7552,-421.1966 105.5574,0 227.1418,94.8388 274.3755,194.9493 58.1395,123.0978 -90.5251,354.3614 -209.8621,354.3614"
-         inkscape:connector-curvature="0" /><path
-         id="path84"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4015.1837,2486.8466 c 215.5729,0 300.682,-387.7936 203.9671,-592.6916 -75.0507,-158.956 -208.0936,-274.1847 -378.5328,-274.1847 -301.0062,0 -263.2855,410.3213 -145.8645,659.0999 32.3857,68.5316 143.0275,217.9075 229.5735,217.9075 31.7962,0 58.1395,-10.1311 90.8567,-10.1311 z"
-         inkscape:connector-curvature="0" /><path
-         id="path86"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4008.515,2450.6491 c -33.9331,0 -63.7766,-16.7745 -79.5088,-50.1629 -33.0489,-69.9726 131.7164,-140.7843 108.0627,-190.8633 -14.8849,-31.5205 -71.5506,-61.0199 -100.1413,-61.0199 -142.8433,0 -141.6275,185.8579 -56.4815,306.9894 -52.9445,-33.7313 -87.6513,-85.2623 -110.1997,-133.0574 -83.7091,-177.2957 -17.2798,-421.1966 173.7552,-421.1966 105.5574,0 227.1418,94.8388 274.3755,194.9493 58.1395,123.0978 -90.5251,354.3614 -209.8621,354.3614 z"
-         inkscape:connector-curvature="0" /><path
-         id="path88"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4994.8963,1848.4247 c -56.3341,-119.3219 -161.302,-184.8328 -279.4968,-184.8328 -375.1064,0 -449.5308,342.0451 -286.9761,686.4323 38.3912,81.2857 101.394,171.2104 197.5931,171.2104 301.3452,0 511.2809,-371.1213 368.8798,-672.8099 z m -299.2819,629.6005 c -27.6697,0 -51.9497,-10.0034 -65.2135,-38.1201 -29.1802,-61.8371 129.5795,-116.9725 129.8006,-180.8745 -16.5797,-19.6347 -63.0028,-41.6115 -83.2301,-41.6115 -114.3262,0 -200.6143,154.9942 -103.0151,270.1827 -39.6071,-25.1544 -63.1134,-62.8039 -79.8405,-98.2025 -98.9623,-209.6297 42.1125,-421.5687 247.6638,-421.5687 85.5512,0 195.8246,47.6128 240.2582,141.7694 62.8923,133.2581 -161.1178,368.4252 -286.4234,368.4252"
-         inkscape:connector-curvature="0" /><path
-         id="path90"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4994.8963,1848.4247 c -56.3341,-119.3219 -161.302,-184.8328 -279.4968,-184.8328 -375.1064,0 -449.5308,342.0451 -286.9761,686.4323 38.3912,81.2857 101.394,171.2104 197.5931,171.2104 301.3452,0 511.2809,-371.1213 368.8798,-672.8099 z"
-         inkscape:connector-curvature="0" /><path
-         id="path92"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4695.6144,2478.0252 c -27.6697,0 -51.9497,-10.0034 -65.2135,-38.1201 -29.1802,-61.8371 129.5795,-116.9725 129.8006,-180.8745 -16.5797,-19.6347 -63.0028,-41.6115 -83.2301,-41.6115 -114.3262,0 -200.6143,154.9942 -103.0151,270.1827 -39.6071,-25.1544 -63.1134,-62.8039 -79.8405,-98.2025 -98.9623,-209.6297 42.1125,-421.5687 247.6638,-421.5687 85.5512,0 195.8246,47.6128 240.2582,141.7694 62.8923,133.2581 -161.1178,368.4252 -286.4234,368.4252 z"
-         inkscape:connector-curvature="0" /><path
-         id="path94"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 5382.8243,2480.0755 c 323.2672,0 487.5167,-593.2023 343.0523,-899.1666 -27.596,-58.5026 -79.0667,-116.9725 -146.9329,-116.9725 -369.3219,0 -275.0388,734.1034 -482.9481,942.6788 19.0114,20.1928 37.2122,41.3269 53.9024,62.6033 140.4853,-164.8699 70.6664,-598.7622 370.722,-598.7622 69.1189,0 121.4002,60.5238 149.2909,119.5919 74.4981,157.8434 -63.3713,431.9843 -214.2833,431.9843 -1.5106,0 -23.1748,-0.8974 -22.6958,-9.675 5.5634,-100.7416 84.8144,-37.9231 5.0108,-209.3743 -81.5353,16.2454 -167.8971,147.1395 -123.3161,241.5953 13.1164,27.7592 45.9442,35.497 68.1978,35.497"
-         inkscape:connector-curvature="0" /><path
-         id="path96"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 5382.8243,2480.0755 c 323.2672,0 487.5167,-593.2023 343.0523,-899.1666 -27.596,-58.5026 -79.0667,-116.9725 -146.9329,-116.9725 -369.3219,0 -275.0388,734.1034 -482.9481,942.6788 19.0114,20.1928 37.2122,41.3269 53.9024,62.6033 140.4853,-164.8699 70.6664,-598.7622 370.722,-598.7622 69.1189,0 121.4002,60.5238 149.2909,119.5919 74.4981,157.8434 -63.3713,431.9843 -214.2833,431.9843 -1.5106,0 -23.1748,-0.8974 -22.6958,-9.675 5.5634,-100.7416 84.8144,-37.9231 5.0108,-209.3743 -81.5353,16.2454 -167.8971,147.1395 -123.3161,241.5953 13.1164,27.7592 45.9442,35.497 68.1978,35.497 z"
-         inkscape:connector-curvature="0" /><path
-         id="path98"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 6186.6447,2486.6751 c 30.433,-2.8784 76.1929,-0.1568 102.3152,-8.1099 4.9002,-1.4812 1.179,-7.6102 2.0264,-12.4404 7.9214,-44.8183 20.4114,-87.3564 31.2066,-130.6642 42.1125,-168.7735 67.461,-342.0196 115.8,-509.2972 52.576,-182.1259 107.3996,-387.3668 43.7335,-615.9051 -6.2266,-22.3599 -14.5532,-45.0627 -25.3116,-67.8494 -72.177,-152.9256 -257.759,-298.49641 -420.0558,-298.49641 -19.7114,0 -40.9703,5.57082 -50.4023,18.39792 68.4926,43.53406 111.3419,88.18449 141.9591,152.99489 36.6964,77.7105 36.1437,150.4886 31.3172,217.4843 12.969,-7.5408 54.5287,-26.3802 71.8453,-26.3802 70.1874,0 130.4638,67.8786 158.6124,127.545 51.7287,109.574 42.8862,221.4025 33.9331,314.7164 -4.4949,46.7116 -10.7952,92.7994 -19.4903,137.5629 l -13.1901,64.8251 -1.658,7.0994 -1.6211,7.0811 c 7.8477,0 0.8106,-13.7646 1.1053,-20.6926 4.8266,-112.9668 2.8001,-270.6788 -57.8815,-399.249 -28.2224,-59.7394 -74.3508,-121.3321 -145.1645,-121.3321 -310.3719,0 -154.2648,880.258 -402.9971,1089.5009 13.779
 6,22.7612 26.0854,46.1754 36.4017,69.1336 147.1908,-177.7663 154.8912,-667.8082 371.5325,-667.8082 52.576,0 106.9206,49.28 129.2848,96.6338 96.2359,203.8728 -63.6292,441.3784 -133.3008,575.2494"
-         inkscape:connector-curvature="0" /><path
-         id="path100"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 6186.6447,2486.6751 c 30.433,-2.8784 76.1929,-0.1568 102.3152,-8.1099 4.9002,-1.4812 1.179,-7.6102 2.0264,-12.4404 7.9214,-44.8183 20.4114,-87.3564 31.2066,-130.6642 42.1125,-168.7735 67.461,-342.0196 115.8,-509.2972 52.576,-182.1259 107.3996,-387.3668 43.7335,-615.9051 -6.2266,-22.3599 -14.5532,-45.0627 -25.3116,-67.8494 -72.177,-152.9256 -257.759,-298.49641 -420.0558,-298.49641 -19.7114,0 -40.9703,5.57082 -50.4023,18.39792 68.4926,43.53406 111.3419,88.18449 141.9591,152.99489 36.6964,77.7105 36.1437,150.4886 31.3172,217.4843 12.969,-7.5408 54.5287,-26.3802 71.8453,-26.3802 70.1874,0 130.4638,67.8786 158.6124,127.545 51.7287,109.574 42.8862,221.4025 33.9331,314.7164 -4.4949,46.7116 -10.7952,92.7994 -19.4903,137.5629 l -13.1901,64.8251 -1.658,7.0994 -1.6211,7.0811 c 7.8477,0 0.8106,-13.7646 1.1053,-20.6926 4.8266,-112.9668 2.8001,-270.6788 -57.8815,-399.249 -28.2224,-59.7394 -74.3508,-121.3321 -145.1645,-121.3321 -310.3719,0 -154.2648,880.258 -402.9971,1089.5009 13.779
 6,22.7612 26.0854,46.1754 36.4017,69.1336 147.1908,-177.7663 154.8912,-667.8082 371.5325,-667.8082 52.576,0 106.9206,49.28 129.2848,96.6338 96.2359,203.8728 -63.6292,441.3784 -133.3008,575.2494 z"
-         inkscape:connector-curvature="0" /><path
-         id="path102"
-         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2363.7468,3205.7479 c 213.4801,0 89.0587,-533.441 13.1421,-694.2905 -65.0108,-137.7053 -211.3653,-336.321 -384.8184,-336.321 -208.1083,0 -201.9185,233.0877 -119.079,408.5555 44.8462,94.9994 113.7698,201.4906 208.7273,279.7811 -24.3058,-81.7198 57.8558,-137.5374 24.6264,-207.9478 -22.6958,-48.0834 -69.6716,-100.6176 -94.0806,-152.3346 -39.4781,-83.6097 -24.3943,-232.0042 70.9795,-232.0042 85.3744,0 161.2357,105.7579 192.3355,171.6373 63.7139,134.9946 223.0227,710.9008 44.9494,710.9008 -205.0871,0 -558.4851,-499.7681 -632.4895,-656.5316 -132.0923,-279.8176 -36.3427,-624.4857 264.6266,-624.4857 203.3592,0 370.6262,195.5075 451.4209,366.6741 48.129,101.9492 74.336,203.3877 84.6559,299.0364 l 39.4781,7.2234 c 8.7209,-263.2948 287.2635,-699.2703 168.6892,-950.4385 -151.7521,-321.4728 -605.5052,-318.5944 -864.5905,-432.6848 -54.4588,127.3882 -128.2348,245.8272 -232.1158,336.2189 231.1062,77.7397 799.0197,208.2762 922.5053,469.8783 51.8981,109.9168 16.5649,292.1558 -43.3946,35
 3.92 -10.202,-38.8498 -24.3206,-78.4511 -43.0593,-118.14 -105.7379,-223.9817 -332.1281,-397.6839 -565.5223,-397.6839 -324.9473,0 -462.7061,233.5 -309.7787,557.5046 91.7815,194.413 560.46,841.5322 802.7925,841.5322"
-         inkscape:connector-curvature="0" /><path
-         id="path104"
-         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2918.9086,2433.6886 c 12.9101,-31.7212 50.2291,-211.3371 78.5804,-211.3371 61.2085,0 171.8283,166.548 201.5022,209.7866 54.433,-35.643 24.2359,-110.4751 125.1104,-110.4751 45.6679,0 68.6363,98.374 116.161,99.9719 1.6838,-39.7618 4.2297,-75.7441 -17.4455,-121.6751 -33.432,-70.8263 -118.0143,-166.7924 -201.1559,-166.7924 -59.5543,0 -142.4969,71.6982 -158.7893,71.6982 -17.7034,0 -50.1849,-8.2814 -60.549,-30.2108 -43.2914,-91.7342 72.4533,-397.9684 188.5369,-397.9684 62.0302,0 136.0493,45.5004 200.9275,73.577 -16.8929,-110.3473 -19.2398,-203.3876 3.1096,-298.3285 -59.1232,-37.4635 -128.3784,-53.2566 -183.9572,-53.2566 -285.2371,0 -127.9326,663.361 -390.9492,804.689 l 98.9181,130.3213"
-         inkscape:connector-curvature="0" /><path
-         id="path106"
-         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4015.1837,2486.8466 c 215.5729,0 300.682,-387.7936 203.9671,-592.6916 -75.0507,-158.956 -208.0936,-274.1847 -378.5328,-274.1847 -301.0062,0 -263.2855,410.3213 -145.8645,659.0999 32.3857,68.5316 143.0275,217.9075 229.5735,217.9075 31.7962,0 58.1395,-10.1311 90.8567,-10.1311 z m -6.6687,-36.1975 c -33.9331,0 -63.7766,-16.7745 -79.5088,-50.1629 -33.0489,-69.9726 131.7164,-140.7843 108.0627,-190.8633 -14.8849,-31.5205 -71.5506,-61.0199 -100.1413,-61.0199 -142.8433,0 -141.6275,185.8579 -56.4815,306.9894 -52.9445,-33.7313 -87.6513,-85.2623 -110.1997,-133.0574 -83.7091,-177.2957 -17.2798,-421.1966 173.7552,-421.1966 105.5574,0 227.1418,94.8388 274.3755,194.9493 58.1395,123.0978 -90.5251,354.3614 -209.8621,354.3614"
-         inkscape:connector-curvature="0" /><path
-         id="path108"
-         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4994.8963,1848.4247 c -56.3341,-119.3219 -161.302,-184.8328 -279.4968,-184.8328 -375.1064,0 -449.5308,342.0451 -286.9761,686.4323 38.3912,81.2857 101.394,171.2104 197.5931,171.2104 301.3452,0 511.2809,-371.1213 368.8798,-672.8099 z m -299.2819,629.6005 c -27.6697,0 -51.9497,-10.0034 -65.2135,-38.1201 -29.1802,-61.8371 129.5795,-116.9725 129.8006,-180.8745 -16.5797,-19.6347 -63.0028,-41.6115 -83.2301,-41.6115 -114.3262,0 -200.6143,154.9942 -103.0151,270.1827 -39.6071,-25.1544 -63.1134,-62.8039 -79.8405,-98.2025 -98.9623,-209.6297 42.1125,-421.5687 247.6638,-421.5687 85.5512,0 195.8246,47.6128 240.2582,141.7694 62.8923,133.2581 -161.1178,368.4252 -286.4234,368.4252"
-         inkscape:connector-curvature="0" /><path
-         id="path110"
-         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 5382.8243,2480.0755 c 323.2672,0 487.5167,-593.2023 343.0523,-899.1666 -27.596,-58.5026 -79.0667,-116.9725 -146.9329,-116.9725 -369.3219,0 -275.0388,734.1034 -482.9481,942.6788 19.0114,20.1928 37.2122,41.3269 53.9024,62.6033 140.4853,-164.8699 70.6664,-598.7622 370.722,-598.7622 69.1189,0 121.4002,60.5238 149.2909,119.5919 74.4981,157.8434 -63.3713,431.9843 -214.2833,431.9843 -1.5106,0 -23.1748,-0.8974 -22.6958,-9.675 5.5634,-100.7416 84.8144,-37.9231 5.0108,-209.3743 -81.5353,16.2454 -167.8971,147.1395 -123.3161,241.5953 13.1164,27.7592 45.9442,35.497 68.1978,35.497"
-         inkscape:connector-curvature="0" /><path
-         id="path112"
-         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 6186.6447,2486.6751 c 30.433,-2.8784 76.1929,-0.1568 102.3152,-8.1099 4.9002,-1.4812 1.179,-7.6102 2.0264,-12.4404 7.9214,-44.8183 20.4114,-87.3564 31.2066,-130.6642 42.1125,-168.7735 67.461,-342.0196 115.8,-509.2972 52.576,-182.1259 107.3996,-387.3668 43.7335,-615.9051 -6.2266,-22.3599 -14.5532,-45.0627 -25.3116,-67.8494 -242.0267,-464.90213 -760.0132,-339.59712 -922.2732,-339.59712 -19.7114,0 -41.0071,5.58905 -50.4022,18.4125 68.4557,43.53772 111.3418,88.1699 141.9222,152.98397 36.6963,77.71045 36.1437,150.48855 31.3172,217.49525 12.969,-7.5518 54.5656,-26.3802 71.8453,-26.3802 70.1874,0 461.4313,-201.01994 660.8666,168.6311 51.7287,109.574 42.8862,221.4025 33.9331,314.7164 -4.4949,46.7116 -10.7952,92.7994 -19.4903,137.5629 l -13.1901,64.8251 -1.658,7.0994 -1.6211,7.0811 c 7.8477,0 0.8106,-13.7646 1.1053,-20.6926 4.8266,-112.9668 2.8001,-270.6788 -57.8815,-399.249 -28.2224,-59.7394 -74.3508,-121.3321 -145.1645,-121.3321 -310.3719,0 -154.2648,880.258 -402.9971,1089.50
 09 13.7796,22.7612 26.0854,46.1754 36.4017,69.1336 147.1908,-177.7663 154.8912,-667.8082 371.5325,-667.8082 52.576,0 106.9206,49.28 129.2848,96.6338 96.2359,203.8728 -63.6292,441.3784 -133.3008,575.2494"
-         inkscape:connector-curvature="0" /><path
-         id="path212"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="M 6472.2111,0 4000.0333,960.08914 1527.9586,0.2447157 2504.0617,1530.4009 0,2467.4174 3075.4297,2453.0486 3999.9228,3992 4924.5044,2452.9646 8000,2467.0484 5495.9388,1530.2584 6472.2111,0"
-         inkscape:connector-curvature="0" /><path
-         id="path214"
-         style="fill:#619cbc;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="M 6141.4743,277.229 4004.278,1105.6131 1867.1923,277.40047 2711.0287,1597.7089 546.28434,2406.1993 3204.9636,2393.8173 4004.2043,3721.714 4803.4929,2393.7443 7462.2127,2405.9148 5297.4941,1597.5958 6141.4743,277.229"
-         inkscape:connector-curvature="0" /><path
-         id="path216"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2363.7468,3205.7479 c 213.4801,0 89.0587,-533.441 13.1421,-694.2905 -65.0108,-137.7053 -211.3653,-336.321 -384.8184,-336.321 -208.1083,0 -201.9185,233.0877 -119.079,408.5555 44.8462,94.9994 113.7698,201.4906 208.7273,279.7811 -24.3058,-81.7198 57.8558,-137.5374 24.6264,-207.9478 -22.6958,-48.0834 -69.6716,-100.6176 -94.0806,-152.3346 -39.4781,-83.6097 -24.3943,-232.0042 70.9795,-232.0042 85.3744,0 161.2357,105.7579 192.3355,171.6373 63.7139,134.9946 223.0227,710.9008 44.9494,710.9008 -205.0871,0 -558.4851,-499.7681 -632.4895,-656.5316 -132.0923,-279.8176 -36.3427,-624.4857 264.6266,-624.4857 203.3592,0 370.6262,195.5075 451.4209,366.6741 48.129,101.9492 74.336,203.3877 84.6559,299.0364 l 39.4781,7.2234 c 8.7209,-263.2948 287.2635,-699.2703 168.6892,-950.4385 -151.7521,-321.4728 -605.5052,-318.5944 -864.5905,-432.6848 -54.4588,127.3882 -128.2348,245.8272 -232.1158,336.2189 231.1062,77.7397 799.0197,208.2762 922.5053,469.8783 51.8981,109.9168 16.5649,292.1558 -43.3946,35
 3.92 -10.202,-38.8498 -24.3206,-78.4511 -43.0593,-118.14 -105.7379,-223.9817 -332.1281,-397.6839 -565.5223,-397.6839 -324.9473,0 -462.7061,233.5 -309.7787,557.5046 91.7815,194.413 560.46,841.5322 802.7925,841.5322"
-         inkscape:connector-curvature="0" /><path
-         id="path218"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 2363.7468,3205.7479 c 213.4801,0 89.0587,-533.441 13.1421,-694.2905 -65.0108,-137.7053 -211.3653,-336.321 -384.8184,-336.321 -208.1083,0 -201.9185,233.0877 -119.079,408.5555 44.8462,94.9994 113.7698,201.4906 208.7273,279.7811 -24.3058,-81.7198 57.8558,-137.5374 24.6264,-207.9478 -22.6958,-48.0834 -69.6716,-100.6176 -94.0806,-152.3346 -39.4781,-83.6097 -24.3943,-232.0042 70.9795,-232.0042 85.3744,0 161.2357,105.7579 192.3355,171.6373 63.7139,134.9946 223.0227,710.9008 44.9494,710.9008 -205.0871,0 -558.4851,-499.7681 -632.4895,-656.5316 -132.0923,-279.8176 -36.3427,-624.4857 264.6266,-624.4857 203.3592,0 370.6262,195.5075 451.4209,366.6741 48.129,101.9492 74.336,203.3877 84.6559,299.0364 l 39.4781,7.2234 c 8.7209,-263.2948 287.2635,-699.2703 168.6892,-950.4385 -151.7521,-321.4728 -605.5052,-318.5944 -864.5905,-432.6848 -54.4588,127.3882 -128.2348,245.8272 -232.1158,336.2189 231.1062,77.7397 799.0197,208.2762 922.5053,469.8783 51.8981,109.9168 16.5649,292.1558 -43.3946,35
 3.92 -10.202,-38.8498 -24.3206,-78.4511 -43.0593,-118.14 -105.7379,-223.9817 -332.1281,-397.6839 -565.5223,-397.6839 -324.9473,0 -462.7061,233.5 -309.7787,557.5046 91.7815,194.413 560.46,841.5322 802.7925,841.5322 z"
-         inkscape:connector-curvature="0" /><path
-         id="path220"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2918.9086,2433.6886 c 12.9101,-31.7212 50.2291,-211.3371 78.5804,-211.3371 61.2085,0 171.8283,166.548 201.5022,209.7866 54.433,-35.643 24.2359,-110.4751 125.1104,-110.4751 45.6679,0 68.6363,98.374 116.161,99.9719 1.6838,-39.7618 4.2297,-75.7441 -17.4455,-121.6751 -33.432,-70.8263 -118.0143,-166.7924 -201.1559,-166.7924 -59.5543,0 -142.4969,71.6982 -158.7893,71.6982 -17.7034,0 -50.1849,-8.2814 -60.549,-30.2108 -43.2914,-91.7342 72.4533,-397.9684 188.5369,-397.9684 62.0302,0 136.0493,45.5004 200.9275,73.577 -16.8929,-110.3473 -19.2398,-203.3876 3.1096,-298.3285 -59.1232,-37.4635 -128.3784,-53.2566 -183.9572,-53.2566 -285.2371,0 -127.9326,663.361 -390.9492,804.689 l 98.9181,130.3213"
-         inkscape:connector-curvature="0" /><path
-         id="path222"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 2918.9086,2433.6886 c 12.9101,-31.7212 50.2291,-211.3371 78.5804,-211.3371 61.2085,0 171.8283,166.548 201.5022,209.7866 54.433,-35.643 24.2359,-110.4751 125.1104,-110.4751 45.6679,0 68.6363,98.374 116.161,99.9719 1.6838,-39.7618 4.2297,-75.7441 -17.4455,-121.6751 -33.432,-70.8263 -118.0143,-166.7924 -201.1559,-166.7924 -59.5543,0 -142.4969,71.6982 -158.7893,71.6982 -17.7034,0 -50.1849,-8.2814 -60.549,-30.2108 -43.2914,-91.7342 72.4533,-397.9684 188.5369,-397.9684 62.0302,0 136.0493,45.5004 200.9275,73.577 -16.8929,-110.3473 -19.2398,-203.3876 3.1096,-298.3285 -59.1232,-37.4635 -128.3784,-53.2566 -183.9572,-53.2566 -285.2371,0 -127.9326,663.361 -390.9492,804.689 l 98.9181,130.3213 z"
-         inkscape:connector-curvature="0" /><path
-         id="path224"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4015.1837,2486.8466 c 215.5729,0 300.682,-387.7936 203.9671,-592.6916 -75.0507,-158.956 -208.0936,-274.1847 -378.5328,-274.1847 -301.0062,0 -263.2855,410.3213 -145.8645,659.0999 32.3857,68.5316 143.0275,217.9075 229.5735,217.9075 31.7962,0 58.1395,-10.1311 90.8567,-10.1311 z m -6.6687,-36.1975 c -33.9331,0 -63.7766,-16.7745 -79.5088,-50.1629 -33.0489,-69.9726 131.7164,-140.7843 108.0627,-190.8633 -14.8849,-31.5205 -71.5506,-61.0199 -100.1413,-61.0199 -142.8433,0 -141.6275,185.8579 -56.4815,306.9894 -52.9445,-33.7313 -87.6513,-85.2623 -110.1997,-133.0574 -83.7091,-177.2957 -17.2798,-421.1966 173.7552,-421.1966 105.5574,0 227.1418,94.8388 274.3755,194.9493 58.1395,123.0978 -90.5251,354.3614 -209.8621,354.3614"
-         inkscape:connector-curvature="0" /><path
-         id="path226"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4015.1837,2486.8466 c 215.5729,0 300.682,-387.7936 203.9671,-592.6916 -75.0507,-158.956 -208.0936,-274.1847 -378.5328,-274.1847 -301.0062,0 -263.2855,410.3213 -145.8645,659.0999 32.3857,68.5316 143.0275,217.9075 229.5735,217.9075 31.7962,0 58.1395,-10.1311 90.8567,-10.1311 z"
-         inkscape:connector-curvature="0" /><path
-         id="path228"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4008.515,2450.6491 c -33.9331,0 -63.7766,-16.7745 -79.5088,-50.1629 -33.0489,-69.9726 131.7164,-140.7843 108.0627,-190.8633 -14.8849,-31.5205 -71.5506,-61.0199 -100.1413,-61.0199 -142.8433,0 -141.6275,185.8579 -56.4815,306.9894 -52.9445,-33.7313 -87.6513,-85.2623 -110.1997,-133.0574 -83.7091,-177.2957 -17.2798,-421.1966 173.7552,-421.1966 105.5574,0 227.1418,94.8388 274.3755,194.9493 58.1395,123.0978 -90.5251,354.3614 -209.8621,354.3614 z"
-         inkscape:connector-curvature="0" /><path
-         id="path230"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4994.8963,1848.4247 c -56.3341,-119.3219 -161.302,-184.8328 -279.4968,-184.8328 -375.1064,0 -449.5308,342.0451 -286.9761,686.4323 38.3912,81.2857 101.394,171.2104 197.5931,171.2104 301.3452,0 511.2809,-371.1213 368.8798,-672.8099 z m -299.2819,629.6005 c -27.6697,0 -51.9497,-10.0034 -65.2135,-38.1201 -29.1802,-61.8371 129.5795,-116.9725 129.8006,-180.8745 -16.5797,-19.6347 -63.0028,-41.6115 -83.2301,-41.6115 -114.3262,0 -200.6143,154.9942 -103.0151,270.1827 -39.6071,-25.1544 -63.1134,-62.8039 -79.8405,-98.2025 -98.9623,-209.6297 42.1125,-421.5687 247.6638,-421.5687 85.5512,0 195.8246,47.6128 240.2582,141.7694 62.8923,133.2581 -161.1178,368.4252 -286.4234,368.4252"
-         inkscape:connector-curvature="0" /><path
-         id="path232"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4994.8963,1848.4247 c -56.3341,-119.3219 -161.302,-184.8328 -279.4968,-184.8328 -375.1064,0 -449.5308,342.0451 -286.9761,686.4323 38.3912,81.2857 101.394,171.2104 197.5931,171.2104 301.3452,0 511.2809,-371.1213 368.8798,-672.8099 z"
-         inkscape:connector-curvature="0" /><path
-         id="path234"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4695.6144,2478.0252 c -27.6697,0 -51.9497,-10.0034 -65.2135,-38.1201 -29.1802,-61.8371 129.5795,-116.9725 129.8006,-180.8745 -16.5797,-19.6347 -63.0028,-41.6115 -83.2301,-41.6115 -114.3262,0 -200.6143,154.9942 -103.0151,270.1827 -39.6071,-25.1544 -63.1134,-62.8039 -79.8405,-98.2025 -98.9623,-209.6297 42.1125,-421.5687 247.6638,-421.5687 85.5512,0 195.8246,47.6128 240.2582,141.7694 62.8923,133.2581 -161.1178,368.4252 -286.4234,368.4252 z"
-         inkscape:connector-curvature="0" /><path
-         id="path236"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 5382.8243,2480.0755 c 323.2672,0 487.5167,-593.2023 343.0523,-899.1666 -27.596,-58.5026 -79.0667,-116.9725 -146.9329,-116.9725 -369.3219,0 -275.0388,734.1034 -482.9481,942.6788 19.0114,20.1928 37.2122,41.3269 53.9024,62.6033 140.4853,-164.8699 70.6664,-598.7622 370.722,-598.7622 69.1189,0 121.4002,60.5238 149.2909,119.5919 74.4981,157.8434 -63.3713,431.9843 -214.2833,431.9843 -1.5106,0 -23.1748,-0.8974 -22.6958,-9.675 5.5634,-100.7416 84.8144,-37.9231 5.0108,-209.3743 -81.5353,16.2454 -167.8971,147.1395 -123.3161,241.5953 13.1164,27.7592 45.9442,35.497 68.1978,35.497"
-         inkscape:connector-curvature="0" /><path
-         id="path238"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 5382.8243,2480.0755 c 323.2672,0 487.5167,-593.2023 343.0523,-899.1666 -27.596,-58.5026 -79.0667,-116.9725 -146.9329,-116.9725 -369.3219,0 -275.0388,734.1034 -482.9481,942.6788 19.0114,20.1928 37.2122,41.3269 53.9024,62.6033 140.4853,-164.8699 70.6664,-598.7622 370.722,-598.7622 69.1189,0 121.4002,60.5238 149.2909,119.5919 74.4981,157.8434 -63.3713,431.9843 -214.2833,431.9843 -1.5106,0 -23.1748,-0.8974 -22.6958,-9.675 5.5634,-100.7416 84.8144,-37.9231 5.0108,-209.3743 -81.5353,16.2454 -167.8971,147.1395 -123.3161,241.5953 13.1164,27.7592 45.9442,35.497 68.1978,35.497 z"
-         inkscape:connector-curvature="0" /><path
-         id="path240"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 6186.6447,2486.6751 c 30.433,-2.8784 76.1929,-0.1568 102.3152,-8.1099 4.9002,-1.4812 1.179,-7.6102 2.0264,-12.4404 7.9214,-44.8183 20.4114,-87.3564 31.2066,-130.6642 42.1125,-168.7735 67.461,-342.0196 115.8,-509.2972 52.576,-182.1259 107.3996,-387.3668 43.7335,-615.9051 -6.2266,-22.3599 -14.5532,-45.0627 -25.3116,-67.8494 -72.177,-152.9256 -693.7313,-329.12312 -855.9912,-329.12312 -19.7114,0 -41.0071,5.58906 -50.4023,18.41251 68.4557,43.53772 111.3419,88.1699 141.959,152.99856 36.6596,77.69585 36.1069,150.47395 31.2804,217.48065 12.969,-7.5372 490.501,4.2319 507.8176,4.2319 70.1874,0 130.4638,67.8786 158.6124,127.545 51.7287,109.574 42.8862,221.4025 33.9331,314.7164 -4.4949,46.7116 -10.7952,92.7994 -19.4903,137.5629 l -13.1901,64.8251 -1.658,7.0994 -1.6211,7.0811 c 7.8477,0 0.8106,-13.7646 1.1053,-20.6926 4.8266,-112.9668 2.8001,-270.6788 -57.8815,-399.249 -28.2224,-59.7394 -74.3508,-121.3321 -145.1645,-121.3321 -310.3719,0 -154.2648,880.258 -402.9971,1089.5009 13.7796
 ,22.7612 26.0854,46.1754 36.4017,69.1336 147.1908,-177.7663 154.8912,-667.8082 371.5325,-667.8082 52.576,0 106.9206,49.28 129.2848,96.6338 96.2359,203.8728 -63.6292,441.3784 -133.3008,575.2494"
-         inkscape:connector-curvature="0" /><path
-         id="path242"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 6186.6447,2486.6751 c 30.433,-2.8784 76.1929,-0.1568 102.3152,-8.1099 4.9002,-1.4812 1.179,-7.6102 2.0264,-12.4404 7.9214,-44.8183 20.4114,-87.3564 31.2066,-130.6642 42.1125,-168.7735 67.461,-342.0196 115.8,-509.2972 52.576,-182.1259 107.3996,-387.3668 43.7335,-615.9051 -6.2266,-22.3599 -14.5532,-45.0627 -25.3116,-67.8494 -72.177,-152.9256 -693.7313,-329.12312 -855.9912,-329.12312 -19.7114,0 -41.0071,5.58906 -50.4023,18.41251 68.4557,43.53772 111.3419,88.1699 141.959,152.99856 36.6596,77.69585 36.1069,150.47395 31.2804,217.48065 12.969,-7.5372 490.501,4.2319 507.8176,4.2319 70.1874,0 130.4638,67.8786 158.6124,127.545 51.7287,109.574 42.8862,221.4025 33.9331,314.7164 -4.4949,46.7116 -10.7952,92.7994 -19.4903,137.5629 l -13.1901,64.8251 -1.658,7.0994 -1.6211,7.0811 c 7.8477,0 0.8106,-13.7646 1.1053,-20.6926 4.8266,-112.9668 2.8001,-270.6788 -57.8815,-399.249 -28.2224,-59.7394 -74.3508,-121.3321 -145.1645,-121.3321 -310.3719,0 -154.2648,880.258 -402.9971,1089.5009 13.7796
 ,22.7612 26.0854,46.1754 36.4017,69.1336 147.1908,-177.7663 154.8912,-667.8082 371.5325,-667.8082 52.576,0 106.9206,49.28 129.2848,96.6338 96.2359,203.8728 -63.6292,441.3784 -133.3008,575.2494 z"
-         inkscape:connector-curvature="0" /><path
-         id="path244"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2363.7468,3205.7479 c 213.4801,0 89.0587,-533.441 13.1421,-694.2905 -65.0108,-137.7053 -211.3653,-336.321 -384.8184,-336.321 -208.1083,0 -201.9185,233.0877 -119.079,408.5555 44.8462,94.9994 113.7698,201.4906 208.7273,279.7811 -24.3058,-81.7198 57.8558,-137.5374 24.6264,-207.9478 -22.6958,-48.0834 -69.6716,-100.6176 -94.0806,-152.3346 -39.4781,-83.6097 -24.3943,-232.0042 70.9795,-232.0042 85.3744,0 161.2357,105.7579 192.3355,171.6373 63.7139,134.9946 223.0227,710.9008 44.9494,710.9008 -205.0871,0 -558.4851,-499.7681 -632.4895,-656.5316 -132.0923,-279.8176 -36.3427,-624.4857 264.6266,-624.4857 203.3592,0 370.6262,195.5075 451.4209,366.6741 48.129,101.9492 74.336,203.3877 84.6559,299.0364 l 39.4781,7.2234 c 8.7209,-263.2948 287.2635,-699.2703 168.6892,-950.4385 -151.7521,-321.4728 -605.5052,-318.5944 -864.5905,-432.6848 -54.4588,127.3882 -128.2348,245.8272 -232.1158,336.2189 231.1062,77.7397 799.0197,208.2762 922.5053,469.8783 51.8981,109.9168 16.5649,292.1558 -43.3946,35
 3.92 -10.202,-38.8498 -24.3206,-78.4511 -43.0593,-118.14 -105.7379,-223.9817 -332.1281,-397.6839 -565.5223,-397.6839 -324.9473,0 -462.7061,233.5 -309.7787,557.5046 91.7815,194.413 560.46,841.5322 802.7925,841.5322"
-         inkscape:connector-curvature="0" /><path
-         id="path246"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 2363.7468,3205.7479 c 213.4801,0 89.0587,-533.441 13.1421,-694.2905 -65.0108,-137.7053 -211.3653,-336.321 -384.8184,-336.321 -208.1083,0 -201.9185,233.0877 -119.079,408.5555 44.8462,94.9994 113.7698,201.4906 208.7273,279.7811 -24.3058,-81.7198 57.8558,-137.5374 24.6264,-207.9478 -22.6958,-48.0834 -69.6716,-100.6176 -94.0806,-152.3346 -39.4781,-83.6097 -24.3943,-232.0042 70.9795,-232.0042 85.3744,0 161.2357,105.7579 192.3355,171.6373 63.7139,134.9946 223.0227,710.9008 44.9494,710.9008 -205.0871,0 -558.4851,-499.7681 -632.4895,-656.5316 -132.0923,-279.8176 -36.3427,-624.4857 264.6266,-624.4857 203.3592,0 370.6262,195.5075 451.4209,366.6741 48.129,101.9492 74.336,203.3877 84.6559,299.0364 l 39.4781,7.2234 c 8.7209,-263.2948 287.2635,-699.2703 168.6892,-950.4385 -151.7521,-321.4728 -605.5052,-318.5944 -864.5905,-432.6848 -54.4588,127.3882 -128.2348,245.8272 -232.1158,336.2189 231.1062,77.7397 799.0197,208.2762 922.5053,469.8783 51.8981,109.9168 16.5649,292.1558 -43.3946,35
 3.92 -10.202,-38.8498 -24.3206,-78.4511 -43.0593,-118.14 -105.7379,-223.9817 -332.1281,-397.6839 -565.5223,-397.6839 -324.9473,0 -462.7061,233.5 -309.7787,557.5046 91.7815,194.413 560.46,841.5322 802.7925,841.5322 z"
-         inkscape:connector-curvature="0" /><path
-         id="path248"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2918.9086,2433.6886 c 12.9101,-31.7212 50.2291,-211.3371 78.5804,-211.3371 61.2085,0 171.8283,166.548 201.5022,209.7866 54.433,-35.643 24.2359,-110.4751 125.1104,-110.4751 45.6679,0 68.6363,98.374 116.161,99.9719 1.6838,-39.7618 4.2297,-75.7441 -17.4455,-121.6751 -33.432,-70.8263 -118.0143,-166.7924 -201.1559,-166.7924 -59.5543,0 -142.4969,71.6982 -158.7893,71.6982 -17.7034,0 -50.1849,-8.2814 -60.549,-30.2108 -43.2914,-91.7342 72.4533,-397.9684 188.5369,-397.9684 62.0302,0 136.0493,45.5004 200.9275,73.577 -16.8929,-110.3473 -19.2398,-203.3876 3.1096,-298.3285 -59.1232,-37.4635 -128.3784,-53.2566 -183.9572,-53.2566 -285.2371,0 -127.9326,663.361 -390.9492,804.689 l 98.9181,130.3213"
-         inkscape:connector-curvature="0" /><path
-         id="path250"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 2918.9086,2433.6886 c 12.9101,-31.7212 50.2291,-211.3371 78.5804,-211.3371 61.2085,0 171.8283,166.548 201.5022,209.7866 54.433,-35.643 24.2359,-110.4751 125.1104,-110.4751 45.6679,0 68.6363,98.374 116.161,99.9719 1.6838,-39.7618 4.2297,-75.7441 -17.4455,-121.6751 -33.432,-70.8263 -118.0143,-166.7924 -201.1559,-166.7924 -59.5543,0 -142.4969,71.6982 -158.7893,71.6982 -17.7034,0 -50.1849,-8.2814 -60.549,-30.2108 -43.2914,-91.7342 72.4533,-397.9684 188.5369,-397.9684 62.0302,0 136.0493,45.5004 200.9275,73.577 -16.8929,-110.3473 -19.2398,-203.3876 3.1096,-298.3285 -59.1232,-37.4635 -128.3784,-53.2566 -183.9572,-53.2566 -285.2371,0 -127.9326,663.361 -390.9492,804.689 l 98.9181,130.3213 z"
-         inkscape:connector-curvature="0" /><path
-         id="path252"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4015.1837,2486.8466 c 215.5729,0 300.682,-387.7936 203.9671,-592.6916 -75.0507,-158.956 -208.0936,-274.1847 -378.5328,-274.1847 -301.0062,0 -263.2855,410.3213 -145.8645,659.0999 32.3857,68.5316 143.0275,217.9075 229.5735,217.9075 31.7962,0 58.1395,-10.1311 90.8567,-10.1311 z m -6.6687,-36.1975 c -33.9331,0 -63.7766,-16.7745 -79.5088,-50.1629 -33.0489,-69.9726 131.7164,-140.7843 108.0627,-190.8633 -14.8849,-31.5205 -71.5506,-61.0199 -100.1413,-61.0199 -142.8433,0 -141.6275,185.8579 -56.4815,306.9894 -52.9445,-33.7313 -87.6513,-85.2623 -110.1997,-133.0574 -83.7091,-177.2957 -17.2798,-421.1966 173.7552,-421.1966 105.5574,0 227.1418,94.8388 274.3755,194.9493 58.1395,123.0978 -90.5251,354.3614 -209.8621,354.3614"
-         inkscape:connector-curvature="0" /><path
-         id="path254"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4015.1837,2486.8466 c 215.5729,0 300.682,-387.7936 203.9671,-592.6916 -75.0507,-158.956 -208.0936,-274.1847 -378.5328,-274.1847 -301.0062,0 -263.2855,410.3213 -145.8645,659.0999 32.3857,68.5316 143.0275,217.9075 229.5735,217.9075 31.7962,0 58.1395,-10.1311 90.8567,-10.1311 z"
-         inkscape:connector-curvature="0" /><path
-         id="path256"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4008.515,2450.6491 c -33.9331,0 -63.7766,-16.7745 -79.5088,-50.1629 -33.0489,-69.9726 131.7164,-140.7843 108.0627,-190.8633 -14.8849,-31.5205 -71.5506,-61.0199 -100.1413,-61.0199 -142.8433,0 -141.6275,185.8579 -56.4815,306.9894 -52.9445,-33.7313 -87.6513,-85.2623 -110.1997,-133.0574 -83.7091,-177.2957 -17.2798,-421.1966 173.7552,-421.1966 105.5574,0 227.1418,94.8388 274.3755,194.9493 58.1395,123.0978 -90.5251,354.3614 -209.8621,354.3614 z"
-         inkscape:connector-curvature="0" /><path
-         id="path258"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4994.8963,1848.4247 c -56.3341,-119.3219 -161.302,-184.8328 -279.4968,-184.8328 -375.1064,0 -449.5308,342.0451 -286.9761,686.4323 38.3912,81.2857 101.394,171.2104 197.5931,171.2104 301.3452,0 511.2809,-371.1213 368.8798,-672.8099 z m -299.2819,629.6005 c -27.6697,0 -51.9497,-10.0034 -65.2135,-38.1201 -29.1802,-61.8371 129.5795,-116.9725 129.8006,-180.8745 -16.5797,-19.6347 -63.0028,-41.6115 -83.2301,-41.6115 -114.3262,0 -200.6143,154.9942 -103.0151,270.1827 -39.6071,-25.1544 -63.1134,-62.8039 -79.8405,-98.2025 -98.9623,-209.6297 42.1125,-421.5687 247.6638,-421.5687 85.5512,0 195.8246,47.6128 240.2582,141.7694 62.8923,133.2581 -161.1178,368.4252 -286.4234,368.4252"
-         inkscape:connector-curvature="0" /><path
-         id="path260"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4994.8963,1848.4247 c -56.3341,-119.3219 -161.302,-184.8328 -279.4968,-184.8328 -375.1064,0 -449.5308,342.0451 -286.9761,686.4323 38.3912,81.2857 101.394,171.2104 197.5931,171.2104 301.3452,0 511.2809,-371.1213 368.8798,-672.8099 z"
-         inkscape:connector-curvature="0" /><path
-         id="path262"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4695.6144,2478.0252 c -27.6697,0 -51.9497,-10.0034 -65.2135,-38.1201 -29.1802,-61.8371 129.5795,-116.9725 129.8006,-180.8745 -16.5797,-19.6347 -63.0028,-41.6115 -83.2301,-41.6115 -114.3262,0 -200.6143,154.9942 -103.0151,270.1827 -39.6071,-25.1544 -63.1134,-62.8039 -79.8405,-98.2025 -98.9623,-209.6297 42.1125,-421.5687 247.6638,-421.5687 85.5512,0 195.8246,47.6128 240.2582,141.7694 62.8923,133.2581 -161.1178,368.4252 -286.4234,368.4252 z"
-         inkscape:connector-curvature="0" /><path
-         id="path264"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 5382.8243,2480.0755 c 323.2672,0 487.5167,-593.2023 343.0523,-899.1666 -27.596,-58.5026 -79.0667,-116.9725 -146.9329,-116.9725 -369.3219,0 -275.0388,734.1034 -482.9481,942.6788 19.0114,20.1928 37.2122,41.3269 53.9024,62.6033 140.4853,-164.8699 70.6664,-598.7622 370.722,-598.7622 69.1189,0 121.4002,60.5238 149.2909,119.5919 74.4981,157.8434 -63.3713,431.9843 -214.2833,431.9843 -1.5106,0 -23.1748,-0.8974 -22.6958,-9.675 5.5634,-100.7416 84.8144,-37.9231 5.0108,-209.3743 -81.5353,16.2454 -167.8971,147.1395 -123.3161,241.5953 13.1164,27.7592 45.9442,35.497 68.1978,35.497"
-         inkscape:connector-curvature="0" /><path
-         id="path266"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 5382.8243,2480.0755 c 323.2672,0 487.5167,-593.2023 343.0523,-899.1666 -27.596,-58.5026 -79.0667,-116.9725 -146.9329,-116.9725 -369.3219,0 -275.0388,734.1034 -482.9481,942.6788 19.0114,20.1928 37.2122,41.3269 53.9024,62.6033 140.4853,-164.8699 70.6664,-598.7622 370.722,-598.7622 69.1189,0 121.4002,60.5238 149.2909,119.5919 74.4981,157.8434 -63.3713,431.9843 -214.2833,431.9843 -1.5106,0 -23.1748,-0.8974 -22.6958,-9.675 5.5634,-100.7416 84.8144,-37.9231 5.0108,-209.3743 -81.5353,16.2454 -167.8971,147.1395 -123.3161,241.5953 13.1164,27.7592 45.9442,35.497 68.1978,35.497 z"
-         inkscape:connector-curvature="0" /><path
-         id="path268"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 6186.6447,2486.6751 c 30.433,-2.8784 76.1929,-0.1568 102.3152,-8.1099 4.9002,-1.4812 1.179,-7.6102 2.0264,-12.4404 7.9214,-44.8183 20.4114,-87.3564 31.2066,-130.6642 42.1125,-168.7735 67.461,-342.0196 115.8,-509.2972 52.576,-182.1259 107.3996,-387.3668 43.7335,-615.9051 -6.2266,-22.3599 -14.5532,-45.0627 -25.3116,-67.8494 -72.177,-152.9256 -257.759,-298.49641 -420.0558,-298.49641 -19.7114,0 -40.9703,5.57082 -50.4023,18.39792 68.4926,43.53406 111.3419,88.18449 141.9591,152.99489 36.6964,77.7105 36.1437,150.4886 31.3172,217.4843 12.969,-7.5408 54.5287,-26.3802 71.8453,-26.3802 70.1874,0 130.4638,67.8786 158.6124,127.545 51.7287,109.574 42.8862,221.4025 33.9331,314.7164 -4.4949,46.7116 -10.7952,92.7994 -19.4903,137.5629 l -13.1901,64.8251 -1.658,7.0994 -1.6211,7.0811 c 7.8477,0 0.8106,-13.7646 1.1053,-20.6926 4.8266,-112.9668 2.8001,-270.6788 -57.8815,-399.249 -28.2224,-59.7394 -74.3508,-121.3321 -145.1645,-121.3321 -310.3719,0 -154.2648,880.258 -402.9971,1089.5009 13.779
 6,22.7612 26.0854,46.1754 36.4017,69.1336 147.1908,-177.7663 154.8912,-667.8082 371.5325,-667.8082 52.576,0 106.9206,49.28 129.2848,96.6338 96.2359,203.8728 -63.6292,441.3784 -133.3008,575.2494"
-         inkscape:connector-curvature="0" /><path
-         id="path270"
-         style="fill:none;stroke:#000000;stroke-width:29.799263;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.86370993;stroke-opacity:1;stroke-dasharray:none"
-         d="m 6186.6447,2486.6751 c 30.433,-2.8784 76.1929,-0.1568 102.3152,-8.1099 4.9002,-1.4812 1.179,-7.6102 2.0264,-12.4404 7.9214,-44.8183 20.4114,-87.3564 31.2066,-130.6642 42.1125,-168.7735 67.461,-342.0196 115.8,-509.2972 52.576,-182.1259 107.3996,-387.3668 43.7335,-615.9051 -6.2266,-22.3599 -14.5532,-45.0627 -25.3116,-67.8494 -72.177,-152.9256 -257.759,-298.49641 -420.0558,-298.49641 -19.7114,0 -40.9703,5.57082 -50.4023,18.39792 68.4926,43.53406 111.3419,88.18449 141.9591,152.99489 36.6964,77.7105 36.1437,150.4886 31.3172,217.4843 12.969,-7.5408 54.5287,-26.3802 71.8453,-26.3802 70.1874,0 130.4638,67.8786 158.6124,127.545 51.7287,109.574 42.8862,221.4025 33.9331,314.7164 -4.4949,46.7116 -10.7952,92.7994 -19.4903,137.5629 l -13.1901,64.8251 -1.658,7.0994 -1.6211,7.0811 c 7.8477,0 0.8106,-13.7646 1.1053,-20.6926 4.8266,-112.9668 2.8001,-270.6788 -57.8815,-399.249 -28.2224,-59.7394 -74.3508,-121.3321 -145.1645,-121.3321 -310.3719,0 -154.2648,880.258 -402.9971,1089.5009 13.779
 6,22.7612 26.0854,46.1754 36.4017,69.1336 147.1908,-177.7663 154.8912,-667.8082 371.5325,-667.8082 52.576,0 106.9206,49.28 129.2848,96.6338 96.2359,203.8728 -63.6292,441.3784 -133.3008,575.2494 z"
-         inkscape:connector-curvature="0" /><path
-         id="path272"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2363.7468,3205.7479 c 213.4801,0 89.0587,-533.441 13.1421,-694.2905 -65.0108,-137.7053 -211.3653,-336.321 -384.8184,-336.321 -208.1083,0 -201.9185,233.0877 -119.079,408.5555 44.8462,94.9994 113.7698,201.4906 208.7273,279.7811 -24.3058,-81.7198 57.8558,-137.5374 24.6264,-207.9478 -22.6958,-48.0834 -69.6716,-100.6176 -94.0806,-152.3346 -39.4781,-83.6097 -24.3943,-232.0042 70.9795,-232.0042 85.3744,0 161.2357,105.7579 192.3355,171.6373 63.7139,134.9946 223.0227,710.9008 44.9494,710.9008 -205.0871,0 -558.4851,-499.7681 -632.4895,-656.5316 -132.0923,-279.8176 -36.3427,-624.4857 264.6266,-624.4857 203.3592,0 370.6262,195.5075 451.4209,366.6741 48.129,101.9492 74.336,203.3877 84.6559,299.0364 l 39.4781,7.2234 c 8.7209,-263.2948 287.2635,-699.2703 168.6892,-950.4385 -151.7521,-321.4728 -605.5052,-318.5944 -864.5905,-432.6848 -54.4588,127.3882 -128.2348,245.8272 -232.1158,336.2189 231.1062,77.7397 799.0197,208.2762 922.5053,469.8783 51.8981,109.9168 16.5649,292.1558 -43.3946,35
 3.92 -10.202,-38.8498 -24.3206,-78.4511 -43.0593,-118.14 -105.7379,-223.9817 -332.1281,-397.6839 -565.5223,-397.6839 -324.9473,0 -462.7061,233.5 -309.7787,557.5046 91.7815,194.413 560.46,841.5322 802.7925,841.5322"
-         inkscape:connector-curvature="0" /><path
-         id="path274"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 2363.7468,3205.7479 c 213.4801,0 89.0587,-533.441 13.1421,-694.2905 -65.0108,-137.7053 -211.3653,-336.321 -384.8184,-336.321 -208.1083,0 -201.9185,233.0877 -119.079,408.5555 44.8462,94.9994 113.7698,201.4906 208.7273,279.7811 -24.3058,-81.7198 57.8558,-137.5374 24.6264,-207.9478 -22.6958,-48.0834 -69.6716,-100.6176 -94.0806,-152.3346 -39.4781,-83.6097 -24.3943,-232.0042 70.9795,-232.0042 85.3744,0 161.2357,105.7579 192.3355,171.6373 63.7139,134.9946 223.0227,710.9008 44.9494,710.9008 -205.0871,0 -558.4851,-499.7681 -632.4895,-656.5316 -132.0923,-279.8176 -36.3427,-624.4857 264.6266,-624.4857 203.3592,0 370.6262,195.5075 451.4209,366.6741 48.129,101.9492 74.336,203.3877 84.6559,299.0364 l 39.4781,7.2234 c 8.7209,-263.2948 287.2635,-699.2703 168.6892,-950.4385 -151.7521,-321.4728 -605.5052,-318.5944 -864.5905,-432.6848 -54.4588,127.3882 -128.2348,245.8272 -232.1158,336.2189 231.1062,77.7397 799.0197,208.2762 922.5053,469.8783 51.8981,109.9168 16.5649,292.1558 -43.3946,35
 3.92 -10.202,-38.8498 -24.3206,-78.4511 -43.0593,-118.14 -105.7379,-223.9817 -332.1281,-397.6839 -565.5223,-397.6839 -324.9473,0 -462.7061,233.5 -309.7787,557.5046 91.7815,194.413 560.46,841.5322 802.7925,841.5322 z"
-         inkscape:connector-curvature="0" /><path
-         id="path276"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2918.9086,2433.6886 c 12.9101,-31.7212 50.2291,-211.3371 78.5804,-211.3371 61.2085,0 171.8283,166.548 201.5022,209.7866 54.433,-35.643 24.2359,-110.4751 125.1104,-110.4751 45.6679,0 68.6363,98.374 116.161,99.9719 1.6838,-39.7618 4.2297,-75.7441 -17.4455,-121.6751 -33.432,-70.8263 -118.0143,-166.7924 -201.1559,-166.7924 -59.5543,0 -142.4969,71.6982 -158.7893,71.6982 -17.7034,0 -50.1849,-8.2814 -60.549,-30.2108 -43.2914,-91.7342 72.4533,-397.9684 188.5369,-397.9684 62.0302,0 136.0493,45.5004 200.9275,73.577 -16.8929,-110.3473 -19.2398,-203.3876 3.1096,-298.3285 -59.1232,-37.4635 -128.3784,-53.2566 -183.9572,-53.2566 -285.2371,0 -127.9326,663.361 -390.9492,804.689 l 98.9181,130.3213"
-         inkscape:connector-curvature="0" /><path
-         id="path278"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 2918.9086,2433.6886 c 12.9101,-31.7212 50.2291,-211.3371 78.5804,-211.3371 61.2085,0 171.8283,166.548 201.5022,209.7866 54.433,-35.643 24.2359,-110.4751 125.1104,-110.4751 45.6679,0 68.6363,98.374 116.161,99.9719 1.6838,-39.7618 4.2297,-75.7441 -17.4455,-121.6751 -33.432,-70.8263 -118.0143,-166.7924 -201.1559,-166.7924 -59.5543,0 -142.4969,71.6982 -158.7893,71.6982 -17.7034,0 -50.1849,-8.2814 -60.549,-30.2108 -43.2914,-91.7342 72.4533,-397.9684 188.5369,-397.9684 62.0302,0 136.0493,45.5004 200.9275,73.577 -16.8929,-110.3473 -19.2398,-203.3876 3.1096,-298.3285 -59.1232,-37.4635 -128.3784,-53.2566 -183.9572,-53.2566 -285.2371,0 -127.9326,663.361 -390.9492,804.689 l 98.9181,130.3213 z"
-         inkscape:connector-curvature="0" /><path
-         id="path280"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4015.1837,2486.8466 c 215.5729,0 300.682,-387.7936 203.9671,-592.6916 -75.0507,-158.956 -208.0936,-274.1847 -378.5328,-274.1847 -301.0062,0 -263.2855,410.3213 -145.8645,659.0999 32.3857,68.5316 143.0275,217.9075 229.5735,217.9075 31.7962,0 58.1395,-10.1311 90.8567,-10.1311 z m -6.6687,-36.1975 c -33.9331,0 -63.7766,-16.7745 -79.5088,-50.1629 -33.0489,-69.9726 131.7164,-140.7843 108.0627,-190.8633 -14.8849,-31.5205 -71.5506,-61.0199 -100.1413,-61.0199 -142.8433,0 -141.6275,185.8579 -56.4815,306.9894 -52.9445,-33.7313 -87.6513,-85.2623 -110.1997,-133.0574 -83.7091,-177.2957 -17.2798,-421.1966 173.7552,-421.1966 105.5574,0 227.1418,94.8388 274.3755,194.9493 58.1395,123.0978 -90.5251,354.3614 -209.8621,354.3614"
-         inkscape:connector-curvature="0" /><path
-         id="path282"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4015.1837,2486.8466 c 215.5729,0 300.682,-387.7936 203.9671,-592.6916 -75.0507,-158.956 -208.0936,-274.1847 -378.5328,-274.1847 -301.0062,0 -263.2855,410.3213 -145.8645,659.0999 32.3857,68.5316 143.0275,217.9075 229.5735,217.9075 31.7962,0 58.1395,-10.1311 90.8567,-10.1311 z"
-         inkscape:connector-curvature="0" /><path
-         id="path284"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4008.515,2450.6491 c -33.9331,0 -63.7766,-16.7745 -79.5088,-50.1629 -33.0489,-69.9726 131.7164,-140.7843 108.0627,-190.8633 -14.8849,-31.5205 -71.5506,-61.0199 -100.1413,-61.0199 -142.8433,0 -141.6275,185.8579 -56.4815,306.9894 -52.9445,-33.7313 -87.6513,-85.2623 -110.1997,-133.0574 -83.7091,-177.2957 -17.2798,-421.1966 173.7552,-421.1966 105.5574,0 227.1418,94.8388 274.3755,194.9493 58.1395,123.0978 -90.5251,354.3614 -209.8621,354.3614 z"
-         inkscape:connector-curvature="0" /><path
-         id="path286"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 4994.8963,1848.4247 c -56.3341,-119.3219 -161.302,-184.8328 -279.4968,-184.8328 -375.1064,0 -449.5308,342.0451 -286.9761,686.4323 38.3912,81.2857 101.394,171.2104 197.5931,171.2104 301.3452,0 511.2809,-371.1213 368.8798,-672.8099 z m -299.2819,629.6005 c -27.6697,0 -51.9497,-10.0034 -65.2135,-38.1201 -29.1802,-61.8371 129.5795,-116.9725 129.8006,-180.8745 -16.5797,-19.6347 -63.0028,-41.6115 -83.2301,-41.6115 -114.3262,0 -200.6143,154.9942 -103.0151,270.1827 -39.6071,-25.1544 -63.1134,-62.8039 -79.8405,-98.2025 -98.9623,-209.6297 42.1125,-421.5687 247.6638,-421.5687 85.5512,0 195.8246,47.6128 240.2582,141.7694 62.8923,133.2581 -161.1178,368.4252 -286.4234,368.4252"
-         inkscape:connector-curvature="0" /><path
-         id="path288"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4994.8963,1848.4247 c -56.3341,-119.3219 -161.302,-184.8328 -279.4968,-184.8328 -375.1064,0 -449.5308,342.0451 -286.9761,686.4323 38.3912,81.2857 101.394,171.2104 197.5931,171.2104 301.3452,0 511.2809,-371.1213 368.8798,-672.8099 z"
-         inkscape:connector-curvature="0" /><path
-         id="path290"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 4695.6144,2478.0252 c -27.6697,0 -51.9497,-10.0034 -65.2135,-38.1201 -29.1802,-61.8371 129.5795,-116.9725 129.8006,-180.8745 -16.5797,-19.6347 -63.0028,-41.6115 -83.2301,-41.6115 -114.3262,0 -200.6143,154.9942 -103.0151,270.1827 -39.6071,-25.1544 -63.1134,-62.8039 -79.8405,-98.2025 -98.9623,-209.6297 42.1125,-421.5687 247.6638,-421.5687 85.5512,0 195.8246,47.6128 240.2582,141.7694 62.8923,133.2581 -161.1178,368.4252 -286.4234,368.4252 z"
-         inkscape:connector-curvature="0" /><path
-         id="path292"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 5382.8243,2480.0755 c 323.2672,0 487.5167,-593.2023 343.0523,-899.1666 -27.596,-58.5026 -79.0667,-116.9725 -146.9329,-116.9725 -369.3219,0 -275.0388,734.1034 -482.9481,942.6788 19.0114,20.1928 37.2122,41.3269 53.9024,62.6033 140.4853,-164.8699 70.6664,-598.7622 370.722,-598.7622 69.1189,0 121.4002,60.5238 149.2909,119.5919 74.4981,157.8434 -63.3713,431.9843 -214.2833,431.9843 -1.5106,0 -23.1748,-0.8974 -22.6958,-9.675 5.5634,-100.7416 84.8144,-37.9231 5.0108,-209.3743 -81.5353,16.2454 -167.8971,147.1395 -123.3161,241.5953 13.1164,27.7592 45.9442,35.497 68.1978,35.497"
-         inkscape:connector-curvature="0" /><path
-         id="path294"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 5382.8243,2480.0755 c 323.2672,0 487.5167,-593.2023 343.0523,-899.1666 -27.596,-58.5026 -79.0667,-116.9725 -146.9329,-116.9725 -369.3219,0 -275.0388,734.1034 -482.9481,942.6788 19.0114,20.1928 37.2122,41.3269 53.9024,62.6033 140.4853,-164.8699 70.6664,-598.7622 370.722,-598.7622 69.1189,0 121.4002,60.5238 149.2909,119.5919 74.4981,157.8434 -63.3713,431.9843 -214.2833,431.9843 -1.5106,0 -23.1748,-0.8974 -22.6958,-9.675 5.5634,-100.7416 84.8144,-37.9231 5.0108,-209.3743 -81.5353,16.2454 -167.8971,147.1395 -123.3161,241.5953 13.1164,27.7592 45.9442,35.497 68.1978,35.497 z"
-         inkscape:connector-curvature="0" /><path
-         id="path296"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 6186.6447,2486.6751 c 30.433,-2.8784 76.1929,-0.1568 102.3152,-8.1099 4.9002,-1.4812 1.179,-7.6102 2.0264,-12.4404 7.9214,-44.8183 20.4114,-87.3564 31.2066,-130.6642 42.1125,-168.7735 67.461,-342.0196 115.8,-509.2972 52.576,-182.1259 107.3996,-387.3668 43.7335,-615.9051 -6.2266,-22.3599 -14.5532,-45.0627 -25.3116,-67.8494 -72.177,-152.9256 -257.759,-298.49641 -420.0558,-298.49641 -19.7114,0 -40.9703,5.57082 -50.4023,18.39792 68.4926,43.53406 111.3419,88.18449 141.9591,152.99489 36.6964,77.7105 36.1437,150.4886 31.3172,217.4843 12.969,-7.5408 54.5287,-26.3802 71.8453,-26.3802 70.1874,0 130.4638,67.8786 158.6124,127.545 51.7287,109.574 42.8862,221.4025 33.9331,314.7164 -4.4949,46.7116 -10.7952,92.7994 -19.4903,137.5629 l -13.1901,64.8251 -1.658,7.0994 -1.6211,7.0811 c 7.8477,0 0.8106,-13.7646 1.1053,-20.6926 4.8266,-112.9668 2.8001,-270.6788 -57.8815,-399.249 -28.2224,-59.7394 -74.3508,-121.3321 -145.1645,-121.3321 -310.3719,0 -154.2648,880.258 -402.9971,1089.5009 13.779
 6,22.7612 26.0854,46.1754 36.4017,69.1336 147.1908,-177.7663 154.8912,-667.8082 371.5325,-667.8082 52.576,0 106.9206,49.28 129.2848,96.6338 96.2359,203.8728 -63.6292,441.3784 -133.3008,575.2494"
-         inkscape:connector-curvature="0" /><path
-         id="path298"
-         style="fill:none;stroke:#000000;stroke-width:357.58380127;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3.8636899;stroke-opacity:1;stroke-dasharray:none"
-         d="m 6186.6447,2486.6751 c 30.433,-2.8784 76.1929,-0.1568 102.3152,-8.1099 4.9002,-1.4812 1.179,-7.6102 2.0264,-12.4404 7.9214,-44.8183 20.4114,-87.3564 31.2066,-130.6642 42.1125,-168.7735 67.461,-342.0196 115.8,-509.2972 52.576,-182.1259 107.3996,-387.3668 43.7335,-615.9051 -6.2266,-22.3599 -14.5532,-45.0627 -25.3116,-67.8494 -72.177,-152.9256 -257.759,-298.49641 -420.0558,-298.49641 -19.7114,0 -40.9703,5.57082 -50.4023,18.39792 68.4926,43.53406 111.3419,88.18449 141.9591,152.99489 36.6964,77.7105 36.1437,150.4886 31.3172,217.4843 12.969,-7.5408 54.5287,-26.3802 71.8453,-26.3802 70.1874,0 130.4638,67.8786 158.6124,127.545 51.7287,109.574 42.8862,221.4025 33.9331,314.7164 -4.4949,46.7116 -10.7952,92.7994 -19.4903,137.5629 l -13.1901,64.8251 -1.658,7.0994 -1.6211,7.0811 c 7.8477,0 0.8106,-13.7646 1.1053,-20.6926 4.8266,-112.9668 2.8001,-270.6788 -57.8815,-399.249 -28.2224,-59.7394 -74.3508,-121.3321 -145.1645,-121.3321 -310.3719,0 -154.2648,880.258 -402.9971,1089.5009 13.779
 6,22.7612 26.0854,46.1754 36.4017,69.1336 147.1908,-177.7663 154.8912,-667.8082 371.5325,-667.8082 52.576,0 106.9206,49.28 129.2848,96.6338 96.2359,203.8728 -63.6292,441.3784 -133.3008,575.2494 z"
-         inkscape:connector-curvature="0" /><path
-         id="path300"
-         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 2363.7468,3205.7479 c 213.4801,0 89.0587,-533.441 13.1421,-694.2905 -65.0108,-137.7053 -211.3653,-336.321 -384.8184,-336.321 -208.1083,0 -201.9185,233.0877 -119.079,408.5555 44.8462,94.9994 113.7698,201.4906 208.7273,279.7811 -24.3058,-81.7198 57.8558,-137.5374 24.6264,-207.9478 -22.6958,-48.0834 -69.6716,-100.6176 -94.0806,-152.3346 -39.4781,-83.6097 -24.3943,-232.0042 70.9795,-232.0042 85.3744,0 161.2357,105.7579 192.3355,171.6373 63.7139,134.9946 223.0227,710.9008 44.9494,710.9008 -205.0871,0 -558.4851,-499.7681 -632.4895,-656.5316 -132.0923,-279.8176 -36.3427,-624.4857 264.6266,-624.4857 203.3592,0 370.6262,195.5075 451.4209,366.6741 48.129,101.9492 74.336,2

<TRUNCATED>
http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/groovy-logo-white.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/groovy-logo-white.png b/site/src/site/assets/img/groovy-logo-white.png
deleted file mode 100644
index 4792118..0000000
Binary files a/site/src/site/assets/img/groovy-logo-white.png and /dev/null differ


[20/20] groovy-user-site git commit: move content to asf-site branch

Posted by pa...@apache.org.
move content to asf-site branch


Project: http://git-wip-us.apache.org/repos/asf/groovy-user-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy-user-site/commit/de805f31
Tree: http://git-wip-us.apache.org/repos/asf/groovy-user-site/tree/de805f31
Diff: http://git-wip-us.apache.org/repos/asf/groovy-user-site/diff/de805f31

Branch: refs/heads/master
Commit: de805f317601c600b903ac4bd2b8e162b1575075
Parents: 33e32ad
Author: paulk <pa...@asert.com.au>
Authored: Wed Apr 26 09:05:33 2017 +1000
Committer: paulk <pa...@asert.com.au>
Committed: Wed Apr 26 09:05:33 2017 +1000

----------------------------------------------------------------------
 .gitignore                                      |   10 -
 .travis.yml                                     |    5 -
 LICENSE                                         |  201 -
 README.adoc                                     |   77 -
 build.gradle                                    |   23 -
 generator/build.gradle                          |   17 -
 .../groovy/generator/AsciidoctorFactory.groovy  |    9 -
 .../groovy/generator/ChangelogParser.groovy     |  104 -
 .../src/main/groovy/generator/DocUtils.groovy   |    5 -
 .../generator/DocumentationHTMLCleaner.groovy   |  101 -
 .../main/groovy/generator/PageTemplate.groovy   |   61 -
 .../main/groovy/generator/SiteGenerator.groovy  |  251 -
 generator/src/main/groovy/model/Book.groovy     |   17 -
 .../src/main/groovy/model/Changelog.groovy      |   11 -
 generator/src/main/groovy/model/Course.groovy   |   34 -
 .../src/main/groovy/model/Distribution.groovy   |   19 -
 .../main/groovy/model/DownloadPackage.groovy    |   23 -
 .../src/main/groovy/model/Ecosystem.groovy      |   13 -
 .../src/main/groovy/model/EcosystemEntry.groovy |   18 -
 generator/src/main/groovy/model/Event.groovy    |   19 -
 generator/src/main/groovy/model/Events.groovy   |   13 -
 generator/src/main/groovy/model/Issue.groovy    |   14 -
 generator/src/main/groovy/model/Library.groovy  |   13 -
 generator/src/main/groovy/model/Menu.groovy     |   21 -
 generator/src/main/groovy/model/MenuItem.groovy |   13 -
 generator/src/main/groovy/model/Page.groovy     |   10 -
 generator/src/main/groovy/model/Section.groovy  |   21 -
 .../src/main/groovy/model/SectionItem.groovy    |   14 -
 generator/src/main/groovy/model/SiteMap.groovy  |  134 -
 .../src/main/groovy/model/UserGroup.groovy      |   28 -
 generator/src/main/groovy/model/Video.groovy    |   38 -
 gradle.properties                               |    1 -
 gradle/wrapper/gradle-wrapper.jar               |  Bin 52797 -> 0 bytes
 gradle/wrapper/gradle-wrapper.properties        |    6 -
 gradlew                                         |  169 -
 gradlew.bat                                     |   84 -
 readme.txt                                      |    1 +
 settings.gradle                                 |    4 -
 site/build.gradle                               |  230 -
 site/gradle/templates/deadlinks.groovy          |   25 -
 site/src/site/assets/css/book.css               |  680 --
 site/src/site/assets/css/bootstrap.css          | 6203 ------------------
 site/src/site/assets/css/docstyle.css           |   65 -
 site/src/site/assets/css/documentation.css      |    1 -
 site/src/site/assets/css/font-awesome.min.css   |    4 -
 site/src/site/assets/css/main.css               |  304 -
 site/src/site/assets/css/normalize.css          |  527 --
 site/src/site/assets/css/style.css              | 1098 ----
 site/src/site/assets/fonts/FontAwesome.otf      |  Bin 75188 -> 0 bytes
 .../site/assets/fonts/fontawesome-webfont.eot   |  Bin 72449 -> 0 bytes
 .../site/assets/fonts/fontawesome-webfont.svg   |  504 --
 .../site/assets/fonts/fontawesome-webfont.ttf   |  Bin 141564 -> 0 bytes
 .../site/assets/fonts/fontawesome-webfont.woff  |  Bin 83760 -> 0 bytes
 site/src/site/assets/img/asf_logo.png           |  Bin 21243 -> 0 bytes
 site/src/site/assets/img/books/Kousen-MJG.png   |  Bin 113588 -> 0 bytes
 site/src/site/assets/img/books/g2cook.jpg       |  Bin 16565 -> 0 bytes
 site/src/site/assets/img/books/gdsl.jpg         |  Bin 181096 -> 0 bytes
 site/src/site/assets/img/books/ggood.jpg        |  Bin 34046 -> 0 bytes
 .../img/books/pratical-grails-3-book-cover.png  |  Bin 59923 -> 0 bytes
 site/src/site/assets/img/books/regina.png       |  Bin 25121 -> 0 bytes
 site/src/site/assets/img/books/vslg2.jpg        |  Bin 105938 -> 0 bytes
 .../img/books/weissmann_groovy_grails.png       |  Bin 76365 -> 0 bytes
 site/src/site/assets/img/confs/g3summit2016.png |  Bin 42130 -> 0 bytes
 site/src/site/assets/img/confs/gr8confeu.png    |  Bin 15006 -> 0 bytes
 site/src/site/assets/img/confs/gr8confin.png    |  Bin 15470 -> 0 bytes
 site/src/site/assets/img/confs/gr8confus.png    |  Bin 32301 -> 0 bytes
 site/src/site/assets/img/confs/greach2017.png   |  Bin 91218 -> 0 bytes
 .../assets/img/courses/groovy-course-cover.png  |  Bin 97283 -> 0 bytes
 site/src/site/assets/img/ecosystem/geb.png      |  Bin 9785 -> 0 bytes
 site/src/site/assets/img/ecosystem/gpars.png    |  Bin 17029 -> 0 bytes
 site/src/site/assets/img/ecosystem/gradle.png   |  Bin 18405 -> 0 bytes
 site/src/site/assets/img/ecosystem/grails.png   |  Bin 16001 -> 0 bytes
 site/src/site/assets/img/ecosystem/griffon.png  |  Bin 14209 -> 0 bytes
 site/src/site/assets/img/ecosystem/ratpack.png  |  Bin 5589 -> 0 bytes
 site/src/site/assets/img/ecosystem/sdkman.png   |  Bin 6435 -> 0 bytes
 site/src/site/assets/img/favicon.ico            |  Bin 3813 -> 0 bytes
 site/src/site/assets/img/groovy-logo-black.svg  |   36 -
 .../src/site/assets/img/groovy-logo-colored.svg |  444 --
 site/src/site/assets/img/groovy-logo-white.png  |  Bin 55066 -> 0 bytes
 site/src/site/assets/img/groovy-logo-white.svg  |   36 -
 site/src/site/assets/img/groovy-logo.png        |  Bin 12303 -> 0 bytes
 site/src/site/assets/img/icons-colset-2-its.png |  Bin 5196 -> 0 bytes
 site/src/site/assets/img/logo.png               |  Bin 435 -> 0 bytes
 site/src/site/assets/img/logos/airbusgroup.png  |  Bin 1894 -> 0 bytes
 site/src/site/assets/img/logos/amadeus.png      |  Bin 3009 -> 0 bytes
 site/src/site/assets/img/logos/bestbuy.png      |  Bin 11763 -> 0 bytes
 site/src/site/assets/img/logos/carfax.png       |  Bin 7381 -> 0 bytes
 site/src/site/assets/img/logos/carriots.png     |  Bin 3655 -> 0 bytes
 site/src/site/assets/img/logos/cisco.png        |  Bin 4331 -> 0 bytes
 site/src/site/assets/img/logos/commerzbank.png  |  Bin 3052 -> 0 bytes
 .../src/site/assets/img/logos/credit-suisse.png |  Bin 2678 -> 0 bytes
 site/src/site/assets/img/logos/eads.png         |  Bin 2768 -> 0 bytes
 .../site/assets/img/logos/energy-transfer.png   |  Bin 2893 -> 0 bytes
 site/src/site/assets/img/logos/epo.png          |  Bin 6403 -> 0 bytes
 site/src/site/assets/img/logos/fanniemae.png    |  Bin 3719 -> 0 bytes
 site/src/site/assets/img/logos/google.png       |  Bin 3708 -> 0 bytes
 site/src/site/assets/img/logos/hypoport.png     |  Bin 6236 -> 0 bytes
 site/src/site/assets/img/logos/ibm.png          |  Bin 2544 -> 0 bytes
 .../src/site/assets/img/logos/jpmorganchase.png |  Bin 2716 -> 0 bytes
 site/src/site/assets/img/logos/linkedin.png     |  Bin 3015 -> 0 bytes
 site/src/site/assets/img/logos/mastercard.png   |  Bin 6312 -> 0 bytes
 site/src/site/assets/img/logos/mtv.png          |  Bin 9553 -> 0 bytes
 .../site/assets/img/logos/mutual-of-omaha.png   |  Bin 6540 -> 0 bytes
 .../img/logos/national-cancer-institute.png     |  Bin 10116 -> 0 bytes
 site/src/site/assets/img/logos/nestle.png       |  Bin 3523 -> 0 bytes
 site/src/site/assets/img/logos/netflix.png      |  Bin 3352 -> 0 bytes
 site/src/site/assets/img/logos/oracle.png       |  Bin 4455 -> 0 bytes
 .../img/logos/paterson-cancer-institute.png     |  Bin 5518 -> 0 bytes
 site/src/site/assets/img/logos/roche.png        |  Bin 5308 -> 0 bytes
 site/src/site/assets/img/logos/sas.png          |  Bin 4680 -> 0 bytes
 site/src/site/assets/img/logos/sky.png          |  Bin 3137 -> 0 bytes
 site/src/site/assets/img/logos/smartthings.png  |  Bin 7829 -> 0 bytes
 site/src/site/assets/img/logos/sony.png         |  Bin 2762 -> 0 bytes
 site/src/site/assets/img/logos/target.png       |  Bin 7259 -> 0 bytes
 site/src/site/assets/img/logos/thales.png       |  Bin 2551 -> 0 bytes
 site/src/site/assets/img/logos/ubs.png          |  Bin 6852 -> 0 bytes
 site/src/site/assets/img/logos/vodafone.png     |  Bin 4623 -> 0 bytes
 site/src/site/assets/img/logos/voyages-sncf.png |  Bin 5621 -> 0 bytes
 site/src/site/assets/img/logos/walmart.png      |  Bin 3246 -> 0 bytes
 site/src/site/assets/img/logos/wells-fargo.png  |  Bin 5709 -> 0 bytes
 .../img/videos/groovy-ecosystem-revisited.png   |  Bin 71130 -> 0 bytes
 .../site/assets/img/videos/groovy-puzzlers.png  |  Bin 85894 -> 0 bytes
 .../img/videos/metaprogramming-part-1.png       |  Bin 67863 -> 0 bytes
 site/src/site/assets/js/plugins.js              |   24 -
 site/src/site/assets/js/vendor/bootstrap.js     | 2114 ------
 site/src/site/assets/js/vendor/bootstrap.min.js |    6 -
 site/src/site/assets/js/vendor/classie.js       |   80 -
 .../site/assets/js/vendor/jquery-1.10.2.min.js  |    6 -
 .../assets/js/vendor/modernizr-2.6.2.min.js     |    4 -
 .../src/site/assets/js/vendor/sidebarEffects.js |   65 -
 site/src/site/html/index.html                   |   68 -
 site/src/site/html/they-use-groovy.html         |   45 -
 site/src/site/html/twittersearch.html           |    2 -
 site/src/site/includes/bottommenu.groovy        |   29 -
 site/src/site/includes/community-navbar.groovy  |   22 -
 site/src/site/includes/contribute-button.groovy |    7 -
 site/src/site/includes/topmenu.groovy           |   31 -
 site/src/site/layouts/iframedoc.groovy          |   16 -
 site/src/site/layouts/main.groovy               |   21 -
 site/src/site/layouts/page.groovy               |   90 -
 site/src/site/pages/404.groovy                  |   27 -
 site/src/site/pages/api.groovy                  |    2 -
 site/src/site/pages/buildstatus.groovy          |   77 -
 site/src/site/pages/changelog.groovy            |   39 -
 site/src/site/pages/changelogs.groovy           |   43 -
 site/src/site/pages/community.groovy            |   58 -
 site/src/site/pages/contribute.groovy           |  197 -
 site/src/site/pages/docpage.groovy              |   37 -
 site/src/site/pages/documentation.groovy        |   79 -
 site/src/site/pages/download.groovy             |  323 -
 site/src/site/pages/ecosystem.groovy            |   59 -
 site/src/site/pages/events.groovy               |   61 -
 site/src/site/pages/faq.groovy                  |   52 -
 site/src/site/pages/gdk.groovy                  |    2 -
 site/src/site/pages/groovy-weekly.groovy        |  103 -
 site/src/site/pages/index.groovy                |   44 -
 site/src/site/pages/indy.groovy                 |  174 -
 site/src/site/pages/learn.groovy                |  193 -
 site/src/site/pages/mailing-lists.groovy        |   76 -
 site/src/site/pages/release-notes.groovy        |   48 -
 site/src/site/pages/releases.groovy             |   36 -
 site/src/site/pages/search.groovy               |  113 -
 site/src/site/pages/security.groovy             |  150 -
 .../site/pages/singlepagedocumentation.groovy   |    2 -
 site/src/site/pages/thanks.groovy               |   51 -
 site/src/site/pages/usergroups.groovy           |   66 -
 site/src/site/pages/versioning.groovy           |   69 -
 site/src/site/pages/wiki.groovy                 |   68 -
 site/src/site/releasenotes/groovy-1.5.adoc      |  858 ---
 site/src/site/releasenotes/groovy-1.6.adoc      | 1436 ----
 site/src/site/releasenotes/groovy-1.7.adoc      |  433 --
 site/src/site/releasenotes/groovy-1.8.adoc      | 1554 -----
 site/src/site/releasenotes/groovy-2.0.adoc      |  886 ---
 site/src/site/releasenotes/groovy-2.1.adoc      |  963 ---
 site/src/site/releasenotes/groovy-2.2.adoc      |  256 -
 site/src/site/releasenotes/groovy-2.3.adoc      |  834 ---
 site/src/site/releasenotes/groovy-2.4.adoc      |  220 -
 site/src/site/releasenotes/groovy-2.5.adoc      |  112 -
 site/src/site/sitemap.groovy                    |  473 --
 site/src/site/wiki/groovy-release.adoc          |  132 -
 .../site/wiki/incubation-release-process.adoc   |  263 -
 181 files changed, 1 insertion(+), 25057 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 6ba533c..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,10 +0,0 @@
-.idea
-*.iml
-*.ipr
-*.iws
-build
-.gradle
-.classpath
-atlassian-ide-plugin.xml
-
-

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index dc7b712..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-script: ./gradlew -q -s generate
-jdk:
-- openjdk7
-
-

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/LICENSE
----------------------------------------------------------------------
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index ad410e1..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,201 +0,0 @@
-Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "{}"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright {yyyy} {name of copyright owner}
-
-   Licensed 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.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/README.adoc
----------------------------------------------------------------------
diff --git a/README.adoc b/README.adoc
deleted file mode 100644
index 230d929..0000000
--- a/README.adoc
+++ /dev/null
@@ -1,77 +0,0 @@
-= Groovy website
-The Groovy development team
-:revdate: 24-02-2014
-:build-icon: http://ci.groovy-lang.org:8111/app/rest/builds/buildType:(id:Groovy_Website)/statusIcon
-:noheader:
-:groovy-www: http://groovy-lang.org/
-:groovy-ci: http://ci.groovy-lang.org/viewType.html?buildTypeId=Groovy_Website&guest=1
-:gradle: http://www.gradle.org
-:markupte: http://docs.groovy-lang.org/latest/html/documentation/markup-template-engine.html
-
-[.left.text-left]
-image::http://groovy-lang.org/img/groovy-logo.png[]
-{groovy-www}[Groovy] is an agile and dynamic language for the Java Virtual Machine. It builds upon the strengths of Java, but has additional power features inspired by languages like Python, Ruby and Smalltalk.
-
-Groovy makes modern programming features available to Java developers with almost-zero learning curve as well as supports Domain-Specific Languages and other compact syntax so your code becomes easy to read and maintain.
-
-Groovy makes writing shell and build scripts easy with its powerful processing primitives, OO abilities and an Ant DSL.
-
-It also increases developer productivity by reducing scaffolding code when developing web, GUI, database or console applications. Groovy simplifies testing by supporting unit testing and mocking out-of-the-box. Groovy also seamlessly integrates with all existing Java classes and libraries and compiles straight to Java bytecode so you can use it anywhere you can use Java.
-
-== Sources for the Groovy website
-
-This project builds the Groovy website. It is using {gradle}[Gradle] and is fully statically generated.
-
-Build is image:{build-icon}[build status, link={groovy-ci}].
-
-== Generating the site
-
-----
-git clone http://git-wip-us.apache.org/repos/asf/groovy-user-site.git
-cd groovy-user-site
-./gradlew webzip
-----
-
-The output can be found in the `build` directory:
-
-----
-build
-  |---- site            : the generated static website
-  |---- reports         : deadlinks report
-  |---- distributions   : zip of the website
-----
-
-== Contributing
-
-The website is generated thanks to Gradle and makes use of the {markupte}[Markup Template Engine]. The structure of the
-project consists of two modules:
-
-----
-generator                       : utility classes and model for generating the website
-site                            : the website itself
-----
-
-The website subproject consists of:
-
-----
-src/main/site                   : sources for the static website
-          |--- assets           : static resources such as images, CSS files, ...
-          |--- html             : elements that templates include as raw HTML contents
-          |--- includes         : includes used by templates
-          |--- layouts          : layouts for the various pages
-          |--- pages            : individual pages
-build.gradle                    : website weaving logic
-----
-
-Additional details can be found in this http://melix.github.io/blog/2014/07/new-groovy-website.html[blog post].
-
-== Continuous Integration
-
-The official CI server runs {groovy-ci}[here] (login as user guest and leave the password blank) and is sponsored by http://www.jetbrains.com[JetBrains].
-
-WARNING: The website is continuously updated from the _master_ branch. This means that *every merge on master is immediately published*. Changes that need to be
-applied on a specific date need to be done on a dedicated branch.
-
-== License
-
-Groovy is licensed under the terms of the http://www.apache.org/licenses/LICENSE-2.0.html[Apache License, Version 2.0]

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/build.gradle
----------------------------------------------------------------------
diff --git a/build.gradle b/build.gradle
deleted file mode 100644
index d56e185..0000000
--- a/build.gradle
+++ /dev/null
@@ -1,23 +0,0 @@
-// Grab the plugin from a Maven Repo automatically
-buildscript {
-    repositories {
-        jcenter()
-    }
-    dependencies {
-        classpath 'com.yahoo.platform.yui:yuicompressor:2.4.7'
-    }
-}
-
-plugins {
-    id 'com.gradle.build-scan' version '1.0'
-}
-
-buildScan {
-    licenseAgreementUrl = 'https://gradle.com/terms-of-service'
-    licenseAgree = 'yes'
-}
-
-allprojects {
-    apply plugin: 'idea'
-}
-

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/generator/build.gradle
----------------------------------------------------------------------
diff --git a/generator/build.gradle b/generator/build.gradle
deleted file mode 100644
index 5f36eb0..0000000
--- a/generator/build.gradle
+++ /dev/null
@@ -1,17 +0,0 @@
-apply plugin: 'groovy'
-
-repositories {
-    jcenter()
-}
-
-dependencies {
-    ext.groovyVersion = '2.4.8'
-    ext.asciidocVersion = '1.5.4.1'
-    compile "org.codehaus.groovy:groovy:$groovyVersion"
-    compile "org.codehaus.groovy:groovy-json:$groovyVersion"
-    compile "org.codehaus.groovy:groovy-templates:$groovyVersion"
-    compile "org.asciidoctor:asciidoctorj:$asciidocVersion"
-}
-
-compileGroovy.sourceCompatibility = '1.7'
-compileGroovy.targetCompatibility = '1.7'
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/generator/src/main/groovy/generator/AsciidoctorFactory.groovy
----------------------------------------------------------------------
diff --git a/generator/src/main/groovy/generator/AsciidoctorFactory.groovy b/generator/src/main/groovy/generator/AsciidoctorFactory.groovy
deleted file mode 100644
index 72d48dd..0000000
--- a/generator/src/main/groovy/generator/AsciidoctorFactory.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-package generator
-
-import groovy.transform.CompileStatic
-import org.asciidoctor.Asciidoctor
-
-@CompileStatic
-class AsciidoctorFactory {
-    @Lazy static Asciidoctor instance = Asciidoctor.Factory.create()
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/generator/src/main/groovy/generator/ChangelogParser.groovy
----------------------------------------------------------------------
diff --git a/generator/src/main/groovy/generator/ChangelogParser.groovy b/generator/src/main/groovy/generator/ChangelogParser.groovy
deleted file mode 100644
index ee84faa..0000000
--- a/generator/src/main/groovy/generator/ChangelogParser.groovy
+++ /dev/null
@@ -1,104 +0,0 @@
-package generator
-
-import groovy.json.JsonSlurper
-import model.Changelog
-import model.Issue
-
-import java.util.regex.Pattern
-
-class ChangelogParser {
-    private static final String JIRA_SERVER = 'https://issues.apache.org/jira'
-    private static final String PROJECT_NAME = 'GROOVY'
-    private static final String PROJECT_ID = '12318123'
-
-    private static final String LOGNOTES_INTRO = /Release Notes - Groovy/
-    private static final String LOGNOTES_END = /<\/textarea>/
-    private static final String BUGTYPE_MARK = '** '
-    private static final String ITEM_MARK = '    * '
-    private static final Pattern ITEM_PATTERN = ~/\[(GROOVY-[0-9]+)\] - (.+)/
-    private static final String VERSION_PATTERN = /^((1\.)|[23]\.)/
-
-    static List<Changelog> fetchReleaseNotes(File cacheDirectory) {
-        def slurper = new JsonSlurper()
-        def versions = slurper.parse("$JIRA_SERVER/rest/api/2/project/$PROJECT_NAME/versions".toURL())
-        def versionMap = versions.findAll {
-            it.name =~ VERSION_PATTERN &&
-                    it.released == true
-        }.collectEntries {
-            [fixName(it.name), it.id]
-        }
-
-        def raw = versionMap.collect { name, id ->
-            println "Fetching changelog for version $name"
-            new Changelog(groovyVersion: name, issues: changelogHTML(id, cacheDirectory))
-        }
-        createAggregates(raw, versionMap.keySet())
-    }
-
-    private static String fixName(String name) {
-        String id = name
-        String classifier = ''
-
-        int idx = name.indexOf('-')
-        if (idx>0) {
-            classifier = name.substring(idx)
-            id = name - classifier
-        }
-        if (id.count('.')<2) {
-            // groovy 2.0 instead of 2.0.0
-            id = "${id}.0"
-        }
-        "$id$classifier"
-    }
-
-    private static List<Changelog> createAggregates(final List<Changelog> changelogs, final Set<String> releasedVersions) {
-        def allMajor = changelogs.groupBy {
-            def v = it.groovyVersion
-            v.contains('-')?v-v.substring(v.indexOf('-')):v
-        }.findAll { ver, logs -> ver in releasedVersions }
-        allMajor.collect { k,v ->
-            def changelog = changelogs.find { it.groovyVersion == k }
-            if (!changelog) {
-                println "Not found: $k"
-                changelog = new Changelog(groovyVersion: k, issues:[])
-                changelogs << changelog
-            }
-            v.each {
-                changelog.issues = [*changelog.issues, *it.issues].unique().sort { it.id }
-            }
-        }
-        changelogs
-    }
-
-    private static List<Issue> changelogHTML(String id, File cacheDir) {
-        def cache = new File(cacheDir, "changelog-${id}.html")
-        def log
-        if (cache.exists()) {
-            log = cache.getText('UTF-8')
-        } else {
-            log = new URL("$JIRA_SERVER/secure/ReleaseNote.jspa?version=$id&styleName=Text&projectId=$PROJECT_ID").getText('UTF-8')
-            cache.write(log, 'UTF-8')
-        }
-        boolean inNotes = false
-        String type = null
-        List<Issue> issues = []
-
-        log.eachLine { line ->
-            if (line.startsWith(LOGNOTES_INTRO)) {
-                inNotes = true
-            } else if (line.startsWith(LOGNOTES_END)) {
-                inNotes = false
-            } else if (inNotes) {
-                if (line.startsWith(BUGTYPE_MARK)) {
-                    type = line - BUGTYPE_MARK
-                } else if (line.startsWith(ITEM_MARK)) {
-                    def m = ITEM_PATTERN.matcher(line)
-                    m.find()
-                    issues << new Issue(id: m.group(1), description: m.group(2), type: type)
-                }
-            }
-        }
-
-        issues
-    }
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/generator/src/main/groovy/generator/DocUtils.groovy
----------------------------------------------------------------------
diff --git a/generator/src/main/groovy/generator/DocUtils.groovy b/generator/src/main/groovy/generator/DocUtils.groovy
deleted file mode 100644
index 49d8609..0000000
--- a/generator/src/main/groovy/generator/DocUtils.groovy
+++ /dev/null
@@ -1,5 +0,0 @@
-package generator
-
-class DocUtils {
-    @Lazy public static final String DOCS_BASEURL = System.getProperty('docs_baseurl')
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/generator/src/main/groovy/generator/DocumentationHTMLCleaner.groovy
----------------------------------------------------------------------
diff --git a/generator/src/main/groovy/generator/DocumentationHTMLCleaner.groovy b/generator/src/main/groovy/generator/DocumentationHTMLCleaner.groovy
deleted file mode 100644
index fafa9db..0000000
--- a/generator/src/main/groovy/generator/DocumentationHTMLCleaner.groovy
+++ /dev/null
@@ -1,101 +0,0 @@
-package generator
-
-import groovy.transform.CompileStatic
-
-/**
- * This class is responsible for downloading a documentation page as generated through the Asciidoctor task
- * of the Groovy build, then filter its contents in order to return only the body of the documentation, as HTML.
- *
- * @author C�dric Champeau
- */
-@CompileStatic
-class DocumentationHTMLCleaner {
-    private final static String BODY_START = /<body/
-    private final static String BODY_END = /<\/body/
-    private final static String TOC_START = /<div id="toc"/
-    private final static String MAIN_START = /<div id="content"/
-    private final static String MAIN_END = /<div id="footer"/
-
-    /**
-     * A list of links which are badly generated, but we know how to fix them
-     */
-    private final static Map<String,String> KNOWN_REPLACEMENTS = [
-        /docs\.groovy-lang\.org\/(latest|next)\/html\/documentation\/gdk\.html/: 'groovy-lang.org/gdk.html',
-        /\/maven\/groovy-/: '/maven/apache-groovy-'
-    ]
-
-    private static String cleanupPage(String location) {
-        def url = location.toURL()
-        try {
-            def fullHTML = url.getText('utf-8')
-            return extractBetween(fullHTML, BODY_START, BODY_END)
-        } catch (FileNotFoundException e) {
-            // 404 not found
-        }
-
-        null
-    }
-
-    private static String extractBetween(String html, String startString, String endString) {
-        def start = html.indexOf(startString)
-        if (start > 0) {
-            start = html.indexOf('>', start) + 1
-        }
-        if (start > 1) {
-            def end = html.indexOf(endString, start)
-            if (end > start) {
-                return html.substring(start, end)
-            }
-        }
-        null
-    }
-
-    public static DocPage parsePage(String location) {
-        String contents = cleanupPage(location)
-        if (contents==null) {
-            return new DocPage(content: "Contents not found for <a href='$location'>$location</a>, most likely because this section has not yet been written.")
-        }
-        String toc = extractTOC(contents)?:''
-        String main = extractBetween(contents, MAIN_START, MAIN_END)?:"Main body not found for <a href='$location'>$location</a>"
-        main = replaceInternalLinks(main)
-        new DocPage(toc: toc, content: main)
-    }
-
-    private static String replaceInternalLinks(String html) {
-        def replacer = { List<String> it ->
-            def (String tag, String attr, String url) = [it[1], it[2], it[3]]
-            url = url.replaceAll(/x(.+)\.(?:pagespeed.+)/, '$1')
-            if (!url.startsWith('http') && !url.startsWith('#') && 'target.html'!=url) {
-                "$tag $attr'${DocUtils.DOCS_BASEURL}/html/documentation/$url'"
-            } else {
-                it[0]
-            }
-        }
-        html = html.replaceAll(/(a)\s+(href=)["'](.+?)["']/,replacer)
-        html = html.replaceAll(/(img)\s+(src=)["'](.+?)["']/,replacer)
-        KNOWN_REPLACEMENTS.each { link, repl ->
-            html = html.replaceAll(link, repl)
-        }
-        html
-    }
-
-    private static String extractTOC(final String html) {
-        int start = html.indexOf(TOC_START)
-        if (start > 0) {
-            int end = html.indexOf(MAIN_START)
-            if (end>0) {
-                def out = html.substring(start, end).replace("<div id=\"toctitle\">Table of Contents</div>", "")
-                end = out.size()-1
-                while (!out.substring(end, out.size()).startsWith('</div>')) end--
-                return out.substring(0, end)
-            }
-        }
-        null
-    }
-
-    static class DocPage {
-        String toc = ''
-        String content
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/generator/src/main/groovy/generator/PageTemplate.groovy
----------------------------------------------------------------------
diff --git a/generator/src/main/groovy/generator/PageTemplate.groovy b/generator/src/main/groovy/generator/PageTemplate.groovy
deleted file mode 100644
index cb753f8..0000000
--- a/generator/src/main/groovy/generator/PageTemplate.groovy
+++ /dev/null
@@ -1,61 +0,0 @@
-package generator
-
-import groovy.text.markup.BaseTemplate
-import groovy.text.markup.MarkupTemplateEngine
-import groovy.text.markup.TemplateConfiguration
-import groovy.transform.CompileStatic
-import org.asciidoctor.Asciidoctor
-import org.asciidoctor.AttributesBuilder
-
-@CompileStatic
-abstract class PageTemplate extends BaseTemplate {
-    public static final String BASEDIR = "basePath";
-
-    private final Map model
-
-    PageTemplate(
-            final MarkupTemplateEngine templateEngine,
-            final Map model, final Map<String, String> modelTypes, final TemplateConfiguration configuration) {
-        super(templateEngine, model, modelTypes, configuration)
-        this.model = model
-    }
-
-    String relative(String path) {
-        String base = (String) model.get(BASEDIR)
-        if (base && !path.startsWith('http') && !path.startsWith(File.separator)) {
-            String up = "..${File.separator}"
-            "${up*(1+base.count(File.separator))}$path"
-        } else {
-            path
-        }
-    }
-
-    /**
-     * Converts and outputs asciidoctor markup into HTML
-     * @param body the asciidoctor markup
-     */
-    void asciidoc(String body, Map options=[:]) {
-        yieldUnescaped asciidocText(body, options)
-    }
-
-    /**
-     * Converts and returns asciidoctor markup into HTML. This method
-     * does *not* automatically renders the result so it is possible
-     * to post-process the generated HTML.
-     * @param body the asciidoctor markup
-     */
-    String asciidocText(String body, Map options=[:]) {
-        def asciidoctor = AsciidoctorFactory.instance
-        def attributes = options.attributes
-        if (!attributes) {
-            attributes = [:]
-            options.put('attributes', attributes)
-        }
-        attributes['source-highlighter'] = 'prettify'
-        asciidoctor.convert(body,options)
-    }
-
-    String latestDocURL(String target) {
-        "${DocUtils.DOCS_BASEURL}/html/$target"
-    }
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/generator/src/main/groovy/generator/SiteGenerator.groovy
----------------------------------------------------------------------
diff --git a/generator/src/main/groovy/generator/SiteGenerator.groovy b/generator/src/main/groovy/generator/SiteGenerator.groovy
deleted file mode 100644
index 77c9c48..0000000
--- a/generator/src/main/groovy/generator/SiteGenerator.groovy
+++ /dev/null
@@ -1,251 +0,0 @@
-package generator
-
-import groovy.text.markup.MarkupTemplateEngine
-import groovy.text.markup.TemplateConfiguration
-import groovy.transform.CompileStatic
-import model.Changelog
-import model.Page
-import model.Section
-import model.SectionItem
-import model.SiteMap
-
-import java.nio.file.FileSystems
-import java.nio.file.Path
-import java.nio.file.WatchEvent
-
-import static generator.DocumentationHTMLCleaner.cleanupPage
-import static generator.DocumentationHTMLCleaner.parsePage
-import static java.nio.file.StandardWatchEventKinds.*
-
-@CompileStatic
-class SiteGenerator {
-
-    private final static Closure SEMANTIC_SORT = { String v1, String v2 ->
-        List<String> items1 = decomposeVersion(v1)
-        List<String> items2 = decomposeVersion(v2)
-        for (int i=0; i<Math.max(items1.size(),items2.size());i++) {
-            if (i>=items2.size()) {
-                return 1
-            }
-            if (i>=items1.size()) {
-                return -1
-            }
-            def p1 = items1[i]
-            def p2 = items2[i]
-            if (p1.isNumber()) {
-                if (p2.isNumber()) {
-                    def pi1 = p1.toInteger()
-                    def pi2 = p2.toInteger()
-
-                    if (pi1 < pi2) {
-                        return 1
-                    } else if (pi1 > pi2) {
-                        return -1
-                    }
-                } else {
-                    return -1
-                }
-            } else if (p2.isNumber()) {
-                return 1
-            } else {
-                return p2 <=> p1
-            }
-        }
-        0
-    }
-
-    File sourcesDir
-    File outputDir
-
-    private MarkupTemplateEngine tplEngine
-    private SiteMap siteMap
-
-    void setup() {
-
-        println "Generating website using Groovy ${GroovySystem.version}"
-
-        def tplConf = new TemplateConfiguration()
-        tplConf.autoIndent = true
-        tplConf.autoNewLine = true
-        tplConf.baseTemplateClass = PageTemplate
-
-        def classLoader = new URLClassLoader([sourcesDir.toURI().toURL()] as URL[], this.class.classLoader)
-        tplEngine = new MarkupTemplateEngine(classLoader, tplConf, new MarkupTemplateEngine.CachingTemplateResolver())
-
-        siteMap = SiteMap.from(new File(sourcesDir, "sitemap.groovy"))
-
-    }
-
-    void render(String page, String target = null, Map model = [:], String baseDir=null) {
-        model.menu = siteMap.menu
-        model.currentPage = target
-        target = target ?: page
-        File root
-        if (baseDir) {
-            root = new File(outputDir, baseDir)
-            model[PageTemplate.BASEDIR] = baseDir
-            root.mkdirs()
-        } else {
-            root = outputDir
-        }
-
-        new File(root,"${target}.html").write(tplEngine.createTemplateByPath("pages/${page}.groovy").make(model).toString(), 'utf-8')
-    }
-
-    void generateSite() {
-        long sd = System.currentTimeMillis()
-        setup()
-
-        def cacheDir = new File(new File('build'), 'cache')
-        cacheDir.mkdirs()
-        println "Cache directory: $cacheDir"
-        def changelogs = ChangelogParser.fetchReleaseNotes(cacheDir);
-
-        renderDocumentation()
-
-        renderPages(changelogs)
-
-        renderChangelogs(changelogs)
-
-        renderReleaseNotes()
-
-        renderWiki()
-
-
-        long dur = System.currentTimeMillis() - sd
-        println "Generated site into $outputDir in ${dur}ms"
-    }
-
-    private List<Section> renderDocumentation() {
-        siteMap.documentationSections.each { Section section ->
-            section.items.each { SectionItem item ->
-                if (item.generate) {
-                    println "Generating documentation page [$item.name]"
-                    render 'docpage', item.targetFilename, [
-                            category: 'Learn',
-                            title   : item.name,
-                            page    : parsePage("${DocUtils.DOCS_BASEURL}/html/documentation/${item.sourceFilename}.html")]
-                }
-            }
-        }
-    }
-
-    private List<Page> renderPages(List<Changelog> changelogs) {
-        siteMap.pages.each { Page page ->
-            println "Rendering individual page [$page.source]"
-            if ('changelogs' == page.source) {
-                page.model.versions = changelogs.groovyVersion.sort(SEMANTIC_SORT)
-            }
-            render page.source, page.target, page.model
-        }
-    }
-
-    private List<Changelog> renderChangelogs(List<Changelog> changelogs) {
-        changelogs.each {
-            println "Rendering changelog for Groovy $it.groovyVersion"
-            render 'changelog', "changelog-$it.groovyVersion", [groovyVersion: it.groovyVersion, issues: it.issues], 'changelogs'
-        }
-    }
-
-    private void renderReleaseNotes() {
-        def releaseNotesVersions = new TreeSet<String>(new Comparator<String>() {
-            @Override
-            int compare(final String v1, final String v2) {
-                v2.toDouble() <=> v1.toDouble()
-            }
-        })
-        new File(sourcesDir, 'releasenotes').eachFile { File file ->
-            def name = file.name.substring(0, file.name.lastIndexOf('.adoc'))
-            def version = name - 'groovy-'
-            releaseNotesVersions << version
-            println "Rendering release notes for Groovy $version"
-            render 'release-notes', name, [notes: file.getText('utf-8'), groovyVersion: version], 'releasenotes'
-        }
-        render 'releases', 'releases', [versions: releaseNotesVersions]
-    }
-
-    private void renderWiki() {
-        def asciidoctor = AsciidoctorFactory.instance
-        println "Rendering wiki"
-
-        def wikiDir = new File(sourcesDir, "wiki")
-        wikiDir.eachFileRecurse { f->
-            if (f.name.endsWith('.adoc')) {
-                def header = asciidoctor.readDocumentHeader(f)
-                def bn = f.name.substring(0,f.name.lastIndexOf('.adoc'))
-                println "Rendering $header.documentTitle.main by ${header.author?.fullName}"
-                def relativePath = []
-                def p = f.parentFile
-                while (p!=wikiDir) {
-                    relativePath << p.name
-                    p = p.parentFile
-                }
-                String baseDir = relativePath?"wiki${File.separator}${relativePath.join(File.separator)}":'wiki'
-                render 'wiki', bn, [notes:f.getText('utf-8'), header: header], baseDir
-                println baseDir
-            }
-        }
-    }
-
-    static void main(String... args) {
-        def sourcesDir = args[0] as File
-        def outputDir = args[1] as File
-        def generator = new SiteGenerator(sourcesDir: sourcesDir, outputDir: outputDir)
-        boolean watchMode = args.length > 2 ? Boolean.valueOf(args[2]) : false
-        generator.generateSite()
-
-        if (watchMode) {
-            println "Started watch mode"
-            def watcher = FileSystems.default.newWatchService()
-
-            sourcesDir.toPath().register(watcher,
-                    ENTRY_CREATE,
-                    ENTRY_DELETE,
-                    ENTRY_MODIFY)
-
-            sourcesDir.eachDirRecurse { File f ->
-                f.toPath().register(watcher,
-                        ENTRY_CREATE,
-                        ENTRY_DELETE,
-                        ENTRY_MODIFY)
-            }
-
-            def existingDirectories = ['pages', 'layouts', 'includes', 'html', 'assets', 'css', 'fonts', 'img', 'js', 'vendor']
-
-            while (true) {
-                def key = watcher.take()
-                def pollEvents = (List<WatchEvent<Path>>) key.pollEvents()
-
-                def changed = pollEvents.collect { "${it.context()}".toString() }.join(', ')
-
-                // only generate when the event refers to the actual file modified / created / added
-                // as otherwise the watcher service generates two events:
-                // 1) one for directory containing the modified file, and
-                // 2) one for the actual file being modified
-                // this checks avoid getting two events for one change
-                if (existingDirectories.every { !changed.contains(it) }) {
-                    try {
-                        println "Regenerating site due to changes in: ${changed}"
-                        // todo: selective regeneration
-                        generator.generateSite()
-                    } finally {
-                        key.reset()
-                    }
-                }
-            }
-        }
-    }
-
-    static List<String> decomposeVersion(String version) {
-        String qualifier = ''
-        if (version.indexOf('-')>0) {
-            qualifier = version.substring(version.indexOf('-'))
-            version = version - qualifier
-        }
-        List<String> parts = version.split(/\./).toList()
-        if (qualifier) {
-            parts << qualifier
-        }
-        parts
-    }
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/generator/src/main/groovy/model/Book.groovy
----------------------------------------------------------------------
diff --git a/generator/src/main/groovy/model/Book.groovy b/generator/src/main/groovy/model/Book.groovy
deleted file mode 100644
index 4537ace..0000000
--- a/generator/src/main/groovy/model/Book.groovy
+++ /dev/null
@@ -1,17 +0,0 @@
-package model
-
-import groovy.transform.CompileStatic
-
-@CompileStatic
-class Book {
-    String title
-    String authors
-    String cover
-    String url
-    String description
-
-    void authors    (String authors)     { this.authors     = authors }
-    void cover      (String cover)       { this.cover       = cover }
-    void url        (String url)         { this.url         = url }
-    void description(String description) { this.description = description }
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/generator/src/main/groovy/model/Changelog.groovy
----------------------------------------------------------------------
diff --git a/generator/src/main/groovy/model/Changelog.groovy b/generator/src/main/groovy/model/Changelog.groovy
deleted file mode 100644
index b7ba910..0000000
--- a/generator/src/main/groovy/model/Changelog.groovy
+++ /dev/null
@@ -1,11 +0,0 @@
-package model
-
-import groovy.transform.CompileStatic
-import groovy.transform.ToString
-
-@CompileStatic
-@ToString
-class Changelog {
-    String groovyVersion
-    List<Issue> issues
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/generator/src/main/groovy/model/Course.groovy
----------------------------------------------------------------------
diff --git a/generator/src/main/groovy/model/Course.groovy b/generator/src/main/groovy/model/Course.groovy
deleted file mode 100644
index 68f8618..0000000
--- a/generator/src/main/groovy/model/Course.groovy
+++ /dev/null
@@ -1,34 +0,0 @@
-package model
-
-import groovy.transform.CompileStatic
-
-@CompileStatic
-class Course {
-
-    String title
-    String instructor
-    String url
-    String description
-    String cover
-
-    void title(String title) {
-        this.title = title
-    }
-
-    void instructor(String instructor) {
-        this.instructor = instructor
-    }
-
-    void url(String url){
-        this.url = url
-    }
-
-    void description(String description){
-        this.description = description
-    }
-
-    void cover(String cover){
-        this.cover = cover
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/generator/src/main/groovy/model/Distribution.groovy
----------------------------------------------------------------------
diff --git a/generator/src/main/groovy/model/Distribution.groovy b/generator/src/main/groovy/model/Distribution.groovy
deleted file mode 100644
index 55ef17c..0000000
--- a/generator/src/main/groovy/model/Distribution.groovy
+++ /dev/null
@@ -1,19 +0,0 @@
-package model
-
-import groovy.transform.CompileStatic
-
-@CompileStatic
-class Distribution {
-    String name
-    Closure description
-    List<DownloadPackage> packages = []
-
-    void description(Closure cl) { this.description = cl }
-
-    void version(String name, Closure versionSpec) {
-        DownloadPackage pkg = new DownloadPackage(version:name)
-        def clone = versionSpec.rehydrate(pkg,pkg,pkg)
-        clone()
-        packages.add(pkg)
-    }
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/generator/src/main/groovy/model/DownloadPackage.groovy
----------------------------------------------------------------------
diff --git a/generator/src/main/groovy/model/DownloadPackage.groovy b/generator/src/main/groovy/model/DownloadPackage.groovy
deleted file mode 100644
index 152fa8d..0000000
--- a/generator/src/main/groovy/model/DownloadPackage.groovy
+++ /dev/null
@@ -1,23 +0,0 @@
-package model
-
-import groovy.transform.CompileStatic
-
-@CompileStatic
-class DownloadPackage {
-    String version
-    String releaseNotes
-    String windowsInstaller
-    boolean stable = false
-
-    void releaseNotes(String notes) {
-        releaseNotes = notes
-    }
-
-    void windowsInstaller(String installer) {
-        windowsInstaller = installer
-    }
-
-    void stable(boolean b) {
-        stable = b
-    }
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/generator/src/main/groovy/model/Ecosystem.groovy
----------------------------------------------------------------------
diff --git a/generator/src/main/groovy/model/Ecosystem.groovy b/generator/src/main/groovy/model/Ecosystem.groovy
deleted file mode 100644
index 17a102f..0000000
--- a/generator/src/main/groovy/model/Ecosystem.groovy
+++ /dev/null
@@ -1,13 +0,0 @@
-package model
-
-import groovy.transform.CompileStatic
-
-@CompileStatic
-class Ecosystem extends LinkedHashMap<String,EcosystemEntry> {
-    void project(String name, Closure entrySpec) {
-        def entry = new EcosystemEntry(name:name)
-        def clone = entrySpec.rehydrate(entry,entry,entry)
-        clone()
-        put(name, entry)
-    }
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/generator/src/main/groovy/model/EcosystemEntry.groovy
----------------------------------------------------------------------
diff --git a/generator/src/main/groovy/model/EcosystemEntry.groovy b/generator/src/main/groovy/model/EcosystemEntry.groovy
deleted file mode 100644
index 55dc9fd..0000000
--- a/generator/src/main/groovy/model/EcosystemEntry.groovy
+++ /dev/null
@@ -1,18 +0,0 @@
-package model
-
-import groovy.transform.ToString
-
-import groovy.transform.CompileStatic
-
-@CompileStatic
-@ToString(includeNames=true)
-class EcosystemEntry {
-    String name
-    String url
-    String description
-    String logo
-
-    void url(String url) { this.url = url }
-    void description(String description) { this.description = description }
-    void logo(String logo) { this.logo = logo }
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/generator/src/main/groovy/model/Event.groovy
----------------------------------------------------------------------
diff --git a/generator/src/main/groovy/model/Event.groovy b/generator/src/main/groovy/model/Event.groovy
deleted file mode 100644
index 6eaf7d7..0000000
--- a/generator/src/main/groovy/model/Event.groovy
+++ /dev/null
@@ -1,19 +0,0 @@
-package model
-
-import groovy.transform.CompileStatic
-
-@CompileStatic
-class Event {
-    String name
-    String location
-    String date
-    String description
-    String url
-    String logo
-
-    void location   (String location)    { this.location    = location }
-    void date       (String date)        { this.date        = date }
-    void description(String description) { this.description = description }
-    void url        (String url)         { this.url         = url }
-    void logo       (String logo)        { this.logo        = logo }
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/generator/src/main/groovy/model/Events.groovy
----------------------------------------------------------------------
diff --git a/generator/src/main/groovy/model/Events.groovy b/generator/src/main/groovy/model/Events.groovy
deleted file mode 100644
index 8767dec..0000000
--- a/generator/src/main/groovy/model/Events.groovy
+++ /dev/null
@@ -1,13 +0,0 @@
-package model
-
-import groovy.transform.CompileStatic
-
-@CompileStatic
-class Events extends LinkedHashMap<String, Event> {
-    void event(String name, Closure eventClosure) {
-        def entry = new Event(name: name)
-        def clone = eventClosure.rehydrate(entry, entry, entry)
-        clone()
-        put(name, entry)
-    }
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/generator/src/main/groovy/model/Issue.groovy
----------------------------------------------------------------------
diff --git a/generator/src/main/groovy/model/Issue.groovy b/generator/src/main/groovy/model/Issue.groovy
deleted file mode 100644
index db4b1ee..0000000
--- a/generator/src/main/groovy/model/Issue.groovy
+++ /dev/null
@@ -1,14 +0,0 @@
-package model
-
-import groovy.transform.CompileStatic
-import groovy.transform.EqualsAndHashCode
-import groovy.transform.ToString
-
-@CompileStatic
-@ToString
-@EqualsAndHashCode
-class Issue {
-    String id
-    String type
-    String description
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/generator/src/main/groovy/model/Library.groovy
----------------------------------------------------------------------
diff --git a/generator/src/main/groovy/model/Library.groovy b/generator/src/main/groovy/model/Library.groovy
deleted file mode 100644
index 879cd98..0000000
--- a/generator/src/main/groovy/model/Library.groovy
+++ /dev/null
@@ -1,13 +0,0 @@
-package model
-
-import groovy.transform.CompileStatic
-
-@CompileStatic
-class Library extends LinkedHashMap<String, Book> {
-    void book(String title, Closure bookClosure) {
-        def book = new Book(title: title)
-        def clone = bookClosure.rehydrate(book, book, book)
-        clone()
-        put(title, book)
-    }
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/generator/src/main/groovy/model/Menu.groovy
----------------------------------------------------------------------
diff --git a/generator/src/main/groovy/model/Menu.groovy b/generator/src/main/groovy/model/Menu.groovy
deleted file mode 100644
index 9e495ed..0000000
--- a/generator/src/main/groovy/model/Menu.groovy
+++ /dev/null
@@ -1,21 +0,0 @@
-package model
-
-import groovy.transform.CompileStatic
-
-@CompileStatic
-class Menu extends LinkedHashMap<String, List<MenuItem>> {
-
-    void group(String name, Closure groupSpec) {
-        Group g = new Group()
-        def clone = groupSpec.rehydrate(g,g,g)
-        clone()
-        put(name, g.items)
-    }
-
-    private static class Group {
-        List<MenuItem> items = []
-        void item(String name, String link, String style=null) {
-            items << new MenuItem(name:name, link: link, style:style)
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/generator/src/main/groovy/model/MenuItem.groovy
----------------------------------------------------------------------
diff --git a/generator/src/main/groovy/model/MenuItem.groovy b/generator/src/main/groovy/model/MenuItem.groovy
deleted file mode 100644
index 6e58074..0000000
--- a/generator/src/main/groovy/model/MenuItem.groovy
+++ /dev/null
@@ -1,13 +0,0 @@
-package model
-
-import groovy.transform.ToString
-
-import groovy.transform.CompileStatic
-
-@CompileStatic
-@ToString(includeNames=true)
-class MenuItem {
-    String name
-    String link
-    String style
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/generator/src/main/groovy/model/Page.groovy
----------------------------------------------------------------------
diff --git a/generator/src/main/groovy/model/Page.groovy b/generator/src/main/groovy/model/Page.groovy
deleted file mode 100644
index 5b29679..0000000
--- a/generator/src/main/groovy/model/Page.groovy
+++ /dev/null
@@ -1,10 +0,0 @@
-package model
-
-import groovy.transform.CompileStatic
-
-@CompileStatic
-class Page {
-    String source
-    String target
-    Map model = [:]
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/generator/src/main/groovy/model/Section.groovy
----------------------------------------------------------------------
diff --git a/generator/src/main/groovy/model/Section.groovy b/generator/src/main/groovy/model/Section.groovy
deleted file mode 100644
index b0b14fd..0000000
--- a/generator/src/main/groovy/model/Section.groovy
+++ /dev/null
@@ -1,21 +0,0 @@
-package model
-
-import groovy.transform.ToString
-
-@ToString(includeNames=true)
-import groovy.transform.CompileStatic
-
-@CompileStatic
-class Section {
-    String name
-    String icon
-    List<SectionItem> items = []
-
-    void item(String name, String targetFile, String sourceFile, boolean generate = true) {
-        items.add(new SectionItem(name: name, sourceFilename: sourceFile, targetFilename: targetFile, generate:generate))
-    }
-
-    String getAnchor() {
-        name.replaceAll('[^a-zA-Z0-9]','').toLowerCase()
-    }
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/generator/src/main/groovy/model/SectionItem.groovy
----------------------------------------------------------------------
diff --git a/generator/src/main/groovy/model/SectionItem.groovy b/generator/src/main/groovy/model/SectionItem.groovy
deleted file mode 100644
index 7379b23..0000000
--- a/generator/src/main/groovy/model/SectionItem.groovy
+++ /dev/null
@@ -1,14 +0,0 @@
-package model
-
-import groovy.transform.ToString
-
-import groovy.transform.CompileStatic
-
-@CompileStatic
-@ToString(includeNames=true)
-class SectionItem {
-    String name
-    String targetFilename
-    String sourceFilename
-    boolean generate = true
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/generator/src/main/groovy/model/SiteMap.groovy
----------------------------------------------------------------------
diff --git a/generator/src/main/groovy/model/SiteMap.groovy b/generator/src/main/groovy/model/SiteMap.groovy
deleted file mode 100644
index 8742dbc..0000000
--- a/generator/src/main/groovy/model/SiteMap.groovy
+++ /dev/null
@@ -1,134 +0,0 @@
-package model
-
-import groovy.transform.ToString
-import org.codehaus.groovy.control.CompilerConfiguration
-
-import groovy.transform.CompileStatic
-import org.codehaus.groovy.control.customizers.ImportCustomizer
-
-@CompileStatic
-@ToString(includeNames=true)
-class SiteMap {
-    final List<Section> documentationSections = []
-    final List<Distribution> distributions = []
-    final Menu menu = new Menu()
-    final Ecosystem ecosystem = new Ecosystem()
-    final Events allEvents = new Events()
-    final Library library = new Library()
-    final List<String> allDocVersions = []
-    final List<Page> pages = []
-    final List<UserGroup> usergroups = []
-    final List<Video> videos = []
-    final List<Course> courses = []
-
-    private SiteMap() {}
-
-    public static SiteMap from(File source) {
-        CompilerConfiguration config = new CompilerConfiguration()
-        def customizer = new ImportCustomizer()
-        config.addCompilationCustomizers(customizer)
-        customizer.addStaticImport('generator.DocUtils','DOCS_BASEURL')
-        config.scriptBaseClass = 'groovy.util.DelegatingScript'
-        GroovyShell shell = new GroovyShell(config)
-        def script = shell.parse(source)
-
-        def result = new SiteMap()
-        ((DelegatingScript)script).setDelegate(result)
-        script.run()
-
-        result
-    }
-
-    private void documentation(Closure docSpec) {
-        def clone = docSpec.rehydrate(this, this, this)
-        clone()
-    }
-
-    private void section(String name, String icon, Closure sectionSpec) {
-        Section section = new Section(name:name, icon:icon)
-        def spec = sectionSpec.rehydrate(section,section,section)
-        spec()
-        documentationSections.add(section)
-    }
-
-    private void groovyDocumentationVersions(List<String> allDocVersions) {
-        this.allDocVersions.addAll(allDocVersions)
-    }
-
-    private void downloads(Closure dlSpec) {
-        def clone = dlSpec.rehydrate(this, this, this)
-        clone()
-    }
-
-    private void pages(Closure pagesSpec) {
-        def clone = pagesSpec.rehydrate(this, this, this)
-        clone()
-    }
-
-    private void usergroups(Closure groupsSpec) {
-        def clone = groupsSpec.rehydrate(this ,this ,this)
-        clone()
-    }
-
-    private void videos(Closure videosSpec) {
-        def clone = videosSpec.rehydrate(this, this, this)
-        clone()
-    }
-
-    private void courses(Closure coursesSpec) {
-        def clone = coursesSpec.rehydrate(this, this, this)
-        clone()
-    }
-
-    private void distribution(String name, Closure distSpec) {
-        Distribution dist = new Distribution(name: name)
-        def clone = distSpec.rehydrate(dist, dist, dist)
-        clone()
-        distributions.add(dist)
-    }
-
-    private void menu(Closure menuSpec) {
-        def clone = menuSpec.rehydrate(menu, menu, menu)
-        clone()
-    }
-
-    private void ecosystem(Closure ecoSpec) {
-        def clone = ecoSpec.rehydrate(ecosystem, ecosystem, ecosystem)
-        clone()
-    }
-
-    private void allEvents(Closure eventsSpec) {
-        def clone = eventsSpec.rehydrate(allEvents, allEvents, allEvents)
-        clone()
-    }
-
-    private void books(Closure booksSpec) {
-        def clone = booksSpec.rehydrate(library, library, library)
-        clone()
-    }
-
-    private void page(String source, String target, Map model = [:]) {
-        pages.add(new Page(source:source, target: target, model: model))
-    }
-
-    private void userGroup(String name, Closure groupSpec) {
-        def group = new UserGroup(name: name)
-        def clone = groupSpec.rehydrate(group,group,group)
-        clone()
-        usergroups.add(group)
-    }
-
-    private void video(String title, Closure videoSpec) {
-        def video = new Video(title: title)
-        def clone = videoSpec.rehydrate(video, video, video)
-        clone()
-        videos.add(video)
-    }
-
-    private void course(String title, Closure courseSpec) {
-        def course = new Course(title: title)
-        def clone = courseSpec.rehydrate(course,course,course)
-        clone()
-        courses.add(course)
-    }
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/generator/src/main/groovy/model/UserGroup.groovy
----------------------------------------------------------------------
diff --git a/generator/src/main/groovy/model/UserGroup.groovy b/generator/src/main/groovy/model/UserGroup.groovy
deleted file mode 100644
index 84007e3..0000000
--- a/generator/src/main/groovy/model/UserGroup.groovy
+++ /dev/null
@@ -1,28 +0,0 @@
-package model
-
-import groovy.transform.CompileStatic
-import groovy.transform.ToString
-
-@CompileStatic
-@ToString(includeNames=true)
-class UserGroup {
-    String location
-    String name
-    String url
-
-    void location(String location) {
-        this.location = location
-    }
-
-    void name(String name) {
-        this.name = name
-    }
-
-    void url(String url) {
-        this.url = url
-    }
-
-    String[] getLocationParts() {
-        location.split('/')
-    }
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/generator/src/main/groovy/model/Video.groovy
----------------------------------------------------------------------
diff --git a/generator/src/main/groovy/model/Video.groovy b/generator/src/main/groovy/model/Video.groovy
deleted file mode 100644
index a5a4667..0000000
--- a/generator/src/main/groovy/model/Video.groovy
+++ /dev/null
@@ -1,38 +0,0 @@
-package model
-
-import groovy.transform.CompileStatic
-
-@CompileStatic
-class Video {
-    String title
-    String speaker
-    String summary
-    String pictureUrl
-    String videoUrl = ""
-    String slidesUrl = ""
-    String codeUrl = ""
-
-    void speaker(String speaker) {
-        this.speaker = speaker
-    }
-
-    void summary(String summary) {
-        this.summary = summary
-    }
-
-    void pictureUrl(String pictureUrl) {
-        this.pictureUrl = pictureUrl
-    }
-
-    void videoUrl(String videoUrl) {
-        this.videoUrl = videoUrl
-    }
-
-    void slidesUrl(String slidesUrl) {
-        this.slidesUrl = slidesUrl
-    }
-
-    void codeUrl(String codeUrl) {
-        this.codeUrl = codeUrl
-    }
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/gradle.properties
----------------------------------------------------------------------
diff --git a/gradle.properties b/gradle.properties
deleted file mode 100644
index c9d5166..0000000
--- a/gradle.properties
+++ /dev/null
@@ -1 +0,0 @@
-systemProp.docs_baseurl=http://docs.groovy-lang.org/latest

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/gradle/wrapper/gradle-wrapper.jar
----------------------------------------------------------------------
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index 1d7437d..0000000
Binary files a/gradle/wrapper/gradle-wrapper.jar and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/gradle/wrapper/gradle-wrapper.properties
----------------------------------------------------------------------
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index da60a3a..0000000
--- a/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#Mon Apr 03 10:41:25 AEST 2017
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-3.4.1-bin.zip

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/gradlew
----------------------------------------------------------------------
diff --git a/gradlew b/gradlew
deleted file mode 100644
index 9aa616c..0000000
--- a/gradlew
+++ /dev/null
@@ -1,169 +0,0 @@
-#!/usr/bin/env bash
-
-##############################################################################
-##
-##  Gradle start up script for UN*X
-##
-##############################################################################
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
-    ls=`ls -ld "$PRG"`
-    link=`expr "$ls" : '.*-> \(.*\)$'`
-    if expr "$link" : '/.*' > /dev/null; then
-        PRG="$link"
-    else
-        PRG=`dirname "$PRG"`"/$link"
-    fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn ( ) {
-    echo "$*"
-}
-
-die ( ) {
-    echo
-    echo "$*"
-    echo
-    exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-nonstop=false
-case "`uname`" in
-  CYGWIN* )
-    cygwin=true
-    ;;
-  Darwin* )
-    darwin=true
-    ;;
-  MINGW* )
-    msys=true
-    ;;
-  NONSTOP* )
-    nonstop=true
-    ;;
-esac
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
-    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
-        # IBM's JDK on AIX uses strange locations for the executables
-        JAVACMD="$JAVA_HOME/jre/sh/java"
-    else
-        JAVACMD="$JAVA_HOME/bin/java"
-    fi
-    if [ ! -x "$JAVACMD" ] ; then
-        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-    fi
-else
-    JAVACMD="java"
-    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
-    MAX_FD_LIMIT=`ulimit -H -n`
-    if [ $? -eq 0 ] ; then
-        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
-            MAX_FD="$MAX_FD_LIMIT"
-        fi
-        ulimit -n $MAX_FD
-        if [ $? -ne 0 ] ; then
-            warn "Could not set maximum file descriptor limit: $MAX_FD"
-        fi
-    else
-        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
-    fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
-    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
-    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
-    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-    JAVACMD=`cygpath --unix "$JAVACMD"`
-
-    # We build the pattern for arguments to be converted via cygpath
-    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
-    SEP=""
-    for dir in $ROOTDIRSRAW ; do
-        ROOTDIRS="$ROOTDIRS$SEP$dir"
-        SEP="|"
-    done
-    OURCYGPATTERN="(^($ROOTDIRS))"
-    # Add a user-defined pattern to the cygpath arguments
-    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
-        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
-    fi
-    # Now convert the arguments - kludge to limit ourselves to /bin/sh
-    i=0
-    for arg in "$@" ; do
-        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
-        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
-
-        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
-            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
-        else
-            eval `echo args$i`="\"$arg\""
-        fi
-        i=$((i+1))
-    done
-    case $i in
-        (0) set -- ;;
-        (1) set -- "$args0" ;;
-        (2) set -- "$args0" "$args1" ;;
-        (3) set -- "$args0" "$args1" "$args2" ;;
-        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
-        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
-        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
-        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
-        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
-        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
-    esac
-fi
-
-# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
-function splitJvmOpts() {
-    JVM_OPTS=("$@")
-}
-eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
-JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
-
-# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
-if [[ "$(uname)" == "Darwin" ]] && [[ "$HOME" == "$PWD" ]]; then
-  cd "$(dirname "$0")"
-fi
-
-exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/gradlew.bat
----------------------------------------------------------------------
diff --git a/gradlew.bat b/gradlew.bat
deleted file mode 100644
index f955316..0000000
--- a/gradlew.bat
+++ /dev/null
@@ -1,84 +0,0 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem  Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windows variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/readme.txt
----------------------------------------------------------------------
diff --git a/readme.txt b/readme.txt
new file mode 100644
index 0000000..0d81c59
--- /dev/null
+++ b/readme.txt
@@ -0,0 +1 @@
+All work is carried out on the asf-site branch

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/settings.gradle
----------------------------------------------------------------------
diff --git a/settings.gradle b/settings.gradle
deleted file mode 100644
index 2fd2033..0000000
--- a/settings.gradle
+++ /dev/null
@@ -1,4 +0,0 @@
-rootProject.name = 'groovy-user-site'
-
-include 'generator','site'
-


[12/20] groovy-user-site git commit: move content to asf-site branch

Posted by pa...@apache.org.
http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/groovy-logo-white.svg
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/groovy-logo-white.svg b/site/src/site/assets/img/groovy-logo-white.svg
deleted file mode 100644
index 4c9e38b..0000000
--- a/site/src/site/assets/img/groovy-logo-white.svg
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   version="1.1"
-   width="1000"
-   height="499"
-   id="svg3944">
-  <defs
-     id="defs3946" />
-  <metadata
-     id="metadata3949">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     transform="translate(-35.396599,164.8432)"
-     id="layer1">
-    <path
-       d="m 535.2694,-164.8432 c 0,0 -70.08429,116.134127 -103.38337,172.6061967 -6.4281,2.4088603 -7.14247,1.73215 -14.19486,8.6380303 -17.0619,-19.5616103 -37.36994,-1.7231 -42.83897,9.2036 C 372.47507,1.9707367 368.54798,1.9596267 363.2521,-3.3430333 366.31133,-24.016473 376.40683,-57.706575 353.17832,-81.856483 308.2561,-112.15896 256.27913,-38.080203 227.30704,0.71889667 L 211.68761,26.632967 c -64.41236,-1.31627 -115.141479,0.36378 -176.291011,-0.87409 74.565591,27.94511 77.655211,28.59645 167.743571,62.77992 0,2.7554 6.73603,15.496863 14.14398,22.983313 6.15699,6.22224 12.87199,9.7366 16.22997,11.82587 -4.40832,2.25628 -13.36407,5.77744 -16.02646,10.74611 -12.18833,22.74645 5.76755,27.99967 17.40015,46.12087 13.11826,23.69061 15.94177,39.36548 46.90919,26.06832 10.6135,-4.55735 23.41683,-6.19404 31.59501,-8.74085 -28.85417,45.54568 -36.27108,57.99099 -86.79725,136.40879 l 0.50877,0.15416 c 202.09001,-78.8838 207.26341,-80.9127 307.19919,-120.41816 143.6739,55.7507 151.917,60.
 3364 309.69219,120.46958 -22.03838,-34.3997 -37.09678,-55.9613 -53.11625,-83.14098 6.30949,-0.50992 20.1357,-1.90003 32.41063,-9.70169 8.85894,-5.63055 19.26354,-11.9767 28.64254,-23.9249 18.45056,-23.50474 22.97538,-53.18375 16.22996,-90.23649 -3.20752,-17.61905 -9.77721,-34.746133 -8.85271,-35.374763 85.87954,-32.43645 95.9848,-35.95678 176.08752,-66.17343 -96.25527,1.41063 -100.90223,0.46404 -191.29993,0.66842 C 842.62498,9.0340067 833.95777,0.16857667 807.36301,1.0273167 797.41843,2.6563967 791.16264,6.0539367 786.50318,19.588787 771.63716,-7.8190533 751.0984,0.24436667 742.39227,13.727267 730.90958,1.9977867 704.15574,-1.9500033 690.70059,6.6317467 680.78438,1.9906567 669.25949,1.9720567 659.15645,14.035767 651.83897,7.9290767 649.58932,6.2059167 633.565,-0.20668333 596.66041,-62.601163 565.9659,-112.36779 535.2694,-164.8432 z m 0.50877,33.42092 c 14.574,22.26603 64.64344,108.722277 77.02875,128.0792467 C 598.76353,-2.396198 584.96251,5.0622677 574.54693,20.051617 565.52614,10.
 749593 554.98061,1.5250074 536.3486,0.78926085 513.69764,-3.1042287 501.61959,6.945404 486.37598,24.422047 481.84773,9.2462513 464.29824,5.6575459 449.0318,12.801847 462.6397,-8.8452233 527.00887,-117.28988 535.77817,-131.42228 z m -190.02798,96.406497 c -2.09294,59.75931 -44.49802,112.97903 -74.89189,93.52717 -22.96574,-18.69278 6.20436,-65.9927403 24.5739,-82.67822 -1.36272,12.75271 10.23546,20.7177297 0.96668,32.0326697 -18.56681,22.6655903 -11.26099,39.0155303 -3.25617,41.5447703 21.36735,6.75135 41.82142,-51.1318303 41.82142,-91.72757 0,-26.03238 -15.23389,-25.55012 -45.23022,5.65584 -40.95422,42.6056097 -63.06382,83.85864 -48.33376,112.14006 8.20761,15.75838 20.20513,27.093703 39.93895,24.731483 38.53801,-4.613169 61.79707,-52.272283 64.30933,-82.832483 6.14604,-0.15383 4.5204,0.37009 6.1562,-0.87408 0,5.39149 7.39663,31.45961 13.22818,48.58888 7.63176,29.24323 40.17312,87.916423 -57.03383,110.751793 -18.38731,4.63331 -25.61398,6.17496 -43.75477,13.31696 -8.89367,-18.4206 -10.
 9835,-24.36579 -29.05113,-42.16178 24.51346,-8.55813 24.68821,-7.71321 40.4986,-13.21412 61.13387,-21.27027 79.51442,-39.451033 77.38489,-65.402183 0,0 0.74581,-13.37447 -7.7334,-24.52581 -4.2797,14.93065 -12.21064,26.89099 -12.21064,26.89099 -18.17891,28.333144 -53.97424,45.875653 -85.7797,34.706343 -17.39351,-6.108185 -24.87916,-19.424773 -24.87916,-42.316033 0,-29.26533 66.72325,-113.959533 99.46578,-128.33633 23.13028,-6.88233 24.12398,12.203706 23.81074,30.18165 z m 270.92343,54.19331 c 10.82124,0.20172 22.63996,5.52156 30.62834,14.13962 24.75016,26.7011 22.05022,59.04154 6.8176,79.387553 -18.12144,24.20455 -63.83983,13.4674 -74.63749,-20.361053 -5.0168,-15.71732 3.94377,-54.65478 19.7914,-67.66452 4.78429,-3.92754 10.90741,-5.62263 17.40015,-5.5016 z m -88.01832,2.72509 c 1.5996,0.0385 3.23362,0.2796 4.88426,0.71984 20.93957,1.26543 25.38896,13.00621 29.20376,23.34323 9.61324,26.04922 7.2074,50.457293 -12.56677,70.441023 -29.61924,29.93307 -64.13302,16.70679 -64.00408,-23.6517
 33 0.61145,-28.7005 18.48897,-71.43043 42.48283,-70.85236 z m 77.84279,1.59392 c -15.96846,11.9459 -18.03722,42.61099 -3.35792,53.98765 5.77091,5.38776 8.97792,9.14035 25.54057,10.64328 11.37364,1.03207 29.32526,-10.50351 30.22132,-21.95498 0.40525,-5.17888 -0.52694,-13.85674 -13.02467,-27.91932 -10.46813,-11.77891 -24.09992,-14.518 -27.52481,-12.49429 -11.02187,6.51268 0.88457,11.69202 5.18952,15.99063 6.76723,6.75727 8.38973,9.71258 5.2404,11.72303 -6.2636,3.99857 -13.22593,3.42734 -15.51768,2.36517 -4.35707,-2.01937 -18.97459,-10.24517 -6.76673,-32.34117 z m 156.60138,0.10284 c 6.95636,10.838 8.96444,13.18184 16.73874,40.20794 10.03979,34.901745 22.78604,48.466303 34.03714,42.110363 30.83727,-17.420523 6.12661,-61.530613 -4.73162,-82.266883 6.95809,-0.0984 5.58036,0.28892 11.90537,0.20566 5.00874,19.62551 3.608,16.13524 16.99313,75.53129 16.0161,71.070523 18.41027,89.993063 -22.03002,121.909243 -18.58369,14.66657 -45.95753,15.43934 -69.44798,14.13962 l -26.50725,-3.90768 c 18.265
 76,-11.98044 22.70201,-23.20105 22.58968,-46.5322 53.24702,22.32422 81.62079,5.50673 92.95344,-21.90356 5.45697,-13.19877 3.56421,-30.61507 -1.67896,-61.28883 0.32863,24.9949 -0.21214,29.60153 -3.51056,41.95611 -6.61695,24.78449 -22.80827,31.70625 -33.83363,14.13962 -4.24259,-6.75969 -14.38417,-29.20948 -17.5019,-53.37064 -3.11772,-24.161213 -5.50729,-58.153723 -20.85984,-72.343453 1.67908,-3.34113 3.41642,-7.10317 4.88426,-8.5866 z m -51.94607,0.41133 c 10.74736,2.85598 23.82289,8.52721 30.85661,21.68335 9.71551,18.17221 16.14983,27.84463 15.62033,60.294373 -0.56527,34.64255 -14.1841,43.93582 -23.17498,45.22746 -11.61336,1.66837 -31.7463,1.42928 -43.7039,-66.584763 -3.96118,-22.53091 -11.19399,-43.9709 -18.77385,-51.00548 3.76415,-4.54387 4.06137,-3.975 6.86849,-8.48377 3.81797,4.17478 7.11476,11.23213 12.41414,32.39259 8.43235,33.67037 16.13233,40.620527 31.03536,42.521693 23.28236,2.97012 32.43743,-32.526513 13.27906,-57.998153 -4.20516,-5.59089 -15.20079,-12.78577 -20.98027,-9.8
 1447 0.33439,9.81798 4.72696,6.7343 4.77597,13.23301 -1.09709,7.72607 -2.21513,9.10835 -4.70641,13.34334 -5.91639,-2.32514 -8.78887,-3.24436 -13.95353,-12.13437 -6.52787,-12.90125 -2.28586,-25.01138 10.44298,-22.67481 z m -191.55432,3.18784 c -10.95551,7.71708 -24.72389,33.31716 -12.66853,56.24999 5.95324,8.52117 12.3732,15.500135 26.60901,12.494284 10.17214,-2.147824 27.94621,-14.160994 30.42483,-31.210004 2.12452,-14.61354 -19.00784,-42.82644 -30.78098,-36.24885 -13.62907,7.6145 -5.31656,13.07763 3.10354,21.28656 7.69871,7.50564 2.17071,12.03053 -3.20529,14.24246 -10.76144,4.42772 -16.79068,0.1178 -19.48614,-8.43236 -2.69544,-8.55018 -0.36879,-15.83297 6.00356,-28.38208 z m -119.46069,2.67368 c 2.34016,7.16684 4.21366,16.71192 9.10709,25.96548 1.15166,0.95711 5.47874,0.0505 11.19308,-6.52993 3.59895,-4.14446 7.68806,-9.91059 14.85627,-19.2813 4.36399,3.9724 4.74431,6.92722 5.95269,9.10077 3.01002,5.41428 9.35938,4.98656 11.34571,4.42185 7.01055,-6.93941 8.12367,-11.44112 12.77029,
 -12.03153 0.43162,8.97415 0.86624,14.56275 -10.73518,28.1764 -6.79577,7.97448 -17.21806,8.164648 -20.85983,7.14694 -5.01901,-1.402585 -8.27218,-4.496024 -16.18705,-8.529754 -10.7567,1.649919 -7.90622,13.117879 -5.99561,22.772214 5.03698,25.451933 20.88046,35.598553 34.69855,28.124993 4.8078,-2.60033 3.70798,-2.58471 12.9738,-6.37569 -1.55158,16.15299 -2.48089,19.28201 0.40702,37.3286 -22.53954,12.54495 -40.88385,10.37629 -45.89163,-21.08089 -3.80053,-26.360873 -10.88273,-58.352903 -17.29839,-64.836593 -6.05804,-6.12194 -8.54745,-8.12385 -8.54745,-8.12385 0,0 7.58937,-10.07268 12.21064,-16.24771 z m -296.41313,3.39351 c 31.37174,0.39121 66.74576,0.39802 104.40091,0.71983 -5.40726,13.23712 -7.26249,22.50641 -8.03866,35.58043 -17.57855,-6.80531 -78.17637,-28.49901 -96.36225,-36.30026 z m 863.44442,0.41133 c -41.53727,14.97073 -71.44761,26.55704 -111.52379,41.85328 -4.38379,-18.77362 -5.18602,-24.50354 -9.10709,-41.44194 66.69298,-0.19512 67.81873,-0.093 120.63088,-0.41134 z M 676.45485
 ,118.72046 c 4.36141,17.91207 10.51208,26.69056 10.51208,26.69056 8.41675,14.47977 18.93827,22.69893 35.01359,26.84064 3.53863,5.67134 4.78595,6.7896 6.18626,9.83973 1.53184,19.05472 0.42761,21.42153 -14.37313,32.26433 -8.68812,8.50703 -9.05854,20.69052 -0.0964,32.03267 9.63539,9.13361 19.76096,12.42877 57.28822,2.67367 7.25421,12.46712 17.39483,27.20062 32.3073,50.69698 -50.22842,-18.92757 -119.49557,-45.95037 -267.92165,-103.7077 0,0 -173.68384,67.43138 -266.80234,103.75912 38.94593,-61.43401 42.15913,-66.60904 69.855,-109.62064 9.37539,-3.65164 6.21591,-2.15318 14.551,-6.4271 19.12967,-10.18566 34.47824,-25.37398 42.83898,-47.71479 15.32853,34.56596 32.45023,38.53814 68.17603,27.30232 7.37119,-3.39413 15.8369,-8.34706 17.65454,-21.59506 19.14227,17.23743 59.66642,20.4245 89.23938,-15.88779 25.49868,29.83981 83.39187,32.67982 105.57111,-7.14694 z m 89.84991,35.99177 c 0,0 1.70301,5.38083 2.69651,7.0441 -4.23207,0.14101 -8.90358,0.0513 -8.90358,0.0513 2.11939,-1.74264 3.82601,-3.86
 946 6.20707,-7.09552 z"
-       id="path4019"
-       style="fill:#ffffff;fill-opacity:1" />
-  </g>
-</svg>

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/groovy-logo.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/groovy-logo.png b/site/src/site/assets/img/groovy-logo.png
deleted file mode 100644
index 54af4c1..0000000
Binary files a/site/src/site/assets/img/groovy-logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/icons-colset-2-its.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/icons-colset-2-its.png b/site/src/site/assets/img/icons-colset-2-its.png
deleted file mode 100644
index 6bd1819..0000000
Binary files a/site/src/site/assets/img/icons-colset-2-its.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logo.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logo.png b/site/src/site/assets/img/logo.png
deleted file mode 100644
index 42a050b..0000000
Binary files a/site/src/site/assets/img/logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/airbusgroup.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/airbusgroup.png b/site/src/site/assets/img/logos/airbusgroup.png
deleted file mode 100644
index 94244d3..0000000
Binary files a/site/src/site/assets/img/logos/airbusgroup.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/amadeus.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/amadeus.png b/site/src/site/assets/img/logos/amadeus.png
deleted file mode 100644
index d014cb0..0000000
Binary files a/site/src/site/assets/img/logos/amadeus.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/bestbuy.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/bestbuy.png b/site/src/site/assets/img/logos/bestbuy.png
deleted file mode 100644
index ed19a44..0000000
Binary files a/site/src/site/assets/img/logos/bestbuy.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/carfax.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/carfax.png b/site/src/site/assets/img/logos/carfax.png
deleted file mode 100644
index c5d1611..0000000
Binary files a/site/src/site/assets/img/logos/carfax.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/carriots.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/carriots.png b/site/src/site/assets/img/logos/carriots.png
deleted file mode 100644
index bcd11a8..0000000
Binary files a/site/src/site/assets/img/logos/carriots.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/cisco.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/cisco.png b/site/src/site/assets/img/logos/cisco.png
deleted file mode 100644
index 5478053..0000000
Binary files a/site/src/site/assets/img/logos/cisco.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/commerzbank.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/commerzbank.png b/site/src/site/assets/img/logos/commerzbank.png
deleted file mode 100644
index 02373ee..0000000
Binary files a/site/src/site/assets/img/logos/commerzbank.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/credit-suisse.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/credit-suisse.png b/site/src/site/assets/img/logos/credit-suisse.png
deleted file mode 100644
index 0e56711..0000000
Binary files a/site/src/site/assets/img/logos/credit-suisse.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/eads.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/eads.png b/site/src/site/assets/img/logos/eads.png
deleted file mode 100644
index 96ad83a..0000000
Binary files a/site/src/site/assets/img/logos/eads.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/energy-transfer.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/energy-transfer.png b/site/src/site/assets/img/logos/energy-transfer.png
deleted file mode 100644
index 8295b83..0000000
Binary files a/site/src/site/assets/img/logos/energy-transfer.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/epo.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/epo.png b/site/src/site/assets/img/logos/epo.png
deleted file mode 100644
index afbc383..0000000
Binary files a/site/src/site/assets/img/logos/epo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/fanniemae.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/fanniemae.png b/site/src/site/assets/img/logos/fanniemae.png
deleted file mode 100644
index 50eab52..0000000
Binary files a/site/src/site/assets/img/logos/fanniemae.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/google.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/google.png b/site/src/site/assets/img/logos/google.png
deleted file mode 100644
index 838abec..0000000
Binary files a/site/src/site/assets/img/logos/google.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/hypoport.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/hypoport.png b/site/src/site/assets/img/logos/hypoport.png
deleted file mode 100644
index 9d0f602..0000000
Binary files a/site/src/site/assets/img/logos/hypoport.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/ibm.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/ibm.png b/site/src/site/assets/img/logos/ibm.png
deleted file mode 100644
index 36d993d..0000000
Binary files a/site/src/site/assets/img/logos/ibm.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/jpmorganchase.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/jpmorganchase.png b/site/src/site/assets/img/logos/jpmorganchase.png
deleted file mode 100644
index 7fcb968..0000000
Binary files a/site/src/site/assets/img/logos/jpmorganchase.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/linkedin.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/linkedin.png b/site/src/site/assets/img/logos/linkedin.png
deleted file mode 100644
index f7742e9..0000000
Binary files a/site/src/site/assets/img/logos/linkedin.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/mastercard.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/mastercard.png b/site/src/site/assets/img/logos/mastercard.png
deleted file mode 100644
index 7bf5af4..0000000
Binary files a/site/src/site/assets/img/logos/mastercard.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/mtv.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/mtv.png b/site/src/site/assets/img/logos/mtv.png
deleted file mode 100644
index 5cf4594..0000000
Binary files a/site/src/site/assets/img/logos/mtv.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/mutual-of-omaha.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/mutual-of-omaha.png b/site/src/site/assets/img/logos/mutual-of-omaha.png
deleted file mode 100644
index a4c0aab..0000000
Binary files a/site/src/site/assets/img/logos/mutual-of-omaha.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/national-cancer-institute.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/national-cancer-institute.png b/site/src/site/assets/img/logos/national-cancer-institute.png
deleted file mode 100644
index 981b8b0..0000000
Binary files a/site/src/site/assets/img/logos/national-cancer-institute.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/nestle.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/nestle.png b/site/src/site/assets/img/logos/nestle.png
deleted file mode 100644
index 46a18af..0000000
Binary files a/site/src/site/assets/img/logos/nestle.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/netflix.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/netflix.png b/site/src/site/assets/img/logos/netflix.png
deleted file mode 100644
index fa9fbef..0000000
Binary files a/site/src/site/assets/img/logos/netflix.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/oracle.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/oracle.png b/site/src/site/assets/img/logos/oracle.png
deleted file mode 100644
index c793812..0000000
Binary files a/site/src/site/assets/img/logos/oracle.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/paterson-cancer-institute.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/paterson-cancer-institute.png b/site/src/site/assets/img/logos/paterson-cancer-institute.png
deleted file mode 100644
index 00f5103..0000000
Binary files a/site/src/site/assets/img/logos/paterson-cancer-institute.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/roche.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/roche.png b/site/src/site/assets/img/logos/roche.png
deleted file mode 100644
index bbdf528..0000000
Binary files a/site/src/site/assets/img/logos/roche.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/sas.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/sas.png b/site/src/site/assets/img/logos/sas.png
deleted file mode 100644
index af0d4e3..0000000
Binary files a/site/src/site/assets/img/logos/sas.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/sky.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/sky.png b/site/src/site/assets/img/logos/sky.png
deleted file mode 100644
index 53d4b0f..0000000
Binary files a/site/src/site/assets/img/logos/sky.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/smartthings.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/smartthings.png b/site/src/site/assets/img/logos/smartthings.png
deleted file mode 100644
index 2bc2603..0000000
Binary files a/site/src/site/assets/img/logos/smartthings.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/sony.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/sony.png b/site/src/site/assets/img/logos/sony.png
deleted file mode 100644
index c090ddd..0000000
Binary files a/site/src/site/assets/img/logos/sony.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/target.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/target.png b/site/src/site/assets/img/logos/target.png
deleted file mode 100644
index 777f26d..0000000
Binary files a/site/src/site/assets/img/logos/target.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/thales.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/thales.png b/site/src/site/assets/img/logos/thales.png
deleted file mode 100644
index 98095c1..0000000
Binary files a/site/src/site/assets/img/logos/thales.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/ubs.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/ubs.png b/site/src/site/assets/img/logos/ubs.png
deleted file mode 100644
index 62faa8c..0000000
Binary files a/site/src/site/assets/img/logos/ubs.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/vodafone.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/vodafone.png b/site/src/site/assets/img/logos/vodafone.png
deleted file mode 100644
index be1f96c..0000000
Binary files a/site/src/site/assets/img/logos/vodafone.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/voyages-sncf.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/voyages-sncf.png b/site/src/site/assets/img/logos/voyages-sncf.png
deleted file mode 100644
index e9c849a..0000000
Binary files a/site/src/site/assets/img/logos/voyages-sncf.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/walmart.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/walmart.png b/site/src/site/assets/img/logos/walmart.png
deleted file mode 100644
index 922d6db..0000000
Binary files a/site/src/site/assets/img/logos/walmart.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/logos/wells-fargo.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/logos/wells-fargo.png b/site/src/site/assets/img/logos/wells-fargo.png
deleted file mode 100644
index 830b1c2..0000000
Binary files a/site/src/site/assets/img/logos/wells-fargo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/videos/groovy-ecosystem-revisited.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/videos/groovy-ecosystem-revisited.png b/site/src/site/assets/img/videos/groovy-ecosystem-revisited.png
deleted file mode 100644
index 701475f..0000000
Binary files a/site/src/site/assets/img/videos/groovy-ecosystem-revisited.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/videos/groovy-puzzlers.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/videos/groovy-puzzlers.png b/site/src/site/assets/img/videos/groovy-puzzlers.png
deleted file mode 100644
index eaa26fc..0000000
Binary files a/site/src/site/assets/img/videos/groovy-puzzlers.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/img/videos/metaprogramming-part-1.png
----------------------------------------------------------------------
diff --git a/site/src/site/assets/img/videos/metaprogramming-part-1.png b/site/src/site/assets/img/videos/metaprogramming-part-1.png
deleted file mode 100644
index f643ecc..0000000
Binary files a/site/src/site/assets/img/videos/metaprogramming-part-1.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/js/plugins.js
----------------------------------------------------------------------
diff --git a/site/src/site/assets/js/plugins.js b/site/src/site/assets/js/plugins.js
deleted file mode 100644
index 728680b..0000000
--- a/site/src/site/assets/js/plugins.js
+++ /dev/null
@@ -1,24 +0,0 @@
-// Avoid `console` errors in browsers that lack a console.
-(function() {
-    var method;
-    var noop = function () {};
-    var methods = [
-        'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error',
-        'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log',
-        'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd',
-        'timeStamp', 'trace', 'warn'
-    ];
-    var length = methods.length;
-    var console = (window.console = window.console || {});
-
-    while (length--) {
-        method = methods[length];
-
-        // Only stub undefined methods.
-        if (!console[method]) {
-            console[method] = noop;
-        }
-    }
-}());
-
-// Place any jQuery/helper plugins in here.


[07/20] groovy-user-site git commit: move content to asf-site branch

Posted by pa...@apache.org.
http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/pages/download.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/pages/download.groovy b/site/src/site/pages/download.groovy
deleted file mode 100644
index 28c4842..0000000
--- a/site/src/site/pages/download.groovy
+++ /dev/null
@@ -1,323 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Download',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li(class: 'active') {
-                                    a(href: 'download.html') { strong('Download Groovy') }
-                                }
-                                li {
-                                    a(href: '#distro', class: 'anchor-link', 'Distributions')
-                                }
-                                li {
-                                    a(href: '#sdkman', class: 'anchor-link', 'Through SDKMAN!')
-                                }
-                                li {
-                                    a(href: '#buildtools', class: 'anchor-link', 'From your build tools')
-                                }
-                                li {
-                                    a(href: '#otherways', class: 'anchor-link', 'Other ways to get Groovy')
-                                }
-                                li {
-                                    a(href: '#requirements', class: 'anchor-link', 'System requirements')
-                                }
-                                li {
-                                    a(href: 'versioning.html', 'Groovy version scheme')
-                                }
-                                li {
-                                    a(href: 'indy.html', 'Invoke dynamic support')
-                                }
-                                li {
-                                    a(href: 'releases.html', 'Release notes')
-                                }
-                            }
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-cloud-download') {}
-                                yield ' Download'
-                            }
-                            def linkVersionToDownload = distributions.collect { it.packages }.flatten().find { it.stable }.version
-                            button(id: 'big-download-button', type: 'button', class: 'btn btn-default',
-                                    title: "Download Groovy ${linkVersionToDownload}",
-                                    onclick: "window.location.href=\"https://dl.bintray.com/groovy/maven/apache-groovy-sdk-${linkVersionToDownload}.zip\"") {
-                                i(class: 'fa fa-download') {}
-                                yield ' Download'
-                            }
-                            article {
-                                p {
-                                    yield 'In this download area, you will be able to download the '
-                                    a(href: '#distro', 'distribution')
-                                    yield ' (binary and source), the Windows installer (for some of the versions) and the documentation for Groovy.'
-                                }
-                                p {
-                                    yield 'All downloads (except the source download) are hosted in '
-                                    a(href: 'http://bintray.com/groovy/', 'Bintray\'s Groovy repository')
-                                    yield '. Registering on Bintray allows you to rate, review, and register for new version notifications.'
-                                    a(href: 'https://dl.bintray.com/groovy/maven/', '[direct link to the downloads]')
-                                }
-                                p {
-                                    yield 'For a quick and effortless start on Mac OSX, Linux or Cygwin, you can use '
-                                    a(href: 'http://sdkman.io/', 'SDKMAN! (The Software Development Kit Manager)')
-                                    yield ' to download and configure any Groovy version of your choice. Basic '
-                                    a(href: '#sdkman', 'instructions')
-                                    yield ' can be found below. '
-                                    br()
-                                    yield 'Windows users can use '
-                                    a(href: 'https://github.com/flofreud/posh-gvm', 'Posh-GVM')
-                                    yield ' (POwerSHell Groovy enVironment Manager), a PowerShell clone of the GVM CLI.'
-                                }
-                            }
-                            hr(class: 'divider')
-
-                            a(name: 'distro') {}
-                            article {
-                                h1 'Distributions'
-                                p 'You can download a binary, a source or a documentation bundle, as well as a bundle of all three.'
-
-                                distributions.each { dist ->
-                                    h2 {
-                                        i(class: 'fa fa-star') {}
-                                        yield " ${dist.name}"
-                                    }
-                                    if (dist.description) {
-                                        p {
-                                            dist.description.rehydrate(this, this, this)()
-                                        }
-                                    }
-                                    dist.packages.each { pkg ->
-                                        h3 "${pkg.version} distributions"
-                                        table(width: '100%', class: 'download-table') {
-                                            tr {
-                                                td {
-                                                    a(href: "https://dl.bintray.com/groovy/maven/apache-groovy-binary-${pkg.version}.zip") {
-                                                        i(class: 'fa fa-gears fa-4x') {}
-                                                        br()
-                                                        yield 'binary'
-                                                    }
-                                                }
-                                                td {
-                                                    a(href: "http://www.apache.org/dyn/closer.cgi/groovy/${pkg.version}/sources/apache-groovy-src-${pkg.version}.zip") {
-                                                        i(class: 'fa fa-code fa-4x') {}
-                                                        br()
-                                                        yield ' source'
-                                                    }
-                                                }
-                                                td {
-                                                    a(href: "https://dl.bintray.com/groovy/maven/apache-groovy-docs-${pkg.version}.zip") {
-                                                        i(class: 'fa fa-file-text fa-4x') {}
-                                                        br()
-                                                        yield ' documentation'
-                                                    }
-                                                }
-                                                td {
-                                                    a(href: "https://dl.bintray.com/groovy/maven/apache-groovy-sdk-${pkg.version}.zip") {
-                                                        i(class: 'fa fa-file-zip-o fa-4x') {}
-                                                        br()
-                                                        yield ' SDK bundle'
-                                                    }
-                                                }
-                                                if (pkg.windowsInstaller) {
-                                                    td {
-                                                        a(href: pkg.windowsInstaller) {
-                                                            i(class: 'fa fa-windows fa-4x') {}
-                                                            br()
-                                                            yield ' Windows installer'
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                        p {
-                                            yield 'Please consult the '
-                                            a(href: "changelogs/changelog-${pkg.version}.html", ' change log')
-                                            yield ' for details. Please read the '
-                                            a(href: "indy.html", 'invoke dynamic support information')
-                                            yield ' if you like to use Groovy on JDK 7+.'
-                                        }
-                                    }
-                                }
-                                article {
-                                    h3 'Changelog'
-
-                                    p {
-                                        yield 'You can also read the changelogs for '
-                                        a(href: "changelogs.html", 'other versions')
-                                        yield '.'
-                                    }
-                                }
-                            }
-
-                            hr(class: 'divider')
-
-                            a(name: 'sdkman') {}
-                            article {
-                                h1 'SDKMAN! (The Software Development Kit Manager)'
-                                p {
-                                    yield 'This tool makes installing Groovy on any Bash platform (Mac OSX, Linux, Cygwin, Solaris or FreeBSD) very easy.'
-                                    br()
-                                    yield 'Simply open a new terminal and enter:'
-                                }
-                                pre { code '$ curl -s get.sdkman.io | bash' }
-                                p {
-                                    yield 'Follow the instructions on-screen to complete installation.'
-                                    br()
-                                    yield 'Open a new terminal or type the command:'
-                                }
-                                pre { code '$ source "$HOME/.sdkman/bin/sdkman-init.sh"' }
-                                p 'Then install the latest stable Groovy:'
-                                pre { code '$ sdk install groovy' }
-                                p 'After installation is complete and you\'ve made it your default version, test it with:'
-                                pre { code '$ groovy -version' }
-                                p 'That\'s all there is to it!'
-                            }
-                            hr(class: 'divider')
-
-                            a(name: 'buildtools') {}
-                            article {
-                                h1 'From your build tools'
-                                p 'If you wish to add Groovy as a dependency in your projects, you can refer to the Groovy JARs in the dependency section of your project build file descriptor:'
-                                table(class: 'table') {
-                                    thead {
-                                        tr {
-                                            th 'Gradle'
-                                            th 'Maven'
-                                            th 'Explanation'
-                                        }
-                                    }
-                                    tbody {
-                                        tr {
-                                            td {
-                                                code 'org.codehaus.groovy:groovy:x.y.z'
-                                            }
-                                            td {
-                                                code '&lt;groupId&gt;org.codehaus.groovy&lt;/groupId&gt;'
-                                                br()
-                                                code '&lt;artifactId&gt;groovy&lt;/artifactId&gt;'
-                                                br()
-                                                code '&lt;version&gt;x.y.z&lt;/version&gt;'
-                                            }
-                                            td 'Just the core of Groovy without the modules (see below). Also includes jarjar\'ed versions of Antlr, ASM, and Commons-CLI.'
-                                        }
-                                        tr {
-                                            td {
-                                                code 'org.codehaus.groovy:groovy-$module:x.y.z'
-                                            }
-                                            td {
-                                                code '&lt;groupId&gt;org.codehaus.groovy&lt;/groupId&gt;'
-                                                br()
-                                                code '&lt;artifactId&gt;groovy-$module&lt;/artifactId&gt;'
-                                                br()
-                                                code '&lt;version&gt;x.y.z&lt;/version&gt;'
-                                            }
-                                            td {
-                                                code '"$module"'
-                                                yield ' stands for the different optional groovy modules "ant", "bsf", "console", "docgenerator", "groovydoc", "groovysh", "jmx", "json", "jsr223", "nio", "servlet", "sql", "swing", "test", "templates", "testng" and "xml".'
-                                                br()
-                                                yield 'Example: '
-                                                code '&lt;artifactId&gt;groovy-sql&lt;/artifactId&gt;'
-                                            }
-                                        }
-                                        tr {
-                                            td {
-                                                code 'org.codehaus.groovy:groovy-all:x.y.z'
-                                            }
-                                            td {
-                                                code '&lt;groupId&gt;org.codehaus.groovy&lt;/groupId&gt;'
-                                                br()
-                                                code '&lt;artifactId&gt;groovy-all&lt;/artifactId&gt;'
-                                                br()
-                                                code '&lt;version&gt;x.y.z&lt;/version&gt;'
-                                            }
-                                            td 'The core plus all the modules. Also includes <em>jarjar\'ed</em> versions of Antlr, ASM, Commons-CLI.\n' +
-                                                    'Optional dependencies are marked as optional.\n' +
-                                                    'You may need to include some of the optional dependencies to use some features of Groovy, e.g. AntBuilder, GroovyMBeans...'
-                                        }
-                                    }
-                                }
-                                h3 'Maven repositories'
-                                p "Groovy releases are downloadable from ${$a(href:'http://repo1.maven.org/maven2/org/codehaus/groovy/','Maven Central')} or ${$a(href:'http://jcenter.bintray.com/org/codehaus/groovy/','JCenter')}."
-                                p "Groovy snapshots are downloadable from ${$a(href:'https://oss.jfrog.org/oss-snapshot-local/org/codehaus/groovy','JFrog OpenSource Snapshots repository')}."
-                            }
-                            hr(class: 'divider')
-
-                            a(name: 'otherways') {}
-                            article {
-                                h1 'Other ways to get Groovy'
-                                p {
-                                    yield 'If you\'re on MacOS and have '
-                                    a(href: 'http://brew.sh/', 'Homebrew')
-                                    yield ' installed, you can install Groovy with:'
-                                    pre { code 'brew install groovy' }
-                                    yield 'If you\'re on MacOS and have '
-                                    a(href: 'http://www.macports.org/', 'MacPorts')
-                                    yield ' installed, you can install Groovy with:'
-                                    pre { code 'sudo port install groovy' }
-                                    yield 'If you\'re using Docker, Groovy is available on '
-                                    a(href: 'https://hub.docker.com/_/groovy/', 'Docker Hub')
-                                    yield '.'
-                                    br()
-                                    yield 'If you prefer to live on the bleeding edge, you can also grab the '
-                                    a(href: 'https://github.com/apache/groovy', 'source code from GitHub')
-                                    yield '.'
-                                    br()
-                                    yield 'If you are an IDE user, you can just grab the latest '
-                                    a(href: 'ides.html', 'IDE plugin')
-                                    yield ' and follow the plugin installation instructions.'
-                                }
-                            }
-                            a(name: 'requirements') {}
-                            article {
-                                h1 'System requirements'
-                                p {
-                                    table(class: 'table') {
-                                        thead {
-                                            tr {
-                                                th 'Groovy'
-                                                th 'JVM Required (non-indy)'
-                                                th 'JVM Required (indy) *'
-                                            }
-                                        }
-                                        tbody {
-                                            tr {
-                                                td { b '2.5 - current' }
-                                                td '1.7+'
-                                                td '1.7+'
-                                            }
-                                            tr {
-                                                td { b '2.3 - 2.4' }
-                                                td '1.6+'
-                                                td '1.7+'
-                                            }
-                                            tr {
-                                                td { b '2.0 - 2.2' }
-                                                td '1.5+'
-                                                td '1.7+'
-                                            }
-                                            tr {
-                                                td { b '1.6 - 1.8' }
-                                                td '1.5+'
-                                                td 'N/A'
-                                            }
-                                            tr {
-                                                td { b '1.0 - 1.5' }
-                                                td '1.4+'
-                                                td 'N/A'
-                                            }
-                                        }
-                                    }
-                                    yield '* If you plan to use invoke dynamic support, please read the '
-                                    a(href: "indy.html", 'support information')
-                                    yield '.'
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/pages/ecosystem.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/pages/ecosystem.groovy b/site/src/site/pages/ecosystem.groovy
deleted file mode 100644
index 18fda88..0000000
--- a/site/src/site/pages/ecosystem.groovy
+++ /dev/null
@@ -1,59 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Ecosystem',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                section(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li(class: 'active') { a(href: 'ecosystem.html') { strong('Ecosystem') } }
-                                ecosys.keySet().each { name ->
-                                    li { a(href: "#$name", class: 'anchor-link', name) }
-                                }
-                            }
-                        }
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-leaf') {}
-                                yield ' Ecosystem'
-                            }
-                            p {
-                                yield '''
-                                        Beside the language and its API, Groovy gave birth to a fruitful ecosystem of projects around it,
-                                        on various themes such as web frameworks, desktop application framework, concurrency, testing, and more.
-                                        In this section, we'll highlight a few of the most well-known and successful projects,
-                                        which leverage Groovy at their core.
-                            '''
-                            }
-                            hr(class: 'divider')
-
-                            ecosys.eachWithIndex { e, index ->
-                                def (name, item) = [e.key, e.value]
-                                article {
-                                    a(name: "${name}") {}
-                                    div(class:"content-heading clearfix media") {
-                                        div {
-                                            if (item.logo) {
-                                                img class: "pull-${(index % 2 == 0) ? 'left' : 'right'}", src: item.logo, alt: name, hspace: '20px'
-                                            } else {
-                                                h2(name)
-                                            }
-                                            p(item.description)
-                                        }
-                                        a(href: item.url, target:'_blank', "Learn more...")
-                                    }
-                                }
-                                hr(class: 'divider')
-                            }
-                            article {
-                                p """
-                                    There are of course many other projects using or built with the Groovy programming language.
-                                    For instance, you can find some more by having a look at the ${$a(href:'https://github.com/trending?l=groovy', 'trending Groovy projects')} on Github.
-                                """
-                            }
-                        }
-                    }
-                }
-            }
-        }

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/pages/events.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/pages/events.groovy b/site/src/site/pages/events.groovy
deleted file mode 100644
index 071a86a..0000000
--- a/site/src/site/pages/events.groovy
+++ /dev/null
@@ -1,61 +0,0 @@
-import model.Event
-
-/**
- * This template is generating the events page.
- * If you want to add a new event, please edit the "allEvents" section in src/site/sitemap.groovy
- */
-
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Events',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            include template: 'includes/community-navbar.groovy'
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-calendar') {}
-                                yield ' Events'
-                            }
-                            article {
-                                p '''
-                                    Groovy and its ecosystem are often represented at various Java-oriented conferences,
-                                    but there are also events fully dedicated to the Groovy ecosystem.
-                                    Here are upcoming ones you might be interested in learning about.
-                                '''
-                                hr(class: 'divider')
-                                allEvents.each {
-                                    String eventName = it.key
-                                    Event event = it.value
-                                    div(class: 'event-logo') {
-                                        img(src: "${event.logo}", class:'event-logo', alt:"${eventName}")
-                                    }
-                                    h2 {
-                                        a(href: event.url, eventName)
-                                    }
-
-                                    h3 {
-                                        i(class: 'fa fa-globe') {}
-                                        yieldUnescaped " &nbsp;${event.location} &nbsp; &mdash; &nbsp; "
-                                        i(class: 'fa fa-calendar') {}
-                                        yieldUnescaped " &nbsp;"
-                                        em event.date
-                                    }
-                                    div {
-                                        yieldUnescaped event.description
-                                    }
-                                    hr(class: 'divider')
-                                }
-                            }
-
-                        }
-                    }
-                }
-            }
-        }
-
-

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/pages/faq.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/pages/faq.groovy b/site/src/site/pages/faq.groovy
deleted file mode 100644
index c69ae66..0000000
--- a/site/src/site/pages/faq.groovy
+++ /dev/null
@@ -1,52 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - FAQ - Frequently Asked Questions',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li {
-                                    a(href: 'documentation.html', 'Documentation')
-                                }
-                                docSections.each { section ->
-                                    li { a(href: "documentation.html#${section.anchor}", class: 'anchor-link', section.name) }
-                                }
-                                li {
-                                    a(href: "documentation.html#all-versions", class: 'anchor-link', 'Documentation for other versions')
-                                }
-                                li(class: 'active') {
-                                    a(href: 'faq.html') { strong('FAQ') }
-                                }
-                            }
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-question-circle') {}
-                                yieldUnescaped ' Frequently Asked Questions'
-                            }
-                            hr(class: 'divider')
-                            article {
-                                h2 'Is Groovy an Open Source project?'
-                                p {
-                                    yield 'Yes, Groovy is an Open Source programming language project, licensed under the '
-                                    a(href: 'http://www.apache.org/licenses/LICENSE-2.0', 'Apache License v2')
-                                    yield '. You can see the license header in all the source files of the project, as well as a '
-                                    a(href: 'https://github.com/apache/groovy/blob/master/LICENSE', 'license file')
-                                    yield ' at the root of the project'
-                                }
-
-                                h2 'What are the differences between Groovy and Java?'
-                                p {
-                                    yield 'Learn more about the '
-                                    a(href: 'differences.html', 'differences between Groovy and Java')
-                                    yield '.'
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/pages/gdk.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/pages/gdk.groovy b/site/src/site/pages/gdk.groovy
deleted file mode 100644
index 8895762..0000000
--- a/site/src/site/pages/gdk.groovy
+++ /dev/null
@@ -1,2 +0,0 @@
-layout 'layouts/iframedoc.groovy', true,
-        pageTitle: "The Apache Groovy programming language - Groovy APIs"

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/pages/groovy-weekly.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/pages/groovy-weekly.groovy b/site/src/site/pages/groovy-weekly.groovy
deleted file mode 100644
index 20d373a..0000000
--- a/site/src/site/pages/groovy-weekly.groovy
+++ /dev/null
@@ -1,103 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Groovy newsletter',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            include template: 'includes/community-navbar.groovy'
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-envelope-o') {}
-                                yield ' Groovy Newsletter '
-                            }
-                            article {
-                                p 'Once in a while, receive a newsletter, directly in your inbox, with all the news ' +
-                                        'of the Groovy ecosystem: the latest releases, interesting articles, interviews, ' +
-                                        'presentations, relevant tweets or Google+ posts, links to podcasts or screencasts, ' +
-                                        'code snippets, books, upcoming events, and more.'
-                                p 'The Groovy newsletter is the best way to stay up-to-date with all things Groovy!'
-                                p {
-                                    yield 'This newsletter is powered by '
-                                    a(href: "http://eepurl.com/XXyCD", 'MailChimp')
-                                    yield '.'
-                                }
-                            }
-                            hr(class: 'divider')
-
-                            a(name: 'subscribe') {}
-                            h2 {
-                                i(class: 'fa fa-envelope') {}
-                                yield ' Subscribe to the newsletter'
-                            }
-                            article {
-                                p 'To subscribe to the newsletter, please fill in the form below.'
-                                p 'Please note that all fields are required.'
-                            }
-                            div(id: 'mc_embed_signup') {
-                                form(action: 'http://appspot.us4.list-manage2.com/subscribe/post?u=cb8b56e9d6a1cb1696cecc673&amp;id=1a76961630',
-                                        method: 'post', id: 'mc-embedded-subscribe-form', name: 'mc-embedded-subscribe-form',
-                                        class: 'validate', target: '_blank', novalidate: true, role: 'form') {
-                                    div(class: 'form-group') {
-                                        label(for: 'mce-EMAIL', 'Email address')
-                                        input(type: 'email', value: '', class: 'required email form-control', id: 'mce-EMAIL')
-                                    }
-                                    div(class: 'form-group') {
-                                        label(for: 'mce-MNAME', 'First name')
-                                        input(type: 'text', value: '', class: 'required required email form-control', id: 'mce-FNAME')
-                                    }
-                                    div(class: 'form-group') {
-                                        label(for: 'mce-LNAME', 'Last name')
-                                        input(type: 'text', value: '', class: 'required required email form-control', id: 'mce-LNAME')
-                                    }
-                                    div(class: 'form-group') {
-                                        label(for: 'mce-COMPANY', 'Company')
-                                        input(type: 'text', value: '', class: 'required required email form-control', id: 'mce-COMPANY')
-                                    }
-                                    div(class: 'form-group radio') {
-                                        div {
-                                            strong 'Email format '
-                                        }
-                                        label(class: 'radio-inline') {
-                                            input(type: 'radio', value: 'html', name: 'EMAILTYPE', id: 'mce-EMAILTYPE-0', checked: 'checked')
-                                            span 'html'
-                                        }
-                                        label(class: 'radio-inline') {
-                                            input(type: 'radio', value: 'text', name: 'EMAILTYPE', id: 'mce-EMAILTYPE-1')
-                                            span 'text'
-                                        }
-                                    }
-                                    div(id: 'mce-responses', class: 'clear') {
-                                        div(class: 'response', id: 'mce-error-response', style: 'display-none') {}
-                                        div(class: 'response', id: 'mce-success-response', style: 'display-none') {}
-                                    }
-                                    div(style: 'position: absolute; left: -5000px') {
-                                        input(type: 'text', name: 'b_cb8b56e9d6a1cb1696cecc673_1a76961630', tabindex: '-1', value: '')
-                                    }
-                                    br()
-                                    div(class: 'clear form-group') {
-                                        input(type: 'submit', value: 'Subscribe', name: 'subscribe', id: 'mc-embedded-subscribe', class: 'btn btn-default')
-                                    }
-                                }
-                            }
-                            hr(class: 'divider')
-
-                            a(name: 'archives') {}
-                            h2 {
-                                i(class: 'fa fa-archive') {}
-                                yield ' Archives'
-                            }
-                            article {
-                                p {
-                                    a(href: 'http://us4.campaign-archive2.com/home/?u=cb8b56e9d6a1cb1696cecc673&id=1a76961630',
-                                            'View past editions of the Groovy newsletter.')
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/pages/index.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/pages/index.groovy b/site/src/site/pages/index.groovy
deleted file mode 100644
index 5775562..0000000
--- a/site/src/site/pages/index.groovy
+++ /dev/null
@@ -1,44 +0,0 @@
-import model.Event
-
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language',
-        mainContent: contents {
-            div(id: 'band', class: 'band') {
-
-            }
-            div(id: 'content') {
-                include unescaped: 'html/index.html'
-
-                def firstTreeEvents = allEvents.keySet().take(3)
-                section(class: 'row colset-3-article first-event-row') {
-                    h1 { strong "Groovy and Grails events you shouldn't miss!" }
-                    firstTreeEvents.each { String eventName ->
-                        Event event = allEvents[eventName]
-                        article {
-                            div(class: 'content') {
-                                // Note that the event image should be 257x180 to look nice
-                                div(class: 'event-img', style: "background-image: url(${event.logo})") {}
-                                h1 {
-                                    a(href: event.url) {
-                                        strong eventName
-                                        br()
-                                        em event.location
-                                    }
-                                }
-                                time event.date
-                                yieldUnescaped event.description
-                            }
-                        }
-                    }
-                }
-                section(class: 'row  last-event-row') {
-                    p(class: 'text-center') {
-                        yield "For more events see the "
-                        a(href: relative("events.html")) { strong('Events') }
-                        yield " page"
-                    }
-                }
-
-            }
-            include unescaped: 'html/they-use-groovy.html'
-        }

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/pages/indy.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/pages/indy.groovy b/site/src/site/pages/indy.groovy
deleted file mode 100644
index 2d3aedc..0000000
--- a/site/src/site/pages/indy.groovy
+++ /dev/null
@@ -1,174 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Versioning',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li {
-                                    a(href: 'download.html', 'Download Groovy')
-                                }
-                                li {
-                                    a(href: 'download.html#distro', class: 'anchor-link', 'Distributions')
-                                }
-                                li {
-                                    a(href: 'download.html#sdkman', class: 'anchor-link', 'Through SDKMAN!')
-                                }
-                                li {
-                                    a(href: 'download.html#buildtools', class: 'anchor-link', 'From your build tools')
-                                }
-                                li {
-                                    a(href: 'download.html#otherways', class: 'anchor-link', 'Other ways to get Groovy')
-                                }
-                                li {
-                                    a(href: 'versioning.html', 'Groovy version scheme')
-                                }
-                                li(class: 'active') {
-                                    a(href: 'indy.html') {
-                                        strong 'Invoke dynamic support'
-                                    }
-                                }
-                            }
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-gear') {}
-                                yield ' Invoke dynamic support'
-                            }
-                            article {
-                                h2 'Introduction'
-                                p '''
-                                    Since Groovy 2.0, we added support for the JVM invokedynamic instruction.
-                                    This instruction is supported since Java 7 and is a new bytecode instruction in the JVM
-                                    that allows easier implementation of dynamic languages.
-                                    This instruction is used internally, by the JVM, for the lambda support in Java 8.
-                                '''
-                                p '''
-                                    This means that unlike APIs, AST transformations or syntactic sugar,
-                                    this feature is not visible to the developer or the end user.
-                                    It is a compilation and runtime feature only.
-                                    This means that given two programs written in Groovy,
-                                    you have the choice to compile it with or without invokedynamic support.
-                                    Whatever you choose, it comes with pros and cons.
-                                '''
-                                ul {
-                                    li {
-                                        yield 'classes compiled with invokedynamic can only be used on JDK 1.7+'
-                                        ul {
-                                            li 'without invokedynamic, Groovy classes are still compatible with JDK 1.5+'
-                                        }
-                                    }
-                                    li 'call site caching, as implemented in "normal" Groovy is replaced with invokedynamic since Groovy 2.1'
-                                    li 'it is possible to mix classes compiled with and without invokedynamic in the same project, as long as you run JDK 1.7+'
-                                    li 'depending on the JVM (even different minor versions of the JVM), you can target close to Java performance for dynamic Groovy with invokedynamic support activated'
-                                }
-
-                                h2 'JDK version'
-                                p '''
-                                    All JDK 7 versions ranging from 7u21 to 7u55 are buggy with regards to invokedynamic.
-                                    If you plan to use invokedynamic support, make sure you either use 7u60 or JDK 8.
-                                '''
-
-                                h2 'The distributions'
-                                h3 'Two JARs'
-                                p 'The Groovy distribution comes with two jars:'
-                                ul {
-                                    li {
-                                        code 'groovy-x.y.z.jar'
-                                        yield ': compatible with JDK 1.5+, makes use of call site caching'
-                                    }
-                                    li {
-                                        code 'groovy-x-y-z-indy.jar'
-                                        yield ': compatible with JDK 1.7+ only, has invokedynamic support bundled, old call site caching still possible'
-                                    }
-                                }
-                                p '''
-                                    The first jar is Groovy compiled without invokedynamic support, while the second one has invokedynamic support bundled.
-                                    As Groovy core and the groovy modules are sometimes written in Groovy, we currently have no choice but issuing two distinct versions of Groovy.
-                                    This means that if you pick the "normal" jar, the groovy classes of groovy itself are compiled with call site caching (1.5+),
-                                    while if you use the "indy" jar, the groovy classes of groovy itself are compiled using invokedynamic.
-                                    This means that the invokedynamic version of Groovy doesn't make use of the old call site caching mechanism.
-                                '''
-                                p 'Both jars contain a fully working groovy implementation. They are mutually exclusive (don\'t put both on classpath).'
-
-                                h3 'Command-line and indy'
-                                p '''
-                                    If you download the distribution and that you use the command line,
-                                    it's always the "normal" version of Groovy which is picked up in classpath.
-                                    This means that whatever command you use (groovy, groovyc, groovysh or groovyConsole), invokedynamic support is not available out of the box.
-                                    To use the invokedynamic version, you have to switch the jars manually.
-                                    The distribution makes use of the jars in the lib directory, while the indy jars are available in the indy directory.
-                                    You have three things to do:
-                                '''
-                                ul {
-                                    li 'remove or rename the groovy-*.jar files in the lib directory'
-                                    li 'replace them with the indy version from the indy directory'
-                                    li 'remove the -indy classifier from jar names'
-                                }
-                                p "Here's a bash script that would do it all at once:"
-                                pre { code '$ for f in `ls lib/groovy*.jar | cut -d/ -f2`;do k=`basename $f .jar`; mv lib/$k.jar lib/$k.jar.old; cp indy/$k-indy.jar lib/$k.jar ; done' }
-
-                                h3 'Running groovy script from command line'
-                                p '''
-                                    The usual way to run a script from the command line is by "groovy foo.groovy", where foo.groovy is the groovy program in source form.
-                                    To use indy for this you have to use the indy distribution and "groovy --indy foo.groovy".
-                                    Doing this without the indy distribution will result in an error message.
-                                '''
-
-                                h3 'The compilation flag'
-                                p '''
-                                    Independently of the jar version that you use (and after having exchanged the jars as described), invokedynamic support requires a specific compilation flag (indy).
-                                    If you want to compile your classes with invokedynamic support, this flag must be set at compile time.
-                                    The following tables show you what happens with user compiled classes and groovy core classes depending on the jar you use and the compilation flag:
-                                '''
-                                p 'For user compiled classes:'
-                                table(class: 'table') {
-                                    tr {
-                                        th 'indy flag'
-                                        th 'off'
-                                        th 'on'
-                                    }
-                                    tr {
-                                        td 'normal jar'
-                                        td 'call site caching'
-                                        td 'N/A'
-                                    }
-                                    tr {
-                                        td 'indy jar'
-                                        td 'call site caching'
-                                        td 'invokedynamic'
-                                    }
-                                }
-
-                                p 'For core Groovy classes:'
-                                table(class: 'table') {
-                                    tr {
-                                        th 'indy flag'
-                                        th 'off'
-                                        th 'on'
-                                    }
-                                    tr {
-                                        td 'normal jar'
-                                        td 'call site caching'
-                                        td 'N/A'
-                                    }
-                                    tr {
-                                        td 'indy jar'
-                                        td 'invokedynamic'
-                                        td 'invokedynamic'
-                                    }
-                                }
-                                p '''
-                                    So even if you use the indy jar, if you don't use the invokedynamic flag at compile time,
-                                    then the compiled classes will use the "old" format, meaning they will use the JDK1.5+ classes without invokedynamic.
-                                '''
-                            }
-                            hr(class: 'divider')
-                        }
-                    }
-                }
-            }
-        }

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/pages/learn.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/pages/learn.groovy b/site/src/site/pages/learn.groovy
deleted file mode 100644
index 70858ce..0000000
--- a/site/src/site/pages/learn.groovy
+++ /dev/null
@@ -1,193 +0,0 @@
-import model.Book
-import model.Video
-import model.Course
-
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Learn',
-        extraStyles: ['book.css'],
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li(class: 'active') {
-                                    a(href: '#') { strong('Learn') }
-                                }
-                                li {
-                                    a(href: '#books', class: 'anchor-link', 'Books')
-                                }
-                                li {
-                                    a(href: '#videos', class: 'anchor-link', 'Presentations')
-                                }
-                                li {
-                                    a(href: '#courses', class: 'anchor-link', 'Courses')
-                                }
-                            }
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-graduation-cap') {}
-                                yield ' Learn'
-                            }
-                            article {
-                                p 'Welcome to the learning section of the Groovy website.'
-                                p """
-                                    First of all, you will need to ${$a(href: 'documentation.html#gettingstarted', 'get started')}
-                                    by installing Groovy on your system or project.
-                                """
-                                p """
-                                    Once all set up, we invite you to have a look at the Groovy
-                                    ${$a(href: 'documentation.html', 'documentation')}, which explains all the
-                                    ${$a(href: 'documentation.html#languagespecification', 'details of the language')}, such as how to use the
-                                    ${$a(href: 'documentation.html#tools', 'tools')}
-                                    that come with a Groovy installation, and how to tackle more complex tasks with the various
-                                    ${$a(href: 'documentation.html#groovymoduleguides', 'module user guides')}.
-                                """
-                                p """
-                                    But there are other ways to learn more about Groovy, thanks to ${$a(href: '#books', 'books')}
-                                    and ${$a(href: '#videos', 'presentations')} given about Groovy at conferences.
-                                """
-                                hr(class: 'divider')
-
-                                a(name: 'books') {}
-                                h2 {
-                                    i(class: 'fa fa-book') {}
-                                    yield ' Books'
-                                }
-                                p '''
-                                    Another great approach to learning Groovy is to read the various books published
-                                    on the language:'''
-
-                                allBooks.each {
-                                    String title = it.key
-                                    Book book = it.value
-
-                                    figure(class: 'book') {
-                                        ul(class: 'hardcover_front') {
-                                            li {
-                                                img(src: book.cover, width: '100%', height: '100%')
-                                            }
-                                            li {}
-                                        }
-                                        ul(class: 'page') {
-                                            li {}
-                                            li {
-                                                a(class: 'book-btn', href: book.url, target: '_blank', 'More info')
-                                            }
-                                            3.times { li {} }
-                                        }
-                                        ul(class: 'hardcover_back') {
-                                            2.times { li {} }
-                                        }
-                                        ul(class: 'book_spine') {
-                                            2.times { li {} }
-                                        }
-                                        figcaption {
-                                            h1 { a(href: book.url, book.title) }
-                                            span "By ${book.authors}"
-                                            p book.description
-                                        }
-                                    }
-                                }
-
-                                hr(class: 'divider')
-
-                                a(name: 'videos') {}
-                                h2 {
-                                    i(class: 'fa fa-film') {}
-                                    yield ' Presentations'
-                                }
-                                p """
-                                    Many Groovy-related presentations have been recorded at ${$a(href: 'events.html', 'conferences')}
-                                    that you might wish to have a look at, to learn more about Groovy, delve into particular topics, and more.
-                                """
-                                p """
-                                    Below are a few selected presentations given at the
-                                    ${$a(href: 'http://springone2gx.com/', 'SpringOne2GX')},
-                                    ${$a(href: 'http://gr8conf.eu/', 'GR8Conf')} and
-                                    ${$a(href: 'http://greach.es/', 'Greach')} conferences.
-                                """
-
-                                videos.each { Video video ->
-                                    div(class: 'presentations') {
-                                        a(href: video.videoUrl) {
-                                            img(class: 'screenshot', src: "img/videos/${video.pictureUrl}")
-                                        }
-                                        div(class: 'metadata') {
-                                            a(href: video.videoUrl) {
-                                                h1(class: 'title', video.title)
-                                            }
-                                            span(class: 'speaker', "By ${video.speaker}")
-                                            if(video.slidesUrl || video.codeUrl) {
-                                                p(class: 'urls') {
-                                                    if (video.slidesUrl) {
-                                                        i(class: 'fa fa-photo') {}
-                                                        yield ' '
-                                                        a(href: video.slidesUrl, 'slides')
-                                                    }
-                                                    if (video.slidesUrl && video.codeUrl) yield ' | '
-                                                    if (video.codeUrl) {
-                                                        i(class: 'fa fa-code') {}
-                                                        yield ' '
-                                                        a(href: video.codeUrl, 'source code')
-                                                    }
-                                                }
-                                            }
-                                            div(class: 'summary') {
-                                                yieldUnescaped video.summary
-                                            }
-                                        }
-                                    }
-                                }
-
-                                p "You can find more presentations:"
-                                ul {
-                                    li {
-                                        a(href: 'https://www.youtube.com/channel/UCJXNOMywewNmau4hzAy4LjA/videos', 'GR8Conf YouTube channel')
-                                    }
-                                    li {
-                                        a(href: 'https://www.youtube.com/user/GR8ConfUS/videos', 'GR8Conf US YouTube channel')
-                                    }
-                                    li {
-                                        a(href: 'https://www.youtube.com/user/TheGreachChannel/videos', 'Greach YouTube channel')
-                                    }
-                                }
-
-                                hr(class: 'divider')
-
-                                a(name: 'courses') {}
-                                h2 {
-                                    i(class: 'fa fa-film') {}
-                                    yield ' Courses'
-                                }
-                                p '''
-                                    Another great resource for learning Groovy is by watching a course. You could spend time hunting down
-                                    various videos on the web but these courses have all the information you need packed into one place.
-                                  '''
-
-                                courses.each { Course course ->
-                                    div(class: 'courses') {
-                                        a(href: course.url, target: "_blank") {
-                                            img(class: 'screenshot', src: "img/courses/${course.cover}")
-                                        }
-                                        div(class: 'metadata') {
-                                            a(href: course.url, target: '_blank') {
-                                                h1(class: 'title', course.title)
-                                            }
-                                            span(class: 'instructor', "By ${course.instructor}")
-                                            div(class: 'description') {
-                                                yieldUnescaped course.description
-                                            }
-                                        }
-                                    }
-                                }
-
-                            }
-                        }
-                    }
-                }
-            }
-        }

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/pages/mailing-lists.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/pages/mailing-lists.groovy b/site/src/site/pages/mailing-lists.groovy
deleted file mode 100644
index d22d906..0000000
--- a/site/src/site/pages/mailing-lists.groovy
+++ /dev/null
@@ -1,76 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Mailing-lists',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            include template: 'includes/community-navbar.groovy'
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-envelope-o') {}
-                                yield ' Mailing-lists'
-                            }
-                            p '''The Groovy mailing-lists is the main means of interaction with the Groovy developers and Groovy users.'''
-                            hr(class: 'divider')
-
-                            article {
-                                h1 'Available lists'
-                                table(class: 'table') {
-                                    tr {
-                                        td {
-                                            strong 'users@groovy.apache.org'
-                                        }
-                                        td 'high volume list for questions and general discussion about Groovy'
-                                        td { a(href: 'mailto:users-subscribe@groovy.apache.org', 'Subscribe') }
-                                        td { a(href: 'http://mail-archives.apache.org/mod_mbox/groovy-users/', 'Archive') }
-                                        td { a(href: 'mailto:users-unsubscribe@groovy.apache.org', 'Unsubscribe') }
-                                    }
-                                    tr {
-                                        td {
-                                            strong 'dev@groovy.apache.org'
-                                        }
-                                        td 'medium volume list useful for those interested in ongoing developments'
-                                        td { a(href: 'mailto:dev-subscribe@groovy.apache.org', 'Subscribe') }
-                                        td { a(href: 'http://mail-archives.apache.org/mod_mbox/groovy-dev/', 'Archive') }
-                                        td { a(href: 'mailto:dev-unsubscribe@groovy.apache.org', 'Unsubscribe') }
-                                    }
-                                    tr {
-                                        td {
-                                            strong 'commits@groovy.apache.org'
-                                        }
-                                        td 'medium volume list that logs commits'
-                                        td { a(href: 'mailto:commits-subscribe@groovy.apache.org', 'Subscribe') }
-                                        td { a(href: 'http://mail-archives.apache.org/mod_mbox/groovy-commits/', 'Archive') }
-                                        td { a(href: 'mailto:commits-unsubscribe@groovy.apache.org', 'Unsubscribe') }
-                                    }
-                                    tr {
-                                        td {
-                                            strong 'notifications@groovy.apache.org'
-                                        }
-                                        td 'high volume list for JIRA and Github notifications'
-                                        td { a(href: 'mailto:notifications-subscribe@groovy.apache.org', 'Subscribe') }
-                                        td { a(href: 'http://mail-archives.apache.org/mod_mbox/groovy-notifications/', 'Archive') }
-                                        td { a(href: 'mailto:notifications-unsubscribe@groovy.apache.org', 'Unsubscribe') }
-                                    }
-                                }
-                                hr(class: 'divider')
-
-                                h2 'Mailing-lists archive on Nabble'
-                                p """
-                                    The mailing-lists are archived on ${$a(href: 'http://www.nabble.com/', 'Nabble')}.
-                                    Below you can see the archives of the lists.
-                                    Even if you can post messages to the mailing-lists through Nabble,
-                                    you first need to be registered to the Apache Groovy mailing-lists!
-                                """
-                                a(id: 'nabblelink', href: 'http://groovy.329449.n5.nabble.com/', 'Nabble forum')
-                                script(src: 'http://groovy.329449.n5.nabble.com/embed/f329449') {}
-                            }
-                        }
-                    }
-                }
-            }
-        }

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/pages/release-notes.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/pages/release-notes.groovy b/site/src/site/pages/release-notes.groovy
deleted file mode 100644
index d5f2447..0000000
--- a/site/src/site/pages/release-notes.groovy
+++ /dev/null
@@ -1,48 +0,0 @@
-import generator.DocUtils
-
-modelTypes = {
-    String groovyVersion
-    String notes
-}
-
-layout 'layouts/main.groovy', true,
-        pageTitle: "The Apache Groovy programming language - Groovy $groovyVersion release notes",
-        extraStyles: ['https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.css'],
-        extraFooter: contents {
-            script(src:'https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.js') { }
-            script { yieldUnescaped "document.addEventListener('DOMContentLoaded',prettyPrint)" }
-        },
-        mainContent: contents {
-            Map options = [attributes:[DOCS_BASEURL:DocUtils.DOCS_BASEURL]]
-            def notesAsHTML = asciidocText(notes,options)
-            def matcher = notesAsHTML =~ /<h2 id="(.+?)">(.+?)<\/h2>/
-            def sections = [:]
-            while (matcher.find()) {
-                sections[matcher.group(1)] = matcher.group(2)
-            }
-
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li(class:'active') {
-                                    a(href: '#releasenotes', "Release notes for Groovy $groovyVersion")
-                                }
-                                sections.each { k,v ->
-                                    li {
-                                        a(href:"#$k", class: 'anchor-link', v)
-                                    }
-                                }
-                            }
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            a(name:"releasenotes"){}
-                            h1("Release notes for Groovy $groovyVersion")
-                            yieldUnescaped notesAsHTML
-                        }
-                    }
-                }
-            }
-        }

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/pages/releases.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/pages/releases.groovy b/site/src/site/pages/releases.groovy
deleted file mode 100644
index bf6abfa..0000000
--- a/site/src/site/pages/releases.groovy
+++ /dev/null
@@ -1,36 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: "The Apache Groovy programming language - Release notes",
-        mainContent: contents {
-
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li(class: 'active') {
-                                    a(href: '#notes', "Release notes")
-                                }
-                                versions.each { v ->
-                                    li { a(href: "#notes$v", class: 'anchor-link', "Groovy $v") }
-                                }
-                            }
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            h1('Release notes for Groovy')
-                            p '''Here you can find the release notes for the past Groovy releases, describing
-thoroughly what are the novelties and bug fixes of each version.'''
-                            ul {
-                                versions.each { mj ->
-                                    li {
-                                        a(name: "notes$mj") {}
-                                        yieldUnescaped "Release notes for "
-                                        a(href: "releasenotes/groovy-${mj}.html", "Groovy $mj")
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/pages/search.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/pages/search.groovy b/site/src/site/pages/search.groovy
deleted file mode 100644
index 6a6d061..0000000
--- a/site/src/site/pages/search.groovy
+++ /dev/null
@@ -1,113 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Search',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {}
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-search') {}
-                                yield ' Search'
-                            }
-                            p '''
-                                You can search the Groovy website, the Groovy documentation, and the Groovy APIs,
-                                with the Google Custom Search box below. Please type your search query, and hit enter:'''
-                            div {
-                                script '''
-                                  (function() {
-                                    var cx = '013939896723962546743:hbhn__olhii';
-                                    var gcse = document.createElement('script');
-                                    gcse.type = 'text/javascript';
-                                    gcse.async = true;
-                                    gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
-                                        '//www.google.com/cse/cse.js?cx=' + cx;
-                                    var s = document.getElementsByTagName('script')[0];
-                                    s.parentNode.insertBefore(gcse, s);
-                                  })();
-                                '''
-                                'gcse:search'(linkTarget: '_blank'){}
-                                style '''
-                                    .gsc-input-box {
-                                        height: 30px;
-                                    }
-                                    input.gsc-search-button, input.gsc-search-button-v2 {
-                                        height: 30px;
-                                        display: none;
-                                    }
-                                    .gs-title {
-                                        line-height: 20px;
-                                        font-weight: bold;
-                                    }
-                                    .gs-snippet {
-                                        margin-left: 8px;
-                                        line-height: 18px;
-                                        font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
-                                    }
-                                    .gsc-cursor-page {
-                                        margin: 4px;
-                                        padding: 4px;
-                                        padding-left: 8px;
-                                        padding-right: 8px;
-                                        border: 1px solid gray;
-                                    }
-                                    .gsc-cursor-page:hover {
-                                        color: white !important;
-                                        background-color: #db4800 !important;
-                                        text-decoration: none !important;
-                                    }
-                                    .gsc-cursor-current-page {
-                                        background-color: #F2F2F2 !important;
-                                        color: black !important;
-                                    }
-                                    .gsc-selected-option-container {
-                                        width: 120px !important;
-                                    }
-                                    td.gsc-search-button {
-                                        padding-top: 6px;
-                                    }
-                                    td.gsc-orderby-container {
-                                        padding-right: 20px;
-                                    }
-                                    .gs-no-results-result .gs-snippet {
-                                        font-weight: bold;
-                                        color: #db4800;
-                                        background-color: white;
-                                        border: 0px;
-                                    }
-                                    .gsc-webResult, .gsc-result {
-                                        font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
-                                    }
-                                    .gsst_a, .gscb_a {
-                                        margin-top: 3px;
-                                    }
-                                    .gs-per-result-labels {
-                                        margin-left: 8px;
-                                        margin-top: 4px;
-                                    }
-                                    .gs-per-result-labels:before {
-                                        font-family: FontAwesome;
-                                        content: '\\f02c';
-                                        margin-right: 8px;
-                                    }
-                                    .gsc-tabHeader.gsc-tabhActive {
-                                        border-color: #CCCCCC;
-                                        border-bottom-color: #F2F2F2;
-                                        background-color: #F2F2F2;
-                                    }
-                                    .gsc-tabsArea {
-                                        border-bottom: 0;
-                                    }
-                                    a.gs-label, img.gs-image {
-                                        margin-left: 5px;
-                                    }
-                                '''
-                            }
-                            hr(class: 'divider')
-                        }
-                    }
-                }
-            }
-        }

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/pages/security.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/pages/security.groovy b/site/src/site/pages/security.groovy
deleted file mode 100644
index 67815e5..0000000
--- a/site/src/site/pages/security.groovy
+++ /dev/null
@@ -1,150 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: "The Apache Groovy programming language - Security",
-        mainContent: contents {
-
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li(class: 'active') {
-                                    a(href: '#security', "Security updates")
-                                }
-                            }
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            a(name: 'security') {}
-                            h1('Security updates')
-                            p '''Here you can find information about security patches or updates released for Apache Groovy. Note that unless specified otherwise,
-no binary or source patches are available. To obtain a security fix, you need to upgrade to the latest maintained version of Apache Groovy.'''
-                            p '''Releases prior to 2.4.4 were not released under Apache so no official patches for security updates are available for older versions.'''
-                            ul {
-                                li {
-                                    h2 "Groovy 2.4.x vulnerabilities"
-                                    h3 'CVE-2015-3253 Apache Groovy Information Disclosure'
-                                    asciidoc '''
-Severity: Important
-
-Vendor: The Apache Software Foundation
-
-Versions Affected:
-
-* Unsupported Codehaus versions of Groovy from 1.7.0 to 2.4.3
-* Fixed in version 2.4.4
-
-Impact:
-
-Remote execution of untrusted code, DoS
-
-Description:
-
-When an application has Groovy on the classpath and uses standard Java serialization mechanisms to communicate between servers, or to store local data, it is possible for an attacker to bake a special serialized object that will execute code directly when deserialized. All applications which rely on serialization and do not isolate the code which deserializes objects are subject to this vulnerability.
-
-Mitigation:
-
-Apache Groovy 2.4.4 is the first supported release under the Apache Software Foundation. It is strongly recommended that all users using serialization upgrade to this version.
-If you cannot upgrade or rely on an older, unsupported version of Groovy, you can apply the following patch on the `MethodClosure` class (`src/main/org/codehaus/groovy/runtime/MethodClosure.java`):
-
-```
- public class MethodClosure extends Closure {
-+    private Object readResolve() {
-+        throw new UnsupportedOperationException();
-+    }
-```
-
-Alternatively, you should make sure to use a custom security policy file (using the standard Java security manager) or make sure that you do not rely on serialization to communicate remotely.
-
-Credit:
-
-This vulnerability was discovered by:
-
-* cpnrodzc7 working with HP's Zero Day Initiative
-
-References:
-
-* http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-3253[CVE-2015-3253: Remote execution of untrusted code]
-* http://groovy-lang.org/security.html
-
-'''
-                                    h3 'CVE-2016-6814 Apache Groovy Information Disclosure'
-                                    asciidoc '''
-Severity: Important
-
-Vendor: The Apache Software Foundation
-
-Versions Affected:
-
-* Unsupported Codehaus versions of Groovy from 1.7.0 to 2.4.3
-* Apache Groovy 2.4.4 to 2.4.7
-* Fixed in version 2.4.8
-
-Impact:
-
-Remote execution of untrusted code, DoS
-
-Description:
-
-When an application with Groovy on classpath uses standard
-Java serialization mechanisms, e.g. to communicate between servers
-or to store local data, it is possible for an attacker to bake a special
-serialized object that will execute code directly when deserialized.
-All applications which rely on serialization and do not isolate the
-code which deserializes objects are subject to this vulnerability.
-This is similar to CVE-2015-3253 but this exploit involves extra
-wrapping of objects and catching of exceptions which are now safe
-guarded against.
-
-Mitigation:
-
-Users of Groovy relying on (de)serialization with the affected versions
-should apply one of the following mitigations:
-
-* Isolate the code doing the (de)serialization
-* Upgrade to Apache Groovy 2.4.8 or later
-* Users of older versions of Groovy can apply the following patch to the
-`MethodClosure` class (`src/main/org/codehaus/groovy/runtime/MethodClosure.java`):
-
-```
-public class MethodClosure extends Closure {
-+    private void readObject(java.io.ObjectInputStream stream) throws
-IOException, ClassNotFoundException {
-+        if (ALLOW_RESOLVE) {
-+            stream.defaultReadObject();
-+        }
-+        throw new UnsupportedOperationException();
-+    }
-```
-
-Credit:
-
-This vulnerability was discovered by:
-
-* Sam Thomas of Pentest Limited working with Trend Micro's Zero Day Initiative
-
-History:
-
-* 2016-09-20 Original advisory
-* 2017-01-12 Updated information on affected versions
-
-References:
-
-* http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6814[CVE-2016-6814: Remote execution of untrusted code]
-* http://groovy-lang.org/security.html
-
-'''
-                                }
-                                li {
-                                    h2 "Reporting problems"
-                                    p """The Apache Software Foundation takes a very active stance in eliminating security problems in its software products.
-If you have questions about how to configure or use Groovy securely, you should send them to the users ${$a(href: 'mailing-lists.html', 'mailing list')}.
-If you find any security problems due to bugs in Groovy software, you should raise issues in the ${$a(href: 'contribute.html#reporting-issues', 'bug tracker')}.
-The Apache Software Foundation has a dedicated ${$a(href: 'http://www.apache.org/security/', 'security team')} which you may contact should the need arise.
-"""
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/pages/singlepagedocumentation.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/pages/singlepagedocumentation.groovy b/site/src/site/pages/singlepagedocumentation.groovy
deleted file mode 100644
index 5443050..0000000
--- a/site/src/site/pages/singlepagedocumentation.groovy
+++ /dev/null
@@ -1,2 +0,0 @@
-layout 'layouts/iframedoc.groovy', true,
-        pageTitle: "The Apache Groovy programming language - Groovy reference documentation"


[19/20] groovy-user-site git commit: move content to asf-site branch

Posted by pa...@apache.org.
http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/build.gradle
----------------------------------------------------------------------
diff --git a/site/build.gradle b/site/build.gradle
deleted file mode 100644
index d63bb9a..0000000
--- a/site/build.gradle
+++ /dev/null
@@ -1,230 +0,0 @@
-import org.apache.http.client.config.RequestConfig
-import org.apache.http.client.methods.CloseableHttpResponse
-import org.apache.http.client.methods.HttpGet
-import org.apache.http.impl.client.CloseableHttpClient
-import org.apache.http.impl.client.HttpClients
-import groovy.text.markup.MarkupTemplateEngine
-import groovy.text.markup.TemplateConfiguration
-import org.gradle.internal.logging.ConsoleRenderer
-import com.yahoo.platform.yui.compressor.CssCompressor
-import com.yahoo.platform.yui.compressor.JavaScriptCompressor
-import org.apache.tools.ant.filters.BaseFilterReader
-
-buildscript {
-    repositories {
-        jcenter()
-    }
-    dependencies {
-        classpath 'org.apache.httpcomponents:httpclient:4.5.1'
-    }
-}
-
-ext.watchmode = project.hasProperty('watchmode')?project.getProperty('watchmode'):'false'
-
-apply plugin: 'base'
-
-task copyAssets(type:Copy) {
-    from file('src/site/assets')
-    into file("$buildDir/site")
-    filesMatching('**/*.css') { f->
-        if (!f.name.contains('.min.')) {
-            filter(CssFilter)
-        }
-    }
-    filesMatching('**/*.js') { f->
-        if (!f.name.contains('.min.')) {
-            filter(JsFilter)
-        }
-    }
-}
-
-task generateSite(type:JavaExec) {
-
-    description = 'Generates the Groovy Website'
-    dependsOn copyAssets
-
-    ext.sources = file('src/site')
-    ext.outputDir = file("$buildDir/site")
-
-    inputs.files fileTree(sources)
-    outputs.files fileTree(outputDir)
-
-    classpath = project(':generator').sourceSets.main.runtimeClasspath
-    main = 'generator.SiteGenerator'
-    args = [sources, outputDir, project.watchmode]
-    systemProperties.docs_baseurl = System.getProperty('docs_baseurl')
-}
-
-task checkDeadLinks(dependsOn: generateSite) {
-    description = "Checks for dead links in the generated Groovy website"
-
-    ext.outputDir = file("$buildDir/reports")
-    ext.reportFile = file("$outputDir/deadlinks.html")
-
-    inputs.files fileTree(generateSite.outputDir)
-    outputs.file reportFile
-
-    // a collection of links which have either been validated
-    // or are dummy links
-    def excludeFromChecks = [
-            'http://issues.apache.org/jira',
-            'https://issues.apache.org/jira',
-            'target.html',
-            'foo.html',
-            'http://www.acme.com/cars',
-            'http://localhost:8080/groovy/hello.groovy'
-    ]
-
-    doLast {
-        def deadLinks = [:]
-
-        def currentPath
-        def isDead = [:].withDefault { String link ->
-            if (excludeFromChecks.any { link.startsWith(it) }) {
-                // skip checking those links because they dramatically increase build time
-                // while being most likely ok because generated through changelog parsing
-                return false
-            }
-
-            try {
-                URL url
-                try {
-                    url = URI.create(link).toURL()
-                } catch (e) {
-                    if (e.message.contains('URI is not absolute')) {
-                        url = URI.create("file://${file("${generateSite.outputDir}/$currentPath/$link").absoluteFile}").toURL()
-                    }
-                }
-                logger.debug("Checking URL: $url")
-                def cx = url.openConnection()
-                if (cx instanceof HttpURLConnection) {
-                    CloseableHttpClient httpclient = HttpClients.createDefault()
-                    RequestConfig requestConfig = RequestConfig.custom()
-                            .setSocketTimeout(5_000)
-                            .setConnectTimeout(5_000)
-                            .setConnectionRequestTimeout(5_000)
-                            .build()
-                    HttpGet httpget = new HttpGet(link)
-                    httpget.config = requestConfig
-                    CloseableHttpResponse response
-                    try {
-                        response = httpclient.execute(httpget)
-                        if (response.statusLine.statusCode == 404) {
-                            return true
-                        }
-                    } finally {
-                        response.close()
-                    }
-                }
-            } catch (e) {
-                return true
-            }
-            return false
-        }
-
-        def checkLink = { List dead, int line, String link ->
-            if (isDead[link]) {
-                dead << [line:line, link:link]
-            }
-        }
-
-        def checkPage = { File f ->
-            currentPath = GFileUtils.relativePath(generateSite.outputDir, f.parentFile)
-            f.eachLine('utf-8') { String line, int nb ->
-                def dead = []
-                [/\shref=['"](.+?)['"]/, /src=['"](.+?)['"]/].each { regex ->
-                    def matcher = line =~ regex
-                    if (matcher) {
-                        matcher.each {
-                            def path = it[1]
-                            checkLink(dead, nb, path)
-                        }
-                    }
-                }
-                if (dead) {
-                    deadLinks[f] = dead
-                }
-            }
-        }
-
-        file(generateSite.outputDir).eachFileRecurse {
-            if (it.name.endsWith('.html')) {
-                checkPage(it)
-            }
-        }
-
-        outputDir.mkdirs()
-        def tplConf = new TemplateConfiguration()
-        tplConf.with {
-            autoIndent = true
-            autoNewLine = true
-        }
-        def tplEngine = new MarkupTemplateEngine(this.class.classLoader, file('gradle/templates'), tplConf)
-
-        def report = tplEngine.createTemplateByPath("deadlinks.groovy").make(deadLinks: deadLinks).toString()
-
-        reportFile.write(report, 'utf-8')
-        def reportURL = new ConsoleRenderer().asClickableFileUrl(reportFile)
-        logger.lifecycle "Dead links report written at $reportURL"
-    }
-}
-
-task webzip(type:Zip, dependsOn: checkDeadLinks) {
-    description = "Creates a zip with the generated website and the deadlink report"
-    destinationDir = file("$buildDir/distributions")
-
-    baseName = 'groovy'
-    appendix = 'website'
-    from(generateSite.outputDir) {
-        into 'site'
-    }
-    from (checkDeadLinks.outputDir) {
-        into 'reports'
-    }
-}
-
-// Resource filtering classes
-
-class JsFilter extends BaseFilterReader {
-    Writer writer
-    Thread worker
-
-    JsFilter(Reader reader) {
-        super(new PipedReader())
-        writer = new PipedWriter(this.@in)
-        def compressor = new JavaScriptCompressor(reader, null)
-        reader.close()
-        worker = Thread.start {
-            compressor.compress(writer, -1, true, false, false, false)
-            writer.close()
-        }
-    }
-
-    void close() {
-        worker.join()
-        super.close()
-    }
-
-}
-
-class CssFilter extends BaseFilterReader {
-    Writer writer
-    Thread worker
-
-    CssFilter(Reader reader) {
-        super(new PipedReader())
-        writer = new PipedWriter(this.@in)
-        def compressor = new CssCompressor(reader)
-        reader.close()
-        worker = Thread.start {
-            compressor.compress(writer, -1)
-            writer.close()
-        }
-    }
-
-    void close() {
-        worker.join()
-        super.close()
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/gradle/templates/deadlinks.groovy
----------------------------------------------------------------------
diff --git a/site/gradle/templates/deadlinks.groovy b/site/gradle/templates/deadlinks.groovy
deleted file mode 100644
index 726a11f..0000000
--- a/site/gradle/templates/deadlinks.groovy
+++ /dev/null
@@ -1,25 +0,0 @@
-html {
-    head {
-        title 'Dead links report'
-    }
-    body {
-        h1('Dead links report')
-        if (!deadLinks) {
-            p("No dead link found. All green!")
-        } else {
-            p "Found a total of ${deadLinks.values().sum { it.size()}} dead links."
-            p """Not that not all dead links can be fixed directly in the Groovy website project: some of them
-are generated in the Groovy documentation instead."""
-            p "The following files contain dead links:"
-        }
-        deadLinks.each { entry ->
-            def (page, links) = [entry.key, entry.value]
-            h3 { a(href:page,page) }
-            ul {
-                links.each { link ->
-                    asciidoc("At line ${link.line}, dead link to ${link.link}")
-                }
-            }
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/css/book.css
----------------------------------------------------------------------
diff --git a/site/src/site/assets/css/book.css b/site/src/site/assets/css/book.css
deleted file mode 100644
index 517dd54..0000000
--- a/site/src/site/assets/css/book.css
+++ /dev/null
@@ -1,680 +0,0 @@
-.book-btn {
-    display: inline-block;
-    text-transform: uppercase;
-    text-decoration: none;
-    border: 2px solid black;
-    margin-top: 100px;
-    font-size: 0.7em;
-    font-weight: 700;
-    padding: 0.1em 0.4em;
-    margin-left: 40px;
-    text-align: center;
-    -webkit-transition: color 0.3s, border-color 0.3s;
-    -moz-transition: color 0.3s, border-color 0.3s;
-    transition: color 0.3s, border-color 0.3s;
-}
-
-.book-btn:hover {
-    border-color: #db4800;
-    color: #db4800;
-}
-
-/* ///////////////////////////////////////////////////
-
-HARDCOVER
-Table of Contents
-
-1. container
-2. background & color
-3. opening cover, back cover and pages
-4. position, transform y transition
-5. events
-6. Bonus
-    - Cover design
-    - Ribbon
-    - Figcaption
-7. mini-reset
-
-/////////////////////////////////////////////////////*/
-
-/*
-    1. container
-*/
-
-.book {
-    position: relative;
-    width: 160px;
-    height: 220px;
-    -webkit-perspective: 1000px;
-    -moz-perspective: 1000px;
-    perspective: 1000px;
-    -webkit-transform-style: preserve-3d;
-    -moz-transform-style: preserve-3d;
-    transform-style: preserve-3d;
-    margin: 20px;
-    margin-bottom: 40px;
-    margin-left: 60px;
-}
-
-.book ul {
-    list-style: none;
-}
-
-/*
-    2. background & color
-*/
-
-/* HARDCOVER FRONT */
-.hardcover_front li:first-child {
-    background-color: #eee;
-    -webkit-backface-visibility: hidden;
-    -moz-backface-visibility: hidden;
-    backface-visibility: hidden;
-}
-
-/* reverse */
-.hardcover_front li:last-child {
-    background: #fffbec;
-}
-
-/* HARDCOVER BACK */
-.hardcover_back li:first-child {
-    background: #fffbec;
-}
-
-/* reverse */
-.hardcover_back li:last-child {
-    background: #fffbec;
-}
-
-.book_spine li:first-child {
-    background: #eee;
-}
-
-.book_spine li:last-child {
-    background: #333;
-}
-
-/* thickness of cover */
-
-.hardcover_front li:first-child:after,
-.hardcover_front li:first-child:before,
-.hardcover_front li:last-child:after,
-.hardcover_front li:last-child:before,
-.hardcover_back li:first-child:after,
-.hardcover_back li:first-child:before,
-.hardcover_back li:last-child:after,
-.hardcover_back li:last-child:before,
-.book_spine li:first-child:after,
-.book_spine li:first-child:before,
-.book_spine li:last-child:after,
-.book_spine li:last-child:before {
-    background: #999;
-}
-
-/* page */
-
-.page > li {
-    background: -webkit-linear-gradient(left, #e1ddd8 0%, #fffbf6 100%);
-    background: -moz-linear-gradient(left, #e1ddd8 0%, #fffbf6 100%);
-    background: -ms-linear-gradient(left, #e1ddd8 0%, #fffbf6 100%);
-    background: linear-gradient(left, #e1ddd8 0%, #fffbf6 100%);
-    box-shadow: inset 0px -1px 2px rgba(50, 50, 50, 0.1), inset -1px 0px 1px rgba(150, 150, 150, 0.2);
-    border-radius: 0px 5px 5px 0px;
-}
-
-/*
-    3. opening cover, back cover and pages
-*/
-
-.hardcover_front {
-    -webkit-transform: rotateY(-34deg) translateZ(8px);
-    -moz-transform: rotateY(-34deg) translateZ(8px);
-    transform: rotateY(-34deg) translateZ(8px);
-    z-index: 100;
-}
-
-.hardcover_back {
-    -webkit-transform: rotateY(-15deg) translateZ(-8px);
-    -moz-transform: rotateY(-15deg) translateZ(-8px);
-    transform: rotateY(-15deg) translateZ(-8px);
-}
-
-.page li:nth-child(1) {
-    -webkit-transform: rotateY(-28deg);
-    -moz-transform: rotateY(-28deg);
-    transform: rotateY(-28deg);
-}
-
-.page li:nth-child(2) {
-    -webkit-transform: rotateY(-30deg);
-    -moz-transform: rotateY(-30deg);
-    transform: rotateY(-30deg);
-}
-
-.page li:nth-child(3) {
-    -webkit-transform: rotateY(-32deg);
-    -moz-transform: rotateY(-32deg);
-    transform: rotateY(-32deg);
-}
-
-.page li:nth-child(4) {
-    -webkit-transform: rotateY(-34deg);
-    -moz-transform: rotateY(-34deg);
-    transform: rotateY(-34deg);
-}
-
-.page li:nth-child(5) {
-    -webkit-transform: rotateY(-36deg);
-    -moz-transform: rotateY(-36deg);
-    transform: rotateY(-36deg);
-}
-
-/*
-    4. position, transform & transition
-*/
-
-.hardcover_front,
-.hardcover_back,
-.book_spine,
-.hardcover_front li,
-.hardcover_back li,
-.book_spine li {
-    position: absolute;
-    top: 0;
-    left: 0;
-    width: 100%;
-    height: 100%;
-    -webkit-transform-style: preserve-3d;
-    -moz-transform-style: preserve-3d;
-    transform-style: preserve-3d;
-}
-
-.hardcover_front,
-.hardcover_back {
-    -webkit-transform-origin: 0% 100%;
-    -moz-transform-origin: 0% 100%;
-    transform-origin: 0% 100%;
-}
-
-.hardcover_front {
-    -webkit-transition: all 0.8s ease, z-index 0.6s;
-    -moz-transition: all 0.8s ease, z-index 0.6s;
-    transition: all 0.8s ease, z-index 0.6s;
-}
-
-/* HARDCOVER front */
-.hardcover_front li:first-child {
-    cursor: default;
-    -webkit-user-select: none;
-    -moz-user-select: none;
-    user-select: none;
-    -webkit-transform: translateZ(2px);
-    -moz-transform: translateZ(2px);
-    transform: translateZ(2px);
-}
-
-.hardcover_front li:last-child {
-    -webkit-transform: rotateY(180deg) translateZ(2px);
-    -moz-transform: rotateY(180deg) translateZ(2px);
-    transform: rotateY(180deg) translateZ(2px);
-}
-
-/* HARDCOVER back */
-.hardcover_back li:first-child {
-    -webkit-transform: translateZ(2px);
-    -moz-transform: translateZ(2px);
-    transform: translateZ(2px);
-}
-
-.hardcover_back li:last-child {
-    -webkit-transform: translateZ(-2px);
-    -moz-transform: translateZ(-2px);
-    transform: translateZ(-2px);
-}
-
-/* thickness of cover */
-.hardcover_front li:first-child:after,
-.hardcover_front li:first-child:before,
-.hardcover_front li:last-child:after,
-.hardcover_front li:last-child:before,
-.hardcover_back li:first-child:after,
-.hardcover_back li:first-child:before,
-.hardcover_back li:last-child:after,
-.hardcover_back li:last-child:before,
-.book_spine li:first-child:after,
-.book_spine li:first-child:before,
-.book_spine li:last-child:after,
-.book_spine li:last-child:before {
-    position: absolute;
-    top: 0;
-    left: 0;
-}
-
-/* HARDCOVER front */
-.hardcover_front li:first-child:after,
-.hardcover_front li:first-child:before {
-    width: 4px;
-    height: 100%;
-}
-
-.hardcover_front li:first-child:after {
-    -webkit-transform: rotateY(90deg) translateZ(-2px) translateX(2px);
-    -moz-transform: rotateY(90deg) translateZ(-2px) translateX(2px);
-    transform: rotateY(90deg) translateZ(-2px) translateX(2px);
-}
-
-.hardcover_front li:first-child:before {
-    -webkit-transform: rotateY(90deg) translateZ(158px) translateX(2px);
-    -moz-transform: rotateY(90deg) translateZ(158px) translateX(2px);
-    transform: rotateY(90deg) translateZ(158px) translateX(2px);
-}
-
-.hardcover_front li:last-child:after,
-.hardcover_front li:last-child:before {
-    width: 4px;
-    height: 160px;
-}
-
-.hardcover_front li:last-child:after {
-    -webkit-transform: rotateX(90deg) rotateZ(90deg) translateZ(80px) translateX(-2px) translateY(-78px);
-    -moz-transform: rotateX(90deg) rotateZ(90deg) translateZ(80px) translateX(-2px) translateY(-78px);
-    transform: rotateX(90deg) rotateZ(90deg) translateZ(80px) translateX(-2px) translateY(-78px);
-}
-
-.hardcover_front li:last-child:before {
-    box-shadow: 0px 0px 30px 5px #333;
-    -webkit-transform: rotateX(90deg) rotateZ(90deg) translateZ(-140px) translateX(-2px) translateY(-78px);
-    -moz-transform: rotateX(90deg) rotateZ(90deg) translateZ(-140px) translateX(-2px) translateY(-78px);
-    transform: rotateX(90deg) rotateZ(90deg) translateZ(-140px) translateX(-2px) translateY(-78px);
-}
-
-/* thickness of cover */
-
-.hardcover_back li:first-child:after,
-.hardcover_back li:first-child:before {
-    width: 4px;
-    height: 100%;
-}
-
-.hardcover_back li:first-child:after {
-    -webkit-transform: rotateY(90deg) translateZ(-2px) translateX(2px);
-    -moz-transform: rotateY(90deg) translateZ(-2px) translateX(2px);
-    transform: rotateY(90deg) translateZ(-2px) translateX(2px);
-}
-
-.hardcover_back li:first-child:before {
-    -webkit-transform: rotateY(90deg) translateZ(158px) translateX(2px);
-    -moz-transform: rotateY(90deg) translateZ(158px) translateX(2px);
-    transform: rotateY(90deg) translateZ(158px) translateX(2px);
-}
-
-.hardcover_back li:last-child:after,
-.hardcover_back li:last-child:before {
-    width: 4px;
-    height: 160px;
-}
-
-.hardcover_back li:last-child:after {
-    -webkit-transform: rotateX(90deg) rotateZ(90deg) translateZ(80px) translateX(2px) translateY(-78px);
-    -moz-transform: rotateX(90deg) rotateZ(90deg) translateZ(80px) translateX(2px) translateY(-78px);
-    transform: rotateX(90deg) rotateZ(90deg) translateZ(80px) translateX(2px) translateY(-78px);
-}
-
-.hardcover_back li:last-child:before {
-    box-shadow: 10px -1px 80px 20px #666;
-    -webkit-transform: rotateX(90deg) rotateZ(90deg) translateZ(-140px) translateX(2px) translateY(-78px);
-    -moz-transform: rotateX(90deg) rotateZ(90deg) translateZ(-140px) translateX(2px) translateY(-78px);
-    transform: rotateX(90deg) rotateZ(90deg) translateZ(-140px) translateX(2px) translateY(-78px);
-}
-
-/* BOOK SPINE */
-.book_spine {
-    -webkit-transform: rotateY(60deg) translateX(-5px) translateZ(-12px);
-    -moz-transform: rotateY(60deg) translateX(-5px) translateZ(-12px);
-    transform: rotateY(60deg) translateX(-5px) translateZ(-12px);
-    width: 16px;
-    z-index: 0;
-}
-
-.book_spine li:first-child {
-    -webkit-transform: translateZ(2px);
-    -moz-transform: translateZ(2px);
-    transform: translateZ(2px);
-}
-
-.book_spine li:last-child {
-    -webkit-transform: translateZ(-2px);
-    -moz-transform: translateZ(-2px);
-    transform: translateZ(-2px);
-}
-
-/* thickness of book spine */
-.book_spine li:first-child:after,
-.book_spine li:first-child:before {
-    width: 4px;
-    height: 100%;
-}
-
-.book_spine li:first-child:after {
-    -webkit-transform: rotateY(90deg) translateZ(-2px) translateX(2px);
-    -moz-transform: rotateY(90deg) translateZ(-2px) translateX(2px);
-    transform: rotateY(90deg) translateZ(-2px) translateX(2px);
-}
-
-.book_spine li:first-child:before {
-    -webkit-transform: rotateY(-90deg) translateZ(-12px);
-    -moz-transform: rotateY(-90deg) translateZ(-12px);
-    transform: rotateY(-90deg) translateZ(-12px);
-}
-
-.book_spine li:last-child:after,
-.book_spine li:last-child:before {
-    width: 4px;
-    height: 16px;
-}
-
-.book_spine li:last-child:after {
-    -webkit-transform: rotateX(90deg) rotateZ(90deg) translateZ(8px) translateX(2px) translateY(-6px);
-    -moz-transform: rotateX(90deg) rotateZ(90deg) translateZ(8px) translateX(2px) translateY(-6px);
-    transform: rotateX(90deg) rotateZ(90deg) translateZ(8px) translateX(2px) translateY(-6px);
-}
-
-.book_spine li:last-child:before {
-    box-shadow: 5px -1px 100px 40px rgba(0, 0, 0, 0.2);
-    -webkit-transform: rotateX(90deg) rotateZ(90deg) translateZ(-210px) translateX(2px) translateY(-6px);
-    -moz-transform: rotateX(90deg) rotateZ(90deg) translateZ(-210px) translateX(2px) translateY(-6px);
-    transform: rotateX(90deg) rotateZ(90deg) translateZ(-210px) translateX(2px) translateY(-6px);
-}
-
-.page,
-.page > li {
-    position: absolute;
-    top: 0;
-    left: 0;
-    -webkit-transform-style: preserve-3d;
-    -moz-transform-style: preserve-3d;
-    transform-style: preserve-3d;
-}
-
-.page {
-    width: 100%;
-    height: 98%;
-    top: 1%;
-    left: 3%;
-    z-index: 10;
-}
-
-.page > li {
-    width: 100%;
-    height: 100%;
-    -webkit-transform-origin: left center;
-    -moz-transform-origin: left center;
-    transform-origin: left center;
-    -webkit-transition-property: transform;
-    -moz-transition-property: transform;
-    transition-property: transform;
-    -webkit-transition-timing-function: ease;
-    -moz-transition-timing-function: ease;
-    transition-timing-function: ease;
-}
-
-.page > li:nth-child(1) {
-    -webkit-transition-duration: 0.6s;
-    -moz-transition-duration: 0.6s;
-    transition-duration: 0.6s;
-}
-
-.page > li:nth-child(2) {
-    -webkit-transition-duration: 0.6s;
-    -moz-transition-duration: 0.6s;
-    transition-duration: 0.6s;
-}
-
-.page > li:nth-child(3) {
-    -webkit-transition-duration: 0.4s;
-    -moz-transition-duration: 0.4s;
-    transition-duration: 0.4s;
-}
-
-.page > li:nth-child(4) {
-    -webkit-transition-duration: 0.5s;
-    -moz-transition-duration: 0.5s;
-    transition-duration: 0.5s;
-}
-
-.page > li:nth-child(5) {
-    -webkit-transition-duration: 0.6s;
-    -moz-transition-duration: 0.6s;
-    transition-duration: 0.6s;
-}
-
-/*
-    5. events
-*/
-
-@media screen and (min-width: 768px) {
-    .book:hover > .hardcover_front {
-        -webkit-transform: rotateY(-145deg) translateZ(0);
-        -moz-transform: rotateY(-145deg) translateZ(0);
-        transform: rotateY(-145deg) translateZ(0);
-        z-index: 0;
-    }
-
-    .book:hover > .page li:nth-child(1) {
-        -webkit-transform: rotateY(-30deg);
-        -moz-transform: rotateY(-30deg);
-        transform: rotateY(-30deg);
-        -webkit-transition-duration: 1.5s;
-        -moz-transition-duration: 1.5s;
-        transition-duration: 1.5s;
-    }
-
-    .book:hover > .page li:nth-child(2) {
-        -webkit-transform: rotateY(-35deg);
-        -moz-transform: rotateY(-35deg);
-        transform: rotateY(-35deg);
-        -webkit-transition-duration: 1.8s;
-        -moz-transition-duration: 1.8s;
-        transition-duration: 1.8s;
-    }
-
-    .book:hover > .page li:nth-child(3) {
-        -webkit-transform: rotateY(-118deg);
-        -moz-transform: rotateY(-118deg);
-        transform: rotateY(-118deg);
-        -webkit-transition-duration: 1.6s;
-        -moz-transition-duration: 1.6s;
-        transition-duration: 1.6s;
-    }
-
-    .book:hover > .page li:nth-child(4) {
-        -webkit-transform: rotateY(-130deg);
-        -moz-transform: rotateY(-130deg);
-        transform: rotateY(-130deg);
-        -webkit-transition-duration: 1.4s;
-        -moz-transition-duration: 1.4s;
-        transition-duration: 1.4s;
-    }
-
-    .book:hover > .page li:nth-child(5) {
-        -webkit-transform: rotateY(-140deg);
-        -moz-transform: rotateY(-140deg);
-        transform: rotateY(-140deg);
-        -webkit-transition-duration: 1.2s;
-        -moz-transition-duration: 1.2s;
-        transition-duration: 1.2s;
-    }
-}
-
-/*
-    6. Bonus
-*/
-
-/* cover CSS */
-
-.coverDesign {
-    position: absolute;
-    top: 0;
-    left: 0;
-    bottom: 0;
-    right: 0;
-    overflow: hidden;
-    -webkit-backface-visibility: hidden;
-    -moz-backface-visibility: hidden;
-    backface-visibility: hidden;
-}
-
-.coverDesign::after {
-    background-image: -webkit-linear-gradient(-135deg, rgba(255, 255, 255, 0.45) 0%, transparent 100%);
-    background-image: -moz-linear-gradient(-135deg, rgba(255, 255, 255, 0.45) 0%, transparent 100%);
-    background-image: linear-gradient(-135deg, rgba(255, 255, 255, 0.45) 0%, transparent 100%);
-    position: absolute;
-    top: 0;
-    left: 0;
-    bottom: 0;
-    right: 0;
-}
-
-.coverDesign h1 {
-    color: #fff;
-    font-size: 2.2em;
-    letter-spacing: 0.05em;
-    text-align: center;
-    margin: 54% 0 0 0;
-    text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.1);
-}
-
-.coverDesign p {
-    color: #f8f8f8;
-    font-size: 1em;
-    text-align: center;
-    text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.1);
-}
-
-.yellow {
-    background-color: #f1c40f;
-    background-image: -webkit-linear-gradient(top, #f1c40f 58%, #e7ba07 0%);
-    background-image: -moz-linear-gradient(top, #f1c40f 58%, #e7ba07 0%);
-    background-image: linear-gradient(top, #f1c40f 58%, #e7ba07 0%);
-}
-
-.blue {
-    background-color: #3498db;
-    background-image: -webkit-linear-gradient(top, #3498db 58%, #2a90d4 0%);
-    background-image: -moz-linear-gradient(top, #3498db 58%, #2a90d4 0%);
-    background-image: linear-gradient(top, #3498db 58%, #2a90d4 0%);
-}
-
-.grey {
-    background-color: #f8e9d1;
-    background-image: -webkit-linear-gradient(top, #f8e9d1 58%, #e7d5b7 0%);
-    background-image: -moz-linear-gradient(top, #f8e9d1 58%, #e7d5b7 0%);
-    background-image: linear-gradient(top, #f8e9d1 58%, #e7d5b7 0%);
-}
-
-/* Basic ribbon */
-
-.ribbon {
-    background: #c0392b;
-    color: #fff;
-    display: block;
-    font-size: 0.7em;
-    position: absolute;
-    top: 11px;
-    right: 1px;
-    width: 40px;
-    height: 20px;
-    line-height: 20px;
-    letter-spacing: 0.15em;
-    text-align: center;
-    -webkit-transform: rotateZ(45deg) translateZ(1px);
-    -moz-transform: rotateZ(45deg) translateZ(1px);
-    transform: rotateZ(45deg) translateZ(1px);
-    -webkit-backface-visibility: hidden;
-    -moz-backface-visibility: hidden;
-    backface-visibility: hidden;
-    z-index: 10;
-}
-
-.ribbon::before,
-.ribbon::after {
-    position: absolute;
-    top: -20px;
-    width: 0;
-    height: 0;
-    border-bottom: 20px solid #c0392b;
-    border-top: 20px solid transparent;
-}
-
-.ribbon::before {
-    left: -20px;
-    border-left: 20px solid transparent;
-}
-
-.ribbon::after {
-    right: -20px;
-    border-right: 20px solid transparent;
-}
-
-/* figcaption */
-
-.book figcaption {
-    padding-left: 40px;
-    padding-top: 40px;
-    text-align: left;
-    position: absolute;
-    top: 0%;
-    left: 160px;
-    width: 500px;
-}
-
-.book figcaption h1 {
-    margin: 0;
-}
-
-.book figcaption span {
-    color: #245f78;
-    padding: 0.6em 0 0.2em 0;
-    display: block;
-}
-
-.book figcaption p {
-    color: black;
-    line-height: 1.3;
-}
-
-/* Media Queries */
-@media screen and (max-width: 767px) {
-    .align > li {
-        width: 100%;
-        min-height: 440px;
-        height: auto;
-        padding: 0;
-        margin: 0 0 30px 0;
-    }
-
-    .book {
-        margin-left: 60px;
-        display: block;
-        margin-bottom: 280px;
-    }
-
-    .book figcaption {
-        min-width: 320px;
-        top: 250px;
-        padding-left: 0;
-        left: -60px;
-        display: block;
-    }
-}
-
-@media screen and (max-width: 550px) {
-    .book {
-        height: 250px;
-    }
-
-    .book figcaption {
-        width: 320px;
-    }
-}


[15/20] groovy-user-site git commit: move content to asf-site branch

Posted by pa...@apache.org.
http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/fonts/fontawesome-webfont.svg
----------------------------------------------------------------------
diff --git a/site/src/site/assets/fonts/fontawesome-webfont.svg b/site/src/site/assets/fonts/fontawesome-webfont.svg
deleted file mode 100644
index a9f8469..0000000
--- a/site/src/site/assets/fonts/fontawesome-webfont.svg
+++ /dev/null
@@ -1,504 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata></metadata>
-<defs>
-<font id="fontawesomeregular" horiz-adv-x="1536" >
-<font-face units-per-em="1792" ascent="1536" descent="-256" />
-<missing-glyph horiz-adv-x="448" />
-<glyph unicode=" "  horiz-adv-x="448" />
-<glyph unicode="&#x09;" horiz-adv-x="448" />
-<glyph unicode="&#xa0;" horiz-adv-x="448" />
-<glyph unicode="&#xa8;" horiz-adv-x="1792" />
-<glyph unicode="&#xa9;" horiz-adv-x="1792" />
-<glyph unicode="&#xae;" horiz-adv-x="1792" />
-<glyph unicode="&#xb4;" horiz-adv-x="1792" />
-<glyph unicode="&#xc6;" horiz-adv-x="1792" />
-<glyph unicode="&#xd8;" horiz-adv-x="1792" />
-<glyph unicode="&#x2000;" horiz-adv-x="768" />
-<glyph unicode="&#x2001;" horiz-adv-x="1537" />
-<glyph unicode="&#x2002;" horiz-adv-x="768" />
-<glyph unicode="&#x2003;" horiz-adv-x="1537" />
-<glyph unicode="&#x2004;" horiz-adv-x="512" />
-<glyph unicode="&#x2005;" horiz-adv-x="384" />
-<glyph unicode="&#x2006;" horiz-adv-x="256" />
-<glyph unicode="&#x2007;" horiz-adv-x="256" />
-<glyph unicode="&#x2008;" horiz-adv-x="192" />
-<glyph unicode="&#x2009;" horiz-adv-x="307" />
-<glyph unicode="&#x200a;" horiz-adv-x="85" />
-<glyph unicode="&#x202f;" horiz-adv-x="307" />
-<glyph unicode="&#x205f;" horiz-adv-x="384" />
-<glyph unicode="&#x2122;" horiz-adv-x="1792" />
-<glyph unicode="&#x221e;" horiz-adv-x="1792" />
-<glyph unicode="&#x2260;" horiz-adv-x="1792" />
-<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
-<glyph unicode="&#xf000;" horiz-adv-x="1792" d="M93 1350q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78z" />
-<glyph unicode="&#xf001;" d="M0 -64q0 50 34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5 q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89z" />
-<glyph unicode="&#xf002;" horiz-adv-x="1664" d="M0 704q0 143 55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5z M256 704q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5z" />
-<glyph unicode="&#xf003;" horiz-adv-x="1792" d="M0 32v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113zM128 32q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5 t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768zM128 1120q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317 q54 43 100.5 115.5t46.5 131.5v11v13.5t-0.5 13t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5z" />
-<glyph unicode="&#xf004;" horiz-adv-x="1792" d="M0 940q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138z " />
-<glyph unicode="&#xf005;" horiz-adv-x="1664" d="M0 889q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500 l-364 354q-25 27 -25 48z" />
-<glyph unicode="&#xf006;" horiz-adv-x="1664" d="M0 889q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354 q-25 27 -25 48zM221 829l306 -297l-73 -421l378 199l377 -199l-72 421l306 297l-422 62l-189 382l-189 -382z" />
-<glyph unicode="&#xf007;" horiz-adv-x="1408" d="M0 131q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q9 0 42 -21.5t74.5 -48t108 -48t133.5 -21.5t133.5 21.5t108 48t74.5 48t42 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5q0 -120 -73 -189.5t-194 -69.5 h-874q-121 0 -194 69.5t-73 189.5zM320 1024q0 159 112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5z" />
-<glyph unicode="&#xf008;" horiz-adv-x="1920" d="M0 -96v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113zM128 64v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45zM128 320q0 -26 19 -45t45 -19h128 q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128zM128 704q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128zM128 1088q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v128q0 26 -19 45t-45 19 h-128q-26 0 -45 -19t-19 -45v-128zM512 -64q0 -26 19 -45t45 -19h768q26 0 45 19t19 45v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512zM512 704q0 -26 19 -45t45 -19h768q26 0 45 19t19 45v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512zM1536 64 v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45zM1536 320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19
  -45v-128zM1536 704q0 -26 19 -45t45 -19h128q26 0 45 19t19 45 v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128zM1536 1088q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128z" />
-<glyph unicode="&#xf009;" horiz-adv-x="1664" d="M0 128v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90zM0 896v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90zM896 128v384q0 52 38 90t90 38h512q52 0 90 -38 t38 -90v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90zM896 896v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90z" />
-<glyph unicode="&#xf00a;" horiz-adv-x="1792" d="M0 96v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM0 608v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM0 1120v192q0 40 28 68t68 28h320q40 0 68 -28 t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM640 96v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM640 608v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68zM640 1120v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM1280 96v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM1280 608v192 q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM1280 1120v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68z" />
-<glyph unicode="&#xf00b;" horiz-adv-x="1792" d="M0 96v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM0 608v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM0 1120v192q0 40 28 68t68 28h320q40 0 68 -28 t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM640 96v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68zM640 608v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68zM640 1120v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68z" />
-<glyph unicode="&#xf00c;" horiz-adv-x="1792" d="M121 608q0 40 28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68t-28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68z" />
-<glyph unicode="&#xf00d;" horiz-adv-x="1408" d="M110 214q0 40 28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68t-28 -68l-294 -294l294 -294q28 -28 28 -68t-28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294 q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68z" />
-<glyph unicode="&#xf00e;" horiz-adv-x="1664" d="M0 704q0 143 55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90t-37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5z M256 704q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5zM384 672v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224q13 0 22.5 -9.5t9.5 -22.5v-64 q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5z" />
-<glyph unicode="&#xf010;" horiz-adv-x="1664" d="M0 704q0 143 55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90t-37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5z M256 704q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5zM384 672v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5z" />
-<glyph unicode="&#xf011;" d="M0 640q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181 q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298zM640 768v640q0 52 38 90t90 38t90 -38t38 -90v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90z" />
-<glyph unicode="&#xf012;" horiz-adv-x="1792" d="M0 -96v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23zM384 -96v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23zM768 -96v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576 q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23zM1152 -96v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23zM1536 -96v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23z" />
-<glyph unicode="&#xf013;" d="M0 531v222q0 12 8 23t19 13l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10 q129 -119 165 -170q7 -8 7 -22q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108 q-44 -23 -91 -38q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5z M512 640q0 -106 75 -181t181 -75t181 75t75 181t-75 181t-181 75t-181 -75t-75 -181z" />
-<glyph unicode="&#xf014;" horiz-adv-x="1408" d="M0 1056v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23zM256 76q0 -22 7 -40.5 t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5v948h-896v-948zM384 224v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM640 224v576q0 14 9 23t23 9h64 q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23zM896 224v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23z" />
-<glyph unicode="&#xf015;" horiz-adv-x="1664" d="M26 636.5q1 13.5 11 21.5l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5zM256 64 v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf016;" d="M0 -160v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM128 -128h1280v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536zM1024 1024h376q-10 29 -22 41l-313 313q-12 12 -41 22 v-376z" />
-<glyph unicode="&#xf017;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM512 544v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23z" />
-<glyph unicode="&#xf018;" horiz-adv-x="1920" d="M50 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256 q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73zM809 540q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4z" />
-<glyph unicode="&#xf019;" horiz-adv-x="1664" d="M0 96v320q0 40 28 68t68 28h465l135 -136q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68zM325 985q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39q17 -41 -14 -70 l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70zM1152 192q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45zM1408 192q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
-<glyph unicode="&#xf01a;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM418 620q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35z" />
-<glyph unicode="&#xf01b;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM416 672q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23z" />
-<glyph unicode="&#xf01c;" d="M0 64v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552q25 -61 25 -123v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45zM197 576h316l95 -192h320l95 192h316q-1 3 -2.5 8t-2.5 8l-212 496h-708l-212 -496q-1 -2 -2.5 -8 t-2.5 -8z" />
-<glyph unicode="&#xf01d;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM512 320v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55t-32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56z" />
-<glyph unicode="&#xf01e;" d="M0 640q0 156 61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5 t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q14 0 25 -9l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298z" />
-<glyph unicode="&#xf021;" d="M0 0v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129 q-19 -19 -45 -19t-45 19t-19 45zM18 800v7q65 268 270 434.5t480 166.5q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179 q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5z" />
-<glyph unicode="&#xf022;" horiz-adv-x="1792" d="M0 160v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113zM128 160q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832z M256 288v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM256 544v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5z M256 800v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM512 288v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5z M512 544v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5zM512 800v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5v-64q0 -
 13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5z " />
-<glyph unicode="&#xf023;" horiz-adv-x="1152" d="M0 96v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68zM320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192z" />
-<glyph unicode="&#xf024;" horiz-adv-x="1792" d="M64 1280q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110zM320 320v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19 q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf025;" horiz-adv-x="1664" d="M0 650q0 151 67 291t179 242.5t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32 q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32 q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314z" />
-<glyph unicode="&#xf026;" horiz-adv-x="768" d="M0 448v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf027;" horiz-adv-x="1152" d="M0 448v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45zM908 464q0 21 12 35.5t29 25t34 23t29 35.5t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5 q15 0 25 -5q70 -27 112.5 -93t42.5 -142t-42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5z" />
-<glyph unicode="&#xf028;" horiz-adv-x="1664" d="M0 448v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45zM908 464q0 21 12 35.5t29 25t34 23t29 35.5t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5 q15 0 25 -5q70 -27 112.5 -93t42.5 -142t-42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5zM1008 228q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5 q140 -59 225 -188.5t85 -282.5t-85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45zM1109 -7q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19 q13 0 26 -5q211 -91 338 -283.5t127 -422.5t-127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf029;" horiz-adv-x="1408" d="M0 0v640h640v-640h-640zM0 768v640h640v-640h-640zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM256 256v128h128v-128h-128zM256 1024v128h128v-128h-128zM768 0v640h384v-128h128v128h128v-384h-384v128h-128v-384h-128zM768 768v640h640v-640h-640z M896 896h384v384h-384v-384zM1024 0v128h128v-128h-128zM1024 1024v128h128v-128h-128zM1280 0v128h128v-128h-128z" />
-<glyph unicode="&#xf02a;" horiz-adv-x="1792" d="M0 0v1408h63v-1408h-63zM94 1v1407h32v-1407h-32zM189 1v1407h31v-1407h-31zM346 1v1407h31v-1407h-31zM472 1v1407h62v-1407h-62zM629 1v1407h31v-1407h-31zM692 1v1407h31v-1407h-31zM755 1v1407h31v-1407h-31zM880 1v1407h63v-1407h-63zM1037 1v1407h63v-1407h-63z M1163 1v1407h63v-1407h-63zM1289 1v1407h63v-1407h-63zM1383 1v1407h63v-1407h-63zM1541 1v1407h94v-1407h-94zM1666 1v1407h32v-1407h-32zM1729 0v1408h63v-1408h-63z" />
-<glyph unicode="&#xf02b;" d="M0 864v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117zM192 1088q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5z" />
-<glyph unicode="&#xf02c;" horiz-adv-x="1920" d="M0 864v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117zM192 1088q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5zM704 1408h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5z" />
-<glyph unicode="&#xf02d;" horiz-adv-x="1664" d="M10 184q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23 t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57 q38 -15 59 -43q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5zM575 1056 q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" />
-<glyph unicode="&#xf02e;" horiz-adv-x="1280" d="M0 7v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62z" />
-<glyph unicode="&#xf02f;" horiz-adv-x="1664" d="M0 160v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v160h-224 q-13 0 -22.5 9.5t-9.5 22.5zM384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1408 576q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
-<glyph unicode="&#xf030;" horiz-adv-x="1920" d="M0 128v896q0 106 75 181t181 75h224l51 136q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181zM512 576q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5zM672 576q0 119 84.5 203.5t203.5 84.5t203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5z" />
-<glyph unicode="&#xf031;" horiz-adv-x="1664" d="M0 -128l2 79q23 7 56 12.5t57 10.5t49.5 14.5t44.5 29t31 50.5l237 616l280 724h75h53q8 -14 11 -21l205 -480q33 -78 106 -257.5t114 -274.5q15 -34 58 -144.5t72 -168.5q20 -45 35 -57q19 -15 88 -29.5t84 -20.5q6 -38 6 -57q0 -4 -0.5 -13t-0.5 -13q-63 0 -190 8 t-191 8q-76 0 -215 -7t-178 -8q0 43 4 78l131 28q1 0 12.5 2.5t15.5 3.5t14.5 4.5t15 6.5t11 8t9 11t2.5 14q0 16 -31 96.5t-72 177.5t-42 100l-450 2q-26 -58 -76.5 -195.5t-50.5 -162.5q0 -22 14 -37.5t43.5 -24.5t48.5 -13.5t57 -8.5t41 -4q1 -19 1 -58q0 -9 -2 -27 q-58 0 -174.5 10t-174.5 10q-8 0 -26.5 -4t-21.5 -4q-80 -14 -188 -14zM555 527q33 0 136.5 -2t160.5 -2q19 0 57 2q-87 253 -184 452z" />
-<glyph unicode="&#xf032;" horiz-adv-x="1408" d="M0 -128l2 94q15 4 85 16t106 27q7 12 12.5 27t8.5 33.5t5.5 32.5t3 37.5t0.5 34v35.5v30q0 982 -22 1025q-4 8 -22 14.5t-44.5 11t-49.5 7t-48.5 4.5t-30.5 3l-4 83q98 2 340 11.5t373 9.5q23 0 68.5 -0.5t67.5 -0.5q70 0 136.5 -13t128.5 -42t108 -71t74 -104.5 t28 -137.5q0 -52 -16.5 -95.5t-39 -72t-64.5 -57.5t-73 -45t-84 -40q154 -35 256.5 -134t102.5 -248q0 -100 -35 -179.5t-93.5 -130.5t-138 -85.5t-163.5 -48.5t-176 -14q-44 0 -132 3t-132 3q-106 0 -307 -11t-231 -12zM533 1292q0 -50 4 -151t4 -152q0 -27 -0.5 -80 t-0.5 -79q0 -46 1 -69q42 -7 109 -7q82 0 143 13t110 44.5t74.5 89.5t25.5 142q0 70 -29 122.5t-79 82t-108 43.5t-124 14q-50 0 -130 -13zM538.5 165q0.5 -37 4.5 -83.5t12 -66.5q74 -32 140 -32q376 0 376 335q0 114 -41 180q-27 44 -61.5 74t-67.5 46.5t-80.5 25 t-84 10.5t-94.5 2q-73 0 -101 -10q0 -53 -0.5 -159t-0.5 -158q0 -8 -1 -67.5t-0.5 -96.5z" />
-<glyph unicode="&#xf033;" horiz-adv-x="1024" d="M0 -126l17 85q6 2 81.5 21.5t111.5 37.5q28 35 41 101q1 7 62 289t114 543.5t52 296.5v25q-24 13 -54.5 18.5t-69.5 8t-58 5.5l19 103q33 -2 120 -6.5t149.5 -7t120.5 -2.5q48 0 98.5 2.5t121 7t98.5 6.5q-5 -39 -19 -89q-30 -10 -101.5 -28.5t-108.5 -33.5 q-8 -19 -14 -42.5t-9 -40t-7.5 -45.5t-6.5 -42q-27 -148 -87.5 -419.5t-77.5 -355.5q-2 -9 -13 -58t-20 -90t-16 -83.5t-6 -57.5l1 -18q17 -4 185 -31q-3 -44 -16 -99q-11 0 -32.5 -1.5t-32.5 -1.5q-29 0 -87 10t-86 10q-138 2 -206 2q-51 0 -143 -9t-121 -11z" />
-<glyph unicode="&#xf034;" horiz-adv-x="1792" d="M0 1023v383l81 1l54 -27q12 -5 211 -5q44 0 132 2t132 2q36 0 107.5 -0.5t107.5 -0.5h293q6 0 21 -0.5t20.5 0t16 3t17.5 9t15 17.5l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 48t-14.5 73.5t-7.5 35.5 q-6 8 -12 12.5t-15.5 6t-13 2.5t-18 0.5t-16.5 -0.5q-17 0 -66.5 0.5t-74.5 0.5t-64 -2t-71 -6q-9 -81 -8 -136q0 -94 2 -388t2 -455q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9 t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27q19 42 19 383q0 101 -3 303t-3 303v117q0 2 0.5 15.5t0.5 25t-1 25.5t-3 24t-5 14q-11 12 -162 12q-33 0 -93 -12t-80 -26q-19 -13 -34 -72.5t-31.5 -111t-42.5 -53.5q-42 26 -56 44zM1414 109.5q9 18.5 42 18.5h80v1024 h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80q33 0 42 -18.5t-11 -44.5l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5z" />
-<glyph unicode="&#xf035;" d="M0 1023v383l81 1l54 -27q12 -5 211 -5q44 0 132 2t132 2q70 0 246.5 1t304.5 0.5t247 -4.5q33 -1 56 31l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 47.5t-15 73.5t-7 36q-10 13 -27 19q-5 2 -66 2q-30 0 -93 1 t-103 1t-94 -2t-96 -7q-9 -81 -8 -136l1 -152v52q0 -55 1 -154t1.5 -180t0.5 -153q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29 t78 27q7 16 11.5 74t6 145.5t1.5 155t-0.5 153.5t-0.5 89q0 7 -2.5 21.5t-2.5 22.5q0 7 0.5 44t1 73t0 76.5t-3 67.5t-6.5 32q-11 12 -162 12q-41 0 -163 -13.5t-138 -24.5q-19 -12 -34 -71.5t-31.5 -111.5t-42.5 -54q-42 26 -56 44zM5 -64q0 28 26 49q4 3 36 30t59.5 49 t57.5 41.5t42 19.5q13 0 20.5 -10.5t10 -28.5t2.5 -33.5t-1.5 -33t-1.5 -19.5h1024q0 2 -1.5 19.5t-1.5 33t2.5 33.5t10 28.5t20.5 10.5q12 0 42 -19.5t57.5 -41.5t59.5 -49t36 -30q26 -21 26 -49t-26 -49q-4 -3 -36 -30t-59.5 -49t-5
 7.5 -41.5t-42 -19.5q-13 0 -20.5 10.5 t-10 28.5t-2.5 33.5t1.5 33t1.5 19.5h-1024q0 -2 1.5 -19.5t1.5 -33t-2.5 -33.5t-10 -28.5t-20.5 -10.5q-12 0 -42 19.5t-57.5 41.5t-59.5 49t-36 30q-26 21 -26 49z" />
-<glyph unicode="&#xf036;" horiz-adv-x="1792" d="M0 64v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM0 448v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45zM0 832v128q0 26 19 45t45 19h1536 q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1536q-26 0 -45 19t-19 45zM0 1216v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf037;" horiz-adv-x="1792" d="M0 64v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM128 832v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45zM384 448v128q0 26 19 45t45 19h896 q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45zM512 1216v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf038;" horiz-adv-x="1792" d="M0 64v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM128 832v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1536q-26 0 -45 19t-19 45zM384 448v128q0 26 19 45t45 19h1280 q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45zM512 1216v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf039;" horiz-adv-x="1792" d="M0 64v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM0 448v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM0 832v128q0 26 19 45t45 19h1664 q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM0 1216v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf03a;" horiz-adv-x="1792" d="M0 32v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5zM0 416v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5 t-9.5 22.5zM0 800v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5zM0 1184v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192 q-13 0 -22.5 9.5t-9.5 22.5zM384 32v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5zM384 416v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5 t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5zM384 800v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5zM384 1184v192q0 13 9.5 22.5t22.5 9.5h1344q13 0
  22.5 -9.5t9.5 -22.5v-192 q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5z" />
-<glyph unicode="&#xf03b;" horiz-adv-x="1792" d="M0 32v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5zM0 1184v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5 t-9.5 22.5zM32 704q0 14 9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23zM640 416v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088 q-13 0 -22.5 9.5t-9.5 22.5zM640 800v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5z" />
-<glyph unicode="&#xf03c;" horiz-adv-x="1792" d="M0 32v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5zM0 416v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23t-9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5z M0 1184v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5zM640 416v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5 t-9.5 22.5zM640 800v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5z" />
-<glyph unicode="&#xf03d;" horiz-adv-x="1792" d="M0 288v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5q39 -17 39 -59v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5 t-84.5 203.5z" />
-<glyph unicode="&#xf03e;" horiz-adv-x="1920" d="M0 32v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113zM128 32q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216z M256 128v192l320 320l160 -160l512 512l416 -416v-448h-1408zM256 960q0 80 56 136t136 56t136 -56t56 -136t-56 -136t-136 -56t-136 56t-56 136z" />
-<glyph unicode="&#xf040;" d="M0 -128v416l832 832l416 -416l-832 -832h-416zM128 128h128v-128h107l91 91l-235 235l-91 -91v-107zM298 384q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17zM896 1184l166 165q36 38 90 38q53 0 91 -38l235 -234 q37 -39 37 -91q0 -53 -37 -90l-166 -166z" />
-<glyph unicode="&#xf041;" horiz-adv-x="1024" d="M0 896q0 212 150 362t362 150t362 -150t150 -362q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179zM256 896q0 -106 75 -181t181 -75t181 75t75 181t-75 181t-181 75t-181 -75t-75 -181z" />
-<glyph unicode="&#xf042;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73v1088q-148 0 -273 -73t-198 -198t-73 -273z" />
-<glyph unicode="&#xf043;" horiz-adv-x="1024" d="M0 512q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275q0 -212 -150 -362t-362 -150t-362 150t-150 362zM256 384q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5 t37.5 90.5q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69z" />
-<glyph unicode="&#xf044;" horiz-adv-x="1792" d="M0 288v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29v-190 q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5zM640 256v288l672 672l288 -288l-672 -672h-288zM736 448h96v-96h56l116 116l-152 152l-116 -116v-56zM944 688q16 -16 33 1l350 350q17 17 1 33t-33 -1l-350 -350q-17 -17 -1 -33zM1376 1280l92 92 q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68l-92 -92z" />
-<glyph unicode="&#xf045;" horiz-adv-x="1664" d="M0 288v832q0 119 84.5 203.5t203.5 84.5h255q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29v-259 q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5zM256 704q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45l-384 -384 q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5t-38.5 114t-17.5 122z" />
-<glyph unicode="&#xf046;" horiz-adv-x="1664" d="M0 288v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3 q20 -8 20 -29v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5zM257 768q0 33 24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110q24 -24 24 -57t-24 -57l-814 -814q-24 -24 -57 -24t-57 24l-430 430 q-24 24 -24 57z" />
-<glyph unicode="&#xf047;" horiz-adv-x="1792" d="M0 640q0 26 19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45t-19 -45l-256 -256 q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45z" />
-<glyph unicode="&#xf048;" horiz-adv-x="1024" d="M0 -64v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf049;" horiz-adv-x="1792" d="M0 -64v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710q19 19 32 13t13 -32v-710q4 11 13 19l710 710q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45 t-45 -19h-128q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf04a;" horiz-adv-x="1664" d="M122 640q0 26 19 45l710 710q19 19 32 13t13 -32v-710q5 11 13 19l710 710q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-8 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45z" />
-<glyph unicode="&#xf04b;" horiz-adv-x="1408" d="M0 -96v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31l-1328 -738q-23 -13 -39.5 -3t-16.5 36z" />
-<glyph unicode="&#xf04c;" d="M0 -64v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45zM896 -64v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf04d;" d="M0 -64v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf04e;" horiz-adv-x="1664" d="M0 -96v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19l-710 -710q-19 -19 -32 -13t-13 32z" />
-<glyph unicode="&#xf050;" horiz-adv-x="1792" d="M0 -96v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710q-19 -19 -32 -13t-13 32v710 q-5 -10 -13 -19l-710 -710q-19 -19 -32 -13t-13 32z" />
-<glyph unicode="&#xf051;" horiz-adv-x="1024" d="M0 -96v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710q-19 -19 -32 -13t-13 32z" />
-<glyph unicode="&#xf052;" horiz-adv-x="1538" d="M1 64v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45zM1 525q-6 13 13 32l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13z" />
-<glyph unicode="&#xf053;" horiz-adv-x="1280" d="M154 704q0 26 19 45l742 742q19 19 45 19t45 -19l166 -166q19 -19 19 -45t-19 -45l-531 -531l531 -531q19 -19 19 -45t-19 -45l-166 -166q-19 -19 -45 -19t-45 19l-742 742q-19 19 -19 45z" />
-<glyph unicode="&#xf054;" horiz-adv-x="1280" d="M90 128q0 26 19 45l531 531l-531 531q-19 19 -19 45t19 45l166 166q19 19 45 19t45 -19l742 -742q19 -19 19 -45t-19 -45l-742 -742q-19 -19 -45 -19t-45 19l-166 166q-19 19 -19 45z" />
-<glyph unicode="&#xf055;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM320 576q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19 t19 45v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128z" />
-<glyph unicode="&#xf056;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM320 576q0 -26 19 -45t45 -19h768q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19 t-19 -45v-128z" />
-<glyph unicode="&#xf057;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM387 414q0 -27 19 -46l90 -90q19 -19 46 -19q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19 l90 90q19 19 19 46q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45z" />
-<glyph unicode="&#xf058;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM252 621q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45q0 28 -18 46l-91 90 q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46z" />
-<glyph unicode="&#xf059;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM417 939q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26 t37.5 -59q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213zM640 160q0 -14 9 -23t23 -9 h192q14 0 23 9t9 23v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192z" />
-<glyph unicode="&#xf05a;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM512 160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320 q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160zM640 1056q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160z" />
-<glyph unicode="&#xf05b;" d="M0 576v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143 q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45zM339 512q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5h-109q-26 0 -45 19 t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109z" />
-<glyph unicode="&#xf05c;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM429 480q0 13 10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23l-137 -137l137 -137q10 -10 10 -23t-10 -23l-146 -146q-10 -10 -23 -10t-23 10l-137 137 l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23z" />
-<glyph unicode="&#xf05d;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM346 640q0 26 19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45z" />
-<glyph unicode="&#xf05e;" d="M0 643q0 157 61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5t-61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61t-245 164t-163.5 246t-61 300zM224 643q0 -162 89 -299l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199 t-73 -274zM471 185q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5q0 161 -87 295z" />
-<glyph unicode="&#xf060;" d="M64 576q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5t32.5 -90.5v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90 z" />
-<glyph unicode="&#xf061;" d="M0 512v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5z" />
-<glyph unicode="&#xf062;" horiz-adv-x="1664" d="M53 565q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651q37 -39 37 -91q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75 q-38 38 -38 90z" />
-<glyph unicode="&#xf063;" horiz-adv-x="1664" d="M53 704q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90z" />
-<glyph unicode="&#xf064;" horiz-adv-x="1792" d="M0 416q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45t-19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123 q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22t-13.5 30t-10.5 24q-127 285 -127 451z" />
-<glyph unicode="&#xf065;" d="M0 -64v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23t-10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45zM781 800q0 13 10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448 q26 0 45 -19t19 -45v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23z" />
-<glyph unicode="&#xf066;" d="M13 32q0 13 10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23zM768 704v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10 t23 -10l114 -114q10 -10 10 -23t-10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf067;" horiz-adv-x="1408" d="M0 608v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68z" />
-<glyph unicode="&#xf068;" horiz-adv-x="1408" d="M0 608v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68z" />
-<glyph unicode="&#xf069;" horiz-adv-x="1664" d="M122.5 408.5q13.5 51.5 59.5 77.5l266 154l-266 154q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5 l-266 -154l266 -154q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5z" />
-<glyph unicode="&#xf06a;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM624 1126l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5l18 621q0 12 -10 18 q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18zM640 161q0 -13 10 -23t23 -10h192q13 0 22 9.5t9 23.5v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190z" />
-<glyph unicode="&#xf06b;" d="M0 544v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23v-320q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68 t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23zM376 1120q0 -40 28 -68t68 -28h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68zM608 180q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5v56v468v192h-320v-192v-468v-56zM870 1024h194q40 0 68 28 t28 68t-28 68t-68 28q-43 0 -69 -31z" />
-<glyph unicode="&#xf06c;" horiz-adv-x="1792" d="M0 121q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96 q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-30 0 -51 11t-31 24t-27 42q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5zM384 448q0 -26 19 -45t45 -19q24 0 45 19 q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45t-19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45z" />
-<glyph unicode="&#xf06d;" horiz-adv-x="1408" d="M0 -160q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64zM256 640q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100 t113.5 -122.5t72.5 -150.5t27.5 -184q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184z" />
-<glyph unicode="&#xf06e;" horiz-adv-x="1792" d="M0 576q0 34 20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69t-20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69zM128 576q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5q-152 236 -381 353 q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353zM592 704q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34t-14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5z" />
-<glyph unicode="&#xf070;" horiz-adv-x="1792" d="M0 576q0 38 20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5q16 -10 16 -27q0 -7 -1 -9q-105 -188 -315 -566t-316 -567l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87 q-143 65 -263.5 173t-208.5 245q-20 31 -20 69zM128 576q167 -258 427 -375l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353zM592 704q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34t-14 34t-34 14q-125 0 -214.5 -89.5 t-89.5 -214.5zM896 0l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69t-20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95zM1056 286l280 502q8 -45 8 -84q0 -139 -79 -253.5t-209 -164.5z" />
-<glyph unicode="&#xf071;" horiz-adv-x="1792" d="M16 61l768 1408q17 31 47 49t65 18t65 -18t47 -49l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126zM752 992l17 -457q0 -10 10 -16.5t24 -6.5h185q14 0 23.5 6.5t10.5 16.5l18 459q0 12 -10 19q-13 11 -24 11h-220 q-11 0 -24 -11q-10 -7 -10 -21zM768 161q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190z" />
-<glyph unicode="&#xf072;" horiz-adv-x="1408" d="M0 477q-1 13 9 25l96 97q9 9 23 9q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16 l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23z" />
-<glyph unicode="&#xf073;" horiz-adv-x="1664" d="M0 -128v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90zM128 -128h288v288h-288v-288zM128 224 h288v320h-288v-320zM128 608h288v288h-288v-288zM384 1088q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288zM480 -128h320v288h-320v-288zM480 224h320v320h-320v-320zM480 608h320v288h-320 v-288zM864 -128h320v288h-320v-288zM864 224h320v320h-320v-320zM864 608h320v288h-320v-288zM1152 1088q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288zM1248 -128h288v288h-288v-288z M1248 224h288v320h-288v-320zM1248 608h288v288h-288v-288z" />
-<glyph unicode="&#xf074;" horiz-adv-x="1792" d="M0 160v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23t-9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192 h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23zM0 1056v192q0 14 9 23t23 9h224q250 0 410 -225q-60 -92 -137 -273q-22 45 -37 72.5 t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23zM743 353q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23t-9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192 q-32 0 -85 -0.5t-81 -1t-73 1t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5z" />
-<glyph unicode="&#xf075;" horiz-adv-x="1792" d="M0 640q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5t-120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5 t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281z" />
-<glyph unicode="&#xf076;" d="M0 576v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5 t-98.5 362zM0 960v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45zM1024 960v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf077;" horiz-adv-x="1792" d="M90 250.5q0 26.5 19 45.5l742 741q19 19 45 19t45 -19l742 -741q19 -19 19 -45.5t-19 -45.5l-166 -165q-19 -19 -45 -19t-45 19l-531 531l-531 -531q-19 -19 -45 -19t-45 19l-166 165q-19 19 -19 45.5z" />
-<glyph unicode="&#xf078;" horiz-adv-x="1792" d="M90 773.5q0 26.5 19 45.5l166 165q19 19 45 19t45 -19l531 -531l531 531q19 19 45 19t45 -19l166 -165q19 -19 19 -45.5t-19 -45.5l-742 -741q-19 -19 -45 -19t-45 19l-742 741q-19 19 -19 45.5z" />
-<glyph unicode="&#xf079;" horiz-adv-x="1920" d="M0 704q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45z M640 1120q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20z " />
-<glyph unicode="&#xf07a;" horiz-adv-x="1664" d="M0 1216q0 26 19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024 q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45zM384 0q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5zM1280 0q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5 t-90.5 -37.5t-90.5 37.5t-37.5 90.5z" />
-<glyph unicode="&#xf07b;" horiz-adv-x="1664" d="M0 224v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158z" />
-<glyph unicode="&#xf07c;" horiz-adv-x="1920" d="M0 224v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5t-0.5 12.5zM73 56q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43 q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43z" />
-<glyph unicode="&#xf07d;" horiz-adv-x="768" d="M64 64q0 26 19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45z" />
-<glyph unicode="&#xf07e;" horiz-adv-x="1792" d="M0 640q0 26 19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45z" />
-<glyph unicode="&#xf080;" horiz-adv-x="1920" d="M0 32v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113zM128 32q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216z M256 128v384h256v-384h-256zM640 128v896h256v-896h-256zM1024 128v640h256v-640h-256zM1408 128v1024h256v-1024h-256z" />
-<glyph unicode="&#xf081;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 286q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109 q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4q21 -63 74.5 -104 t121.5 -42q-116 -90 -261 -90q-26 0 -50 3z" />
-<glyph unicode="&#xf082;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-192v608h203l30 224h-233v143q0 54 28 83t96 29l132 1v207q-96 9 -180 9q-136 0 -218 -80.5t-82 -225.5v-166h-224v-224h224v-608h-544 q-119 0 -203.5 84.5t-84.5 203.5z" />
-<glyph unicode="&#xf083;" horiz-adv-x="1792" d="M0 0v1280q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5zM128 0h1536v128h-1536v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM256 1216h384v128h-384v-128zM512 574 q0 -159 112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5zM640 574q0 106 75 181t181 75t181 -75t75 -181t-75 -181t-181 -75t-181 75t-75 181zM736 576q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9 t9 23t-9 23t-23 9q-66 0 -113 -47t-47 -113z" />
-<glyph unicode="&#xf084;" horiz-adv-x="1792" d="M0 752q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41q0 -17 -49 -66t-66 -49 q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5zM192 768q0 -80 56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56 t56 136t-56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136z" />
-<glyph unicode="&#xf085;" horiz-adv-x="1920" d="M0 549v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8 q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90 q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5zM384 640q0 -106 75 -181t181 -75 t181 75t75 181t-75 181t-181 75t-181 -75t-75 -181zM1152 58v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 
 -25 -51 -138q17 -23 30 -52q149 -15 149 -31 v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31zM1152 1082v140q0 16 149 31q13 29 30 52 q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71 q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31zM1408 128q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5q0 52 -38 90t-90 38t-90 -38t-38 -90zM1408 1152q0 -53 37.5 -90.5 t90.5 -37.5t90.5 37.5t37.5 90.5q0 52 -38 90t-90 38t-90 -38t-38 -90z" />
-<glyph unicode="&#xf086;" horiz-adv-x="1792" d="M0 768q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257t-94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25 t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224zM616 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5 t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132z" />
-<glyph unicode="&#xf087;" d="M0 128v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43 q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5zM128 192q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45zM384 128h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5 t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85 t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640z" />
-<glyph unicode="&#xf088;" d="M0 512v640q0 53 37.5 90.5t90.5 37.5h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -74 49 -163q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186 q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5zM128 1088q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45zM384 512h32q16 0 35.5 -9 t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 32 18 69t-17.5 73.5 t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640z" />
-<glyph unicode="&#xf089;" horiz-adv-x="896" d="M0 889q0 37 56 46l502 73l225 455q19 41 49 41v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48z" />
-<glyph unicode="&#xf08a;" horiz-adv-x="1792" d="M0 940q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138z M128 940q0 -168 187 -355l581 -560l580 559q188 188 188 356q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5 t-21.5 -143z" />
-<glyph unicode="&#xf08b;" horiz-adv-x="1664" d="M0 288v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5q0 -4 1 -20t0.5 -26.5t-3 -23.5 t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5zM384 448v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45t-19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf08c;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM223 1030q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86z M237 122h231v694h-231v-694zM595 122h231v388q0 38 7 56q15 35 45 59.5t74 24.5q116 0 116 -157v-371h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694z" />
-<glyph unicode="&#xf08d;" horiz-adv-x="1152" d="M0 320q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19 t-19 45zM416 672q0 -14 9 -23t23 -9t23 9t9 23v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448z" />
-<glyph unicode="&#xf08e;" horiz-adv-x="1792" d="M0 288v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832 q-119 0 -203.5 84.5t-84.5 203.5zM685 576q0 13 10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23z" />
-<glyph unicode="&#xf090;" d="M0 448v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45t-19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45zM894.5 78.5q0.5 10.5 3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113 t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5q0 4 -1 20t-0.5 26.5z" />
-<glyph unicode="&#xf091;" horiz-adv-x="1664" d="M0 928v128q0 40 28 68t68 28h288v96q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91t97.5 -37q75 0 133.5 -45.5 t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143zM128 928q0 -78 94.5 -162t235.5 -113q-74 162 -74 371 h-256v-96zM1206 653q141 29 235.5 113t94.5 162v96h-256q0 -209 -74 -371z" />
-<glyph unicode="&#xf092;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-224q-16 0 -24.5 1t-19.5 5t-16 14.5t-5 27.5v239q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204 q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52 t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -103t0.5 -68q0 -22 -11 -33.5t-22 -13t-33 -1.5h-224q-119 0 -203.5 84.5t-84.5 203.5zM271 315q3 5 13 2 q10 -5 7 -12q-5 -7 -13 -2q-10 5 -7 12zM304 290q6 6 16 -3q9 -11 2 -16q-6 -7 -16 3q-9 11 -2 16zM335 233q-9 13 0 18q9 7 17 -6q9 -12 0 -19q-8 -6 -17 7zM370 206q8 9 20 -3q12 -11 4 -19q-8 -9 -20 3q-13 11 -4 19zM419 168q4 11 19 7q
 16 -5 13 -16q-4 -12 -19 -6 q-17 4 -13 15zM481 154q0 11 16 11q17 2 17 -11q0 -11 -16 -11q-17 -2 -17 11zM540 158q-2 12 14 15q16 2 18 -9q2 -10 -14 -14t-18 8z" />
-<glyph unicode="&#xf093;" horiz-adv-x="1664" d="M0 -32v320q0 40 28 68t68 28h427q21 -56 70.5 -92t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68zM325 936q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69q-17 -40 -59 -40 h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40zM1152 64q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45zM1408 64q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
-<glyph unicode="&#xf094;" d="M0 433q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5q0 -165 -70 -327.5 t-196 -288t-281 -180.5q-124 -44 -326 -44q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5zM128 434q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5 q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24 q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5z" />
-<glyph unicode="&#xf095;" horiz-adv-x="1408" d="M0 1069q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235 t235 -174q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5 t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5z" />
-<glyph unicode="&#xf096;" horiz-adv-x="1408" d="M0 288v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5zM128 288q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47 t-47 -113v-832z" />
-<glyph unicode="&#xf097;" horiz-adv-x="1280" d="M0 7v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62zM128 38l423 406l89 85l89 -85l423 -406 v1242h-1024v-1242z" />
-<glyph unicode="&#xf098;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 905q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5 q6 -2 30 -11t33 -12.5t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5 t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5z" />
-<glyph unicode="&#xf099;" horiz-adv-x="1664" d="M44 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5 q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145z" />
-<glyph unicode="&#xf09a;" horiz-adv-x="1024" d="M95 631v296h255v218q0 186 104 288.5t277 102.5q147 0 228 -12v-264h-157q-86 0 -116 -36t-30 -108v-189h293l-39 -296h-254v-759h-306v759h-255z" />
-<glyph unicode="&#xf09b;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -39.5 7t-12.5 30v211q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44 l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3 q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -89t0.5 -54q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5z" />
-<glyph unicode="&#xf09c;" horiz-adv-x="1664" d="M0 96v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68z" />
-<glyph unicode="&#xf09d;" horiz-adv-x="1920" d="M0 32v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113zM128 32q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v608h-1664v-608zM128 1024h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600 q-13 0 -22.5 -9.5t-9.5 -22.5v-224zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
-<glyph unicode="&#xf09e;" horiz-adv-x="1408" d="M0 192q0 80 56 136t136 56t136 -56t56 -136t-56 -136t-136 -56t-136 56t-56 136zM0 697v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5t259 -181.5q114 -113 181.5 -259t80.5 -306q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5 t-391.5 184.5q-25 2 -41.5 20t-16.5 43zM0 1201v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294q187 -186 294 -425.5t120 -501.5q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102 q-25 1 -42.5 19.5t-17.5 43.5z" />
-<glyph unicode="&#xf0a0;" d="M0 160v320q0 25 16 75l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113zM128 160q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5v320q0 13 -9.5 22.5t-22.5 9.5h-1216 q-13 0 -22.5 -9.5t-9.5 -22.5v-320zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM880 320q0 33 23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5t-23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5zM1136 320q0 33 23.5 56.5t56.5 23.5 t56.5 -23.5t23.5 -56.5t-23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5z" />
-<glyph unicode="&#xf0a1;" horiz-adv-x="1792" d="M0 672v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50 t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113zM768 633q377 -42 768 -341v954q-394 -302 -768 -343v-270z" />
-<glyph unicode="&#xf0a2;" horiz-adv-x="1664" d="M0 128q190 161 287 397.5t97 498.5q0 165 96 262t264 117q-8 18 -8 37q0 40 28 68t68 28t68 -28t28 -68q0 -19 -8 -37q168 -20 264 -117t96 -262q0 -262 97 -498.5t287 -397.5q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38 t-38 90zM183 128h1298q-164 181 -246.5 411.5t-82.5 484.5q0 256 -320 256t-320 -256q0 -254 -82.5 -484.5t-246.5 -411.5zM656 0q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16t-16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16z" />
-<glyph unicode="&#xf0a3;" d="M2 435q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70l-53 -186l188 -48 q40 -10 52 -51q10 -42 -20 -70l-138 -135l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53 q-41 -12 -70 19q-31 29 -19 70l53 186l-188 48q-40 10 -52 51z" />
-<glyph unicode="&#xf0a4;" horiz-adv-x="1792" d="M0 128v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179q0 -105 -75.5 -181 t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5zM128 192q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45zM384 128h32q72 0 167 -32 t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139 q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106q-69 -57 -140 -57h-32v-640z" />
-<glyph unicode="&#xf0a5;" horiz-adv-x="1792" d="M0 769q0 103 76 179t180 76h374q-22 60 -22 128q0 122 81.5 189t206.5 67q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5v-640 q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181zM128 768q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119 q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-2 3 -3.5 4.5t-4 4.5t-4.5 5q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5 t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576q-50 0 -89 -38.5t-39 -89.5zM1536 192q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
-<glyph unicode="&#xf0a6;" d="M0 640q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5t-90.5 -37.5h-640 q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5zM128 640q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140 v-32h640v32q0 72 32 167t64 193.5t32 179.5q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576q-20 0 -48.5 15t-55 33t-68 33t-84.5 15 q-67 0 -97.5 -44.5t-30.5 -115.5zM1152 -64q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
-<glyph unicode="&#xf0a7;" d="M0 640q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317q0 -142 -77.5 -230t-217.5 -87 l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5zM128 640q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33t55 33t48.5 15v-576q0 -50 38.5 -89 t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112 q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5zM1152 1344q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
-<glyph unicode="&#xf0a8;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM251 640q0 -27 18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502 q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45z" />
-<glyph unicode="&#xf0a9;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM256 576q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18 l362 362l91 91q18 18 18 45t-18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128z" />
-<glyph unicode="&#xf0aa;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM252 641q0 -27 18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19 t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45t-18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45z" />
-<glyph unicode="&#xf0ab;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM252 639q0 -27 18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45t-18 45l-91 91 q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45z" />
-<glyph unicode="&#xf0ac;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM226 979q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18 q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13 q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10t17 -20q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5 t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.
 5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13 q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25 t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5 t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q7 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4 q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5q15 10 -7 16q-17 5 -43 -12q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.
 5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8 q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 10.5t-9.5 10.5q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5 q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26 q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-5 7 -8 9q-12 4 -27 -5 q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -
 4.5t-6 -4q-3 -4 0 -14t-2 -14 q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5 q-16 0 -22 -1q-146 -80 -235 -222zM877 26q0 -6 2 -16q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7 t-10 1.5t-11.5 -7q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5z" />
-<glyph unicode="&#xf0ad;" horiz-adv-x="1664" d="M21 0q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90zM256 64q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45zM768 960q0 185 131.5 316.5t316.5 131.5q58 0 121.5 -16.5 t107.5 -46.5q16 -11 16 -28t-16 -28l-293

<TRUNCATED>
http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/fonts/fontawesome-webfont.ttf
----------------------------------------------------------------------
diff --git a/site/src/site/assets/fonts/fontawesome-webfont.ttf b/site/src/site/assets/fonts/fontawesome-webfont.ttf
deleted file mode 100644
index 5cd6cff..0000000
Binary files a/site/src/site/assets/fonts/fontawesome-webfont.ttf and /dev/null differ


[06/20] groovy-user-site git commit: move content to asf-site branch

Posted by pa...@apache.org.
http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/pages/thanks.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/pages/thanks.groovy b/site/src/site/pages/thanks.groovy
deleted file mode 100644
index 2b62596..0000000
--- a/site/src/site/pages/thanks.groovy
+++ /dev/null
@@ -1,51 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Thanks',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            include template: 'includes/community-navbar.groovy'
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-building-o') {}
-                                yield ' Thanks'
-                            }
-                            article {
-                                p "The Apache Groovy team would like to thank:"
-                                ul {
-                                    li """
-                                        ${$a(href: 'http://www.apache.org', 'The Apache Software Foundation')} which owns
-                                        the project. We want to ${$a(href: 'http://www.apache.org/foundation/thanks.html', 'thank')} the Apache
-                                        Software Foundation and its sponsors for providing support for the Apache Community of open-source software projects.
-                                     """
-                                    li """
-                                        ${$a(href: 'http://www.jetbrains.com/', 'JetBrains')} cover the cost of our server
-                                        which runs our continuous integration server, hosts our documentation and website,
-                                        and they are also offering free licenses for
-                                        the ${$a(href: 'http://www.jetbrains.com/teamcity/', 'TeamCity')} integration server and
-                                        the ${$a(href: 'http://www.jetbrains.com/idea/', 'IntelliJ IDEA')} development environment.
-                                    """
-                                    li """
-                                        ${$a(href: 'http://www.jfrog.com/', 'JFrog')} provide the infrastructure
-                                        for deploying and hosting our snapshots and releases,
-                                        thanks to the ${$a(href: 'https://bintray.com/', 'Bintray')} social platform for distribution,
-                                        and the OSS ${$a(href: 'http://www.jfrog.com/home/v_artifactory_opensource_overview', 'Artifactory')} repository.
-                                    """
-                                }
-                                p """
-                                    Sponsors are a key ingredient of the success of the Apache projects.
-                                    If you consider helping the project in any way,
-                                    please don't hesitate to contact the Groovy development team.
-                                    Your help will be most appreciated.
-                                """
-                            }
-                            hr(class: 'divider')
-                        }
-                    }
-                }
-            }
-        }

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/pages/usergroups.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/pages/usergroups.groovy b/site/src/site/pages/usergroups.groovy
deleted file mode 100644
index 9df11c1..0000000
--- a/site/src/site/pages/usergroups.groovy
+++ /dev/null
@@ -1,66 +0,0 @@
-import model.UserGroup
-
-/**
- * Ths template is generating the user groups page.
- * If you want to add a user group, please edit the "usergroups" section in src/site/sitemap.groovy
- */
-
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - User groups',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            include template: 'includes/community-navbar.groovy'
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-users') {}
-                                yield ' User groups'
-                            }
-                            article {
-                                p '''
-                                    We're living in a virtual world, but it's great from time to time to be able to meet in real life,
-                                    chat with other Groovy users, discover new aspects of the language or platform,
-                                    attend presentations about special features or ecosystem projects, and more.
-                                    Groovy user groups are there for you to exchange with others about your favorite language.
-                                '''
-
-                                Map groups = userGroups.groupBy { UserGroup g -> g.locationParts[0] }.sort { it.key }
-                                def groupAnchor = { groupName -> groupName.toLowerCase().replaceAll('[^a-zA-Z]', '') }
-
-                                // anchors for continents
-                                ul {
-                                    groups.keySet().each { group ->
-                                        li { a(href: "#${groupAnchor(group)}", group) }
-                                    }
-                                }
-
-                                // iterate on each top region
-                                groups.each { name, list ->
-                                    hr(class: 'divider')
-                                    a(name: groupAnchor(name)) {}
-                                    h2(name)
-                                    Map split = list.groupBy { UserGroup g -> g.locationParts[1] }.sort { it.key }
-                                    split.each { subregion, items ->
-                                        h3(subregion)
-                                        ul {
-                                            items.each { g ->
-                                                if (g.url) {
-                                                    li { a(href: g.url, g.name) }
-                                                } else {
-                                                    li(g.name)
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/pages/versioning.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/pages/versioning.groovy b/site/src/site/pages/versioning.groovy
deleted file mode 100644
index f33b32a..0000000
--- a/site/src/site/pages/versioning.groovy
+++ /dev/null
@@ -1,69 +0,0 @@
-layout 'layouts/main.groovy', true,
-        pageTitle: 'The Apache Groovy programming language - Versioning',
-        mainContent: contents {
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li {
-                                    a(href: 'download.html', 'Download Groovy')
-                                }
-                                li {
-                                    a(href: 'download.html#distro', class: 'anchor-link', 'Distributions')
-                                }
-                                li {
-                                    a(href: 'download.html#sdkman', class: 'anchor-link', 'Through SDKMAN!')
-                                }
-                                li {
-                                    a(href: 'download.html#buildtools', class: 'anchor-link', 'From your build tools')
-                                }
-                                li {
-                                    a(href: 'download.html#otherways', class: 'anchor-link', 'Other ways to get Groovy')
-                                }
-                                li(class: 'active') {
-                                    a(href: 'versioning.html') {
-                                        strong 'Groovy version scheme'
-                                    }
-                                }
-                                li {
-                                    a(href: 'indy.html', 'Invoke dynamic support')
-                                }
-                            }
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            include template: 'includes/contribute-button.groovy'
-                            h1 {
-                                i(class: 'fa fa-copy') {}
-                                yield ' Groovy version scheme'
-                            }
-                            article {
-                                h2 'Since Groovy 2.0.0'
-                                p "Since Groovy 2.0.0 we follow the ${$a(href: "http://semver.org/", 'semantic version scheme')}. This means the next minor version after 2.0.0 is 2.1.0, the first bugfix version after 2.0 is 2.0.1 and the next major version will be 3.0.0."
-
-                                h2 'Before Groovy 2.0.0'
-                                p 'Before Groovy 2.0.0 we followed a version scheme where we had X.Y.Z, where X.Y was the major version, and Z the minor version.\n' +
-                                        'Bugfix versions where not really done, you had to upgrade to the next minor version for that.\n' +
-                                        'Since Groovy 1.0 we incremented only the Y for a new major version.\n' +
-                                        'The increment of X we wanted to leave for a very big breaking change, like a new Meta-Object Protocol.\n' +
-                                        'The last major version in these scheme is 1.8(.0), 1.8.1 is the first minor and bugfix version.\n' +
-                                        'The major versions in the past using this scheme are: 1.8, 1.7, 1.6, 1.5, 1.0. Each of them having around 10 minor/bugfix versions.'
-
-                                h2 'Official Major Version'
-                                p 'The official major version is the current major version that should/can be used by the developers if they are not bound to a specific major version.'
-
-                                h2 'Maintenance Release Branch'
-                                p 'Here we indicate a former major version\'s bugfix release.'
-
-                                h2 'How long is a major version maintained?'
-                                p 'That depends on the users. Let\'s say we have X in maintenance and Y is the official major version, ' +
-                                        'then if a new major version Z is released, Y goes into maintenance. Usually we make one or two more bugfix releases for X and then we discontinue it, ' +
-                                        'unless there are strong requests to have certain things fixed for users that can absolutely not upgrade.'
-                            }
-                            hr(class: 'divider')
-                        }
-                    }
-                }
-            }
-        }

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/pages/wiki.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/pages/wiki.groovy b/site/src/site/pages/wiki.groovy
deleted file mode 100644
index 336c960..0000000
--- a/site/src/site/pages/wiki.groovy
+++ /dev/null
@@ -1,68 +0,0 @@
-import generator.DocUtils
-import org.asciidoctor.ast.DocumentHeader
-
-modelTypes = {
-    DocumentHeader header
-    String title
-    String notes
-}
-
-title = header.documentTitle.main
-
-layout 'layouts/main.groovy', true,
-        pageTitle: "The Apache Groovy programming language - Developer docs - $title",
-        extraStyles: ['https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.css'],
-        extraFooter: contents {
-            script(src:'https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.js') { }
-            script { yieldUnescaped "document.addEventListener('DOMContentLoaded',prettyPrint)" }
-        },
-        mainContent: contents {
-            Map options = [attributes:[DOCS_BASEURL:DocUtils.DOCS_BASEURL]]
-            def notesAsHTML = asciidocText(notes,options)
-            def matcher = notesAsHTML =~ /<h2 id="(.+?)">(.+?)<\/h2>/
-            def sections = [:]
-            while (matcher.find()) {
-                sections[matcher.group(1)] = matcher.group(2)
-            }
-
-            div(id: 'content', class: 'page-1') {
-                div(class: 'row') {
-                    div(class: 'row-fluid') {
-                        div(class: 'col-lg-3') {
-                            ul(class: 'nav-sidebar') {
-                                li(class:'active') {
-                                    a(href: '#doc', title)
-                                }
-                                sections.each { k,v ->
-                                    li {
-                                        a(href:"#$k", class: 'anchor-link', v)
-                                    }
-                                }
-                            }
-                        }
-
-                        div(class: 'col-lg-8 col-lg-pull-0') {
-                            a(name:"doc"){}
-                            h1(title)
-                            if (header.author) {
-                                p {
-                                    yield 'Author: '
-                                    i(header.author.fullName)
-                                }
-                            } else {
-                                p {
-                                    yield 'Authors: '
-                                    i(header.authors*.fullName.join(', '))
-                                }
-
-                            }
-                            if (header.revisionInfo?.date) {
-                                p("Last update: ${header.revisionInfo.date} (${header.revisionInfo.remark?:'no comment'})")
-                            }
-                            hr()
-                            yieldUnescaped notesAsHTML
-                        }
-                    }
-                }
-            }
-        }

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/releasenotes/groovy-1.5.adoc
----------------------------------------------------------------------
diff --git a/site/src/site/releasenotes/groovy-1.5.adoc b/site/src/site/releasenotes/groovy-1.5.adoc
deleted file mode 100644
index ab32a83..0000000
--- a/site/src/site/releasenotes/groovy-1.5.adoc
+++ /dev/null
@@ -1,858 +0,0 @@
-Groovy, the Java-like dynamic language for
-the JVM, matures over time like good wines. After the successful release
-of Groovy 1.0 in January 2007, the next major milestone with the 1.5
-label already hits the shelves. With it, come several interesting
-novelties that we will examine in this article. The major addition to
-the language is the support of Java 5 features with annotations,
-generics and enums, making Groovy�*the sole alternative dynamic language
-for the JVM fully supporting frameworks like Spring, Hibernate, JPA*,
-Google Guice, or TestNG. Apart from the new Java 5 features, a few
-syntax enhancements find their way in the language, as well as a more
-powerful dynamic behavior customization, a Swing UI builder on steroids,
-and improved tooling support.
-
-[[Groovy15releasenotes-AgroovierGroovyandwhyitmatters]]
-== A groovier Groovy and why it matters
-
-Groovy\u2019s key selling point has always been its�*seamless integration
-with Java*. You can mix and match Groovy and Java classes together in
-very easy ways: You may have a Groovy class extending a Java class
-implementing a Groovy interface, and vice versa. Most of the other
-alternative JVM languages unfortunately won\u2019t let you seamlessly
-interchange classes of two different languages. So if you want to use
-the best language for the job without compromising your nice class
-hierarchy, you won\u2019t have many options to choose from, and Groovy gives
-you all the freedom for integrating both languages in the most
-transparent way.
-
-Groovy shares the same libraries, the same object model, the same
-threading model, and the same security model as Java. In a way, you can
-consider Groovy as an implementation detail of your Java
-project,�*without having to bear problematic impedance mismatch issues*.
-
-Groovy is Java, and Groovy makes Java groovier. Compared with other
-languages, Groovy is certainly the language that provides the�*flattest
-learning curve to Java developers*, thanks to a very similar syntax.
-
-This is even more important to keep in mind that Groovy generates normal
-Java bytecode and uses the usual JDK libraries, so you won\u2019t need to
-learn whole new APIs or have complex integration mechanisms: out of the
-box, Groovy and Java are interchangeable. The added benefit is that you
-can�*protect the investment*you made in Java�*skills for your
-developers*, or in�*costly application servers*, or third party
-or�*home-grown libraries*, as you can reuse all of them without a
-problem from Groovy.
-
-Speaking of calling into JDK, third party, or in-house libraries,
-alternative languages which don\u2019t support strong typing, can\u2019t always
-call all Java methods because of the fact they can\u2019t choose a certain
-polymorphic variation of the same method. When choosing an alternative
-language to improve your productivity or make your code more readable,
-if you need to call other Java classes, you will have to be very careful
-to the choice of language you will make, as you may encounter some road
-blocks along the way.
-
-These days, all major Enterprise frameworks require the use of features
-like annotations, enums or generics, to be leveraged at their fullest
-extent. Fortunately, with Groovy 1.5, developers can benefit from the
-support of all these Java 5 features in their projects. Let\u2019s see how
-annotations, enums and generics can be used from Groovy.
-
-[[Groovy15releasenotes-Java5additions]]
-== Java 5 additions
-
-The Groovy compiler always generates Java bytecode which is compatible
-with older Java VMs, but relies on JDK 1.4 for the core libraries it is
-using. However, for certain of these Java 5 additions, using Java 5
-bytecode was required, so that, for example, the generated classes may
-contain the bytecode information representing annotations with runtime
-retention policy. So although Groovy 1.5 can run on JDK 1.4, certain of
-these features will only be usable on JDK 5 - when this is the case, it
-will be mentioned in this article.
-
-[[Groovy15releasenotes-Variablearguments]]
-=== Variable arguments
-
-In Java 5, the ellipsis notation was created to denote methods with
-variable length arguments. With those little triple dots, Java lets
-users put as many parameters of the same type at the end of a method -
-actually, the vararg parameter is just an array of elements of that
-type. Varargs were already present in Groovy 1.0 - and still work with a
-JDK 1.4 runtime, but it is good to show how you can use them. Basically,
-whenever the last argument of a method is an array of objects, or a
-parameter declaration with a triple dot, you can pass multiple
-parameters to this method.
-
-A first example will show the usage of varargs in Groovy with the
-ellipsis:
-
-[source,groovy]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-int sum(int... someInts) {
-    def total = 0
-    for (int i = 0; i < someInts.size(); i++) total += someInts[i]
-    return total
-}
-assert sum(1) == 1
-assert sum(1, 2) == 3
-assert sum(1, 2, 3) == 6
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-The assertions used in this example show how we can pass as many ints as
-desired. It is also interesting to see that, for more syntax
-compatibility with Java, the classical for loop has been added into
-Groovy - despite the presence of the groovier version with the in
-keyword that can also transparently iterate over various array or
-collection types.
-
-Note that it is possible to have varargs support even with an array as
-last parameter by declaring the method as follows:
-
-[source,groovy]
----------------------------------
-int sum(int[] someInts) { /* */ }
----------------------------------
-
-This snippet is really trivial, and there are obviously more expressive
-ways of calculating a sum. For instance, if you have a list of numbers,
-you can sum all of them in a single line of code:
-
-[source,groovy]
----------------------------
-assert [1, 2, 3].sum() == 6
----------------------------
-
-Varargs in Groovy don\u2019t require JDK 5 as the underlying Java runtime,
-unlike annotations that we are now going to look at in the following
-section.
-
-[[Groovy15releasenotes-Annotations]]
-=== Annotations
-
-As shown in
-the�http://docs.jboss.com/seam/1.3.0.ALPHA/reference/en/html/ch10.html[documentation
-of JBoss Seam]�which supports Groovy for writing its entities,
-controllers and components, annotations like�*@Entity, @Id,
-@Override*�and others can be used to decorate your beans:
-
-[source,groovy]
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-@Entity
-@Name("hotel")
-class Hotel implements Serializable {
-   @Id @GeneratedValue Long id
-   @Length(max=50) @NotNull String name
-   @Length(max=100) @NotNull String address
-   @Length(max=40) @NotNull String city
-   @Length(min=2, max=10) @NotNull String state
-   @Length(min=4, max=6) @NotNull String zip
-   @Length(min=2, max=40) @NotNull String country
-   @Column(precision=6, scale=2) BigDecimal price
-   @Override
-   String toString() {
-      return "Hotel(${name}, ${address}, ${city}, ${zip})"
-   }
-}
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-The Hotel entity is marked with the @Entity annotation, and it\u2019s given a
-name through @Name. Different parameters can be passed to your
-annotations like in the @Length annotation constraint where different
-upper and lower bound can be set for validation purpose. You can also
-notice�*Groovy properties*�in action: Where are all the getters and
-setters? Where are the public or private modifiers? You don\u2019t have to
-wait for Java 7 or 8 to get properties! By convention, defining a
-property is as simple as String country: a private country field will be
-auto-generated, as well as a public getter and setter.�*Your code
-becomes naturally more concise and readable*.
-
-Annotations can be used on classes, fields, methods and method
-parameters, like in Java. There are, however, two gotchas to be aware
-of. Firstly, you can use annotations in Groovy, but you cannot yet
-define them - however, it will be possible in an upcoming version of
-Groovy. Secondly, although the syntax is almost 100% the same as in
-Java, there is a little difference when an array of values is passed in
-parameter of the annotation: instead of curly braces to surround the
-elements, Groovy requires the use of square brackets to offer a more
-homogeneous syntax - since Groovy lists and arrays use square brackets
-to surround their elements as well.
-
-With annotations in Groovy 1.5, you can easily define your JPA or
-Hibernate annotated beans
-in Groovy, add an�`@Transactional`�annotation on your Spring services,
-test your Swing UI with TestNG and Fest
-(http://www.jroller.com/aalmiray/entry/testing_groovy_uis_with_fest).
-All the useful and powerful enterprise frameworks leveraging annotations
-can be used from your Groovy-powered projects.
-
-[[Groovy15releasenotes-Enums]]
-=== Enums
-
-Whenever you need a fixed set of constants of a same type, Enums come in
-handy. Say you need a clean way to define constants for days without
-resorting to using integer constants? Then Enums are your friend. The
-following snippet shows how to define the days of the week:
-
-[source,groovy]
-----------------------------------------------------------------------------------
-enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }
-----------------------------------------------------------------------------------
-
-Once you have defined your enum, you can use it as in Java with the
-usual notation�*Day.MONDAY*�and you can spice up your switch / case
-statements with it as well:
-
-[source,groovy]
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-def today = Day.SATURDAY
-switch (today) {
-     // Saturday or Sunday
-     case [Day.SATURDAY, Day.SUNDAY]: println "Weekends are cool"
-              break
-     // a day between Monday and Friday
-     case Day.MONDAY..Day.FRIDAY: println "Boring work day"
-              break
-     default: println "Are you sure this is a valid day?"
-}
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-Notice that Groovy\u2019s switch is a bit more powerful than C-like languages
-switches in that it is possible to use any kind of object in the switch
-and case. Instead of stacking up seven different case block with each
-enumerated value, you can regroup them in lists or ranges: whenever the
-value is in the list or the range, the case will be true and its
-associated instructions will be executed.
-
-A more complex example inspired by the Java tutorial takes a more
-astronomical perspective on enums, and shows how your enums can have
-properties, constructors and methods:
-
-[source,groovy]
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-enum Planet {
-   MERCURY (3.303e+23, 2.4397e6),
-   VENUS   (4.869e+24, 6.0518e6),
-   EARTH   (5.976e+24, 6.37814e6),
-   MARS    (6.421e+23, 3.3972e6),
-   JUPITER (1.9e+27,   7.1492e7),
-   SATURN  (5.688e+26, 6.0268e7),
-   URANUS  (8.686e+25, 2.5559e7),
-   NEPTUNE (1.024e+26, 2.4746e7)
-   double mass
-   double radius
-   Planet(double mass, double radius) {
-      this.mass = mass;
-      this.radius = radius;
-   }
-   void printMe() {
-      println "${name()} has a mass of ${mass} " +
-              "and a radius of ${radius}"
-   }
-}
-Planet.EARTH.printMe()
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-Like annotations, enums in Groovy require a JDK 5+ to run on, as Java 5
-bytecode is generated.
-
-[[Groovy15releasenotes-Staticimports]]
-=== Static imports
-
-In our previous examples of enums, we always had to prefix the
-enumerated value with its parent enum class, but thanks to static
-imports (which work even on a JDK 1.4 runtime) we can save some
-characters by dropping the Planet prefix:
-
-[source,groovy]
---------------------------------------
-import static Planet.*SATURN.printMe()
---------------------------------------
-
-No more Planet prefix. But of course, static imports aren\u2019t only
-available for enums, but also work for other classes and static fields.
-What about doing some math?
-
-[source,groovy]
--------------------------------------------------------------------
-import static java.lang.Math.*assert sin(PI / 6) + cos(PI / 3) == 1
--------------------------------------------------------------------
-
-Both the static methods of�*java.lang.Math*�and its static constants
-were statically imported to make the expression more concise. But if the
-abbreviations of sine and cosine are not readable for you, you can use
-aliasing in Groovy with the as keyword:
-
-[source,groovy]
-----------------------------------------------------------------------------------------------------------------------------------------------------------
-import static java.lang.Math.PI
-import static java.lang.Math.sin as sine
-import static java.lang.Math.cos as cosine
-assert sine(PI / 6) + cosine(PI / 3) == 1
-----------------------------------------------------------------------------------------------------------------------------------------------------------
-
-Aliasing also works with normal imports too, not just static imports,
-and it can be pretty handy for adding some shortcut notation to very
-long class names as found in many frameworks, or for renaming methods or
-constants with non-obvious names, or not following your naming
-convention standards.
-
-[[Groovy15releasenotes-Generics]]
-=== Generics
-
-A somewhat more controversial feature of Java 5 also finds its way in
-the latest release of Groovy 1.5 with Generics. Initially, it may feel
-odd to add even more typing information to a dynamic language, after
-all. Java developers usually believe that because of type erasure (for
-backward compatibility reasons with older versions of Java) no
-information is left in the class bytecode to represent the generic type.
-However, this is wrong, since through the reflection API, you are able
-to introspect a class to discover the types of its fields or of its
-methods arguments with the generics details.
-
-So for instance, when you declare of field of type�*List<String>*,
-somewhere in the bytecode, this information is kept in the form of some
-meta-information, although this field is really just of type�*List*.
-This kind of reflexive information is used by enterprise frameworks like
-JPA or Hibernate to be able to relate a collection of elements from an
-entity to the entity representing the type of these elements.
-
-To put this into practice, let us check if the generics information is
-kept on class fields:
-
-[source,groovy]
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-class Talk { String title }
-class Speaker {
-   String name
-   List<Talk> talks = []
-}
-def me = new Speaker(name: 'Guillaume Laforge',
-   talks: [new Talk(title: 'Groovy'),new Talk(title: 'Grails')])
-def talksField =  me.class.getDeclaredField('talks')
-assert talksField.genericType.toString() ==   �'java.util.List<Talk>'
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-We defined two classes: a Speaker class giving Talks at conferences. In
-the Speaker class, the talks property is of type�*List<Talk>*. Then, we
-create a Speaker instance with two nice shortcuts for initializing the
-name and talks properties, and for creating a list of Talk instances.
-Once this setup code is ready, we retrieve the field representing the
-talks, and we check that the generic type information is correct:
-yes,�*talks*�is a�*List*, but a�*List*�of�*Talks*.
-
-[[Groovy15releasenotes-Covariantreturntypes]]
-=== Covariant return types
-
-In Java 5, if you have a method in a subclass with the same name and
-parameter types as in a parent class, but with a return type derived
-from the parent method\u2019s return type, then we can override the parent
-method. In Groovy 1.0, covariant return types were not supported. But in
-Groovy 1.5, you can use them. Additionally, if you are trying to
-override a method with a return type not deriving from the parent class
-method\u2019s return type, a compilation error will be thrown. Covariant
-return types also work with parameterized types.
-
-Beyond the support of Java 5 features which brought a few additions to
-the language, a few other syntax enhancements have been introduced in
-Groovy 1.5, and we are going to discover them in the following section.
-
-[[Groovy15releasenotes-Syntaxadditions]]
-== Syntax additions
-
-[[Groovy15releasenotes-Elvisoperator]]
-=== Elvis operator
-
-Apart from the Java 5 features that brought annotations, generics and
-enums into Groovy, a new operator finds its way into the language: ?:
-the Elvis operator. When you see the operator in question, you will
-easily guessed why it was nicknamed that way - if not, think in terms of
-Smiley. This new operator is, in fact, a shortcut notation for the
-ternary operator. How many times are you using the ternary operator to
-change the value of a variable if its content is null to assign it some
-default value? The typical case in Java is as follows:
-
-[source,groovy]
--------------------------------------------------------------------------------
-String name = "Guillaume";
-String displayName = name != null ? name : "Unknown";
--------------------------------------------------------------------------------
-
-In Groovy, since the language is able to ``coerce'' types to boolean
-values as needed (for instance where conditional expressions are
-required like in if or while constructs), in this statement, we can omit
-the comparison to null, because when a String is null, it is coerced to
-false, so in Groovy, the statement would become:
-
-[source,groovy]
----------------------------------------------------------------------
-String name = "Guillaume"
-String displayName = name ? name : "Unknown"
----------------------------------------------------------------------
-
-However, you will still notice the repetition of the name variable,
-which would violate the DRY principle (Don\u2019t Repeat Yourself). As this
-construct is pretty common, the Elvis operator was introduced to
-simplify such recurring cases, and the statements become:
-
-[source,groovy]
-----------------------------------------------------------------
-String name = "Guillaume"
-String displayName = name ?: "Unknown"
-----------------------------------------------------------------
-
-The second occurrence of the name variable is simply omitted and the
-ternary operator is no more ternary and is shortened to this more
-concise form.
-
-It is also worth noticing that there are no side effects to this new
-construct, since the first element (here the name) is not evaluated
-twice as it would be the case with the ternary operator, so there\u2019s no
-need to introduce some intermediate temporary value to hold the result
-of the first evaluation of the first element of the ternary operator.
-
-[[Groovy15releasenotes-Classicalforloop]]
-=== Classical for loop
-
-Although Groovy is not strictly speaking a 100% superset of Java, the
-Groovy syntax comes closer to the Java syntax after each release, and
-more and more Java code is also valid Groovy. The net benefit of this is
-that when you begin with Groovy, you can copy and paste Java code in
-your Groovy classes, and this should just work as expected. Then, over
-time, as you learn the language, you start throwing away the semi-colons
-which are not mandatory in Groovy, using GStrings (interpolated
-strings), or closures, etc. Groovy offers a rather flat learning curve
-to Java developers.
-
-However, there was one omission to this Java-syntax compatibility in the
-fact the classical for loop inherited from Java\u2019s C background wasn\u2019t
-allowed in Groovy. Initially, the Groovy developers thought it was not
-the nicest syntax of all and preferred using the for / in construct
-which was more readable. But as the Groovy users regularly asked for
-this old construct to be also part of Groovy, the team decided to bring
-it back to Groovy.
-
-With Groovy 1.5, you can either chose the Groovy for / in, or prefer the
-classical for loop:
-
-[source,groovy]
------------------------------------------------------------------------
-for (i in 0..9) println i
-for (int i = 0; i < 10; i++) println i
------------------------------------------------------------------------
-
-At the end of the day, it is probably more a matter of taste, and long
-time Groovy users usually prefer the most concise syntax with the for /
-in loop instead.
-
-[[Groovy15releasenotes-Namedparameterswithoutparenthesis]]
-=== Named parameters without parenthesis
-
-With its malleable and concise syntax, and its advanced dynamic
-capabilities,�*Groovy is an ideal choice for implementing internal
-Domain-Specific Languages*. When you want to share a common metaphor
-between subject matter experts and developers, you can leverage Groovy
-to create a dedicated business language which models the key concept and
-business rules of your application. An important aspect of these DSLs is
-to make the code very readable, and also easier to write by
-non-technical persons. To achieve this goal even further, the grammar of
-the language was tweaked to allow us to use named parameters without the
-surrounding parenthesis.
-
-First of all, in Groovy, named parameters look like this:
-
-[source,groovy]
--------------------------------------------------------------------------------------------
-fund.compare(to: benchmarkFund, in: euros)
-compare(fund: someFund, to: benchmark, in: euros)
--------------------------------------------------------------------------------------------
-
-By adding new properties to numbers - which is possible in Groovy but
-beyond the scope of this article - we can also write code like this:
-
-[source,groovy]
----------------------------------------
-monster.move(left: 3.meters, at: 5.mph)
----------------------------------------
-
-Now by omitting parenthesis, the code can become a little clearer as
-shown below:
-
-[source,groovy]
--------------------------------------------------------------------------------------------------------------------------------
-fund.compare to: benchmarkFund, in: euros
-compare fund: someFund, to: benchmark, in: euros
-monster.move left: 3.meters, at: 5.mph
--------------------------------------------------------------------------------------------------------------------------------
-
-Obviously, this is not a big difference, but each statement becomes
-closer to real plain English sentences, and removes the usual
-boiler-plate technical code of the host language. This little
-enhancement of the grammar of the Groovy language gives more options to
-the designers of the business DSL.
-
-[[Groovy15releasenotes-Improvedtoolingsupport]]
-== Improved tooling support
-
-A common show-stopper when Groovy was a young language, was the lack of
-good tooling support: both the tool chain and the IDE support weren\u2019t up
-to the task. Fortunately, with the maturity and success of Groovy and
-the Grails web framework, this situation has changed.
-
-[[Groovy15releasenotes-Introductionofthejointcompiler]]
-== Introduction of the joint compiler
-
-Groovy is well-known for its transparent and seamless integration with
-Java. But this is not just about being able to call Java methods from
-Groovy scripts, no, the integration between both languages goes well
-beyond that. For instance, it is totally possible to have a Groovy class
-extending a Java class which in turns implements a Groovy interface, or
-vice versa. This is something other alternative languages don\u2019t alway
-support, unfortunately. However, when mixing Groovy and Java classes
-together, so far, you had to be careful when compiling both type of
-classes by cleverly choosing the order of compilation, and when cyclic
-dependencies were spanning both languages, you may have hit a ``chicken
-and egg'' problem. Fortunately with Groovy 1.5, this is not the case
-anymore, and thanks to a contribution from JetBrains, the makers of the
-award winning�http://www.jetbrains/idea/[Java IDE IntelliJ IDEA], a
-``joint'' compiler is available with which you can compile both Groovy
-and Java sources together in one go without having to think about
-dependencies between classes.
-
-If you want to use the joint compiler from the command-line, you can
-call the groovyc command as usual, but specify the -j flag which will
-enable the joint compilation:
-
-----------------------------------------------------
-groovyc *.groovy *.java -j -Jsource=1.4 -Jtarget=1.4
-----------------------------------------------------
-
-For passing parameters to the underlying javac command, you can prefix
-the flags with the J prefix. You can also use the joint compiler through
-its Ant task from you Ant or Maven build files:
-
-[source,xml]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-<taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc" classpathref="my.classpath"/>
-<groovyc srcdir="${mainSourceDirectory}"
-         destdir="${mainClassesDirectory}"
-         classpathref="my.classpath"
-         jointCompilationOptions="-j -Jsource=1.4 -Jtarget=1.4" />
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-[[Groovy15releasenotes-MavenpluginforGroovy]]
-=== Maven plugin for Groovy
-
-For the Maven users, there is also a fully featured Maven plugin hosted
-at Codehaus which allows you to build your Java / Groovy applications:
-compile your Groovy and Java code, generate documentation from the
-JavaDoc tags, or it even lets you write your own Maven plugins in
-Groovy. There is also a Maven archetype to bootstrap your Groovy project
-more rapidly.
-
-[[Groovy15releasenotes-TheGroovyDocdocumentationtool]]
-=== The GroovyDoc documentation tool
-
-As a Java developer, you are used to documenting your code through
-JavaDoc tags in the comments of your classes, interfaces, fields, or
-methods. In Groovy, you can also use such tags in your comments, and
-have them being used by a tool called GroovyDoc to generate the
-equivalent JavaDoc documentation for all your Groovy classes.
-
-There\u2019s an Ant task you can define then use to generate the
-documentation as follows:
-
-[source,xml]
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-<taskdef name="groovydoc"
-         classname="org.codehaus.groovy.ant.Groovydoc">
-   <classpath>
-      <path path="${mainClassesDirectory}"/>
-      <path refid="compilePath"/>
-   </classpath>
-</taskdef>
-
-<groovydoc destdir="${docsDirectory}/gapi"
-     sourcepath="${mainSourceDirectory}"
-     packagenames="**.*" use="true"
-     windowtitle="Groovydoc"
-     private="false"/>
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-[[Groovy15releasenotes-NewinteractiveshellandtheSwingconsole]]
-== New interactive shell and the Swing console
-
-Groovy distributions always contained two different shells: a
-command-line shell as well as a Swing console. Groovysh, the
-command-line shell, has never been very friendly in terms of
-interactions with its user: whenever you wanted to execute a statement,
-you had to type `go' or `execute' after each one, so that it got
-executed. For quick prototyping or playing with some new API, typing
-`go' each time was very cumbersome. The situation has changed in Groovy
-1.5, since a new interactive shell is born. No need to type `go'
-anymore.
-
-This new shell features several enhancements, such as the use of the
-JLine library which provides ANSI coloring, tab completion for commands,
-line editing capabilities. You can work with different script buffers,
-remember already imported classes, load existing scripts, save the
-current script to a file, browse the history, etc. For detailed
-explanations of the supported features, please have a look at
-the http://www.groovy-lang.org/groovysh.html[documentation].
-
-The command-line shell isn\u2019t the only one that received some care, the
-Swing console has also been improved, with a new toolbar, with advanced
-undo capabilities, the possibility to increase or decrease the font
-size, syntax highlighting. A lot of polishing has been applied to the
-console.
-
-[[Groovy15releasenotes-IntelliJIDEAJetGroovyplugin]]
-=== IntelliJ IDEA JetGroovy plugin
-
-I will save the best of tooling support till the end of this section by
-mentioning the JetGroovy plugin: a free and Open Source IntelliJ IDEA
-plugin dedicated to the support of both Groovy and Grails. This plugin
-has been developed by JetBrains themselves, and provides unmatched
-support for both the language and the web framework.
-
-To list a few of the available features of the Groovy support:
-
-* *Syntax highlighting*�for all the syntax, plus different warnings for
-types not recognized, or when static type information is not known to
-help spot potential errors.
-* Ability to�*run Groovy classes, scripts and JUnit test cases written
-in Groovy*.
-* *Debugger*: You can debug step by step across your Java and Groovy
-code, set breakpoints, show variables, the current stack, etc.
-* Joint compiler: the compiler�*compiles both Groovy and Java*�classes
-together and is able to resolve dependencies between both languages.
-* *Code completion*�for packages, classes, properties, fields,
-variables, methods, keywords, and even specific support for the Swing UI
-builder.
-* Advanced class search and find usage.
-* *Refactorings*: most of the usual refactorings you\u2019ve come to love in
-Java are available as well and work across Java and Groovy, like
-``surround with'', introduce, inline or rename a variable, renaming for
-packages, classes, methods, and fields.
-* *Imports optimizations and code formatting*.
-* Structure view: to have a bird\u2019s eye view of your classes.
-
-At the end of the day, you won\u2019t even notice whether you\u2019re developing a
-class in Groovy or in Java, considering the level of interplay and
-support offered inside IntelliJ IDEA. This is definitely a plugin to
-install if you\u2019re considering adding some dose of Groovy in your Java
-project, or if you plan to develop Grails applications.
-
-More information can be found
-on�http://www.jetbrains.net/confluence/display/GRVY/Groovy+Home[JetBrains
-website].
-
-Although I\u2019m only mentioning the plugin for IntelliJ IDEA, for your
-Groovy developments, you don\u2019t have to change your habits. You can also
-use the Eclipse plugin which is regularly improved by the IBM Project
-Zero developers, or Sun\u2019s brand new support of�Groovy and Grails in
-NetBeans.
-
-[[Groovy15releasenotes-Performanceimprovements]]
-== Performance improvements
-
-Along with new features, this new release of Groovy brings noticeable
-performance improvements as well as lower memory consumption, compared
-to previous versions. In our informal benchmarks measuring the duration
-of all our test suites, we noticed speed improvements between 15% to 45%
-compared with our beta versions of Groovy 1.5 - and certainly higher
-figures can be expected by comparing with the now old Groovy 1.0. More
-formal benchmarks have yet to be developed, but those figures have also
-been confirmed by developers from an insurance company that is using
-Groovy to write the business rules of their policy risk calculation
-engine, and from another company who ran several tests on highly
-parallel machines. Overall, Groovy 1.5 should be faster and leaner in
-most situations. Your mileage may vary depending on your own context of
-usage of Groovy.
-
-[[Groovy15releasenotes-Enhanceddynamiccapabilities]]
-== Enhanced dynamic capabilities
-
-Through the symbiotic relationships between the Groovy and Grails
-projects, new dynamic capabilities have been introduced in Groovy, after
-having matured in the heart of Grails.
-
-Groovy is a dynamic language: put simply, it means that certain things
-like method dispatch happens at runtime, instead of at compile-time as
-it is the case of Java and other languages. There is a specific runtime
-system, called the MOP (stands for Meta-Object Protocol) that is
-responsible for the dispatching logic. Fortunately, this runtime system
-is open enough so that people can hook into the system and change its
-usual behavior. For each Java class and for each Groovy instance, there
-is an associated meta-class which represents this runtime behavior of
-your objects. Groovy offered various ways to interact with the MOP by
-defining custom meta-classes by extending some base class, but thanks to
-the contribution from the Grails project, a groovier kind of meta-class
-is available: the expando meta-class.
-
-Again,code samples are easier to help us understand the concept. In the
-following example, the msg String instance has got a meta-class that we
-can access through the metaClass property. Then we change the meta-class
-of the�*String*�class to add a new method called up to the String class,
-to have a shortcut notation for the�*toUpperCase()*�method. To do so, we
-assign a closure to the up property of the meta-class which is created
-as we assign it the closure. This closure takes no argument (hence why
-it starts with an arrow), and we call the�*toUpperCase()*�method on the
-delegate of the closure, which is a special closure variable which
-represents the real object (here the String instance).
-
-[source,groovy]
-----------------------------------------------------------------------------------------------------------------------
-def msg = "Hello!"
-println msg.metaClass
-String.metaClass.up = { -> delegate.toUpperCase() }
-assert "HELLO!" == msg.up()
-----------------------------------------------------------------------------------------------------------------------
-
-Through this meta-class, you can query the methods and/or properties
-which are available:
-
-[source,groovy]
---------------------------------------------------------------------------------------------------------------------------------------------------
-// print all the methods
-obj.metaClass.methods.each { println it.name }
-
-// print all the properties
-obj.metaClass.properties.each { println it.name }
---------------------------------------------------------------------------------------------------------------------------------------------------
-
-You can even check that a certain method or property is available, with
-a finer granularity than through any instanceof check:
-
-[source,groovy]
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-def msg = 'Hello!'
-if (msg.metaClass.respondsTo(msg, 'toUpperCase')) {
-   println msg.toUpperCase()
-}
-if (msg.metaClass.hasProperty(msg, 'bytes')) {
-   println  foo.bytes.encodeBase64()
-}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-These mechanisms are extensively used in the Grails web framework for
-instance to create dynamic finders: no need for DAOs in most
-circumstances, as you are able to call a�*findByTitle()*�dynamic method
-on a Book domain class. Through meta-classes, Grails automatically
-decorates the domain classes with such methods. Furthermore, if the
-method doesn\u2019t exist yet, it will be created and cached on first use.
-This can be accomplished by other advanced hooks as explained below.
-
-Beyond those examples we\u2019ve seen so far, expando meta-classes also
-provide some complementary hooks. Four other kind of methods can be
-added to an expando meta-class:
-
-* *invokeMethod()*�lets you intercept all methods calls,
-* while�*methodMissing()*�will be called on last resort only of no other
-method is found.
-* *get/setProperty()*�intercepts access to all properties,
-* whereas�*propertyMissing()*�is called when no property can be found.
-
-With expando meta-classes, customizing the behavior of the types of your
-application becomes easier and can save precious time of development
-compared with the previous version of Groovy. Obviously, not everybody
-needs to use those techniques, but they can be handy in a number of
-situations where you want to apply some AOP (Aspect Oriented Techniques)
-to decorate your classes, and when you want to simplify and make more
-readable the business code of your application, by removing some
-unnecessary boiler-plate code.
-
-[[Groovy15releasenotes-Swingonsteroids]]
-== Swing on steroids
-
-The Groovy project has the chance to have a team of talented Swing
-developers who worked hard to enhance the capabilities of Groovy to
-build user interfaces in Swing. The basic brick for building Swing UIs
-in Groovy is the SwingBuilder class: at a syntactical level in your
-source, you can visually see how Swing components are nested within each
-other. A simplistic example from the Groovy website shows how to simply
-create a little GUI:
-
-[source,groovy]
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-import groovy.swing.SwingBuilder
-import java.awt.BorderLayout
-import groovy.swing.SwingBuilder
-import java.awt.BorderLayout as BL
-
-def swing = new SwingBuilder()
-count = 0
-def textlabel
-def frame = swing.frame(title:'Frame', size:[300,300]) {
-   borderLayout()
-   textlabel = label(text:"Clicked ${count} time(s).", constraints: BL.NORTH)
-   button(text:'Click Me', actionPerformed: { count++; textlabel.text = "Clicked ${count} time(s)."; println "clicked"},
-      constraints:BorderLayout.SOUTH)
-}
-frame.pack()
-frame.show()
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-In the novelties, the Swing builder concept has been extend to provide
-custom component factories. There are additional modules, not bundled
-with Groovy by default, which integrates the Swing components from JIDE
-or from the SwingX project into the usual Swing builder code.
-
-Although this topic would deserve a full article, I\u2019m only going to list
-some of the other improvements in this release, for instance, the bind()
-method. Inspired by the beans binding JSR (JSR-295), you can easily bind
-components or beans together to have them react upon changes made on
-each other. In the following example, the size of the insets of the
-button will be changed according to the value of the slider component:
-
-[source,groovy]
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-import groovy.swing.SwingBuilder
-import java.awt.Insets
-
-swing = new SwingBuilder()
-frame = swing.frame {
-   vbox {
-      slider(id: 'slider', value:5)
-      button('Big Button?!', margin: bind(source: slider, sourceProperty:'value', converter: { [it, it, it, it] as Insets }))
-   }
-}
-frame.pack()
-frame.size = [frame.width + 200, frame.height + 200]
-frame.show()
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-Binding components together is such a common task when building user
-interfaces, that this task has been simplified through this binding
-mechanism. There are also some other automatic binding options that can
-be used, but again, a dedicated article would probably be better.
-
-In other new and noteworthy features, a few handy new methods have been
-added which leverage closures to call the infamous SwingUtilities class,
-and to start new threads: edt() will call�_invokeAndWait()_,
-while�*doLater()*�will call�*invokeLater()*, and�*doOutside()*�will just
-launch a closure in a new thread. No more ugly anonymous inner classes:
-just use closures through those shortcut methods!
-
-Last but not least, separating the description of the view and its
-associated behavior logic has never been easier, thanks to the build()
-method on SwingBuilder. You can create a separate script which only
-contains the view, while the interactions or bindings between components
-are in the main class, making a clearer separation in the MVC model.
-
-[[Groovy15releasenotes-Summary]]
-== Summary
-
-In this article, the new and noteworthy features have been outlined, but
-we have barely scratched the surface of this new version of Groovy. The
-big highlights are mainly around the new Java 5 features, such as
-annotations, enums or generics: it makes Groovy perfectly capable of
-being integrated nicely and seamlessly with Enterprise frameworks such
-as Spring, Hibernate, or JPA. With the improvements in the syntax and
-with the enhanced dynamic capabilities, Groovy will let you customize
-your business logic by creating embedded Domain-Specific Languages, that
-you can easily integrate at the extension points of your application.
-The developer experience has progressed significantly through the work
-poured in the tooling support, this is no more a show stopper to the
-adoption of Groovy. Overall, with Groovy 1.5, the goal of simplifying
-the life of developers has never been so well fulfilled, and Groovy
-should definitely be part of all the Java developers\u2019 toolbox.
\ No newline at end of file


[10/20] groovy-user-site git commit: move content to asf-site branch

Posted by pa...@apache.org.
http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/js/vendor/bootstrap.min.js
----------------------------------------------------------------------
diff --git a/site/src/site/assets/js/vendor/bootstrap.min.js b/site/src/site/assets/js/vendor/bootstrap.min.js
deleted file mode 100644
index 1765631..0000000
--- a/site/src/site/assets/js/vendor/bootstrap.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
-* bootstrap.js v3.0.0 by @fat and @mdo
-* Copyright 2013 Twitter Inc.
-* http://www.apache.org/licenses/LICENSE-2.0
-*/
-if(!jQuery)throw new Error("Bootstrap requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]}}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(window.jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefau
 ltPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d)};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.is("input")?"val":"html",e=c.data();a+="Text",e.resetText||c.data("resetText",c[d]()),c[d](e[a]||this.options[a]),setTimeout(function(){"loadingText"==a?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="buttons"]');if(a.l
 ength){var b=this.$element.find("input").prop("checked",!this.$element.hasClass("active")).trigger("change");"radio"===b.prop("type")&&a.find(".active").removeClass("active")}this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this))
 .on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return th
 is.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}this.sliding=!0,f&&this.pause();var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(!e.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(j),j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,se
 tTimeout(function(){i.$element.trigger("slid")},0)}).emulateTransitionEnd(600)}else{if(this.$element.trigger(j),j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return f&&this.cycle(),this}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g)
 ,b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass
 ("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?(this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350),void 0):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":
 "show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(window.jQuery),+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented(
 )||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.clic
 k();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()}}}};var g=a.fn.dropdown;a.fn.dropdown=function(b){return this.each(function(){var c=a(this),d=c.data("dropdown");d||c.data("dropdown",d=new f(this)),"string"==typeof b&&d[b].call(c)})},a.fn.dropdown.Constructor=f,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=g,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",e,f.prototype.toggle).on("keydown.bs.dropdown.data-api",e+", [role=menu]",f.prototype.keydown)}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.load(this.options.remote)};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return th
 is[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.$element.on("click.dismiss.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show(),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)}))},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$eleme
 nt.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade"
 :"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="modal-backdrop '+c+'" />').appendTo(document.body),this.$element.on("click.dismiss.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.modal;a.fn.modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.modal.Constructor=b,a.fn.modal.
 noConflict=function(){return a.fn.modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(window.jQuery),+function(a){"use strict";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};b.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},b.prototype.init=function(b,c,d){this.en
 abled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focus",i="hover"==g?"mouseleave":"blur";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototyp
 e.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show),void 0):c.show()},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide),void 0):c.hide()},b.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){if(this.$element.trigger(b),b.isDefaultPrevented())return;var c=this.tip();this.setContent(),this.options.animation&&c.addClass("fade");var d="function"==typeof this.options.placement?this.options.placement.call(this,c[0],this.$ele
 ment[0]):this.options.placement,e=/\s?auto?\s?/i,f=e.test(d);f&&(d=d.replace(e,"")||"top"),c.detach().css({top:0,left:0,display:"block"}).addClass(d),this.options.container?c.appendTo(this.options.container):c.insertAfter(this.$element);var g=this.getPosition(),h=c[0].offsetWidth,i=c[0].offsetHeight;if(f){var j=this.$element.parent(),k=d,l=document.documentElement.scrollTop||document.body.scrollTop,m="body"==this.options.container?window.innerWidth:j.outerWidth(),n="body"==this.options.container?window.innerHeight:j.outerHeight(),o="body"==this.options.container?0:j.offset().left;d="bottom"==d&&g.top+g.height+i-l>n?"top":"top"==d&&g.top-l-i<0?"bottom":"right"==d&&g.right+h>m?"left":"left"==d&&g.left-h<o?"right":d,c.removeClass(k).addClass(d)}var p=this.getCalculatedOffset(d,g,h,i);this.applyPlacement(p,d),this.$element.trigger("shown.bs."+this.type)}},b.prototype.applyPlacement=function(a,b){var c,d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10)
 ,h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),a.top=a.top+g,a.left=a.left+h,d.offset(a).addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;if("top"==b&&j!=f&&(c=!0,a.top=a.top+f-j),/bottom|top/.test(b)){var k=0;a.left<0&&(k=-2*a.left,a.left=0,d.offset(a),i=d[0].offsetWidth,j=d[0].offsetHeight),this.replaceArrow(k-e+i,i,"left")}else this.replaceArrow(j-f,j,"top");c&&d.offset(a)},b.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},b.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach()}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one(a.support.transition.end,b).emulateTransitionEnd(150):b(),th
 is.$element.trigger("hidden.bs."+this.type),this)},b.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},b.prototype.hasContent=function(){return this.getTitle()},b.prototype.getPosition=function(){var b=this.$element[0];return a.extend({},"function"==typeof b.getBoundingClientRect?b.getBoundingClientRect():{width:b.offsetWidth,height:b.offsetHeight},this.$element.offset())},b.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},b.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},b.prototype.tip=function(){return this.$tip=this.$tip||a(
 this.options.template)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},b.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},b.prototype.enable=function(){this.enabled=!0},b.prototype.disable=function(){this.enabled=!1},b.prototype.toggleEnabled=function(){this.enabled=!this.enabled},b.prototype.toggle=function(b){var c=b?a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type):this;c.tip().hasClass("in")?c.leave(c):c.enter(c)},b.prototype.destroy=function(){this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var c=a.fn.tooltip;a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof c&&c;e||d.data("bs.tooltip",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=c,this}}(window.jQuery),+function(a){"use strict";
 var b=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");b.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("functio
 n"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(window.jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process(
 )}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#\w/.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parents(".active").removeClass("active");var c=this.selector+
 '[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f
 ),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(window.jQ
 uery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top()),"function"==typeof h&&(h=f.bottom());var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;this.affixed!==i&&(this.unpin&&this.$element.css("top",""),this.affixed=i,this.unpin="bottom"==i?e.top-
 d:null,this.$element.removeClass(b.RESET).addClass("affix"+(i?"-"+i:"")),"bottom"==i&&this.$element.offset({top:document.body.offsetHeight-h-this.$element.height()}))}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(window.jQuery);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/assets/js/vendor/classie.js
----------------------------------------------------------------------
diff --git a/site/src/site/assets/js/vendor/classie.js b/site/src/site/assets/js/vendor/classie.js
deleted file mode 100644
index a967554..0000000
--- a/site/src/site/assets/js/vendor/classie.js
+++ /dev/null
@@ -1,80 +0,0 @@
-/*!
- * classie - class helper functions
- * from bonzo https://github.com/ded/bonzo
- * 
- * classie.has( elem, 'my-class' ) -> true/false
- * classie.add( elem, 'my-new-class' )
- * classie.remove( elem, 'my-unwanted-class' )
- * classie.toggle( elem, 'my-class' )
- */
-
-/*jshint browser: true, strict: true, undef: true */
-/*global define: false */
-
-( function( window ) {
-
-'use strict';
-
-// class helper functions from bonzo https://github.com/ded/bonzo
-
-function classReg( className ) {
-  return new RegExp("(^|\\s+)" + className + "(\\s+|$)");
-}
-
-// classList support for class management
-// altho to be fair, the api sucks because it won't accept multiple classes at once
-var hasClass, addClass, removeClass;
-
-if ( 'classList' in document.documentElement ) {
-  hasClass = function( elem, c ) {
-    return elem.classList.contains( c );
-  };
-  addClass = function( elem, c ) {
-    elem.classList.add( c );
-  };
-  removeClass = function( elem, c ) {
-    elem.classList.remove( c );
-  };
-}
-else {
-  hasClass = function( elem, c ) {
-    return classReg( c ).test( elem.className );
-  };
-  addClass = function( elem, c ) {
-    if ( !hasClass( elem, c ) ) {
-      elem.className = elem.className + ' ' + c;
-    }
-  };
-  removeClass = function( elem, c ) {
-    elem.className = elem.className.replace( classReg( c ), ' ' );
-  };
-}
-
-function toggleClass( elem, c ) {
-  var fn = hasClass( elem, c ) ? removeClass : addClass;
-  fn( elem, c );
-}
-
-var classie = {
-  // full names
-  hasClass: hasClass,
-  addClass: addClass,
-  removeClass: removeClass,
-  toggleClass: toggleClass,
-  // short names
-  has: hasClass,
-  add: addClass,
-  remove: removeClass,
-  toggle: toggleClass
-};
-
-// transport
-if ( typeof define === 'function' && define.amd ) {
-  // AMD
-  define( classie );
-} else {
-  // browser global
-  window.classie = classie;
-}
-
-})( window );


[02/20] groovy-user-site git commit: move content to asf-site branch

Posted by pa...@apache.org.
http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/releasenotes/groovy-2.3.adoc
----------------------------------------------------------------------
diff --git a/site/src/site/releasenotes/groovy-2.3.adoc b/site/src/site/releasenotes/groovy-2.3.adoc
deleted file mode 100644
index ce0e923..0000000
--- a/site/src/site/releasenotes/groovy-2.3.adoc
+++ /dev/null
@@ -1,834 +0,0 @@
-Groovy 2.3 is the new major release of Groovy, featuring
-official *support for running Groovy on JDK 8*, *traits*, new and improved
-AST transformations like `@TailRecursive`, `@Builder` and `@Sortable`, a
-new _NIO2 module_ with `Path` support, *lightening fast JSON* parsing and
-building,*closure parameter type inference*, a new *markup template engine*,
-Groovysh and GroovyConsole ease of use improvements, a
-new `GroovyAssert` test utility, more `@BaseScript` class capabilities,
-and more.
-
-[[Groovy2.3releasenotes-OfficialsupportforrunningGroovyonJDK8]]
-== Official support for running Groovy on JDK 8
-
-This is the first version of Groovy to be officially compatible with JDK
-8.
-
-JDK 8 and its interface default methods introduced some
-incompatibilities with a few methods of the Groovy Development Kit, so
-we had to adapt to the situation, introducing minor breaking changes for
-the affected methods and their outcome.
-
-Note that we\u2019re not planning to backport the changes to older versions
-of Groovy, so if you want to run Groovy on JDK 8, you\u2019ll have to upgrade
-to the shiniest version of Groovy!
-
-Groovy 2.3 doesn\u2019t support the new syntax constructs offered by Java 8
-(such as lambdas, method references, default methods in interfaces,
-etc), but you can very well already *use the new APIs offered by JDK
-8*, and even *use Groovy closures in lieu of Java 8 lambdas*.
-
-For reference, here are a couple of examples which use Java 8 streams,
-for iterating over a stream of ints, or over the lines of a file:
-
-[source,groovy]
-----
-IntStream.range(1, 100).forEach { println it }
-
-Files.lines(Paths.get('README.adoc'))
-     .map { it.toUpperCase() }
-     .forEach { println it }
-----
-
-
-In particular, in the two statements above, notice that we replaced Java
-8 lambdas with Groovy closures, as Groovy provides a closure coercion
-mechanism which transforms a Groovy closure into a functional interface
-\u2014 unlike Java, Groovy also provides that coercion mechanism for abstract
-classes containing a single abstract method.
-
-In future versions of Groovy, certain Java 8 syntax constructs, or
-particular Groovy methods decorating JDK 8 APIs might be added.
-
-[[Groovy2.3releasenotes-Traits]]
-== Traits
-
-A major highlight for Groovy 2.3 is the introduction of the *concept of traits*.
-
-link:{DOCS_BASEURL}/html/documentation/core-traits.html[Traits]
-are reusable components of behavior that your classes can implement, and
-are an additional Object-Oriented concept alongside classes and
-interfaces.
-
-Below, we create a trait with a concrete method `fly()` which returns a
-`String`.
-
-[source,groovy]
-----
-trait FlyingAbility {
-    String fly() { "I'm flying!" }
-}
-----
-
-Then we create a class, `Bird`, that implements that trait, and
-instantiate it:
-
-[source,groovy]
-----
-class Bird implements FlyingAbility {}
-def b = new Bird()
-----
-
-We can check that the Bird instance does have the new `fly()` method
-mixed-in:
-
-[source,groovy]
-----
-assert b.fly() == "I'm flying!"
-----
-
-Groovy traits are stateful (unlike Java 8 interface default methods).
-A trait can have Groovy properties like plain classes:
-
-[source,groovy]
-----
-trait Named {
-    String name
-}
-----
-
-This time, the `Bird` class implements that `Named` trait:
-
-[source,groovy]
-----
-class Bird implements Named {}
-----
-
-We can instantiate the Bird with the named-argument constructor shortcut
-provided by Groovy:
-
-[source,groovy]
-----
-def b = new Bird(name: 'Colibri')
-----
-
-We assert that the instantiated Bird does have the name property added
-to it:
-
-[source,groovy]
-----
-assert b.name == 'Colibri'
-----
-
-They allow the composition of behavior without going into the "diamond
-inheritance" problem allowing you to decide which behavior prevails
-upon conflict, either by convention (last trait declared wins) or by
-explicitly overriding the conflicting method:
-
-[source,groovy]
-----
-trait KiteSurfer { String surf() { 'kite' } }
-
-trait WebSurfer  { String surf() {  'web' } }
-
-class Person { String name }
-
-class Hipster extends Person
-           implements KiteSurfer, WebSurfer {}
-
-def h = new Hipster()
-assert h.surf() == 'web'
-----
-
-Above, the `surf()` method from `WebSurfer` wins, as it\u2019s the last declared
-trait, but you can reverse the trait implementation order if you want
-kite to be returned. If you want to be more explicit, your `Hipster` class
-can override the `surf()` method itself, and call `WebSurfer.super.foo()` or
-`KiteSurfer.super.foo()` or do something entirely different.
-
-Traits support inheritance, thus a trait can extend another trait or
-implement an interface, as shown below:
-
-[source,groovy]
-----
-trait Named { String name }
-
-trait FlyingAbility extends Named {
-    String fly() { "I'm a flying ${name}!" }
-}
-
-class Bird implements FlyingAbility {}
-def b = new Bird(name: 'Colibri')
-
-assert b.name == 'Colibri'
-assert b.fly() == "I'm a flying Colibri!"
-----
-
-Traits are compatible with static type checking and compilation, as well
-as our usual dynamic behavior. Trait mixed-in methods are actually
-"real" methods (ie. visible from Java as well) and not just dynamic.
-Note however, that not all existing AST transformations are compatible
-with traits.
-
-Traits can also be implemented at runtime with `as` or with
-`withTraits` if you just want to add behavior of a trait to an object
-you\u2019re instantiating, without having to create an intermediary
-artificial class just for that purpose (also called per-instance
-traits):
-
-[source,groovy]
-----
-trait Named { String name }
-
-trait Quacks {
-    String quack() { 'Quack!' }
-}
-
-class Animal {}
-
-def na = new Animal().withTraits Named, Quacks
-na.name = 'Daffy'
-assert na.name == 'Daffy'
-assert na.quack() == 'Quack!'
-----
-
-You can find more information on traits in the
-exhaustive link:{DOCS_BASEURL}/html/documentation/core-traits.html[traits documentation].
-
-[[Groovy2.3releasenotes-NewandupdatedASTtransformations]]
-== New and updated AST transformations
-
-[[Groovy2.3releasenotes-Newtransformations]]
-=== New transformations
-
-[[Groovy2.3releasenotes-TailRecursive]]
-==== @TailRecursive
-
-`@TailRecursive` on methods adds tail recursion to methods which are
-recursive and call themselves at the last operation of the method body,
-which helps avoid blowing up the stack with the recursive calls
-(link:https://issues.apache.org/jira/browse/GROOVY-6570[GROOVY-6570]).
-
-Here\u2019s a slightly rewritten factorial implementation, that is friendly
-to tail-call transformation:
-
-[source,groovy]
-----
-import groovy.transform.TailRecursive
-
-@TailRecursive
-def fact(BigInteger n, accu = 1G) {
-    if (n < 2) accu
-    else fact(n - 1, n * accu)
-}
-
-assert fact(1000) > 10e2566
-----
-
-[[Groovy2.3releasenotes-Builder]]
-==== @Builder
-
-Recent Java APIs have adopted the builder pattern (not to be confused
-with Groovy\u2019s builders) to instantiate complex objects, without
-requiring to multiply the number of constructors with variants taking
-various combination of parameters. Groovy 2.3 introduces a `@Builder`
-transformation to automate the creation of such builder APIs
-(link:https://issues.apache.org/jira/browse/GROOVY-6484[GROOVY-6484]).
-
-The `@Builder` transformation offers different implementation strategies
-that you can choose from:
-
-* a simple strategy for creating chained setters
-* an external strategy where you annotate an explicit builder class
-while leaving some buildee class being built untouched
-* a default strategy which creates a nested helper class for instance
-creation
-* and an initializer strategy which creates a nested helper class for
-instance creation which when used with `@CompileStatic` allows type-safe
-object creation
-
-Here\u2019s an example with the default strategy:
-
-[source,groovy]
------
-import groovy.transform.builder.Builder
-
-@Builder
-class Person {
-    String firstName
-    String lastName
-    int age
-}
-
-def person = Person.builder()
-                   .firstName("Robert")
-                   .lastName("Lewandowski")
-                   .age(21)
-                   .build()
-
-assert person.firstName == "Robert"
-assert person.lastName == "Lewandowski"
-assert person.age == 21
------
-
-You can have a look at
-the link:{DOCS_BASEURL}/html/documentation/core-metaprogramming.html#xform-Builder[@Builder documentation]
-for the other builder variants.
-
-[[Groovy2.3releasenotes-Sortable]]
-==== @Sortable
-
-`@Sortable` on classes implements comparison methods for you (through
-implementing the `Comparable` interface), according to the declaration
-order of your properties
-(link:https://issues.apache.org/jira/browse/GROOVY-6649[GROOVY-6649]).
-
-For the following `Person` class, its instances will be sorted by last
-name, then by first name, and by age, in that order:
-
-[source,groovy]
-----
-import groovy.transform.*
-
-@Sortable
-@Canonical
-class Person {
-    String last
-    String first
-    int age
-}
-
-def folks = [
-    new Person('Simpson', 'Bart', 12),
-    new Person('Simpson', 'Homer', 40),
-    new Person('Kent', 'Clark', 36)
-]
-
-assert folks.sort()*.first == ['Clark', 'Bart', 'Homer']
-----
-
-Additionally, you can define included / excluded fields, access
-individual field comparators with methods like `comparatorByFirst()`.
-
-More details on
-the {DOCS_BASEURL}/html/documentation/core-metaprogramming.html#xform-Sortable[@Sortable documentation] page.
-
-[[Groovy2.3releasenotes-SourceURI]]
-==== @SourceURI
-
-With `@SourceURI`, you can annotate a `java.net.URI` or even a
-`java.lang.String` script variable or class field so that the variable or
-field are injected the URI of the Groovy file.
-
-If you evaluate or compile a Groovy script or class, the variable or
-field will contain a data URI, for example, for the following example:
-
-[source,groovy]
-----
-import groovy.transform.SourceURI
-
-@SourceURI String src
-
-println src
-----
-
-The `src` variable will contain the following data URI:
-
-----
-data:,import%20groovy.transform.SourceURI%0A%0A@SourceURI%20String%20src%0A%0Aprintln%20src
-----
-
-If you save the script in a file called `sourceuri.groovy` in `/tmp`, and
-run that script with the `groovy` command, you\u2019ll see an absolute `File`
-path printed:
-
-----
-file:/tmp/sourceuri.groovy
-----
-
-As we mentioned above, you can also write `@SourceURI URI src`, if you want
-to have a `URI` instead of a `String`.
-
-[[Groovy2.3releasenotes-Updatedtransformations]]
-=== Updated transformations
-
-[[Groovy2.3releasenotes-Delegateimprovements]]
-==== @Delegate improvements
-
-`@Delegate` supports `includeTypes` and `excludeTypes` attributes to give you
-fine-grained control over which methods to include or exclude from
-delegation. Rather than just matching on name, this option matches on
-the name and parameter types expressed in an interface type
-(link:https://issues.apache.org/jira/browse/GROOVY-6329[GROOVY-6329]).
-
-[[Groovy2.3releasenotes-BaseScriptclassimprovements]]
-==== @BaseScript class improvements
-
-{DOCS_BASEURL}/html/gapi/groovy/transform/BaseScript.html[@BaseScript]
-is a fairly recent addition in Groovy, and it allowed to annotate a
-variable in your script to instruct the compiler to use a particular
-base script class for this script. Now we have another notation which is
-nicer as you can annotate an import or a package
-(link:https://issues.apache.org/jira/browse/GROOVY-6592[GROOVY-6592]) to indicate
-that base script class:
-
-[source,groovy]
-----
-@BaseScript(MyScript)
-import groovy.transform.BaseScript
-----
-
-Additionally, base script classes can now use any abstract method for
-the script body. This means that you can implement the `run()` method to
-implement specific behavior like setup and tear down in tests
-(link:https://issues.apache.org/jira/browse/GROOVY-6585[GROOVY-6585]
-and link:https://issues.apache.org/jira/browse/GROOVY-6615[GROOVY-6615]).
-
-Given the following custom base script class, where we implement the
-default `run()` method, we also create a new abstract method called
-`internalRun()`:
-
-[source,groovy]
-----
-abstract class CustomBase extends Script {
-    def run() {
-        before()
-        internalRun()
-        after()
-    }
-
-    abstract internalRun()
-
-    def before() { println 'before' }
-    def after()  { println 'after'  }
-}
-----
-
-We can then have the script below transparently implement the
-`internalRun()` method instead of the usual `run()` one:
-
-[source,groovy]
-----
-import groovy.transform.BaseScript
-@BaseScript CustomBase script
-
-println 'Hello'
-----
-
-[[Groovy2.3releasenotes-NewNIOmoduleforJava7]]
-== New NIO module for Java 7+
-
-On JDK 7 and beyond, you can benefit from the same methods as the ones
-of File but for the new NIO2 class `Path`.
-
-See link:https://issues.apache.org/jira/browse/GROOVY-6377[GROOVY-6377] and
-the link:https://github.com/groovy/groovy-core/pull/260/files[pull request]
-for some further hints of the new methods.
-
-You\u2019ll find familiar methods of the Groovy GDK on `File` also available on
-`Path` like these ones:
-
-[source,groovy]
-----
-path.withReader { Reader r -> ... }
-path.eachLine { String line -> ... }
-path.eachFileRecurse { Path p -> ... }
-path << 'some content'
-path << bytes
-path.readLines()
-----
-
-[[Groovy2.3releasenotes-Performanceimprovements]]
-== Performance improvements
-
-[[Groovy2.3releasenotes-Miscellanousimprovements]]
-=== Miscellanous improvements
-
-Various minor *performance improvements across the board*, for static
-compilation, the `invokedynamic` backend, as well as "normal"
-dynamic Groovy, have been worked on.
-
-[[Groovy2.3releasenotes-DrasticJSONparsingandserializationperformanceimprovements]]
-=== Drastic JSON parsing and serialization performance improvements
-
-Groovy JSON support has been refactored and tailored towards
-performance, making Groovy 2.3\u2019s JSON support usually
-*faster than all the JSON libraries* available in the Java ecosystem.
-
-Rick Hightower and Andrey Bleschestov covered the performance gains,
-both in parsing and seralization, in
-a link:http://rick-hightower.blogspot.fr/2014/04/groovy-and-boon-provide-fastest-json.html[benchmarks on Rick\u2019s blog]
-and on link:https://github.com/bura/json-benchmarks[Andrey\u2019s JSON benchmark project on Github].
-The results are impressive, as the *parsing is generally roughly 2x to 4x faster* with Groovy\u2019s new
-parsers compared to existing libraries, and *~21x faster than pre-Groovy 2.3 parsing*.
-On the serialization front, Groovy\u2019s
-new *serialization is also ~17x faster than before*, and at the same
-level as competing libraries.
-
-[[Groovy2.3releasenotes-JSONslurperandbuilderenhancements]]
-== JSON slurper and builder enhancements
-
-Beside the performance improvements of the JSON module, other updates
-have taken place.
-
-With link:{DOCS_BASEURL}/html/gapi/groovy/json/JsonSlurper.html[JsonSlurper],
-you\u2019ll be able to set
-different link:{DOCS_BASEURL}/html/gapi/groovy/json/JsonParserType.html[parser types]
-depending on the kind of input you wish to parse, particularly if
-you know the size of the payload you expect to parse, or whether you
-want a more tolerant parser which accepts elements like comments which
-are not normally supported by the JSON specification.
-
-Here\u2019s an example showing how to parse a non-conformant JSON payload:
-
-[source,groovy]
-----
-import groovy.json.*
-import static groovy.json.JsonParserType.*
-
-def parser = new JsonSlurper().setType(LAX)
-
-def conf = parser.parseText '''
-    // configuration file
-    {
-        // no quote for key, single quoted value
-        environment: 'production'
-        # pound-style comment
-        'server': 5
-    }
-'''
-
-assert conf.environment == 'production'
-assert conf.server == 5
-----
-
-[[Groovy2.3releasenotes-Closureparametertypeinference]]
-== Closure parameter type inference
-
-We closed a gap which forced you to type your closure parameters to get
-correct type inference with static type checking or static compilation
-enabled. In situations like the following, you would have to explicitly
-give the type of the parameter, but it\u2019s no longer required:
-
-[source,groovy]
-----
-['a','b'].each { it.toUpperCase() }
-----
-
-In the signature of your methods taking closures as arguments, you\u2019ll
-also be able to annotate the closure parameter
-with link:{DOCS_BASEURL}/html/gapi/groovy/transform/stc/ClosureParams.html[@ClosureParams]
-to give additional hints to the type checker to infer the type of the
-parameters passed to your closure.
-
-You can also find more about this in C�dric\u2019s blog post
-on link:http://melix.github.io/blog/2014/01/closure_param_inference.html[closure parameter type inference].
-
-[[Groovy2.3releasenotes-Newmarkuptemplateengine]]
-== New markup template engine
-
-Groovy now has an additional template engine, in the form of the Markup
-template engine, which gives you a very fast template engine (thanks to
-static compilation), based on the familiar Markup builder approach and
-notation, but also offering formatting options (indentation, escaping),
-internationalization, includes, as well as proposing type checked
-templates and models.
-
-More details about the
-new link:{DOCS_BASEURL}/html/documentation/markup-template-engine.html[Markup template engine]
-in the documentation, as well as in C�dric\u2019s link:http://melix.github.io/blog/[blog], if you want to learn more
-about the "behind the scenes" stories!
-
-To illustrate the basic usage, consider you have the following template:
-
-[source,groovy]
-----
-def tpl = '''
-    cars {
-        cars.each {
-            car(make: it.make, name: it.name)
-        }
-    }
-'''
-----
-
-And have the following model:
-
-[source,groovy]
-----
-model = [cars: [
-    new Car(make: 'Peugeot', name: '508'),
-    new Car(make: 'Toyota',  name: 'Prius')
-]]
-----
-
-You would generate the following XML (or HTML) output:
-
-[source,xml]
-----
-<cars>
-    <car make='Peugeot' name='508'/>
-    <car make='Toyota'  name='Prius'/>
-</cars>
-----
-
-By doing the following:
-
-[source,groovy]
-----
-import groovy.text.markup.*
-
-def config = new TemplateConfiguration()
-def engine = new MarkupTemplateEngine(config)
-def tmpl = engine.createTemplate(tpl)
-System.out << tmpl.make(model)
-----
-
-You have useful methods available to your templates, like for including
-other templates:
-
-[source,groovy]
-----
-// include another template
-include template: 'foo.tpl'
-
-// include raw content
-include unescaped: 'raw.txt'
-
-// escape & include
-include escaped: 'to_escape.txt'
-----
-
-And if you want to have your model be type checked, you can either
-define the model types inside the template like so:
-
-[source,groovy]
-----
-modelTypes = {
-    List<Car> cars
-}
-----
-
-Or by using the dedicated template creation method:
-
-[source,groovy]
-----
-def modelTypes = [cars: "List<Car>"]
-
-def tmpl = engine.createTypeCheckedModelTemplate(tpl, modelTypes)
-----
-
-Note that this template engine is super fast as it\u2019s statically
-compiled.
-
-[[Groovy2.3releasenotes-JUnit4GroovyAssertclass]]
-== JUnit 4 GroovyAssert class
-
-The
-venerable link:{DOCS_BASEURL}/html/gapi/groovy/util/GroovyTestCase.html[GroovyTestCase]
-(JUnit 3 based approach) has often been used as a base class for your
-test classes \u2014 unless you\u2019ve been using
-the link:http://www.spockframework.org/[Spock testing framework], of course.
-One of the drawback of this class is that your test classes can\u2019t extend
-your own classes, but must derive from `GroovyTestCase` to benefit from
-the additional assertion methods.
-
-In earlier versions of Groovy we introduced the JUnit
-4-friendly link:{DOCS_BASEURL}/html/gapi/groovy/util/GroovyAssert.html[GroovyAssert],
-which is a convenient class offering the usual assertion methods of
-`GroovyTestCase`, but in the form of static methods that you can static
-import in your test class. In Groovy 2.3 we\u2019ve enriched `GroovyAssert`
-with additional features. There should be no reason to move on from
-JUnit 3 if you haven\u2019t already done so. We didn\u2019t include all of the
-myriad of `assertEquals` methods from `GroovyTestCase` as they are typically
-less useful than Groovy\u2019s built-in power assert, but it provides some
-handy `shouldFail()` and `assertScript()` methods
-(link:https://issues.apache.org/jira/browse/GROOVY-6588[GROOVY-6588]).
-
-For instance, if you want to leverage the `shouldFail(String)` and
-`assertScript(String)` methods, you can do so as follows:
-
-[source,groovy]
-----
-import static groovy.test.GroovyAssert.shouldFail
-
-
-import org.junit.Test
-
-class AssertTest {
-    @Test void checkBadAddition() {
-        shouldFail '''
-            groovy.test.GroovyAssert.assertScript 'assert 1 + 1 == 3'
-        '''
-    }
-}
-----
-
-[[Groovy2.3releasenotes-ConfigSlurper]]
-== ConfigSlurper
-
-ConfigSlurper has previously supported a single "environments"
-non-configurational conditional block, but you couldn\u2019t define your own.
-With Groovy 2.3 you can also create your own such blocks. For instance
-if you wanted to support "flavors" like OS variants
-(link:https://issues.apache.org/jira/browse/GROOVY-6383[GROOVY-6383]).
-
-Concretely, instead of the familiar environments / production blocks in
-Grails, let\u2019s register a flavors / prod pair:�
-
-[source,groovy]
-----
-def conf = '''
-    a.b.c = 1
-    flavors {
-        prod {
-            a.b.c = 2
-        }
-    }
-'''
-
-def slurper = new ConfigSlurper('prod')
-slurper.registerConditionalBlock('flavors', 'prod')
-
-def config = slurper.parse(conf)
-
-assert config.a.b.c == 2
-----
-
-In addition, the `isSet()` / `hasSet()` combo methods
-(link:https://issues.apache.org/jira/browse/GROOVY-4639[GROOVY-4639]) have been
-added so you can double check if a given node of your configuration has
-been defined. Before, whether the node wasn\u2019t defined or containing
-`null`, you couldn\u2019t differentiate either case easily.
-
-[[Groovy2.3releasenotes-Toolsenhancements]]
-== Tools enhancements
-
-[[Groovy2.3releasenotes-Groovysh]]
-=== Groovysh
-
-Along with a slightly reduced startup time, Groovysh has seen new
-improvements in its code-completion capabilities:
-
-* completion for keywords
-(link:https://issues.apache.org/jira/browse/GROOVY-6399[GROOVY-6399])
-* completion for properties
-(link:https://issues.apache.org/jira/browse/GROOVY-6395[GROOVY-6395])
-
-Commands are now prefixed with ``:''
-(link:https://issues.apache.org/jira/browse/GROOVY-6397).
-
-[[Groovy2.3releasenotes-GroovyConsole]]
-=== GroovyConsole
-
-It is now possible to configure the font used by the console
-(link:https://issues.apache.org/jira/browse/GROOVY-6303[GROOVY-6303], although
-without a UI dialog yet), and also to be able to run a selected snippet
-of code reusing the imports defined in your script making it easier to
-just run quick snippets of your script. The ability to comment or
-uncomment selected code by pressing `Ctrl +` was added
-with�link:https://issues.apache.org/jira/browse/GROOVY-6459[GROOVY-6459].
-
-
-[[Groovy2.3releasenotes-Documentation]]
-== Documentation
-
-[[Groovy2.3releasenotes-Newdocumentation]]
-=== New documentation
-
-We are still working on the
-brand link:{DOCS_BASEURL}/html/documentation/[new documentation] for Groovy
-(in Asciidoc(tor) format), so you can already
-have a glimpse at what\u2019s already covered or not.
-
-We\u2019re looking forward to your help for fleshing out the various TBD ("To
-Be Done") sections of the documentation, as it\u2019s a gigantic task to
-re-document each and every aspect of the language and its libraries! So
-please shout if you want to *contribute to the new documentation*! All
-help is warmly welcome!
-
-[[Groovy2.3releasenotes-RefreshedGroovyDocdocumentationstyle]]
-=== Refreshed GroovyDoc documentation style
-
-GroovyDoc has been updated with a new fresh and modern skin that will be
-part of the future visual identity of the Groovy website. Those style
-updates are also available by default for your own usage of GroovyDoc,
-making your own documentation nicer on the eye.
-
-You can have a look at
-the link:http://docs.groovy-lang.org/2.3.0/html/gapi/[GroovyDoc
-documentation for Groovy 2.3.0].
-
-[[Groovy2.3releasenotes-RefreshedGroovyGDKdocumentationstyle]]
-=== Refreshed Groovy GDK documentation style
-
-We also took the opportunity to apply the same stylesheet to our
-`DocGenerator` tool which is responsible for the generation of the GDK
-documentation, showing the methods the Groovy library adds on top of the
-JDK classes.
-
-Please also have a look at the
-new link:{DOCS_BASEURL}/html/groovy-jdk/[restyled GDK documentation].
-
-[[Groovy2.3releasenotes-Dependencyupgrades]]
-== Dependency upgrades
-
-The following dependencies have been upgraded:
-
-* *GPars 1.2* for all your concurrency, asynchronous or parallelism needs:
-** improvements in the dataflow area, such as lazy tasks and easy
-fork-and-join on Promises
-** actors and dataflow operators now use the Groovy `@DelegatesTo`
-annotation to allow for statically compiled bodies
-** GPars timers and thread-locals have been made more friendly towards
-managed environments and the GParsConfig class now allows GPars to be
-completely shutdown
-* *Gradle 1.10* for building Groovy
-* *ASM 5.0.1* library for generating our bytecode (also needed for our JDK 8 support)
-* *JLine 2.11* and *JANSI 1.11* library for Groovysh
-* *Ant 1.9.3* for the Ant builder
-* *TestNG 6.8.8* for the TestNG module
-
-[[Groovy2.3releasenotes-Breakingchanges]]
-== Breaking changes
-
-Groovy 2.3.0 introduces a limited list of breaking changes.
-
-First of all,*Groovy 2.3.0 now requires JDK 6* as its minimal JDK
-requirement. Some parts of Groovy 2.3.0 might still run under JDK 5 but
-no testing has been done on that platform and some parts are known not
-to work. We encourage everyone to move to at least JDK 6.
-
-In Groovy 2.3.0, we *reworked our implementation of generics handling*.
-Although we don\u2019t know of any particular breakage so far, the static
-type checker might report new errors as it can be stricter than before.
-If ever you encounter such new errors in this area, please report them
-as soon as you encounter them.
-
-With the introduction of "traits" in Groovy 2.3, the `trait` keyword
-is an addition to the list of keyword of the languages, with the
-consequence that *variables or fields that would use `trait` as name
-with yield a compilation error*. So you would have to change the name of
-your variable and recompile your code.
-
-A few updates have been made to the *XML support around whitespace
-handling, and text node handling*:
-
-* https://issues.apache.org/jira/browse/GROOVY-6685[GROOVY-6685]
-* https://issues.apache.org/jira/browse/GROOVY-6683[GROOVY-6683]
-* https://issues.apache.org/jira/browse/GROOVY-6682[GROOVY-6682]
-* https://issues.apache.org/jira/browse/GROOVY-6678[GROOVY-6678]
-* https://issues.apache.org/jira/browse/GROOVY-6621[GROOVY-6621]
-
-With the new default methods on interfaces in JDK 8, there was
-particularly one,
-a link:https://issues.apache.org/jira/browse/GROOVY-6465[List#sort(Comparable) method], which *conflicted with one of the GDK*,
-so we had to remove ours to stay compliant with JDK 8.
-
-We fixed a link:https://issues.apache.org/jira/browse/GROOVY-6456[race condition in AbstractHttpServler#applyResourceNameMatcher]
-which incurred a small change in behavior. This feature is seldomly used and doesn\u2019t seem to
-have impacted users of the Groovy servlet machinery so far.
-
-You can look at the list of
-the link:https://issues.apache.org/jira/browse/GROOVY-6685?jql=project%20%3D%20GROOVY%20AND%20fixVersion%20in%20%28%222.3.0-rc-3%22%2C%20%222.3.0-beta-1%22%2C%20%222.3.0-beta-2%22%2C%20%222.3.0-rc-1%22%2C%20%222.3.0-rc-2%22%29%20AND%20labels%20%3D%20breaking%20AND%20status%20in%20%28Resolved%2C%20Closed%29[breaking changes from our JIRA]
-issue tracker.
-

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/releasenotes/groovy-2.4.adoc
----------------------------------------------------------------------
diff --git a/site/src/site/releasenotes/groovy-2.4.adoc b/site/src/site/releasenotes/groovy-2.4.adoc
deleted file mode 100644
index caaee43..0000000
--- a/site/src/site/releasenotes/groovy-2.4.adoc
+++ /dev/null
@@ -1,220 +0,0 @@
-[[Android]]
-== Android Support
-With Groovy 2.4, you can write Android applications in Groovy!
-
-A quick link:{DOCS_BASEURL}/html/documentation/tools-groovyc.html#section-android[getting
-started guide] is available on the Groovy website.
-
-To build your Android applications with the Groovy support, you\u2019ll be
-able to use
-the link:https://github.com/groovy/groovy-android-gradle-plugin[Gradle Groovy Android plugin].
-
-The link:https://github.com/Arasthel/SwissKnife[SwissKnife] library builds
-upon the Groovy support to offer very useful AST transformations that
-kill the usual Android boilerplate code, for instance for dealing with
-UI events, with logic to be run in background threads, or make objects
-easily "parcelables", etc.
-
-To further understand the new Android support, you can read the
-following articles by C�dric Champeau:
-
-* Introduction: link:http://melix.github.io/blog/2014/06/grooid.html[http://melix.github.io/blog/2014/06/grooid.html]
-* Technical details: link:http://melix.github.io/blog/2014/06/grooid2.html[http://melix.github.io/blog/2014/06/grooid2.html]
-
-And discover presentations on the Android support:
-
-* link:https://speakerdeck.com/melix/groovy-and-android-a-winning-pair-1[Groovy and Android, a winning pair] by C�dric Champeau
-* link:https://speakerdeck.com/glaforge/groovy-on-android-groovy-grails-exchange-2014[Groovy on Android] by Guillaume Laforge
-
-The work on the Android support also lead to various optimizations in
-terms of bytecode generation, as explained further down, as well as, for
-instance, improving the handling of overloaded setters
-(link:https://issues.apache.org/jira/browse/GROOVY-2049[GROOVY-2049],link:https://issues.apache.org/jira/browse/GROOVY-6084[GROOVY-6084],
-link:https://issues.apache.org/jira/browse/GROOVY-2500[GROOVY-2500])
-which are frequent in the Android SDK.
-
-[[Groovy2.4releasenotes-Performanceimprovementsandreducedbytecode]]
-== Performance improvements and reduced bytecode
-
-This new major release of Groovy has seen various improvements across
-the board to reduce the quantity of bytecode produced, to lower memory
-consumption of internal data structures, fine tune bytecode for better
-performance.
-
-Here are some of the tickets related to the topic:
-
-* Cheaper comparison operations
-(link:https://issues.apache.org/jira/browse/GROOVY-7194[GROOVY-7194])
-* Reduced memory consumption for `respondsTo()`
-(link:https://issues.apache.org/jira/browse/GROOVY-7178[GROOVY-7178])
-* For fully statically compiled classes, MOP related generated methods
-are not needed
-(link:https://issues.apache.org/jira/browse/GROOVY-6990[GROOVY-6990])
-* Remove unneeded inner class distributor methods when no inner classes
-are present (link:https://issues.apache.org/jira/browse/GROOVY-6993[GROOVY-6993])
-* Removal of the timestamp in Groovy classes
-(link:https://issues.apache.org/jira/browse/GROOVY-6308[GROOVY-6308])
-* Optimization of primitive type conversions with the as operator
-(link:https://issues.apache.org/jira/browse/GROOVY-7140[GROOVY-7140])
-
-[[Groovy2.4releasenotes-TraitsSelfTypeannotation]]
-== Traits @SelfType annotation
-
-Sometimes, it\u2019s desired to be able to restrict a trait\u2019s application so
-that it can only be applied to subclasses of a certain type. That\u2019s what
-the `@SelfType` annotation is for
-(link:https://issues.apache.org/jira/browse/GROOVY-7134[GROOVY-7134]).
-
-Here\u2019s a concrete example of `@SelfType` in action.
-
-[source,groovy]
-----
-import groovy.transform.*
-
-class Component {
-   void doSomething() {
-       println "Done!"
-   }
-}
-
-@SelfType(Component)
-@TypeChecked
-trait ComponentDecorator {
-   void logAndDoSomething() {
-       println "Going to do something"
-       doSomething()
-   }
-}
-
-class ConcreteComponent
-   extends Component
-   implements ComponentDecorator {}
-
-def c = new ConcreteComponent()
-c.logAndDoSomething()
-----
-
-The `ComponentDecorator` trait is calling the `doSomething()` method from
-the `Component` sub-class to which it will be applied. If you don\u2019t
-specify the `@SelfType(Component)` annotation, when using static type
-checking or static compilation, the compiler will throw a compilation
-error as it wouldn\u2019t know where the `doSomething()` method would be coming
-from. With the annotation, you instruct the compiler to figure out that
-this trait will only be applied to child of Component that will have
-that method available. `@SelfType` is interesting in the context of static
-type checking or compilation, but is not needed if your code is dynamic
-as the resolution will take place at runtime as usual.
-
-[[Groovy2.4releasenotes-GDKimprovements]]
-== GDK improvements
-
-* `System.currentTimeSeconds()` to get the current time in seconds
-(link:https://issues.apache.org/jira/browse/GROOVY-6294[GROOVY-6294])
-* `List#getIndices()` to get a range representing the indices of the
-elements of the list
-(link:https://issues.apache.org/jira/browse/GROOVY-7171[GROOVY-7171])
-* More collection related methods are moved to iterator-based variants
-to apply to all iterable collection types
-(link:https://issues.apache.org/jira/browse/GROOVY-6863[GROOVY-6863]) and missing
-methods have been added like `init()`, `dropRight()`, `takeRight()`
-(link:https://issues.apache.org/jira/browse/GROOVY-6867[GROOVY-6867])
-* `Iterable` gets `disjoin()`, `minus()` and `toSpreadMap()` methods
-(link:https://issues.apache.org/jira/browse/GROOVY-6920[GROOVY-6920])
-* Refinements and concistency for existing collection methods,
-leveraging iterable approaches for stream-like traversals, consistency
-for mutation in place vs �new collection creation, minor optimizations,
-etc. (link:https://issues.apache.org/jira/browse/GROOVY-6945[GROOVY-6945])
-* New `List#removeAt(index)` and `Collection#removeElement(Object)` methods
-(link:https://issues.apache.org/jira/browse/GROOVY-6952[GROOVY-6952])
-* `Iterable` gets a `size()` method like iterators
-(link:https://issues.apache.org/jira/browse/GROOVY-7085[GROOVY-7085])
-
-[[Groovy2.4releasenotes-ASTtransformations]]
-== AST transformations
-
-* The `@ToString` transformation offers an `includeSuperProperties`
-parameter so properties from the super class are also present in the
-string representation
-(link:https://issues.apache.org/jira/browse/GROOVY-7161[GROOVY-7161])
-* You can define the compilation phase for the `@ASTTest` transformation
-for testing your AST transformations
-(link:https://issues.apache.org/jira/browse/GROOVY-6968[GROOVY-6968])
-* `@Synchronized` supports explicit static locks to be used by instance
-methods if needed
-(link:https://issues.apache.org/jira/browse/GROOVY-7030[GROOVY-7030])
-* Clean up generated code for `@AutoExternalizable`
-(link:https://issues.apache.org/jira/browse/GROOVY-6889[GROOVY-6889]) and
-`@EqualsAndHashCode`
-(link:https://issues.apache.org/jira/browse/GROOVY-6893[GROOVY-6893]) the when
-using `@CompileStatic`
-* `@Builder`\u2019s default and initializer strategies improved Java
-integration (link:https://issues.apache.org/jira/browse/GROOVY-6875[GROOVY-6875])
-* `@PackageScope` allowed on constructors too
-(link:https://issues.apache.org/jira/browse/GROOVY-6839[GROOVY-6839])
-
-[[Groovy2.4releasenotes-Groovyshimprovements]]
-== Groovysh improvements
-
-The venerable Groovysh shell continues seeing some useful improvements:
-
-* Groovysh supports custom .rc and .profile scripts to be loaded on
-startup (link:https://issues.apache.org/jira/browse/GROOVY-6943[GROOVY-6943])
-* completion of instanceof statements
-(link:https://issues.apache.org/jira/browse/GROOVY-7200[GROOVY-7200])
-* completion of static members only displayed in a static context
-(link:https://issues.apache.org/jira/browse/GROOVY-6622[GROOVY-6622])
-* completion candidates in color
-(link:https://issues.apache.org/jira/browse/GROOVY-6563[GROOVY-6563])
-* with :set interpreterMode true, you can let Groovysh to let you see
-and use locally-defined variables after further line executions
-(link:https://issues.apache.org/jira/browse/GROOVY-6623[GROOVY-6623])
-* the :load command supports file names containing spaces
-(link:https://issues.apache.org/jira/browse/GROOVY-6942[GROOVY-6942])
-* make arguments and flags consistent with the groovy command and allow
-the launch of a script on startup passed as argument and continue
-execution of Groovysh
-(link:https://issues.apache.org/jira/browse/GROOVY-6754[GROOVY-6754])
-* make it easier to subclass Groovysh for reuse as an embedded shell
-(link:https://issues.apache.org/jira/browse/GROOVY-6752[GROOVY-6752])
-
-[[Groovy2.4releasenotes-Miscellaneous]]
-== Miscellaneous
-
-* Allow Ant targets declaration by AntBuilder without immediate
-execution (link:https://issues.apache.org/jira/browse/GROOVY-2900[GROOVY-2900])
-* Make `NamespaceBuilder` automatically detect namespace declarations
-(link:https://issues.apache.org/jira/browse/GROOVY-6890[GROOVY-6890])
-* Implement and register type checking extensions as subclasses of
-`TypeCheckingExtension`
-(link:https://issues.apache.org/jira/browse/GROOVY-6739[GROOVY-6739])
-* `ConfigObject` overrides `toString()` and offers a `prettyPrint()` method
-(link:https://issues.apache.org/jira/browse/GROOVY-7183[GROOVY-7183])
-* Improved type checking for certain GDK methods
-(link:https://issues.apache.org/jira/browse/GROOVY-6966[GROOVY-6966])
-* Grape is using JCenter through HTTP first for resolving dependencies,
-and now HTTPS is used for better security
-(link:https://issues.apache.org/jira/browse/GROOVY-7152[GROOVY-7152])
-* Parameters of `@DelegatesTo` and `@ClosureParams` are better aligned
-(link:https://issues.apache.org/jira/browse/GROOVY-6956[GROOVY-6956])
-* Multiple labels are supported on the same statement
-(link:https://issues.apache.org/jira/browse/GROOVY-3298[GROOVY-3298])
-
-[[Groovy2.4releasenotes-Breakingchanges]]
-== Breaking changes
-
-A few issues fixed might also be considered breaking changes in some
-situations:
-
-* Malformed class names for closures in inner classes
-(link:https://issues.apache.org/jira/browse/GROOVY-5351[GROOVY-5351])
-* Avoid creation of MOP methods in static compilation
-(link:https://issues.apache.org/jira/browse/GROOVY-6990[GROOVY-6990])
-* Reduce memory consumption for respondsTo()
-(link:https://issues.apache.org/jira/browse/GROOVY-7178[GROOVY-7178])
-* Making Groovysh more easily extendable and embeddable
-(link:https://issues.apache.org/jira/browse/GROOVY-6752[GROOVY-6752])
-
-[[Groovy2.4releasenotes-Moreinformation]]
-== More information
-
-You can browse all the link:../changelogs/changelog-2.4.0.html[tickets closed for Groovy 2.4 in JIRA].

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/releasenotes/groovy-2.5.adoc
----------------------------------------------------------------------
diff --git a/site/src/site/releasenotes/groovy-2.5.adoc b/site/src/site/releasenotes/groovy-2.5.adoc
deleted file mode 100644
index 7fa4062..0000000
--- a/site/src/site/releasenotes/groovy-2.5.adoc
+++ /dev/null
@@ -1,112 +0,0 @@
-(Material on this page is still under development!)
-
-[[Groovy2.5releasenotes-Macros]]
-== Macro support
-With Groovy 2.5, you can write macros in Groovy!
-
-Details: TBD
-
-[[Groovy2.5releasenotes-NewAstTransforms]]
-== New AST Transformations
-
-* `@MapConstructor` adds a `Map`-based constructor to a class. This allows a usage
-style similar to Groovy's named parameters but doesn't use the no-arg constructor
-and then call setters. This may be useful if you have final properties or wish the
- class file to have the `Map` constructor for integration purposes
-(link:https://issues.apache.org/jira/browse/GROOVY-7353[GROOVY-7353]).
-* `@AutoImplement` allows you to provide dummy implementations of any abstract
-methods that might be inherited from super classes or interfaces
-(link:https://issues.apache.org/jira/browse/GROOVY-7860[GROOVY-7860]).
-
-[[Groovy2.5releasenotes-AstTransformImprovements]]
-== AST Transformation improvements
-
-* `@Canonical` becomes a meta-annotation allowing more flexible usage of the annotation attributes
-from its constituent annotations
-(link:https://issues.apache.org/jira/browse/GROOVY-6319[GROOVY-6319]).
-* `@Immutable` now supports Java's `Optional` container class
-(link:https://issues.apache.org/jira/browse/GROOVY-7600[GROOVY-7600])
-and handles inheritance hierarchies
-(link:https://issues.apache.org/jira/browse/GROOVY-7162[GROOVY-7162]).
-* `@Delegate` can now be used on getters
-(link:https://issues.apache.org/jira/browse/GROOVY-7769[GROOVY-7769]).
-* `@TupleConstructor` now supports `pre` and `post` closure conditions to match the functionality provided by `@MapConstructor`
-(link:https://issues.apache.org/jira/browse/GROOVY-7769[GROOVY-7769]).
-* `@TupleConstructor` and `@Builder` should be able to use defined setters rather than the field directly
-(link:https://issues.apache.org/jira/browse/GROOVY-7087[GROOVY-7087]).
-* Most annotations check property and field names provided to annotation attributes
-(link:https://issues.apache.org/jira/browse/GROOVY-7087[GROOVY-7087]).
-
-[[Groovy2.5releasenotes-Toolimprovements]]
-== Tool improvements
-
-Some improvements were made to Groovysh shell and the Groovy Console:
-
-* `groovysh` should offer easier access to grapes
-(link:https://issues.apache.org/jira/browse/GROOVY-6514[GROOVY-6514]).
-* `groovyconsole` now provides an ASMifier tab within the AstBrowser
-(link:https://issues.apache.org/jira/browse/GROOVY-8091[GROOVY-8091]).
-
-[[Groovy2.5releasenotes-OtherImprovements]]
-== Other improvements
-
-* Groovy's CliBuilder now supports annotation style definitions
-(link:https://issues.apache.org/jira/browse/GROOVY-7825[GROOVY-7825]).
-* Alternative to `with` called `tap` that has an implicit `return delegate`
-(link:https://issues.apache.org/jira/browse/GROOVY-3976[GROOVY-3976]).
-* Various JSON customization options are now supported
-(link:https://issues.apache.org/jira/browse/GROOVY-3976[GROOVY-6975] and
-link:https://issues.apache.org/jira/browse/GROOVY-3976[GROOVY-6854]).
-* Method parameter names are now accessible at runtime
-(link:https://issues.apache.org/jira/browse/GROOVY-7423[GROOVY-7423]).
-
-[[Groovy2.5releasenotes-Breakingchanges]]
-== Breaking changes
-
-A few issues fixed might also be considered breaking changes in some
-situations:
-
-* @TupleConstructor could use the order of properties listed in 'includes' when that option is used
-(link:https://issues.apache.org/jira/browse/GROOVY-8016[GROOVY-8016])
-* @ToString could output properties in a predefined order when 'includes' is used
-(link:https://issues.apache.org/jira/browse/GROOVY-8014[GROOVY-8014])
-* AstNodeToScriptAdapter should output source using the recommended modifier order
-(link:https://issues.apache.org/jira/browse/GROOVY-7967[GROOVY-7967])
-* ObjectRange iterator returns null instead of NoSuchElementException
-(link:https://issues.apache.org/jira/browse/GROOVY-7961[GROOVY-7961])
-* IntRange iterator returns null instead of NoSuchElementException
-(link:https://issues.apache.org/jira/browse/GROOVY-7960[GROOVY-7960])
-(link:https://issues.apache.org/jira/browse/GROOVY-7937[GROOVY-7937])
-* o.c.g.r.t.DefaultTypeTransformation does not apply the right toString on primitive arrays when transforming to String
-(link:https://issues.apache.org/jira/browse/GROOVY-7853[GROOVY-7853])
-* Remove synchronized methods of groovy.sql.Sql and document it as not thread-safe
-(link:https://issues.apache.org/jira/browse/GROOVY-7673[GROOVY-7673])
-* InvokerHelper formatting methods have inconsistent API
-(link:https://issues.apache.org/jira/browse/GROOVY-7563[GROOVY-7563])
-* Fix up transforms (apart from TupleConstructor) which are affected by empty includes default
-(link:https://issues.apache.org/jira/browse/GROOVY-7529[GROOVY-7529])
-* TupleConstructor with empty includes includes all
-(link:https://issues.apache.org/jira/browse/GROOVY-7523[GROOVY-7523])
-* TupleConstructor overwrites empty default constructors
-(link:https://issues.apache.org/jira/browse/GROOVY-7522[GROOVY-7522])
-* ResourceGroovyMethods/NioGroovyMethods BOM behavior is inconsistent
-(link:https://issues.apache.org/jira/browse/GROOVY-7465[GROOVY-7465])
-* API inconsistency between takeWhile, dropWhile and collectReplacements for CharSequences
-(link:https://issues.apache.org/jira/browse/GROOVY-7433[GROOVY-7433])
-* @ToString could support non-field properties
-(link:https://issues.apache.org/jira/browse/GROOVY-7394[GROOVY-7394])
-* same linkedlist code different behavior between groovy and java
-(link:https://issues.apache.org/jira/browse/GROOVY-6396[GROOVY-6396])
-* CLONE - same linkedlist code different behavior between groovy and java (fix priority of DGM methods vs actual methods on an object)
-* Accessing private methods from public ones using categories and inheritance causes MissingMethodException
-(link:https://issues.apache.org/jira/browse/GROOVY-6263[GROOVY-6263])
-
-[[Groovy2.5releasenotes-JDKrequirements]]
-== JDK requirements changes
-
-Groovy 2.5 requires JDK7+ to build and JDK7 is the minimum version of the JRE that we support.
-
-[[Groovy2.5releasenotes-Moreinformation]]
-== More information
-
-You can browse all the link:../changelogs/changelog-2.5.0.html[tickets closed for Groovy 2.5 in JIRA].

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/sitemap.groovy
----------------------------------------------------------------------
diff --git a/site/src/site/sitemap.groovy b/site/src/site/sitemap.groovy
deleted file mode 100644
index 107cba0..0000000
--- a/site/src/site/sitemap.groovy
+++ /dev/null
@@ -1,473 +0,0 @@
-menu {
-    group('Groovy') {
-        item 'Learn',                       'learn.html'
-        item 'Documentation',               'documentation.html'
-        item 'Download',                    'download.html'
-        item 'Community',                   'community.html'
-        item 'Ecosystem',                   'ecosystem.html'
-    }
-
-    group('About') {
-        item 'Contributing',                'contribute.html'
-        item 'Source code',                 'https://github.com/apache/groovy'
-        item 'Build status',                'buildstatus.html'
-        item 'Security',                    'security.html'
-        item 'Books',                       'learn.html#books'
-        item 'Thanks',                      'thanks.html'
-        item 'Sponsorship',                 'http://www.apache.org/foundation/sponsorship.html'
-        item 'FAQ',                         'faq.html'
-        item 'Search',                      'search.html'
-    }
-
-    group('Socialize') {
-        item 'Discuss on the mailing-list', 'mailing-lists.html',                               'fa-envelope'
-        item 'Groovy newsletter',           'groovy-weekly.html',                               'fa-envelope-o'
-        item 'Groovy on Twitter',           'https://twitter.com/ApacheGroovy',                 'fa-twitter'
-        item 'Events and conferences',      'events.html',                                      'fa-calendar'
-        item 'Source code on GitHub',       'https://github.com/apache/groovy',                 'fa-github'
-        item 'Report issues in Jira',       'contribute.html#reporting-issues',                 'fa-bug'
-        item 'Google+ Groovy Page',         'https://google.com/+groovy',                       'fa-google-plus'
-        item 'Google+ Groovy Community',    'http://bit.ly/g-community',                        'fa-google-plus'
-        item 'Stack Overflow questions',    'http://stackoverflow.com/questions/tagged/groovy', 'fa-stack-overflow'
-	item 'Slack Community',             'http://groovycommunity.com/',                      'fa-slack'
-    }
-}
-
-pages {
-    page 'index', 'index', [allEvents: allEvents]
-    page 'search', 'search', [category: 'Search']
-    page 'ecosystem', 'ecosystem', [category: 'Ecosystem', ecosys: ecosystem]
-    page 'learn', 'learn', [category: 'Learn', docSections: documentationSections, allBooks: library, videos: videos, courses: courses]
-    page 'documentation', 'documentation', [category: 'Documentation', docSections: documentationSections, allDocVersions: allDocVersions]
-    page 'download', 'download', [category: 'Download', distributions: distributions]
-    page 'versioning', 'versioning', [category: 'Download']
-    page 'indy', 'indy', [category: 'Download']
-    page 'security', 'security', [category: 'Learn']
-    page 'community', 'community', [category: 'Community']
-    page 'usergroups', 'usergroups', [category: 'Community', userGroups: usergroups]
-    page 'groovy-weekly', 'groovy-weekly', [category: 'Community']
-    page 'mailing-lists', 'mailing-lists', [category: 'Community']
-    page 'contribute', 'contribute', [category: 'Community']
-    page 'thanks', 'thanks', [category: 'Community']
-    page 'buildstatus', 'buildstatus', [category: 'Community']
-    page 'faq', 'faq', [category: 'Documentation', docSections: documentationSections]
-    page 'events', 'events', [category: 'Community', allEvents: allEvents]
-    page 'api', 'api', [category: 'Learn', iframeTarget: "${DOCS_BASEURL}/html/gapi"]
-    page 'gdk', 'gdk', [category: 'Learn', iframeTarget: "${DOCS_BASEURL}/html/groovy-jdk"]
-    page 'singlepagedocumentation', 'single-page-documentation', [category: 'Learn', iframeTarget: "${DOCS_BASEURL}/html/documentation/"]
-    page 'changelogs', 'changelogs', [:]
-    page '404','404', [:]
-}
-
-documentation {
-    groovyDocumentationVersions([
-            '1.7.0', '1.7.1', '1.7.2', '1.7.3', '1.7.4', '1.7.5', '1.7.6', '1.7.7', '1.7.8', '1.7.9', '1.7.10', '1.7.11',
-            '1.8.0', '1.8.1', '1.8.2', '1.8.3', '1.8.4', '1.8.5', '1.8.6', '1.8.7', '1.8.8', '1.8.9',
-            '2.0.0', '2.0.1', '2.0.2', '2.0.3', '2.0.4', '2.0.5', '2.0.6', '2.0.7', '2.0.8',
-            '2.1.0', '2.1.1', '2.1.2', '2.1.3', '2.1.4', '2.1.5', '2.1.6', '2.1.7', '2.1.8', '2.1.9',
-            '2.2.0', '2.2.1', '2.2.2',
-            '2.3.0', '2.3.1', '2.3.2', '2.3.3', '2.3.4', '2.3.5', '2.3.6', '2.3.7', '2.3.8', '2.3.9', '2.3.10', '2.3.11',
-            '2.4.0', '2.4.1', '2.4.2', '2.4.3', '2.4.4', '2.4.5', '2.4.6', '2.4.7', '2.4.8', '2.4.9', '2.4.10',
-            '2.5.0-alpha-1'
-    ])
-
-    section('Getting started','fa-graduation-cap') {
-        //          NAME                                     TARGET HTML         DOCPAGE HTML                       GENERATE
-        item 'Download Groovy',                             'download',         'download',                         false
-        item 'Install Groovy',                              'install',          'core-getting-started'
-        item 'Differences with Java',                       'differences',      'core-differences-java'
-        item 'The Groovy Development Kit',                  'groovy-dev-kit',   'core-gdk'
-        item 'Runtime and compile-time metaprogramming',    'metaprogramming',  'core-metaprogramming'
-        item 'The Grape dependency manager',                'grape',            'grape'
-        item 'Testing guide',                               'testing',          'core-testing-guide'
-        item 'Domain-Specific Languages',                   'dsls',             'core-domain-specific-languages'
-        item 'Integrating Groovy into applications',        'integrating',      'guide-integrating'
-        item 'Security',                                    'security',         'security'
-        item 'Design patterns in Groovy',                   'design-patterns',  'design-pattern-in-groovy'
-        item 'Style guide',                                 'style-guide',      'style-guide'
-    }
-
-    section ('Language Specification', 'fa-graduation-cap') {
-        item 'Syntax',              'syntax',               'core-syntax'
-        item 'Operators',           'operators',            'core-operators'
-        item 'Program structure',   'structure',            'core-program-structure'
-        item 'Object orientation',  'objectorientation',    'core-object-orientation'
-        item 'Closures',            'closures',             'core-closures'
-        item 'Semantics',           'semantics',            'core-semantics'
-    }
-
-    section ('Tools','fa-gears') {
-        item 'groovyc \u2014 the Groovy compiler',               'groovyc',          'tools-groovyc'
-        item 'groovysh \u2014 the Groovy command -like shell',   'groovysh',         'groovysh'
-        item 'groovyConsole \u2014 the Groovy Swing console',    'groovyconsole',    'groovy-console'
-        item 'IDE integration', 'ides', 'tools-ide'
-    }
-
-    section('Groovy module guides', 'fa-cubes') {
-        item 'Parsing and producing JSON',          'json',             'json-userguide'
-        item 'Working with a relational database',  'databases',        'sql-userguide'
-        item 'Processing XML',                      'processing-xml',   'xml-userguide'
-        item 'Scripting Ant tasks',                 'scripting-ant',    'ant-builder'
-        item 'Template engines',                    'templating',       'template-engines'
-        item 'Creating Swing UIs',                  'swing',            'swing-builder'
-        item 'Servlet support',                     'servlet',          'servlet-userguide'
-        item 'Working with JMX',                    'jmx',              'jmx'
-    }
-
-    section ('API documentation', 'fa-code') {
-        item 'GroovyDoc documentation of the Groovy APIs',  'api',    'api'
-        item 'The Groovy Development Kit enhancements',     'gdk',    'gdk'
-    }
-}
-
-downloads {
-    distribution('Groovy 2.5') {
-        description {
-            yield 'Groovy 2.5 is the upcoming '
-            a(href: 'versioning.html', 'version')
-            yield ' of Groovy. Pre-release versions are available:'
-        }
-        version('2.5.0-alpha-1') {
-            stable false
-        }
-    }
-    distribution('Groovy 2.4') {
-        description {
-            yield 'Groovy 2.4 is the latest stable '
-            a(href: 'versioning.html', 'version')
-            yield ' of Groovy.'
-            yieldUnescaped ''' Important: Releases before 2.4.4 weren't done under the Apache Software Foundation and are provided as a convenience, without any warranty.'''
-        }
-        version('2.4.10') {
-            stable true
-            windowsInstaller 'https://dl.bintray.com/groovy/Distributions/groovy-2.4.10-installer.exe'
-        }
-    }
-}
-
-ecosystem {
-    project('Grails') {
-        description 'Grails is an Open Source, full stack, web application framework for the JVM. It takes advantage of the Groovy programming language and convention over configuration to provide a productive and stream-lined development experience.'
-        url 'http://grails.org/'
-        logo 'img/ecosystem/grails.png'
-    }
-
-    project('Gradle') {
-        description 'Gradle is build automation evolved. Gradle can automate the building, testing, publishing, deployment and more of software packages or other types of projects such as generated static websites, generated documentation or indeed anything else.'
-        url 'http://gradle.org'
-        logo 'img/ecosystem/gradle.png'
-    }
-
-    project('Spock') {
-        description 'Spock is a testing and specification framework for Java and Groovy applications. What makes it stand out from the crowd is its beautiful and highly expressive specification language. Thanks to its JUnit runner, Spock is compatible with most IDEs, build tools, and continuous integration servers.'
-        url 'http://spockframework.org/'
-        logo ''
-    }
-
-    project('GPars') {
-        description 'The GPars framework offers Java developers intuitive and safe ways to handle Java or Groovy tasks concurrently. Leveraging the enormous flexibility of the Groovy programming language and building on proven Java technologies, we aim to make concurrent programming for multi-core hardware intuitive, robust and enjoyable.'
-        url 'http://www.gpars.org/'
-        logo 'img/ecosystem/gpars.png'
-    }
-
-    project('Ratpack') {
-        description 'Ratpack is a simple, capable, toolkit for creating high performance web applications.'
-        url 'http://www.ratpack.io/'
-        logo 'img/ecosystem/ratpack.png'
-    }
-
-    project('Griffon') {
-        description 'Griffon is an application framework for developing desktop applications in the JVM, with Groovy being the primary language of choice. Inspired by Grails, Griffon follows the Convention over Configuration paradigm, paired with an intuitive MVC architecture and a command line interface.'
-        url 'http://griffon-framework.org/'
-        logo 'img/ecosystem/griffon.png'
-    }
-
-    project('Geb') {
-        description 'Geb is a powerful browser functional testing framework that lets you quickly and easily write functional tests in Groovy. It brings together the power of WebDriver, the elegance of jQuery content selection, the robustness of Page Object modelling and the expressiveness of the Groovy language.'
-        url 'http://www.gebish.org/'
-        logo 'img/ecosystem/geb.png'
-    }
-
-    project('SDKMAN!') {
-        description 'SDKMAN! is a tool for managing parallel versions of multiple Software Development Kits on most Unix based systems. It provides a convenient command line interface for installing, switching, removing and listing Candidates.'
-        url 'http://sdkman.io/'
-        logo 'img/ecosystem/sdkman.png'
-    }
-}
-
-allEvents {
-    // Note that the event image should be 257x180 to look nice
-    event('Greach 2017') {
-        location 'Madrid, Spain'
-        date 'March 31 - April 1, 2017'
-        url 'http://greachconf.com/'
-        logo 'img/confs/greach2017.png'
-        description '''
-            <p>
-            Greach, the Spanish gathering of enthusiasts of Groovy, Grails, Griffon, Gradle, Spock, Vert.x, Gaelyk,
-            and many more. With inspirational talks from the makers and users of these projects, hands-on workshops with the rock stars,
-            join the 150+ attendees, designers, students, designers, the best professionals together in a great atmosphere.
-            </p>
-        '''
-    }
-    event('GR8Conf EU 2017') {
-        location 'Copenhagen, Denmark'
-        date 'May 31 - June 2, 2017'
-        url 'http://gr8conf.eu/'
-        logo 'img/confs/gr8confeu.png'
-        description '''
-            <p>
-            Groovy, Grails and the related technologies have seen astounding growth in interest and adoption the past
-            few years, and with good reason. To spread the word even more we have created GR8Conf.
-            </p>
-            <p>
-            The 2017 Edition of GR8Conf Europe will feature a DevOps day. Focus will be on technologies to support your
-            everyday DevOps needs.
-            </p>
-            <p>
-            GR8Conf is an independent, affordable series of conferences.
-            It's dedicated to the technologies in the Groovy ecosystem.
-            </p>
-        '''
-    }
-    event('GR8Conf US 2017') {
-        location 'Minneapolis, MN, United States of America'
-        date 'July 26 - 28, 2017'
-        url 'http://gr8conf.us/'
-        logo 'img/confs/gr8confus.png'
-        description '''
-            <p>
-            Groovy, Grails and the related technologies have seen astounding growth in interest and adoption the past
-            few years, and with good reason. To spread the word even more we have created GR8Conf.
-            </p>
-            <p>
-            GR8Conf is an independent, affordable series of conferences.
-            It's dedicated to the technologies in the Groovy ecosystem.
-            </p>
-        '''
-    }
-    event('GR8Conf India 2018') {
-        location 'New Delhi, India'
-        date 'January, 2018'
-        url 'http://gr8conf.in/'
-        logo 'img/confs/gr8confin.png'
-        description '''
-            <p>
-            Groovy, Grails and the related technologies have seen astounding growth in interest and adoption the past
-            few years, and with good reason. To spread the word even more we have created GR8Conf.
-            </p>
-            <p>
-            GR8Conf is an independent, affordable series of conferences.
-            It's dedicated to the technologies in the Groovy ecosystem.
-            </p>
-        '''
-    }
-
-
-}
-
-books {
-    book('Groovy in Action, Second Edition') {
-        authors "Dierk K�nig, Paul King, Guillaume Laforge, Hamlet D'Arcy, C�dric Champeau, Erik Pragt, and Jon Skeet"
-        cover 'img/books/regina.png'
-        url 'http://www.manning.com/koenig2/'
-        description 'The undisputed definitive reference on the Groovy programming language, authored by core members of the development team.'
-    }
-
-    book('Making Java Groovy') {
-        authors 'Ken Kousen'
-        cover 'img/books/Kousen-MJG.png'
-        url 'http://www.manning.com/kousen/'
-        description 'Make Java development easier by adding Groovy. Each chapter focuses on a task Java developers do, like building, testing, or working with databases or restful web services, and shows ways Groovy can help.'
-    }
-
-    book('Programming Groovy 2') {
-        authors 'Venkat Subramaniam'
-        cover 'img/books/vslg2.jpg'
-        url 'http://pragprog.com/book/vslg2/programming-groovy-2'
-        description 'Dynamic productivity for the Java developer'
-    }
-
-    book('Groovy 2 Cookbook') {
-        authors 'Andrey Adamovitch, Luciano Fiandeso'
-        cover 'img/books/g2cook.jpg'
-        url 'http://www.packtpub.com/groovy-2-cookbook/book'
-        description 'Over 90 recipes that provide solutions to everyday programming challenges using the powerful features of Groovy 2'
-    }
-
-    book('Groovy for Domain-Specific Languages - Second Edition') {
-        authors 'Fergal Dearle'
-        cover 'img/books/gdsl.jpg'
-        url 'https://www.packtpub.com/application-development/groovy-domain-specific-languages-second-edition'
-        description 'Extend and enhance your Java applications with domain-specific scripting in Groovy'
-    }
-
-    book('Groovy Goodness Notebook') {
-        authors 'Hubert A. Klein Ikkink'
-        cover 'img/books/ggood.jpg'
-        url 'https://leanpub.com/groovy-goodness-notebook'
-        description 'Experience the Groovy programming language through code snippets. Learn more about (hidden) Groovy features with code snippets and short articles. The articles and code will get you started quickly and will give more insight in Groovy.'
-    }
-
-    book("Grails 3: A Practical Guide to Application Development") {
-        authors "Eric Helgeson"
-        cover 'img/books/pratical-grails-3-book-cover.png'
-        url 'https://www.grails3book.com/'
-        description "The first book dedicated to Grails 3. You will learn the concepts behind building Grails applications. Real, up-to-date code examples are provided so you can easily follow along."
-    }
-
-    book('Falando de Grails') {
-        authors 'Henrique Lobo Weissmann'
-        cover 'img/books/weissmann_groovy_grails.png'
-        url 'http://www.casadocodigo.com.br/products/livro-grails'
-        description 'For Groovy and Grails developers, authored by the founder of Grails Brasil based on his experiences as a Groovy and Grails consultant.'
-    }
-
-}
-
-usergroups {
-    // Europe
-    userGroup('Aarhus Groovy & Grails Meetup') {
-        location 'Europe/Denmark'
-        url 'https://www.linkedin.com/grps/Groovy-Grails-Meetup-Aarhus-3702945/'
-    }
-    userGroup('Paris Groovy Grails User Group') {
-         location 'Europe/France'
-    }
-    userGroup('Berlin Groovy User Group') {
-        location 'Europe/Germany'
-        url 'http://www.meetup.com/de/Berlin-Groovy-User-Group/'
-    }
-    userGroup('Groovy & Grails Israel User Group') {
-        location 'Europe/Israel'
-        url 'http://www.meetup.com/Groovy-Grails-Israel-Meetup-Group/'
-    }
-    userGroup('Warsaw Groovy User Group') {
-        location 'Europe/Poland'
-        url 'http://www.meetup.com/Warsaw-Groovy-User-Group/'
-    }
-    userGroup('Madrid Groovy User Group') {
-        location 'Europe/Spain'
-        url 'http://www.meetup.com/madrid-gug/'
-    }
-    userGroup('Dutch Groovy and Grails User Group (NLGUG)') {
-        location 'Europe/The Netherlands'
-        url 'http://www.meetup.com/nl-gug/'
-    }
-
-    // North-America
-    userGroup('Austin Groovy and Grails User Group (TX)') {
-        location 'North-America/United States'
-        url 'http://www.meetup.com/Austin-Groovy-and-Grails-Users/'
-    }
-    userGroup('Boston Groovy, Grails, Spring Meetup (B2GS)') {
-        location 'North-America/United States'
-        url 'https://www.meetup.com/Grails-Boston/'
-    }
-    userGroup('Coder Consortium of Sacramento') {
-        location 'North-America/United States'
-        url 'http://coderconsortium.com/'
-    }
-    userGroup('DFW Groovy & Grails User Group') {
-        location 'North-America/United States'
-        url 'http://dfw2gug.org'
-    }
-    userGroup('Groovy Users of Minnesota') {
-        location 'North-America/United States'
-        url 'http://groovy.mn'
-    }
-    userGroup('NYC Groovy / Grails Meetup') {
-        location 'North-America/United States'
-        url 'http://www.meetup.com/grails/'
-    }
-    userGroup('Pittsburgh Groovy Programming') {
-        location 'North-America/United States'
-        url 'http://www.meetup.com/Pittsburgh-Groovy-Programming/'
-    }
-
-    // South-America
-    userGroup('Grails Brasil - Groovy and Grails users group of Brazil') {
-        location 'South-America/Brazil'
-        url 'http://www.grailsbrasil.com.br'
-    }
-    userGroup('Brazil Groovy and Grails Meetup') {
-        location 'South-America/Brazil'
-        url 'http://www.meetup.com/groovybr'
-    }
-
-    // Asia
-    userGroup('Bangalore Groovy Grails Meetup') {
-        location 'Asia/India'
-        url 'http://www.meetup.com/Bangalore-Groovy-Grails-Meetup/'
-    }
-    userGroup('Japan Grails/Groovy User Group') {
-        location 'Asia/Japan'
-        url 'http://www.jggug.org/'
-    }
-
-    // Oceania?
-    /* userGroup('') { location 'Oceania/Australia' } */
-}
-
-videos {
-    video('The Groovy ecosystem revisited') {
-        speaker 'Andr�s Almiray'
-        summary '''
-            <p>Groovy is a well established player in the JVM since a few years ago.
-            It's increased popularity across the years has spawned several projects that conform the Groovy Ecosystem.
-            You've probably heard of Grails, Gradle, Griffon and Spock.
-            But what about the rest of projects that are just waiting around the corner to be discovered and make your life easier?
-            This talk presents them tools and libraries that use Groovy as the main driving force to get the job done.</p>
-        '''
-        pictureUrl 'groovy-ecosystem-revisited.png'
-        videoUrl 'https://www.youtube.com/watch?v=2NGeaIwmnC8&list=PLwxhnQ2Qv3xuE4JEKBpyE2AbbM_7G0EN1&index=5'
-        slidesUrl 'http://fr.slideshare.net/aalmiray/gr8conf-groovy-ecosystem'
-    }
-
-    video('Metaprogramming with the Groovy runtime') {
-        speaker 'Jeff Brown'
-        summary '''
-            <p>The dynamic runtime nature of Groovy is one of the things that sets it apart from standard Java and makes it a fantastic language for building dynamic applications for the Java Platform.
-            The metaprogramming capabilities offered by the language provide everything that an application development team needs to build systems that are far more capable than their all Java counterparts.
-            This Part 1 of 2 will cover the runtime metaprogramming capabilities of Groovy. The session will dive deep into Groovy's Meta Object Protocol (MOP) which implements the incredibly dynamic runtime dispatch mechanism.
-            The session will include a lot of live code demonstrating really powerful runtime features of the language.
-            This session is focused specifically on Groovy's runtime metaprogramming capabilities.
-            Part 2 of 2 will cover Groovy's compile time metaprogramming capabilities</p>
-        '''
-        pictureUrl 'metaprogramming-part-1.png'
-        videoUrl 'https://www.youtube.com/watch?v=1xvg8Wcj-hg&list=PLwxhnQ2Qv3xuE4JEKBpyE2AbbM_7G0EN1&index=9'
-    }
-
-    video('Groovy Puzzlers') {
-        speaker 'Noam Tenne'
-        summary '''
-            <p>Remember the epic Java Puzzlers? Here's the Groovy version, and we have some neat ones!
-            Even though we are totally a Grails shop here at JFrog, some of these had us scratching our heads for days trying to figure them out.
-            And there is more!
-            Contributions from the truly Groovy senseis, including Guillaume Laforge, Andr�s Almiray, Tim Yates, Ken Kousen
-            make this talk an unforgettable journey to Groovy.
-            In this talk, you'll have the expected dose of fun and enlightenment hearing about our mistakes and failures, great and small,
-            in hard core Groovy/Grails development.</p>
-        '''
-        pictureUrl 'groovy-puzzlers.png'
-        videoUrl 'https://www.youtube.com/watch?v=GfIhxi7L6R0&list=PLwxhnQ2Qv3xuE4JEKBpyE2AbbM_7G0EN1&index=17'
-    }
-}
-
-courses {
-    course('The Complete Apache Groovy Developer Course') {
-        instructor 'Dan Vega'
-        url 'https://www.udemy.com/apache-groovy/?couponCode=LEARN_GROOVY'
-        description '''
-            <p>I am going to teach you everything you need to know to start using The Groovy Programming language. This course is really designed
-            for 2 different types of people and I think both will benefit from it. If you\u2019re a beginner programmer with a some experience in
-            another language like Python or Ruby this course is for you. Dynamic languages are generally thought of as easier for total beginners
-            to learn because they\u2019re flexible and fun. If you\u2019re an existing Java Developer (Beginner or Experienced) this course is also for you.</p>
-
-            <p>This course is packed with almost 14 hours of content. We are going to start off with getting your development environment up and running
-            and then go through the very basics of the language. From there we are going to build on that in each section cover topics like closures, meta-programming,
-            builders and so much more. I feel like this is one of the most complete courses around and I am excited for you to join me on this adventure.</p>
-        '''
-        cover 'groovy-course-cover.png'
-    }
-}

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/wiki/groovy-release.adoc
----------------------------------------------------------------------
diff --git a/site/src/site/wiki/groovy-release.adoc b/site/src/site/wiki/groovy-release.adoc
deleted file mode 100644
index 63820de..0000000
--- a/site/src/site/wiki/groovy-release.adoc
+++ /dev/null
@@ -1,132 +0,0 @@
-= Adapting the release process for Apache
-C�dric Champeau <cc...@apache.org>
-v1.0, March 27, 2015: First version
-
-:teamcity: http://ci.groovy-lang.org
-:groovy: http://groovy-lang.org
-:bintray: https://bintray.com/[Bintray]
-:gradle: http://gradle.org[Gradle]
-
-The goal of this document is to review the current release process for Groovy, and what adaptations are required to fit into the Apache model. 
-
-== The Groovy Way
-
-During the last 4 years, the Groovy team invested a lot of time in narrowing its release process to reduce human errors as much as possible. Releases were previously done from a despot personal computer, with a number of risks:
-
-* mix of development sources and sources found in the repository. This can happen if the release manager did the release without doing a clean checkout in a separate directory. Then there were risks that source files were present on the release manager computer and not in source control.
-* reliance on a local dependency repository. During development, committers usually do not suffer dependency management issues, because they do regular update and some third party dependencies are found in their local caches (Maven, Gradle). However, new developers may find themselves in a different situation, where they have no local cache. When they try to build, compilation fails because some dependencies cannot be fetched.
-* manual update of properties file for release numbers
-* manual tagging
-* manual update of VCS after release, that can easily be forgotten
-* upload of distribution to the Codehaus WebDAV repository, with a lot of failures due to the poor quality of the protocol (in particular stale lock files)
-* upload of documentation took up to several hours due to the WebDAV process, and were *erasing* previous versions of documentation (API, GAPI, GDK) so it wasn't possible to find online the reference API for a specific Groovy version.
-* Maven artifact uploading and signing done through the Codehaus repository, which was again very slow and error-prone
-
-It's worth noting that binary artifacts are currently published in the `org.codehaus.groovy` group id and that the build uses {gradle}.
-
-=== Automation
-
-For those reasons, we slowly migrated off the Codehaus infrastructure and built a new release process with a continuous integration server at its core. We reviewed several options and eventually found a sponsor, Jetbrains, for a {teamcity}[TeamCity continuous integration server]. The reasons to choose a dedicated server are not all related to the release process. The development process itself greatly benefits from it:
-
-* each branch of Groovy (currently 3 active branches: 2.3.x, 2.4.x, master) are built and tested against multiple JDKs : JDK 6, JDK 7, JDK 8, and older branches of Groovy are tested against older JDKs (JDK 5 for 1.8.x/2.x). Note that some Groovy versions are tested in two flavors: legacy and _invokedynamic_.
-* we build unreleased versions of OpenJDK from sources, so that we can test the master branch against upcoming JDK versions, such as JDK 8 updates and even JDK 9. Those builds allowed us to find a lot of bugs in the JDK before it was released.
-* some community projects are tested against development versions of Groovy (currently, Ratpack and Nextflow)
-
-Eventually, the {groovy}[new Groovy website] is built from https://github.com/groovy/groovy-website[sources] and deployed directly from the CI server, after each push on the _master_ branch.
-
-But in addition to those benefits, it's the release process itself which greatly improved:
-
-* the deployment infrastructure moved from Codehaus to {bintray} and http://www.jfrog.com/open-source/[Artifactory]
-* several build plans are dedicated to builds and releases:
-** the http://ci.groovy-lang.org/viewType.html?buildTypeId=Groovy_BintrayIntegration_UploadSnapshots&guest=1[snapshot upload] plan builds Groovy from sources and deploys the artifacts to the http://oss.jfrog.org/oss-snapshot-local/org/codehaus/groovy/[OSS Artifactory Snapshot Repository].
-** the http://ci.groovy-lang.org/viewType.html?buildTypeId=Groovy_BintrayIntegration_ReleasePlan&guest=1[release plan] allows a release manager to release a new version of Groovy directly from the CI server
-** the http://ci.groovy-lang.org/viewType.html?buildTypeId=Groovy_BintrayIntegration_GvmBroadcast[GVM broadcast] plan allows us to announce a new release of Groovy to http://gvmtool.net/[GVM] and its https://twitter.com/gvmtool[Twitter account] directly from the CI server
-** the http://ci.groovy-lang.org/viewType.html?buildTypeId=Groovy_BintrayIntegration_GvmMakeDefault[GVM default] plan allows us to notify GVM that a specific Groovy version is the new default version, directly from the CI server
-
-The last two GVM plans are separated because they need to be triggered manually, once we are ready to announce that a new Groovy version is out. Let's now describe what the release plan does, so that we can imagine what adaptations will be required to go the Apache Way.
-
-=== Release plan
-
-The release plan is at the core of the Groovy release process. It reduces human interactions to the bare minimal, dramatically reducing the potential errors. In particular:
-
-* builds are done using a verified JDK
-* the CI local Maven and Gradle repository caches are cleaned every day, making sure that the build is doable from source for any developer
-* release branches and tags are created automatically
-* properties files are updated automatically (sets the release version, then the next version to push on VCS)
-* binaries (sources, documentation, distribution, SDK) are uploaded to {bintray}
-* documentation is uploaded to the {groovy}[Groovy website] in a separate directory, so that each Groovy version has its own documentation readable online
-* all artifacts (binaries+maven) are signed through the {bintray} API
-* Maven artifacts are uploaded to https://bintray.com/bintray/jcenter[JCenter]
-* Maven Central synchronization is done through the {bintray} API
-* GVM gets notified that a new version is available
-
-To do this, the only requirement is to fill in a form and click a button. From that, everything is automated. So when the Groovy team decides that a new release can be done, after clicking the button, the release is available online in general less than 2 hours later. This has to be compared to the previous, error prone process, which took up to 12 hours for a single release. Groovy has a tradition of maintaining multiple branches, so this time has to be multiplied by the number of active branches that we maintain, which are usually released the same day.
-
-With that regards, the decision whether to release a new version or not is done collectively, on the mailing list or in a Skype channel where the core developers agree about releases. But once the decision is made, there is almost no human process involved anymore.
-
-Last but not least, Groovy doesn't make any difference between the source distribution (the zip of the source tree) and binary artifacts (distribution, documentation, maven artifacts). All are considered part of the release, and signed accordingly. But there is a technical difference between Maven artifacts and what we call the distribution (sources, binaries, documentation, SDKs). The distribution is only available in {bintray}. It consists of zip files that the developer can download from the Groovy website. The Maven artifacts, on the other hand, are hosted in JCenter and Maven Central. 
-
-To be able to upload the distribution, the release process automatically creates a new version of Groovy on {bintray}. This version is some kind of folder which will host files for this specific Groovy version. When the files are uploaded, they are kept in *staging* for at most 48 hours. Currently, the release process automatically publishes the artifacts, so there's effectively no staging for Groovy.
-
-It is unclear whether such a staging phase exists for the Maven artifacts uploaded to JCenter (but it seems we can), but it is clear that the Maven Central synchronization that is doable through {bintray} uses a staging phase, because it directly communicates with the Nexus OSS repository. Maven Central synchronization staging repositories are directly closed by {bintray}.
-
-Releasing a new version of Groovy also implies updating the website. Technically it involves two manual steps:
-
-* connect to the server and update the _symlinks_ in _/var/www/docs/docs_ for _latest_ and _next_ versions of Groovy, so that the latest documentation link points to the just released version of Groovy
-* *then* update the _sitemap.groovy_ file in the Groovy Website repo to add the new version, commit, and push, leading to the generation of the website. In particular, the static website generator will fetch the release notes from JIRA and generate a pretty page using the website template, as well as generating some documentation pages from the whole documentation, again decorated with the website template. 
-
-Optionally, for major versions, release notes can be written in Asciidoctor format, and published through the website (see https://github.com/groovy/groovy-website/tree/master/site/src/site/releasenotes).
-
-Eventually, the joint builds on the CI server need to be updated so that they use the latest snapshot versions of Groovy. This is done by changing the `CI_GROOVY_VERSION` environment variable of each build configuration.
-
-== Adaptations required for Apache
-
-The following section is based on our understanding of the Apache Way of releasing. This section is going to be updated based on the feedback we have from our mentors or fellow Apache members.
-
-First of all, the main and only important artifact for Apache is the *sources of the project*. This is going to be very important for our adaptation of the process. This means that binaries, documentation, Maven artifacts and such are not considered equally, and are not mandatory to be able to release a version.
-
-A detailed guide of the release process *during incubation* can be found http://incubator.apache.org/guides/releasemanagement.html[here] but those are derived from the final release process. Below are the main points with comments about how far we are from there.
-
-* 1.1 Checksums and PGP signatures are valid.
-
-_There are no such checksums or multiple PGP signatures for Groovy, apart from those generated through {bintray}. It is implied here that signatures must be checked before the release is done, that is to say that we *require* a staging phase and the ability to perform *multiple signatures*. Signatures are those of committers._
-
-* 2.1 Build is successful including automated tests.
-
-_We're all clear on that. Groovy is tested before each release, and the CI server does much more in testing that a normal user can do. In particular, testing with multiple JDKs. The sources zip has been verified to build and test from sources without any issue._
-
-* 3.1 DISCLAIMER is correct, filenames include "incubating".
-
-_We need to add the *DISCLAIMER*. The "incubating" part is disturbing. In particular, Groovy is not a new project. It's been there for 12 years, and the last release before Apache will be 2.4.2. Does it mean that the next release will have to be named 2.4.3-incubating? It will be very disturbing for our users, and it sounds pretty bad, just as if Groovy wasn't production ready. Should we do this, then the incubation phase should be shortened as much as possible. Another option that we consider is what are exactly the deliverables. If the only deliverable is the source zip, because only sources matter (see 3.6), then we could potentially rename only the source zip to include incubating. The binaries, the properties file, etc, could stay with 2.4.3 (without incubating) because it doesn't seem to be mandatory that the *version number* includes incubating, only the filenames. And if we produce binaries that are not hosted at Apache, like we do now, they can follow their own pattern. Thi
 s would imply that in Groovy, the only deliverable that would be done through Apache would be the source zip, and the *filename* could include incubating. All other artifacts would *not* belong to the release checklist._
-
-* 3.2 Top-level LICENSE and NOTICE are correct for each distribution.
-
-_We do have those files_.
-
-* 3.3 All source files have license headers where appropriate.
-
-_It has to be checked, but it should already be the case_
-
-* 3.4 The provenance of all source files is clear (ASF or software grants).
-
-_This is going to be done during the incubation phase._
-
-* 3.5 Dependencies licenses are ok as per http://apache.org/legal/
-
-_We will have to remove the only dependency which is now unused and not a standard OSS license: Simian._
-
-* 3.6 Release consists of source code only, no binaries. Each Apache release must contain a source package. This package may not contain compiled components (such as "jar" files) because compiled components are not open source, even if they were built from open source. 
-
-_The source zip does contain a binary *dependency*: openbeans, which is not available in a third party Maven repository. We are unsure if the rule applies to it or not._
- 
-It is also implied that we are going to change the group id from `org.codehaus.groovy` to `org.apache.groovy`. What it means for the release process (in particular synchronization with Maven Central through Bintray) are unclear.
-
-So it seems that the current process could be adapted if:
-
-* we only release the source zip on Apache, and only this item is voted
-* to do this we need to split the release process in at least 3 steps
-** building and deploying to a staging repository, including all artifacts. That staging period has to be extended to *at least* 72 hours, which is the minimal voting duration.
-** signing has to be done by individuals. This implies some way to download the full artifact list (there are more than 200 binary files in total !), sign them, and upload the signatures only.
-** publishing, which implies closing the Bintray staging repository, then synchronizing to Maven Central and publishing to GVM
-
-


[05/20] groovy-user-site git commit: move content to asf-site branch

Posted by pa...@apache.org.
http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/releasenotes/groovy-1.6.adoc
----------------------------------------------------------------------
diff --git a/site/src/site/releasenotes/groovy-1.6.adoc b/site/src/site/releasenotes/groovy-1.6.adoc
deleted file mode 100644
index cf4e2c1..0000000
--- a/site/src/site/releasenotes/groovy-1.6.adoc
+++ /dev/null
@@ -1,1436 +0,0 @@
-== Overview of Groovy 1.6
-
-As we shall see in this article, the main highlights of this Groovy 1.6
-release are:
-
-* *Greater compile-time and runtime performance improvements*
-* Multiple assignments
-* Optional return in�`if`/`else`�and�`try`/`catch`�blocks
-* Java 5 annotation definition
-* *AST transformations*�and all the provided transformation annotations
-like`@Singleton`,�`@Lazy`,�`@Immutable`,�`@Delegate`�and friends
-* The Grape module and dependency system and its�`@Grab`�transformation
-* Various Swing builder improvements, thanks to the Swing
-/�link:http://griffon-framework.org/[Griffon]�team, as well as several Swing
-console improvements
-* The integration of�*JMX builder*
-* Various�*metaprogramming improvements*, like the EMC DSL, per-instance
-metaclasses even for POJOs, and runtime mixins
-* *JSR-223*�scripting engine built-in
-* Out-of-the-box�*OSGi readiness*
-
-All those improvements and new features serve one goal:�*helping
-developers be more productive and more agile*, by:
-
-* Focusing more on the task at hand than on boiler-plate technical code
-* Leveraging existing Enterprise APIs rather than reinventing the wheel
-* Improving the overal performance and quality of the language
-* Enabling developers to customize the language at will to derive their
-own Domain-Specific Languages
-
-But beyond all these important aspects,�*Groovy is not just a language,
-it\u2019s a whole ecosystem*.
-
-The improvements in Groovy\u2019s generated bytecode information helps
-capable tools coverage
-like�link:http://cobertura.github.io/cobertura/[Cobertura]�and
-its Groovy support, or pave the way for new utilities
-like�link:http://codenarc.sourceforge.net/[CodeNarc]�for static code analysis
-for Groovy.
-
-The malleability of the syntax of the language and its metaprogramming
-capabilities give birth to advanced testing tools such as
-the link:http://easyb.org/[Easyb]�Behavior-Driven-Development project,
-the�link:http://code.google.com/p/gmock/[GMock]�mocking library or
-the�link:http://code.google.com/p/spock/[Spock]�testing and specification
-framework.
-
-Again, Groovy\u2019s flexibility and expressivity and its scripting
-capabilities open the doors to advanced build scripting or
-infrastructure systems for your continuous integration practices and
-project build solutions, such
-as�link:https://gant.github.io/[Gant]�and�link:http://www.gradle.org/[Gradle].
-
-At the tooling level, Groovy also progresses, for instance with
-its�`groovydoc`�Ant task to let you generate proper JavaDoc covering,
-documenting and interlinking both your Groovy and Java source files for
-your Groovy/Java mixed projects.
-
-And at the same time, IDE makers improve their support for Groovy, by
-giving users powerful weapons such as cross-language code refactoring,
-profound understanding of dynamic language idioms, code completion, and
-more, to make developers productive when using Groovy in their projects.
-
-Now, armed with this knowledge of the Groovy world, it\u2019s time to dive
-into the novelties of Groovy 1.6!
-
-[[Groovy16releasenotes-Performanceimprovements]]
-== Performance improvements
-
-A lot of care has been taken to improve both the compile-time and
-runtime performance of Groovy, compared to previous releases.
-
-The�*compiler is 3 to 5 times faster*�than in previous releases. This
-improvement has also been backported in the 1.5.x branch, so that both
-the old maintenance branch and the current stable branch benefit from
-this work. Thanks to class lookup caches, the bigger the project, the
-faster the compilation will be.
-
-However, the most noticeable changes will be in the general runtime
-performance improvements of Groovy. We used several benchmarks from
-the�link:http://shootout.alioth.debian.org/[Great Language Shootout]�to
-measure our progress. On those we selected, compared to the old Groovy
-1.5.x line, the*performance improvements ranged from 150% to 460%*.
-Micro-benchmarks obviously rarely reflect the kind of code you have in
-your own projects, but the overal performance of your projects should
-improve significantly.
-
-[[Groovy16releasenotes-Multipleassignments]]
-== Multiple assignments
-
-In Groovy 1.6, there is only one syntax addition for being able to
-define and assign several variables at once:
-
-[source,groovy]
--------------------
-def (a, b) = [1, 2]
-
-assert a == 1
-assert b == 2
--------------------
-
-A more meaninful example may be methods returning longitute and latitude
-coordinates. If these coordinates are represented as a list of two
-elements, you can easily get back to each element as follows:
-
-[source,groovy]
----------------------------------------------------------------------
-def geocode(String location) {
-    // implementation returns [48.824068, 2.531733] for Paris, France
-}
-
-def (lat, long) = geocode("Paris, France")
-
-assert lat == 48.824068
-assert long == 2.531733
----------------------------------------------------------------------
-
-And you can also define the types of the variables in one shot as
-follows:
-
-[source,groovy]
--------------------------------------
-def (int i, String s) = [1, 'Groovy']
-
-
-assert i == 1
-assert s == 'Groovy'
--------------------------------------
-
-For the assignment (with prior definition of the variables), just omit
-the�`def`�keyword:
-
-[source,groovy]
-------------------------------------------------------
-def firstname, lastname
-
-
-(firstname, lastname) = "Guillaume Laforge".tokenize()
-
-
-assert firstname == "Guillaume"
-assert lastname == "Laforge"
-------------------------------------------------------
-
-If the list on the right-hand side contains more elements than the
-number of variables on the left-hand side, only the first elements will
-be assigned in order into the variables. Also, when there are less
-elements than variables, the extra variables will be assigned null.
-
-So for the case with more variables than list elements, here,�`c`�will
-be�`null`:
-
-[source,groovy]
-------------------------
-def elements = [1, 2]
-def (a, b, c) = elements
-
-
-assert a == 1
-assert b == 2
-assert c == null
-------------------------
-
-Whereas in the case where there are more list elements than variables,
-we\u2019ll get the following expectations:
-
-[source,groovy]
----------------------------
-def elements = [1, 2, 3, 4]
-def (a, b, c) = elements
-
-
-assert a == 1
-assert b == 2
-assert c == 3
----------------------------
-
-For the curious minds, supporting multiple assignments also means we can
-do the standard school swap case in one line:
-
-[source,groovy]
------------------------------
-// given those two variables
-def a = 1, b = 2
-
-
-// swap variables with a list
-(a, b) = [b, a]
-
-
-assert a == 2
-assert b == 1
------------------------------
-
-[[Groovy16releasenotes-Annotationdefinition]]
-== Annotation definition
-
-Actually, when I said that multiple assignments were the sole syntax
-addition, it\u2019s not entirely true. Groovy supported the syntax for
-annotation definition even in Groovy 1.5, but we had not implemented the
-feature completely. Fortunately, this is now fixed, and it wraps up all
-the Java 5 features supported by Groovy, such as�*static
-imports*,�*generics*,�*annotations*, and�*enums*, making Groovy
-the�*sole alternative dynamic language for the JVM supporting all those
-Java 5 features*, which is critical for a seamless Java integration
-story, and for the usage in Enterprise frameworks relying on
-annotations, generics and more, like JPA, EJB3, Spring, TestNG, etc.
-
-[[Groovy16releasenotes-Optionalreturnforifelseandtrycatchfinallyblocks]]
-== Optional return for if/else and try/catch/finally blocks
-
-It is now possible for�`if/else`�and�`try/catch/finally`�blocks to
-return a value when they are the last expression in a method or a
-closure. No need to explicitly use the�`return`�keyword inside these
-constructs, as long as they are the latest expression in the block of
-code.
-
-As an example, the following method will return�`1`, although
-the�`return`�keyword was omitted.
-
-[source,groovy]
-----------------------
-def method() {
-    if (true) 1 else 0
-}
-
-
-assert method() == 1
-----------------------
-
-For�`try/catch/finally`�blocks, the last expression evaluated is the one
-being returned. If an exception is thrown in the�`try`�block, the last
-expression in the�`catch`�block is returned instead. Note
-that�`finally`�blocks don\u2019t return any value.
-
-[source,groovy]
---------------------------------------------
-def method(bool) {
-    try {
-        if (bool) throw new Exception("foo")
-        1
-    } catch(e) {
-        2
-    } finally {
-        3
-    }
-}
-
-
-assert method(false) == 1
-assert method(true) == 2
---------------------------------------------
-
-[[Groovy16releasenotes-ASTTransformations]]
-== AST Transformations
-
-Although at times, it may sound like a good idea to extend the syntax of
-Groovy to implement new features (like this is the case for instance for
-multiple assignments), most of the time, we can\u2019t just add a new keyword
-to the grammar, or create some new syntax construct to represent a new
-concept. However, with the idea of AST (Abstract Syntax Tree)
-Transformations, we are able to tackle new and innovative ideas without
-necessary grammar changes.
-
-When the Groovy compiler compiles Groovy scripts and classes, at some
-point in the process, the source code will end up being represented in
-memory in the form of a Concrete Syntax Tree, then transformed into an
-Abstract Syntax Tree. The purpose of AST Transformations is to let
-developers hook into the compilation process to be able to modify the
-AST before it is turned into bytecode that will be run by the JVM.
-
-*AST Transformations provides Groovy with improved compile-time
-metaprogramming capabilities*�allowing powerful flexibility at the
-language level, without a runtime performance penalty.
-
-There are two kinds of transformations: global and local
-transformations.
-
-* Global transformations are applied to by the compiler on the code
-being compiled, wherever the transformation apply. A JAR added to the
-classpath of the compiler should contain a service locator file
-at�`META-INF/services/org.codehaus.groovy.transform.ASTTransformation`�with
-a line with the name of the transformation class. The transformation
-class must have a no-args constructor and implement
-the�`org.codehaus.groovy.transform.ASTTransformation`interface. It will
-be run against every source in the compilation, so be sure to not create
-transformations which scan all the AST in an expansive and
-time-consuming manner, to keep the compiler fast.
-* Local transformations are transformations applied locally by
-annotating code elements you want to transform. For this, we reuse the
-annotation notation, and those annotations should
-implement�`org.codehaus.groovy.transform.ASTTransformation`. The
-compiler will discover them and apply the transformation on these code
-elements.
-
-Groovy 1.6 provides several local transformation annotations, in the
-Groovy Swing Builder for data binding (`@Bindable`�and�`@Vetoable`), in
-the Grape module system for adding script library dependencies
-(`@Grab`), or as general language features without requiring any syntax
-change to support them
-(`@Singleton`,�`@Immutable`,�`@Delegate`,�`@Lazy`,�`@Newify`,�`@Category`,�`@Mixin`�and�`@PackageScope`).
-Let\u2019s have a look at some of these transformations
-(`@Bindable`�and�`@Vetoable`�will be covered in the section related to
-the Swing enhancements, and�`@Grab`�in the section about Grape).
-
-[[Groovy16releasenotes-Singleton]]
-=== @Singleton
-
-Whether the singleton is pattern or an anti-pattern, there are still
-some cases where we need to create singletons. We\u2019re used to create a
-private constructor, a�`getInstance()`�method for a static field or even
-an initialized�`public static final`�field. So instead of writing code
-like this in Java:
-
-[source,groovy]
----------------------------------------------
-public class T {
-    public static final T instance = new T();
-    private T() {}
-}
----------------------------------------------
-
-You just need to annotate your type with the�`@Singleton`�annotation:
-
-[source,groovy]
----------------------
-@Singleton class T {}
----------------------
-
-The singleton instance can then simply be accessed
-with�`T.instance`�(direct public field access).
-
-You can also have the lazy loading approach with an additional
-annotation parameter:
-
-[source,groovy]
-----------------------------------
-@Singleton(lazy = true) class T {}
-----------------------------------
-
-Would become more or less equivalent to this Groovy class:
-
-[source,groovy]
----------------------------------------
-class T {
-    private static volatile T instance
-    private T() {}
-    static T getInstance () {
-        if (instance) {
-            instance
-        } else {
-            synchronized(T) {
-                if (instance) {
-                    instance
-                } else {
-                    instance = new T ()
-                }
-            }
-        }
-    }
-}
----------------------------------------
-
-Lazy or not, once again, to access the instance, simply
-do�`T.instance`�(property access, shorcut for�`T.getInstance()`).
-
-[[Groovy16releasenotes-Immutable]]
-=== @Immutable
-
-Immutable objects are ones which don\u2019t change after initial creation.
-Such objects are frequently desirable because they are simple and can be
-safely shared even in multi-threading contexts. This makes them great
-for functional and concurrent scenarios. The rules for creating such
-objects are well-known:
-
-* No mutators (methods that modify internal state)
-* Class must be final
-* Fields must be private and final
-* Defensive copying of mutable components
-* `equals()`,�`hashCode()`�and�`toString()`�must be implemented in terms
-of the fields if you want to compare your objects or use them as keys in
-e.g. maps
-
-Instead of writing a very long Java or Groovy class mimicking this
-immutability behavior, Groovy lets you just write an immutable class as
-follow:
-�
-[source,groovy]
-------------------------------------------------------------------
-@Immutable final class Coordinates {
-    Double latitude, longitude
-}
-
-
-def c1 = new Coordinates(latitude: 48.824068, longitude: 2.531733)
-def c2 = new Coordinates(48.824068, 2.531733)
-
-
-assert c1 == c2
-------------------------------------------------------------------
-
-All the boiler-plate code is generated at compile-time for you! The
-example shows that to instantiate such immutable coordinates, you can
-use one of the two constructors created by the transformation, one
-taking a map whose keys are the properties to set to the values
-associated with those keys, and the other taking the values of the
-properties as parameters. The�`assert`�also shows that�`equals()`�was
-implemented and allows us to properly compare such immutable objects.
-
-You can have a look at
-the�link:http://docs.groovy-lang.org/latest/html/gapi/groovy/transform/Immutable.html[details of the implementation]�of this transformation. For the record, the Groovy
-example above using the`@Immutable`�transformation is over 50 lines of
-equivalent Java code.
-
-[[Groovy16releasenotes-Lazy]]
-=== @Lazy
-
-Another transformation is�`@Lazy`. Sometimes, you want to handle the
-initialization of a field of your clas lazily, so that its value is
-computed only on first use, often because it may be time-consuming or
-memory-expensive to create. The usual approach is to customize the
-getter of said field, so that it takes care of the initialization when
-the getter is called the first time. But in Groovy 1.6, you can now use
-the�`@Lazy`�annotation for that purpose:
-
-[source,groovy]
----------------------------------------
-class Person {
-    @Lazy pets = ['Cat', 'Dog', 'Bird']
-}
-
-
-def p = new Person()
-assert !(p.dump().contains('Cat'))
-
-assert p.pets.size() == 3
-assert p.dump().contains('Cat')
----------------------------------------
-
-In the case of complex computation for initializing the field, you may
-need to call some method for doing the work, instead of a value like our
-pets list. This is then possible to have the lazy evaluation being done
-by a closure call, as the following example shows:
-
-[source,groovy]
-----------------------------------------------------------
-class Person {
-    @Lazy List pets = { /* complex computation here */ }()
-}
-----------------------------------------------------------
-
-There is also an option for leveraging Soft references for garbage
-collection friendliness for expensive data structures that may be
-contained by such lazy fields:
-
-[source,groovy]
----------------------------------------------------------
-class Person {
-    @Lazy(soft = true) List pets = ['Cat', 'Dog', 'Bird']
-}
-
-
-def p = new Person()
-assert p.pets.contains('Cat')
----------------------------------------------------------
-
-The internal field created by the compiler for�`pets`�will actually be a
-Soft reference, but accessing�`p.pets`�directly will return the value
-(ie. the list of pets) held by that reference, making the use of the
-soft reference transparent to the user of that class.
-
-[[Groovy16releasenotes-Delegate]]
-=== @Delegate
-
-Java doesn\u2019t provide any built-in delegation mechanism, and so far
-Groovy didn\u2019t either. But with the�`@Delegate`�transformation, a class
-field or property can be annotated and become an object to which method
-calls are delegated. In the following example, an�`Event`�class has a
-date delegate, and the compiler will delegate all of�`Date`\u2019s methods
-invoked on the�`Event`�class to the�`Date`�delegate. As shown in the
-latest�`assert`, the�`Event`�class has got a�`before(Date)`�method, and
-all of�`Date`\u2019s methods.
-
-[source,groovy]
---------------------------------------------------------------
-import java.text.SimpleDateFormat
-
-
-class Event {
-    @Delegate Date when
-    String title, url
-}
-
-
-def df = new SimpleDateFormat("yyyy/MM/dd")
-
-
-def gr8conf = new Event(title: "GR8 Conference",
-                          url: "http://www.gr8conf.org",
-                         when: df.parse("2009/05/18"))
-def javaOne = new Event(title: "JavaOne",
-                          url: "http://java.sun.com/javaone/",
-                         when: df.parse("2009/06/02"))
-
-assert gr8conf.before(javaOne.when)
---------------------------------------------------------------
-
-The Groovy compiler adds all of�`Date`\u2019s methods to the�`Event`�class,
-and those methods simply delegate the call to the�`Date`�field. If the
-delegate is not a final class, it is even possible to make
-the�`Event`�class a subclass of�`Date`�simply by extending�`Date`, as
-shown below. No need to implement the delegation ourselves by adding
-each and every�`Date`�methods to our�`Event`�class, since the compiler
-is friendly-enough with us to do the job itself.
-
-[source,groovy]
---------------------------
-class Event extends Date {
-    @Delegate Date when
-    String title, url
-}
---------------------------
-
-In the case you are delegating to an interface, however, you don\u2019t even
-need to explictely say you implement the interface of the delegate.
-The�`@Delegate`�transformation will take care of this and implement that
-interface. So the instances of your class will automatically
-be�`instanceof`�the delegate\u2019s interface.
-
-[source,groovy]
------------------------------------------------------
-import java.util.concurrent.locks.*
-
-
-class LockableList {
-    @Delegate private List list = []
-    @Delegate private Lock lock = new ReentrantLock()
-}
-
-
-def list = new LockableList()
-
-
-list.lock()
-try {
-    list << 'Groovy'
-    list << 'Grails'
-    list << 'Griffon'
-} finally {
-    list.unlock()
-}
-
-
-assert list.size() == 3
-assert list instanceof Lock
-assert list instanceof List
------------------------------------------------------
-
-In this example, our�`LockableList`�is now a composite of a list and a
-lock and is�`instanceof`�of�`List`�and�`Lock`. However, if you didn\u2019t
-intend your class to be implementing these interfaces, you would still
-be able to do so by specifying a parameter on the annotation:
-
-[source,groovy]
-----------------------------------------------------
-@Delegate(interfaces = false) private List list = []
-----------------------------------------------------
-
-[[Groovy16releasenotes-Newify]]
-=== @Newify
-
-The�`@Newify`�transformation proposes two new ways of instantiating
-classes. The first one is providing Ruby like approach to creating
-instances with a�`new()`�class method:
-
-[source,groovy]
---------------------------------
-@Newify rubyLikeNew() {
-    assert Integer.new(42) == 42
-}
-
-
-rubyLikeNew()
---------------------------------
-
-But it is also possible to follow the Python approach with omitting
-the�`new`�keyword. Imagine the following tree creation:
-
-[source,groovy]
------------------------------------------------------------------
-class Tree {
-    def elements
-    Tree(Object... elements) { this.elements = elements as List }
-}
-
-
-class Leaf {
-    def value
-    Leaf(value) { this.value = value }
-}
-
-
-def buildTree() {
-    new Tree(new Tree(new Leaf(1), new Leaf(2)), new Leaf(3))
-}
-
-
-buildTree()
------------------------------------------------------------------
-
-The creation of the tree is not very readable because of all
-those�`new`�keywords spread across the line. The Ruby approach wouldn\u2019t
-be more readable, since a�`new()`�method call for creating each element
-is needed. But by using�`@Newify`, we can improve our tree building
-slightly to make it easier on the eye:
-
-[source,groovy]
------------------------------------------
-@Newify([Tree, Leaf]) buildTree() {
-    Tree(Tree(Leaf(1), Leaf(2)), Leaf(3))
-}
------------------------------------------
-
-You\u2019ll also notice that we just allowed�`Tree`�and�`Leaf`�to
-be�_newified_. By default, under the scope which is annotated, all
-instantiations are_newified_, but you can limit the reach by specifying
-the classes you\u2019re interested in. Also, note that for our example,
-perhaps a Groovy builder may have been more appropriate, since its
-purpose is to indeed create any kind of hierarchical / tree strucutre.
-
-If we take another look at our coordinates example from a few sections
-earlier, using both�`@Immutable`�and�`@Newify`�can be interesting for
-creating a path with a concise but type-safe manner:
-
-[source,groovy]
------------------------------------------
-@Immutable final class Coordinates {
-    Double latitude, longitude
-}
-
-
-@Immutable final class Path {
-    Coordinates[] coordinates
-}
-
-
-@Newify([Coordinates, Path])
-def build() {
-    Path(
-        Coordinates(48.824068, 2.531733),
-        Coordinates(48.857840, 2.347212),
-        Coordinates(48.858429, 2.342622)
-    )
-}
-
-
-assert build().coordinates.size() == 3
------------------------------------------
-
-A closing remark here: since a�`Path(Coordinates[] coordinates)`�was
-generated, we can use that constructor in a�_varargs way_�in Groovy,
-just as if it had been defined as�`Path(Coordinates... coordinates)`.
-
-[[Groovy16releasenotes-CategoryandMixin]]
-=== @Category and @Mixin
-
-If you\u2019ve been using Groovy for a while, you\u2019re certainly familiar with
-the concept of Categories. It\u2019s a mechanism to extend existing types
-(even final classes from the JDK or third-party libraries), to add new
-methods to them. This is also a technique which can be used when writing
-Domain-Specific Languages. Let\u2019s consider the example below:
-
-[source,groovy]
---------------------------------------------
-final class Distance {
-    def number
-    String toString() { "${number}m" }
-}
-
-
-class NumberCategory {
-    static Distance getMeters(Number self) {
-        new Distance(number: self)
-    }
-}
-
-
-use(NumberCategory) {
-    def dist = 300.meters
-
-
-    assert dist instanceof Distance
-    assert dist.toString() == "300m"
-}
---------------------------------------------
-
-We have a simplistic and fictive�`Distance`�class which may have been
-provided by a third-party, who had the bad idea of making the
-class`final`�so that nobody could ever extend it in any way. But thanks
-to a Groovy Category, we are able to decorate the�`Distance`�type with
-additional methods. Here, we\u2019re going to add a�`getMeters()`�method to
-numbers, by actually decorating the�`Number`�type. By adding a getter to
-a number, you\u2019re able to reference it using the nice property syntax of
-Groovy. So instead of writing�`300.getMeters()`, you\u2019re able to
-write�`300.meters`.
-
-The downside of this category system and notation is that to add
-instance methods to other types, you have to create�`static`�methods,
-and furthermore, there\u2019s a first argument which represents the instance
-of the type we\u2019re working on. The other arguments are the normal
-arguments the method will take as parameters. So it may be a bit less
-intuitive than a normal method definition we would have added
-to�`Distance`, should we have had access to its source code for
-enhancing it. Here comes the�`@Category`�annotation, which transforms a
-class with instance methods into a Groovy category:
-
-[source,groovy]
-----------------------------------
-@Category(Number)
-class NumberCategory {
-    Distance getMeters() {
-        new Distance(number: this)
-    }
-}
-----------------------------------
-
-No need for declaring the methods�`static`, and the�`this`�you use here
-is actually the number on which the category will apply, it\u2019s not the
-real�`this`�of the category instance should we create one. Then to use
-the category, you can continue to use the�`use(Category) {}`construct.
-What you\u2019ll notice however is that these kind of categories only apply
-to one single type at a time, unlike classical categories which can be
-applied to any number of types.
-
-Now, pair�`@Category`�extensions to the�`@Mixin`�transformation, and you
-can mix in various behavior in a class, with an approach similar to
-multiple inheritance:
-
-[source,groovy]
--------------------------------------------------
-@Category(Vehicle) class FlyingAbility {
-    def fly() { "I'm the ${name} and I fly!" }
-}
-
-
-@Category(Vehicle) class DivingAbility {
-    def dive() { "I'm the ${name} and I dive!" }
-}
-
-
-interface Vehicle {
-    String getName()
-}
-
-
-@Mixin(DivingAbility)
-class Submarine implements Vehicle {
-    String getName() { "Yellow Submarine" }
-}
-
-
-@Mixin(FlyingAbility)
-class Plane implements Vehicle {
-    String getName() { "Concorde" }
-}
-
-
-@Mixin([DivingAbility, FlyingAbility])
-class JamesBondVehicle implements Vehicle {
-    String getName() { "James Bond's vehicle" }
-}
-
-
-assert new Plane().fly() ==
-       "I'm the Concorde and I fly!"
-assert new Submarine().dive() ==
-       "I'm the Yellow Submarine and I dive!"
-
-
-assert new JamesBondVehicle().fly() ==
-       "I'm the James Bond's vehicle and I fly!"
-assert new JamesBondVehicle().dive() ==
-       "I'm the James Bond's vehicle and I dive!"
--------------------------------------------------
-
-You don\u2019t inherit from various interfaces and inject the same behavior
-in each subclass, instead you mixin the categories into your class.
-Here, our marvelous James Bond vehicle gets the flying and diving
-capabilities through mixins.
-
-An important point to make here is that unlike�`@Delegate`�which
-can�_inject_�interfaces into the class in which the delegate is
-declared,`@Mixin`�just does runtime mixing \u2014 as we shall see in the
-metaprogramming enhancements further down in this article.
-
-[[Groovy16releasenotes-PackageScope]]
-=== @PackageScope
-
-Groovy\u2019s convention for properties is that any�_field_�without any
-visibility modifier is exposed as a property, with a getter and a setter
-transparently generated for you. For instance, this�`Person`�class
-exposes a getter�`getName()`�and a setter�`setName()`�for a
-private�`name`�field:
-
-[source,groovy]
----------------
-class Person {
-    String name
-}
----------------
-
-Which is equivalent to this Java class:
-
-[source,groovy]
----------------------------------------------------
-public class Person {
-    private String name;
-    public String getName() { return name; }
-    public void setName(name) { this.name = name; }
-}
----------------------------------------------------
-
-That said, this approach has one drawback in that you don\u2019t have the
-possibility to define a field with package-scope visibility. To be able
-to expose a field with package-scope visibility, you can now annotate
-your field with the�`@PackageScope`�annotation.
-
-[[Groovy16releasenotes-GrapetheGroovyAdaptableAdvancedPackagingEngine]]
-== Grape, the Groovy Adaptable / Advanced Packaging Engine
-
-To continue our overview of the AST transformations, we\u2019ll now learn
-more about Grape, a mechanism to add and leverage dependencies in your
-Groovy scripts. Groovy scripts can require certain libraries: by
-explicitly saying so in your script with the�*@Grab*�transformation or
-with the�*Grape.grab()*�method call, the runtime will find the needed
-JARs for you. With Grape, you can easily distribute scripts without
-their dependencies, and have them downloaded on first use of your script
-and cached. Under the hood, Grape uses Ivy and Maven repositories
-containing the libraries you may need in your scripts.
-
-Imagine you want to get the links of all the PDF documents referenced by
-the Java 5 documentation. You want to parse the HTML page as if it were
-an XML-compliant document (which it is not) with the Groovy�`XmlParser`,
-so you can use the TagSoup SAX-compliant parser which transforms HTML
-into well-formed valid XML. You don\u2019t even have to mess up with your
-classpath when running your script, just_grab_�the TagSoup library
-through Grape:
-
-[source,groovy]
-------------------------------------------------------------------------
-import org.ccil.cowan.tagsoup.Parser
-
-
-// find the PDF links in the Java 1.5.0 documentation
-@Grab(group='org.ccil.cowan.tagsoup', module='tagsoup', version='0.9.7')
-def getHtml() {
-    def tagsoupParser = new Parser()
-    def parser = new XmlParser(tagsoupParser)
-    parser.parse("http://java.sun.com/j2se/1.5.0/download-pdf.html")
-}
-
-html.body.'**'.a.@href.grep(~/.*\.pdf/).each{ println it }
-------------------------------------------------------------------------
-
-For the pleasure of giving another example: let\u2019s use
-the�link:http://eclipse.org/jetty/[Jetty servlet container]�to
-expose�link:{DOCS_BASEURL}/html/documentation/template-engines.html[Groovy templates]�in
-a few lines of code:
-
-[source,groovy]
---------------------------------------------------------------------------------
-import org.mortbay.jetty.Server
-import org.mortbay.jetty.servlet.*
-import groovy.servlet.*
-
-
-@Grab(group = 'org.mortbay.jetty', module = 'jetty-embedded', version = '6.1.0')
-def runServer(duration) {
-    def server = new Server(8080)
-    def context = new Context(server, "/", Context.SESSIONS);
-    context.resourceBase = "."
-    context.addServlet(TemplateServlet, "*.gsp")
-    server.start()
-    sleep duration
-    server.stop()
-}
-
-
-runServer(10000)
---------------------------------------------------------------------------------
-
-Grape will download Jetty and its dependencies on first launch of this
-script, and cache them. We\u2019re creating a new Jetty�`Server`�on port
-8080, then expose Groovy\u2019s�`TemplateServlet`�at the root of the context
-\u2014 Groovy comes with its own powerful template engine mechanism. We start
-the server and let it run for a certain duration. Each time someone will
-hit�+http://localhost:8080/somepage.gsp+, it will display
-the�`somepage.gsp`�template to the user \u2014 those template pages should be
-situated in the same directory as this server script.
-
-Grape can also be used as a method call instead of as an annotation. You
-can also install, list, resolve dependencies from the command-line using
-the�`grape`�command. For�link:../grape.html[more information on Grape], please refer to the documentation.
-
-[[Groovy16releasenotes-Swingbuilderimprovements]]
-== Swing builder improvements
-
-To wrap up our overview of AST transformations, let\u2019s finish by speaking
-about two transformations very useful to Swing
-developers:`@Bindable`�and�`@Vetoable`. When creating Swing UIs, you\u2019re
-often interested in monitoring the changes of value of certain UI
-elements. For this purpose, the usual approach is to use
-JavaBeans�`PropertyChangeListener`s to be notified when the value of a
-class field changes. You then end up writing this very common
-boiler-plate code in your Java beans:
-
-[source,groovy]
-------------------------------------------------------------------------
-import com.googlecode.openbeans.PropertyChangeSupport;
-import com.googlecode.openbeans.PropertyChangeListener;
-
-
-public class MyBean {
-    private String prop;
-
-
-    PropertyChangeSupport pcs = new PropertyChangeSupport(this);
-
-
-    public void addPropertyChangeListener(PropertyChangeListener l) {
-        pcs.add(l);
-    }
-
-
-    public void removePropertyChangeListener(PropertyChangeListener l) {
-        pcs.remove(l);
-    }
-
-
-    public String getProp() {
-        return prop;
-    }
-
-
-    public void setProp(String prop) {
-        pcs.firePropertyChanged("prop", this.prop, this.prop = prop);
-    }
-
-}
-------------------------------------------------------------------------
-
-Fortunately, with Groovy and the�`@Bindable`�annotation, this code can
-be greatly simplified:
-
-[source,groovy]
--------------------------
-class MyBean {
-    @Bindable String prop
-}
--------------------------
-
-Now pair that with Groovy\u2019s Swing builder new�`bind()`�method, define a
-text field and bind its value to a property of your data model:
-
-[source,groovy]
---------------------------------------------------------------------
-textField text: bind(source: myBeanInstance, sourceProperty: 'prop')
---------------------------------------------------------------------
-
-Or even:
-
-[source,groovy]
---------------------------------------------
-textField text: bind { myBeanInstance.prop }
---------------------------------------------
-
-The binding also works with simple expressions in the closure, for
-instance something like this is possible too:
-
-[source,groovy]
---------------------------------------------
-bean location: bind { pos.x + ', ' + pos.y }
---------------------------------------------
-
-You may also be interested in having a look
-at�link:{DOCS_BASEURL}/html/api/groovy/util/ObservableMap.html[ObservableMap]�and�link:{DOCS_BASEURL}/html/api/groovy/util/ObservableList.html[ObservableList],
-for a similar mechanism on maps and lists.
-
-Along with�`@Bindable`, there\u2019s also a�`@Vetoable`�transformation for
-when you need to be able to veto some property change. Let\u2019s consider
-a�`Trompetist`�class, where the performer\u2019s name is not allowed to
-contain the letter `z':
-
-[source,groovy]
----------------------------------------------------------------------------------------
-import com.googlecode.openbeans.*
-import groovy.beans.Vetoable
-
-
-class Trumpetist {
-    @Vetoable String name
-}
-
-
-def me = new Trumpetist()
-me.vetoableChange = { PropertyChangeEvent pce ->
-    if (pce.newValue.contains('z'))
-        throw new PropertyVetoException("The letter 'z' is not allowed in a name", pce)
-}
-
-
-me.name = "Louis Armstrong"
-
-
-try {
-    me.name = "Dizzy Gillespie"
-    assert false: "You should not be able to set a name with letter 'z' in it."
-} catch (PropertyVetoException pve) {
-    assert true
-}
----------------------------------------------------------------------------------------
-
-Looking at a more thorough Swing builder example with binding:
-
-[source,groovy]
-----------------------------------------------------------------------------
-import groovy.swing.SwingBuilder
-import groovy.beans.Bindable
-import static javax.swing.JFrame.EXIT_ON_CLOSE
-
-
-class TextModel {
-    @Bindable String text
-}
-
-
-def textModel = new TextModel()
-
-
-SwingBuilder.build {
-    frame( title: 'Binding Example (Groovy)', size: [240,100], show: true,
-          locationRelativeTo: null, defaultCloseOperation: EXIT_ON_CLOSE ) {
-        gridLayout cols: 1, rows: 2
-        textField id: 'textField'
-        bean textModel, text: bind{ textField.text }
-        label text: bind{ textModel.text }
-    }
-}
-----------------------------------------------------------------------------
-
-Running this script shows up the frame below with a text field and a
-lable below, and the label\u2019s text is bound on the text field\u2019s content.
-
-image:http://www.infoq.com/resource/articles/groovy-1-6/en/resources/bindable-example.png[image]
-
-SwingBuilder has evolved so nicely in the past year that the Groovy
-Swing team decided to launch a new project based on it, and on the
-Grails foundations: project�link:http://griffon-framework.org/[Griffon]�was
-born. Griffon proposes to bring the�_Convention over
-Configuration_�paradigm of Grails, as well as all its project structure,
-plugin system, gant scripting capabilities, etc.
-
-If you are developing Swing rich clients, make sure to have a look
-at�link:http://griffon-framework.org/[Griffon].
-
-[[Groovy16releasenotes-Swingconsoleimprovements]]
-== Swing console improvements
-
-Swinging along the topic of UIs, the Swing console has also evolved:
-
-* The console can be run as an Applet (`groovy.ui.ConsoleApplet`).
-* Beyond syntax highlighting, the editor also supports code indentation.
-* Drag\u2019n droping a Groovy script over the text area will open the file.
-* You can modify the classpath with which the script in the console is
-being run, by adding a new JAR or a directory to the classpath as shown
-in the screenshot below.
-+
-+
-image:http://www.infoq.com/resource/articles/groovy-1-6/en/resources/sc-add-jar.png[image]
-+
-* A couple options have been added to the view menu item: for showing
-the script being run in the output area, and for visualizing the
-execution results.
-+
-+
-image:http://www.infoq.com/resource/articles/groovy-1-6/en/resources/sc-options.png[image]
-+
-* When an exception is thrown in your script, the lines of the
-stacktrace relative to your script are clickable, for easy navigation to
-the point where the error occurred.
-+
-+
-image:http://www.infoq.com/resource/articles/groovy-1-6/en/resources/sc-click-stack.png[image]
-+
-* Also, when your script contains compilation errors, the error messages
-are clickable too.
-+
-+
-image:http://www.infoq.com/resource/articles/groovy-1-6/en/resources/sc-click-comp-error.png[image]
-+
-
-Back on the visualization of the results in the script output area, a
-fun system was added to let you customize how certain results are
-rendered. When you execute a script returning a map of Jazz musicians,
-you may see something like this in your console:
-
-image:http://www.infoq.com/resource/articles/groovy-1-6/en/resources/sc-without-visu.png[image]
-
-What you see here is the usual textual representation of a�`Map`. But,
-what if we enabled custom visualization of certain results? The Swing
-console allows you to do just that. First of all, you have to ensure
-that the visualization option is
-ticked:�`View -> Visualize Script Results`�\u2014 for the record, all
-settings of the Groovy Console are stored and remembered thanks to the
-Preference API. There are a few result visualizations built-in: if the
-script returns a�`java.awt.Image`, a�`javax.swing.Icon`, or
-a�`java.awt.Component`�with no parent, the object is displayed instead
-of its�`toString()`�representation. Otherwise, everything else is still
-just represented as text. Now, create the following Groovy script
-in�`~/.groovy/OutputTransforms.groovy`:
-
-[source,groovy]
----------------------------------------------------------
-import javax.swing.*
-
-transforms << { result ->
-    if (result instanceof Map) {
-        def table = new JTable(
-            result.collect{ k, v -<
-                [k, v?.inspect()] as Object[]
-            } as Object[][],
-            ['Key', 'Value'] as Object[])
-        table.preferredViewportSize = table.preferredSize
-        return new JScrollPane(table)
-    }
-}
----------------------------------------------------------
-
-The Groovy Swing console will execute that script on startup, injecting
-a�`transforms`�list in the binding of the script, so that you can add
-your own script results representations. In our case, we transform
-the�`Map`�into a nice-looking Swing�`JTable`. And we\u2019re now able to
-visualize maps in a friendly and attractive fashion, as the screenshot
-below
-shows:image:http://www.infoq.com/resource/articles/groovy-1-6/en/resources/sc-with-visu.png[image]
-
-The Swing console is obviously not to be confused with a real full-blown
-IDE, but for daily scripting tasks, the console is a handy tool in your
-toolbox.
-
-[[Groovy16releasenotes-Metaprogrammingenhancements]]
-== Metaprogramming enhancements
-
-What makes Groovy a dynamic language is its Meta-Object Protocol and its
-concept of metaclasses which represent the runtime behavior of your
-classes and instances. In Groovy 1.6, we continue improving this dynamic
-runtime system, bringing several new capabilities into the mix.
-
-[[Groovy16releasenotes-PerinstancemetaclassevenforPOJOs]]
-=== Per instance metaclass even for POJOs
-
-So far, Groovy POGOs (Plain Old Groovy Objects) could have a
-per-instance metaclass, but POJOs could only have one metaclass for all
-instances (ie. a per-class metaclass). This is now not the case anymore,
-as POJOs can have a per-instance metaclass too. Also, setting the
-metaclass property to null will restore the default metaclass.
-
-[[Groovy16releasenotes-ExpandoMetaClassDSL]]
-=== ExpandoMetaClass DSL
-
-Initially developed under the�link:http://grails.org/[Grails]�umbrella and
-integrated back into Groovy 1.5, ExpandoMetaClass is a very handy way
-for changing the runtime behavior of your objects and classes, instead
-of writing full-blow�`MetaClass`�classes. Each time, we want to add /
-change several properties or methods of an existing type, there is too
-much of a repetition of�`Type.metaClass.xxx`. Take for example this
-extract of
-a�link:http://groovy.dzone.com/news/domain-specific-language-unit-[Unit
-manipulation DSL]�dealing with operator overloading:
-
-[source,groovy]
----------------------------------------------------------------------------------
-Number.metaClass.multiply = { Amount amount -> amount.times(delegate) }
-Number.metaClass.div =      { Amount amount -> amount.inverse().times(delegate) }
-
-
-Amount.metaClass.div =      { Number factor -> delegate.divide(factor) }
-Amount.metaClass.div =      { Amount factor -> delegate.divide(factor) }
-Amount.metaClass.multiply = { Number factor -> delegate.times(factor) }
-Amount.metaClass.power =    { Number factor -> delegate.pow(factor) }
-Amount.metaClass.negative = { -> delegate.opposite() }
----------------------------------------------------------------------------------
-
-The repetition, here, looks obvious. But with the ExpandoMetaClass DSL,
-we can streamline the code by regrouping the operators per type:
-
-[source,groovy]
-------------------------------------------------------------------
-Number.metaClass {
-    multiply { Amount amount -> amount.times(delegate) }
-    div      { Amount amount -> amount.inverse().times(delegate) }
-}
-
-
-Amount.metaClass {
-    div <<   { Number factor -> delegate.divide(factor) }
-    div <<   { Amount factor -> delegate.divide(factor) }
-    multiply { Number factor -> delegate.times(factor) }
-    power    { Number factor -> delegate.pow(factor) }
-    negative { -> delegate.opposite() }
-}
-------------------------------------------------------------------
-
-A�`metaClass()`�method takes a closure as single argument, containing
-the various definitions of the methods and properties, instead of
-repeating the�`Type.metaClass`�on each line. When there is just one
-method of a given name, use the pattern�`methodName { /* closure */ }`,
-but when there are several, you should use the append operator and
-follow the patten�`methodName << { /* closure */ }`. Static methods can
-also be added through this mechanism, so instead of the classical
-approach:
-
-[source,groovy]
----------------------------------------------------------
-// add a fqn() method to Class to get the fully
-// qualified name of the class (ie. simply Class#getName)
-Class.metaClass.static.fqn = { delegate.name }
-
-
-assert String.fqn() == "java.lang.String"
----------------------------------------------------------
-
-You can now do:
-
-[source,groovy]
------------------------------
-Class.metaClass {
-    'static' {
-        fqn { delegate.name }
-    }
-}
------------------------------
-
-Note here that you have to quote the�`static`�keyword, to avoid this
-construct to look like a static initializer. For one off method
-addition, the classical approach is obviously more concise, but when you
-have several methods to add, the EMC DSL makes sense.
-
-The usual approach for adding properties to existing classes through
-ExpandoMetaClass is to add a getter and a setter as methods. For
-instance, say you want to add a method that counts the number of words
-in a text file, you could try this:
-
-[source,groovy]
-------------------------------------
-File.metaClass.getWordCount = {
-    delegate.text.split(/\w/).size()
-}
-
-
-new File('myFile.txt').wordCount
-------------------------------------
-
-When there is some logic inside the getter, this is certainly the best
-approach, but when you just want to have new properties holding simple
-values, through the ExpandoMetaClass DSL, it is possible to define them.
-In the following example, a�`lastAccessed`�property is added to
-a�`Car`�class \u2014 each instance will have its property. Whenever a method
-is called on that car, this property is updated with a newer timestamp.
-
-[source,groovy]
-------------------------------------------------------------------------
-class Car {
-    void turnOn() {}
-    void drive() {}
-    void turnOff() {}
-}
-
-
-Car.metaClass {
-    lastAccessed = null
-    invokeMethod = { String name, args ->
-        def metaMethod = delegate.metaClass.getMetaMethod(name, args)
-        if (metaMethod) {
-            delegate.lastAccessed = new Date()
-            metaMethod.doMethodInvoke(delegate, args)
-        } else {
-            throw new MissingMethodException(name, delegate.class, args)
-        }
-    }
-}
-
-
-
-def car = new Car()
-println "Last accessed: ${car.lastAccessed ?: 'Never'}"
-
-
-car.turnOn()
-println "Last accessed: ${car.lastAccessed ?: 'Never'}"
-
-
-car.drive()
-sleep 1000
-println "Last accessed: ${car.lastAccessed ?: 'Never'}"
-
-
-sleep 1000
-car.turnOff()
-println "Last accessed: ${car.lastAccessed ?: 'Never'}"
-------------------------------------------------------------------------
-
-In our example, in the DSL, we access that property through
-the�`delegate`�of the closure,
-with�`delegate.lastAccessed = new Date()`. And we intercept any method
-call thanks to�`invokeMethod()`, delegating to the original method for
-the call, and throwing an exception in case the method doesn\u2019t exist.
-Later on, you can see by executing this script that�`lastAccessed`�is
-updated as soon as we call a method on our instance.
-
-[[Groovy16releasenotes-Runtimemixins]]
-=== Runtime mixins
-
-Last metaprogramming feature we\u2019ll cover today: runtime
-mixins.�`@Mixin`�allowed you to mixin new behavior to classes you owned
-and were designing. But you could not mixin anything to types you didn\u2019t
-own. Runtime mixins propose to fill that gap by letting you add a mixin
-on any type at runtime. If we think again about our example of vehicles
-with some mixed-in capabilities, if we didn\u2019t�_own_�James Bond\u2019s vehicle
-and give it some diving ability, we could use this mechanism:
-
-[source,groovy]
----------------------------------------------------
-// provided by a third-party
-interface Vehicle {
-    String getName()
-}
-
-
-// provided by a third-party
-class JamesBondVehicle implements Vehicle {
-    String getName() { "James Bond's vehicle" }
-}
-
-
-JamesBondVehicle.mixin DivingAbility, FlyingAbility
-
-
-assert new JamesBondVehicle().fly() ==
-       "I'm the James Bond's vehicle and I fly!"
-assert new JamesBondVehicle().dive() ==
-       "I'm the James Bond's vehicle and I dive!"
----------------------------------------------------
-
-One or more mixins can be passed as argument to the
-static�`mixin()`�method added by Groovy on�`Class`.
-
-[[Groovy16releasenotes-JSR-223GroovyScriptingEngine]]
-== JSR-223 Groovy Scripting Engine
-
-Before Groovy 1.6, if you wanted to integrate Groovy in your Java
-projects through JSR-223 /�`javax.script.*`, you had to download a
-Groovy script engine implementation from java.net, and put the JAR in
-your classpath. This additional step wasn\u2019t very developer friendly,
-requiring some additional work \u2014 the JAR wasn\u2019t even provided in the
-Groovy distribution. Thankfully, 1.6 comes with an implementation of
-the�`javax.script.*`�APIs.
-
-Below, you\u2019ll find an example evaluating Groovy expressions (the code is
-in Groovy, but it\u2019s straightforward to convert it back to Java):
-
-[source,groovy]
-----------------------------------------------
-import javax.script.*
-
-
-def manager = new ScriptEngineManager()
-def engine = manager.getEngineByName("groovy")
-
-
-assert engine.evaluate("2 + 3") == 5
-----------------------------------------------
-
-Please note that the�`javax.script.*`�APIs are available only on Java 6.
-
-[[Groovy16releasenotes-JMXBuilder]]
-== JMX Builder
-
-Originiating as an�link:http://code.google.com/p/groovy-jmx-builder/[external
-Open-Source project]�hosted on Google Code, JMX Builder has been
-integrated in Groovy 1.6, to simplify the life of developers needing to
-interact or expose JMX services. JMX Builder features:
-
-* Domain Specific Language (DSL) for JMX API using Builder pattern
-* Simplified JMX API\u2019s programmability
-* Declaratively expose Java/Groovy objects as JMX managed MBeans
-* Support class-embedded or explicit descriptors
-* Inherent support for JMX\u2019s event model
-* Seamlessly create JMX event broadcasters
-* Attach event listeners as inline closures
-* Use Groovy\u2019s dynamic nature to easily react to JMX events
-notifications
-* Provides a flexible registration policy for MBean
-* No special interfaces or class path restrictions
-* Shields developer from complexity of JMX API
-* Exposes attribute, constructors, operations, parameters, and
-notifications
-* Simplifies the creation of connector servers and connector clients
-* Support for exporting JMX timers
-
-You can find�link:../jmx.html[more information on JMX Builder]�and its very extensive coverage of the JMX
-system. Lots of examples will show you how to create a JMX connector
-server or client, how to easily export POGOs as JMX managed beans, how
-to listen to JMX events, and much more.
-
-[[Groovy16releasenotes-ImprovedOSGisupport]]
-== Improved OSGi support
-
-The Groovy jar files are released with correct OSGi metadata, so they
-can be loaded as a bundle into any OSGi compliant container, such as
-Eclipse Equinox or Apache Felix.
-
-[[Groovy16releasenotes-Summary]]
-== Summary
-
-Groovy continues its march towards the goal of�*simplifying the life of
-developers*, providing various new features and improvements in this new
-release: AST transformations reducing dramatically the number of lines
-of code to express certain concerns and patterns and opening the
-language to developers for further extension, several�*metaprogramming
-enhancements to streamline your code*�and let you write�*more expressive
-business rules*, and�*support for common enterprise APIs*�such as Java
-6\u2019s scripting APIs, JMX management system, or OSGi\u2019s programming model.
-All of this is done obviously�*without compromising on the seamless
-integration with Java*, and furthermore, with a�*level of performance
-way higher than previous releases*.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy-user-site/blob/de805f31/site/src/site/releasenotes/groovy-1.7.adoc
----------------------------------------------------------------------
diff --git a/site/src/site/releasenotes/groovy-1.7.adoc b/site/src/site/releasenotes/groovy-1.7.adoc
deleted file mode 100644
index cf401a0..0000000
--- a/site/src/site/releasenotes/groovy-1.7.adoc
+++ /dev/null
@@ -1,433 +0,0 @@
-[[Groovy17releasenotes-IDESupport]]
-== IDE Support
-
-Before diving directly into the new features in Groovy 1.7, please let
-me mention the great progress made in terms of IDE support for Groovy
-(and also for http://griffon-framework.org/[Griffon],
-http://gradle.org/[Gradle], https://gant.github.io/[Gant] or
-http://grails.org/[Grails]). All the major IDEs (Eclipse,
-http://www.jetbrains.com/idea/features/groovy_grails.html[IntelliJ
-IDEA], http://wiki.netbeans.org/Groovy[NetBeans]) provide an excellent
-level of support for the language. Initially, the Eclipse support was
-the one lacking the most, but thanks to the hard work of the
-SpringSource Eclipse team, we now have a great environment for
-developing mixed Java / Groovy applications with features like
-cross-language refactoring, Groovy-specific code completion, and more.
-
-New and Improved Eclipse pluginFor more information on the Eclipse
-support, please have a look at the Groovy Eclipse plugin home page, as
-well as the notes for the M1 release and M2 release.
-
-[[Groovy17releasenotes-Newfeatures]]
-== New features
-
-[[Groovy17releasenotes-AnonymousInnerClassesandNestedClasses]]
-=== Anonymous Inner Classes and Nested Classes
-
-Although oftentimes closures and maps coercion suffice, there are still
-areas where the lack of Anonymous Inner Classes (AIC) and Nested Classes
-(NC) can be problematic. That\u2019s why we decided to eventually implement
-AIC and NC in Groovy 1.7.
-
-Be CarefulThe implementation of AIC and NC follows the Java lead, but
-you should not take out the Java Language Spec and keep shaking the head
-about things that are different. The implementation done looks much like
-what we do for groovy.lang.Closure, with some benefits and some
-differences. Accessing private fields and methods for example can become
-a problem, but on the other hand local variables don\u2019t have to be final.
-
-[[Groovy17releasenotes-NestedStaticClasses]]
-==== Nested Static Classes
-
-Here\u2019s an example of Nested Static Classes:
-
-[source,groovy]
----------------------
-class A {
-    static class B {}
-}
-
-new A.B()
----------------------
-
-The usage of static nested classes is the best supported one. If you
-absolutely need an inner class, you should make it a static one.
-
-[[Groovy17releasenotes-AnonymousInnerClasses]]
-==== Anonymous Inner Classes
-
-Some other examples, this time for Anonymous Inner Classes:
-
-[source,groovy]
---------------------------------
-boolean called = false
-
-Timer timer = new Timer()
-timer.schedule(new TimerTask() {
-    void run() {
-        called = true
-    }
-}, 0)
-sleep 100
-
-assert called
---------------------------------
-
-More informationIf you want to learn a bit more about the cases which
-are currently supported in 1.7, you can have a look at one of our unit
-tests covering this new feature.
-
-[[Groovy17releasenotes-AccessingtheOuterContextfromaNestedClass]]
-==== Accessing the Outer Context from a Nested Class
-
-If you are in a nested class Y and the surrounding class is X, then you
-can access the variable v of X in Java by X.this.v. Groovy does not
-support this syntax.
-
-[[Groovy17releasenotes-CreatingInstancesofNon-StaticInnerClasses]]
-==== Creating Instances of Non-Static Inner Classes
-
-In Java you can do this:
-
-[source,java]
-----------------------------------
-public class Y {
-    public class X {}
-    public X foo() {
-        return new X();
-    }
-    public static X createX(Y y) {
-        return y.new X();
-    }
-}
-----------------------------------
-
-It should be noted that the nested class X needs a reference to the
-outer class instance of Y. For this Java will create a constructor that
-takes Y as first parameter in X. This constructor is synthetic, so it
-won\u2019t appear in any code completion. +
- In case of new X(), like you have it in method foo(), then compiler
-will then create new X(this) instead. In case of createX the compiler
-will create new X(y). Groovy does not support this.
-
-Instead Groovy supports giving the instance in like the compiler would
-do it. That means the code above has to be rewritten as
-
-[source,groovy]
-----------------------------------
-public class Y {
-    public class X {}
-    public X foo() {
-        return new X(this);
-    }
-    public static X createX(Y y) {
-        return new X(y);
-    }
-}
-----------------------------------
-
-CautionCaution though, Groovy supports calling methods with one
-parameter without giving an argument. The parameter will then have the
-value null. Basically the same rules apply to calling a constructor.
-There is a danger that you will write new X() instead of new X(this) for
-example. Since this might also be the regular way we have not yet found
-a good way to prevent this problem.
-
-[[Groovy17releasenotes-Annotations]]
-=== Annotations
-
-Groovy\u2019s support of annotations is identical to Java 5 annotations, but
-we felt that in some cases it would be interesting to be able to add
-annotations in other places than the usual places (types, fields,
-methods, parameters, etc.). For instance, in Java, it is impossible to
-add annotations on imports or packages. Groovy does go beyond and adds
-support for annotation on imports, packages and variable declarations.
-We\u2019ll take a look at the usage of those extended annotations on Grape.
-
-[[Groovy17releasenotes-Grape]]
-==== Grape
-
-The Grape dependency system lets you request dependencies in your
-scripts, without having to deal with downloading, packaging, or
-specifying the classpath yourself. To use Grape, we had to use the @Grab
-annotation to ``grab'' a dependency from a repository (Maven\u2019s central
-repository, for example). The problem was that annotation had to be
-attached to some allowed elements, ie. the places where annotations can
-be put in Java. Now, we can put annotations on imports:
-
-[source,groovy]
-------------------------------------------------------------------------------------
-@Grab(group='net.sf.json-lib', module='json-lib', version='2.3', classifier='jdk15')
-import net.sf.json.groovy.*
-
-assert new JsonSlurper().parseText(
-    new JsonGroovyBuilder().json {
-        book(title: "Groovy in Action", author:"Dierk K�nig et al")
-    }.toString()
-).book.title == 'Groovy in Action'
-------------------------------------------------------------------------------------
-
-Another example with @Grab on variable declarations:
-
-[source,groovy]
---------------------------------------------------------------------------------------------------------
-@Grab('net.sf.json-lib:json-lib:2.3:jdk15')
-def builder = new net.sf.json.groovy.JsonGroovyBuilder()
-
-def books = builder.books {
-    book(title: "Groovy in Action", author: "Dierk Koenig")
-}
-
-assert books.toString() == '''{"books":{"book":{"title":"Groovy in Action","author":"Dierk Koenig"}}}'''
---------------------------------------------------------------------------------------------------------
-
-RemarkPlease note on this one an improvement in the @Grab annotation: we
-provide a shorter version taking just a String as value parameter
-representing the dependency, in addition to the more verbose example in
-the previous example. You simply append the group, module, version and
-classifier together, joined by colons.
-
-A Grape *resolver* was added, so you can specify a remote location where
-grapes are downloaded from:
-
-[source,groovy]
-------------------------------------------------------------------
-@GrabResolver(name='restlet.org', root='http://maven.restlet.org')
-@Grab(group='org.restlet', module='org.restlet', version='1.1.6')
-import org.restlet.Restlet
-// ...
-------------------------------------------------------------------
-
-[[Groovy17releasenotes-PowerAsserts]]
-=== Power Asserts
-
-Groovy\u2019s ``assert'' keyword has sometimes been criticized as it\u2019s, in a
-way, limited, as it just checks that the expression it\u2019s being passed is
-true or false. Unlike with testing frameworks such as JUnit/TestNG and
-the various additional assertion utilities, where you get nicer and more
-descriptive messages, Groovy\u2019s assert would just tell you the expression
-was false, and would give the value of variables used in the expression,
-but nothing more. With Power Asserts, initially developed in the
-http://spockframework.org/[Spock Framework], the output of the assert is
-now much nicer and provides a visual representation of the value of each
-sub-expressions of the expression being asserted. For example:
-
-[source,groovy]
------------------------------------------------------
-assert new File('foo.bar') == new File('example.txt')
------------------------------------------------------
-
-Will yield:
-
-[source,groovy]
------------------------------------------------------
-Caught: Assertion failed:
-
-assert new File('foo.bar') == new File('example.txt')
-       |                   |  |
-       foo.bar             |  example.txt
-                           false
------------------------------------------------------
-
-[[Groovy17releasenotes-AST]]
-=== AST
-
-With Groovy 1.6, we introduced AST Transformations, for letting
-developers do compile-time metaprogramming, by modifying the Abstract
-Syntax Tree before it is transformed into bytecode. In Groovy 1.6,
-several such transformations were added, especially ``local''
-transformations triggered by annotations (such as @Delegate, @Singleton,
-@Bindable and friends). However powerful this feature is, writing AST
-transformation has always been a bit tedious. Groovy 1.7 features two
-new features which should help simplify the work of AST transformation
-writers: an AST viewer and an AST builder.
-
-[[Groovy17releasenotes-ASTViewer]]
-==== AST Viewer
-
-The following screenshot shows a new window that can be launched from
-the Groovy Swing Console. You can visualize the AST of a script you\u2019re
-working on in the console: for instance, writing the code you\u2019d like to
-create in your AST transformation. The AST viewer greatly help with
-figuring out how Groovy builds its AST when compiling your Groovy
-code. +
- image:attachments/126320769/134184968.png[image]
-
-[[Groovy17releasenotes-ASTBuilder]]
-==== AST Builder
-
-Visualizing the AST is one thing, but we also need a mechanism to create
-and modify ASTs more easily. The introduction of the AST builder
-simplifies the authoring of AST transformations, by giving you three
-different approaches for working on the AST:
-
-* building from string
-* building from code
-* building from specification
-
-Before the AST builder, one had to create and instantiate manually all
-the various AST nodes. Let\u2019s see how those three forms help with this,
-for instance for creating a node representing a constant string.
-
-[[Groovy17releasenotes-Buildingfromstring]]
-===== Building from string
-
-[source,groovy]
------------------------------------------------------------------------
-List<ASTNode> nodes = new AstBuilder().buildFromString(''' "Hello" ''')
------------------------------------------------------------------------
-
-[[Groovy17releasenotes-Buildingfromcode]]
-===== Building from code
-
-[source,groovy]
-----------------------------------------------------------------
-List<ASTNode> nodes = new AstBuilder().buildFromCode { "Hello" }
-----------------------------------------------------------------
-
-[[Groovy17releasenotes-Buildingfromspecification]]
-====== Building from specification
-
-[source,groovy]
-------------------------------------------------------
-List<ASTNode> nodes = new AstBuilder().buildFromSpec {
-    block {
-        returnStatement {
-            constant "Hello"
-        }
-    }
-}
-------------------------------------------------------
-
-For more informationPlease have a look at the documentation on the AST
-Builder. You\u2019ll discover the advantages and inconveniences of the
-various forms, and why all three are needed depending on what you want
-to achieve with the AST.
-
-[[Groovy17releasenotes-Otherminorenhancements]]
-Other minor enhancements
-------------------------
-
-[[Groovy17releasenotes-AbilitytocustomizetheGroovyTruth]]
-=== Ability to customize the Groovy Truth
-
-In Groovy, booleans aren\u2019t the sole things which can be evaluated to
-true or false, but for instance, null, empty strings or collections are
-evaluated to false or true if of length > 0 or non-empty. This notion of
-'truth' was coined 'Groovy Truth' in the
-http://www.manning.com/koenig/[Groovy in Action] book. With Groovy
-Truth, instead of doing frequent null checks, you could simply write:
-
-[source,groovy]
---------------------------------------------------------------
-def string = "more than one character"
-if (string) { println "the String is neither null nor empty" }
---------------------------------------------------------------
-
-Up until Groovy 1.7, only a small set of classes had a certain meaning
-with regards to how they were coerced to a boolean value, but now it is
-possible to provide a method for coercion to boolean in your own
-classes. For example, the following Predicate class offers the ability
-to coerce Predicate instances to true or false, thanks to the
-implementation of the boolean asBoolean() method:
-
-[source,groovy]
------------------------------------
-class Predicate {
-    boolean value
-    boolean asBoolean() { value }
-}
-
-assert new Predicate(value: true)
-assert !new Predicate(value: false)
------------------------------------
-
-Is is also possible to use categories or ExpandoMetaClass to inject an
-asBoolean() method, or to override an existing one (even one on the
-small set of classes with special Groovy truth behavior).
-
-[[Groovy17releasenotes-Dependencyupgrades]]
-=== Dependency upgrades
-
-Some of the dependencies of Groovy have been upgraded to newer versions.
-
-For instance, Groovy now uses the latest ASM version, which is
-``invokedynamic''-ready. So as we progress towards the inclusion of
-JSR-292 / invokedynamic, we\u2019ll be ready and be using the latest version
-of ASM. We also use the latest version of Ivy which is used by the Grape
-dependency module.
-
-[[Groovy17releasenotes-RewriteoftheGroovyScriptEngine]]
-=== Rewrite of the GroovyScriptEngine
-
-The GroovyScriptEngine (which is also used by Groovlets) has been
-rewritten to solve various dependency issues it was suffering from, and
-the outcome of this is that it should also now be much faster overall.
-
-The new logic uses additional phase operations to track dependencies. As
-a result the error-prone class loader technique to track them is gone
-now. These operations ensure that every script file will be tracked, its
-dependencies recorded during compilation and all transitive dependencies
-will be calculated. And only scripts will be recorded as dependency, no
-classes. The new GroovyScriptEngine also uses only one compilation
-``process'' for script compilation which solves the problem of circular
-or mutual dependencies, that caused stack overflows in the past. As a
-result the new engine can reliably handle dependencies and should be
-much faster.�
-
-[[Groovy17releasenotes-Groovyconsolepreferences]]
-=== Groovy console preferences
-
-A small annoyance, especially for developers using big LCD screens: the
-Groovy Console didn\u2019t remember preferences of position of the separator
-between the coding area and output view, or the font size being used.
-This is now fixed, as the console remembers such settings. You won\u2019t
-need anymore to adjust the console to your liking each time you run it,
-it should now have some more brain cells to remember your preferences.
-
-[[Groovy17releasenotes-NewoutputwindowfortheGroovyconsole]]
-=== New output window for the Groovy console
-
-There is a new visualization option for the results of the execution of
-your scripts in your Groovy Console. Instead of displaying the results
-in the bottom output pane, it\u2019s now possible to use an external window
-for viewing those results. Run your script with CTRL-R or CMD-R, you
-will see something like the following screenshot. You can then dismiss
-the window by hitting Escape, CTRL-W (CMD-W on Macs) or Enter.
-image:attachments/126320769/135528463.png[image] +
- You will also notice the addition of line numbers in the gutter of the
-editor area.
-
-[[Groovy17releasenotes-SQLbatchupdatesandtransactions]]
-=== SQL batch updates and transactions
-
-[[Groovy17releasenotes-Batchupdates]]
-==== Batch updates
-
-The Groovy Sql class now features batch updates, thanks to its new
-withBatch() method, taking a closure and a statement instance:
-
-[source,groovy]
-----------------------------------------------------------------
-sql.withBatch { stmt ->
-    ["Paul", "Jochen", "Guillaume"].each { name ->
-        stmt.addBatch "insert into PERSON (name) values ($name)"
-    }
-}
-----------------------------------------------------------------
-
-[[Groovy17releasenotes-Transactions]]
-==== Transactions
-
-Similarly, there\u2019s a withTransaction() method added to Sql, which works
-also with datasets:
-
-[source,groovy]
------------------------------------
-def persons = sql.dataSet("person")
-sql.withTransaction {
-    persons.add name: "Paul"
-    persons.add name: "Jochen"
-    persons.add name: "Guillaume"
-}
------------------------------------