[
  {
    "path": ".gitignore",
    "content": "# Cache and logs (Symfony2)\n/app/cache/*\n/app/logs/*\n!app/cache/.gitkeep\n!app/logs/.gitkeep\n\n# Cache and logs (Symfony3)\n/var/cache/*\n/var/logs/*\n!var/cache/.gitkeep\n!var/logs/.gitkeep\n\n# Parameters\n/app/config/parameters.yml\n/app/config/parameters.ini\n\n# Managed by Composer\n/app/bootstrap.php.cache\n/var/bootstrap.php.cache\n/bin/*\n!bin/console\n!bin/symfony_requirements\n/vendor/\n\n# Assets and user uploads\n/web/bundles/\n/web/uploads/\n/web/downloads/\n\n# PHPUnit\n/app/phpunit.xml\n/phpunit.xml\n\n# Build data\n/build/\n\n# Composer PHAR\n/composer.phar\n\n# Vagrant\n/vagrant/.vagrant/\n\n# IDE\n/.idea/"
  },
  {
    "path": ".travis.yml",
    "content": "language: php\n\nsudo: required\n\ncache:\n  directories:\n    - $HOME/.composer/cache/files\n\nmatrix:\n  fast_finish: true\n  include:\n    - php: 5.5\n    - php: 5.6\n    - php: 7.0\n  allow_failures:\n    - php: 7.0\n\nservices:\n  - redis-server\n  - elasticsearch\n  - rabbitmq\n\nbefore_install:\n    - wget http://download.gna.org/wkhtmltopdf/0.12/0.12.3/wkhtmltox-0.12.3_linux-generic-amd64.tar.xz\n    - tar xf wkhtmltox-0.12.3_linux-generic-amd64.tar.xz\n    - sudo mv wkhtmltox/bin/wkhtmltopdf /usr/local/bin/\n    - chmod +x /usr/local/bin/wkhtmltopdf\n\ninstall:\n  - composer install\n\nbefore_script:\n  - sudo rabbitmqctl add_user admin symfony.demo.on.roids\n  - app/console rabbitmq:consumer generate_pdf --env=test &\n\nscript:\n  - phpunit -c app"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2015 Alfonso M.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"
  },
  {
    "path": "README.md",
    "content": "# The Symfony Demo Application on Roids!\n[![Build Status](https://travis-ci.org/alfonsomga/symfony.demo.on.roids.svg)](https://travis-ci.org/alfonsomga/symfony.demo.on.roids)[![Total Downloads](https://poser.pugx.org/alfonsomga/symfony.demo.on.roids/downloads)](https://packagist.org/packages/alfonsomga/symfony.demo.on.roids)[![PHP Version](https://img.shields.io/badge/php-5.5.21+-ff69b4.svg)](https://packagist.org/packages/alfonsomga/symfony.demo.on.roids)[![License](https://poser.pugx.org/alfonsomga/symfony.demo.on.roids/license)](https://packagist.org/packages/alfonsomga/symfony.demo.on.roids)\n\nThe \"Symfony Demo Application on Roids\" is an application based on the original [**Symfony Demo Application**](https://github.com/symfony/symfony-demo) that includes extra features using technologies like [**Elasticsearch**](https://www.elastic.co/products/elasticsearch), [**OAuth**](http://oauth.net/), [**RabbitMQ**](https://www.rabbitmq.com/), [**Redis**](http://redis.io/) and a [**RESTful API**](https://en.wikipedia.org/wiki/Representational_state_transfer) + [**HATEOAS**](https://en.wikipedia.org/wiki/HATEOAS).\n\n<p align=\"center\">\n  <a href=\"#\"><img src=\"http://svgporn.com/logos/elasticsearch.svg\" heigh=\"15%\" width=\"15%\"></a>\n  <a href=\"#\"><img src=\"http://svgporn.com/logos/oauth.svg\" heigh=\"15%\" width=\"15%\"></a>\n  <a href=\"#\"><img src=\"http://svgporn.com/logos/rabbitmq.svg\" heigh=\"15%\" width=\"15%\"></a>\n  <a href=\"#\"><img src=\"http://svgporn.com/logos/redis.svg\" heigh=\"15%\" width=\"15%\"></a>\n  <a href=\"#\"><img src=\"https://i.imgur.com/qovozc2.png\" heigh=\"15%\" width=\"15%\"></a>\n</p>\n\n## Table of Contents\n- [Setting up & running the demo with Vagrant + Ansible](#setting-up--running-the-demo-with-vagrant--ansible)\n  - [Prerequisites](#prerequisites)\n  - [Instructions](#instructions)\n- [RESTful API + HATEOAS](#restful-api--hateoas)\n- [Elasticsearch](#elasticsearch)\n- [OAuth](#oauth)\n- [RabbitMQ](#rabbitmq)\n- [Redis](#redis)\n\n<img src=\"http://svgporn.com/logos/ansible.svg\" heigh=\"5%\" width=\"5%\" align=\"right\">\n<img src=\"http://svgporn.com/logos/vagrant.svg\" heigh=\"5%\" width=\"5%\" align=\"right\">\n## Setting up & running the demo with [**Vagrant**](https://www.vagrantup.com/) + [**Ansible**](http://www.ansible.com/)\n<img src=\"http://fotos.subefotos.com/dd1a2c7b983291b6bba45185952f1eaeo.png\">\n### Prerequisites\n- [Vagrant](https://www.vagrantup.com/downloads.html) installed\n- [Ansible] (http://docs.ansible.com/ansible/intro_installation.html) installed\n- [Virtualbox](https://www.virtualbox.org/wiki/Downloads) installed\n\n\n### Instructions\n1. ``git clone https://github.com/alfonsomga/symfony.demo.on.roids.git``\n2. ``cd symfony.demo.on.roids/vagrant/``\n3. ``vagrant up``\n4. Wait until Ansible installs and configure everything\n5. Finally navigate to <a href=\"http://192.168.50.88/\" target=\"_blank\">**http://192.168.50.88**</a> to browse the app\n \nCongratulations! You're now ready to use The Symfony Demo On Roids.\n\n<img src=\"https://i.imgur.com/qovozc2.png\" heigh=\"10%\" width=\"10%\" align=\"right\">\n## RESTful API + HATEOAS\n<img src=\"http://fotos.subefotos.com/902ef9199023b7d7ff1e37aadc32ee09o.png\">\n\nA RESTful API + HATEOAS has been implemented for expose the resources. Different formats are available for manage the data: HTML, JSON and XML.\n\n**Related urls:**\n- <a href=\"http://192.168.50.88/api/v1/\" target=\"_blank\">**API Index page**</a>\n- <a href=\"http://192.168.50.88/api/doc\" target=\"_blank\">**API Documentation**</a>\n\n**Bundles used:**\n- [**FOSRestBundle**](https://github.com/FriendsOfSymfony/FOSRestBundle)\n- [**JMSSerializerBundle**](https://github.com/schmittjoh/JMSSerializerBundle)\n- [**NelmioApiDocBundle**](https://github.com/nelmio/NelmioApiDocBundle)\n- [**FOSHttpCacheBundle**](https://github.com/FriendsOfSymfony/FOSHttpCacheBundle)\n- [**BazingaHateoasBundle**](https://github.com/willdurand/BazingaHateoasBundle)\n- [**BazingaRestExtraBundle**](https://github.com/willdurand/BazingaRestExtraBundle)\n\n<img src=\"http://svgporn.com/logos/elasticsearch.svg\" heigh=\"10%\" width=\"10%\" align=\"right\">\n## Elasticsearch\n<img src=\"http://fotos.subefotos.com/073c48b4ad7243e1ca4385dc34f5a2e9o.png\">\n\nElasticsearch has been used for add a simple search form and show relevant results based on the user search query.\n\n**Related urls:**\n- <a href=\"http://192.168.50.88:9200/_plugin/head/\" target=\"_blank\">**Elasticsearch Admin panel**</a>\n- <a href=\"http://192.168.50.88/blog/search-results?q=Lorem+ipsum\" target=\"_blank\">**Elasticsearch app search page (results for ``Lorem ipsum``)**</a>\n\n**Bundles used:**\n- [**FOSElasticaBundle**](https://github.com/FriendsOfSymfony/FOSElasticaBundle)\n\n<img src=\"http://svgporn.com/logos/oauth.svg\" heigh=\"15%\" width=\"10%\" align=\"right\">\n## OAuth\n<img src=\"http://fotos.subefotos.com/8aa0e2f21490393c399ed412b0003ba3o.png\">\n\nOAuth has been used for link/unlink an account from an OAuth provider (GitHub in this case) to an existent backend account and allows to log in directly to the backend from a GitHub account.\n\nTo use this feature you must [register a new OAuth Application](https://github.com/settings/applications/new) and edit the [parameters.yml.dist](https://github.com/alfonsomga/symfony.demo.on.roids/blob/master/app/config/parameters.yml.dist) file with your app  ``client id`` and ``client secret`` token.\n\n**Related urls:**\n- <a href=\"http://192.168.50.88/en/login\" target=\"_blank\">**Login page (click on ``Sign in with GitHub``)**</a>\n- <a href=\"http://192.168.50.88/en/admin/post/\" target=\"_blank\">**Manage your OAuth account (``Link`` or ``Unlink`` ``Github Account``)**</a>\n\n**Bundles used:**\n- [**HWIOAuthBundle**](https://github.com/hwi/HWIOAuthBundle)\n\n<img src=\"http://svgporn.com/logos/rabbitmq.svg\" heigh=\"10%\" width=\"10%\" align=\"right\">\n## RabbitMQ\n<img src=\"http://fotos.subefotos.com/39b1eaf4c05ef3124701805f9d3a80d7o.png\">\n\nRabbitMQ has been used for generate a PDF file based on the article content from a consumer in a scalable way.\n\n**Related urls:**\n- <a href=\"http://192.168.50.88:15672\" target=\"_blank\">**RabbitMQ Admin panel (User: ``admin`` password: ``symfony.demo.on.roids``)**</a>\n- <a href=\"http://192.168.50.88/en/blog/posts/lorem-ipsum-dolor-sit-amet-consectetur-adipiscing-elit\" target=\"_blank\">**Post page (click on ``Download post as PDF``)**</a>\n\n**Bundles used:**\n- [**RabbitMqBundle**](https://github.com/videlalvaro/RabbitMqBundle)\n- [**KnpSnappyBundle**](https://github.com/KnpLabs/KnpSnappyBundle)\n\n<img src=\"http://svgporn.com/logos/redis.svg\" heigh=\"10%\" width=\"10%\" align=\"right\">\n## Redis\n<img src=\"http://fotos.subefotos.com/8e6e6a3507f8145c3bf72d3c9af53951o.png\">\n\nRedis has been used for show the top 5 popular posts and set a cache lifetime of 3600 seconds.\n\n**Related urls:**\n- <a href=\"http://192.168.50.88/blog/top-5-popular-posts\" target=\"_blank\">**Top 5 popular posts**</a>\n\n**Bundles used:**\n- [**SncRedisBundle**](https://github.com/snc/SncRedisBundle)\n"
  },
  {
    "path": "app/.htaccess",
    "content": "<IfModule mod_authz_core.c>\n    Require all denied\n</IfModule>\n<IfModule !mod_authz_core.c>\n    Order deny,allow\n    Deny from all\n</IfModule>\n"
  },
  {
    "path": "app/AppCache.php",
    "content": "<?php\n\nuse Symfony\\Bundle\\FrameworkBundle\\HttpCache\\HttpCache;\n\nclass AppCache extends HttpCache\n{\n}\n"
  },
  {
    "path": "app/AppKernel.php",
    "content": "<?php\n\nuse Symfony\\Component\\HttpKernel\\Kernel;\nuse Symfony\\Component\\Config\\Loader\\LoaderInterface;\n\nclass AppKernel extends Kernel\n{\n    public function registerBundles()\n    {\n        // When you install a third-party bundle or create a new bundle in your\n        // application, you must add it in the following array to register it\n        // in the application. Otherwise, the bundle won't be enabled and you\n        // won't be able to use it.\n        $bundles = array(\n            new Symfony\\Bundle\\FrameworkBundle\\FrameworkBundle(),\n            new Symfony\\Bundle\\SecurityBundle\\SecurityBundle(),\n            new Symfony\\Bundle\\TwigBundle\\TwigBundle(),\n            new Symfony\\Bundle\\MonologBundle\\MonologBundle(),\n            new Symfony\\Bundle\\SwiftmailerBundle\\SwiftmailerBundle(),\n            new Symfony\\Bundle\\AsseticBundle\\AsseticBundle(),\n            new Doctrine\\Bundle\\DoctrineBundle\\DoctrineBundle(),\n            new Sensio\\Bundle\\FrameworkExtraBundle\\SensioFrameworkExtraBundle(),\n            new Knp\\Bundle\\PaginatorBundle\\KnpPaginatorBundle(),\n            new CodeExplorerBundle\\CodeExplorerBundle(),\n            new AppBundle\\AppBundle(),\n            new RestBundle\\RestBundle(),\n            new OAuthBundle\\OAuthBundle(),\n            new RedisBundle\\RedisBundle(),\n            new RabbitMQBundle\\RabbitMQBundle(),\n            new ElasticSearchBundle\\ElasticSearchBundle(),\n            new JMS\\SerializerBundle\\JMSSerializerBundle(),\n            new FOS\\RestBundle\\FOSRestBundle(),\n            new Nelmio\\ApiDocBundle\\NelmioApiDocBundle(),\n            new FOS\\HttpCacheBundle\\FOSHttpCacheBundle(),\n            new Bazinga\\Bundle\\HateoasBundle\\BazingaHateoasBundle(),\n            new Bazinga\\Bundle\\RestExtraBundle\\BazingaRestExtraBundle(),\n            new HWI\\Bundle\\OAuthBundle\\HWIOAuthBundle(),\n            new Snc\\RedisBundle\\SncRedisBundle(),\n            new FOS\\ElasticaBundle\\FOSElasticaBundle(),\n            new OldSound\\RabbitMqBundle\\OldSoundRabbitMqBundle(),\n            new Knp\\Bundle\\SnappyBundle\\KnpSnappyBundle(),\n        );\n\n        // Some bundles are only used while developing the application or during\n        // the unit and functional tests. Therefore, they are only registered\n        // when the application runs in 'dev' or 'test' environments. This allows\n        // to increase application performance in the production environment.\n        if (in_array($this->getEnvironment(), array('dev', 'test'))) {\n            $bundles[] = new Symfony\\Bundle\\DebugBundle\\DebugBundle();\n            $bundles[] = new Symfony\\Bundle\\WebProfilerBundle\\WebProfilerBundle();\n            $bundles[] = new Sensio\\Bundle\\DistributionBundle\\SensioDistributionBundle();\n            $bundles[] = new Sensio\\Bundle\\GeneratorBundle\\SensioGeneratorBundle();\n            $bundles[] = new Doctrine\\Bundle\\FixturesBundle\\DoctrineFixturesBundle();\n            $bundles[] = new Liip\\FunctionalTestBundle\\LiipFunctionalTestBundle();\n        }\n\n        return $bundles;\n    }\n\n    public function registerContainerConfiguration(LoaderInterface $loader)\n    {\n        $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');\n    }\n}\n"
  },
  {
    "path": "app/Resources/TwigBundle/views/Exception/error.html.twig",
    "content": "{#\n    This template is used to render any error different from 403, 404 and 500.\n\n    This is the simplest way to customize error pages in Symfony applications.\n    In case you need it, you can also hook into the internal exception handling\n    made by Symfony. This allows you to perform advanced tasks and even recover\n    your application from some errors.\n    See http://symfony.com/doc/current/cookbook/controller/error_pages.html\n#}\n\n{% extends 'base.html.twig' %}\n\n{% block body_id 'error' %}\n\n{% block main %}\n    <h1 class=\"text-danger\">Error</h1>\n\n    <p class=\"lead\">\n        There was an unknown error (HTTP {{ status_code }})\n        that prevented to complete your request.\n    </p>\n    <p>\n        Try loading this page again in some minutes or\n        <a href=\"{{ path('blog_index') }}\">go back to the homepage</a>.\n    </p>\n{% endblock %}\n\n{% block sidebar %}\n    {{ parent() }}\n\n    {{ show_source_code(_self) }}\n{% endblock %}\n"
  },
  {
    "path": "app/Resources/TwigBundle/views/Exception/error403.html.twig",
    "content": "{#\n    This template is used to render errors of type HTTP 403 (Forbidden)\n\n    This is the simplest way to customize error pages in Symfony applications.\n    In case you need it, you can also hook into the internal exception handling\n    made by Symfony. This allows you to perform advanced tasks and even recover\n    your application from some errors.\n    See http://symfony.com/doc/current/cookbook/controller/error_pages.html\n#}\n\n{% extends 'base.html.twig' %}\n\n{% block body_id 'error' %}\n\n{% block main %}\n    <h1 class=\"text-danger\"><i class=\"fa fa-unlock-alt\"></i> Error 403</h1>\n\n    <p class=\"lead\">\n        You don't have permission to access to this resource.\n    </p>\n    <p>\n        Ask your manager or system administrator to grant you\n        access to this resource.\n    </p>\n{% endblock %}\n\n{% block sidebar %}\n    {{ parent() }}\n\n    {{ show_source_code(_self) }}\n{% endblock %}\n"
  },
  {
    "path": "app/Resources/TwigBundle/views/Exception/error404.html.twig",
    "content": "{#\n    This template is used to render errors of type HTTP 404 (Not Found)\n\n    This is the simplest way to customize error pages in Symfony applications.\n    In case you need it, you can also hook into the internal exception handling\n    made by Symfony. This allows you to perform advanced tasks and even recover\n    your application from some errors.\n    See http://symfony.com/doc/current/cookbook/controller/error_pages.html\n#}\n\n{% extends 'base.html.twig' %}\n\n{% block body_id 'error' %}\n\n{% block main %}\n    <h1 class=\"text-danger\">Error 404</h1>\n\n    <p class=\"lead\">\n        We couldn't find the page you requested.\n    </p>\n    <p>\n        Check out any misspelling in the URL or\n        <a href=\"{{ path('blog_index') }}\">go back to the homepage</a>.\n    </p>\n{% endblock %}\n\n{% block sidebar %}\n    {{ parent() }}\n\n    {{ show_source_code(_self) }}\n{% endblock %}\n"
  },
  {
    "path": "app/Resources/TwigBundle/views/Exception/error500.html.twig",
    "content": "{#\n    This template is used to render errors of type HTTP 500 (Internal Server Error)\n\n    This is the simplest way to customize error pages in Symfony applications.\n    In case you need it, you can also hook into the internal exception handling\n    made by Symfony. This allows you to perform advanced tasks and even recover\n    your application from some errors.\n    See http://symfony.com/doc/current/cookbook/controller/error_pages.html\n#}\n\n{% extends 'base.html.twig' %}\n\n{% block body_id 'error' %}\n\n{% block main %}\n    <h1 class=\"text-danger\">Error 500</h1>\n\n    <p class=\"lead\">\n        There was an internal server error.\n    </p>\n    <p>\n        Try loading this page again in some minutes or\n        <a href=\"{{ path('blog_index') }}\">go back to the homepage</a>.\n    </p>\n{% endblock %}\n\n{% block sidebar %}\n    {{ parent() }}\n\n    {{ show_source_code(_self) }}\n{% endblock %}\n"
  },
  {
    "path": "app/Resources/assets/css/font-lato.css",
    "content": "@font-face {\n  font-family: 'Lato';\n  font-style: normal;\n  font-weight: 400;\n  src: local('Lato Regular'), local('Lato-Regular'), url('../fonts/lato/Lato-Regular.woff') format('woff');\n}\n@font-face {\n  font-family: 'Lato';\n  font-style: normal;\n  font-weight: 700;\n  src: local('Lato Bold'), local('Lato-Bold'), url('../fonts/lato/Lato-Bold.woff') format('woff');\n}\n@font-face {\n  font-family: 'Lato';\n  font-style: italic;\n  font-weight: 400;\n  src: local('Lato Italic'), local('Lato-Italic'), url('../fonts/lato/Lato-Italic.woff') format('woff');\n}\n@font-face {\n  font-family: 'Lato';\n  font-style: italic;\n  font-weight: 700;\n  src: local('Lato Bold Italic'), local('Lato-BoldItalic'), url('../fonts/lato/Lato-BoldItalic.woff') format('woff');\n}\n"
  },
  {
    "path": "app/Resources/assets/css/highlight-solarized-light.css",
    "content": "/*\n\nOrginal Style from ethanschoonover.com/solarized (c) Jeremy Hull <sourdrums@gmail.com>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #fdf6e3;\n  color: #657b83;\n  -webkit-text-size-adjust: none;\n}\n\n.hljs-comment,\n.diff .hljs-header,\n.hljs-doctype,\n.hljs-pi,\n.lisp .hljs-string,\n.hljs-javadoc {\n  color: #93a1a1;\n}\n\n/* Solarized Green */\n.hljs-keyword,\n.hljs-winutils,\n.method,\n.hljs-addition,\n.css .hljs-tag,\n.hljs-request,\n.hljs-status,\n.nginx .hljs-title {\n  color: #859900;\n}\n\n/* Solarized Cyan */\n.hljs-number,\n.hljs-command,\n.hljs-string,\n.hljs-tag .hljs-value,\n.hljs-rules .hljs-value,\n.hljs-phpdoc,\n.hljs-dartdoc,\n.tex .hljs-formula,\n.hljs-regexp,\n.hljs-hexcolor,\n.hljs-link_url {\n  color: #2aa198;\n}\n\n/* Solarized Blue */\n.hljs-title,\n.hljs-localvars,\n.hljs-chunk,\n.hljs-decorator,\n.hljs-built_in,\n.hljs-identifier,\n.vhdl .hljs-literal,\n.hljs-id,\n.css .hljs-function {\n  color: #268bd2;\n}\n\n/* Solarized Yellow */\n.hljs-attribute,\n.hljs-variable,\n.lisp .hljs-body,\n.smalltalk .hljs-number,\n.hljs-constant,\n.hljs-class .hljs-title,\n.hljs-parent,\n.hljs-type,\n.hljs-link_reference {\n  color: #b58900;\n}\n\n/* Solarized Orange */\n.hljs-preprocessor,\n.hljs-preprocessor .hljs-keyword,\n.hljs-pragma,\n.hljs-shebang,\n.hljs-symbol,\n.hljs-symbol .hljs-string,\n.diff .hljs-change,\n.hljs-special,\n.hljs-attr_selector,\n.hljs-subst,\n.hljs-cdata,\n.css .hljs-pseudo,\n.hljs-header {\n  color: #cb4b16;\n}\n\n/* Solarized Red */\n.hljs-deletion,\n.hljs-important {\n  color: #dc322f;\n}\n\n/* Solarized Violet */\n.hljs-link_label {\n  color: #6c71c4;\n}\n\n.tex .hljs-formula {\n  background: #eee8d5;\n}\n"
  },
  {
    "path": "app/Resources/assets/js/bootstrap-3.3.4.js",
    "content": "/*!\n * Bootstrap v3.3.4 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\nif (typeof jQuery === 'undefined') {\n  throw new Error('Bootstrap\\'s JavaScript requires jQuery')\n}\n\n+function ($) {\n  'use strict';\n  var version = $.fn.jquery.split(' ')[0].split('.')\n  if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {\n    throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher')\n  }\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: transition.js v3.3.4\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\n  // ============================================================\n\n  function transitionEnd() {\n    var el = document.createElement('bootstrap')\n\n    var transEndEventNames = {\n      WebkitTransition : 'webkitTransitionEnd',\n      MozTransition    : 'transitionend',\n      OTransition      : 'oTransitionEnd otransitionend',\n      transition       : 'transitionend'\n    }\n\n    for (var name in transEndEventNames) {\n      if (el.style[name] !== undefined) {\n        return { end: transEndEventNames[name] }\n      }\n    }\n\n    return false // explicit for ie8 (  ._.)\n  }\n\n  // http://blog.alexmaccaw.com/css-transitions\n  $.fn.emulateTransitionEnd = function (duration) {\n    var called = false\n    var $el = this\n    $(this).one('bsTransitionEnd', function () { called = true })\n    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n    setTimeout(callback, duration)\n    return this\n  }\n\n  $(function () {\n    $.support.transition = transitionEnd()\n\n    if (!$.support.transition) return\n\n    $.event.special.bsTransitionEnd = {\n      bindType: $.support.transition.end,\n      delegateType: $.support.transition.end,\n      handle: function (e) {\n        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n      }\n    }\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: alert.js v3.3.4\n * http://getbootstrap.com/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // ALERT CLASS DEFINITION\n  // ======================\n\n  var dismiss = '[data-dismiss=\"alert\"]'\n  var Alert   = function (el) {\n    $(el).on('click', dismiss, this.close)\n  }\n\n  Alert.VERSION = '3.3.4'\n\n  Alert.TRANSITION_DURATION = 150\n\n  Alert.prototype.close = function (e) {\n    var $this    = $(this)\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = $(selector)\n\n    if (e) e.preventDefault()\n\n    if (!$parent.length) {\n      $parent = $this.closest('.alert')\n    }\n\n    $parent.trigger(e = $.Event('close.bs.alert'))\n\n    if (e.isDefaultPrevented()) return\n\n    $parent.removeClass('in')\n\n    function removeElement() {\n      // detach from parent, fire event then clean up data\n      $parent.detach().trigger('closed.bs.alert').remove()\n    }\n\n    $.support.transition && $parent.hasClass('fade') ?\n      $parent\n        .one('bsTransitionEnd', removeElement)\n        .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n      removeElement()\n  }\n\n\n  // ALERT PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.alert')\n\n      if (!data) $this.data('bs.alert', (data = new Alert(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.alert\n\n  $.fn.alert             = Plugin\n  $.fn.alert.Constructor = Alert\n\n\n  // ALERT NO CONFLICT\n  // =================\n\n  $.fn.alert.noConflict = function () {\n    $.fn.alert = old\n    return this\n  }\n\n\n  // ALERT DATA-API\n  // ==============\n\n  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: button.js v3.3.4\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // BUTTON PUBLIC CLASS DEFINITION\n  // ==============================\n\n  var Button = function (element, options) {\n    this.$element  = $(element)\n    this.options   = $.extend({}, Button.DEFAULTS, options)\n    this.isLoading = false\n  }\n\n  Button.VERSION  = '3.3.4'\n\n  Button.DEFAULTS = {\n    loadingText: 'loading...'\n  }\n\n  Button.prototype.setState = function (state) {\n    var d    = 'disabled'\n    var $el  = this.$element\n    var val  = $el.is('input') ? 'val' : 'html'\n    var data = $el.data()\n\n    state = state + 'Text'\n\n    if (data.resetText == null) $el.data('resetText', $el[val]())\n\n    // push to event loop to allow forms to submit\n    setTimeout($.proxy(function () {\n      $el[val](data[state] == null ? this.options[state] : data[state])\n\n      if (state == 'loadingText') {\n        this.isLoading = true\n        $el.addClass(d).attr(d, d)\n      } else if (this.isLoading) {\n        this.isLoading = false\n        $el.removeClass(d).removeAttr(d)\n      }\n    }, this), 0)\n  }\n\n  Button.prototype.toggle = function () {\n    var changed = true\n    var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n    if ($parent.length) {\n      var $input = this.$element.find('input')\n      if ($input.prop('type') == 'radio') {\n        if ($input.prop('checked') && this.$element.hasClass('active')) changed = false\n        else $parent.find('.active').removeClass('active')\n      }\n      if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')\n    } else {\n      this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n    }\n\n    if (changed) this.$element.toggleClass('active')\n  }\n\n\n  // BUTTON PLUGIN DEFINITION\n  // ========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.button')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n      if (option == 'toggle') data.toggle()\n      else if (option) data.setState(option)\n    })\n  }\n\n  var old = $.fn.button\n\n  $.fn.button             = Plugin\n  $.fn.button.Constructor = Button\n\n\n  // BUTTON NO CONFLICT\n  // ==================\n\n  $.fn.button.noConflict = function () {\n    $.fn.button = old\n    return this\n  }\n\n\n  // BUTTON DATA-API\n  // ===============\n\n  $(document)\n    .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n      var $btn = $(e.target)\n      if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')\n      Plugin.call($btn, 'toggle')\n      e.preventDefault()\n    })\n    .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n      $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n    })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: carousel.js v3.3.4\n * http://getbootstrap.com/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CAROUSEL CLASS DEFINITION\n  // =========================\n\n  var Carousel = function (element, options) {\n    this.$element    = $(element)\n    this.$indicators = this.$element.find('.carousel-indicators')\n    this.options     = options\n    this.paused      = null\n    this.sliding     = null\n    this.interval    = null\n    this.$active     = null\n    this.$items      = null\n\n    this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n    this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n      .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n      .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n  }\n\n  Carousel.VERSION  = '3.3.4'\n\n  Carousel.TRANSITION_DURATION = 600\n\n  Carousel.DEFAULTS = {\n    interval: 5000,\n    pause: 'hover',\n    wrap: true,\n    keyboard: true\n  }\n\n  Carousel.prototype.keydown = function (e) {\n    if (/input|textarea/i.test(e.target.tagName)) return\n    switch (e.which) {\n      case 37: this.prev(); break\n      case 39: this.next(); break\n      default: return\n    }\n\n    e.preventDefault()\n  }\n\n  Carousel.prototype.cycle = function (e) {\n    e || (this.paused = false)\n\n    this.interval && clearInterval(this.interval)\n\n    this.options.interval\n      && !this.paused\n      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n    return this\n  }\n\n  Carousel.prototype.getItemIndex = function (item) {\n    this.$items = item.parent().children('.item')\n    return this.$items.index(item || this.$active)\n  }\n\n  Carousel.prototype.getItemForDirection = function (direction, active) {\n    var activeIndex = this.getItemIndex(active)\n    var willWrap = (direction == 'prev' && activeIndex === 0)\n                || (direction == 'next' && activeIndex == (this.$items.length - 1))\n    if (willWrap && !this.options.wrap) return active\n    var delta = direction == 'prev' ? -1 : 1\n    var itemIndex = (activeIndex + delta) % this.$items.length\n    return this.$items.eq(itemIndex)\n  }\n\n  Carousel.prototype.to = function (pos) {\n    var that        = this\n    var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n    if (pos > (this.$items.length - 1) || pos < 0) return\n\n    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n    if (activeIndex == pos) return this.pause().cycle()\n\n    return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n  }\n\n  Carousel.prototype.pause = function (e) {\n    e || (this.paused = true)\n\n    if (this.$element.find('.next, .prev').length && $.support.transition) {\n      this.$element.trigger($.support.transition.end)\n      this.cycle(true)\n    }\n\n    this.interval = clearInterval(this.interval)\n\n    return this\n  }\n\n  Carousel.prototype.next = function () {\n    if (this.sliding) return\n    return this.slide('next')\n  }\n\n  Carousel.prototype.prev = function () {\n    if (this.sliding) return\n    return this.slide('prev')\n  }\n\n  Carousel.prototype.slide = function (type, next) {\n    var $active   = this.$element.find('.item.active')\n    var $next     = next || this.getItemForDirection(type, $active)\n    var isCycling = this.interval\n    var direction = type == 'next' ? 'left' : 'right'\n    var that      = this\n\n    if ($next.hasClass('active')) return (this.sliding = false)\n\n    var relatedTarget = $next[0]\n    var slideEvent = $.Event('slide.bs.carousel', {\n      relatedTarget: relatedTarget,\n      direction: direction\n    })\n    this.$element.trigger(slideEvent)\n    if (slideEvent.isDefaultPrevented()) return\n\n    this.sliding = true\n\n    isCycling && this.pause()\n\n    if (this.$indicators.length) {\n      this.$indicators.find('.active').removeClass('active')\n      var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n      $nextIndicator && $nextIndicator.addClass('active')\n    }\n\n    var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n    if ($.support.transition && this.$element.hasClass('slide')) {\n      $next.addClass(type)\n      $next[0].offsetWidth // force reflow\n      $active.addClass(direction)\n      $next.addClass(direction)\n      $active\n        .one('bsTransitionEnd', function () {\n          $next.removeClass([type, direction].join(' ')).addClass('active')\n          $active.removeClass(['active', direction].join(' '))\n          that.sliding = false\n          setTimeout(function () {\n            that.$element.trigger(slidEvent)\n          }, 0)\n        })\n        .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n    } else {\n      $active.removeClass('active')\n      $next.addClass('active')\n      this.sliding = false\n      this.$element.trigger(slidEvent)\n    }\n\n    isCycling && this.cycle()\n\n    return this\n  }\n\n\n  // CAROUSEL PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.carousel')\n      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n      var action  = typeof option == 'string' ? option : options.slide\n\n      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n      if (typeof option == 'number') data.to(option)\n      else if (action) data[action]()\n      else if (options.interval) data.pause().cycle()\n    })\n  }\n\n  var old = $.fn.carousel\n\n  $.fn.carousel             = Plugin\n  $.fn.carousel.Constructor = Carousel\n\n\n  // CAROUSEL NO CONFLICT\n  // ====================\n\n  $.fn.carousel.noConflict = function () {\n    $.fn.carousel = old\n    return this\n  }\n\n\n  // CAROUSEL DATA-API\n  // =================\n\n  var clickHandler = function (e) {\n    var href\n    var $this   = $(this)\n    var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n    if (!$target.hasClass('carousel')) return\n    var options = $.extend({}, $target.data(), $this.data())\n    var slideIndex = $this.attr('data-slide-to')\n    if (slideIndex) options.interval = false\n\n    Plugin.call($target, options)\n\n    if (slideIndex) {\n      $target.data('bs.carousel').to(slideIndex)\n    }\n\n    e.preventDefault()\n  }\n\n  $(document)\n    .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n    .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n  $(window).on('load', function () {\n    $('[data-ride=\"carousel\"]').each(function () {\n      var $carousel = $(this)\n      Plugin.call($carousel, $carousel.data())\n    })\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: collapse.js v3.3.4\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // COLLAPSE PUBLIC CLASS DEFINITION\n  // ================================\n\n  var Collapse = function (element, options) {\n    this.$element      = $(element)\n    this.options       = $.extend({}, Collapse.DEFAULTS, options)\n    this.$trigger      = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n                           '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n    this.transitioning = null\n\n    if (this.options.parent) {\n      this.$parent = this.getParent()\n    } else {\n      this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n    }\n\n    if (this.options.toggle) this.toggle()\n  }\n\n  Collapse.VERSION  = '3.3.4'\n\n  Collapse.TRANSITION_DURATION = 350\n\n  Collapse.DEFAULTS = {\n    toggle: true\n  }\n\n  Collapse.prototype.dimension = function () {\n    var hasWidth = this.$element.hasClass('width')\n    return hasWidth ? 'width' : 'height'\n  }\n\n  Collapse.prototype.show = function () {\n    if (this.transitioning || this.$element.hasClass('in')) return\n\n    var activesData\n    var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n    if (actives && actives.length) {\n      activesData = actives.data('bs.collapse')\n      if (activesData && activesData.transitioning) return\n    }\n\n    var startEvent = $.Event('show.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    if (actives && actives.length) {\n      Plugin.call(actives, 'hide')\n      activesData || actives.data('bs.collapse', null)\n    }\n\n    var dimension = this.dimension()\n\n    this.$element\n      .removeClass('collapse')\n      .addClass('collapsing')[dimension](0)\n      .attr('aria-expanded', true)\n\n    this.$trigger\n      .removeClass('collapsed')\n      .attr('aria-expanded', true)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse in')[dimension]('')\n      this.transitioning = 0\n      this.$element\n        .trigger('shown.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n    this.$element\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n  }\n\n  Collapse.prototype.hide = function () {\n    if (this.transitioning || !this.$element.hasClass('in')) return\n\n    var startEvent = $.Event('hide.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    var dimension = this.dimension()\n\n    this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n    this.$element\n      .addClass('collapsing')\n      .removeClass('collapse in')\n      .attr('aria-expanded', false)\n\n    this.$trigger\n      .addClass('collapsed')\n      .attr('aria-expanded', false)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.transitioning = 0\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse')\n        .trigger('hidden.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    this.$element\n      [dimension](0)\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n  }\n\n  Collapse.prototype.toggle = function () {\n    this[this.$element.hasClass('in') ? 'hide' : 'show']()\n  }\n\n  Collapse.prototype.getParent = function () {\n    return $(this.options.parent)\n      .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n      .each($.proxy(function (i, element) {\n        var $element = $(element)\n        this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n      }, this))\n      .end()\n  }\n\n  Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n    var isOpen = $element.hasClass('in')\n\n    $element.attr('aria-expanded', isOpen)\n    $trigger\n      .toggleClass('collapsed', !isOpen)\n      .attr('aria-expanded', isOpen)\n  }\n\n  function getTargetFromTrigger($trigger) {\n    var href\n    var target = $trigger.attr('data-target')\n      || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n    return $(target)\n  }\n\n\n  // COLLAPSE PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.collapse')\n      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.collapse\n\n  $.fn.collapse             = Plugin\n  $.fn.collapse.Constructor = Collapse\n\n\n  // COLLAPSE NO CONFLICT\n  // ====================\n\n  $.fn.collapse.noConflict = function () {\n    $.fn.collapse = old\n    return this\n  }\n\n\n  // COLLAPSE DATA-API\n  // =================\n\n  $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n    var $this   = $(this)\n\n    if (!$this.attr('data-target')) e.preventDefault()\n\n    var $target = getTargetFromTrigger($this)\n    var data    = $target.data('bs.collapse')\n    var option  = data ? 'toggle' : $this.data()\n\n    Plugin.call($target, option)\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: dropdown.js v3.3.4\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // DROPDOWN CLASS DEFINITION\n  // =========================\n\n  var backdrop = '.dropdown-backdrop'\n  var toggle   = '[data-toggle=\"dropdown\"]'\n  var Dropdown = function (element) {\n    $(element).on('click.bs.dropdown', this.toggle)\n  }\n\n  Dropdown.VERSION = '3.3.4'\n\n  Dropdown.prototype.toggle = function (e) {\n    var $this = $(this)\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    clearMenus()\n\n    if (!isActive) {\n      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n        // if mobile we use a backdrop because click events don't delegate\n        $('<div class=\"dropdown-backdrop\"/>').insertAfter($(this)).on('click', clearMenus)\n      }\n\n      var relatedTarget = { relatedTarget: this }\n      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this\n        .trigger('focus')\n        .attr('aria-expanded', 'true')\n\n      $parent\n        .toggleClass('open')\n        .trigger('shown.bs.dropdown', relatedTarget)\n    }\n\n    return false\n  }\n\n  Dropdown.prototype.keydown = function (e) {\n    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n    var $this = $(this)\n\n    e.preventDefault()\n    e.stopPropagation()\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    if ((!isActive && e.which != 27) || (isActive && e.which == 27)) {\n      if (e.which == 27) $parent.find(toggle).trigger('focus')\n      return $this.trigger('click')\n    }\n\n    var desc = ' li:not(.disabled):visible a'\n    var $items = $parent.find('[role=\"menu\"]' + desc + ', [role=\"listbox\"]' + desc)\n\n    if (!$items.length) return\n\n    var index = $items.index(e.target)\n\n    if (e.which == 38 && index > 0)                 index--                        // up\n    if (e.which == 40 && index < $items.length - 1) index++                        // down\n    if (!~index)                                      index = 0\n\n    $items.eq(index).trigger('focus')\n  }\n\n  function clearMenus(e) {\n    if (e && e.which === 3) return\n    $(backdrop).remove()\n    $(toggle).each(function () {\n      var $this         = $(this)\n      var $parent       = getParent($this)\n      var relatedTarget = { relatedTarget: this }\n\n      if (!$parent.hasClass('open')) return\n\n      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this.attr('aria-expanded', 'false')\n      $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)\n    })\n  }\n\n  function getParent($this) {\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = selector && $(selector)\n\n    return $parent && $parent.length ? $parent : $this.parent()\n  }\n\n\n  // DROPDOWN PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.dropdown')\n\n      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.dropdown\n\n  $.fn.dropdown             = Plugin\n  $.fn.dropdown.Constructor = Dropdown\n\n\n  // DROPDOWN NO CONFLICT\n  // ====================\n\n  $.fn.dropdown.noConflict = function () {\n    $.fn.dropdown = old\n    return this\n  }\n\n\n  // APPLY TO STANDARD DROPDOWN ELEMENTS\n  // ===================================\n\n  $(document)\n    .on('click.bs.dropdown.data-api', clearMenus)\n    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n    .on('keydown.bs.dropdown.data-api', '[role=\"menu\"]', Dropdown.prototype.keydown)\n    .on('keydown.bs.dropdown.data-api', '[role=\"listbox\"]', Dropdown.prototype.keydown)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: modal.js v3.3.4\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // MODAL CLASS DEFINITION\n  // ======================\n\n  var Modal = function (element, options) {\n    this.options             = options\n    this.$body               = $(document.body)\n    this.$element            = $(element)\n    this.$dialog             = this.$element.find('.modal-dialog')\n    this.$backdrop           = null\n    this.isShown             = null\n    this.originalBodyPad     = null\n    this.scrollbarWidth      = 0\n    this.ignoreBackdropClick = false\n\n    if (this.options.remote) {\n      this.$element\n        .find('.modal-content')\n        .load(this.options.remote, $.proxy(function () {\n          this.$element.trigger('loaded.bs.modal')\n        }, this))\n    }\n  }\n\n  Modal.VERSION  = '3.3.4'\n\n  Modal.TRANSITION_DURATION = 300\n  Modal.BACKDROP_TRANSITION_DURATION = 150\n\n  Modal.DEFAULTS = {\n    backdrop: true,\n    keyboard: true,\n    show: true\n  }\n\n  Modal.prototype.toggle = function (_relatedTarget) {\n    return this.isShown ? this.hide() : this.show(_relatedTarget)\n  }\n\n  Modal.prototype.show = function (_relatedTarget) {\n    var that = this\n    var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n    this.$element.trigger(e)\n\n    if (this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = true\n\n    this.checkScrollbar()\n    this.setScrollbar()\n    this.$body.addClass('modal-open')\n\n    this.escape()\n    this.resize()\n\n    this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n    this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n      that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n        if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n      })\n    })\n\n    this.backdrop(function () {\n      var transition = $.support.transition && that.$element.hasClass('fade')\n\n      if (!that.$element.parent().length) {\n        that.$element.appendTo(that.$body) // don't move modals dom position\n      }\n\n      that.$element\n        .show()\n        .scrollTop(0)\n\n      that.adjustDialog()\n\n      if (transition) {\n        that.$element[0].offsetWidth // force reflow\n      }\n\n      that.$element\n        .addClass('in')\n        .attr('aria-hidden', false)\n\n      that.enforceFocus()\n\n      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n      transition ?\n        that.$dialog // wait for modal to slide in\n          .one('bsTransitionEnd', function () {\n            that.$element.trigger('focus').trigger(e)\n          })\n          .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n        that.$element.trigger('focus').trigger(e)\n    })\n  }\n\n  Modal.prototype.hide = function (e) {\n    if (e) e.preventDefault()\n\n    e = $.Event('hide.bs.modal')\n\n    this.$element.trigger(e)\n\n    if (!this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = false\n\n    this.escape()\n    this.resize()\n\n    $(document).off('focusin.bs.modal')\n\n    this.$element\n      .removeClass('in')\n      .attr('aria-hidden', true)\n      .off('click.dismiss.bs.modal')\n      .off('mouseup.dismiss.bs.modal')\n\n    this.$dialog.off('mousedown.dismiss.bs.modal')\n\n    $.support.transition && this.$element.hasClass('fade') ?\n      this.$element\n        .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n      this.hideModal()\n  }\n\n  Modal.prototype.enforceFocus = function () {\n    $(document)\n      .off('focusin.bs.modal') // guard against infinite focus loop\n      .on('focusin.bs.modal', $.proxy(function (e) {\n        if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {\n          this.$element.trigger('focus')\n        }\n      }, this))\n  }\n\n  Modal.prototype.escape = function () {\n    if (this.isShown && this.options.keyboard) {\n      this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n        e.which == 27 && this.hide()\n      }, this))\n    } else if (!this.isShown) {\n      this.$element.off('keydown.dismiss.bs.modal')\n    }\n  }\n\n  Modal.prototype.resize = function () {\n    if (this.isShown) {\n      $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n    } else {\n      $(window).off('resize.bs.modal')\n    }\n  }\n\n  Modal.prototype.hideModal = function () {\n    var that = this\n    this.$element.hide()\n    this.backdrop(function () {\n      that.$body.removeClass('modal-open')\n      that.resetAdjustments()\n      that.resetScrollbar()\n      that.$element.trigger('hidden.bs.modal')\n    })\n  }\n\n  Modal.prototype.removeBackdrop = function () {\n    this.$backdrop && this.$backdrop.remove()\n    this.$backdrop = null\n  }\n\n  Modal.prototype.backdrop = function (callback) {\n    var that = this\n    var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n    if (this.isShown && this.options.backdrop) {\n      var doAnimate = $.support.transition && animate\n\n      this.$backdrop = $('<div class=\"modal-backdrop ' + animate + '\" />')\n        .appendTo(this.$body)\n\n      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n        if (this.ignoreBackdropClick) {\n          this.ignoreBackdropClick = false\n          return\n        }\n        if (e.target !== e.currentTarget) return\n        this.options.backdrop == 'static'\n          ? this.$element[0].focus()\n          : this.hide()\n      }, this))\n\n      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n      this.$backdrop.addClass('in')\n\n      if (!callback) return\n\n      doAnimate ?\n        this.$backdrop\n          .one('bsTransitionEnd', callback)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callback()\n\n    } else if (!this.isShown && this.$backdrop) {\n      this.$backdrop.removeClass('in')\n\n      var callbackRemove = function () {\n        that.removeBackdrop()\n        callback && callback()\n      }\n      $.support.transition && this.$element.hasClass('fade') ?\n        this.$backdrop\n          .one('bsTransitionEnd', callbackRemove)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callbackRemove()\n\n    } else if (callback) {\n      callback()\n    }\n  }\n\n  // these following methods are used to handle overflowing modals\n\n  Modal.prototype.handleUpdate = function () {\n    this.adjustDialog()\n  }\n\n  Modal.prototype.adjustDialog = function () {\n    var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n    this.$element.css({\n      paddingLeft:  !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n      paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n    })\n  }\n\n  Modal.prototype.resetAdjustments = function () {\n    this.$element.css({\n      paddingLeft: '',\n      paddingRight: ''\n    })\n  }\n\n  Modal.prototype.checkScrollbar = function () {\n    var fullWindowWidth = window.innerWidth\n    if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n      var documentElementRect = document.documentElement.getBoundingClientRect()\n      fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n    }\n    this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n    this.scrollbarWidth = this.measureScrollbar()\n  }\n\n  Modal.prototype.setScrollbar = function () {\n    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n    this.originalBodyPad = document.body.style.paddingRight || ''\n    if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)\n  }\n\n  Modal.prototype.resetScrollbar = function () {\n    this.$body.css('padding-right', this.originalBodyPad)\n  }\n\n  Modal.prototype.measureScrollbar = function () { // thx walsh\n    var scrollDiv = document.createElement('div')\n    scrollDiv.className = 'modal-scrollbar-measure'\n    this.$body.append(scrollDiv)\n    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n    this.$body[0].removeChild(scrollDiv)\n    return scrollbarWidth\n  }\n\n\n  // MODAL PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option, _relatedTarget) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.modal')\n      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n      if (typeof option == 'string') data[option](_relatedTarget)\n      else if (options.show) data.show(_relatedTarget)\n    })\n  }\n\n  var old = $.fn.modal\n\n  $.fn.modal             = Plugin\n  $.fn.modal.Constructor = Modal\n\n\n  // MODAL NO CONFLICT\n  // =================\n\n  $.fn.modal.noConflict = function () {\n    $.fn.modal = old\n    return this\n  }\n\n\n  // MODAL DATA-API\n  // ==============\n\n  $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n    var $this   = $(this)\n    var href    = $this.attr('href')\n    var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) // strip for ie7\n    var option  = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n    if ($this.is('a')) e.preventDefault()\n\n    $target.one('show.bs.modal', function (showEvent) {\n      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n      $target.one('hidden.bs.modal', function () {\n        $this.is(':visible') && $this.trigger('focus')\n      })\n    })\n    Plugin.call($target, option, this)\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tooltip.js v3.3.4\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TOOLTIP PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Tooltip = function (element, options) {\n    this.type       = null\n    this.options    = null\n    this.enabled    = null\n    this.timeout    = null\n    this.hoverState = null\n    this.$element   = null\n\n    this.init('tooltip', element, options)\n  }\n\n  Tooltip.VERSION  = '3.3.4'\n\n  Tooltip.TRANSITION_DURATION = 150\n\n  Tooltip.DEFAULTS = {\n    animation: true,\n    placement: 'top',\n    selector: false,\n    template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    container: false,\n    viewport: {\n      selector: 'body',\n      padding: 0\n    }\n  }\n\n  Tooltip.prototype.init = function (type, element, options) {\n    this.enabled   = true\n    this.type      = type\n    this.$element  = $(element)\n    this.options   = this.getOptions(options)\n    this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport)\n\n    if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n      throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n    }\n\n    var triggers = this.options.trigger.split(' ')\n\n    for (var i = triggers.length; i--;) {\n      var trigger = triggers[i]\n\n      if (trigger == 'click') {\n        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n      } else if (trigger != 'manual') {\n        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'\n        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n      }\n    }\n\n    this.options.selector ?\n      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n      this.fixTitle()\n  }\n\n  Tooltip.prototype.getDefaults = function () {\n    return Tooltip.DEFAULTS\n  }\n\n  Tooltip.prototype.getOptions = function (options) {\n    options = $.extend({}, this.getDefaults(), this.$element.data(), options)\n\n    if (options.delay && typeof options.delay == 'number') {\n      options.delay = {\n        show: options.delay,\n        hide: options.delay\n      }\n    }\n\n    return options\n  }\n\n  Tooltip.prototype.getDelegateOptions = function () {\n    var options  = {}\n    var defaults = this.getDefaults()\n\n    this._options && $.each(this._options, function (key, value) {\n      if (defaults[key] != value) options[key] = value\n    })\n\n    return options\n  }\n\n  Tooltip.prototype.enter = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (self && self.$tip && self.$tip.is(':visible')) {\n      self.hoverState = 'in'\n      return\n    }\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'in'\n\n    if (!self.options.delay || !self.options.delay.show) return self.show()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'in') self.show()\n    }, self.options.delay.show)\n  }\n\n  Tooltip.prototype.leave = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'out'\n\n    if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'out') self.hide()\n    }, self.options.delay.hide)\n  }\n\n  Tooltip.prototype.show = function () {\n    var e = $.Event('show.bs.' + this.type)\n\n    if (this.hasContent() && this.enabled) {\n      this.$element.trigger(e)\n\n      var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n      if (e.isDefaultPrevented() || !inDom) return\n      var that = this\n\n      var $tip = this.tip()\n\n      var tipId = this.getUID(this.type)\n\n      this.setContent()\n      $tip.attr('id', tipId)\n      this.$element.attr('aria-describedby', tipId)\n\n      if (this.options.animation) $tip.addClass('fade')\n\n      var placement = typeof this.options.placement == 'function' ?\n        this.options.placement.call(this, $tip[0], this.$element[0]) :\n        this.options.placement\n\n      var autoToken = /\\s?auto?\\s?/i\n      var autoPlace = autoToken.test(placement)\n      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n      $tip\n        .detach()\n        .css({ top: 0, left: 0, display: 'block' })\n        .addClass(placement)\n        .data('bs.' + this.type, this)\n\n      this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)\n\n      var pos          = this.getPosition()\n      var actualWidth  = $tip[0].offsetWidth\n      var actualHeight = $tip[0].offsetHeight\n\n      if (autoPlace) {\n        var orgPlacement = placement\n        var $container   = this.options.container ? $(this.options.container) : this.$element.parent()\n        var containerDim = this.getPosition($container)\n\n        placement = placement == 'bottom' && pos.bottom + actualHeight > containerDim.bottom ? 'top'    :\n                    placement == 'top'    && pos.top    - actualHeight < containerDim.top    ? 'bottom' :\n                    placement == 'right'  && pos.right  + actualWidth  > containerDim.width  ? 'left'   :\n                    placement == 'left'   && pos.left   - actualWidth  < containerDim.left   ? 'right'  :\n                    placement\n\n        $tip\n          .removeClass(orgPlacement)\n          .addClass(placement)\n      }\n\n      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n      this.applyPlacement(calculatedOffset, placement)\n\n      var complete = function () {\n        var prevHoverState = that.hoverState\n        that.$element.trigger('shown.bs.' + that.type)\n        that.hoverState = null\n\n        if (prevHoverState == 'out') that.leave(that)\n      }\n\n      $.support.transition && this.$tip.hasClass('fade') ?\n        $tip\n          .one('bsTransitionEnd', complete)\n          .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n        complete()\n    }\n  }\n\n  Tooltip.prototype.applyPlacement = function (offset, placement) {\n    var $tip   = this.tip()\n    var width  = $tip[0].offsetWidth\n    var height = $tip[0].offsetHeight\n\n    // manually read margins because getBoundingClientRect includes difference\n    var marginTop = parseInt($tip.css('margin-top'), 10)\n    var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n    // we must check for NaN for ie 8/9\n    if (isNaN(marginTop))  marginTop  = 0\n    if (isNaN(marginLeft)) marginLeft = 0\n\n    offset.top  = offset.top  + marginTop\n    offset.left = offset.left + marginLeft\n\n    // $.fn.offset doesn't round pixel values\n    // so we use setOffset directly with our own function B-0\n    $.offset.setOffset($tip[0], $.extend({\n      using: function (props) {\n        $tip.css({\n          top: Math.round(props.top),\n          left: Math.round(props.left)\n        })\n      }\n    }, offset), 0)\n\n    $tip.addClass('in')\n\n    // check to see if placing tip in new offset caused the tip to resize itself\n    var actualWidth  = $tip[0].offsetWidth\n    var actualHeight = $tip[0].offsetHeight\n\n    if (placement == 'top' && actualHeight != height) {\n      offset.top = offset.top + height - actualHeight\n    }\n\n    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n    if (delta.left) offset.left += delta.left\n    else offset.top += delta.top\n\n    var isVertical          = /top|bottom/.test(placement)\n    var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n    var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n    $tip.offset(offset)\n    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n  }\n\n  Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n    this.arrow()\n      .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n      .css(isVertical ? 'top' : 'left', '')\n  }\n\n  Tooltip.prototype.setContent = function () {\n    var $tip  = this.tip()\n    var title = this.getTitle()\n\n    $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)\n    $tip.removeClass('fade in top bottom left right')\n  }\n\n  Tooltip.prototype.hide = function (callback) {\n    var that = this\n    var $tip = $(this.$tip)\n    var e    = $.Event('hide.bs.' + this.type)\n\n    function complete() {\n      if (that.hoverState != 'in') $tip.detach()\n      that.$element\n        .removeAttr('aria-describedby')\n        .trigger('hidden.bs.' + that.type)\n      callback && callback()\n    }\n\n    this.$element.trigger(e)\n\n    if (e.isDefaultPrevented()) return\n\n    $tip.removeClass('in')\n\n    $.support.transition && $tip.hasClass('fade') ?\n      $tip\n        .one('bsTransitionEnd', complete)\n        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n      complete()\n\n    this.hoverState = null\n\n    return this\n  }\n\n  Tooltip.prototype.fixTitle = function () {\n    var $e = this.$element\n    if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') {\n      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n    }\n  }\n\n  Tooltip.prototype.hasContent = function () {\n    return this.getTitle()\n  }\n\n  Tooltip.prototype.getPosition = function ($element) {\n    $element   = $element || this.$element\n\n    var el     = $element[0]\n    var isBody = el.tagName == 'BODY'\n\n    var elRect    = el.getBoundingClientRect()\n    if (elRect.width == null) {\n      // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n      elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n    }\n    var elOffset  = isBody ? { top: 0, left: 0 } : $element.offset()\n    var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n    var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n    return $.extend({}, elRect, scroll, outerDims, elOffset)\n  }\n\n  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n  }\n\n  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n    var delta = { top: 0, left: 0 }\n    if (!this.$viewport) return delta\n\n    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n    var viewportDimensions = this.getPosition(this.$viewport)\n\n    if (/right|left/.test(placement)) {\n      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll\n      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n      if (topEdgeOffset < viewportDimensions.top) { // top overflow\n        delta.top = viewportDimensions.top - topEdgeOffset\n      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n      }\n    } else {\n      var leftEdgeOffset  = pos.left - viewportPadding\n      var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n      if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n        delta.left = viewportDimensions.left - leftEdgeOffset\n      } else if (rightEdgeOffset > viewportDimensions.width) { // right overflow\n        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n      }\n    }\n\n    return delta\n  }\n\n  Tooltip.prototype.getTitle = function () {\n    var title\n    var $e = this.$element\n    var o  = this.options\n\n    title = $e.attr('data-original-title')\n      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)\n\n    return title\n  }\n\n  Tooltip.prototype.getUID = function (prefix) {\n    do prefix += ~~(Math.random() * 1000000)\n    while (document.getElementById(prefix))\n    return prefix\n  }\n\n  Tooltip.prototype.tip = function () {\n    return (this.$tip = this.$tip || $(this.options.template))\n  }\n\n  Tooltip.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n  }\n\n  Tooltip.prototype.enable = function () {\n    this.enabled = true\n  }\n\n  Tooltip.prototype.disable = function () {\n    this.enabled = false\n  }\n\n  Tooltip.prototype.toggleEnabled = function () {\n    this.enabled = !this.enabled\n  }\n\n  Tooltip.prototype.toggle = function (e) {\n    var self = this\n    if (e) {\n      self = $(e.currentTarget).data('bs.' + this.type)\n      if (!self) {\n        self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n        $(e.currentTarget).data('bs.' + this.type, self)\n      }\n    }\n\n    self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n  }\n\n  Tooltip.prototype.destroy = function () {\n    var that = this\n    clearTimeout(this.timeout)\n    this.hide(function () {\n      that.$element.off('.' + that.type).removeData('bs.' + that.type)\n    })\n  }\n\n\n  // TOOLTIP PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.tooltip')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tooltip\n\n  $.fn.tooltip             = Plugin\n  $.fn.tooltip.Constructor = Tooltip\n\n\n  // TOOLTIP NO CONFLICT\n  // ===================\n\n  $.fn.tooltip.noConflict = function () {\n    $.fn.tooltip = old\n    return this\n  }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: popover.js v3.3.4\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // POPOVER PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Popover = function (element, options) {\n    this.init('popover', element, options)\n  }\n\n  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n  Popover.VERSION  = '3.3.4'\n\n  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'\n  })\n\n\n  // NOTE: POPOVER EXTENDS tooltip.js\n  // ================================\n\n  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n  Popover.prototype.constructor = Popover\n\n  Popover.prototype.getDefaults = function () {\n    return Popover.DEFAULTS\n  }\n\n  Popover.prototype.setContent = function () {\n    var $tip    = this.tip()\n    var title   = this.getTitle()\n    var content = this.getContent()\n\n    $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)\n    $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events\n      this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'\n    ](content)\n\n    $tip.removeClass('fade top bottom left right in')\n\n    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n    // this manually by checking the contents.\n    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n  }\n\n  Popover.prototype.hasContent = function () {\n    return this.getTitle() || this.getContent()\n  }\n\n  Popover.prototype.getContent = function () {\n    var $e = this.$element\n    var o  = this.options\n\n    return $e.attr('data-content')\n      || (typeof o.content == 'function' ?\n            o.content.call($e[0]) :\n            o.content)\n  }\n\n  Popover.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n  }\n\n\n  // POPOVER PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.popover')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.popover\n\n  $.fn.popover             = Plugin\n  $.fn.popover.Constructor = Popover\n\n\n  // POPOVER NO CONFLICT\n  // ===================\n\n  $.fn.popover.noConflict = function () {\n    $.fn.popover = old\n    return this\n  }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: scrollspy.js v3.3.4\n * http://getbootstrap.com/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // SCROLLSPY CLASS DEFINITION\n  // ==========================\n\n  function ScrollSpy(element, options) {\n    this.$body          = $(document.body)\n    this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)\n    this.selector       = (this.options.target || '') + ' .nav li > a'\n    this.offsets        = []\n    this.targets        = []\n    this.activeTarget   = null\n    this.scrollHeight   = 0\n\n    this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n    this.refresh()\n    this.process()\n  }\n\n  ScrollSpy.VERSION  = '3.3.4'\n\n  ScrollSpy.DEFAULTS = {\n    offset: 10\n  }\n\n  ScrollSpy.prototype.getScrollHeight = function () {\n    return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n  }\n\n  ScrollSpy.prototype.refresh = function () {\n    var that          = this\n    var offsetMethod  = 'offset'\n    var offsetBase    = 0\n\n    this.offsets      = []\n    this.targets      = []\n    this.scrollHeight = this.getScrollHeight()\n\n    if (!$.isWindow(this.$scrollElement[0])) {\n      offsetMethod = 'position'\n      offsetBase   = this.$scrollElement.scrollTop()\n    }\n\n    this.$body\n      .find(this.selector)\n      .map(function () {\n        var $el   = $(this)\n        var href  = $el.data('target') || $el.attr('href')\n        var $href = /^#./.test(href) && $(href)\n\n        return ($href\n          && $href.length\n          && $href.is(':visible')\n          && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n      })\n      .sort(function (a, b) { return a[0] - b[0] })\n      .each(function () {\n        that.offsets.push(this[0])\n        that.targets.push(this[1])\n      })\n  }\n\n  ScrollSpy.prototype.process = function () {\n    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset\n    var scrollHeight = this.getScrollHeight()\n    var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()\n    var offsets      = this.offsets\n    var targets      = this.targets\n    var activeTarget = this.activeTarget\n    var i\n\n    if (this.scrollHeight != scrollHeight) {\n      this.refresh()\n    }\n\n    if (scrollTop >= maxScroll) {\n      return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n    }\n\n    if (activeTarget && scrollTop < offsets[0]) {\n      this.activeTarget = null\n      return this.clear()\n    }\n\n    for (i = offsets.length; i--;) {\n      activeTarget != targets[i]\n        && scrollTop >= offsets[i]\n        && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n        && this.activate(targets[i])\n    }\n  }\n\n  ScrollSpy.prototype.activate = function (target) {\n    this.activeTarget = target\n\n    this.clear()\n\n    var selector = this.selector +\n      '[data-target=\"' + target + '\"],' +\n      this.selector + '[href=\"' + target + '\"]'\n\n    var active = $(selector)\n      .parents('li')\n      .addClass('active')\n\n    if (active.parent('.dropdown-menu').length) {\n      active = active\n        .closest('li.dropdown')\n        .addClass('active')\n    }\n\n    active.trigger('activate.bs.scrollspy')\n  }\n\n  ScrollSpy.prototype.clear = function () {\n    $(this.selector)\n      .parentsUntil(this.options.target, '.active')\n      .removeClass('active')\n  }\n\n\n  // SCROLLSPY PLUGIN DEFINITION\n  // ===========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.scrollspy')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.scrollspy\n\n  $.fn.scrollspy             = Plugin\n  $.fn.scrollspy.Constructor = ScrollSpy\n\n\n  // SCROLLSPY NO CONFLICT\n  // =====================\n\n  $.fn.scrollspy.noConflict = function () {\n    $.fn.scrollspy = old\n    return this\n  }\n\n\n  // SCROLLSPY DATA-API\n  // ==================\n\n  $(window).on('load.bs.scrollspy.data-api', function () {\n    $('[data-spy=\"scroll\"]').each(function () {\n      var $spy = $(this)\n      Plugin.call($spy, $spy.data())\n    })\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tab.js v3.3.4\n * http://getbootstrap.com/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TAB CLASS DEFINITION\n  // ====================\n\n  var Tab = function (element) {\n    this.element = $(element)\n  }\n\n  Tab.VERSION = '3.3.4'\n\n  Tab.TRANSITION_DURATION = 150\n\n  Tab.prototype.show = function () {\n    var $this    = this.element\n    var $ul      = $this.closest('ul:not(.dropdown-menu)')\n    var selector = $this.data('target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    if ($this.parent('li').hasClass('active')) return\n\n    var $previous = $ul.find('.active:last a')\n    var hideEvent = $.Event('hide.bs.tab', {\n      relatedTarget: $this[0]\n    })\n    var showEvent = $.Event('show.bs.tab', {\n      relatedTarget: $previous[0]\n    })\n\n    $previous.trigger(hideEvent)\n    $this.trigger(showEvent)\n\n    if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n    var $target = $(selector)\n\n    this.activate($this.closest('li'), $ul)\n    this.activate($target, $target.parent(), function () {\n      $previous.trigger({\n        type: 'hidden.bs.tab',\n        relatedTarget: $this[0]\n      })\n      $this.trigger({\n        type: 'shown.bs.tab',\n        relatedTarget: $previous[0]\n      })\n    })\n  }\n\n  Tab.prototype.activate = function (element, container, callback) {\n    var $active    = container.find('> .active')\n    var transition = callback\n      && $.support.transition\n      && (($active.length && $active.hasClass('fade')) || !!container.find('> .fade').length)\n\n    function next() {\n      $active\n        .removeClass('active')\n        .find('> .dropdown-menu > .active')\n          .removeClass('active')\n        .end()\n        .find('[data-toggle=\"tab\"]')\n          .attr('aria-expanded', false)\n\n      element\n        .addClass('active')\n        .find('[data-toggle=\"tab\"]')\n          .attr('aria-expanded', true)\n\n      if (transition) {\n        element[0].offsetWidth // reflow for transition\n        element.addClass('in')\n      } else {\n        element.removeClass('fade')\n      }\n\n      if (element.parent('.dropdown-menu').length) {\n        element\n          .closest('li.dropdown')\n            .addClass('active')\n          .end()\n          .find('[data-toggle=\"tab\"]')\n            .attr('aria-expanded', true)\n      }\n\n      callback && callback()\n    }\n\n    $active.length && transition ?\n      $active\n        .one('bsTransitionEnd', next)\n        .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n      next()\n\n    $active.removeClass('in')\n  }\n\n\n  // TAB PLUGIN DEFINITION\n  // =====================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.tab')\n\n      if (!data) $this.data('bs.tab', (data = new Tab(this)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tab\n\n  $.fn.tab             = Plugin\n  $.fn.tab.Constructor = Tab\n\n\n  // TAB NO CONFLICT\n  // ===============\n\n  $.fn.tab.noConflict = function () {\n    $.fn.tab = old\n    return this\n  }\n\n\n  // TAB DATA-API\n  // ============\n\n  var clickHandler = function (e) {\n    e.preventDefault()\n    Plugin.call($(this), 'show')\n  }\n\n  $(document)\n    .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n    .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: affix.js v3.3.4\n * http://getbootstrap.com/javascript/#affix\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // AFFIX CLASS DEFINITION\n  // ======================\n\n  var Affix = function (element, options) {\n    this.options = $.extend({}, Affix.DEFAULTS, options)\n\n    this.$target = $(this.options.target)\n      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))\n\n    this.$element     = $(element)\n    this.affixed      = null\n    this.unpin        = null\n    this.pinnedOffset = null\n\n    this.checkPosition()\n  }\n\n  Affix.VERSION  = '3.3.4'\n\n  Affix.RESET    = 'affix affix-top affix-bottom'\n\n  Affix.DEFAULTS = {\n    offset: 0,\n    target: window\n  }\n\n  Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n    var scrollTop    = this.$target.scrollTop()\n    var position     = this.$element.offset()\n    var targetHeight = this.$target.height()\n\n    if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n    if (this.affixed == 'bottom') {\n      if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n      return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n    }\n\n    var initializing   = this.affixed == null\n    var colliderTop    = initializing ? scrollTop : position.top\n    var colliderHeight = initializing ? targetHeight : height\n\n    if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n    if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n    return false\n  }\n\n  Affix.prototype.getPinnedOffset = function () {\n    if (this.pinnedOffset) return this.pinnedOffset\n    this.$element.removeClass(Affix.RESET).addClass('affix')\n    var scrollTop = this.$target.scrollTop()\n    var position  = this.$element.offset()\n    return (this.pinnedOffset = position.top - scrollTop)\n  }\n\n  Affix.prototype.checkPositionWithEventLoop = function () {\n    setTimeout($.proxy(this.checkPosition, this), 1)\n  }\n\n  Affix.prototype.checkPosition = function () {\n    if (!this.$element.is(':visible')) return\n\n    var height       = this.$element.height()\n    var offset       = this.options.offset\n    var offsetTop    = offset.top\n    var offsetBottom = offset.bottom\n    var scrollHeight = $(document.body).height()\n\n    if (typeof offset != 'object')         offsetBottom = offsetTop = offset\n    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)\n    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n    var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n    if (this.affixed != affix) {\n      if (this.unpin != null) this.$element.css('top', '')\n\n      var affixType = 'affix' + (affix ? '-' + affix : '')\n      var e         = $.Event(affixType + '.bs.affix')\n\n      this.$element.trigger(e)\n\n      if (e.isDefaultPrevented()) return\n\n      this.affixed = affix\n      this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n      this.$element\n        .removeClass(Affix.RESET)\n        .addClass(affixType)\n        .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n    }\n\n    if (affix == 'bottom') {\n      this.$element.offset({\n        top: scrollHeight - height - offsetBottom\n      })\n    }\n  }\n\n\n  // AFFIX PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.affix')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.affix\n\n  $.fn.affix             = Plugin\n  $.fn.affix.Constructor = Affix\n\n\n  // AFFIX NO CONFLICT\n  // =================\n\n  $.fn.affix.noConflict = function () {\n    $.fn.affix = old\n    return this\n  }\n\n\n  // AFFIX DATA-API\n  // ==============\n\n  $(window).on('load', function () {\n    $('[data-spy=\"affix\"]').each(function () {\n      var $spy = $(this)\n      var data = $spy.data()\n\n      data.offset = data.offset || {}\n\n      if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n      if (data.offsetTop    != null) data.offset.top    = data.offsetTop\n\n      Plugin.call($spy, data)\n    })\n  })\n\n}(jQuery);\n"
  },
  {
    "path": "app/Resources/assets/js/highlight.pack.js",
    "content": "!function(e){\"undefined\"!=typeof exports?e(exports):(window.hljs=e({}),\"function\"==typeof define&&define.amd&&define([],function(){return window.hljs}))}(function(e){function n(e){return e.replace(/&/gm,\"&amp;\").replace(/</gm,\"&lt;\").replace(/>/gm,\"&gt;\")}function t(e){return e.nodeName.toLowerCase()}function r(e,n){var t=e&&e.exec(n);return t&&0==t.index}function a(e){var n=(e.className+\" \"+(e.parentNode?e.parentNode.className:\"\")).split(/\\s+/);return n=n.map(function(e){return e.replace(/^lang(uage)?-/,\"\")}),n.filter(function(e){return N(e)||/no(-?)highlight/.test(e)})[0]}function o(e,n){var t={};for(var r in e)t[r]=e[r];if(n)for(var r in n)t[r]=n[r];return t}function i(e){var n=[];return function r(e,a){for(var o=e.firstChild;o;o=o.nextSibling)3==o.nodeType?a+=o.nodeValue.length:1==o.nodeType&&(n.push({event:\"start\",offset:a,node:o}),a=r(o,a),t(o).match(/br|hr|img|input/)||n.push({event:\"stop\",offset:a,node:o}));return a}(e,0),n}function c(e,r,a){function o(){return e.length&&r.length?e[0].offset!=r[0].offset?e[0].offset<r[0].offset?e:r:\"start\"==r[0].event?e:r:e.length?e:r}function i(e){function r(e){return\" \"+e.nodeName+'=\"'+n(e.value)+'\"'}l+=\"<\"+t(e)+Array.prototype.map.call(e.attributes,r).join(\"\")+\">\"}function c(e){l+=\"</\"+t(e)+\">\"}function u(e){(\"start\"==e.event?i:c)(e.node)}for(var s=0,l=\"\",f=[];e.length||r.length;){var g=o();if(l+=n(a.substr(s,g[0].offset-s)),s=g[0].offset,g==e){f.reverse().forEach(c);do u(g.splice(0,1)[0]),g=o();while(g==e&&g.length&&g[0].offset==s);f.reverse().forEach(i)}else\"start\"==g[0].event?f.push(g[0].node):f.pop(),u(g.splice(0,1)[0])}return l+n(a.substr(s))}function u(e){function n(e){return e&&e.source||e}function t(t,r){return RegExp(n(t),\"m\"+(e.cI?\"i\":\"\")+(r?\"g\":\"\"))}function r(a,i){if(!a.compiled){if(a.compiled=!0,a.k=a.k||a.bK,a.k){var c={},u=function(n,t){e.cI&&(t=t.toLowerCase()),t.split(\" \").forEach(function(e){var t=e.split(\"|\");c[t[0]]=[n,t[1]?Number(t[1]):1]})};\"string\"==typeof a.k?u(\"keyword\",a.k):Object.keys(a.k).forEach(function(e){u(e,a.k[e])}),a.k=c}a.lR=t(a.l||/\\b[A-Za-z0-9_]+\\b/,!0),i&&(a.bK&&(a.b=\"\\\\b(\"+a.bK.split(\" \").join(\"|\")+\")\\\\b\"),a.b||(a.b=/\\B|\\b/),a.bR=t(a.b),a.e||a.eW||(a.e=/\\B|\\b/),a.e&&(a.eR=t(a.e)),a.tE=n(a.e)||\"\",a.eW&&i.tE&&(a.tE+=(a.e?\"|\":\"\")+i.tE)),a.i&&(a.iR=t(a.i)),void 0===a.r&&(a.r=1),a.c||(a.c=[]);var s=[];a.c.forEach(function(e){e.v?e.v.forEach(function(n){s.push(o(e,n))}):s.push(\"self\"==e?a:e)}),a.c=s,a.c.forEach(function(e){r(e,a)}),a.starts&&r(a.starts,i);var l=a.c.map(function(e){return e.bK?\"\\\\.?(\"+e.b+\")\\\\.?\":e.b}).concat([a.tE,a.i]).map(n).filter(Boolean);a.t=l.length?t(l.join(\"|\"),!0):{exec:function(){return null}}}}r(e)}function s(e,t,a,o){function i(e,n){for(var t=0;t<n.c.length;t++)if(r(n.c[t].bR,e))return n.c[t]}function c(e,n){return r(e.eR,n)?e:e.eW?c(e.parent,n):void 0}function f(e,n){return!a&&r(n.iR,e)}function g(e,n){var t=x.cI?n[0].toLowerCase():n[0];return e.k.hasOwnProperty(t)&&e.k[t]}function p(e,n,t,r){var a=r?\"\":E.classPrefix,o='<span class=\"'+a,i=t?\"\":\"</span>\";return o+=e+'\">',o+n+i}function d(){if(!w.k)return n(y);var e=\"\",t=0;w.lR.lastIndex=0;for(var r=w.lR.exec(y);r;){e+=n(y.substr(t,r.index-t));var a=g(w,r);a?(B+=a[1],e+=p(a[0],n(r[0]))):e+=n(r[0]),t=w.lR.lastIndex,r=w.lR.exec(y)}return e+n(y.substr(t))}function h(){if(w.sL&&!R[w.sL])return n(y);var e=w.sL?s(w.sL,y,!0,L[w.sL]):l(y);return w.r>0&&(B+=e.r),\"continuous\"==w.subLanguageMode&&(L[w.sL]=e.top),p(e.language,e.value,!1,!0)}function v(){return void 0!==w.sL?h():d()}function b(e,t){var r=e.cN?p(e.cN,\"\",!0):\"\";e.rB?(M+=r,y=\"\"):e.eB?(M+=n(t)+r,y=\"\"):(M+=r,y=t),w=Object.create(e,{parent:{value:w}})}function m(e,t){if(y+=e,void 0===t)return M+=v(),0;var r=i(t,w);if(r)return M+=v(),b(r,t),r.rB?0:t.length;var a=c(w,t);if(a){var o=w;o.rE||o.eE||(y+=t),M+=v();do w.cN&&(M+=\"</span>\"),B+=w.r,w=w.parent;while(w!=a.parent);return o.eE&&(M+=n(t)),y=\"\",a.starts&&b(a.starts,\"\"),o.rE?0:t.length}if(f(t,w))throw new Error('Illegal lexeme \"'+t+'\" for mode \"'+(w.cN||\"<unnamed>\")+'\"');return y+=t,t.length||1}var x=N(e);if(!x)throw new Error('Unknown language: \"'+e+'\"');u(x);for(var w=o||x,L={},M=\"\",k=w;k!=x;k=k.parent)k.cN&&(M=p(k.cN,\"\",!0)+M);var y=\"\",B=0;try{for(var C,j,I=0;;){if(w.t.lastIndex=I,C=w.t.exec(t),!C)break;j=m(t.substr(I,C.index-I),C[0]),I=C.index+j}m(t.substr(I));for(var k=w;k.parent;k=k.parent)k.cN&&(M+=\"</span>\");return{r:B,value:M,language:e,top:w}}catch(A){if(-1!=A.message.indexOf(\"Illegal\"))return{r:0,value:n(t)};throw A}}function l(e,t){t=t||E.languages||Object.keys(R);var r={r:0,value:n(e)},a=r;return t.forEach(function(n){if(N(n)){var t=s(n,e,!1);t.language=n,t.r>a.r&&(a=t),t.r>r.r&&(a=r,r=t)}}),a.language&&(r.second_best=a),r}function f(e){return E.tabReplace&&(e=e.replace(/^((<[^>]+>|\\t)+)/gm,function(e,n){return n.replace(/\\t/g,E.tabReplace)})),E.useBR&&(e=e.replace(/\\n/g,\"<br>\")),e}function g(e,n,t){var r=n?x[n]:t,a=[e.trim()];return e.match(/(\\s|^)hljs(\\s|$)/)||a.push(\"hljs\"),r&&a.push(r),a.join(\" \").trim()}function p(e){var n=a(e);if(!/no(-?)highlight/.test(n)){var t;E.useBR?(t=document.createElementNS(\"http://www.w3.org/1999/xhtml\",\"div\"),t.innerHTML=e.innerHTML.replace(/\\n/g,\"\").replace(/<br[ \\/]*>/g,\"\\n\")):t=e;var r=t.textContent,o=n?s(n,r,!0):l(r),u=i(t);if(u.length){var p=document.createElementNS(\"http://www.w3.org/1999/xhtml\",\"div\");p.innerHTML=o.value,o.value=c(u,i(p),r)}o.value=f(o.value),e.innerHTML=o.value,e.className=g(e.className,n,o.language),e.result={language:o.language,re:o.r},o.second_best&&(e.second_best={language:o.second_best.language,re:o.second_best.r})}}function d(e){E=o(E,e)}function h(){if(!h.called){h.called=!0;var e=document.querySelectorAll(\"pre code\");Array.prototype.forEach.call(e,p)}}function v(){addEventListener(\"DOMContentLoaded\",h,!1),addEventListener(\"load\",h,!1)}function b(n,t){var r=R[n]=t(e);r.aliases&&r.aliases.forEach(function(e){x[e]=n})}function m(){return Object.keys(R)}function N(e){return R[e]||R[x[e]]}var E={classPrefix:\"hljs-\",tabReplace:null,useBR:!1,languages:void 0},R={},x={};return e.highlight=s,e.highlightAuto=l,e.fixMarkup=f,e.highlightBlock=p,e.configure=d,e.initHighlighting=h,e.initHighlightingOnLoad=v,e.registerLanguage=b,e.listLanguages=m,e.getLanguage=N,e.inherit=o,e.IR=\"[a-zA-Z][a-zA-Z0-9_]*\",e.UIR=\"[a-zA-Z_][a-zA-Z0-9_]*\",e.NR=\"\\\\b\\\\d+(\\\\.\\\\d+)?\",e.CNR=\"(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",e.BNR=\"\\\\b(0b[01]+)\",e.RSR=\"!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~\",e.BE={b:\"\\\\\\\\[\\\\s\\\\S]\",r:0},e.ASM={cN:\"string\",b:\"'\",e:\"'\",i:\"\\\\n\",c:[e.BE]},e.QSM={cN:\"string\",b:'\"',e:'\"',i:\"\\\\n\",c:[e.BE]},e.PWM={b:/\\b(a|an|the|are|I|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such)\\b/},e.CLCM={cN:\"comment\",b:\"//\",e:\"$\",c:[e.PWM]},e.CBCM={cN:\"comment\",b:\"/\\\\*\",e:\"\\\\*/\",c:[e.PWM]},e.HCM={cN:\"comment\",b:\"#\",e:\"$\",c:[e.PWM]},e.NM={cN:\"number\",b:e.NR,r:0},e.CNM={cN:\"number\",b:e.CNR,r:0},e.BNM={cN:\"number\",b:e.BNR,r:0},e.CSSNM={cN:\"number\",b:e.NR+\"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?\",r:0},e.RM={cN:\"regexp\",b:/\\//,e:/\\/[gimuy]*/,i:/\\n/,c:[e.BE,{b:/\\[/,e:/\\]/,r:0,c:[e.BE]}]},e.TM={cN:\"title\",b:e.IR,r:0},e.UTM={cN:\"title\",b:e.UIR,r:0},e});hljs.registerLanguage(\"javascript\",function(r){return{aliases:[\"js\"],k:{keyword:\"in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class\",literal:\"true false null undefined NaN Infinity\",built_in:\"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document\"},c:[{cN:\"pi\",r:10,v:[{b:/^\\s*('|\")use strict('|\")/},{b:/^\\s*('|\")use asm('|\")/}]},r.ASM,r.QSM,r.CLCM,r.CBCM,r.CNM,{b:\"(\"+r.RSR+\"|\\\\b(case|return|throw)\\\\b)\\\\s*\",k:\"return throw case\",c:[r.CLCM,r.CBCM,r.RM,{b:/</,e:/>;/,r:0,sL:\"xml\"}],r:0},{cN:\"function\",bK:\"function\",e:/\\{/,eE:!0,c:[r.inherit(r.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:\"params\",b:/\\(/,e:/\\)/,c:[r.CLCM,r.CBCM],i:/[\"'\\(]/}],i:/\\[|%/},{b:/\\$[(.]/},{b:\"\\\\.\"+r.IR,r:0}]}});hljs.registerLanguage(\"twig\",function(){var e={cN:\"params\",b:\"\\\\(\",e:\"\\\\)\"},t=\"attribute block constant cycle date dump include max min parent random range source template_from_string\",a={cN:\"function\",bK:t,r:0,c:[e]},r={cN:\"filter\",b:/\\|[A-Za-z]+\\:?/,k:\"abs batch capitalize convert_encoding date date_modify default escape first format join json_encode keys last length lower merge nl2br number_format raw replace reverse round slice sort split striptags title trim upper url_encode\",c:[a]},c=\"autoescape block do embed extends filter flush for if import include macro sandbox set spaceless use verbatim\";return c=c+\" \"+c.split(\" \").map(function(e){return\"end\"+e}).join(\" \"),{aliases:[\"craftcms\"],cI:!0,sL:\"xml\",subLanguageMode:\"continuous\",c:[{cN:\"comment\",b:/\\{#/,e:/#}/},{cN:\"template_tag\",b:/\\{%/,e:/%}/,k:c,c:[r,a]},{cN:\"variable\",b:/\\{\\{/,e:/}}/,c:[r,a]}]}});hljs.registerLanguage(\"sql\",function(e){var t={cN:\"comment\",b:\"--\",e:\"$\"};return{cI:!0,i:/[<>]/,c:[{cN:\"operator\",bK:\"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate savepoint release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup\",e:/;/,eW:!0,k:{keyword:\"abs absolute acos action add adddate addtime aes_decrypt aes_encrypt after aggregate all allocate alter analyze and any are as asc ascii asin assertion at atan atan2 atn2 authorization authors avg backup before begin benchmark between bin binlog bit_and bit_count bit_length bit_or bit_xor both by cache call cascade cascaded case cast catalog ceil ceiling chain change changed char_length character_length charindex charset check checksum checksum_agg choose close coalesce coercibility collate collation collationproperty column columns columns_updated commit compress concat concat_ws concurrent connect connection connection_id consistent constraint constraints continue contributors conv convert convert_tz corresponding cos cot count count_big crc32 create cross cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime data database databases datalength date_add date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts datetimeoffsetfromparts day dayname dayofmonth dayofweek dayofyear deallocate declare decode default deferrable deferred degrees delayed delete des_decrypt des_encrypt des_key_file desc describe descriptor diagnostics difference disconnect distinct distinctrow div do domain double drop dumpfile each else elt enclosed encode encrypt end end-exec engine engines eomonth errors escape escaped event eventdata events except exception exec execute exists exp explain export_set extended external extract fast fetch field fields find_in_set first first_value floor flush for force foreign format found found_rows from from_base64 from_days from_unixtime full function get get_format get_lock getdate getutcdate global go goto grant grants greatest group group_concat grouping grouping_id gtid_subset gtid_subtract handler having help hex high_priority hosts hour ident_current ident_incr ident_seed identified identity if ifnull ignore iif ilike immediate in index indicator inet6_aton inet6_ntoa inet_aton inet_ntoa infile initially inner innodb input insert install instr intersect into is is_free_lock is_ipv4 is_ipv4_compat is_ipv4_mapped is_not is_not_null is_used_lock isdate isnull isolation join key kill language last last_day last_insert_id last_value lcase lead leading least leaves left len lenght level like limit lines ln load load_file local localtime localtimestamp locate lock log log10 log2 logfile logs low_priority lower lpad ltrim make_set makedate maketime master master_pos_wait match matched max md5 medium merge microsecond mid min minute mod mode module month monthname mutex name_const names national natural nchar next no no_write_to_binlog not now nullif nvarchar oct octet_length of old_password on only open optimize option optionally or ord order outer outfile output pad parse partial partition password patindex percent_rank percentile_cont percentile_disc period_add period_diff pi plugin position pow power pragma precision prepare preserve primary prior privileges procedure procedure_analyze processlist profile profiles public publishingservername purge quarter query quick quote quotename radians rand read references regexp relative relaylog release release_lock rename repair repeat replace replicate reset restore restrict return returns reverse revoke right rlike rollback rollup round row row_count rows rpad rtrim savepoint schema scroll sec_to_time second section select serializable server session session_user set sha sha1 sha2 share show sign sin size slave sleep smalldatetimefromparts snapshot some soname soundex sounds_like space sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sql_variant_property sqlstate sqrt square start starting status std stddev stddev_pop stddev_samp stdev stdevp stop str str_to_date straight_join strcmp string stuff subdate substr substring subtime subtring_index sum switchoffset sysdate sysdatetime sysdatetimeoffset system_user sysutcdatetime table tables tablespace tan temporary terminated tertiary_weights then time time_format time_to_sec timediff timefromparts timestamp timestampadd timestampdiff timezone_hour timezone_minute to to_base64 to_days to_seconds todatetimeoffset trailing transaction translation trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse ucase uncompress uncompressed_length unhex unicode uninstall union unique unix_timestamp unknown unlock update upgrade upped upper usage use user user_resources using utc_date utc_time utc_timestamp uuid uuid_short validate_password_strength value values var var_pop var_samp variables variance varp version view warnings week weekday weekofyear weight_string when whenever where with work write xml xor year yearweek zon\",literal:\"true false null\",built_in:\"array bigint binary bit blob boolean char character date dec decimal float int integer interval number numeric real serial smallint varchar varying int8 serial8 text\"},c:[{cN:\"string\",b:\"'\",e:\"'\",c:[e.BE,{b:\"''\"}]},{cN:\"string\",b:'\"',e:'\"',c:[e.BE,{b:'\"\"'}]},{cN:\"string\",b:\"`\",e:\"`\",c:[e.BE]},e.CNM,e.CBCM,t]},e.CBCM,t]}});hljs.registerLanguage(\"bash\",function(e){var t={cN:\"variable\",v:[{b:/\\$[\\w\\d#@][\\w\\d_]*/},{b:/\\$\\{(.*?)\\}/}]},s={cN:\"string\",b:/\"/,e:/\"/,c:[e.BE,t,{cN:\"variable\",b:/\\$\\(/,e:/\\)/,c:[e.BE]}]},a={cN:\"string\",b:/'/,e:/'/};return{aliases:[\"sh\",\"zsh\"],l:/-?[a-z\\.]+/,k:{keyword:\"if then else elif fi for while in do done case esac function\",literal:\"true false\",built_in:\"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp\",operator:\"-ne -eq -lt -gt -f -d -e -s -l -a\"},c:[{cN:\"shebang\",b:/^#![^\\n]+sh\\s*$/,r:10},{cN:\"function\",b:/\\w[\\w\\d_]*\\s*\\(\\s*\\)\\s*\\{/,rB:!0,c:[e.inherit(e.TM,{b:/\\w[\\w\\d_]*/})],r:0},e.HCM,e.NM,s,a,t]}});hljs.registerLanguage(\"css\",function(e){var c=\"[a-zA-Z-][a-zA-Z0-9_-]*\",a={cN:\"function\",b:c+\"\\\\(\",rB:!0,eE:!0,e:\"\\\\(\"};return{cI:!0,i:\"[=/|']\",c:[e.CBCM,{cN:\"id\",b:\"\\\\#[A-Za-z0-9_-]+\"},{cN:\"class\",b:\"\\\\.[A-Za-z0-9_-]+\",r:0},{cN:\"attr_selector\",b:\"\\\\[\",e:\"\\\\]\",i:\"$\"},{cN:\"pseudo\",b:\":(:)?[a-zA-Z0-9\\\\_\\\\-\\\\+\\\\(\\\\)\\\\\\\"\\\\']+\"},{cN:\"at_rule\",b:\"@(font-face|page)\",l:\"[a-z-]+\",k:\"font-face page\"},{cN:\"at_rule\",b:\"@\",e:\"[{;]\",c:[{cN:\"keyword\",b:/\\S+/},{b:/\\s/,eW:!0,eE:!0,r:0,c:[a,e.ASM,e.QSM,e.CSSNM]}]},{cN:\"tag\",b:c,r:0},{cN:\"rules\",b:\"{\",e:\"}\",i:\"[^\\\\s]\",r:0,c:[e.CBCM,{cN:\"rule\",b:\"[^\\\\s]\",rB:!0,e:\";\",eW:!0,c:[{cN:\"attribute\",b:\"[A-Z\\\\_\\\\.\\\\-]+\",e:\":\",eE:!0,i:\"[^\\\\s]\",starts:{cN:\"value\",eW:!0,eE:!0,c:[a,e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:\"hexcolor\",b:\"#[0-9A-Fa-f]+\"},{cN:\"important\",b:\"!important\"}]}}]}]}]}});hljs.registerLanguage(\"php\",function(e){var c={cN:\"variable\",b:\"\\\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*\"},i={cN:\"preprocessor\",b:/<\\?(php)?|\\?>/},a={cN:\"string\",c:[e.BE,i],v:[{b:'b\"',e:'\"'},{b:\"b'\",e:\"'\"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},n={v:[e.BNM,e.CNM]};return{aliases:[\"php3\",\"php4\",\"php5\",\"php6\"],cI:!0,k:\"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally\",c:[e.CLCM,e.HCM,{cN:\"comment\",b:\"/\\\\*\",e:\"\\\\*/\",c:[{cN:\"phpdoc\",b:\"\\\\s@[A-Za-z]+\"},i]},{cN:\"comment\",b:\"__halt_compiler.+?;\",eW:!0,k:\"__halt_compiler\",l:e.UIR},{cN:\"string\",b:\"<<<['\\\"]?\\\\w+['\\\"]?$\",e:\"^\\\\w+;\",c:[e.BE]},i,c,{b:/->+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/},{cN:\"function\",bK:\"function\",e:/[;{]/,eE:!0,i:\"\\\\$|\\\\[|%\",c:[e.UTM,{cN:\"params\",b:\"\\\\(\",e:\"\\\\)\",c:[\"self\",c,e.CBCM,a,n]}]},{cN:\"class\",bK:\"class interface\",e:\"{\",eE:!0,i:/[:\\(\\$\"]/,c:[{bK:\"extends implements\"},e.UTM]},{bK:\"namespace\",e:\";\",i:/[\\.']/,c:[e.UTM]},{bK:\"use\",e:\";\",c:[e.UTM]},{b:\"=>\"},a,n]}});hljs.registerLanguage(\"apache\",function(e){var r={cN:\"number\",b:\"[\\\\$%]\\\\d+\"};return{aliases:[\"apacheconf\"],cI:!0,c:[e.HCM,{cN:\"tag\",b:\"</?\",e:\">\"},{cN:\"keyword\",b:/\\w+/,r:0,k:{common:\"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername\"},starts:{e:/$/,r:0,k:{literal:\"on off all\"},c:[{cN:\"sqbracket\",b:\"\\\\s\\\\[\",e:\"\\\\]$\"},{cN:\"cbracket\",b:\"[\\\\$%]\\\\{\",e:\"\\\\}\",c:[\"self\",r]},r,e.QSM]}}],i:/\\S/}});hljs.registerLanguage(\"ini\",function(e){return{cI:!0,i:/\\S/,c:[{cN:\"comment\",b:\";\",e:\"$\"},{cN:\"title\",b:\"^\\\\[\",e:\"\\\\]\"},{cN:\"setting\",b:\"^[a-z0-9\\\\[\\\\]_-]+[ \\\\t]*=[ \\\\t]*\",e:\"$\",c:[{cN:\"value\",eW:!0,k:\"on off true false yes no\",c:[e.QSM,e.NM],r:0}]}]}});hljs.registerLanguage(\"markdown\",function(){return{aliases:[\"md\",\"mkdown\",\"mkd\"],c:[{cN:\"header\",v:[{b:\"^#{1,6}\",e:\"$\"},{b:\"^.+?\\\\n[=-]{2,}$\"}]},{b:\"<\",e:\">\",sL:\"xml\",r:0},{cN:\"bullet\",b:\"^([*+-]|(\\\\d+\\\\.))\\\\s+\"},{cN:\"strong\",b:\"[*_]{2}.+?[*_]{2}\"},{cN:\"emphasis\",v:[{b:\"\\\\*.+?\\\\*\"},{b:\"_.+?_\",r:0}]},{cN:\"blockquote\",b:\"^>\\\\s+\",e:\"$\"},{cN:\"code\",v:[{b:\"`.+?`\"},{b:\"^( {4}|\t)\",e:\"$\",r:0}]},{cN:\"horizontal_rule\",b:\"^[-\\\\*]{3,}\",e:\"$\"},{b:\"\\\\[.+?\\\\][\\\\(\\\\[].*?[\\\\)\\\\]]\",rB:!0,c:[{cN:\"link_label\",b:\"\\\\[\",e:\"\\\\]\",eB:!0,rE:!0,r:0},{cN:\"link_url\",b:\"\\\\]\\\\(\",e:\"\\\\)\",eB:!0,eE:!0},{cN:\"link_reference\",b:\"\\\\]\\\\[\",e:\"\\\\]\",eB:!0,eE:!0}],r:10},{b:\"^\\\\[.+\\\\]:\",rB:!0,c:[{cN:\"link_reference\",b:\"\\\\[\",e:\"\\\\]:\",eB:!0,eE:!0,starts:{cN:\"link_url\",e:\"$\"}}]}]}});hljs.registerLanguage(\"xml\",function(){var t=\"[A-Za-z0-9\\\\._:-]+\",e={b:/<\\?(php)?(?!\\w)/,e:/\\?>/,sL:\"php\",subLanguageMode:\"continuous\"},c={eW:!0,i:/</,r:0,c:[e,{cN:\"attribute\",b:t,r:0},{b:\"=\",r:0,c:[{cN:\"value\",c:[e],v:[{b:/\"/,e:/\"/},{b:/'/,e:/'/},{b:/[^\\s\\/>]+/}]}]}]};return{aliases:[\"html\",\"xhtml\",\"rss\",\"atom\",\"xsl\",\"plist\"],cI:!0,c:[{cN:\"doctype\",b:\"<!DOCTYPE\",e:\">\",r:10,c:[{b:\"\\\\[\",e:\"\\\\]\"}]},{cN:\"comment\",b:\"<!--\",e:\"-->\",r:10},{cN:\"cdata\",b:\"<\\\\!\\\\[CDATA\\\\[\",e:\"\\\\]\\\\]>\",r:10},{cN:\"tag\",b:\"<style(?=\\\\s|>|$)\",e:\">\",k:{title:\"style\"},c:[c],starts:{e:\"</style>\",rE:!0,sL:\"css\"}},{cN:\"tag\",b:\"<script(?=\\\\s|>|$)\",e:\">\",k:{title:\"script\"},c:[c],starts:{e:\"</script>\",rE:!0,sL:\"javascript\"}},e,{cN:\"pi\",b:/<\\?\\w+/,e:/\\?>/,r:10},{cN:\"tag\",b:\"</?\",e:\"/?>\",c:[{cN:\"title\",b:/[^ \\/><\\n\\t]+/,r:0},c]}]}});hljs.registerLanguage(\"http\",function(){return{i:\"\\\\S\",c:[{cN:\"status\",b:\"^HTTP/[0-9\\\\.]+\",e:\"$\",c:[{cN:\"number\",b:\"\\\\b\\\\d{3}\\\\b\"}]},{cN:\"request\",b:\"^[A-Z]+ (.*?) HTTP/[0-9\\\\.]+$\",rB:!0,e:\"$\",c:[{cN:\"string\",b:\" \",e:\" \",eB:!0,eE:!0}]},{cN:\"attribute\",b:\"^\\\\w\",e:\": \",eE:!0,i:\"\\\\n|\\\\s|=\",starts:{cN:\"string\",e:\"$\"}},{b:\"\\\\n\\\\n\",starts:{sL:\"\",eW:!0}}]}});hljs.registerLanguage(\"json\",function(e){var t={literal:\"true false null\"},i=[e.QSM,e.CNM],l={cN:\"value\",e:\",\",eW:!0,eE:!0,c:i,k:t},c={b:\"{\",e:\"}\",c:[{cN:\"attribute\",b:'\\\\s*\"',e:'\"\\\\s*:\\\\s*',eB:!0,eE:!0,c:[e.BE],i:\"\\\\n\",starts:l}],i:\"\\\\S\"},n={b:\"\\\\[\",e:\"\\\\]\",c:[e.inherit(l,{cN:null})],i:\"\\\\S\"};return i.splice(i.length,0,c,n),{c:i,k:t,i:\"\\\\S\"}});"
  },
  {
    "path": "app/Resources/assets/js/jquery-2.1.4.js",
    "content": "/*!\n * jQuery JavaScript Library v2.1.4\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2015-04-28T16:01Z\n */\n\n(function( global, factory ) {\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n}(typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Support: Firefox 18+\n// Can't be in strict mode, several libs including ASP.NET trace\n// the stack via arguments.caller.callee and Firefox dies if\n// you try to trace through \"use strict\" call chains. (#13335)\n//\n\nvar arr = [];\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar support = {};\n\n\n\nvar\n\t// Use the correct document accordingly with window argument (sandbox)\n\tdocument = window.document,\n\n\tversion = \"2.1.4\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android<4.1\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num != null ?\n\n\t\t\t// Return just the one element from the set\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\n\n\t\t\t// Return all the elements in a clean array\n\t\t\tslice.call( this );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\t\tret.context = this.context;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray,\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t// adding 1 corrects loss of precision from parseFloat (#15100)\n\t\treturn !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0;\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Not plain objects:\n\t\t// - Any object or value whose internal [[Class]] property is not \"[object Object]\"\n\t\t// - DOM nodes\n\t\t// - window\n\t\tif ( jQuery.type( obj ) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call( obj.constructor.prototype, \"isPrototypeOf\" ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// If the function hasn't returned already, we're confident that\n\t\t// |obj| is a plain object, created by {} or constructed with new Object\n\t\treturn true;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + \"\";\n\t\t}\n\t\t// Support: Android<4.0, iOS<6 (functionish RegExp)\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ toString.call(obj) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code ) {\n\t\tvar script,\n\t\t\tindirect = eval;\n\n\t\tcode = jQuery.trim( code );\n\n\t\tif ( code ) {\n\t\t\t// If the code includes a valid, prologue position\n\t\t\t// strict mode pragma, execute code by injecting a\n\t\t\t// script tag into the document.\n\t\t\tif ( code.indexOf(\"use strict\") === 1 ) {\n\t\t\t\tscript = document.createElement(\"script\");\n\t\t\t\tscript.text = code;\n\t\t\t\tdocument.head.appendChild( script ).parentNode.removeChild( script );\n\t\t\t} else {\n\t\t\t// Otherwise, avoid the DOM node creation, insertion\n\t\t\t// and removal by using an indirect global eval\n\t\t\t\tindirect( code );\n\t\t\t}\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Support: IE9-11+\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( obj, callback, args ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = obj.length,\n\t\t\tisArray = isArraylike( obj );\n\n\t\tif ( args ) {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android<4.1\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArraylike( Object(arr) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tisArray = isArraylike( elems ),\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArray ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar tmp, args, proxy;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: Date.now,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n});\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nfunction isArraylike( obj ) {\n\n\t// Support: iOS 8.2 (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = \"length\" in obj && obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\tif ( obj.nodeType === 1 && length ) {\n\t\treturn true;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.2.0-pre\n * http://sizzlejs.com/\n *\n * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2014-12-16\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// General-purpose constants\n\tMAX_NEGATIVE = 1 << 31,\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// http://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\t// http://www.w3.org/TR/css3-syntax/#characters\n\tcharacterEncoding = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Loosely modeled on CSS identifier characters\n\t// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\t// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = characterEncoding.replace( \"w\", \"w#\" ),\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + characterEncoding + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + characterEncoding + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + characterEncoding + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + characterEncoding + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + characterEncoding.replace( \"w\", \"w*\" ) + \")\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\trescape = /'|\\\\/g,\n\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t};\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar match, elem, m, nodeType,\n\t\t// QSA vars\n\t\ti, groups, old, nid, newContext, newSelector;\n\n\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\n\tcontext = context || document;\n\tresults = results || [];\n\tnodeType = context.nodeType;\n\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\tif ( !seed && documentIsHTML ) {\n\n\t\t// Try to shortcut find operations when possible (e.g., not under DocumentFragment)\n\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\tif ( (m = match[1]) ) {\n\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\telem = context.getElementById( m );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document (jQuery #6963)\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE, Opera, and Webkit return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Context is not a document\n\t\t\t\t\tif ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&\n\t\t\t\t\t\tcontains( context, elem ) && elem.id === m ) {\n\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\treturn results;\n\n\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName ) {\n\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\n\t\t// QSA path\n\t\tif ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\t\t\tnid = old = expando;\n\t\t\tnewContext = context;\n\t\t\tnewSelector = nodeType !== 1 && selector;\n\n\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t// IE 8 doesn't work on object elements\n\t\t\tif ( nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\tgroups = tokenize( selector );\n\n\t\t\t\tif ( (old = context.getAttribute(\"id\")) ) {\n\t\t\t\t\tnid = old.replace( rescape, \"\\\\$&\" );\n\t\t\t\t} else {\n\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t}\n\t\t\t\tnid = \"[id='\" + nid + \"'] \";\n\n\t\t\t\ti = groups.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tgroups[i] = nid + toSelector( groups[i] );\n\t\t\t\t}\n\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;\n\t\t\t\tnewSelector = groups.join(\",\");\n\t\t\t}\n\n\t\t\tif ( newSelector ) {\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch(qsaError) {\n\t\t\t\t} finally {\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.removeAttribute(\"id\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {Function(string, Object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement(\"div\");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\t// release memory in IE\n\t\tdiv = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = attrs.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, parent,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// If no document and documentElement is available, return\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Set our document\n\tdocument = doc;\n\tdocElem = doc.documentElement;\n\tparent = doc.defaultView;\n\n\t// Support: IE>8\n\t// If iframe document is assigned to \"document\" variable and if iframe has been reloaded,\n\t// IE will throw \"permission denied\" error when accessing \"document\" variable, see jQuery #13936\n\t// IE6-8 do not support the defaultView property so parent will be undefined\n\tif ( parent && parent !== parent.top ) {\n\t\t// IE11 does not have attachEvent, so all must suffer\n\t\tif ( parent.addEventListener ) {\n\t\t\tparent.addEventListener( \"unload\", unloadHandler, false );\n\t\t} else if ( parent.attachEvent ) {\n\t\t\tparent.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Support tests\n\t---------------------------------------------------------------------- */\n\tdocumentIsHTML = !isXML( doc );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( div ) {\n\t\tdiv.className = \"i\";\n\t\treturn !div.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( div ) {\n\t\tdiv.appendChild( doc.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( doc.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !doc.getElementsByName || !doc.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [ m ] : [];\n\t\t\t}\n\t\t};\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find[\"ID\"];\n\n\t\tExpr.filter[\"ID\"] =  function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See http://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( div ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\f]' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( div.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+\n\t\t\tif ( !div.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibing-combinator selector` fails\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = doc.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( div.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tdiv.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( div ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( div, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully does not implement inclusive descendent\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === doc ? -1 :\n\t\t\t\tb === doc ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn doc;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, diff, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || (parent[ expando ] = {});\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[0] === dirruns && cache[1];\n\t\t\t\t\t\t\tdiff = cache[0] === dirruns && cache[2];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {\n\t\t\t\t\t\t\tdiff = cache[1];\n\n\t\t\t\t\t\t// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\tif ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {\n\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t//   but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\t\t\t\t\t\tif ( (oldCache = outerCache[ dir ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ dir ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context !== document && context;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Keep `i` a string if there are no elements so `matchedCount` will be \"00\" below\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\tmatchedCount += i;\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n *  selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n *  selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is no seed and only one group\n\tif ( match.length === 1 ) {\n\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\trsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\treturn div.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( div ) {\n\tdiv.innerHTML = \"<input/>\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( div ) {\n\treturn div.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.pseudos;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = (/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/);\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t});\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t});\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( indexOf.call( qualifier, elem ) >= 0 ) !== not;\n\t});\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t}));\n};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tlen = this.length,\n\t\t\tret = [],\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}) );\n\t\t}\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], false) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], true) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n});\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\tinit = jQuery.fn.init = function( selector, context ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[0] === \"<\" && selector[ selector.length - 1 ] === \">\" && selector.length >= 3 ) {\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[1],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Support: Blackberry 4.6\n\t\t\t\t\t// gEBID returns nodes no longer in the document (#6963)\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || rootjQuery ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn typeof rootjQuery.ready !== \"undefined\" ?\n\t\t\t\trootjQuery.ready( selector ) :\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.extend({\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\ttruncate = until !== undefined;\n\n\t\twhile ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tmatched.push( elem );\n\t\t\t}\n\t\t}\n\t\treturn matched;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar matched = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tmatched.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn matched;\n\t}\n});\n\njQuery.fn.extend({\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter(function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tfor ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && (pos ?\n\t\t\t\t\tpos.index(cur) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector(cur, selectors)) ) {\n\n\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.unique(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter(selector)\n\t\t);\n\t}\n});\n\nfunction sibling( cur, dir ) {\n\twhile ( (cur = cur[dir]) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn elem.contentDocument || jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.unique( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n});\nvar rnotwhite = (/\\S+/g);\n\n\n\n// String to Object options format cache\nvar optionsCache = {};\n\n// Convert String-formatted options into Object-formatted ones and store in cache\nfunction createOptions( options ) {\n\tvar object = optionsCache[ options ] = {};\n\tjQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t});\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\t( optionsCache[ options ] || createOptions( options ) ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// Flag to know if list is currently firing\n\t\tfiring,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = !options.once && [],\n\t\t// Fire callbacks\n\t\tfire = function( data ) {\n\t\t\tmemory = options.memory && data;\n\t\t\tfired = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfiring = true;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {\n\t\t\t\t\tmemory = false; // To prevent further calls using add\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( stack.length ) {\n\t\t\t\t\t\tfire( stack.shift() );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t} else {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\t// First, we save the current length\n\t\t\t\t\tvar start = list.length;\n\t\t\t\t\t(function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tvar type = jQuery.type( arg );\n\t\t\t\t\t\t\tif ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && type !== \"string\" ) {\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t})( arguments );\n\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away\n\t\t\t\t\t} else if ( memory ) {\n\t\t\t\t\t\tfiringStart = start;\n\t\t\t\t\t\tfire( memory );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\t\tvar index;\n\t\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\t\tlist.splice( index, 1 );\n\t\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\tif ( index <= firingLength ) {\n\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\tfiringLength = 0;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( list && ( !fired || stack ) ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tstack.push( args );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfire( args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks(\"memory\") ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[1] ](function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject )\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t}).promise();\n\t\t\t\t},\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[1] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(function() {\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ]\n\t\t\tdeferred[ tuple[0] ] = function() {\n\t\t\t\tdeferred[ tuple[0] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\tdeferred[ tuple[0] + \"With\" ] = list.fireWith;\n\t\t});\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred. If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\t\t\t\t\t} else if ( !( --remaining ) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// Add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject )\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// If we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n});\n\n\n// The deferred used on DOM ready\nvar readyList;\n\njQuery.fn.ready = function( fn ) {\n\t// Add the callback\n\tjQuery.ready.promise().done( fn );\n\n\treturn this;\n};\n\njQuery.extend({\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.triggerHandler ) {\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\tjQuery( document ).off( \"ready\" );\n\t\t}\n\t}\n});\n\n/**\n * The ready event handler and self cleanup method\n */\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed, false );\n\twindow.removeEventListener( \"load\", completed, false );\n\tjQuery.ready();\n}\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called after the browser event has already occurred.\n\t\t// We once tried to use readyState \"interactive\" here, but it caused issues like the one\n\t\t// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\tsetTimeout( jQuery.ready );\n\n\t\t} else {\n\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed, false );\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Kick off the DOM ready check even if the user does not\njQuery.ready.promise();\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\tjQuery.access( elems, fn, i, key[i], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn chainable ?\n\t\telems :\n\n\t\t// Gets\n\t\tbulk ?\n\t\t\tfn.call( elems ) :\n\t\t\tlen ? fn( elems[0], key ) : emptyGet;\n};\n\n\n/**\n * Determines whether an object can have data\n */\njQuery.acceptData = function( owner ) {\n\t// Accepts only:\n\t//  - Node\n\t//    - Node.ELEMENT_NODE\n\t//    - Node.DOCUMENT_NODE\n\t//  - Object\n\t//    - Any\n\t/* jshint -W018 */\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\nfunction Data() {\n\t// Support: Android<4,\n\t// Old WebKit does not have Object.preventExtensions/freeze method,\n\t// return new empty object instead with no [[set]] accessor\n\tObject.defineProperty( this.cache = {}, 0, {\n\t\tget: function() {\n\t\t\treturn {};\n\t\t}\n\t});\n\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\nData.accepts = jQuery.acceptData;\n\nData.prototype = {\n\tkey: function( owner ) {\n\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t// but we should not, see #8335.\n\t\t// Always return the key for a frozen object.\n\t\tif ( !Data.accepts( owner ) ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar descriptor = {},\n\t\t\t// Check if the owner object already has a cache key\n\t\t\tunlock = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !unlock ) {\n\t\t\tunlock = Data.uid++;\n\n\t\t\t// Secure it in a non-enumerable, non-writable property\n\t\t\ttry {\n\t\t\t\tdescriptor[ this.expando ] = { value: unlock };\n\t\t\t\tObject.defineProperties( owner, descriptor );\n\n\t\t\t// Support: Android<4\n\t\t\t// Fallback to a less secure definition\n\t\t\t} catch ( e ) {\n\t\t\t\tdescriptor[ this.expando ] = unlock;\n\t\t\t\tjQuery.extend( owner, descriptor );\n\t\t\t}\n\t\t}\n\n\t\t// Ensure the cache object\n\t\tif ( !this.cache[ unlock ] ) {\n\t\t\tthis.cache[ unlock ] = {};\n\t\t}\n\n\t\treturn unlock;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\t// There may be an unlock assigned to this node,\n\t\t\t// if there is no entry for this \"owner\", create one inline\n\t\t\t// and set the unlock as though an owner entry had always existed\n\t\t\tunlock = this.key( owner ),\n\t\t\tcache = this.cache[ unlock ];\n\n\t\t// Handle: [ owner, key, value ] args\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ data ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\t\t\t// Fresh assignments by object are shallow copied\n\t\t\tif ( jQuery.isEmptyObject( cache ) ) {\n\t\t\t\tjQuery.extend( this.cache[ unlock ], data );\n\t\t\t// Otherwise, copy the properties one-by-one to the cache object\n\t\t\t} else {\n\t\t\t\tfor ( prop in data ) {\n\t\t\t\t\tcache[ prop ] = data[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\t// Either a valid cache is found, or will be created.\n\t\t// New caches will be created and the unlock returned,\n\t\t// allowing direct access to the newly created\n\t\t// empty data object. A valid owner object must be provided.\n\t\tvar cache = this.cache[ this.key( owner ) ];\n\n\t\treturn key === undefined ?\n\t\t\tcache : cache[ key ];\n\t},\n\taccess: function( owner, key, value ) {\n\t\tvar stored;\n\t\t// In cases where either:\n\t\t//\n\t\t//   1. No key was specified\n\t\t//   2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t//   1. The entire cache object\n\t\t//   2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t((key && typeof key === \"string\") && value === undefined) ) {\n\n\t\t\tstored = this.get( owner, key );\n\n\t\t\treturn stored !== undefined ?\n\t\t\t\tstored : this.get( owner, jQuery.camelCase(key) );\n\t\t}\n\n\t\t// [*]When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t//   1. An object of properties\n\t\t//   2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i, name, camel,\n\t\t\tunlock = this.key( owner ),\n\t\t\tcache = this.cache[ unlock ];\n\n\t\tif ( key === undefined ) {\n\t\t\tthis.cache[ unlock ] = {};\n\n\t\t} else {\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( jQuery.isArray( key ) ) {\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = key.concat( key.map( jQuery.camelCase ) );\n\t\t\t} else {\n\t\t\t\tcamel = jQuery.camelCase( key );\n\t\t\t\t// Try the string as a key before any manipulation\n\t\t\t\tif ( key in cache ) {\n\t\t\t\t\tname = [ key, camel ];\n\t\t\t\t} else {\n\t\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\t\tname = camel;\n\t\t\t\t\tname = name in cache ?\n\t\t\t\t\t\t[ name ] : ( name.match( rnotwhite ) || [] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ti = name.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ name[ i ] ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\treturn !jQuery.isEmptyObject(\n\t\t\tthis.cache[ owner[ this.expando ] ] || {}\n\t\t);\n\t},\n\tdiscard: function( owner ) {\n\t\tif ( owner[ this.expando ] ) {\n\t\t\tdelete this.cache[ owner[ this.expando ] ];\n\t\t}\n\t}\n};\nvar data_priv = new Data();\n\nvar data_user = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdata_user.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend({\n\thasData: function( elem ) {\n\t\treturn data_user.hasData( elem ) || data_priv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn data_user.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdata_user.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to data_priv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn data_priv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdata_priv.remove( elem, name );\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = data_user.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !data_priv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE11+\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice(5) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdata_priv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tdata_user.set( this, key );\n\t\t\t});\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data,\n\t\t\t\tcamelKey = jQuery.camelCase( key );\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// with the key as-is\n\t\t\t\tdata = data_user.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// with the key camelized\n\t\t\t\tdata = data_user.get( elem, camelKey );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, camelKey, undefined );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each(function() {\n\t\t\t\t// First, attempt to store a copy or reference of any\n\t\t\t\t// data that might've been store with a camelCased key.\n\t\t\t\tvar data = data_user.get( this, camelKey );\n\n\t\t\t\t// For HTML5 data-* attribute interop, we have to\n\t\t\t\t// store property names with dashes in a camelCase form.\n\t\t\t\t// This might not apply to all properties...*\n\t\t\t\tdata_user.set( this, camelKey, value );\n\n\t\t\t\t// *... In the case of properties that might _actually_\n\t\t\t\t// have dashes, we need to also store a copy of that\n\t\t\t\t// unchanged property.\n\t\t\t\tif ( key.indexOf(\"-\") !== -1 && data !== undefined ) {\n\t\t\t\t\tdata_user.set( this, key, value );\n\t\t\t\t}\n\t\t\t});\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tdata_user.remove( this, key );\n\t\t});\n\t}\n});\n\n\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = data_priv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray( data ) ) {\n\t\t\t\t\tqueue = data_priv.access( elem, type, jQuery.makeArray(data) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn data_priv.get( elem, key ) || data_priv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks(\"once memory\").add(function() {\n\t\t\t\tdata_priv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t})\n\t\t});\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = data_priv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n});\nvar pnum = (/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/).source;\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHidden = function( elem, el ) {\n\t\t// isHidden might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" || !jQuery.contains( elem.ownerDocument, elem );\n\t};\n\nvar rcheckableType = (/^(?:checkbox|radio)$/i);\n\n\n\n(function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Safari<=5.1\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Safari<=5.1, Android<4.2\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE<=11+\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n})();\nvar strundefined = typeof undefined;\n\n\n\nsupport.focusinBubbles = \"onfocusin\" in window;\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)$/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = data_priv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !(events = elemData.events) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !(eventHandle = elemData.handle) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tmp[1];\n\t\t\tnamespaces = ( tmp[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend({\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join(\".\")\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !(handlers = events[ type ]) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = data_priv.hasData( elem ) && data_priv.get( elem );\n\n\t\tif ( !elemData || !(events = elemData.events) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tmp[1];\n\t\t\tnamespaces = ( tmp[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[2] && new RegExp( \"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdelete elemData.handle;\n\t\t\tdata_priv.remove( elem, \"events\" );\n\t\t}\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split(\".\") : [];\n\n\t\tcur = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf(\".\") >= 0 ) {\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf(\":\") < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join(\".\");\n\t\tevent.namespace_re = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === (elem.ownerDocument || document) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {\n\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( data_priv.get( cur, \"events\" ) || {} )[ event.type ] && data_priv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && jQuery.acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&\n\t\t\t\tjQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\telem[ type ]();\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event );\n\n\t\tvar i, j, ret, matched, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\targs = slice.call( arguments ),\n\t\t\thandlers = ( data_priv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[0] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )\n\t\t\t\t\t\t\t.apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( (event.result = ret) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, matches, sel, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\t// Black-hole SVG <use> instance trees (#13180)\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && cur.nodeType && (!event.button || event.type !== \"click\") ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.disabled !== true || event.type !== \"click\" ) {\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) >= 0 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, handlers: matches });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: \"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: \"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\t\t\tvar eventDoc, doc, body,\n\t\t\t\tbutton = original.button;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: Cordova 2.5 (WebKit) (#13255)\n\t\t// All events should have a target; Cordova deviceready doesn't\n\t\tif ( !event.target ) {\n\t\t\tevent.target = document;\n\t\t}\n\n\t\t// Support: Safari 6.0+, Chrome<28\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\tspecial: {\n\t\tload: {\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && jQuery.nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true,\n\t\t\t\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\njQuery.removeEvent = function( elem, type, handle ) {\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle, false );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !(this instanceof jQuery.Event) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\t\t\t\t// Support: Android<4.0\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && e.preventDefault ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && e.stopImmediatePropagation ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// Support: Chrome 15+\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mousenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || (related !== target && !jQuery.contains( target, related )) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n});\n\n// Support: Firefox, Chrome, Safari\n// Create \"bubbling\" focus and blur events\nif ( !support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = data_priv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdata_priv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = data_priv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdata_priv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdata_priv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar origFn, type;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) {\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t});\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[0];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n});\n\n\nvar\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\trtagName = /<([\\w:]+)/,\n\trhtml = /<|&#?\\w+;/,\n\trnoInnerhtml = /<(?:script|style|link)/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /^$|\\/(?:java|ecma)script/i,\n\trscriptTypeMasked = /^true\\/(.*)/,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g,\n\n\t// We have to close these tags to support XHTML (#13200)\n\twrapMap = {\n\n\t\t// Support: IE9\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\n// Support: IE9\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: 1.x compatibility\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName(\"tbody\")[0] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement(\"tbody\") ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = (elem.getAttribute(\"type\") !== null) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\n\tif ( match ) {\n\t\telem.type = match[ 1 ];\n\t} else {\n\t\telem.removeAttribute(\"type\");\n\t}\n\n\treturn elem;\n}\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdata_priv.set(\n\t\t\telems[ i ], \"globalEval\", !refElements || data_priv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( data_priv.hasData( src ) ) {\n\t\tpdataOld = data_priv.access( src );\n\t\tpdataCur = data_priv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( data_user.hasData( src ) ) {\n\t\tudataOld = data_user.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdata_user.set( dest, udataCur );\n\t}\n}\n\nfunction getAll( context, tag ) {\n\tvar ret = context.getElementsByTagName ? context.getElementsByTagName( tag || \"*\" ) :\n\t\t\tcontext.querySelectorAll ? context.querySelectorAll( tag || \"*\" ) :\n\t\t\t[];\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], ret ) :\n\t\tret;\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tbuildFragment: function( elems, context, scripts, selection ) {\n\t\tvar elem, tmp, tag, wrap, contains, j,\n\t\t\tfragment = context.createDocumentFragment(),\n\t\t\tnodes = [],\n\t\t\ti = 0,\n\t\t\tl = elems.length;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\telem = elems[ i ];\n\n\t\t\tif ( elem || elem === 0 ) {\n\n\t\t\t\t// Add nodes directly\n\t\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\t\t\t\t\t// Support: QtWebKit, PhantomJS\n\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t\t// Convert non-html into a text node\n\t\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t\t// Convert html into DOM nodes\n\t\t\t\t} else {\n\t\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement(\"div\") );\n\n\t\t\t\t\t// Deserialize a standard representation\n\t\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\t\ttmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, \"<$1></$2>\" ) + wrap[ 2 ];\n\n\t\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\t\tj = wrap[ 0 ];\n\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: QtWebKit, PhantomJS\n\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t\t// Remember the top-level container\n\t\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\t\ttmp.textContent = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Remove wrapper from fragment\n\t\tfragment.textContent = \"\";\n\n\t\ti = 0;\n\t\twhile ( (elem = nodes[ i++ ]) ) {\n\n\t\t\t// #4087 - If origin and destination elements are the same, and this is\n\t\t\t// that element, do not do anything\n\t\t\tif ( selection && jQuery.inArray( elem, selection ) !== -1 ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t\t// Append to fragment\n\t\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t\t// Preserve script evaluation history\n\t\t\tif ( contains ) {\n\t\t\t\tsetGlobalEval( tmp );\n\t\t\t}\n\n\t\t\t// Capture executables\n\t\t\tif ( scripts ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (elem = tmp[ j++ ]) ) {\n\t\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\t\tscripts.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn fragment;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type, key,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = elems[ i ]) !== undefined; i++ ) {\n\t\t\tif ( jQuery.acceptData( elem ) ) {\n\t\t\t\tkey = elem[ data_priv.expando ];\n\n\t\t\t\tif ( key && (data = data_priv.cache[ key ]) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( data_priv.cache[ key ] ) {\n\t\t\t\t\t\t// Discard any remaining `private` data\n\t\t\t\t\t\tdelete data_priv.cache[ key ];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Discard any remaining `user` data\n\t\t\tdelete data_user.cache[ elem[ data_user.expando ] ];\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each(function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t});\n\t},\n\n\tafter: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t});\n\t},\n\n\tremove: function( selector, keepData /* Internal Use Only */ ) {\n\t\tvar elem,\n\t\t\telems = selector ? jQuery.filter( selector, this ) : this,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem ) );\n\t\t\t}\n\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\tif ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\t\tsetGlobalEval( getAll( elem, \"script\" ) );\n\t\t\t\t}\n\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map(function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1></$2>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar arg = arguments[ 0 ];\n\n\t\t// Make the changes, replacing each context element with the new content\n\t\tthis.domManip( arguments, function( elem ) {\n\t\t\targ = this.parentNode;\n\n\t\t\tjQuery.cleanData( getAll( this ) );\n\n\t\t\tif ( arg ) {\n\t\t\t\targ.replaceChild( elem, this );\n\t\t\t}\n\t\t});\n\n\t\t// Force removal if there was no new content (e.g., from empty arguments)\n\t\treturn arg && (arg.length || arg.nodeType) ? this : this.remove();\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, callback ) {\n\n\t\t// Flatten any nested arrays\n\t\targs = concat.apply( [], args );\n\n\t\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tset = this,\n\t\t\tiNoClone = l - 1,\n\t\t\tvalue = args[ 0 ],\n\t\t\tisFunction = jQuery.isFunction( value );\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( isFunction ||\n\t\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\t\treturn this.each(function( index ) {\n\t\t\t\tvar self = set.eq( index );\n\t\t\t\tif ( isFunction ) {\n\t\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t\t}\n\t\t\t\tself.domManip( args, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( l ) {\n\t\t\tfragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );\n\t\t\tfirst = fragment.firstChild;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfragment = first;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\t\thasScripts = scripts.length;\n\n\t\t\t\t// Use the original fragment for the last item instead of the first because it can end up\n\t\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\tnode = fragment;\n\n\t\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\t\t\t// Support: QtWebKit\n\t\t\t\t\t\t\t// jQuery.merge because push.apply(_, arraylike) throws\n\t\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback.call( this[ i ], node, i );\n\t\t\t\t}\n\n\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t\t// Reenable scripts\n\t\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t\t!data_priv.access( node, \"globalEval\" ) && jQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\t\tif ( node.src ) {\n\t\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.globalEval( node.textContent.replace( rcleanScript, \"\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: QtWebKit\n\t\t\t// .get() because push.apply(_, arraylike) throws\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\n\n\nvar iframe,\n\telemdisplay = {};\n\n/**\n * Retrieve the actual display of a element\n * @param {String} name nodeName of the element\n * @param {Object} doc Document object\n */\n// Called only from within defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar style,\n\t\telem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\n\t\t// getDefaultComputedStyle might be reliably used only on attached element\n\t\tdisplay = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?\n\n\t\t\t// Use of this method is a temporary fix (more like optimization) until something better comes along,\n\t\t\t// since it was removed from specification and supported only in FF\n\t\t\tstyle.display : jQuery.css( elem[ 0 ], \"display\" );\n\n\t// We don't have any data stored on the element,\n\t// so use \"detach\" method as fast way to get rid of the element\n\telem.detach();\n\n\treturn display;\n}\n\n/**\n * Try to determine the default display value of an element\n * @param {String} nodeName\n */\nfunction defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = (iframe || jQuery( \"<iframe frameborder='0' width='0' height='0'/>\" )).appendTo( doc.documentElement );\n\n\t\t\t// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse\n\t\t\tdoc = iframe[ 0 ].contentDocument;\n\n\t\t\t// Support: IE\n\t\t\tdoc.write();\n\t\t\tdoc.close();\n\n\t\t\tdisplay = actualDisplay( nodeName, doc );\n\t\t\tiframe.detach();\n\t\t}\n\n\t\t// Store the correct default display\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn display;\n}\nvar rmargin = (/^margin/);\n\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\t\t// Support: IE<=11+, Firefox<=30+ (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tif ( elem.ownerDocument.defaultView.opener ) {\n\t\t\treturn elem.ownerDocument.defaultView.getComputedStyle( elem, null );\n\t\t}\n\n\t\treturn window.getComputedStyle( elem, null );\n\t};\n\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// Support: IE9\n\t// getPropertyValue is only needed for .css('filter') (#12537)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\t}\n\n\tif ( computed ) {\n\n\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// Support: iOS < 6\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// iOS < 6 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels\n\t\t// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values\n\t\tif ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\t\t// Support: IE\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn (this.get = hookFn).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\n(function() {\n\tvar pixelPositionVal, boxSizingReliableVal,\n\t\tdocElem = document.documentElement,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE9-11+\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tcontainer.style.cssText = \"border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;\" +\n\t\t\"position:absolute\";\n\tcontainer.appendChild( div );\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computePixelPositionAndBoxSizingReliable() {\n\t\tdiv.style.cssText =\n\t\t\t// Support: Firefox<29, Android 2.3\n\t\t\t// Vendor-prefix box-sizing\n\t\t\t\"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;\" +\n\t\t\t\"box-sizing:border-box;display:block;margin-top:1%;top:1%;\" +\n\t\t\t\"border:1px;padding:1px;width:4px;position:absolute\";\n\t\tdiv.innerHTML = \"\";\n\t\tdocElem.appendChild( container );\n\n\t\tvar divStyle = window.getComputedStyle( div, null );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\t\tboxSizingReliableVal = divStyle.width === \"4px\";\n\n\t\tdocElem.removeChild( container );\n\t}\n\n\t// Support: node.js jsdom\n\t// Don't assume that getComputedStyle is a property of the global object\n\tif ( window.getComputedStyle ) {\n\t\tjQuery.extend( support, {\n\t\t\tpixelPosition: function() {\n\n\t\t\t\t// This test is executed only once but we still do memoizing\n\t\t\t\t// since we can use the boxSizingReliable pre-computing.\n\t\t\t\t// No need to check if the test was already performed, though.\n\t\t\t\tcomputePixelPositionAndBoxSizingReliable();\n\t\t\t\treturn pixelPositionVal;\n\t\t\t},\n\t\t\tboxSizingReliable: function() {\n\t\t\t\tif ( boxSizingReliableVal == null ) {\n\t\t\t\t\tcomputePixelPositionAndBoxSizingReliable();\n\t\t\t\t}\n\t\t\t\treturn boxSizingReliableVal;\n\t\t\t},\n\t\t\treliableMarginRight: function() {\n\n\t\t\t\t// Support: Android 2.3\n\t\t\t\t// Check if div with explicit width and no margin-right incorrectly\n\t\t\t\t// gets computed margin-right based on width of container. (#3333)\n\t\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t\t// This support function is only executed once so no memoizing is needed.\n\t\t\t\tvar ret,\n\t\t\t\t\tmarginDiv = div.appendChild( document.createElement( \"div\" ) );\n\n\t\t\t\t// Reset CSS: box-sizing; display; margin; border; padding\n\t\t\t\tmarginDiv.style.cssText = div.style.cssText =\n\t\t\t\t\t// Support: Firefox<29, Android 2.3\n\t\t\t\t\t// Vendor-prefix box-sizing\n\t\t\t\t\t\"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;\" +\n\t\t\t\t\t\"box-sizing:content-box;display:block;margin:0;border:0;padding:0\";\n\t\t\t\tmarginDiv.style.marginRight = marginDiv.style.width = \"0\";\n\t\t\t\tdiv.style.width = \"1px\";\n\t\t\t\tdocElem.appendChild( container );\n\n\t\t\t\tret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight );\n\n\t\t\t\tdocElem.removeChild( container );\n\t\t\t\tdiv.removeChild( marginDiv );\n\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t});\n\t}\n})();\n\n\n// A method for quickly swapping in/out CSS properties to get correct calculations.\njQuery.swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar\n\t// Swappable if display is none or starts with table except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trnumsplit = new RegExp( \"^(\" + pnum + \")(.*)$\", \"i\" ),\n\trrelNum = new RegExp( \"^([+-])=(\" + pnum + \")\", \"i\" ),\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t},\n\n\tcssPrefixes = [ \"Webkit\", \"O\", \"Moz\", \"ms\" ];\n\n// Return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( style, name ) {\n\n\t// Shortcut for names that are not vendor prefixed\n\tif ( name in style ) {\n\t\treturn name;\n\t}\n\n\t// Check for vendor prefixed names\n\tvar capName = name[0].toUpperCase() + name.slice(1),\n\t\torigName = name,\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in style ) {\n\t\t\treturn name;\n\t\t}\n\t}\n\n\treturn origName;\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\tvar matches = rnumsplit.exec( value );\n\treturn matches ?\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {\n\tvar i = extra === ( isBorderBox ? \"border\" : \"content\" ) ?\n\t\t// If we already have the right measurement, avoid augmentation\n\t\t4 :\n\t\t// Otherwise initialize for horizontal or vertical properties\n\t\tname === \"width\" ? 1 : 0,\n\n\t\tval = 0;\n\n\tfor ( ; i < 4; i += 2 ) {\n\t\t// Both box models exclude margin, so add it if we want it\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\tif ( isBorderBox ) {\n\t\t\t// border-box includes padding, so remove it if we want content\n\t\t\tif ( extra === \"content\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// At this point, extra isn't border nor margin, so remove border\n\t\t\tif ( extra !== \"margin\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t} else {\n\t\t\t// At this point, extra isn't content, so add padding\n\t\t\tval += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// At this point, extra isn't content nor padding, so add border\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val;\n}\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with offset property, which is equivalent to the border-box value\n\tvar valueIsBorderBox = true,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight,\n\t\tstyles = getStyles( elem ),\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t// Some non-html elements return undefined for offsetWidth, so check for null/undefined\n\t// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285\n\t// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668\n\tif ( val <= 0 || val == null ) {\n\t\t// Fall back to computed then uncomputed css if necessary\n\t\tval = curCSS( elem, name, styles );\n\t\tif ( val < 0 || val == null ) {\n\t\t\tval = elem.style[ name ];\n\t\t}\n\n\t\t// Computed unit is not pixels. Stop here and return.\n\t\tif ( rnumnonpx.test(val) ) {\n\t\t\treturn val;\n\t\t}\n\n\t\t// Check for style in case a browser which returns unreliable values\n\t\t// for getComputedStyle silently falls back to the reliable elem.style\n\t\tvalueIsBorderBox = isBorderBox &&\n\t\t\t( support.boxSizingReliable() || val === elem.style[ name ] );\n\n\t\t// Normalize \"\", auto, and prepare for extra\n\t\tval = parseFloat( val ) || 0;\n\t}\n\n\t// Use the active box-sizing model to add/subtract irrelevant styles\n\treturn ( val +\n\t\taugmentWidthOrHeight(\n\t\t\telem,\n\t\t\tname,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles\n\t\t)\n\t) + \"px\";\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem, hidden,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tvalues[ index ] = data_priv.get( elem, \"olddisplay\" );\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t// being hidden by cascaded rules or not\n\t\t\tif ( !values[ index ] && display === \"none\" ) {\n\t\t\t\telem.style.display = \"\";\n\t\t\t}\n\n\t\t\t// Set elements which have been overridden with display: none\n\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t// for such an element\n\t\t\tif ( elem.style.display === \"\" && isHidden( elem ) ) {\n\t\t\t\tvalues[ index ] = data_priv.access( elem, \"olddisplay\", defaultDisplay(elem.nodeName) );\n\t\t\t}\n\t\t} else {\n\t\t\thidden = isHidden( elem );\n\n\t\t\tif ( display !== \"none\" || !hidden ) {\n\t\t\t\tdata_priv.set( elem, \"olddisplay\", hidden ? display : jQuery.css( elem, \"display\" ) );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of most of the elements in a second loop\n\t// to avoid the constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( !show || elem.style.display === \"none\" || elem.style.display === \"\" ) {\n\t\t\telem.style.display = show ? values[ index ] || \"\" : \"none\";\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.extend({\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t\"float\": \"cssFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style;\n\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && (ret = rrelNum.exec( value )) ) {\n\t\t\t\tvalue = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number, add 'px' to the (except for certain CSS properties)\n\t\t\tif ( type === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !(\"set\" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {\n\t\t\t\tstyle[ name ] = value;\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = jQuery.camelCase( name );\n\n\t\t// Make sure that we're working with the right name\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || jQuery.isNumeric( num ) ? num || 0 : val;\n\t\t}\n\t\treturn val;\n\t}\n});\n\njQuery.each([ \"height\", \"width\" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) && elem.offsetWidth === 0 ?\n\t\t\t\t\tjQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t}) :\n\t\t\t\t\tgetWidthOrHeight( elem, name, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar styles = extra && getStyles( elem );\n\t\t\treturn setPositiveNumber( elem, value, extra ?\n\t\t\t\taugmentWidthOrHeight(\n\t\t\t\t\telem,\n\t\t\t\t\tname,\n\t\t\t\t\textra,\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\t\tstyles\n\t\t\t\t) : 0\n\t\t\t);\n\t\t}\n\t};\n});\n\n// Support: Android 2.3\njQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn jQuery.swap( elem, { \"display\": \"inline-block\" },\n\t\t\t\tcurCSS, [ elem, \"marginRight\" ] );\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each({\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split(\" \") : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( !rmargin.test( prefix ) ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n});\n\njQuery.fn.extend({\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( jQuery.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t},\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( isHidden( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t});\n\t}\n});\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || \"swing\";\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\tif ( tween.elem[ tween.prop ] != null &&\n\t\t\t\t(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE9\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t}\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back Compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, timerId,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" ),\n\trrun = /queueHooks$/,\n\tanimationPrefilters = [ defaultPrefilter ],\n\ttweeners = {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value ),\n\t\t\t\ttarget = tween.cur(),\n\t\t\t\tparts = rfxnum.exec( value ),\n\t\t\t\tunit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t\t\t// Starting value computation is required for potential unit mismatches\n\t\t\t\tstart = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +target ) &&\n\t\t\t\t\trfxnum.exec( jQuery.css( tween.elem, prop ) ),\n\t\t\t\tscale = 1,\n\t\t\t\tmaxIterations = 20;\n\n\t\t\tif ( start && start[ 3 ] !== unit ) {\n\t\t\t\t// Trust units reported by jQuery.css\n\t\t\t\tunit = unit || start[ 3 ];\n\n\t\t\t\t// Make sure we update the tween properties later on\n\t\t\t\tparts = parts || [];\n\n\t\t\t\t// Iteratively approximate from a nonzero starting point\n\t\t\t\tstart = +target || 1;\n\n\t\t\t\tdo {\n\t\t\t\t\t// If previous iteration zeroed out, double until we get *something*.\n\t\t\t\t\t// Use string for doubling so we don't accidentally see scale as unchanged below\n\t\t\t\t\tscale = scale || \".5\";\n\n\t\t\t\t\t// Adjust and apply\n\t\t\t\t\tstart = start / scale;\n\t\t\t\t\tjQuery.style( tween.elem, prop, start + unit );\n\n\t\t\t\t// Update scale, tolerating zero or NaN from tween.cur(),\n\t\t\t\t// break the loop if scale is unchanged or perfect, or if we've just had enough\n\t\t\t\t} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );\n\t\t\t}\n\n\t\t\t// Update tween properties\n\t\t\tif ( parts ) {\n\t\t\t\tstart = tween.start = +start || +target || 0;\n\t\t\t\ttween.unit = unit;\n\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\ttween.end = parts[ 1 ] ?\n\t\t\t\t\tstart + ( parts[ 1 ] + 1 ) * parts[ 2 ] :\n\t\t\t\t\t+parts[ 2 ];\n\t\t\t}\n\n\t\t\treturn tween;\n\t\t} ]\n\t};\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\tsetTimeout(function() {\n\t\tfxNow = undefined;\n\t});\n\treturn ( fxNow = jQuery.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4 ; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( tweeners[ prop ] || [] ).concat( tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( (tween = collection[ index ].call( animation, prop, value )) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\t/* jshint validthis: true */\n\tvar prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHidden( elem ),\n\t\tdataShow = data_priv.get( elem, \"fxshow\" );\n\n\t// Handle queue: false promises\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always(function() {\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always(function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t// Height/width overflow pass\n\tif ( elem.nodeType === 1 && ( \"height\" in props || \"width\" in props ) ) {\n\t\t// Make sure that nothing sneaks out\n\t\t// Record all 3 overflow attributes because IE9-10 do not\n\t\t// change the overflow attribute when overflowX and\n\t\t// overflowY are set to the same value\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Set display property to inline-block for height/width\n\t\t// animations on inline elements that are having width/height animated\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\n\t\t// Test default display if display is currently \"none\"\n\t\tcheckDisplay = display === \"none\" ?\n\t\t\tdata_priv.get( elem, \"olddisplay\" ) || defaultDisplay( elem.nodeName ) : display;\n\n\t\tif ( checkDisplay === \"inline\" && jQuery.css( elem, \"float\" ) === \"none\" ) {\n\t\t\tstyle.display = \"inline-block\";\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always(function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t});\n\t}\n\n\t// show/hide pass\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.exec( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\n\t\t// Any non-fx value stops us from restoring the original display value\n\t\t} else {\n\t\t\tdisplay = undefined;\n\t\t}\n\t}\n\n\tif ( !jQuery.isEmptyObject( orig ) ) {\n\t\tif ( dataShow ) {\n\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\thidden = dataShow.hidden;\n\t\t\t}\n\t\t} else {\n\t\t\tdataShow = data_priv.access( elem, \"fxshow\", {} );\n\t\t}\n\n\t\t// Store state if its toggle - enables .stop().toggle() to \"reverse\"\n\t\tif ( toggle ) {\n\t\t\tdataShow.hidden = !hidden;\n\t\t}\n\t\tif ( hidden ) {\n\t\t\tjQuery( elem ).show();\n\t\t} else {\n\t\t\tanim.done(function() {\n\t\t\t\tjQuery( elem ).hide();\n\t\t\t});\n\t\t}\n\t\tanim.done(function() {\n\t\t\tvar prop;\n\n\t\t\tdata_priv.remove( elem, \"fxshow\" );\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t}\n\t\t});\n\t\tfor ( prop in orig ) {\n\t\t\ttween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\n\t\t\tif ( !( prop in dataShow ) ) {\n\t\t\t\tdataShow[ prop ] = tween.start;\n\t\t\t\tif ( hidden ) {\n\t\t\t\t\ttween.end = tween.start;\n\t\t\t\t\ttween.start = prop === \"width\" || prop === \"height\" ? 1 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t// If this is a noop like .hide().hide(), restore an overwritten display value\n\t} else if ( (display === \"none\" ? defaultDisplay( elem.nodeName ) : display) === \"inline\" ) {\n\t\tstyle.display = display;\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = jQuery.camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( jQuery.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = animationPrefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t}),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\t\t\t\t// Support: Android 2.3\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ]);\n\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t} else {\n\t\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tanimation = deferred.promise({\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, { specialEasing: {} }, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length ; index++ ) {\n\t\tresult = animationPrefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( jQuery.isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t})\n\t);\n\n\t// attach callbacks from options\n\treturn animation.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweener: function( props, callback ) {\n\t\tif ( jQuery.isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.split(\" \");\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length ; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\ttweeners[ prop ] = tweeners[ prop ] || [];\n\t\t\ttweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tanimationPrefilters.unshift( callback );\n\t\t} else {\n\t\t\tanimationPrefilters.push( callback );\n\t\t}\n\t}\n});\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tjQuery.isFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t};\n\n\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend({\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHidden ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate({ opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || data_priv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = data_priv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tvar index,\n\t\t\t\tdata = data_priv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t});\n\t}\n});\n\njQuery.each([ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n});\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx(\"show\"),\n\tslideUp: genFx(\"hide\"),\n\tslideToggle: genFx(\"toggle\"),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = jQuery.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\t\t// Checks the timer has not already been removed\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tif ( timer() ) {\n\t\tjQuery.fx.start();\n\t} else {\n\t\tjQuery.timers.pop();\n\t}\n};\n\njQuery.fx.interval = 13;\n\njQuery.fx.start = function() {\n\tif ( !timerId ) {\n\t\ttimerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );\n\t}\n};\n\njQuery.fx.stop = function() {\n\tclearInterval( timerId );\n\ttimerId = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\tclearTimeout( timeout );\n\t\t};\n\t});\n};\n\n\n(function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: iOS<=5.1, Android<=4.2+\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE<=11+\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: Android<=2.3\n\t// Options inside disabled selects are incorrectly marked as disabled\n\tselect.disabled = true;\n\tsupport.optDisabled = !opt.disabled;\n\n\t// Support: IE<=11+\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n})();\n\n\nvar nodeHook, boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tattr: function( elem, name, value ) {\n\t\tvar hooks, ret,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === strundefined ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// All attributes are lowercase\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\tname = name.toLowerCase();\n\t\t\thooks = jQuery.attrHooks[ name ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\n\t\t\t} else if ( hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t} else if ( hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\treturn ret;\n\n\t\t} else {\n\t\t\tret = jQuery.find.attr( elem, name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn ret == null ?\n\t\t\t\tundefined :\n\t\t\t\tret;\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name, propName,\n\t\t\ti = 0,\n\t\t\tattrNames = value && value.match( rnotwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( (name = attrNames[i++]) ) {\n\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n\n\t\t\t\t// Boolean attributes get special treatment (#10870)\n\t\t\t\tif ( jQuery.expr.match.bool.test( name ) ) {\n\t\t\t\t\t// Set corresponding property to false\n\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t}\n\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tjQuery.nodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle;\n\t\tif ( !isXML ) {\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ name ];\n\t\t\tattrHandle[ name ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tname.toLowerCase() :\n\t\t\t\tnull;\n\t\t\tattrHandle[ name ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n});\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i;\n\njQuery.fn.extend({\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each(function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t},\n\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\tif ( notxml ) {\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\treturn hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?\n\t\t\t\tret :\n\t\t\t\t( elem[ name ] = value );\n\n\t\t} else {\n\t\t\treturn hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ?\n\t\t\t\tret :\n\t\t\t\telem[ name ];\n\t\t}\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\t\t\t\treturn elem.hasAttribute( \"tabindex\" ) || rfocusable.test( elem.nodeName ) || elem.href ?\n\t\t\t\t\telem.tabIndex :\n\t\t\t\t\t-1;\n\t\t\t}\n\t\t}\n\t}\n});\n\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t};\n}\n\njQuery.each([\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n});\n\n\n\n\nvar rclass = /[\\t\\r\\n\\f]/g;\n\njQuery.fn.extend({\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, clazz, j, finalValue,\n\t\t\tproceed = typeof value === \"string\" && value,\n\t\t\ti = 0,\n\t\t\tlen = this.length;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, this.className ) );\n\t\t\t});\n\t\t}\n\n\t\tif ( proceed ) {\n\t\t\t// The disjunction here is for better compressibility (see removeClass)\n\t\t\tclasses = ( value || \"\" ).match( rnotwhite ) || [];\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\telem = this[ i ];\n\t\t\t\tcur = elem.nodeType === 1 && ( elem.className ?\n\t\t\t\t\t( \" \" + elem.className + \" \" ).replace( rclass, \" \" ) :\n\t\t\t\t\t\" \"\n\t\t\t\t);\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (clazz = classes[j++]) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = jQuery.trim( cur );\n\t\t\t\t\tif ( elem.className !== finalValue ) {\n\t\t\t\t\t\telem.className = finalValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, clazz, j, finalValue,\n\t\t\tproceed = arguments.length === 0 || typeof value === \"string\" && value,\n\t\t\ti = 0,\n\t\t\tlen = this.length;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, this.className ) );\n\t\t\t});\n\t\t}\n\t\tif ( proceed ) {\n\t\t\tclasses = ( value || \"\" ).match( rnotwhite ) || [];\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\telem = this[ i ];\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( elem.className ?\n\t\t\t\t\t( \" \" + elem.className + \" \" ).replace( rclass, \" \" ) :\n\t\t\t\t\t\"\"\n\t\t\t\t);\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (clazz = classes[j++]) ) {\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) >= 0 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = value ? jQuery.trim( cur ) : \"\";\n\t\t\t\t\tif ( elem.className !== finalValue ) {\n\t\t\t\t\t\telem.className = finalValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value;\n\n\t\tif ( typeof stateVal === \"boolean\" && type === \"string\" ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// Toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tclassNames = value.match( rnotwhite ) || [];\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( type === strundefined || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tdata_priv.set( this, \"__className__\", this.className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tthis.className = this.className || value === false ? \"\" : data_priv.get( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \",\n\t\t\ti = 0,\n\t\t\tl = this.length;\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tif ( this[i].nodeType === 1 && (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) >= 0 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n});\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend({\n\tval: function( value ) {\n\t\tvar hooks, ret, isFunction,\n\t\t\telem = this[0];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, \"value\" )) !== undefined ) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\treturn typeof ret === \"string\" ?\n\t\t\t\t\t// Handle most common string cases\n\t\t\t\t\tret.replace(rreturn, \"\") :\n\t\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\t\tret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.isFunction( value );\n\n\t\treturn this.each(function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( jQuery.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !(\"set\" in hooks) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\t\t\t\t\t// Support: IE10-11+\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\tjQuery.trim( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\" || index < 0,\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length,\n\t\t\t\t\ti = index < 0 ?\n\t\t\t\t\t\tmax :\n\t\t\t\t\t\tone ? index : 0;\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// IE6-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t( support.optDisabled ? !option.disabled : option.getAttribute( \"disabled\" ) === null ) &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\t\t\t\t\tif ( (option.selected = jQuery.inArray( option.value, values ) >= 0) ) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Radios and checkboxes getter/setter\njQuery.each([ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( jQuery.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t};\n\t}\n});\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error contextmenu\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n});\n\njQuery.fn.extend({\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t},\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ? this.off( selector, \"**\" ) : this.off( types, selector || \"**\", fn );\n\t}\n});\n\n\nvar nonce = jQuery.now();\n\nvar rquery = (/\\?/);\n\n\n\n// Support: Android 2.3\n// Workaround failure to string-cast null input\njQuery.parseJSON = function( data ) {\n\treturn JSON.parse( data + \"\" );\n};\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, tmp;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE9\n\ttry {\n\t\ttmp = new DOMParser();\n\t\txml = tmp.parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trhash = /#.*$/,\n\trts = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trurl = /^([\\w.+-]+:)(?:\\/\\/(?:[^\\/?#]*@|)([^\\/?#:]*)(?::(\\d+)|)|)/,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Document location\n\tajaxLocation = window.location.href,\n\n\t// Segment location into parts\n\tajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( (dataType = dataTypes[i++]) ) {\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[0] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t(structure[ dataType ] = structure[ dataType ] || []).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t(structure[ dataType ] = structure[ dataType ] || []).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t});\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader(\"Content-Type\");\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s[ \"throws\" ] ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn { state: \"parsererror\", error: conv ? e : \"No conversion from \" + prev + \" to \" + current };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks(\"once memory\"),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( (match = rheaders.exec( responseHeadersString )) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tvar lname = name.toLowerCase();\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\t// Lazy-add the new callback in a way that preserves old ones\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR ).complete = completeDeferred.add;\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || ajaxLocation ) + \"\" ).replace( rhash, \"\" )\n\t\t\t.replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || \"*\" ).toLowerCase().match( rnotwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when we have a protocol:host:port mismatch\n\t\tif ( s.crossDomain == null ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? \"80\" : \"443\" ) ) !==\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? \"80\" : \"443\" ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger(\"ajaxStart\");\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\tcacheURL = s.url;\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\tcacheURL = ( s.url += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data );\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\ts.url = rts.test( cacheURL ) ?\n\n\t\t\t\t\t// If there is already a '_' parameter, set its value\n\t\t\t\t\tcacheURL.replace( rts, \"$1_=\" + nonce++ ) :\n\n\t\t\t\t\t// Otherwise add one to the end\n\t\t\t\t\tcacheURL + ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + nonce++;\n\t\t\t}\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout(function() {\n\t\t\t\t\tjqXHR.abort(\"timeout\");\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader(\"Last-Modified\");\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader(\"etag\");\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger(\"ajaxStop\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n});\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t});\n\t};\n});\n\n\njQuery._evalUrl = function( url ) {\n\treturn jQuery.ajax({\n\t\turl: url,\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tasync: false,\n\t\tglobal: false,\n\t\t\"throws\": true\n\t});\n};\n\n\njQuery.fn.extend({\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery( this ).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[ 0 ] ) {\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\tvar isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each(function( i ) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t}\n});\n\n\njQuery.expr.filters.hidden = function( elem ) {\n\t// Support: Opera <= 12.12\n\t// Opera reports offsetWidths and offsetHeights less than zero on some elements\n\treturn elem.offsetWidth <= 0 && elem.offsetHeight <= 0;\n};\njQuery.expr.filters.visible = function( elem ) {\n\treturn !jQuery.expr.filters.hidden( elem );\n};\n\n\n\n\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( jQuery.isArray( obj ) ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && jQuery.type( obj ) === \"object\" ) {\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, value ) {\n\t\t\t// If value is a function, invoke it and return its value\n\t\t\tvalue = jQuery.isFunction( value ) ? value() : ( value == null ? \"\" : value );\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t};\n\n\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\tif ( traditional === undefined ) {\n\t\ttraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t});\n\n\t} else {\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" ).replace( r20, \"+\" );\n};\n\njQuery.fn.extend({\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map(function() {\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t})\n\t\t.filter(function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t})\n\t\t.map(function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val ) {\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new XMLHttpRequest();\n\t} catch( e ) {}\n};\n\nvar xhrId = 0,\n\txhrCallbacks = {},\n\txhrSuccessStatus = {\n\t\t// file protocol always yields status code 0, assume 200\n\t\t0: 200,\n\t\t// Support: IE9\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\n// Support: IE9\n// Open requests must be manually aborted on unload (#5280)\n// See https://support.microsoft.com/kb/2856746 for more info\nif ( window.attachEvent ) {\n\twindow.attachEvent( \"onunload\", function() {\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]();\n\t\t}\n\t});\n}\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport(function( options ) {\n\tvar callback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr(),\n\t\t\t\t\tid = ++xhrId;\n\n\t\t\t\txhr.open( options.type, options.url, options.async, options.username, options.password );\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\theaders[\"X-Requested-With\"] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tdelete xhrCallbacks[ id ];\n\t\t\t\t\t\t\tcallback = xhr.onload = xhr.onerror = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\t// file: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\t\t\t\t\t\t\t\t\t// Support: IE9\n\t\t\t\t\t\t\t\t\t// Accessing binary-data responseText throws an exception\n\t\t\t\t\t\t\t\t\t// (#11426)\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText === \"string\" ? {\n\t\t\t\t\t\t\t\t\t\ttext: xhr.responseText\n\t\t\t\t\t\t\t\t\t} : undefined,\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\txhr.onerror = callback(\"error\");\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = xhrCallbacks[ id ] = callback(\"abort\");\n\n\t\t\t\ttry {\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n});\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /(?:java|ecma)script/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n});\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery(\"<script>\").prop({\n\t\t\t\t\tasync: true,\n\t\t\t\t\tcharset: s.scriptCharset,\n\t\t\t\t\tsrc: s.url\n\t\t\t\t}).on(\n\t\t\t\t\t\"load error\",\n\t\t\t\t\tcallback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n});\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" && !( s.contentType || \"\" ).indexOf(\"application/x-www-form-urlencoded\") && rjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[\"script json\"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always(function() {\n\t\t\t// Restore preexisting value\n\t\t\twindow[ callbackName ] = overwritten;\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\t\t\t\t// make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t});\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n});\n\n\n\n\n// data: string of html\n// context (optional): If specified, the fragment will be created in this context, defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\tcontext = context || document;\n\n\tvar parsed = rsingleTag.exec( data ),\n\t\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[1] ) ];\n\t}\n\n\tparsed = jQuery.buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n// Keep a copy of the old load method\nvar _load = jQuery.fn.load;\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tif ( typeof url !== \"string\" && _load ) {\n\t\treturn _load.apply( this, arguments );\n\t}\n\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf(\" \");\n\n\tif ( off >= 0 ) {\n\t\tselector = jQuery.trim( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( jQuery.isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\n\t\t\t// if \"type\" variable is undefined, then \"GET\" method will be used\n\t\t\ttype: type,\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t}).done(function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery(\"<div>\").append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t}).complete( callback && function( jqXHR, status ) {\n\t\t\tself.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t});\n\t}\n\n\treturn this;\n};\n\n\n\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [ \"ajaxStart\", \"ajaxStop\", \"ajaxComplete\", \"ajaxError\", \"ajaxSuccess\", \"ajaxSend\" ], function( i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n});\n\n\n\n\njQuery.expr.filters.animated = function( elem ) {\n\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t}).length;\n};\n\n\n\n\nvar docElem = window.document.documentElement;\n\n/**\n * Gets a window from an element\n */\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;\n}\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf(\"auto\") > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend({\n\toffset: function( options ) {\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each(function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t});\n\t\t}\n\n\t\tvar docElem, win,\n\t\t\telem = this[ 0 ],\n\t\t\tbox = { top: 0, left: 0 },\n\t\t\tdoc = elem && elem.ownerDocument;\n\n\t\tif ( !doc ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdocElem = doc.documentElement;\n\n\t\t// Make sure it's not a disconnected DOM node\n\t\tif ( !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box;\n\t\t}\n\n\t\t// Support: BlackBerry 5, iOS 3 (original iPhone)\n\t\t// If we don't have gBCR, just use 0,0 rather than error\n\t\tif ( typeof elem.getBoundingClientRect !== strundefined ) {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t}\n\t\twin = getWindow( doc );\n\t\treturn {\n\t\t\ttop: box.top + win.pageYOffset - docElem.clientTop,\n\t\t\tleft: box.left + win.pageXOffset - docElem.clientLeft\n\t\t};\n\t},\n\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\t\t\t// Assume getBoundingClientRect is there when computed position is fixed\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\t// Get *real* offsetParent\n\t\t\toffsetParent = this.offsetParent();\n\n\t\t\t// Get correct offsets\n\t\t\toffset = this.offset();\n\t\t\tif ( !jQuery.nodeName( offsetParent[ 0 ], \"html\" ) ) {\n\t\t\t\tparentOffset = offsetParent.offset();\n\t\t\t}\n\n\t\t\t// Add offsetParent borders\n\t\t\tparentOffset.top += jQuery.css( offsetParent[ 0 ], \"borderTopWidth\", true );\n\t\t\tparentOffset.left += jQuery.css( offsetParent[ 0 ], \"borderLeftWidth\", true );\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || docElem;\n\n\t\t\twhile ( offsetParent && ( !jQuery.nodeName( offsetParent, \"html\" ) && jQuery.css( offsetParent, \"position\" ) === \"static\" ) ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || docElem;\n\t\t});\n\t}\n});\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\t\t\tvar win = getWindow( elem );\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : window.pageXOffset,\n\t\t\t\t\ttop ? val : window.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length, null );\n\t};\n});\n\n// Support: Safari<7+, Chrome<37+\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n});\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name }, function( defaultExtra, funcName ) {\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t\t\t// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there\n\t\t\t\t\t// isn't a whole lot we can do. See pull request at this URL for discussion:\n\t\t\t\t\t// https://github.com/jquery/jquery/pull/764\n\t\t\t\t\treturn elem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable, null );\n\t\t};\n\t});\n});\n\n\n// The number of elements contained in the matched element set\njQuery.fn.size = function() {\n\treturn this.length;\n};\n\njQuery.fn.andSelf = jQuery.fn.addBack;\n\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t});\n}\n\n\n\n\nvar\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( typeof noGlobal === strundefined ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n\n}));\n"
  },
  {
    "path": "app/Resources/assets/js/main.js",
    "content": "/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n(function ($) {\n    $(document).ready(function () {\n        hljs.initHighlightingOnLoad();\n\n        // Datetime picker initialization.\n        // See http://eonasdan.github.io/bootstrap-datetimepicker/\n        $('[data-toggle=\"datetimepicker\"]').datetimepicker({\n            icons: {\n                time: 'fa fa-clock-o',\n                date: 'fa fa-calendar',\n                up: 'fa fa-chevron-up',\n                down: 'fa fa-chevron-down',\n                previous: 'fa fa-chevron-left',\n                next: 'fa fa-chevron-right',\n                today: 'fa fa-check-circle-o',\n                clear: 'fa fa-trash',\n                close: 'fa fa-remove'\n            }\n        });\n    });\n\n    // Handling the modal confirmation message.\n    $(document).on('submit', 'form[data-confirmation]', function (event) {\n        var $form = $(this),\n            $confirm = $('#confirmationModal');\n\n        if ($confirm.data('result') !== 'yes') {\n            //cancel submit event\n            event.preventDefault();\n\n            $confirm\n                .off('click', '#btnYes')\n                .on('click', '#btnYes', function () {\n                    $confirm.data('result', 'yes');\n                    $form.find('input[type=\"submit\"]').attr('disabled', 'disabled');\n                    $form.submit();\n                })\n                .modal('show');\n        }\n    });\n})(window.jQuery);\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_alerts.scss",
    "content": "//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n  padding: $alert-padding;\n  margin-bottom: $line-height-computed;\n  border: 1px solid transparent;\n  border-radius: $alert-border-radius;\n\n  // Headings for larger alerts\n  h4 {\n    margin-top: 0;\n    // Specified for the h4 to prevent conflicts of changing $headings-color\n    color: inherit;\n  }\n\n  // Provide class for links that match alerts\n  .alert-link {\n    font-weight: $alert-link-font-weight;\n  }\n\n  // Improve alignment and spacing of inner content\n  > p,\n  > ul {\n    margin-bottom: 0;\n  }\n\n  > p + p {\n    margin-top: 5px;\n  }\n}\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissible {\n  padding-right: ($alert-padding + 20);\n\n  // Adjust close link position\n  .close {\n    position: relative;\n    top: -2px;\n    right: -21px;\n    color: inherit;\n  }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n  @include alert-variant($alert-success-bg, $alert-success-border, $alert-success-text);\n}\n\n.alert-info {\n  @include alert-variant($alert-info-bg, $alert-info-border, $alert-info-text);\n}\n\n.alert-warning {\n  @include alert-variant($alert-warning-bg, $alert-warning-border, $alert-warning-text);\n}\n\n.alert-danger {\n  @include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text);\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_badges.scss",
    "content": "//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: $font-size-small;\n  font-weight: $badge-font-weight;\n  color: $badge-color;\n  line-height: $badge-line-height;\n  vertical-align: baseline;\n  white-space: nowrap;\n  text-align: center;\n  background-color: $badge-bg;\n  border-radius: $badge-border-radius;\n\n  // Empty badges collapse automatically (not available in IE8)\n  &:empty {\n    display: none;\n  }\n\n  // Quick fix for badges in buttons\n  .btn & {\n    position: relative;\n    top: -1px;\n  }\n\n  .btn-xs &,\n  .btn-group-xs > .btn & {\n    top: 0;\n    padding: 1px 5px;\n  }\n\n  // [converter] extracted a& to a.badge\n\n  // Account for badges in navs\n  .list-group-item.active > &,\n  .nav-pills > .active > a > & {\n    color: $badge-active-color;\n    background-color: $badge-active-bg;\n  }\n\n  .list-group-item > & {\n    float: right;\n  }\n\n  .list-group-item > & + & {\n    margin-right: 5px;\n  }\n\n  .nav-pills > li > a > & {\n    margin-left: 3px;\n  }\n}\n\n// Hover state, but only for links\na.badge {\n  &:hover,\n  &:focus {\n    color: $badge-link-hover-color;\n    text-decoration: none;\n    cursor: pointer;\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_breadcrumbs.scss",
    "content": "//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n  padding: $breadcrumb-padding-vertical $breadcrumb-padding-horizontal;\n  margin-bottom: $line-height-computed;\n  list-style: none;\n  background-color: $breadcrumb-bg;\n  border-radius: $border-radius-base;\n\n  > li {\n    display: inline-block;\n\n    + li:before {\n      content: \"#{$breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n      padding: 0 5px;\n      color: $breadcrumb-color;\n    }\n  }\n\n  > .active {\n    color: $breadcrumb-active-color;\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_button-groups.scss",
    "content": "//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle; // match .btn alignment given font-size hack above\n  > .btn {\n    position: relative;\n    float: left;\n    // Bring the \"active\" button to the front\n    &:hover,\n    &:focus,\n    &:active,\n    &.active {\n      z-index: 2;\n    }\n  }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n  .btn + .btn,\n  .btn + .btn-group,\n  .btn-group + .btn,\n  .btn-group + .btn-group {\n    margin-left: -1px;\n  }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n  margin-left: -5px; // Offset the first child's margin\n  @include clearfix;\n\n  .btn-group,\n  .input-group {\n    float: left;\n  }\n  > .btn,\n  > .btn-group,\n  > .input-group {\n    margin-left: 5px;\n  }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n  margin-left: 0;\n  &:not(:last-child):not(.dropdown-toggle) {\n    @include border-right-radius(0);\n  }\n}\n// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  @include border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) {\n  > .btn:last-child,\n  > .dropdown-toggle {\n    @include border-right-radius(0);\n  }\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  @include border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { @extend .btn-xs; }\n.btn-group-sm > .btn { @extend .btn-sm; }\n.btn-group-lg > .btn { @extend .btn-lg; }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n  padding-left: 8px;\n  padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-left: 12px;\n  padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n  @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n  // Show no shadow for `.btn-link` since it has no other button styles.\n  &.btn-link {\n    @include box-shadow(none);\n  }\n}\n\n\n// Reposition the caret\n.btn .caret {\n  margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n  border-width: $caret-width-large $caret-width-large 0;\n  border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n  border-width: 0 $caret-width-large $caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n  > .btn,\n  > .btn-group,\n  > .btn-group > .btn {\n    display: block;\n    float: none;\n    width: 100%;\n    max-width: 100%;\n  }\n\n  // Clear floats so dropdown menus can be properly placed\n  > .btn-group {\n    @include clearfix;\n    > .btn {\n      float: none;\n    }\n  }\n\n  > .btn + .btn,\n  > .btn + .btn-group,\n  > .btn-group + .btn,\n  > .btn-group + .btn-group {\n    margin-top: -1px;\n    margin-left: 0;\n  }\n}\n\n.btn-group-vertical > .btn {\n  &:not(:first-child):not(:last-child) {\n    border-radius: 0;\n  }\n  &:first-child:not(:last-child) {\n    border-top-right-radius: $border-radius-base;\n    @include border-bottom-radius(0);\n  }\n  &:last-child:not(:first-child) {\n    border-bottom-left-radius: $border-radius-base;\n    @include border-top-radius(0);\n  }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n  > .btn:last-child,\n  > .dropdown-toggle {\n    @include border-bottom-radius(0);\n  }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  @include border-top-radius(0);\n}\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n  > .btn,\n  > .btn-group {\n    float: none;\n    display: table-cell;\n    width: 1%;\n  }\n  > .btn-group .btn {\n    width: 100%;\n  }\n\n  > .btn-group .dropdown-menu {\n    left: auto;\n  }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n  > .btn,\n  > .btn-group > .btn {\n    input[type=\"radio\"],\n    input[type=\"checkbox\"] {\n      position: absolute;\n      clip: rect(0,0,0,0);\n      pointer-events: none;\n    }\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_buttons.scss",
    "content": "//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n  display: inline-block;\n  margin-bottom: 0; // For input.btn\n  font-weight: $btn-font-weight;\n  text-align: center;\n  vertical-align: middle;\n  touch-action: manipulation;\n  cursor: pointer;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid transparent;\n  white-space: nowrap;\n  @include button-size($padding-base-vertical, $padding-base-horizontal, $font-size-base, $line-height-base, $border-radius-base);\n  @include user-select(none);\n\n  &,\n  &:active,\n  &.active {\n    &:focus,\n    &.focus {\n      @include tab-focus;\n    }\n  }\n\n  &:hover,\n  &:focus,\n  &.focus {\n    color: $btn-default-color;\n    text-decoration: none;\n  }\n\n  &:active,\n  &.active {\n    outline: 0;\n    background-image: none;\n    @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n  }\n\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    cursor: $cursor-disabled;\n    pointer-events: none; // Future-proof disabling of clicks\n    @include opacity(.65);\n    @include box-shadow(none);\n  }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n  @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border);\n}\n.btn-primary {\n  @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n  @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n  @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n  @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n  @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n  color: $link-color;\n  font-weight: normal;\n  border-radius: 0;\n\n  &,\n  &:active,\n  &.active,\n  &[disabled],\n  fieldset[disabled] & {\n    background-color: transparent;\n    @include box-shadow(none);\n  }\n  &,\n  &:hover,\n  &:focus,\n  &:active {\n    border-color: transparent;\n  }\n  &:hover,\n  &:focus {\n    color: $link-hover-color;\n    text-decoration: $link-hover-decoration;\n    background-color: transparent;\n  }\n  &[disabled],\n  fieldset[disabled] & {\n    &:hover,\n    &:focus {\n      color: $btn-link-disabled-color;\n      text-decoration: none;\n    }\n  }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n  // line-height: ensure even-numbered height of button next to large input\n  @include button-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $border-radius-large);\n}\n.btn-sm {\n  // line-height: ensure proper height of button next to small input\n  @include button-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $border-radius-small);\n}\n.btn-xs {\n  @include button-size($padding-xs-vertical, $padding-xs-horizontal, $font-size-small, $line-height-small, $border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n  display: block;\n  width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n  &.btn-block {\n    width: 100%;\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_carousel.scss",
    "content": "//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators\n.carousel {\n  position: relative;\n}\n\n.carousel-inner {\n  position: relative;\n  overflow: hidden;\n  width: 100%;\n\n  > .item {\n    display: none;\n    position: relative;\n    @include transition(.6s ease-in-out left);\n\n    // Account for jankitude on images\n    > img,\n    > a > img {\n      @include img-responsive;\n      line-height: 1;\n    }\n\n    // WebKit CSS3 transforms for supported devices\n    @media all and (transform-3d), (-webkit-transform-3d) {\n      @include transition-transform(0.6s ease-in-out);\n      @include backface-visibility(hidden);\n      @include perspective(1000);\n\n      &.next,\n      &.active.right {\n        @include translate3d(100%, 0, 0);\n        left: 0;\n      }\n      &.prev,\n      &.active.left {\n        @include translate3d(-100%, 0, 0);\n        left: 0;\n      }\n      &.next.left,\n      &.prev.right,\n      &.active {\n        @include translate3d(0, 0, 0);\n        left: 0;\n      }\n    }\n  }\n\n  > .active,\n  > .next,\n  > .prev {\n    display: block;\n  }\n\n  > .active {\n    left: 0;\n  }\n\n  > .next,\n  > .prev {\n    position: absolute;\n    top: 0;\n    width: 100%;\n  }\n\n  > .next {\n    left: 100%;\n  }\n  > .prev {\n    left: -100%;\n  }\n  > .next.left,\n  > .prev.right {\n    left: 0;\n  }\n\n  > .active.left {\n    left: -100%;\n  }\n  > .active.right {\n    left: 100%;\n  }\n\n}\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  width: $carousel-control-width;\n  @include opacity($carousel-control-opacity);\n  font-size: $carousel-control-font-size;\n  color: $carousel-control-color;\n  text-align: center;\n  text-shadow: $carousel-text-shadow;\n  // We can't have this transition here because WebKit cancels the carousel\n  // animation if you trip this while in the middle of another animation.\n\n  // Set gradients for backgrounds\n  &.left {\n    @include gradient-horizontal($start-color: rgba(0,0,0,.5), $end-color: rgba(0,0,0,.0001));\n  }\n  &.right {\n    left: auto;\n    right: 0;\n    @include gradient-horizontal($start-color: rgba(0,0,0,.0001), $end-color: rgba(0,0,0,.5));\n  }\n\n  // Hover/focus state\n  &:hover,\n  &:focus {\n    outline: 0;\n    color: $carousel-control-color;\n    text-decoration: none;\n    @include opacity(.9);\n  }\n\n  // Toggles\n  .icon-prev,\n  .icon-next,\n  .glyphicon-chevron-left,\n  .glyphicon-chevron-right {\n    position: absolute;\n    top: 50%;\n    z-index: 5;\n    display: inline-block;\n  }\n  .icon-prev,\n  .glyphicon-chevron-left {\n    left: 50%;\n    margin-left: -10px;\n  }\n  .icon-next,\n  .glyphicon-chevron-right {\n    right: 50%;\n    margin-right: -10px;\n  }\n  .icon-prev,\n  .icon-next {\n    width:  20px;\n    height: 20px;\n    margin-top: -10px;\n    line-height: 1;\n    font-family: serif;\n  }\n\n\n  .icon-prev {\n    &:before {\n      content: '\\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)\n    }\n  }\n  .icon-next {\n    &:before {\n      content: '\\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)\n    }\n  }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  margin-left: -30%;\n  padding-left: 0;\n  list-style: none;\n  text-align: center;\n\n  li {\n    display: inline-block;\n    width:  10px;\n    height: 10px;\n    margin: 1px;\n    text-indent: -999px;\n    border: 1px solid $carousel-indicator-border-color;\n    border-radius: 10px;\n    cursor: pointer;\n\n    // IE8-9 hack for event handling\n    //\n    // Internet Explorer 8-9 does not support clicks on elements without a set\n    // `background-color`. We cannot use `filter` since that's not viewed as a\n    // background color by the browser. Thus, a hack is needed.\n    // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer\n    //\n    // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we\n    // set alpha transparency for the best results possible.\n    background-color: #000 \\9; // IE8\n    background-color: rgba(0,0,0,0); // IE9\n  }\n  .active {\n    margin: 0;\n    width:  12px;\n    height: 12px;\n    background-color: $carousel-indicator-active-bg;\n  }\n}\n\n// Optional captions\n// -----------------------------\n// Hidden by default for smaller viewports\n.carousel-caption {\n  position: absolute;\n  left: 15%;\n  right: 15%;\n  bottom: 20px;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: $carousel-caption-color;\n  text-align: center;\n  text-shadow: $carousel-text-shadow;\n  & .btn {\n    text-shadow: none; // No shadow for button elements in carousel-caption\n  }\n}\n\n\n// Scale up controls for tablets and up\n@media screen and (min-width: $screen-sm-min) {\n\n  // Scale up the controls a smidge\n  .carousel-control {\n    .glyphicon-chevron-left,\n    .glyphicon-chevron-right,\n    .icon-prev,\n    .icon-next {\n      width: 30px;\n      height: 30px;\n      margin-top: -15px;\n      font-size: 30px;\n    }\n    .glyphicon-chevron-left,\n    .icon-prev {\n      margin-left: -15px;\n    }\n    .glyphicon-chevron-right,\n    .icon-next {\n      margin-right: -15px;\n    }\n  }\n\n  // Show and left align the captions\n  .carousel-caption {\n    left: 20%;\n    right: 20%;\n    padding-bottom: 30px;\n  }\n\n  // Move up the indicators\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_close.scss",
    "content": "//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n  float: right;\n  font-size: ($font-size-base * 1.5);\n  font-weight: $close-font-weight;\n  line-height: 1;\n  color: $close-color;\n  text-shadow: $close-text-shadow;\n  @include opacity(.2);\n\n  &:hover,\n  &:focus {\n    color: $close-color;\n    text-decoration: none;\n    cursor: pointer;\n    @include opacity(.5);\n  }\n\n  // [converter] extracted button& to button.close\n}\n\n// Additional properties for button version\n// iOS requires the button element instead of an anchor tag.\n// If you want the anchor version, it requires `href=\"#\"`.\n// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\nbutton.close {\n  padding: 0;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n  -webkit-appearance: none;\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_code.scss",
    "content": "//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n  font-family: $font-family-monospace;\n}\n\n// Inline code\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: $code-color;\n  background-color: $code-bg;\n  border-radius: $border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: $kbd-color;\n  background-color: $kbd-bg;\n  border-radius: $border-radius-small;\n  box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n\n  kbd {\n    padding: 0;\n    font-size: 100%;\n    font-weight: bold;\n    box-shadow: none;\n  }\n}\n\n// Blocks of code\npre {\n  display: block;\n  padding: (($line-height-computed - 1) / 2);\n  margin: 0 0 ($line-height-computed / 2);\n  font-size: ($font-size-base - 1); // 14px to 13px\n  line-height: $line-height-base;\n  word-break: break-all;\n  word-wrap: break-word;\n  color: $pre-color;\n  background-color: $pre-bg;\n  border: 1px solid $pre-border-color;\n  border-radius: $border-radius-base;\n\n  // Account for some code outputs that place code tags in pre tags\n  code {\n    padding: 0;\n    font-size: inherit;\n    color: inherit;\n    white-space: pre-wrap;\n    background-color: transparent;\n    border-radius: 0;\n  }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n  max-height: $pre-scrollable-max-height;\n  overflow-y: scroll;\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_component-animations.scss",
    "content": "//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.\n\n.fade {\n  opacity: 0;\n  @include transition(opacity .15s linear);\n  &.in {\n    opacity: 1;\n  }\n}\n\n.collapse {\n  display: none;\n\n  &.in      { display: block; }\n  // [converter] extracted tr&.in to tr.collapse.in\n  // [converter] extracted tbody&.in to tbody.collapse.in\n}\n\ntr.collapse.in    { display: table-row; }\n\ntbody.collapse.in { display: table-row-group; }\n\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  @include transition-property(height, visibility);\n  @include transition-duration(.35s);\n  @include transition-timing-function(ease);\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_dropdowns.scss",
    "content": "//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top:   $caret-width-base dashed;\n  border-right: $caret-width-base solid transparent;\n  border-left:  $caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropup,\n.dropdown {\n  position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n  outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: $zindex-dropdown;\n  display: none; // none by default, but block on \"open\" of the menu\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0; // override default ul\n  list-style: none;\n  font-size: $font-size-base;\n  text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n  background-color: $dropdown-bg;\n  border: 1px solid $dropdown-fallback-border; // IE8 fallback\n  border: 1px solid $dropdown-border;\n  border-radius: $border-radius-base;\n  @include box-shadow(0 6px 12px rgba(0,0,0,.175));\n  background-clip: padding-box;\n\n  // Aligns the dropdown menu to right\n  //\n  // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n  &.pull-right {\n    right: 0;\n    left: auto;\n  }\n\n  // Dividers (basically an hr) within the dropdown\n  .divider {\n    @include nav-divider($dropdown-divider-bg);\n  }\n\n  // Links within the dropdown menu\n  > li > a {\n    display: block;\n    padding: 3px 20px;\n    clear: both;\n    font-weight: normal;\n    line-height: $line-height-base;\n    color: $dropdown-link-color;\n    white-space: nowrap; // prevent links from randomly breaking onto new lines\n  }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n  &:hover,\n  &:focus {\n    text-decoration: none;\n    color: $dropdown-link-hover-color;\n    background-color: $dropdown-link-hover-bg;\n  }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n  &,\n  &:hover,\n  &:focus {\n    color: $dropdown-link-active-color;\n    text-decoration: none;\n    outline: 0;\n    background-color: $dropdown-link-active-bg;\n  }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n  &,\n  &:hover,\n  &:focus {\n    color: $dropdown-link-disabled-color;\n  }\n\n  // Nuke hover/focus effects\n  &:hover,\n  &:focus {\n    text-decoration: none;\n    background-color: transparent;\n    background-image: none; // Remove CSS gradient\n    @include reset-filter;\n    cursor: $cursor-disabled;\n  }\n}\n\n// Open state for the dropdown\n.open {\n  // Show the menu\n  > .dropdown-menu {\n    display: block;\n  }\n\n  // Remove the outline when :focus is triggered\n  > a {\n    outline: 0;\n  }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n  left: auto; // Reset the default from `.dropdown-menu`\n  right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n  left: 0;\n  right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: $font-size-small;\n  line-height: $line-height-base;\n  color: $dropdown-header-color;\n  white-space: nowrap; // as with > li > a\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n  position: fixed;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  top: 0;\n  z-index: ($zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n  // Reverse the caret\n  .caret {\n    border-top: 0;\n    border-bottom: $caret-width-base solid;\n    content: \"\";\n  }\n  // Different positioning for bottom up menu\n  .dropdown-menu {\n    top: auto;\n    bottom: 100%;\n    margin-bottom: 2px;\n  }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: $grid-float-breakpoint) {\n  .navbar-right {\n    .dropdown-menu {\n      right: 0; left: auto;\n    }\n    // Necessary for overrides of the default right aligned menu.\n    // Will remove come v4 in all likelihood.\n    .dropdown-menu-left {\n      left: 0; right: auto;\n    }\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_forms.scss",
    "content": "//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n  padding: 0;\n  margin: 0;\n  border: 0;\n  // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n  // so we reset that to ensure it behaves more like a standard block element.\n  // See https://github.com/twbs/bootstrap/issues/12359.\n  min-width: 0;\n}\n\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: $line-height-computed;\n  font-size: ($font-size-base * 1.5);\n  line-height: inherit;\n  color: $legend-color;\n  border: 0;\n  border-bottom: 1px solid $legend-border-color;\n}\n\nlabel {\n  display: inline-block;\n  max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n  margin-bottom: 5px;\n  font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n  @include box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9; // IE8-9\n  line-height: normal;\n}\n\n// Set the height of file controls to match text inputs\ninput[type=\"file\"] {\n  display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n  height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  @include tab-focus;\n}\n\n// Adjust output element\noutput {\n  display: block;\n  padding-top: ($padding-base-vertical + 1);\n  font-size: $font-size-base;\n  line-height: $line-height-base;\n  color: $input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n  display: block;\n  width: 100%;\n  height: $input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n  padding: $padding-base-vertical $padding-base-horizontal;\n  font-size: $font-size-base;\n  line-height: $line-height-base;\n  color: $input-color;\n  background-color: $input-bg;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid $input-border;\n  border-radius: $input-border-radius; // Note: This has no effect on <select>s in some browsers, due to the limited stylability of <select>s in CSS.\n  @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n  @include transition(border-color ease-in-out .15s, box-shadow ease-in-out .15s);\n\n  // Customize the `:focus` state to imitate native WebKit styles.\n  @include form-control-focus;\n\n  // Placeholder\n  @include placeholder;\n\n  // Disabled and read-only inputs\n  //\n  // HTML5 says that controls under a fieldset > legend:first-child won't be\n  // disabled if the fieldset is disabled. Due to implementation difficulty, we\n  // don't honor that edge case; we style them as disabled anyway.\n  &[disabled],\n  &[readonly],\n  fieldset[disabled] & {\n    background-color: $input-bg-disabled;\n    opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655\n  }\n\n  &[disabled],\n  fieldset[disabled] & {\n    cursor: $cursor-disabled;\n  }\n\n  // [converter] extracted textarea& to textarea.form-control\n}\n\n// Reset height for `textarea`s\ntextarea.form-control {\n  height: auto;\n}\n\n\n// Search inputs in iOS\n//\n// This overrides the extra rounded corners on search inputs in iOS so that our\n// `.form-control` class can properly style them. Note that this cannot simply\n// be added to `.form-control` as it's not specific enough. For details, see\n// https://github.com/twbs/bootstrap/issues/11586.\n\ninput[type=\"search\"] {\n  -webkit-appearance: none;\n}\n\n\n// Special styles for iOS temporal inputs\n//\n// In Mobile Safari, setting `display: block` on temporal inputs causes the\n// text within the input to become vertically misaligned. As a workaround, we\n// set a pixel line-height that matches the given height of the input, but only\n// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848\n\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  input[type=\"date\"],\n  input[type=\"time\"],\n  input[type=\"datetime-local\"],\n  input[type=\"month\"] {\n    line-height: $input-height-base;\n\n    &.input-sm,\n    .input-group-sm & {\n      line-height: $input-height-small;\n    }\n\n    &.input-lg,\n    .input-group-lg & {\n      line-height: $input-height-large;\n    }\n  }\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n  margin-bottom: $form-group-margin-bottom;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n  position: relative;\n  display: block;\n  margin-top: 10px;\n  margin-bottom: 10px;\n\n  label {\n    min-height: $line-height-computed; // Ensure the input doesn't jump when there is no text\n    padding-left: 20px;\n    margin-bottom: 0;\n    font-weight: normal;\n    cursor: pointer;\n  }\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  position: absolute;\n  margin-left: -20px;\n  margin-top: 4px \\9;\n}\n\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n  position: relative;\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  vertical-align: middle;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px; // space out consecutive inline controls\n}\n\n// Apply same disabled cursor tweak as for inputs\n// Some special care is needed because <label>s don't inherit their parent's `cursor`.\n//\n// Note: Neither radios nor checkboxes can be readonly.\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  &[disabled],\n  &.disabled,\n  fieldset[disabled] & {\n    cursor: $cursor-disabled;\n  }\n}\n// These classes are used directly on <label>s\n.radio-inline,\n.checkbox-inline {\n  &.disabled,\n  fieldset[disabled] & {\n    cursor: $cursor-disabled;\n  }\n}\n// These classes are used on elements with <label> descendants\n.radio,\n.checkbox {\n  &.disabled,\n  fieldset[disabled] & {\n    label {\n      cursor: $cursor-disabled;\n    }\n  }\n}\n\n\n// Static form control text\n//\n// Apply class to a `p` element to make any string of text align with labels in\n// a horizontal form layout.\n\n.form-control-static {\n  // Size it appropriately next to real form controls\n  padding-top: ($padding-base-vertical + 1);\n  padding-bottom: ($padding-base-vertical + 1);\n  // Remove default margin from `p`\n  margin-bottom: 0;\n  min-height: ($line-height-computed + $font-size-base);\n\n  &.input-lg,\n  &.input-sm {\n    padding-left: 0;\n    padding-right: 0;\n  }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n//\n// The `.form-group-* form-control` variations are sadly duplicated to avoid the\n// issue documented in https://github.com/twbs/bootstrap/issues/15074.\n\n@include input-size('.input-sm', $input-height-small, $padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $input-border-radius-small);\n.form-group-sm {\n\n  @include input-size('.form-control', $input-height-small, $padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $input-border-radius-small);\n\n  .form-control-static {\n    height: $input-height-small;\n    padding: $padding-small-vertical $padding-small-horizontal;\n    font-size: $font-size-small;\n    line-height: $line-height-small;\n    min-height: ($line-height-computed + $font-size-small);\n  }\n}\n\n@include input-size('.input-lg', $input-height-large, $padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $input-border-radius-large);\n.form-group-lg {\n\n  @include input-size('.form-control', $input-height-large, $padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $input-border-radius-large);\n\n  .form-control-static {\n    height: $input-height-large;\n    padding: $padding-large-vertical $padding-large-horizontal;\n    font-size: $font-size-large;\n    line-height: $line-height-large;\n    min-height: ($line-height-computed + $font-size-large);\n  }\n}\n\n\n// Form control feedback states\n//\n// Apply contextual and semantic states to individual form controls.\n\n.has-feedback {\n  // Enable absolute positioning\n  position: relative;\n\n  // Ensure icons don't overlap text\n  .form-control {\n    padding-right: ($input-height-base * 1.25);\n  }\n}\n// Feedback icon (requires .glyphicon classes)\n.form-control-feedback {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2; // Ensure icon is above input groups\n  display: block;\n  width: $input-height-base;\n  height: $input-height-base;\n  line-height: $input-height-base;\n  text-align: center;\n  pointer-events: none;\n}\n.input-lg + .form-control-feedback {\n  width: $input-height-large;\n  height: $input-height-large;\n  line-height: $input-height-large;\n}\n.input-sm + .form-control-feedback {\n  width: $input-height-small;\n  height: $input-height-small;\n  line-height: $input-height-small;\n}\n\n// Feedback states\n.has-success {\n  @include form-control-validation($state-success-text, $state-success-text, $state-success-bg);\n}\n.has-warning {\n  @include form-control-validation($state-warning-text, $state-warning-text, $state-warning-bg);\n}\n.has-error {\n  @include form-control-validation($state-danger-text, $state-danger-text, $state-danger-bg);\n}\n\n// Reposition feedback icon if input has visible label above\n.has-feedback label {\n\n  & ~ .form-control-feedback {\n     top: ($line-height-computed + 5); // Height of the `label` and its margin\n  }\n  &.sr-only ~ .form-control-feedback {\n     top: 0;\n  }\n}\n\n\n// Help text\n//\n// Apply to any element you wish to create light text for placement immediately\n// below a form control. Use for general help, formatting, or instructional text.\n\n.help-block {\n  display: block; // account for any element using help-block\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: lighten($text-color, 25%); // lighten the text some for contrast\n}\n\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n//\n// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.\n\n// [converter] extracted from `.form-inline` for libsass compatibility\n@mixin form-inline {\n\n  // Kick in the inline\n  @media (min-width: $screen-sm-min) {\n    // Inline-block all the things for \"inline\"\n    .form-group {\n      display: inline-block;\n      margin-bottom: 0;\n      vertical-align: middle;\n    }\n\n    // In navbar-form, allow folks to *not* use `.form-group`\n    .form-control {\n      display: inline-block;\n      width: auto; // Prevent labels from stacking above inputs in `.form-group`\n      vertical-align: middle;\n    }\n\n    // Make static controls behave like regular ones\n    .form-control-static {\n      display: inline-block;\n    }\n\n    .input-group {\n      display: inline-table;\n      vertical-align: middle;\n\n      .input-group-addon,\n      .input-group-btn,\n      .form-control {\n        width: auto;\n      }\n    }\n\n    // Input groups need that 100% width though\n    .input-group > .form-control {\n      width: 100%;\n    }\n\n    .control-label {\n      margin-bottom: 0;\n      vertical-align: middle;\n    }\n\n    // Remove default margin on radios/checkboxes that were used for stacking, and\n    // then undo the floating of radios and checkboxes to match.\n    .radio,\n    .checkbox {\n      display: inline-block;\n      margin-top: 0;\n      margin-bottom: 0;\n      vertical-align: middle;\n\n      label {\n        padding-left: 0;\n      }\n    }\n    .radio input[type=\"radio\"],\n    .checkbox input[type=\"checkbox\"] {\n      position: relative;\n      margin-left: 0;\n    }\n\n    // Re-override the feedback icon.\n    .has-feedback .form-control-feedback {\n      top: 0;\n    }\n  }\n}\n// [converter] extracted as `@mixin form-inline` for libsass compatibility\n.form-inline {\n  @include form-inline;\n}\n\n\n\n// Horizontal forms\n//\n// Horizontal forms are built on grid classes and allow you to create forms with\n// labels on the left and inputs on the right.\n\n.form-horizontal {\n\n  // Consistent vertical alignment of radios and checkboxes\n  //\n  // Labels also get some reset styles, but that is scoped to a media query below.\n  .radio,\n  .checkbox,\n  .radio-inline,\n  .checkbox-inline {\n    margin-top: 0;\n    margin-bottom: 0;\n    padding-top: ($padding-base-vertical + 1); // Default padding plus a border\n  }\n  // Account for padding we're adding to ensure the alignment and of help text\n  // and other content below items\n  .radio,\n  .checkbox {\n    min-height: ($line-height-computed + ($padding-base-vertical + 1));\n  }\n\n  // Make form groups behave like rows\n  .form-group {\n    @include make-row;\n  }\n\n  // Reset spacing and right align labels, but scope to media queries so that\n  // labels on narrow viewports stack the same as a default form example.\n  @media (min-width: $screen-sm-min) {\n    .control-label {\n      text-align: right;\n      margin-bottom: 0;\n      padding-top: ($padding-base-vertical + 1); // Default padding plus a border\n    }\n  }\n\n  // Validation states\n  //\n  // Reposition the icon because it's now within a grid column and columns have\n  // `position: relative;` on them. Also accounts for the grid gutter padding.\n  .has-feedback .form-control-feedback {\n    right: ($grid-gutter-width / 2);\n  }\n\n  // Form group sizes\n  //\n  // Quick utility class for applying `.input-lg` and `.input-sm` styles to the\n  // inputs and labels within a `.form-group`.\n  .form-group-lg {\n    @media (min-width: $screen-sm-min) {\n      .control-label {\n        padding-top: (($padding-large-vertical * $line-height-large) + 1);\n      }\n    }\n  }\n  .form-group-sm {\n    @media (min-width: $screen-sm-min) {\n      .control-label {\n        padding-top: ($padding-small-vertical + 1);\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_glyphicons.scss",
    "content": "//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// <a href=\"#\"><span class=\"glyphicon glyphicon-star\"></span> Star</a>\n\n// Import the fonts\n@font-face {\n  font-family: 'Glyphicons Halflings';\n  src: url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.eot'), '#{$icon-font-path}#{$icon-font-name}.eot'));\n  src: url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.eot?#iefix'), '#{$icon-font-path}#{$icon-font-name}.eot?#iefix')) format('embedded-opentype'),\n       url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.woff2'), '#{$icon-font-path}#{$icon-font-name}.woff2')) format('woff2'),\n       url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.woff'), '#{$icon-font-path}#{$icon-font-name}.woff')) format('woff'),\n       url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.ttf'), '#{$icon-font-path}#{$icon-font-name}.ttf')) format('truetype'),\n       url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.svg##{$icon-font-svg-id}'), '#{$icon-font-path}#{$icon-font-name}.svg##{$icon-font-svg-id}')) format('svg');\n}\n\n// Catchall baseclass\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: 'Glyphicons Halflings';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk               { &:before { content: \"\\2a\"; } }\n.glyphicon-plus                   { &:before { content: \"\\2b\"; } }\n.glyphicon-euro,\n.glyphicon-eur                    { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus                  { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud                  { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope               { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil                 { &:before { content: \"\\270f\"; } }\n.glyphicon-glass                  { &:before { content: \"\\e001\"; } }\n.glyphicon-music                  { &:before { content: \"\\e002\"; } }\n.glyphicon-search                 { &:before { content: \"\\e003\"; } }\n.glyphicon-heart                  { &:before { content: \"\\e005\"; } }\n.glyphicon-star                   { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty             { &:before { content: \"\\e007\"; } }\n.glyphicon-user                   { &:before { content: \"\\e008\"; } }\n.glyphicon-film                   { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large               { &:before { content: \"\\e010\"; } }\n.glyphicon-th                     { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list                { &:before { content: \"\\e012\"; } }\n.glyphicon-ok                     { &:before { content: \"\\e013\"; } }\n.glyphicon-remove                 { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in                { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out               { &:before { content: \"\\e016\"; } }\n.glyphicon-off                    { &:before { content: \"\\e017\"; } }\n.glyphicon-signal                 { &:before { content: \"\\e018\"; } }\n.glyphicon-cog                    { &:before { content: \"\\e019\"; } }\n.glyphicon-trash                  { &:before { content: \"\\e020\"; } }\n.glyphicon-home                   { &:before { content: \"\\e021\"; } }\n.glyphicon-file                   { &:before { content: \"\\e022\"; } }\n.glyphicon-time                   { &:before { content: \"\\e023\"; } }\n.glyphicon-road                   { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt           { &:before { content: \"\\e025\"; } }\n.glyphicon-download               { &:before { content: \"\\e026\"; } }\n.glyphicon-upload                 { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox                  { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle            { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat                 { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh                { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt               { &:before { content: \"\\e032\"; } }\n.glyphicon-lock                   { &:before { content: \"\\e033\"; } }\n.glyphicon-flag                   { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones             { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off             { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down            { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up              { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode                 { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode                { &:before { content: \"\\e040\"; } }\n.glyphicon-tag                    { &:before { content: \"\\e041\"; } }\n.glyphicon-tags                   { &:before { content: \"\\e042\"; } }\n.glyphicon-book                   { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark               { &:before { content: \"\\e044\"; } }\n.glyphicon-print                  { &:before { content: \"\\e045\"; } }\n.glyphicon-camera                 { &:before { content: \"\\e046\"; } }\n.glyphicon-font                   { &:before { content: \"\\e047\"; } }\n.glyphicon-bold                   { &:before { content: \"\\e048\"; } }\n.glyphicon-italic                 { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height            { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width             { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left             { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center           { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right            { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify          { &:before { content: \"\\e055\"; } }\n.glyphicon-list                   { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left            { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right           { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video         { &:before { content: \"\\e059\"; } }\n.glyphicon-picture                { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker             { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust                 { &:before { content: \"\\e063\"; } }\n.glyphicon-tint                   { &:before { content: \"\\e064\"; } }\n.glyphicon-edit                   { &:before { content: \"\\e065\"; } }\n.glyphicon-share                  { &:before { content: \"\\e066\"; } }\n.glyphicon-check                  { &:before { content: \"\\e067\"; } }\n.glyphicon-move                   { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward          { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward          { &:before { content: \"\\e070\"; } }\n.glyphicon-backward               { &:before { content: \"\\e071\"; } }\n.glyphicon-play                   { &:before { content: \"\\e072\"; } }\n.glyphicon-pause                  { &:before { content: \"\\e073\"; } }\n.glyphicon-stop                   { &:before { content: \"\\e074\"; } }\n.glyphicon-forward                { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward           { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward           { &:before { content: \"\\e077\"; } }\n.glyphicon-eject                  { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left           { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right          { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign              { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign             { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign            { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign                { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign          { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign              { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot             { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle          { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle              { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle             { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left             { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right            { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up               { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down             { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt              { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full            { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small           { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign       { &:before { content: \"\\e101\"; } }\n.glyphicon-gift                   { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf                   { &:before { content: \"\\e103\"; } }\n.glyphicon-fire                   { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open               { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close              { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign           { &:before { content: \"\\e107\"; } }\n.glyphicon-plane                  { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar               { &:before { content: \"\\e109\"; } }\n.glyphicon-random                 { &:before { content: \"\\e110\"; } }\n.glyphicon-comment                { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet                 { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up             { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down           { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet                { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart          { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close           { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open            { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical        { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal      { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd                    { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn               { &:before { content: \"\\e122\"; } }\n.glyphicon-bell                   { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate            { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up              { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down            { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right             { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left              { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up                { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down              { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right     { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left      { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up        { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down      { &:before { content: \"\\e134\"; } }\n.glyphicon-globe                  { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench                 { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks                  { &:before { content: \"\\e137\"; } }\n.glyphicon-filter                 { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase              { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen             { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard              { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip              { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty            { &:before { content: \"\\e143\"; } }\n.glyphicon-link                   { &:before { content: \"\\e144\"; } }\n.glyphicon-phone                  { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin                { &:before { content: \"\\e146\"; } }\n.glyphicon-usd                    { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp                    { &:before { content: \"\\e149\"; } }\n.glyphicon-sort                   { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet       { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt   { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order          { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt      { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes     { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked              { &:before { content: \"\\e157\"; } }\n.glyphicon-expand                 { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down          { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up            { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in                 { &:before { content: \"\\e161\"; } }\n.glyphicon-flash                  { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out                { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window             { &:before { content: \"\\e164\"; } }\n.glyphicon-record                 { &:before { content: \"\\e165\"; } }\n.glyphicon-save                   { &:before { content: \"\\e166\"; } }\n.glyphicon-open                   { &:before { content: \"\\e167\"; } }\n.glyphicon-saved                  { &:before { content: \"\\e168\"; } }\n.glyphicon-import                 { &:before { content: \"\\e169\"; } }\n.glyphicon-export                 { &:before { content: \"\\e170\"; } }\n.glyphicon-send                   { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk            { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved           { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove          { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save            { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open            { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card            { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer               { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery                { &:before { content: \"\\e179\"; } }\n.glyphicon-header                 { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed             { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone               { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt              { &:before { content: \"\\e183\"; } }\n.glyphicon-tower                  { &:before { content: \"\\e184\"; } }\n.glyphicon-stats                  { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video               { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video               { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles              { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo           { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby            { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1              { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1              { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1              { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark         { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark      { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download         { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload           { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer           { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous         { &:before { content: \"\\e200\"; } }\n.glyphicon-cd                     { &:before { content: \"\\e201\"; } }\n.glyphicon-save-file              { &:before { content: \"\\e202\"; } }\n.glyphicon-open-file              { &:before { content: \"\\e203\"; } }\n.glyphicon-level-up               { &:before { content: \"\\e204\"; } }\n.glyphicon-copy                   { &:before { content: \"\\e205\"; } }\n.glyphicon-paste                  { &:before { content: \"\\e206\"; } }\n// The following 2 Glyphicons are omitted for the time being because\n// they currently use Unicode codepoints that are outside the\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle\n// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.\n// Notably, the bug affects some older versions of the Android Browser.\n// More info: https://github.com/twbs/bootstrap/issues/10106\n// .glyphicon-door                   { &:before { content: \"\\1f6aa\"; } }\n// .glyphicon-key                    { &:before { content: \"\\1f511\"; } }\n.glyphicon-alert                  { &:before { content: \"\\e209\"; } }\n.glyphicon-equalizer              { &:before { content: \"\\e210\"; } }\n.glyphicon-king                   { &:before { content: \"\\e211\"; } }\n.glyphicon-queen                  { &:before { content: \"\\e212\"; } }\n.glyphicon-pawn                   { &:before { content: \"\\e213\"; } }\n.glyphicon-bishop                 { &:before { content: \"\\e214\"; } }\n.glyphicon-knight                 { &:before { content: \"\\e215\"; } }\n.glyphicon-baby-formula           { &:before { content: \"\\e216\"; } }\n.glyphicon-tent                   { &:before { content: \"\\26fa\"; } }\n.glyphicon-blackboard             { &:before { content: \"\\e218\"; } }\n.glyphicon-bed                    { &:before { content: \"\\e219\"; } }\n.glyphicon-apple                  { &:before { content: \"\\f8ff\"; } }\n.glyphicon-erase                  { &:before { content: \"\\e221\"; } }\n.glyphicon-hourglass              { &:before { content: \"\\231b\"; } }\n.glyphicon-lamp                   { &:before { content: \"\\e223\"; } }\n.glyphicon-duplicate              { &:before { content: \"\\e224\"; } }\n.glyphicon-piggy-bank             { &:before { content: \"\\e225\"; } }\n.glyphicon-scissors               { &:before { content: \"\\e226\"; } }\n.glyphicon-bitcoin                { &:before { content: \"\\e227\"; } }\n.glyphicon-btc                    { &:before { content: \"\\e227\"; } }\n.glyphicon-xbt                    { &:before { content: \"\\e227\"; } }\n.glyphicon-yen                    { &:before { content: \"\\00a5\"; } }\n.glyphicon-jpy                    { &:before { content: \"\\00a5\"; } }\n.glyphicon-ruble                  { &:before { content: \"\\20bd\"; } }\n.glyphicon-rub                    { &:before { content: \"\\20bd\"; } }\n.glyphicon-scale                  { &:before { content: \"\\e230\"; } }\n.glyphicon-ice-lolly              { &:before { content: \"\\e231\"; } }\n.glyphicon-ice-lolly-tasted       { &:before { content: \"\\e232\"; } }\n.glyphicon-education              { &:before { content: \"\\e233\"; } }\n.glyphicon-option-horizontal      { &:before { content: \"\\e234\"; } }\n.glyphicon-option-vertical        { &:before { content: \"\\e235\"; } }\n.glyphicon-menu-hamburger         { &:before { content: \"\\e236\"; } }\n.glyphicon-modal-window           { &:before { content: \"\\e237\"; } }\n.glyphicon-oil                    { &:before { content: \"\\e238\"; } }\n.glyphicon-grain                  { &:before { content: \"\\e239\"; } }\n.glyphicon-sunglasses             { &:before { content: \"\\e240\"; } }\n.glyphicon-text-size              { &:before { content: \"\\e241\"; } }\n.glyphicon-text-color             { &:before { content: \"\\e242\"; } }\n.glyphicon-text-background        { &:before { content: \"\\e243\"; } }\n.glyphicon-object-align-top       { &:before { content: \"\\e244\"; } }\n.glyphicon-object-align-bottom    { &:before { content: \"\\e245\"; } }\n.glyphicon-object-align-horizontal{ &:before { content: \"\\e246\"; } }\n.glyphicon-object-align-left      { &:before { content: \"\\e247\"; } }\n.glyphicon-object-align-vertical  { &:before { content: \"\\e248\"; } }\n.glyphicon-object-align-right     { &:before { content: \"\\e249\"; } }\n.glyphicon-triangle-right         { &:before { content: \"\\e250\"; } }\n.glyphicon-triangle-left          { &:before { content: \"\\e251\"; } }\n.glyphicon-triangle-bottom        { &:before { content: \"\\e252\"; } }\n.glyphicon-triangle-top           { &:before { content: \"\\e253\"; } }\n.glyphicon-console                { &:before { content: \"\\e254\"; } }\n.glyphicon-superscript            { &:before { content: \"\\e255\"; } }\n.glyphicon-subscript              { &:before { content: \"\\e256\"; } }\n.glyphicon-menu-left              { &:before { content: \"\\e257\"; } }\n.glyphicon-menu-right             { &:before { content: \"\\e258\"; } }\n.glyphicon-menu-down              { &:before { content: \"\\e259\"; } }\n.glyphicon-menu-up                { &:before { content: \"\\e260\"; } }\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_grid.scss",
    "content": "//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n  @include container-fixed;\n\n  @media (min-width: $screen-sm-min) {\n    width: $container-sm;\n  }\n  @media (min-width: $screen-md-min) {\n    width: $container-md;\n  }\n  @media (min-width: $screen-lg-min) {\n    width: $container-lg;\n  }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n  @include container-fixed;\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n  @include make-row;\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@include make-grid-columns;\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n@include make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: $screen-sm-min) {\n  @include make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: $screen-md-min) {\n  @include make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: $screen-lg-min) {\n  @include make-grid(lg);\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_input-groups.scss",
    "content": "//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n  position: relative; // For dropdowns\n  display: table;\n  border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n  // Undo padding and float of grid classes\n  &[class*=\"col-\"] {\n    float: none;\n    padding-left: 0;\n    padding-right: 0;\n  }\n\n  .form-control {\n    // Ensure that the input is always above the *appended* addon button for\n    // proper border colors.\n    position: relative;\n    z-index: 2;\n\n    // IE9 fubars the placeholder attribute in text inputs and the arrows on\n    // select elements in input groups. To fix it, we float the input. Details:\n    // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n    float: left;\n\n    width: 100%;\n    margin-bottom: 0;\n  }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  @extend .input-lg;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  @extend .input-sm;\n}\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n\n  &:not(:first-child):not(:last-child) {\n    border-radius: 0;\n  }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n  padding: $padding-base-vertical $padding-base-horizontal;\n  font-size: $font-size-base;\n  font-weight: normal;\n  line-height: 1;\n  color: $input-color;\n  text-align: center;\n  background-color: $input-group-addon-bg;\n  border: 1px solid $input-group-addon-border-color;\n  border-radius: $border-radius-base;\n\n  // Sizing\n  &.input-sm {\n    padding: $padding-small-vertical $padding-small-horizontal;\n    font-size: $font-size-small;\n    border-radius: $border-radius-small;\n  }\n  &.input-lg {\n    padding: $padding-large-vertical $padding-large-horizontal;\n    font-size: $font-size-large;\n    border-radius: $border-radius-large;\n  }\n\n  // Nuke default margins from checkboxes and radios to vertically center within.\n  input[type=\"radio\"],\n  input[type=\"checkbox\"] {\n    margin-top: 0;\n  }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  @include border-right-radius(0);\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  @include border-left-radius(0);\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n  position: relative;\n  // Jankily prevent input button groups from wrapping with `white-space` and\n  // `font-size` in combination with `inline-block` on buttons.\n  font-size: 0;\n  white-space: nowrap;\n\n  // Negative margin for spacing, position for bringing hovered/focused/actived\n  // element above the siblings.\n  > .btn {\n    position: relative;\n    + .btn {\n      margin-left: -1px;\n    }\n    // Bring the \"active\" button to the front\n    &:hover,\n    &:focus,\n    &:active {\n      z-index: 2;\n    }\n  }\n\n  // Negative margin to only have a 1px border between the two\n  &:first-child {\n    > .btn,\n    > .btn-group {\n      margin-right: -1px;\n    }\n  }\n  &:last-child {\n    > .btn,\n    > .btn-group {\n      margin-left: -1px;\n    }\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_jumbotron.scss",
    "content": "//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n  padding: $jumbotron-padding ($jumbotron-padding / 2);\n  margin-bottom: $jumbotron-padding;\n  color: $jumbotron-color;\n  background-color: $jumbotron-bg;\n\n  h1,\n  .h1 {\n    color: $jumbotron-heading-color;\n  }\n\n  p {\n    margin-bottom: ($jumbotron-padding / 2);\n    font-size: $jumbotron-font-size;\n    font-weight: 200;\n  }\n\n  > hr {\n    border-top-color: darken($jumbotron-bg, 10%);\n  }\n\n  .container &,\n  .container-fluid & {\n    border-radius: $border-radius-large; // Only round corners at higher resolutions if contained in a container\n  }\n\n  .container {\n    max-width: 100%;\n  }\n\n  @media screen and (min-width: $screen-sm-min) {\n    padding: ($jumbotron-padding * 1.6) 0;\n\n    .container &,\n    .container-fluid & {\n      padding-left:  ($jumbotron-padding * 2);\n      padding-right: ($jumbotron-padding * 2);\n    }\n\n    h1,\n    .h1 {\n      font-size: ($font-size-base * 4.5);\n    }\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_labels.scss",
    "content": "//\n// Labels\n// --------------------------------------------------\n\n.label {\n  display: inline;\n  padding: .2em .6em .3em;\n  font-size: 75%;\n  font-weight: bold;\n  line-height: 1;\n  color: $label-color;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: .25em;\n\n  // [converter] extracted a& to a.label\n\n  // Empty labels collapse automatically (not available in IE8)\n  &:empty {\n    display: none;\n  }\n\n  // Quick fix for labels in buttons\n  .btn & {\n    position: relative;\n    top: -1px;\n  }\n}\n\n// Add hover effects, but only for links\na.label {\n  &:hover,\n  &:focus {\n    color: $label-link-hover-color;\n    text-decoration: none;\n    cursor: pointer;\n  }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n  @include label-variant($label-default-bg);\n}\n\n.label-primary {\n  @include label-variant($label-primary-bg);\n}\n\n.label-success {\n  @include label-variant($label-success-bg);\n}\n\n.label-info {\n  @include label-variant($label-info-bg);\n}\n\n.label-warning {\n  @include label-variant($label-warning-bg);\n}\n\n.label-danger {\n  @include label-variant($label-danger-bg);\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_list-group.scss",
    "content": "//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n  // No need to set list-style: none; since .list-group-item is block level\n  margin-bottom: 20px;\n  padding-left: 0; // reset padding because ul and ol\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  // Place the border on the list items and negative margin up for better styling\n  margin-bottom: -1px;\n  background-color: $list-group-bg;\n  border: 1px solid $list-group-border;\n\n  // Round the first and last items\n  &:first-child {\n    @include border-top-radius($list-group-border-radius);\n  }\n  &:last-child {\n    margin-bottom: 0;\n    @include border-bottom-radius($list-group-border-radius);\n  }\n}\n\n\n// Linked list items\n//\n// Use anchor elements instead of `li`s or `div`s to create linked list items.\n// Includes an extra `.active` modifier class for showing selected items.\n\na.list-group-item {\n  color: $list-group-link-color;\n\n  .list-group-item-heading {\n    color: $list-group-link-heading-color;\n  }\n\n  // Hover state\n  &:hover,\n  &:focus {\n    text-decoration: none;\n    color: $list-group-link-hover-color;\n    background-color: $list-group-hover-bg;\n  }\n}\n\n.list-group-item {\n  // Disabled state\n  &.disabled,\n  &.disabled:hover,\n  &.disabled:focus {\n    background-color: $list-group-disabled-bg;\n    color: $list-group-disabled-color;\n    cursor: $cursor-disabled;\n\n    // Force color to inherit for custom content\n    .list-group-item-heading {\n      color: inherit;\n    }\n    .list-group-item-text {\n      color: $list-group-disabled-text-color;\n    }\n  }\n\n  // Active class on item itself, not parent\n  &.active,\n  &.active:hover,\n  &.active:focus {\n    z-index: 2; // Place active items above their siblings for proper border styling\n    color: $list-group-active-color;\n    background-color: $list-group-active-bg;\n    border-color: $list-group-active-border;\n\n    // Force color to inherit for custom content\n    .list-group-item-heading,\n    .list-group-item-heading > small,\n    .list-group-item-heading > .small {\n      color: inherit;\n    }\n    .list-group-item-text {\n      color: $list-group-active-text-color;\n    }\n  }\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n@include list-group-item-variant(success, $state-success-bg, $state-success-text);\n@include list-group-item-variant(info, $state-info-bg, $state-info-text);\n@include list-group-item-variant(warning, $state-warning-bg, $state-warning-text);\n@include list-group-item-variant(danger, $state-danger-bg, $state-danger-text);\n\n\n// Custom content options\n//\n// Extra classes for creating well-formatted content within `.list-group-item`s.\n\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_media.scss",
    "content": ".media {\n  // Proper spacing between instances of .media\n  margin-top: 15px;\n\n  &:first-child {\n    margin-top: 0;\n  }\n}\n\n.media,\n.media-body {\n  zoom: 1;\n  overflow: hidden;\n}\n\n.media-body {\n  width: 10000px;\n}\n\n.media-object {\n  display: block;\n}\n\n.media-right,\n.media > .pull-right {\n  padding-left: 10px;\n}\n\n.media-left,\n.media > .pull-left {\n  padding-right: 10px;\n}\n\n.media-left,\n.media-right,\n.media-body {\n  display: table-cell;\n  vertical-align: top;\n}\n\n.media-middle {\n  vertical-align: middle;\n}\n\n.media-bottom {\n  vertical-align: bottom;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n\n// Media list variation\n//\n// Undo default ul/ol styles\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_mixins.scss",
    "content": "// Mixins\n// --------------------------------------------------\n\n// Utilities\n@import \"mixins/hide-text\";\n@import \"mixins/opacity\";\n@import \"mixins/image\";\n@import \"mixins/labels\";\n@import \"mixins/reset-filter\";\n@import \"mixins/resize\";\n@import \"mixins/responsive-visibility\";\n@import \"mixins/size\";\n@import \"mixins/tab-focus\";\n@import \"mixins/text-emphasis\";\n@import \"mixins/text-overflow\";\n@import \"mixins/vendor-prefixes\";\n\n// Components\n@import \"mixins/alerts\";\n@import \"mixins/buttons\";\n@import \"mixins/panels\";\n@import \"mixins/pagination\";\n@import \"mixins/list-group\";\n@import \"mixins/nav-divider\";\n@import \"mixins/forms\";\n@import \"mixins/progress-bar\";\n@import \"mixins/table-row\";\n\n// Skins\n@import \"mixins/background-variant\";\n@import \"mixins/border-radius\";\n@import \"mixins/gradients\";\n\n// Layout\n@import \"mixins/clearfix\";\n@import \"mixins/center-block\";\n@import \"mixins/nav-vertical-align\";\n@import \"mixins/grid-framework\";\n@import \"mixins/grid\";\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_modals.scss",
    "content": "//\n// Modals\n// --------------------------------------------------\n\n// .modal-open      - body class for killing the scroll\n// .modal           - container to scroll within\n// .modal-dialog    - positioning shell for the actual modal\n// .modal-content   - actual modal w/ bg and corners and shit\n\n// Kill the scroll on the body\n.modal-open {\n  overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n  display: none;\n  overflow: hidden;\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: $zindex-modal;\n  -webkit-overflow-scrolling: touch;\n\n  // Prevent Chrome on Windows from adding a focus outline. For details, see\n  // https://github.com/twbs/bootstrap/pull/10951.\n  outline: 0;\n\n  // When fading in the modal, animate it to slide down\n  &.fade .modal-dialog {\n    @include translate(0, -25%);\n    @include transition-transform(0.3s ease-out);\n  }\n  &.in .modal-dialog { @include translate(0, 0) }\n}\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 10px;\n}\n\n// Actual modal\n.modal-content {\n  position: relative;\n  background-color: $modal-content-bg;\n  border: 1px solid $modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\n  border: 1px solid $modal-content-border-color;\n  border-radius: $border-radius-large;\n  @include box-shadow(0 3px 9px rgba(0,0,0,.5));\n  background-clip: padding-box;\n  // Remove focus outline from opened modal\n  outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: $zindex-modal-background;\n  background-color: $modal-backdrop-bg;\n  // Fade for backdrop\n  &.fade { @include opacity(0); }\n  &.in { @include opacity($modal-backdrop-opacity); }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n  padding: $modal-title-padding;\n  border-bottom: 1px solid $modal-header-border-color;\n  min-height: ($modal-title-padding + $modal-title-line-height);\n}\n// Close icon\n.modal-header .close {\n  margin-top: -2px;\n}\n\n// Title text within header\n.modal-title {\n  margin: 0;\n  line-height: $modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n  position: relative;\n  padding: $modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n  padding: $modal-inner-padding;\n  text-align: right; // right align buttons\n  border-top: 1px solid $modal-footer-border-color;\n  @include clearfix; // clear it in case folks use .pull-* classes on buttons\n\n  // Properly space out buttons\n  .btn + .btn {\n    margin-left: 5px;\n    margin-bottom: 0; // account for input[type=\"submit\"] which gets the bottom margin like all other inputs\n  }\n  // but override that for button groups\n  .btn-group .btn + .btn {\n    margin-left: -1px;\n  }\n  // and override it for block buttons as well\n  .btn-block + .btn-block {\n    margin-left: 0;\n  }\n}\n\n// Measure scrollbar width for padding body during modal show/hide\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n\n// Scale up the modal\n@media (min-width: $screen-sm-min) {\n  // Automatically set modal's width for larger viewports\n  .modal-dialog {\n    width: $modal-md;\n    margin: 30px auto;\n  }\n  .modal-content {\n    @include box-shadow(0 5px 15px rgba(0,0,0,.5));\n  }\n\n  // Modal sizes\n  .modal-sm { width: $modal-sm; }\n}\n\n@media (min-width: $screen-md-min) {\n  .modal-lg { width: $modal-lg; }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_navbar.scss",
    "content": "//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n  position: relative;\n  min-height: $navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n  margin-bottom: $navbar-margin-bottom;\n  border: 1px solid transparent;\n\n  // Prevent floats from breaking the navbar\n  @include clearfix;\n\n  @media (min-width: $grid-float-breakpoint) {\n    border-radius: $navbar-border-radius;\n  }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n  @include clearfix;\n\n  @media (min-width: $grid-float-breakpoint) {\n    float: left;\n  }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n  overflow-x: visible;\n  padding-right: $navbar-padding-horizontal;\n  padding-left:  $navbar-padding-horizontal;\n  border-top: 1px solid transparent;\n  box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n  @include clearfix;\n  -webkit-overflow-scrolling: touch;\n\n  &.in {\n    overflow-y: auto;\n  }\n\n  @media (min-width: $grid-float-breakpoint) {\n    width: auto;\n    border-top: 0;\n    box-shadow: none;\n\n    &.collapse {\n      display: block !important;\n      height: auto !important;\n      padding-bottom: 0; // Override default setting\n      overflow: visible !important;\n    }\n\n    &.in {\n      overflow-y: visible;\n    }\n\n    // Undo the collapse side padding for navbars with containers to ensure\n    // alignment of right-aligned contents.\n    .navbar-fixed-top &,\n    .navbar-static-top &,\n    .navbar-fixed-bottom & {\n      padding-left: 0;\n      padding-right: 0;\n    }\n  }\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  .navbar-collapse {\n    max-height: $navbar-collapse-max-height;\n\n    @media (max-device-width: $screen-xs-min) and (orientation: landscape) {\n      max-height: 200px;\n    }\n  }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n  > .navbar-header,\n  > .navbar-collapse {\n    margin-right: -$navbar-padding-horizontal;\n    margin-left:  -$navbar-padding-horizontal;\n\n    @media (min-width: $grid-float-breakpoint) {\n      margin-right: 0;\n      margin-left:  0;\n    }\n  }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n  z-index: $zindex-navbar;\n  border-width: 0 0 1px;\n\n  @media (min-width: $grid-float-breakpoint) {\n    border-radius: 0;\n  }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: $zindex-navbar-fixed;\n\n  // Undo the rounded corners\n  @media (min-width: $grid-float-breakpoint) {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0; // override .navbar defaults\n  border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n  float: left;\n  padding: $navbar-padding-vertical $navbar-padding-horizontal;\n  font-size: $font-size-large;\n  line-height: $line-height-computed;\n  height: $navbar-height;\n\n  &:hover,\n  &:focus {\n    text-decoration: none;\n  }\n\n  > img {\n    display: block;\n  }\n\n  @media (min-width: $grid-float-breakpoint) {\n    .navbar > .container &,\n    .navbar > .container-fluid & {\n      margin-left: -$navbar-padding-horizontal;\n    }\n  }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n  position: relative;\n  float: right;\n  margin-right: $navbar-padding-horizontal;\n  padding: 9px 10px;\n  @include navbar-vertical-align(34px);\n  background-color: transparent;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid transparent;\n  border-radius: $border-radius-base;\n\n  // We remove the `outline` here, but later compensate by attaching `:hover`\n  // styles to `:focus`.\n  &:focus {\n    outline: 0;\n  }\n\n  // Bars\n  .icon-bar {\n    display: block;\n    width: 22px;\n    height: 2px;\n    border-radius: 1px;\n  }\n  .icon-bar + .icon-bar {\n    margin-top: 4px;\n  }\n\n  @media (min-width: $grid-float-breakpoint) {\n    display: none;\n  }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n  margin: ($navbar-padding-vertical / 2) (-$navbar-padding-horizontal);\n\n  > li > a {\n    padding-top:    10px;\n    padding-bottom: 10px;\n    line-height: $line-height-computed;\n  }\n\n  @media (max-width: $grid-float-breakpoint-max) {\n    // Dropdowns get custom display when collapsed\n    .open .dropdown-menu {\n      position: static;\n      float: none;\n      width: auto;\n      margin-top: 0;\n      background-color: transparent;\n      border: 0;\n      box-shadow: none;\n      > li > a,\n      .dropdown-header {\n        padding: 5px 15px 5px 25px;\n      }\n      > li > a {\n        line-height: $line-height-computed;\n        &:hover,\n        &:focus {\n          background-image: none;\n        }\n      }\n    }\n  }\n\n  // Uncollapse the nav\n  @media (min-width: $grid-float-breakpoint) {\n    float: left;\n    margin: 0;\n\n    > li {\n      float: left;\n      > a {\n        padding-top:    $navbar-padding-vertical;\n        padding-bottom: $navbar-padding-vertical;\n      }\n    }\n  }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n  margin-left: -$navbar-padding-horizontal;\n  margin-right: -$navbar-padding-horizontal;\n  padding: 10px $navbar-padding-horizontal;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  $shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n  @include box-shadow($shadow);\n\n  // Mixin behavior for optimum display\n  @include form-inline;\n\n  .form-group {\n    @media (max-width: $grid-float-breakpoint-max) {\n      margin-bottom: 5px;\n\n      &:last-child {\n        margin-bottom: 0;\n      }\n    }\n  }\n\n  // Vertically center in expanded, horizontal navbar\n  @include navbar-vertical-align($input-height-base);\n\n  // Undo 100% width for pull classes\n  @media (min-width: $grid-float-breakpoint) {\n    width: auto;\n    border: 0;\n    margin-left: 0;\n    margin-right: 0;\n    padding-top: 0;\n    padding-bottom: 0;\n    @include box-shadow(none);\n  }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  @include border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  margin-bottom: 0;\n  @include border-top-radius($navbar-border-radius);\n  @include border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n  @include navbar-vertical-align($input-height-base);\n\n  &.btn-sm {\n    @include navbar-vertical-align($input-height-small);\n  }\n  &.btn-xs {\n    @include navbar-vertical-align(22);\n  }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n  @include navbar-vertical-align($line-height-computed);\n\n  @media (min-width: $grid-float-breakpoint) {\n    float: left;\n    margin-left: $navbar-padding-horizontal;\n    margin-right: $navbar-padding-horizontal;\n  }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n//\n// Declared after the navbar components to ensure more specificity on the margins.\n\n@media (min-width: $grid-float-breakpoint) {\n  .navbar-left {\n    float: left !important;\n  }\n  .navbar-right {\n    float: right !important;\n  margin-right: -$navbar-padding-horizontal;\n\n    ~ .navbar-right {\n      margin-right: 0;\n    }\n  }\n}\n\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n  background-color: $navbar-default-bg;\n  border-color: $navbar-default-border;\n\n  .navbar-brand {\n    color: $navbar-default-brand-color;\n    &:hover,\n    &:focus {\n      color: $navbar-default-brand-hover-color;\n      background-color: $navbar-default-brand-hover-bg;\n    }\n  }\n\n  .navbar-text {\n    color: $navbar-default-color;\n  }\n\n  .navbar-nav {\n    > li > a {\n      color: $navbar-default-link-color;\n\n      &:hover,\n      &:focus {\n        color: $navbar-default-link-hover-color;\n        background-color: $navbar-default-link-hover-bg;\n      }\n    }\n    > .active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: $navbar-default-link-active-color;\n        background-color: $navbar-default-link-active-bg;\n      }\n    }\n    > .disabled > a {\n      &,\n      &:hover,\n      &:focus {\n        color: $navbar-default-link-disabled-color;\n        background-color: $navbar-default-link-disabled-bg;\n      }\n    }\n  }\n\n  .navbar-toggle {\n    border-color: $navbar-default-toggle-border-color;\n    &:hover,\n    &:focus {\n      background-color: $navbar-default-toggle-hover-bg;\n    }\n    .icon-bar {\n      background-color: $navbar-default-toggle-icon-bar-bg;\n    }\n  }\n\n  .navbar-collapse,\n  .navbar-form {\n    border-color: $navbar-default-border;\n  }\n\n  // Dropdown menu items\n  .navbar-nav {\n    // Remove background color from open dropdown\n    > .open > a {\n      &,\n      &:hover,\n      &:focus {\n        background-color: $navbar-default-link-active-bg;\n        color: $navbar-default-link-active-color;\n      }\n    }\n\n    @media (max-width: $grid-float-breakpoint-max) {\n      // Dropdowns get custom display when collapsed\n      .open .dropdown-menu {\n        > li > a {\n          color: $navbar-default-link-color;\n          &:hover,\n          &:focus {\n            color: $navbar-default-link-hover-color;\n            background-color: $navbar-default-link-hover-bg;\n          }\n        }\n        > .active > a {\n          &,\n          &:hover,\n          &:focus {\n            color: $navbar-default-link-active-color;\n            background-color: $navbar-default-link-active-bg;\n          }\n        }\n        > .disabled > a {\n          &,\n          &:hover,\n          &:focus {\n            color: $navbar-default-link-disabled-color;\n            background-color: $navbar-default-link-disabled-bg;\n          }\n        }\n      }\n    }\n  }\n\n\n  // Links in navbars\n  //\n  // Add a class to ensure links outside the navbar nav are colored correctly.\n\n  .navbar-link {\n    color: $navbar-default-link-color;\n    &:hover {\n      color: $navbar-default-link-hover-color;\n    }\n  }\n\n  .btn-link {\n    color: $navbar-default-link-color;\n    &:hover,\n    &:focus {\n      color: $navbar-default-link-hover-color;\n    }\n    &[disabled],\n    fieldset[disabled] & {\n      &:hover,\n      &:focus {\n        color: $navbar-default-link-disabled-color;\n      }\n    }\n  }\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n  background-color: $navbar-inverse-bg;\n  border-color: $navbar-inverse-border;\n\n  .navbar-brand {\n    color: $navbar-inverse-brand-color;\n    &:hover,\n    &:focus {\n      color: $navbar-inverse-brand-hover-color;\n      background-color: $navbar-inverse-brand-hover-bg;\n    }\n  }\n\n  .navbar-text {\n    color: $navbar-inverse-color;\n  }\n\n  .navbar-nav {\n    > li > a {\n      color: $navbar-inverse-link-color;\n\n      &:hover,\n      &:focus {\n        color: $navbar-inverse-link-hover-color;\n        background-color: $navbar-inverse-link-hover-bg;\n      }\n    }\n    > .active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: $navbar-inverse-link-active-color;\n        background-color: $navbar-inverse-link-active-bg;\n      }\n    }\n    > .disabled > a {\n      &,\n      &:hover,\n      &:focus {\n        color: $navbar-inverse-link-disabled-color;\n        background-color: $navbar-inverse-link-disabled-bg;\n      }\n    }\n  }\n\n  // Darken the responsive nav toggle\n  .navbar-toggle {\n    border-color: $navbar-inverse-toggle-border-color;\n    &:hover,\n    &:focus {\n      background-color: $navbar-inverse-toggle-hover-bg;\n    }\n    .icon-bar {\n      background-color: $navbar-inverse-toggle-icon-bar-bg;\n    }\n  }\n\n  .navbar-collapse,\n  .navbar-form {\n    border-color: darken($navbar-inverse-bg, 7%);\n  }\n\n  // Dropdowns\n  .navbar-nav {\n    > .open > a {\n      &,\n      &:hover,\n      &:focus {\n        background-color: $navbar-inverse-link-active-bg;\n        color: $navbar-inverse-link-active-color;\n      }\n    }\n\n    @media (max-width: $grid-float-breakpoint-max) {\n      // Dropdowns get custom display\n      .open .dropdown-menu {\n        > .dropdown-header {\n          border-color: $navbar-inverse-border;\n        }\n        .divider {\n          background-color: $navbar-inverse-border;\n        }\n        > li > a {\n          color: $navbar-inverse-link-color;\n          &:hover,\n          &:focus {\n            color: $navbar-inverse-link-hover-color;\n            background-color: $navbar-inverse-link-hover-bg;\n          }\n        }\n        > .active > a {\n          &,\n          &:hover,\n          &:focus {\n            color: $navbar-inverse-link-active-color;\n            background-color: $navbar-inverse-link-active-bg;\n          }\n        }\n        > .disabled > a {\n          &,\n          &:hover,\n          &:focus {\n            color: $navbar-inverse-link-disabled-color;\n            background-color: $navbar-inverse-link-disabled-bg;\n          }\n        }\n      }\n    }\n  }\n\n  .navbar-link {\n    color: $navbar-inverse-link-color;\n    &:hover {\n      color: $navbar-inverse-link-hover-color;\n    }\n  }\n\n  .btn-link {\n    color: $navbar-inverse-link-color;\n    &:hover,\n    &:focus {\n      color: $navbar-inverse-link-hover-color;\n    }\n    &[disabled],\n    fieldset[disabled] & {\n      &:hover,\n      &:focus {\n        color: $navbar-inverse-link-disabled-color;\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_navs.scss",
    "content": "//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n  margin-bottom: 0;\n  padding-left: 0; // Override default ul/ol\n  list-style: none;\n  @include clearfix;\n\n  > li {\n    position: relative;\n    display: block;\n\n    > a {\n      position: relative;\n      display: block;\n      padding: $nav-link-padding;\n      &:hover,\n      &:focus {\n        text-decoration: none;\n        background-color: $nav-link-hover-bg;\n      }\n    }\n\n    // Disabled state sets text to gray and nukes hover/tab effects\n    &.disabled > a {\n      color: $nav-disabled-link-color;\n\n      &:hover,\n      &:focus {\n        color: $nav-disabled-link-hover-color;\n        text-decoration: none;\n        background-color: transparent;\n        cursor: $cursor-disabled;\n      }\n    }\n  }\n\n  // Open dropdowns\n  .open > a {\n    &,\n    &:hover,\n    &:focus {\n      background-color: $nav-link-hover-bg;\n      border-color: $link-color;\n    }\n  }\n\n  // Nav dividers (deprecated with v3.0.1)\n  //\n  // This should have been removed in v3 with the dropping of `.nav-list`, but\n  // we missed it. We don't currently support this anywhere, but in the interest\n  // of maintaining backward compatibility in case you use it, it's deprecated.\n  .nav-divider {\n    @include nav-divider;\n  }\n\n  // Prevent IE8 from misplacing imgs\n  //\n  // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n  > li > a > img {\n    max-width: none;\n  }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n  border-bottom: 1px solid $nav-tabs-border-color;\n  > li {\n    float: left;\n    // Make the list-items overlay the bottom border\n    margin-bottom: -1px;\n\n    // Actual tabs (as links)\n    > a {\n      margin-right: 2px;\n      line-height: $line-height-base;\n      border: 1px solid transparent;\n      border-radius: $border-radius-base $border-radius-base 0 0;\n      &:hover {\n        border-color: $nav-tabs-link-hover-border-color $nav-tabs-link-hover-border-color $nav-tabs-border-color;\n      }\n    }\n\n    // Active state, and its :hover to override normal :hover\n    &.active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: $nav-tabs-active-link-hover-color;\n        background-color: $nav-tabs-active-link-hover-bg;\n        border: 1px solid $nav-tabs-active-link-hover-border-color;\n        border-bottom-color: transparent;\n        cursor: default;\n      }\n    }\n  }\n  // pulling this in mainly for less shorthand\n  &.nav-justified {\n    @extend .nav-justified;\n    @extend .nav-tabs-justified;\n  }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n  > li {\n    float: left;\n\n    // Links rendered as pills\n    > a {\n      border-radius: $nav-pills-border-radius;\n    }\n    + li {\n      margin-left: 2px;\n    }\n\n    // Active state\n    &.active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: $nav-pills-active-link-hover-color;\n        background-color: $nav-pills-active-link-hover-bg;\n      }\n    }\n  }\n}\n\n\n// Stacked pills\n.nav-stacked {\n  > li {\n    float: none;\n    + li {\n      margin-top: 2px;\n      margin-left: 0; // no need for this gap between nav items\n    }\n  }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n  width: 100%;\n\n  > li {\n    float: none;\n    > a {\n      text-align: center;\n      margin-bottom: 5px;\n    }\n  }\n\n  > .dropdown .dropdown-menu {\n    top: auto;\n    left: auto;\n  }\n\n  @media (min-width: $screen-sm-min) {\n    > li {\n      display: table-cell;\n      width: 1%;\n      > a {\n        margin-bottom: 0;\n      }\n    }\n  }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n  border-bottom: 0;\n\n  > li > a {\n    // Override margin from .nav-tabs\n    margin-right: 0;\n    border-radius: $border-radius-base;\n  }\n\n  > .active > a,\n  > .active > a:hover,\n  > .active > a:focus {\n    border: 1px solid $nav-tabs-justified-link-border-color;\n  }\n\n  @media (min-width: $screen-sm-min) {\n    > li > a {\n      border-bottom: 1px solid $nav-tabs-justified-link-border-color;\n      border-radius: $border-radius-base $border-radius-base 0 0;\n    }\n    > .active > a,\n    > .active > a:hover,\n    > .active > a:focus {\n      border-bottom-color: $nav-tabs-justified-active-link-border-color;\n    }\n  }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n  > .tab-pane {\n    display: none;\n  }\n  > .active {\n    display: block;\n  }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n  // make dropdown border overlap tab border\n  margin-top: -1px;\n  // Remove the top rounded corners here since there is a hard edge above the menu\n  @include border-top-radius(0);\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_normalize.scss",
    "content": "/*! normalize.css v3.0.2 | MIT License | git.io/normalize */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS text size adjust after orientation change, without disabling\n//    user zoom.\n//\n\nhtml {\n  font-family: sans-serif; // 1\n  -ms-text-size-adjust: 100%; // 2\n  -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n  margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n  display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block; // 1\n  vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n  display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n  background-color: transparent;\n}\n\n//\n// Improve readability when focused and also mouse hovered in all browsers.\n//\n\na:active,\na:hover {\n  outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n//\n\nabbr[title] {\n  border-bottom: 1px dotted;\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n  font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n  font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n  background: #ff0;\n  color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n  font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\n\nsup {\n  top: -0.5em;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n  border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n  overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n  margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n  -moz-box-sizing: content-box;\n  box-sizing: content-box;\n  height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n  overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n//    Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  color: inherit; // 1\n  font: inherit; // 2\n  margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n  overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n  text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n//    and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n//    `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button; // 2\n  cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  border: 0;\n  padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n  line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  box-sizing: border-box; // 1\n  padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome\n//    (include `-moz` to future-proof).\n//\n\ninput[type=\"search\"] {\n  -webkit-appearance: textfield; // 1\n  -moz-box-sizing: content-box;\n  -webkit-box-sizing: content-box; // 2\n  box-sizing: content-box;\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n  border: 1px solid #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n  border: 0; // 1\n  padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n  overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n  font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\n\ntd,\nth {\n  padding: 0;\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_pager.scss",
    "content": "//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n  padding-left: 0;\n  margin: $line-height-computed 0;\n  list-style: none;\n  text-align: center;\n  @include clearfix;\n  li {\n    display: inline;\n    > a,\n    > span {\n      display: inline-block;\n      padding: 5px 14px;\n      background-color: $pager-bg;\n      border: 1px solid $pager-border;\n      border-radius: $pager-border-radius;\n    }\n\n    > a:hover,\n    > a:focus {\n      text-decoration: none;\n      background-color: $pager-hover-bg;\n    }\n  }\n\n  .next {\n    > a,\n    > span {\n      float: right;\n    }\n  }\n\n  .previous {\n    > a,\n    > span {\n      float: left;\n    }\n  }\n\n  .disabled {\n    > a,\n    > a:hover,\n    > a:focus,\n    > span {\n      color: $pager-disabled-color;\n      background-color: $pager-bg;\n      cursor: $cursor-disabled;\n    }\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_pagination.scss",
    "content": "//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: $line-height-computed 0;\n  border-radius: $border-radius-base;\n\n  > li {\n    display: inline; // Remove list-style and block-level defaults\n    > a,\n    > span {\n      position: relative;\n      float: left; // Collapse white-space\n      padding: $padding-base-vertical $padding-base-horizontal;\n      line-height: $line-height-base;\n      text-decoration: none;\n      color: $pagination-color;\n      background-color: $pagination-bg;\n      border: 1px solid $pagination-border;\n      margin-left: -1px;\n    }\n    &:first-child {\n      > a,\n      > span {\n        margin-left: 0;\n        @include border-left-radius($border-radius-base);\n      }\n    }\n    &:last-child {\n      > a,\n      > span {\n        @include border-right-radius($border-radius-base);\n      }\n    }\n  }\n\n  > li > a,\n  > li > span {\n    &:hover,\n    &:focus {\n      color: $pagination-hover-color;\n      background-color: $pagination-hover-bg;\n      border-color: $pagination-hover-border;\n    }\n  }\n\n  > .active > a,\n  > .active > span {\n    &,\n    &:hover,\n    &:focus {\n      z-index: 2;\n      color: $pagination-active-color;\n      background-color: $pagination-active-bg;\n      border-color: $pagination-active-border;\n      cursor: default;\n    }\n  }\n\n  > .disabled {\n    > span,\n    > span:hover,\n    > span:focus,\n    > a,\n    > a:hover,\n    > a:focus {\n      color: $pagination-disabled-color;\n      background-color: $pagination-disabled-bg;\n      border-color: $pagination-disabled-border;\n      cursor: $cursor-disabled;\n    }\n  }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n  @include pagination-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $border-radius-large);\n}\n\n// Small\n.pagination-sm {\n  @include pagination-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $border-radius-small);\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_panels.scss",
    "content": "//\n// Panels\n// --------------------------------------------------\n\n\n// Base class\n.panel {\n  margin-bottom: $line-height-computed;\n  background-color: $panel-bg;\n  border: 1px solid transparent;\n  border-radius: $panel-border-radius;\n  @include box-shadow(0 1px 1px rgba(0,0,0,.05));\n}\n\n// Panel contents\n.panel-body {\n  padding: $panel-body-padding;\n  @include clearfix;\n}\n\n// Optional heading\n.panel-heading {\n  padding: $panel-heading-padding;\n  border-bottom: 1px solid transparent;\n  @include border-top-radius(($panel-border-radius - 1));\n\n  > .dropdown .dropdown-toggle {\n    color: inherit;\n  }\n}\n\n// Within heading, strip any `h*` tag of its default margins for spacing.\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: ceil(($font-size-base * 1.125));\n  color: inherit;\n\n  > a,\n  > small,\n  > .small,\n  > small > a,\n  > .small > a {\n    color: inherit;\n  }\n}\n\n// Optional footer (stays gray in every modifier class)\n.panel-footer {\n  padding: $panel-footer-padding;\n  background-color: $panel-footer-bg;\n  border-top: 1px solid $panel-inner-border;\n  @include border-bottom-radius(($panel-border-radius - 1));\n}\n\n\n// List groups in panels\n//\n// By default, space out list group content from panel headings to account for\n// any kind of custom content between the two.\n\n.panel {\n  > .list-group,\n  > .panel-collapse > .list-group {\n    margin-bottom: 0;\n\n    .list-group-item {\n      border-width: 1px 0;\n      border-radius: 0;\n    }\n\n    // Add border top radius for first one\n    &:first-child {\n      .list-group-item:first-child {\n        border-top: 0;\n        @include border-top-radius(($panel-border-radius - 1));\n      }\n    }\n    // Add border bottom radius for last one\n    &:last-child {\n      .list-group-item:last-child {\n        border-bottom: 0;\n        @include border-bottom-radius(($panel-border-radius - 1));\n      }\n    }\n  }\n}\n// Collapse space between when there's no additional content.\n.panel-heading + .list-group {\n  .list-group-item:first-child {\n    border-top-width: 0;\n  }\n}\n.list-group + .panel-footer {\n  border-top-width: 0;\n}\n\n// Tables in panels\n//\n// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and\n// watch it go full width.\n\n.panel {\n  > .table,\n  > .table-responsive > .table,\n  > .panel-collapse > .table {\n    margin-bottom: 0;\n\n    caption {\n      padding-left: $panel-body-padding;\n      padding-right: $panel-body-padding;\n    }\n  }\n  // Add border top radius for first one\n  > .table:first-child,\n  > .table-responsive:first-child > .table:first-child {\n    @include border-top-radius(($panel-border-radius - 1));\n\n    > thead:first-child,\n    > tbody:first-child {\n      > tr:first-child {\n        border-top-left-radius: ($panel-border-radius - 1);\n        border-top-right-radius: ($panel-border-radius - 1);\n\n        td:first-child,\n        th:first-child {\n          border-top-left-radius: ($panel-border-radius - 1);\n        }\n        td:last-child,\n        th:last-child {\n          border-top-right-radius: ($panel-border-radius - 1);\n        }\n      }\n    }\n  }\n  // Add border bottom radius for last one\n  > .table:last-child,\n  > .table-responsive:last-child > .table:last-child {\n    @include border-bottom-radius(($panel-border-radius - 1));\n\n    > tbody:last-child,\n    > tfoot:last-child {\n      > tr:last-child {\n        border-bottom-left-radius: ($panel-border-radius - 1);\n        border-bottom-right-radius: ($panel-border-radius - 1);\n\n        td:first-child,\n        th:first-child {\n          border-bottom-left-radius: ($panel-border-radius - 1);\n        }\n        td:last-child,\n        th:last-child {\n          border-bottom-right-radius: ($panel-border-radius - 1);\n        }\n      }\n    }\n  }\n  > .panel-body + .table,\n  > .panel-body + .table-responsive,\n  > .table + .panel-body,\n  > .table-responsive + .panel-body {\n    border-top: 1px solid $table-border-color;\n  }\n  > .table > tbody:first-child > tr:first-child th,\n  > .table > tbody:first-child > tr:first-child td {\n    border-top: 0;\n  }\n  > .table-bordered,\n  > .table-responsive > .table-bordered {\n    border: 0;\n    > thead,\n    > tbody,\n    > tfoot {\n      > tr {\n        > th:first-child,\n        > td:first-child {\n          border-left: 0;\n        }\n        > th:last-child,\n        > td:last-child {\n          border-right: 0;\n        }\n      }\n    }\n    > thead,\n    > tbody {\n      > tr:first-child {\n        > td,\n        > th {\n          border-bottom: 0;\n        }\n      }\n    }\n    > tbody,\n    > tfoot {\n      > tr:last-child {\n        > td,\n        > th {\n          border-bottom: 0;\n        }\n      }\n    }\n  }\n  > .table-responsive {\n    border: 0;\n    margin-bottom: 0;\n  }\n}\n\n\n// Collapsable panels (aka, accordion)\n//\n// Wrap a series of panels in `.panel-group` to turn them into an accordion with\n// the help of our collapse JavaScript plugin.\n\n.panel-group {\n  margin-bottom: $line-height-computed;\n\n  // Tighten up margin so it's only between panels\n  .panel {\n    margin-bottom: 0;\n    border-radius: $panel-border-radius;\n\n    + .panel {\n      margin-top: 5px;\n    }\n  }\n\n  .panel-heading {\n    border-bottom: 0;\n\n    + .panel-collapse > .panel-body,\n    + .panel-collapse > .list-group {\n      border-top: 1px solid $panel-inner-border;\n    }\n  }\n\n  .panel-footer {\n    border-top: 0;\n    + .panel-collapse .panel-body {\n      border-bottom: 1px solid $panel-inner-border;\n    }\n  }\n}\n\n\n// Contextual variations\n.panel-default {\n  @include panel-variant($panel-default-border, $panel-default-text, $panel-default-heading-bg, $panel-default-border);\n}\n.panel-primary {\n  @include panel-variant($panel-primary-border, $panel-primary-text, $panel-primary-heading-bg, $panel-primary-border);\n}\n.panel-success {\n  @include panel-variant($panel-success-border, $panel-success-text, $panel-success-heading-bg, $panel-success-border);\n}\n.panel-info {\n  @include panel-variant($panel-info-border, $panel-info-text, $panel-info-heading-bg, $panel-info-border);\n}\n.panel-warning {\n  @include panel-variant($panel-warning-border, $panel-warning-text, $panel-warning-heading-bg, $panel-warning-border);\n}\n.panel-danger {\n  @include panel-variant($panel-danger-border, $panel-danger-text, $panel-danger-heading-bg, $panel-danger-border);\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_popovers.scss",
    "content": "//\n// Popovers\n// --------------------------------------------------\n\n\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: $zindex-popover;\n  display: none;\n  max-width: $popover-max-width;\n  padding: 1px;\n  // Reset font and text properties given new insertion method\n  font-family: $font-family-base;\n  font-size: $font-size-base;\n  font-weight: normal;\n  line-height: $line-height-base;\n  text-align: left;\n  background-color: $popover-bg;\n  background-clip: padding-box;\n  border: 1px solid $popover-fallback-border-color;\n  border: 1px solid $popover-border-color;\n  border-radius: $border-radius-large;\n  @include box-shadow(0 5px 10px rgba(0,0,0,.2));\n\n  // Overrides for proper insertion\n  white-space: normal;\n\n  // Offset the popover to account for the popover arrow\n  &.top     { margin-top: -$popover-arrow-width; }\n  &.right   { margin-left: $popover-arrow-width; }\n  &.bottom  { margin-top: $popover-arrow-width; }\n  &.left    { margin-left: -$popover-arrow-width; }\n}\n\n.popover-title {\n  margin: 0; // reset heading margin\n  padding: 8px 14px;\n  font-size: $font-size-base;\n  background-color: $popover-title-bg;\n  border-bottom: 1px solid darken($popover-title-bg, 5%);\n  border-radius: ($border-radius-large - 1) ($border-radius-large - 1) 0 0;\n}\n\n.popover-content {\n  padding: 9px 14px;\n}\n\n// Arrows\n//\n// .arrow is outer, .arrow:after is inner\n\n.popover > .arrow {\n  &,\n  &:after {\n    position: absolute;\n    display: block;\n    width: 0;\n    height: 0;\n    border-color: transparent;\n    border-style: solid;\n  }\n}\n.popover > .arrow {\n  border-width: $popover-arrow-outer-width;\n}\n.popover > .arrow:after {\n  border-width: $popover-arrow-width;\n  content: \"\";\n}\n\n.popover {\n  &.top > .arrow {\n    left: 50%;\n    margin-left: -$popover-arrow-outer-width;\n    border-bottom-width: 0;\n    border-top-color: $popover-arrow-outer-fallback-color; // IE8 fallback\n    border-top-color: $popover-arrow-outer-color;\n    bottom: -$popover-arrow-outer-width;\n    &:after {\n      content: \" \";\n      bottom: 1px;\n      margin-left: -$popover-arrow-width;\n      border-bottom-width: 0;\n      border-top-color: $popover-arrow-color;\n    }\n  }\n  &.right > .arrow {\n    top: 50%;\n    left: -$popover-arrow-outer-width;\n    margin-top: -$popover-arrow-outer-width;\n    border-left-width: 0;\n    border-right-color: $popover-arrow-outer-fallback-color; // IE8 fallback\n    border-right-color: $popover-arrow-outer-color;\n    &:after {\n      content: \" \";\n      left: 1px;\n      bottom: -$popover-arrow-width;\n      border-left-width: 0;\n      border-right-color: $popover-arrow-color;\n    }\n  }\n  &.bottom > .arrow {\n    left: 50%;\n    margin-left: -$popover-arrow-outer-width;\n    border-top-width: 0;\n    border-bottom-color: $popover-arrow-outer-fallback-color; // IE8 fallback\n    border-bottom-color: $popover-arrow-outer-color;\n    top: -$popover-arrow-outer-width;\n    &:after {\n      content: \" \";\n      top: 1px;\n      margin-left: -$popover-arrow-width;\n      border-top-width: 0;\n      border-bottom-color: $popover-arrow-color;\n    }\n  }\n\n  &.left > .arrow {\n    top: 50%;\n    right: -$popover-arrow-outer-width;\n    margin-top: -$popover-arrow-outer-width;\n    border-right-width: 0;\n    border-left-color: $popover-arrow-outer-fallback-color; // IE8 fallback\n    border-left-color: $popover-arrow-outer-color;\n    &:after {\n      content: \" \";\n      right: 1px;\n      border-right-width: 0;\n      border-left-color: $popover-arrow-color;\n      bottom: -$popover-arrow-width;\n    }\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_print.scss",
    "content": "/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n    *,\n    *:before,\n    *:after {\n        background: transparent !important;\n        color: #000 !important; // Black prints faster: h5bp.com/s\n        box-shadow: none !important;\n        text-shadow: none !important;\n    }\n\n    a,\n    a:visited {\n        text-decoration: underline;\n    }\n\n    a[href]:after {\n        content: \" (\" attr(href) \")\";\n    }\n\n    abbr[title]:after {\n        content: \" (\" attr(title) \")\";\n    }\n\n    // Don't show links that are fragment identifiers,\n    // or use the `javascript:` pseudo protocol\n    a[href^=\"#\"]:after,\n    a[href^=\"javascript:\"]:after {\n        content: \"\";\n    }\n\n    pre,\n    blockquote {\n        border: 1px solid #999;\n        page-break-inside: avoid;\n    }\n\n    thead {\n        display: table-header-group; // h5bp.com/t\n    }\n\n    tr,\n    img {\n        page-break-inside: avoid;\n    }\n\n    img {\n        max-width: 100% !important;\n    }\n\n    p,\n    h2,\n    h3 {\n        orphans: 3;\n        widows: 3;\n    }\n\n    h2,\n    h3 {\n        page-break-after: avoid;\n    }\n\n    // Bootstrap specific changes start\n    //\n    // Chrome (OSX) fix for https://github.com/twbs/bootstrap/issues/11245\n    // Once fixed, we can just straight up remove this.\n    select {\n        background: #fff !important;\n    }\n\n    // Bootstrap components\n    .navbar {\n        display: none;\n    }\n    .btn,\n    .dropup > .btn {\n        > .caret {\n            border-top-color: #000 !important;\n        }\n    }\n    .label {\n        border: 1px solid #000;\n    }\n\n    .table {\n        border-collapse: collapse !important;\n\n        td,\n        th {\n            background-color: #fff !important;\n        }\n    }\n    .table-bordered {\n        th,\n        td {\n            border: 1px solid #ddd !important;\n        }\n    }\n\n    // Bootstrap specific changes end\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_progress-bars.scss",
    "content": "//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n  from  { background-position: 40px 0; }\n  to    { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n  from  { background-position: 40px 0; }\n  to    { background-position: 0 0; }\n}\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n  overflow: hidden;\n  height: $line-height-computed;\n  margin-bottom: $line-height-computed;\n  background-color: $progress-bg;\n  border-radius: $progress-border-radius;\n  @include box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n  float: left;\n  width: 0%;\n  height: 100%;\n  font-size: $font-size-small;\n  line-height: $line-height-computed;\n  color: $progress-bar-color;\n  text-align: center;\n  background-color: $progress-bar-bg;\n  @include box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n  @include transition(width .6s ease);\n}\n\n// Striped bars\n//\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar-striped` class, which you just add to an existing\n// `.progress-bar`.\n.progress-striped .progress-bar,\n.progress-bar-striped {\n  @include gradient-striped;\n  background-size: 40px 40px;\n}\n\n// Call animation for the active one\n//\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar.active` approach.\n.progress.active .progress-bar,\n.progress-bar.active {\n  @include animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n  @include progress-bar-variant($progress-bar-success-bg);\n}\n\n.progress-bar-info {\n  @include progress-bar-variant($progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n  @include progress-bar-variant($progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n  @include progress-bar-variant($progress-bar-danger-bg);\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_responsive-embed.scss",
    "content": "// Embeds responsive\n//\n// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n  position: relative;\n  display: block;\n  height: 0;\n  padding: 0;\n  overflow: hidden;\n\n  .embed-responsive-item,\n  iframe,\n  embed,\n  object,\n  video {\n    position: absolute;\n    top: 0;\n    left: 0;\n    bottom: 0;\n    height: 100%;\n    width: 100%;\n    border: 0;\n  }\n}\n\n// Modifier class for 16:9 aspect ratio\n.embed-responsive-16by9 {\n  padding-bottom: 56.25%;\n}\n\n// Modifier class for 4:3 aspect ratio\n.embed-responsive-4by3 {\n  padding-bottom: 75%;\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_responsive-utilities.scss",
    "content": "//\n// Responsive: Utility classes\n// --------------------------------------------------\n\n\n// IE10 in Windows (Phone) 8\n//\n// Support for responsive views via media queries is kind of borked in IE10, for\n// Surface/desktop in split view and for Windows Phone 8. This particular fix\n// must be accompanied by a snippet of JavaScript to sniff the user agent and\n// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at\n// our Getting Started page for more information on this bug.\n//\n// For more information, see the following:\n//\n// Issue: https://github.com/twbs/bootstrap/issues/10497\n// Docs: http://getbootstrap.com/getting-started/#support-ie10-width\n// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/\n// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/\n\n@-ms-viewport {\n  width: device-width;\n}\n\n\n// Visibility utilities\n// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0\n\n@include responsive-invisibility('.visible-xs');\n@include responsive-invisibility('.visible-sm');\n@include responsive-invisibility('.visible-md');\n@include responsive-invisibility('.visible-lg');\n\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n  display: none !important;\n}\n\n@media (max-width: $screen-xs-max) {\n  @include responsive-visibility('.visible-xs');\n}\n.visible-xs-block {\n  @media (max-width: $screen-xs-max) {\n    display: block !important;\n  }\n}\n.visible-xs-inline {\n  @media (max-width: $screen-xs-max) {\n    display: inline !important;\n  }\n}\n.visible-xs-inline-block {\n  @media (max-width: $screen-xs-max) {\n    display: inline-block !important;\n  }\n}\n\n@media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {\n  @include responsive-visibility('.visible-sm');\n}\n.visible-sm-block {\n  @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {\n    display: block !important;\n  }\n}\n.visible-sm-inline {\n  @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {\n    display: inline !important;\n  }\n}\n.visible-sm-inline-block {\n  @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {\n    display: inline-block !important;\n  }\n}\n\n@media (min-width: $screen-md-min) and (max-width: $screen-md-max) {\n  @include responsive-visibility('.visible-md');\n}\n.visible-md-block {\n  @media (min-width: $screen-md-min) and (max-width: $screen-md-max) {\n    display: block !important;\n  }\n}\n.visible-md-inline {\n  @media (min-width: $screen-md-min) and (max-width: $screen-md-max) {\n    display: inline !important;\n  }\n}\n.visible-md-inline-block {\n  @media (min-width: $screen-md-min) and (max-width: $screen-md-max) {\n    display: inline-block !important;\n  }\n}\n\n@media (min-width: $screen-lg-min) {\n  @include responsive-visibility('.visible-lg');\n}\n.visible-lg-block {\n  @media (min-width: $screen-lg-min) {\n    display: block !important;\n  }\n}\n.visible-lg-inline {\n  @media (min-width: $screen-lg-min) {\n    display: inline !important;\n  }\n}\n.visible-lg-inline-block {\n  @media (min-width: $screen-lg-min) {\n    display: inline-block !important;\n  }\n}\n\n@media (max-width: $screen-xs-max) {\n  @include responsive-invisibility('.hidden-xs');\n}\n\n@media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {\n  @include responsive-invisibility('.hidden-sm');\n}\n\n@media (min-width: $screen-md-min) and (max-width: $screen-md-max) {\n  @include responsive-invisibility('.hidden-md');\n}\n\n@media (min-width: $screen-lg-min) {\n  @include responsive-invisibility('.hidden-lg');\n}\n\n\n// Print utilities\n//\n// Media queries are placed on the inside to be mixin-friendly.\n\n// Note: Deprecated .visible-print as of v3.2.0\n\n@include responsive-invisibility('.visible-print');\n\n@media print {\n  @include responsive-visibility('.visible-print');\n}\n.visible-print-block {\n  display: none !important;\n\n  @media print {\n    display: block !important;\n  }\n}\n.visible-print-inline {\n  display: none !important;\n\n  @media print {\n    display: inline !important;\n  }\n}\n.visible-print-inline-block {\n  display: none !important;\n\n  @media print {\n    display: inline-block !important;\n  }\n}\n\n@media print {\n  @include responsive-invisibility('.hidden-print');\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_scaffolding.scss",
    "content": "//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n  @include box-sizing(border-box);\n}\n*:before,\n*:after {\n  @include box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n  font-size: 10px;\n  -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n  font-family: $font-family-base;\n  font-size: $font-size-base;\n  line-height: $line-height-base;\n  color: $text-color;\n  background-color: $body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\n\n// Links\n\na {\n  color: $link-color;\n  text-decoration: none;\n\n  &:hover,\n  &:focus {\n    color: $link-hover-color;\n    text-decoration: $link-hover-decoration;\n  }\n\n  &:focus {\n    @include tab-focus;\n  }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n  margin: 0;\n}\n\n\n// Images\n\nimg {\n  vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n  @include img-responsive;\n}\n\n// Rounded corners\n.img-rounded {\n  border-radius: $border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n  padding: $thumbnail-padding;\n  line-height: $line-height-base;\n  background-color: $thumbnail-bg;\n  border: 1px solid $thumbnail-border;\n  border-radius: $thumbnail-border-radius;\n  @include transition(all .2s ease-in-out);\n\n  // Keep them at most 100% wide\n  @include img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n  border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n  margin-top:    $line-height-computed;\n  margin-bottom: $line-height-computed;\n  border: 0;\n  border-top: 1px solid $hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content/\n\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0,0,0,0);\n  border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n  &:active,\n  &:focus {\n    position: static;\n    width: auto;\n    height: auto;\n    margin: 0;\n    overflow: visible;\n    clip: auto;\n  }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n// Upstream patch for normalize.css submitted: https://github.com/necolas/normalize.css/pull/379 - remove this fix once that is merged\n\n[role=\"button\"] {\n  cursor: pointer;\n}"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_tables.scss",
    "content": "//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n  background-color: $table-bg;\n}\ncaption {\n  padding-top: $table-cell-padding;\n  padding-bottom: $table-cell-padding;\n  color: $text-muted;\n  text-align: left;\n}\nth {\n  text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: $line-height-computed;\n  // Cells\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        padding: $table-cell-padding;\n        line-height: $line-height-base;\n        vertical-align: top;\n        border-top: 1px solid $table-border-color;\n      }\n    }\n  }\n  // Bottom align for column headings\n  > thead > tr > th {\n    vertical-align: bottom;\n    border-bottom: 2px solid $table-border-color;\n  }\n  // Remove top border from thead by default\n  > caption + thead,\n  > colgroup + thead,\n  > thead:first-child {\n    > tr:first-child {\n      > th,\n      > td {\n        border-top: 0;\n      }\n    }\n  }\n  // Account for multiple tbody instances\n  > tbody + tbody {\n    border-top: 2px solid $table-border-color;\n  }\n\n  // Nesting\n  .table {\n    background-color: $body-bg;\n  }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        padding: $table-condensed-cell-padding;\n      }\n    }\n  }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n  border: 1px solid $table-border-color;\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        border: 1px solid $table-border-color;\n      }\n    }\n  }\n  > thead > tr {\n    > th,\n    > td {\n      border-bottom-width: 2px;\n    }\n  }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n  > tbody > tr:nth-of-type(odd) {\n    background-color: $table-bg-accent;\n  }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n  > tbody > tr:hover {\n    background-color: $table-bg-hover;\n  }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n  position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n  float: none;\n  display: table-column;\n}\ntable {\n  td,\n  th {\n    &[class*=\"col-\"] {\n      position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n      float: none;\n      display: table-cell;\n    }\n  }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n@include table-row-variant('active', $table-bg-active);\n@include table-row-variant('success', $state-success-bg);\n@include table-row-variant('info', $state-info-bg);\n@include table-row-variant('warning', $state-warning-bg);\n@include table-row-variant('danger', $state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n  overflow-x: auto;\n  min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n\n  @media screen and (max-width: $screen-xs-max) {\n    width: 100%;\n    margin-bottom: ($line-height-computed * 0.75);\n    overflow-y: hidden;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid $table-border-color;\n\n    // Tighten up spacing\n    > .table {\n      margin-bottom: 0;\n\n      // Ensure the content doesn't wrap\n      > thead,\n      > tbody,\n      > tfoot {\n        > tr {\n          > th,\n          > td {\n            white-space: nowrap;\n          }\n        }\n      }\n    }\n\n    // Special overrides for the bordered tables\n    > .table-bordered {\n      border: 0;\n\n      // Nuke the appropriate borders so that the parent can handle them\n      > thead,\n      > tbody,\n      > tfoot {\n        > tr {\n          > th:first-child,\n          > td:first-child {\n            border-left: 0;\n          }\n          > th:last-child,\n          > td:last-child {\n            border-right: 0;\n          }\n        }\n      }\n\n      // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n      // chances are there will be only one `tr` in a `thead` and that would\n      // remove the border altogether.\n      > tbody,\n      > tfoot {\n        > tr:last-child {\n          > th,\n          > td {\n            border-bottom: 0;\n          }\n        }\n      }\n\n    }\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_theme.scss",
    "content": "\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables\";\n@import \"mixins\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n  text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n  $shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n  @include box-shadow($shadow);\n\n  // Reset the shadow\n  &:active,\n  &.active {\n    @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n  }\n\n  .badge {\n    text-shadow: none;\n  }\n}\n\n// Mixin for generating new styles\n@mixin btn-styles($btn-color: #555) {\n  @include gradient-vertical($start-color: $btn-color, $end-color: darken($btn-color, 12%));\n  @include reset-filter; // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n  background-repeat: repeat-x;\n  border-color: darken($btn-color, 14%);\n\n  &:hover,\n  &:focus  {\n    background-color: darken($btn-color, 12%);\n    background-position: 0 -15px;\n  }\n\n  &:active,\n  &.active {\n    background-color: darken($btn-color, 12%);\n    border-color: darken($btn-color, 14%);\n  }\n\n  &.disabled,\n  &:disabled,\n  &[disabled] {\n    background-color: darken($btn-color, 12%);\n    background-image: none;\n  }\n}\n\n// Common styles\n.btn {\n  // Remove the gradient for the pressed/active state\n  &:active,\n  &.active {\n    background-image: none;\n  }\n}\n\n// Apply the mixin to the buttons\n.btn-default { @include btn-styles($btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { @include btn-styles($btn-primary-bg); }\n.btn-success { @include btn-styles($btn-success-bg); }\n.btn-info    { @include btn-styles($btn-info-bg); }\n.btn-warning { @include btn-styles($btn-warning-bg); }\n.btn-danger  { @include btn-styles($btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n  @include box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  @include gradient-vertical($start-color: $dropdown-link-hover-bg, $end-color: darken($dropdown-link-hover-bg, 5%));\n  background-color: darken($dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  @include gradient-vertical($start-color: $dropdown-link-active-bg, $end-color: darken($dropdown-link-active-bg, 5%));\n  background-color: darken($dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n  @include gradient-vertical($start-color: lighten($navbar-default-bg, 10%), $end-color: $navbar-default-bg);\n  @include reset-filter; // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n  border-radius: $navbar-border-radius;\n  $shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n  @include box-shadow($shadow);\n\n  .navbar-nav > .open > a,\n  .navbar-nav > .active > a {\n    @include gradient-vertical($start-color: darken($navbar-default-link-active-bg, 5%), $end-color: darken($navbar-default-link-active-bg, 2%));\n    @include box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n  }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n  text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n  @include gradient-vertical($start-color: lighten($navbar-inverse-bg, 10%), $end-color: $navbar-inverse-bg);\n  @include reset-filter; // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n\n  .navbar-nav > .open > a,\n  .navbar-nav > .active > a {\n    @include gradient-vertical($start-color: $navbar-inverse-link-active-bg, $end-color: lighten($navbar-inverse-link-active-bg, 2.5%));\n    @include box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n  }\n\n  .navbar-brand,\n  .navbar-nav > li > a {\n    text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n  }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: $grid-float-breakpoint-max) {\n  .navbar .navbar-nav .open .dropdown-menu > .active > a {\n    &,\n    &:hover,\n    &:focus {\n      color: #fff;\n      @include gradient-vertical($start-color: $dropdown-link-active-bg, $end-color: darken($dropdown-link-active-bg, 5%));\n    }\n  }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n  text-shadow: 0 1px 0 rgba(255,255,255,.2);\n  $shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n  @include box-shadow($shadow);\n}\n\n// Mixin for generating new styles\n@mixin alert-styles($color) {\n  @include gradient-vertical($start-color: $color, $end-color: darken($color, 7.5%));\n  border-color: darken($color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success    { @include alert-styles($alert-success-bg); }\n.alert-info       { @include alert-styles($alert-info-bg); }\n.alert-warning    { @include alert-styles($alert-warning-bg); }\n.alert-danger     { @include alert-styles($alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n  @include gradient-vertical($start-color: darken($progress-bg, 4%), $end-color: $progress-bg)\n}\n\n// Mixin for generating new styles\n@mixin progress-bar-styles($color) {\n  @include gradient-vertical($start-color: $color, $end-color: darken($color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar            { @include progress-bar-styles($progress-bar-bg); }\n.progress-bar-success    { @include progress-bar-styles($progress-bar-success-bg); }\n.progress-bar-info       { @include progress-bar-styles($progress-bar-info-bg); }\n.progress-bar-warning    { @include progress-bar-styles($progress-bar-warning-bg); }\n.progress-bar-danger     { @include progress-bar-styles($progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n  @include gradient-striped;\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n  border-radius: $border-radius-base;\n  @include box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  text-shadow: 0 -1px 0 darken($list-group-active-bg, 10%);\n  @include gradient-vertical($start-color: $list-group-active-bg, $end-color: darken($list-group-active-bg, 7.5%));\n  border-color: darken($list-group-active-border, 7.5%);\n\n  .badge {\n    text-shadow: none;\n  }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n  @include box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n@mixin panel-heading-styles($color) {\n  @include gradient-vertical($start-color: $color, $end-color: darken($color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading   { @include panel-heading-styles($panel-default-heading-bg); }\n.panel-primary > .panel-heading   { @include panel-heading-styles($panel-primary-heading-bg); }\n.panel-success > .panel-heading   { @include panel-heading-styles($panel-success-heading-bg); }\n.panel-info > .panel-heading      { @include panel-heading-styles($panel-info-heading-bg); }\n.panel-warning > .panel-heading   { @include panel-heading-styles($panel-warning-heading-bg); }\n.panel-danger > .panel-heading    { @include panel-heading-styles($panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n  @include gradient-vertical($start-color: darken($well-bg, 5%), $end-color: $well-bg);\n  border-color: darken($well-bg, 10%);\n  $shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n  @include box-shadow($shadow);\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_thumbnails.scss",
    "content": "//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n  display: block;\n  padding: $thumbnail-padding;\n  margin-bottom: $line-height-computed;\n  line-height: $line-height-base;\n  background-color: $thumbnail-bg;\n  border: 1px solid $thumbnail-border;\n  border-radius: $thumbnail-border-radius;\n  @include transition(border .2s ease-in-out);\n\n  > img,\n  a > img {\n    @include img-responsive;\n    margin-left: auto;\n    margin-right: auto;\n  }\n\n  // [converter] extracted a&:hover, a&:focus, a&.active to a.thumbnail:hover, a.thumbnail:focus, a.thumbnail.active\n\n  // Image captions\n  .caption {\n    padding: $thumbnail-caption-padding;\n    color: $thumbnail-caption-color;\n  }\n}\n\n// Add a hover state for linked versions only\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n  border-color: $link-color;\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_tooltip.scss",
    "content": "//\n// Tooltips\n// --------------------------------------------------\n\n\n// Base class\n.tooltip {\n  position: absolute;\n  z-index: $zindex-tooltip;\n  display: block;\n  // Reset font and text properties given new insertion method\n  font-family: $font-family-base;\n  font-size: $font-size-small;\n  font-weight: normal;\n  line-height: 1.4;\n  @include opacity(0);\n\n  &.in     { @include opacity($tooltip-opacity); }\n  &.top    { margin-top:  -3px; padding: $tooltip-arrow-width 0; }\n  &.right  { margin-left:  3px; padding: 0 $tooltip-arrow-width; }\n  &.bottom { margin-top:   3px; padding: $tooltip-arrow-width 0; }\n  &.left   { margin-left: -3px; padding: 0 $tooltip-arrow-width; }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n  max-width: $tooltip-max-width;\n  padding: 3px 8px;\n  color: $tooltip-color;\n  text-align: center;\n  text-decoration: none;\n  background-color: $tooltip-bg;\n  border-radius: $border-radius-base;\n}\n\n// Arrows\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n// Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1\n.tooltip {\n  &.top .tooltip-arrow {\n    bottom: 0;\n    left: 50%;\n    margin-left: -$tooltip-arrow-width;\n    border-width: $tooltip-arrow-width $tooltip-arrow-width 0;\n    border-top-color: $tooltip-arrow-color;\n  }\n  &.top-left .tooltip-arrow {\n    bottom: 0;\n    right: $tooltip-arrow-width;\n    margin-bottom: -$tooltip-arrow-width;\n    border-width: $tooltip-arrow-width $tooltip-arrow-width 0;\n    border-top-color: $tooltip-arrow-color;\n  }\n  &.top-right .tooltip-arrow {\n    bottom: 0;\n    left: $tooltip-arrow-width;\n    margin-bottom: -$tooltip-arrow-width;\n    border-width: $tooltip-arrow-width $tooltip-arrow-width 0;\n    border-top-color: $tooltip-arrow-color;\n  }\n  &.right .tooltip-arrow {\n    top: 50%;\n    left: 0;\n    margin-top: -$tooltip-arrow-width;\n    border-width: $tooltip-arrow-width $tooltip-arrow-width $tooltip-arrow-width 0;\n    border-right-color: $tooltip-arrow-color;\n  }\n  &.left .tooltip-arrow {\n    top: 50%;\n    right: 0;\n    margin-top: -$tooltip-arrow-width;\n    border-width: $tooltip-arrow-width 0 $tooltip-arrow-width $tooltip-arrow-width;\n    border-left-color: $tooltip-arrow-color;\n  }\n  &.bottom .tooltip-arrow {\n    top: 0;\n    left: 50%;\n    margin-left: -$tooltip-arrow-width;\n    border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;\n    border-bottom-color: $tooltip-arrow-color;\n  }\n  &.bottom-left .tooltip-arrow {\n    top: 0;\n    right: $tooltip-arrow-width;\n    margin-top: -$tooltip-arrow-width;\n    border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;\n    border-bottom-color: $tooltip-arrow-color;\n  }\n  &.bottom-right .tooltip-arrow {\n    top: 0;\n    left: $tooltip-arrow-width;\n    margin-top: -$tooltip-arrow-width;\n    border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;\n    border-bottom-color: $tooltip-arrow-color;\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_type.scss",
    "content": "//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n  font-family: $headings-font-family;\n  font-weight: $headings-font-weight;\n  line-height: $headings-line-height;\n  color: $headings-color;\n\n  small,\n  .small {\n    font-weight: normal;\n    line-height: 1;\n    color: $headings-small-color;\n  }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n  margin-top: $line-height-computed;\n  margin-bottom: ($line-height-computed / 2);\n\n  small,\n  .small {\n    font-size: 65%;\n  }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n  margin-top: ($line-height-computed / 2);\n  margin-bottom: ($line-height-computed / 2);\n\n  small,\n  .small {\n    font-size: 75%;\n  }\n}\n\nh1, .h1 { font-size: $font-size-h1; }\nh2, .h2 { font-size: $font-size-h2; }\nh3, .h3 { font-size: $font-size-h3; }\nh4, .h4 { font-size: $font-size-h4; }\nh5, .h5 { font-size: $font-size-h5; }\nh6, .h6 { font-size: $font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n  margin: 0 0 ($line-height-computed / 2);\n}\n\n.lead {\n  margin-bottom: $line-height-computed;\n  font-size: floor(($font-size-base * 1.15));\n  font-weight: 300;\n  line-height: 1.4;\n\n  @media (min-width: $screen-sm-min) {\n    font-size: ($font-size-base * 1.5);\n  }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n  font-size: floor((100% * $font-size-small / $font-size-base));\n}\n\nmark,\n.mark {\n  background-color: $state-warning-bg;\n  padding: .2em;\n}\n\n// Alignment\n.text-left           { text-align: left; }\n.text-right          { text-align: right; }\n.text-center         { text-align: center; }\n.text-justify        { text-align: justify; }\n.text-nowrap         { white-space: nowrap; }\n\n// Transformation\n.text-lowercase      { text-transform: lowercase; }\n.text-uppercase      { text-transform: uppercase; }\n.text-capitalize     { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n  color: $text-muted;\n}\n\n@include text-emphasis-variant('.text-primary', $brand-primary);\n\n@include text-emphasis-variant('.text-success', $state-success-text);\n\n@include text-emphasis-variant('.text-info', $state-info-text);\n\n@include text-emphasis-variant('.text-warning', $state-warning-text);\n\n@include text-emphasis-variant('.text-danger', $state-danger-text);\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n  // Given the contrast here, this is the only class to have its color inverted\n  // automatically.\n  color: #fff;\n}\n@include bg-variant('.bg-primary', $brand-primary);\n\n@include bg-variant('.bg-success', $state-success-bg);\n\n@include bg-variant('.bg-info', $state-info-bg);\n\n@include bg-variant('.bg-warning', $state-warning-bg);\n\n@include bg-variant('.bg-danger', $state-danger-bg);\n\n\n// Page header\n// -------------------------\n\n.page-header {\n  padding-bottom: (($line-height-computed / 2) - 1);\n  margin: ($line-height-computed * 2) 0 $line-height-computed;\n  border-bottom: 1px solid $page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n  margin-top: 0;\n  margin-bottom: ($line-height-computed / 2);\n  ul,\n  ol {\n    margin-bottom: 0;\n  }\n}\n\n// List options\n\n// [converter] extracted from `.list-unstyled` for libsass compatibility\n@mixin list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n// [converter] extracted as `@mixin list-unstyled` for libsass compatibility\n.list-unstyled {\n  @include list-unstyled;\n}\n\n\n// Inline turns list items into inline-block\n.list-inline {\n  @include list-unstyled;\n  margin-left: -5px;\n\n  > li {\n    display: inline-block;\n    padding-left: 5px;\n    padding-right: 5px;\n  }\n}\n\n// Description Lists\ndl {\n  margin-top: 0; // Remove browser default\n  margin-bottom: $line-height-computed;\n}\ndt,\ndd {\n  line-height: $line-height-base;\n}\ndt {\n  font-weight: bold;\n}\ndd {\n  margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n  dd {\n    @include clearfix; // Clear the floated `dt` if an empty `dd` is present\n  }\n\n  @media (min-width: $grid-float-breakpoint) {\n    dt {\n      float: left;\n      width: ($dl-horizontal-offset - 20);\n      clear: left;\n      text-align: right;\n      @include text-overflow;\n    }\n    dd {\n      margin-left: $dl-horizontal-offset;\n    }\n  }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted $abbr-border-color;\n}\n.initialism {\n  font-size: 90%;\n  @extend .text-uppercase;\n}\n\n// Blockquotes\nblockquote {\n  padding: ($line-height-computed / 2) $line-height-computed;\n  margin: 0 0 $line-height-computed;\n  font-size: $blockquote-font-size;\n  border-left: 5px solid $blockquote-border-color;\n\n  p,\n  ul,\n  ol {\n    &:last-child {\n      margin-bottom: 0;\n    }\n  }\n\n  // Note: Deprecated small and .small as of v3.1.0\n  // Context: https://github.com/twbs/bootstrap/issues/11660\n  footer,\n  small,\n  .small {\n    display: block;\n    font-size: 80%; // back to default font-size\n    line-height: $line-height-base;\n    color: $blockquote-small-color;\n\n    &:before {\n      content: '\\2014 \\00A0'; // em dash, nbsp\n    }\n  }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  border-right: 5px solid $blockquote-border-color;\n  border-left: 0;\n  text-align: right;\n\n  // Account for citation\n  footer,\n  small,\n  .small {\n    &:before { content: ''; }\n    &:after {\n      content: '\\00A0 \\2014'; // nbsp, em dash\n    }\n  }\n}\n\n// Addresses\naddress {\n  margin-bottom: $line-height-computed;\n  font-style: normal;\n  line-height: $line-height-base;\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_utilities.scss",
    "content": "//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n  @include clearfix;\n}\n.center-block {\n  @include center-block;\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  @include text-hide;\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n  display: none !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n  position: fixed;\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_variables.scss",
    "content": "$bootstrap-sass-asset-helper: false !default;\n//\n// Variables\n// --------------------------------------------------\n\n\n//== Colors\n//\n//## Gray and brand colors for use across Bootstrap.\n\n$gray-base:              #000 !default;\n$gray-darker:            lighten($gray-base, 13.5%) !default; // #222\n$gray-dark:              lighten($gray-base, 20%) !default;   // #333\n$gray:                   lighten($gray-base, 33.5%) !default; // #555\n$gray-light:             lighten($gray-base, 46.7%) !default; // #777\n$gray-lighter:           lighten($gray-base, 93.5%) !default; // #eee\n\n$brand-primary:         darken(#428bca, 6.5%) !default; // #337ab7\n$brand-success:         #5cb85c !default;\n$brand-info:            #5bc0de !default;\n$brand-warning:         #f0ad4e !default;\n$brand-danger:          #d9534f !default;\n\n\n//== Scaffolding\n//\n//## Settings for some of the most global styles.\n\n//** Background color for `<body>`.\n$body-bg:               #fff !default;\n//** Global text color on `<body>`.\n$text-color:            $gray-dark !default;\n\n//** Global textual link color.\n$link-color:            $brand-primary !default;\n//** Link hover color set via `darken()` function.\n$link-hover-color:      darken($link-color, 15%) !default;\n//** Link hover decoration.\n$link-hover-decoration: underline !default;\n\n\n//== Typography\n//\n//## Font, line-height, and color for body text, headings, and more.\n\n$font-family-sans-serif:  \"Helvetica Neue\", Helvetica, Arial, sans-serif !default;\n$font-family-serif:       Georgia, \"Times New Roman\", Times, serif !default;\n//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.\n$font-family-monospace:   Menlo, Monaco, Consolas, \"Courier New\", monospace !default;\n$font-family-base:        $font-family-sans-serif !default;\n\n$font-size-base:          14px !default;\n$font-size-large:         ceil(($font-size-base * 1.25)) !default; // ~18px\n$font-size-small:         ceil(($font-size-base * 0.85)) !default; // ~12px\n\n$font-size-h1:            floor(($font-size-base * 2.6)) !default; // ~36px\n$font-size-h2:            floor(($font-size-base * 2.15)) !default; // ~30px\n$font-size-h3:            ceil(($font-size-base * 1.7)) !default; // ~24px\n$font-size-h4:            ceil(($font-size-base * 1.25)) !default; // ~18px\n$font-size-h5:            $font-size-base !default;\n$font-size-h6:            ceil(($font-size-base * 0.85)) !default; // ~12px\n\n//** Unit-less `line-height` for use in components like buttons.\n$line-height-base:        1.428571429 !default; // 20/14\n//** Computed \"line-height\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\n$line-height-computed:    floor(($font-size-base * $line-height-base)) !default; // ~20px\n\n//** By default, this inherits from the `<body>`.\n$headings-font-family:    inherit !default;\n$headings-font-weight:    500 !default;\n$headings-line-height:    1.1 !default;\n$headings-color:          inherit !default;\n\n\n//== Iconography\n//\n//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.\n\n//** Load fonts from this directory.\n\n// [converter] If $bootstrap-sass-asset-helper if used, provide path relative to the assets load path.\n// [converter] This is because some asset helpers, such as Sprockets, do not work with file-relative paths.\n$icon-font-path: if($bootstrap-sass-asset-helper, \"bootstrap/\", \"../fonts/bootstrap/\") !default;\n\n//** File name for all font files.\n$icon-font-name:          \"glyphicons-halflings-regular\" !default;\n//** Element ID within SVG icon file.\n$icon-font-svg-id:        \"glyphicons_halflingsregular\" !default;\n\n\n//== Components\n//\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).\n\n$padding-base-vertical:     6px !default;\n$padding-base-horizontal:   12px !default;\n\n$padding-large-vertical:    10px !default;\n$padding-large-horizontal:  16px !default;\n\n$padding-small-vertical:    5px !default;\n$padding-small-horizontal:  10px !default;\n\n$padding-xs-vertical:       1px !default;\n$padding-xs-horizontal:     5px !default;\n\n$line-height-large:         1.3333333 !default; // extra decimals for Win 8.1 Chrome\n$line-height-small:         1.5 !default;\n\n$border-radius-base:        4px !default;\n$border-radius-large:       6px !default;\n$border-radius-small:       3px !default;\n\n//** Global color for active items (e.g., navs or dropdowns).\n$component-active-color:    #fff !default;\n//** Global background color for active items (e.g., navs or dropdowns).\n$component-active-bg:       $brand-primary !default;\n\n//** Width of the `border` for generating carets that indicator dropdowns.\n$caret-width-base:          4px !default;\n//** Carets increase slightly in size for larger components.\n$caret-width-large:         5px !default;\n\n\n//== Tables\n//\n//## Customizes the `.table` component with basic values, each used across all table variations.\n\n//** Padding for `<th>`s and `<td>`s.\n$table-cell-padding:            8px !default;\n//** Padding for cells in `.table-condensed`.\n$table-condensed-cell-padding:  5px !default;\n\n//** Default background color used for all tables.\n$table-bg:                      transparent !default;\n//** Background color used for `.table-striped`.\n$table-bg-accent:               #f9f9f9 !default;\n//** Background color used for `.table-hover`.\n$table-bg-hover:                #f5f5f5 !default;\n$table-bg-active:               $table-bg-hover !default;\n\n//** Border color for table and cell borders.\n$table-border-color:            #ddd !default;\n\n\n//== Buttons\n//\n//## For each of Bootstrap's buttons, define text, background and border color.\n\n$btn-font-weight:                normal !default;\n\n$btn-default-color:              #333 !default;\n$btn-default-bg:                 #fff !default;\n$btn-default-border:             #ccc !default;\n\n$btn-primary-color:              #fff !default;\n$btn-primary-bg:                 $brand-primary !default;\n$btn-primary-border:             darken($btn-primary-bg, 5%) !default;\n\n$btn-success-color:              #fff !default;\n$btn-success-bg:                 $brand-success !default;\n$btn-success-border:             darken($btn-success-bg, 5%) !default;\n\n$btn-info-color:                 #fff !default;\n$btn-info-bg:                    $brand-info !default;\n$btn-info-border:                darken($btn-info-bg, 5%) !default;\n\n$btn-warning-color:              #fff !default;\n$btn-warning-bg:                 $brand-warning !default;\n$btn-warning-border:             darken($btn-warning-bg, 5%) !default;\n\n$btn-danger-color:               #fff !default;\n$btn-danger-bg:                  $brand-danger !default;\n$btn-danger-border:              darken($btn-danger-bg, 5%) !default;\n\n$btn-link-disabled-color:        $gray-light !default;\n\n\n//== Forms\n//\n//##\n\n//** `<input>` background color\n$input-bg:                       #fff !default;\n//** `<input disabled>` background color\n$input-bg-disabled:              $gray-lighter !default;\n\n//** Text color for `<input>`s\n$input-color:                    $gray !default;\n//** `<input>` border color\n$input-border:                   #ccc !default;\n\n// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4\n//** Default `.form-control` border radius\n// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.\n$input-border-radius:            $border-radius-base !default;\n//** Large `.form-control` border radius\n$input-border-radius-large:      $border-radius-large !default;\n//** Small `.form-control` border radius\n$input-border-radius-small:      $border-radius-small !default;\n\n//** Border color for inputs on focus\n$input-border-focus:             #66afe9 !default;\n\n//** Placeholder text color\n$input-color-placeholder:        #999 !default;\n\n//** Default `.form-control` height\n$input-height-base:              ($line-height-computed + ($padding-base-vertical * 2) + 2) !default;\n//** Large `.form-control` height\n$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default;\n//** Small `.form-control` height\n$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default;\n\n//** `.form-group` margin\n$form-group-margin-bottom:       15px !default;\n\n$legend-color:                   $gray-dark !default;\n$legend-border-color:            #e5e5e5 !default;\n\n//** Background color for textual input addons\n$input-group-addon-bg:           $gray-lighter !default;\n//** Border color for textual input addons\n$input-group-addon-border-color: $input-border !default;\n\n//** Disabled cursor for form controls and buttons.\n$cursor-disabled:                not-allowed !default;\n\n\n//== Dropdowns\n//\n//## Dropdown menu container and contents.\n\n//** Background for the dropdown menu.\n$dropdown-bg:                    #fff !default;\n//** Dropdown menu `border-color`.\n$dropdown-border:                rgba(0,0,0,.15) !default;\n//** Dropdown menu `border-color` **for IE8**.\n$dropdown-fallback-border:       #ccc !default;\n//** Divider color for between dropdown items.\n$dropdown-divider-bg:            #e5e5e5 !default;\n\n//** Dropdown link text color.\n$dropdown-link-color:            $gray-dark !default;\n//** Hover color for dropdown links.\n$dropdown-link-hover-color:      darken($gray-dark, 5%) !default;\n//** Hover background for dropdown links.\n$dropdown-link-hover-bg:         #f5f5f5 !default;\n\n//** Active dropdown menu item text color.\n$dropdown-link-active-color:     $component-active-color !default;\n//** Active dropdown menu item background color.\n$dropdown-link-active-bg:        $component-active-bg !default;\n\n//** Disabled dropdown menu item background color.\n$dropdown-link-disabled-color:   $gray-light !default;\n\n//** Text color for headers within dropdown menus.\n$dropdown-header-color:          $gray-light !default;\n\n//** Deprecated `$dropdown-caret-color` as of v3.1.0\n$dropdown-caret-color:           #000 !default;\n\n\n//-- Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n//\n// Note: These variables are not generated into the Customizer.\n\n$zindex-navbar:            1000 !default;\n$zindex-dropdown:          1000 !default;\n$zindex-popover:           1060 !default;\n$zindex-tooltip:           1070 !default;\n$zindex-navbar-fixed:      1030 !default;\n$zindex-modal-background:  1040 !default;\n$zindex-modal:             1050 !default;\n\n\n//== Media queries breakpoints\n//\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n// Extra small screen / phone\n//** Deprecated `$screen-xs` as of v3.0.1\n$screen-xs:                  480px !default;\n//** Deprecated `$screen-xs-min` as of v3.2.0\n$screen-xs-min:              $screen-xs !default;\n//** Deprecated `$screen-phone` as of v3.0.1\n$screen-phone:               $screen-xs-min !default;\n\n// Small screen / tablet\n//** Deprecated `$screen-sm` as of v3.0.1\n$screen-sm:                  768px !default;\n$screen-sm-min:              $screen-sm !default;\n//** Deprecated `$screen-tablet` as of v3.0.1\n$screen-tablet:              $screen-sm-min !default;\n\n// Medium screen / desktop\n//** Deprecated `$screen-md` as of v3.0.1\n$screen-md:                  992px !default;\n$screen-md-min:              $screen-md !default;\n//** Deprecated `$screen-desktop` as of v3.0.1\n$screen-desktop:             $screen-md-min !default;\n\n// Large screen / wide desktop\n//** Deprecated `$screen-lg` as of v3.0.1\n$screen-lg:                  1200px !default;\n$screen-lg-min:              $screen-lg !default;\n//** Deprecated `$screen-lg-desktop` as of v3.0.1\n$screen-lg-desktop:          $screen-lg-min !default;\n\n// So media queries don't overlap when required, provide a maximum\n$screen-xs-max:              ($screen-sm-min - 1) !default;\n$screen-sm-max:              ($screen-md-min - 1) !default;\n$screen-md-max:              ($screen-lg-min - 1) !default;\n\n\n//== Grid system\n//\n//## Define your custom responsive grid.\n\n//** Number of columns in the grid.\n$grid-columns:              12 !default;\n//** Padding between columns. Gets divided in half for the left and right.\n$grid-gutter-width:         30px !default;\n// Navbar collapse\n//** Point at which the navbar becomes uncollapsed.\n$grid-float-breakpoint:     $screen-sm-min !default;\n//** Point at which the navbar begins collapsing.\n$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default;\n\n\n//== Container sizes\n//\n//## Define the maximum width of `.container` for different screen sizes.\n\n// Small screen / tablet\n$container-tablet:             (720px + $grid-gutter-width) !default;\n//** For `$screen-sm-min` and up.\n$container-sm:                 $container-tablet !default;\n\n// Medium screen / desktop\n$container-desktop:            (940px + $grid-gutter-width) !default;\n//** For `$screen-md-min` and up.\n$container-md:                 $container-desktop !default;\n\n// Large screen / wide desktop\n$container-large-desktop:      (1140px + $grid-gutter-width) !default;\n//** For `$screen-lg-min` and up.\n$container-lg:                 $container-large-desktop !default;\n\n\n//== Navbar\n//\n//##\n\n// Basics of a navbar\n$navbar-height:                    50px !default;\n$navbar-margin-bottom:             $line-height-computed !default;\n$navbar-border-radius:             $border-radius-base !default;\n$navbar-padding-horizontal:        floor(($grid-gutter-width / 2)) !default;\n$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2) !default;\n$navbar-collapse-max-height:       340px !default;\n\n$navbar-default-color:             #777 !default;\n$navbar-default-bg:                #f8f8f8 !default;\n$navbar-default-border:            darken($navbar-default-bg, 6.5%) !default;\n\n// Navbar links\n$navbar-default-link-color:                #777 !default;\n$navbar-default-link-hover-color:          #333 !default;\n$navbar-default-link-hover-bg:             transparent !default;\n$navbar-default-link-active-color:         #555 !default;\n$navbar-default-link-active-bg:            darken($navbar-default-bg, 6.5%) !default;\n$navbar-default-link-disabled-color:       #ccc !default;\n$navbar-default-link-disabled-bg:          transparent !default;\n\n// Navbar brand label\n$navbar-default-brand-color:               $navbar-default-link-color !default;\n$navbar-default-brand-hover-color:         darken($navbar-default-brand-color, 10%) !default;\n$navbar-default-brand-hover-bg:            transparent !default;\n\n// Navbar toggle\n$navbar-default-toggle-hover-bg:           #ddd !default;\n$navbar-default-toggle-icon-bar-bg:        #888 !default;\n$navbar-default-toggle-border-color:       #ddd !default;\n\n\n// Inverted navbar\n// Reset inverted navbar basics\n$navbar-inverse-color:                      lighten($gray-light, 15%) !default;\n$navbar-inverse-bg:                         #222 !default;\n$navbar-inverse-border:                     darken($navbar-inverse-bg, 10%) !default;\n\n// Inverted navbar links\n$navbar-inverse-link-color:                 lighten($gray-light, 15%) !default;\n$navbar-inverse-link-hover-color:           #fff !default;\n$navbar-inverse-link-hover-bg:              transparent !default;\n$navbar-inverse-link-active-color:          $navbar-inverse-link-hover-color !default;\n$navbar-inverse-link-active-bg:             darken($navbar-inverse-bg, 10%) !default;\n$navbar-inverse-link-disabled-color:        #444 !default;\n$navbar-inverse-link-disabled-bg:           transparent !default;\n\n// Inverted navbar brand label\n$navbar-inverse-brand-color:                $navbar-inverse-link-color !default;\n$navbar-inverse-brand-hover-color:          #fff !default;\n$navbar-inverse-brand-hover-bg:             transparent !default;\n\n// Inverted navbar toggle\n$navbar-inverse-toggle-hover-bg:            #333 !default;\n$navbar-inverse-toggle-icon-bar-bg:         #fff !default;\n$navbar-inverse-toggle-border-color:        #333 !default;\n\n\n//== Navs\n//\n//##\n\n//=== Shared nav styles\n$nav-link-padding:                          10px 15px !default;\n$nav-link-hover-bg:                         $gray-lighter !default;\n\n$nav-disabled-link-color:                   $gray-light !default;\n$nav-disabled-link-hover-color:             $gray-light !default;\n\n//== Tabs\n$nav-tabs-border-color:                     #ddd !default;\n\n$nav-tabs-link-hover-border-color:          $gray-lighter !default;\n\n$nav-tabs-active-link-hover-bg:             $body-bg !default;\n$nav-tabs-active-link-hover-color:          $gray !default;\n$nav-tabs-active-link-hover-border-color:   #ddd !default;\n\n$nav-tabs-justified-link-border-color:            #ddd !default;\n$nav-tabs-justified-active-link-border-color:     $body-bg !default;\n\n//== Pills\n$nav-pills-border-radius:                   $border-radius-base !default;\n$nav-pills-active-link-hover-bg:            $component-active-bg !default;\n$nav-pills-active-link-hover-color:         $component-active-color !default;\n\n\n//== Pagination\n//\n//##\n\n$pagination-color:                     $link-color !default;\n$pagination-bg:                        #fff !default;\n$pagination-border:                    #ddd !default;\n\n$pagination-hover-color:               $link-hover-color !default;\n$pagination-hover-bg:                  $gray-lighter !default;\n$pagination-hover-border:              #ddd !default;\n\n$pagination-active-color:              #fff !default;\n$pagination-active-bg:                 $brand-primary !default;\n$pagination-active-border:             $brand-primary !default;\n\n$pagination-disabled-color:            $gray-light !default;\n$pagination-disabled-bg:               #fff !default;\n$pagination-disabled-border:           #ddd !default;\n\n\n//== Pager\n//\n//##\n\n$pager-bg:                             $pagination-bg !default;\n$pager-border:                         $pagination-border !default;\n$pager-border-radius:                  15px !default;\n\n$pager-hover-bg:                       $pagination-hover-bg !default;\n\n$pager-active-bg:                      $pagination-active-bg !default;\n$pager-active-color:                   $pagination-active-color !default;\n\n$pager-disabled-color:                 $pagination-disabled-color !default;\n\n\n//== Jumbotron\n//\n//##\n\n$jumbotron-padding:              30px !default;\n$jumbotron-color:                inherit !default;\n$jumbotron-bg:                   $gray-lighter !default;\n$jumbotron-heading-color:        inherit !default;\n$jumbotron-font-size:            ceil(($font-size-base * 1.5)) !default;\n\n\n//== Form states and alerts\n//\n//## Define colors for form feedback states and, by default, alerts.\n\n$state-success-text:             #3c763d !default;\n$state-success-bg:               #dff0d8 !default;\n$state-success-border:           darken(adjust-hue($state-success-bg, -10), 5%) !default;\n\n$state-info-text:                #31708f !default;\n$state-info-bg:                  #d9edf7 !default;\n$state-info-border:              darken(adjust-hue($state-info-bg, -10), 7%) !default;\n\n$state-warning-text:             #8a6d3b !default;\n$state-warning-bg:               #fcf8e3 !default;\n$state-warning-border:           darken(adjust-hue($state-warning-bg, -10), 5%) !default;\n\n$state-danger-text:              #a94442 !default;\n$state-danger-bg:                #f2dede !default;\n$state-danger-border:            darken(adjust-hue($state-danger-bg, -10), 5%) !default;\n\n\n//== Tooltips\n//\n//##\n\n//** Tooltip max width\n$tooltip-max-width:           200px !default;\n//** Tooltip text color\n$tooltip-color:               #fff !default;\n//** Tooltip background color\n$tooltip-bg:                  #000 !default;\n$tooltip-opacity:             .9 !default;\n\n//** Tooltip arrow width\n$tooltip-arrow-width:         5px !default;\n//** Tooltip arrow color\n$tooltip-arrow-color:         $tooltip-bg !default;\n\n\n//== Popovers\n//\n//##\n\n//** Popover body background color\n$popover-bg:                          #fff !default;\n//** Popover maximum width\n$popover-max-width:                   276px !default;\n//** Popover border color\n$popover-border-color:                rgba(0,0,0,.2) !default;\n//** Popover fallback border color\n$popover-fallback-border-color:       #ccc !default;\n\n//** Popover title background color\n$popover-title-bg:                    darken($popover-bg, 3%) !default;\n\n//** Popover arrow width\n$popover-arrow-width:                 10px !default;\n//** Popover arrow color\n$popover-arrow-color:                 $popover-bg !default;\n\n//** Popover outer arrow width\n$popover-arrow-outer-width:           ($popover-arrow-width + 1) !default;\n//** Popover outer arrow color\n$popover-arrow-outer-color:           fade_in($popover-border-color, 0.05) !default;\n//** Popover outer arrow fallback color\n$popover-arrow-outer-fallback-color:  darken($popover-fallback-border-color, 20%) !default;\n\n\n//== Labels\n//\n//##\n\n//** Default label background color\n$label-default-bg:            $gray-light !default;\n//** Primary label background color\n$label-primary-bg:            $brand-primary !default;\n//** Success label background color\n$label-success-bg:            $brand-success !default;\n//** Info label background color\n$label-info-bg:               $brand-info !default;\n//** Warning label background color\n$label-warning-bg:            $brand-warning !default;\n//** Danger label background color\n$label-danger-bg:             $brand-danger !default;\n\n//** Default label text color\n$label-color:                 #fff !default;\n//** Default text color of a linked label\n$label-link-hover-color:      #fff !default;\n\n\n//== Modals\n//\n//##\n\n//** Padding applied to the modal body\n$modal-inner-padding:         15px !default;\n\n//** Padding applied to the modal title\n$modal-title-padding:         15px !default;\n//** Modal title line-height\n$modal-title-line-height:     $line-height-base !default;\n\n//** Background color of modal content area\n$modal-content-bg:                             #fff !default;\n//** Modal content border color\n$modal-content-border-color:                   rgba(0,0,0,.2) !default;\n//** Modal content border color **for IE8**\n$modal-content-fallback-border-color:          #999 !default;\n\n//** Modal backdrop background color\n$modal-backdrop-bg:           #000 !default;\n//** Modal backdrop opacity\n$modal-backdrop-opacity:      .5 !default;\n//** Modal header border color\n$modal-header-border-color:   #e5e5e5 !default;\n//** Modal footer border color\n$modal-footer-border-color:   $modal-header-border-color !default;\n\n$modal-lg:                    900px !default;\n$modal-md:                    600px !default;\n$modal-sm:                    300px !default;\n\n\n//== Alerts\n//\n//## Define alert colors, border radius, and padding.\n\n$alert-padding:               15px !default;\n$alert-border-radius:         $border-radius-base !default;\n$alert-link-font-weight:      bold !default;\n\n$alert-success-bg:            $state-success-bg !default;\n$alert-success-text:          $state-success-text !default;\n$alert-success-border:        $state-success-border !default;\n\n$alert-info-bg:               $state-info-bg !default;\n$alert-info-text:             $state-info-text !default;\n$alert-info-border:           $state-info-border !default;\n\n$alert-warning-bg:            $state-warning-bg !default;\n$alert-warning-text:          $state-warning-text !default;\n$alert-warning-border:        $state-warning-border !default;\n\n$alert-danger-bg:             $state-danger-bg !default;\n$alert-danger-text:           $state-danger-text !default;\n$alert-danger-border:         $state-danger-border !default;\n\n\n//== Progress bars\n//\n//##\n\n//** Background color of the whole progress component\n$progress-bg:                 #f5f5f5 !default;\n//** Progress bar text color\n$progress-bar-color:          #fff !default;\n//** Variable for setting rounded corners on progress bar.\n$progress-border-radius:      $border-radius-base !default;\n\n//** Default progress bar color\n$progress-bar-bg:             $brand-primary !default;\n//** Success progress bar color\n$progress-bar-success-bg:     $brand-success !default;\n//** Warning progress bar color\n$progress-bar-warning-bg:     $brand-warning !default;\n//** Danger progress bar color\n$progress-bar-danger-bg:      $brand-danger !default;\n//** Info progress bar color\n$progress-bar-info-bg:        $brand-info !default;\n\n\n//== List group\n//\n//##\n\n//** Background color on `.list-group-item`\n$list-group-bg:                 #fff !default;\n//** `.list-group-item` border color\n$list-group-border:             #ddd !default;\n//** List group border radius\n$list-group-border-radius:      $border-radius-base !default;\n\n//** Background color of single list items on hover\n$list-group-hover-bg:           #f5f5f5 !default;\n//** Text color of active list items\n$list-group-active-color:       $component-active-color !default;\n//** Background color of active list items\n$list-group-active-bg:          $component-active-bg !default;\n//** Border color of active list elements\n$list-group-active-border:      $list-group-active-bg !default;\n//** Text color for content within active list items\n$list-group-active-text-color:  lighten($list-group-active-bg, 40%) !default;\n\n//** Text color of disabled list items\n$list-group-disabled-color:      $gray-light !default;\n//** Background color of disabled list items\n$list-group-disabled-bg:         $gray-lighter !default;\n//** Text color for content within disabled list items\n$list-group-disabled-text-color: $list-group-disabled-color !default;\n\n$list-group-link-color:         #555 !default;\n$list-group-link-hover-color:   $list-group-link-color !default;\n$list-group-link-heading-color: #333 !default;\n\n\n//== Panels\n//\n//##\n\n$panel-bg:                    #fff !default;\n$panel-body-padding:          15px !default;\n$panel-heading-padding:       10px 15px !default;\n$panel-footer-padding:        $panel-heading-padding !default;\n$panel-border-radius:         $border-radius-base !default;\n\n//** Border color for elements within panels\n$panel-inner-border:          #ddd !default;\n$panel-footer-bg:             #f5f5f5 !default;\n\n$panel-default-text:          $gray-dark !default;\n$panel-default-border:        #ddd !default;\n$panel-default-heading-bg:    #f5f5f5 !default;\n\n$panel-primary-text:          #fff !default;\n$panel-primary-border:        $brand-primary !default;\n$panel-primary-heading-bg:    $brand-primary !default;\n\n$panel-success-text:          $state-success-text !default;\n$panel-success-border:        $state-success-border !default;\n$panel-success-heading-bg:    $state-success-bg !default;\n\n$panel-info-text:             $state-info-text !default;\n$panel-info-border:           $state-info-border !default;\n$panel-info-heading-bg:       $state-info-bg !default;\n\n$panel-warning-text:          $state-warning-text !default;\n$panel-warning-border:        $state-warning-border !default;\n$panel-warning-heading-bg:    $state-warning-bg !default;\n\n$panel-danger-text:           $state-danger-text !default;\n$panel-danger-border:         $state-danger-border !default;\n$panel-danger-heading-bg:     $state-danger-bg !default;\n\n\n//== Thumbnails\n//\n//##\n\n//** Padding around the thumbnail image\n$thumbnail-padding:           4px !default;\n//** Thumbnail background color\n$thumbnail-bg:                $body-bg !default;\n//** Thumbnail border color\n$thumbnail-border:            #ddd !default;\n//** Thumbnail border radius\n$thumbnail-border-radius:     $border-radius-base !default;\n\n//** Custom text color for thumbnail captions\n$thumbnail-caption-color:     $text-color !default;\n//** Padding around the thumbnail caption\n$thumbnail-caption-padding:   9px !default;\n\n\n//== Wells\n//\n//##\n\n$well-bg:                     #f5f5f5 !default;\n$well-border:                 darken($well-bg, 7%) !default;\n\n\n//== Badges\n//\n//##\n\n$badge-color:                 #fff !default;\n//** Linked badge text color on hover\n$badge-link-hover-color:      #fff !default;\n$badge-bg:                    $gray-light !default;\n\n//** Badge text color in active nav link\n$badge-active-color:          $link-color !default;\n//** Badge background color in active nav link\n$badge-active-bg:             #fff !default;\n\n$badge-font-weight:           bold !default;\n$badge-line-height:           1 !default;\n$badge-border-radius:         10px !default;\n\n\n//== Breadcrumbs\n//\n//##\n\n$breadcrumb-padding-vertical:   8px !default;\n$breadcrumb-padding-horizontal: 15px !default;\n//** Breadcrumb background color\n$breadcrumb-bg:                 #f5f5f5 !default;\n//** Breadcrumb text color\n$breadcrumb-color:              #ccc !default;\n//** Text color of current page in the breadcrumb\n$breadcrumb-active-color:       $gray-light !default;\n//** Textual separator for between breadcrumb elements\n$breadcrumb-separator:          \"/\" !default;\n\n\n//== Carousel\n//\n//##\n\n$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6) !default;\n\n$carousel-control-color:                      #fff !default;\n$carousel-control-width:                      15% !default;\n$carousel-control-opacity:                    .5 !default;\n$carousel-control-font-size:                  20px !default;\n\n$carousel-indicator-active-bg:                #fff !default;\n$carousel-indicator-border-color:             #fff !default;\n\n$carousel-caption-color:                      #fff !default;\n\n\n//== Close\n//\n//##\n\n$close-font-weight:           bold !default;\n$close-color:                 #000 !default;\n$close-text-shadow:           0 1px 0 #fff !default;\n\n\n//== Code\n//\n//##\n\n$code-color:                  #c7254e !default;\n$code-bg:                     #f9f2f4 !default;\n\n$kbd-color:                   #fff !default;\n$kbd-bg:                      #333 !default;\n\n$pre-bg:                      #f5f5f5 !default;\n$pre-color:                   $gray-dark !default;\n$pre-border-color:            #ccc !default;\n$pre-scrollable-max-height:   340px !default;\n\n\n//== Type\n//\n//##\n\n//** Horizontal offset for forms and lists.\n$component-offset-horizontal: 180px !default;\n//** Text muted color\n$text-muted:                  $gray-light !default;\n//** Abbreviations and acronyms border color\n$abbr-border-color:           $gray-light !default;\n//** Headings small color\n$headings-small-color:        $gray-light !default;\n//** Blockquote small color\n$blockquote-small-color:      $gray-light !default;\n//** Blockquote font size\n$blockquote-font-size:        ($font-size-base * 1.25) !default;\n//** Blockquote border color\n$blockquote-border-color:     $gray-lighter !default;\n//** Page header border color\n$page-header-border-color:    $gray-lighter !default;\n//** Width of horizontal description list titles\n$dl-horizontal-offset:        $component-offset-horizontal !default;\n//** Horizontal line color.\n$hr-border:                   $gray-lighter !default;\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/_wells.scss",
    "content": "//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: $well-bg;\n  border: 1px solid $well-border;\n  border-radius: $border-radius-base;\n  @include box-shadow(inset 0 1px 1px rgba(0,0,0,.05));\n  blockquote {\n    border-color: #ddd;\n    border-color: rgba(0,0,0,.15);\n  }\n}\n\n// Sizes\n.well-lg {\n  padding: 24px;\n  border-radius: $border-radius-large;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: $border-radius-small;\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/flatly-theme/_bootswatch.scss",
    "content": "// Flatly 3.3.4 theme by https://bootswatch.com/flatly/\n// Bootswatch\n// -----------------------------------------------------\n\n// Navbar =====================================================================\n\n.navbar {\n  border-width: 0;\n\n  &-default {\n\n    .badge {\n      background-color: #fff;\n      color: $navbar-default-bg;\n    }\n  }\n\n  &-inverse {\n\n    .badge {\n      background-color: #fff;\n      color: $navbar-inverse-bg;\n    }\n  }\n\n  &-brand {\n    line-height: 1;\n  }\n}\n\n// Buttons ====================================================================\n\n.btn:active {\n  @include box-shadow(none);\n}\n\n.btn-group.open .dropdown-toggle {\n  @include box-shadow(none);\n}\n\n// Typography =================================================================\n\n.text-primary,\n.text-primary:hover {\n  color: $brand-primary;\n}\n\n.text-success,\n.text-success:hover {\n  color: $brand-success;\n}\n\n.text-danger,\n.text-danger:hover {\n  color: $brand-danger;\n}\n\n.text-warning,\n.text-warning:hover {\n  color: $brand-warning;\n}\n\n.text-info,\n.text-info:hover {\n  color: $brand-info;\n}\n\n// Tables =====================================================================\n\ntable,\n.table {\n\n  a:not(.btn) {\n    text-decoration: underline;\n  }\n\n  .dropdown-menu a {\n    text-decoration: none;\n  }\n\n  .success,\n  .warning,\n  .danger,\n  .info {\n    color: #fff;\n\n    > th > a,\n    > td > a,\n    > a {\n      color: #fff;\n    }\n  }\n\n  > thead > tr > th,\n  > tbody > tr > th,\n  > tfoot > tr > th,\n  > thead > tr > td,\n  > tbody > tr > td,\n  > tfoot > tr > td {\n    border: none;\n  }\n\n  &-bordered > thead > tr > th,\n  &-bordered > tbody > tr > th,\n  &-bordered > tfoot > tr > th,\n  &-bordered > thead > tr > td,\n  &-bordered > tbody > tr > td,\n  &-bordered > tfoot > tr > td {\n    border: 1px solid $table-border-color;\n  }\n}\n\n// Forms ======================================================================\n\n.form-control,\ninput, {\n  border-width: 2px;\n  @include box-shadow(none);\n\n  &:focus {\n    @include box-shadow(none);\n  }\n}\n\n.has-warning {\n  .help-block,\n  .control-label,\n  .radio,\n  .checkbox,\n  .radio-inline,\n  .checkbox-inline,\n  .form-control-feedback {\n    color: $brand-warning;\n  }\n\n  .form-control,\n  .form-control:focus {\n    border: 2px solid $brand-warning;\n  }\n\n  .input-group-addon {\n    border-color: $brand-warning;\n  }\n}\n\n.has-error {\n  .help-block,\n  .control-label,\n  .radio,\n  .checkbox,\n  .radio-inline,\n  .checkbox-inline,\n  .form-control-feedback {\n    color: $brand-danger;\n  }\n\n  .form-control,\n  .form-control:focus {\n    border: 2px solid $brand-danger;\n  }\n\n  .input-group-addon {\n    border-color: $brand-danger;\n  }\n}\n\n.has-success {\n  .help-block,\n  .control-label,\n  .radio,\n  .checkbox,\n  .radio-inline,\n  .checkbox-inline,\n  .form-control-feedback {\n    color: $brand-success;\n  }\n\n  .form-control,\n  .form-control:focus {\n    border: 2px solid $brand-success;\n  }\n\n  .input-group-addon {\n    border-color: $brand-success;\n  }\n}\n\n// Navs =======================================================================\n\n.nav {\n  .open > a,\n  .open > a:hover,\n  .open > a:focus {\n    border-color: transparent;\n  }\n}\n\n.pager {\n  a,\n  a:hover {\n    color: #fff;\n  }\n\n  .disabled {\n    &>a,\n    &>a:hover,\n    &>a:focus,\n    &>span {\n      background-color: $pagination-disabled-bg;\n    }\n  }\n}\n\n// Indicators =================================================================\n\n.close {\n  color: #fff;\n  text-decoration: none;\n  opacity: 0.4;\n\n  &:hover,\n  &:focus {\n    color: #fff;\n    opacity: 1;\n  }\n}\n\n.alert {\n\n  .alert-link {\n    color: #fff;\n    text-decoration: underline;\n  }\n}\n\n// Progress bars ==============================================================\n\n.progress {\n  height: 10px;\n  @include box-shadow(none);\n  .progress-bar {\n    font-size: 10px;\n    line-height: 10px;\n  }\n}\n\n// Containers =================================================================\n\n.well {\n  @include box-shadow(none);\n}\n\na.list-group-item {\n\n  &.active,\n  &.active:hover,\n  &.active:focus {\n    border-color: $list-group-border;\n  }\n\n  &-success {\n    &.active {\n      background-color: $state-success-bg;\n    }\n\n    &.active:hover,\n    &.active:focus {\n      background-color: darken($state-success-bg, 5%);\n    }\n  }\n\n  &-warning {\n    &.active {\n      background-color: $state-warning-bg;\n    }\n\n    &.active:hover,\n    &.active:focus {\n      background-color: darken($state-warning-bg, 5%);\n    }\n  }\n\n  &-danger {\n    &.active {\n      background-color: $state-danger-bg;\n    }\n\n    &.active:hover,\n    &.active:focus {\n      background-color: darken($state-danger-bg, 5%);\n    }\n  }\n}\n\n.panel {\n  &-default {\n    .close {\n      color: $text-color;\n    }\n  }\n}\n\n.modal {\n  .close {\n    color: $text-color;\n  }\n}\n\n.popover {\n  color: $text-color;\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/flatly-theme/_variables.scss",
    "content": "// Flatly 3.3.4 theme by https://bootswatch.com/flatly/\n// Variables\n// --------------------------------------------------\n\n\n//== Colors\n//\n//## Gray and brand colors for use across Bootstrap.\n\n$gray-base:              #000;\n$gray-darker:            lighten($gray-base, 13.5%); // #222\n$gray-dark:              #7b8a8b;   // #333\n$gray:                   #95a5a6; // #555\n$gray-light:             #b4bcc2;   // #999\n$gray-lighter:           #ecf0f1; // #eee\n\n$brand-primary:         #2C3E50;\n$brand-success:         #18BC9C;\n$brand-info:            #3498DB;\n$brand-warning:         #F39C12;\n$brand-danger:          #E74C3C;\n\n\n//== Scaffolding\n//\n//## Settings for some of the most global styles.\n\n//** Background color for `<body>`.\n$body-bg:               #fff;\n//** Global text color on `<body>`.\n$text-color:            $brand-primary;\n\n//** Global textual link color.\n$link-color:            $brand-success;\n//** Link hover color set via `darken()` function.\n$link-hover-color:      $link-color;\n//** Link hover decoration.\n$link-hover-decoration: underline;\n\n\n//== Typography\n//\n//## Font, line-height, and color for body text, headings, and more.\n\n$font-family-sans-serif:  \"Lato\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n$font-family-serif:       Georgia, \"Times New Roman\", Times, serif;\n//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.\n$font-family-monospace:   Menlo, Monaco, Consolas, \"Courier New\", monospace;\n$font-family-base:        $font-family-sans-serif;\n\n$font-size-base:          15px;\n$font-size-large:         ceil(($font-size-base * 1.25)); // ~18px\n$font-size-small:         ceil(($font-size-base * 0.85)); // ~12px\n\n$font-size-h1:            floor(($font-size-base * 2.6)); // ~36px\n$font-size-h2:            floor(($font-size-base * 2.15)); // ~30px\n$font-size-h3:            ceil(($font-size-base * 1.7)); // ~24px\n$font-size-h4:            ceil(($font-size-base * 1.25)); // ~18px\n$font-size-h5:            $font-size-base;\n$font-size-h6:            ceil(($font-size-base * 0.85)); // ~12px\n\n//** Unit-less `line-height` for use in components like buttons.\n$line-height-base:        1.428571429; // 20/14\n//** Computed \"line-height\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\n$line-height-computed:    floor(($font-size-base * $line-height-base)); // ~20px\n\n//** By default, this inherits from the `<body>`.\n$headings-font-family:    $font-family-base;\n$headings-font-weight:    400;\n$headings-line-height:    1.1;\n$headings-color:          inherit;\n\n\n//== Iconography\n//\n//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.\n\n//** Load fonts from this directory.\n$icon-font-path:          \"../fonts/\";\n//** File name for all font files.\n$icon-font-name:          \"glyphicons-halflings-regular\";\n//** Element ID within SVG icon file.\n$icon-font-svg-id:        \"glyphicons_halflingsregular\";\n\n\n//== Components\n//\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).\n\n$padding-base-vertical:     10px;\n$padding-base-horizontal:   15px;\n\n$padding-large-vertical:    18px;\n$padding-large-horizontal:  27px;\n\n$padding-small-vertical:    6px;\n$padding-small-horizontal:  9px;\n\n$padding-xs-vertical:       1px;\n$padding-xs-horizontal:     5px;\n\n$line-height-large:         1.3333333; // extra decimals for Win 8.1 Chrome\n$line-height-small:         1.5;\n\n$border-radius-base:        4px;\n$border-radius-large:       6px;\n$border-radius-small:       3px;\n\n//** Global color for active items (e.g., navs or dropdowns).\n$component-active-color:    #fff;\n//** Global background color for active items (e.g., navs or dropdowns).\n$component-active-bg:       $brand-primary;\n\n//** Width of the `border` for generating carets that indicator dropdowns.\n$caret-width-base:          4px;\n//** Carets increase slightly in size for larger components.\n$caret-width-large:         5px;\n\n\n//== Tables\n//\n//## Customizes the `.table` component with basic values, each used across all table variations.\n\n//** Padding for `<th>`s and `<td>`s.\n$table-cell-padding:            8px;\n//** Padding for cells in `.table-condensed`.\n$table-condensed-cell-padding:  5px;\n\n//** Default background color used for all tables.\n$table-bg:                      transparent;\n//** Background color used for `.table-striped`.\n$table-bg-accent:               #f9f9f9;\n//** Background color used for `.table-hover`.\n$table-bg-hover:                $gray-lighter;\n$table-bg-active:               $table-bg-hover;\n\n//** Border color for table and cell borders.\n$table-border-color:            $gray-lighter;\n\n\n//== Buttons\n//\n//## For each of Bootstrap's buttons, define text, background and border color.\n\n$btn-font-weight:                normal;\n\n$btn-default-color:              #fff;\n$btn-default-bg:                 $gray;\n$btn-default-border:             $btn-default-bg;\n\n$btn-primary-color:              $btn-default-color;\n$btn-primary-bg:                 $brand-primary;\n$btn-primary-border:             $btn-primary-bg;\n\n$btn-success-color:              $btn-default-color;\n$btn-success-bg:                 $brand-success;\n$btn-success-border:             $btn-success-bg;\n\n$btn-info-color:                 $btn-default-color;\n$btn-info-bg:                    $brand-info;\n$btn-info-border:                $btn-info-bg;\n\n$btn-warning-color:              $btn-default-color;\n$btn-warning-bg:                 $brand-warning;\n$btn-warning-border:             $btn-warning-bg;\n\n$btn-danger-color:               $btn-default-color;\n$btn-danger-bg:                  $brand-danger;\n$btn-danger-border:              $btn-danger-bg;\n\n$btn-link-disabled-color:        $gray-light;\n\n\n//== Forms\n//\n//##\n\n//** `<input>` background color\n$input-bg:                       #fff;\n//** `<input disabled>` background color\n$input-bg-disabled:              $gray-lighter;\n\n//** Text color for `<input>`s\n$input-color:                    $text-color;\n//** `<input>` border color\n$input-border:                   #dce4ec;\n\n// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4\n//** Default `.form-control` border radius\n// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.\n$input-border-radius:            $border-radius-base;\n//** Large `.form-control` border radius\n$input-border-radius-large:      $border-radius-large;\n//** Small `.form-control` border radius\n$input-border-radius-small:      $border-radius-small;\n\n//** Border color for inputs on focus\n$input-border-focus:             $brand-primary;\n\n//** Placeholder text color\n$input-color-placeholder:        #acb6c0;\n\n//** Default `.form-control` height\n$input-height-base:              ($line-height-computed + ($padding-base-vertical * 2) + 2);\n//** Large `.form-control` height\n$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2);\n//** Small `.form-control` height\n$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2);\n\n//** `.form-group` margin\n$form-group-margin-bottom:       15px;\n\n$legend-color:                   $text-color;\n$legend-border-color:            transparent;\n\n//** Background color for textual input addons\n$input-group-addon-bg:           $gray-lighter;\n//** Border color for textual input addons\n$input-group-addon-border-color: $input-border;\n\n//** Disabled cursor for form controls and buttons.\n$cursor-disabled:                not-allowed;\n\n\n//== Dropdowns\n//\n//## Dropdown menu container and contents.\n\n//** Background for the dropdown menu.\n$dropdown-bg:                    #fff;\n//** Dropdown menu `border-color`.\n$dropdown-border:                rgba(0,0,0,.15);\n//** Dropdown menu `border-color` **for IE8**.\n$dropdown-fallback-border:       #ccc;\n//** Divider color for between dropdown items.\n$dropdown-divider-bg:            #e5e5e5;\n\n//** Dropdown link text color.\n$dropdown-link-color:            $gray-dark;\n//** Hover color for dropdown links.\n$dropdown-link-hover-color:      #fff;\n//** Hover background for dropdown links.\n$dropdown-link-hover-bg:         $component-active-bg;\n\n//** Active dropdown menu item text color.\n$dropdown-link-active-color:     #fff;\n//** Active dropdown menu item background color.\n$dropdown-link-active-bg:        $component-active-bg;\n\n//** Disabled dropdown menu item background color.\n$dropdown-link-disabled-color:   $gray-light;\n\n//** Text color for headers within dropdown menus.\n$dropdown-header-color:          $gray-light;\n\n//** Deprecated `$dropdown-caret-color` as of v3.1.0\n$dropdown-caret-color:           #000;\n\n\n//-- Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n//\n// Note: These variables are not generated into the Customizer.\n\n$zindex-navbar:            1000;\n$zindex-dropdown:          1000;\n$zindex-popover:           1060;\n$zindex-tooltip:           1070;\n$zindex-navbar-fixed:      1030;\n$zindex-modal-background:  1040;\n$zindex-modal:             1050;\n\n\n//== Media queries breakpoints\n//\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n// Extra small screen / phone\n//** Deprecated `$screen-xs` as of v3.0.1\n$screen-xs:                  480px;\n//** Deprecated `$screen-xs-min` as of v3.2.0\n$screen-xs-min:              $screen-xs;\n//** Deprecated `$screen-phone` as of v3.0.1\n$screen-phone:               $screen-xs-min;\n\n// Small screen / tablet\n//** Deprecated `$screen-sm` as of v3.0.1\n$screen-sm:                  768px;\n$screen-sm-min:              $screen-sm;\n//** Deprecated `$screen-tablet` as of v3.0.1\n$screen-tablet:              $screen-sm-min;\n\n// Medium screen / desktop\n//** Deprecated `$screen-md` as of v3.0.1\n$screen-md:                  992px;\n$screen-md-min:              $screen-md;\n//** Deprecated `$screen-desktop` as of v3.0.1\n$screen-desktop:             $screen-md-min;\n\n// Large screen / wide desktop\n//** Deprecated `$screen-lg` as of v3.0.1\n$screen-lg:                  1200px;\n$screen-lg-min:              $screen-lg;\n//** Deprecated `$screen-lg-desktop` as of v3.0.1\n$screen-lg-desktop:          $screen-lg-min;\n\n// So media queries don't overlap when required, provide a maximum\n$screen-xs-max:              ($screen-sm-min - 1);\n$screen-sm-max:              ($screen-md-min - 1);\n$screen-md-max:              ($screen-lg-min - 1);\n\n\n//== Grid system\n//\n//## Define your custom responsive grid.\n\n//** Number of columns in the grid.\n$grid-columns:              12;\n//** Padding between columns. Gets divided in half for the left and right.\n$grid-gutter-width:         30px;\n// Navbar collapse\n//** Point at which the navbar becomes uncollapsed.\n$grid-float-breakpoint:     $screen-sm-min;\n//** Point at which the navbar begins collapsing.\n$grid-float-breakpoint-max: ($grid-float-breakpoint - 1);\n\n\n//== Container sizes\n//\n//## Define the maximum width of `.container` for different screen sizes.\n\n// Small screen / tablet\n$container-tablet:             (720px + $grid-gutter-width);\n//** For `$screen-sm-min` and up.\n$container-sm:                 $container-tablet;\n\n// Medium screen / desktop\n$container-desktop:            (940px + $grid-gutter-width);\n//** For `$screen-md-min` and up.\n$container-md:                 $container-desktop;\n\n// Large screen / wide desktop\n$container-large-desktop:      (1140px + $grid-gutter-width);\n//** For `$screen-lg-min` and up.\n$container-lg:                 $container-large-desktop;\n\n\n//== Navbar\n//\n//##\n\n// Basics of a navbar\n$navbar-height:                    60px;\n$navbar-margin-bottom:             $line-height-computed;\n$navbar-border-radius:             $border-radius-base;\n$navbar-padding-horizontal:        floor(($grid-gutter-width / 2));\n$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2);\n$navbar-collapse-max-height:       340px;\n\n$navbar-default-color:             #777;\n$navbar-default-bg:                $brand-primary;\n$navbar-default-border:            transparent;\n\n// Navbar links\n$navbar-default-link-color:                #fff;\n$navbar-default-link-hover-color:          $brand-success;\n$navbar-default-link-hover-bg:             transparent;\n$navbar-default-link-active-color:         #fff;\n$navbar-default-link-active-bg:            darken($navbar-default-bg, 10%);\n$navbar-default-link-disabled-color:       #ccc;\n$navbar-default-link-disabled-bg:          transparent;\n\n// Navbar brand label\n$navbar-default-brand-color:               $navbar-default-link-color;\n$navbar-default-brand-hover-color:         $navbar-default-link-hover-color;\n$navbar-default-brand-hover-bg:            transparent;\n\n// Navbar toggle\n$navbar-default-toggle-hover-bg:           darken($navbar-default-bg, 10%);\n$navbar-default-toggle-icon-bar-bg:        #fff;\n$navbar-default-toggle-border-color:       darken($navbar-default-bg, 10%);\n\n\n// Inverted navbar\n// Reset inverted navbar basics\n$navbar-inverse-color:                      #fff;\n$navbar-inverse-bg:                         $brand-success;\n$navbar-inverse-border:                     transparent;\n\n// Inverted navbar links\n$navbar-inverse-link-color:                 #fff;\n$navbar-inverse-link-hover-color:           $brand-primary;\n$navbar-inverse-link-hover-bg:              transparent;\n$navbar-inverse-link-active-color:          #fff;\n$navbar-inverse-link-active-bg:             darken($navbar-inverse-bg, 5%);\n$navbar-inverse-link-disabled-color:        #ccc;\n$navbar-inverse-link-disabled-bg:           transparent;\n\n// Inverted navbar brand label\n$navbar-inverse-brand-color:                $navbar-inverse-link-color;\n$navbar-inverse-brand-hover-color:          $navbar-inverse-link-hover-color;\n$navbar-inverse-brand-hover-bg:             transparent;\n\n// Inverted navbar toggle\n$navbar-inverse-toggle-hover-bg:            darken($navbar-inverse-bg, 10%);\n$navbar-inverse-toggle-icon-bar-bg:         #fff;\n$navbar-inverse-toggle-border-color:        darken($navbar-inverse-bg, 10%);\n\n\n//== Navs\n//\n//##\n\n//=== Shared nav styles\n$nav-link-padding:                          10px 15px;\n$nav-link-hover-bg:                         $gray-lighter;\n\n$nav-disabled-link-color:                   $gray-light;\n$nav-disabled-link-hover-color:             $gray-light;\n\n//== Tabs\n$nav-tabs-border-color:                     $gray-lighter;\n\n$nav-tabs-link-hover-border-color:          $gray-lighter;\n\n$nav-tabs-active-link-hover-bg:             $body-bg;\n$nav-tabs-active-link-hover-color:          $brand-primary;\n$nav-tabs-active-link-hover-border-color:   $gray-lighter;\n\n$nav-tabs-justified-link-border-color:            $gray-lighter;\n$nav-tabs-justified-active-link-border-color:     $body-bg;\n\n//== Pills\n$nav-pills-border-radius:                   $border-radius-base;\n$nav-pills-active-link-hover-bg:            $component-active-bg;\n$nav-pills-active-link-hover-color:         $component-active-color;\n\n\n//== Pagination\n//\n//##\n\n$pagination-color:                     #fff;\n$pagination-bg:                        $brand-success;\n$pagination-border:                    transparent;\n\n$pagination-hover-color:               #fff;\n$pagination-hover-bg:                  darken($brand-success, 15%);\n$pagination-hover-border:              transparent;\n\n$pagination-active-color:              #fff;\n$pagination-active-bg:                 darken($brand-success, 15%);\n$pagination-active-border:             transparent;\n\n$pagination-disabled-color:            $gray-lighter;\n$pagination-disabled-bg:               lighten($brand-success, 15%);\n$pagination-disabled-border:           transparent;\n\n\n//== Pager\n//\n//##\n\n$pager-bg:                             $pagination-bg;\n$pager-border:                         $pagination-border;\n$pager-border-radius:                  15px;\n\n$pager-hover-bg:                       $pagination-hover-bg;\n\n$pager-active-bg:                      $pagination-active-bg;\n$pager-active-color:                   $pagination-active-color;\n\n$pager-disabled-color:                 #fff;\n\n\n//== Jumbotron\n//\n//##\n\n$jumbotron-padding:              30px;\n$jumbotron-color:                inherit;\n$jumbotron-bg:                   $gray-lighter;\n$jumbotron-heading-color:        inherit;\n$jumbotron-font-size:            ceil(($font-size-base * 1.5));\n\n\n//== Form states and alerts\n//\n//## Define colors for form feedback states and, by default, alerts.\n\n$state-success-text:             #fff;\n$state-success-bg:               $brand-success;\n$state-success-border:           $brand-success;\n\n$state-info-text:                #fff;\n$state-info-bg:                  $brand-info;\n$state-info-border:              $brand-info;\n\n$state-warning-text:             #fff;\n$state-warning-bg:               $brand-warning;\n$state-warning-border:           $brand-warning;\n\n$state-danger-text:              #fff;\n$state-danger-bg:                $brand-danger;\n$state-danger-border:            $brand-danger;\n\n\n//== Tooltips\n//\n//##\n\n//** Tooltip max width\n$tooltip-max-width:           200px;\n//** Tooltip text color\n$tooltip-color:               #fff;\n//** Tooltip background color\n$tooltip-bg:                  #000;\n$tooltip-opacity:             .9;\n\n//** Tooltip arrow width\n$tooltip-arrow-width:         5px;\n//** Tooltip arrow color\n$tooltip-arrow-color:         $tooltip-bg;\n\n\n//== Popovers\n//\n//##\n\n//** Popover body background color\n$popover-bg:                          #fff;\n//** Popover maximum width\n$popover-max-width:                   276px;\n//** Popover border color\n$popover-border-color:                rgba(0,0,0,.2);\n//** Popover fallback border color\n$popover-fallback-border-color:       #ccc;\n\n//** Popover title background color\n$popover-title-bg:                    darken($popover-bg, 3%);\n\n//** Popover arrow width\n$popover-arrow-width:                 10px;\n//** Popover arrow color\n$popover-arrow-color:                 $popover-bg;\n\n//** Popover outer arrow width\n$popover-arrow-outer-width:           ($popover-arrow-width + 1);\n//** Popover outer arrow color\n$popover-arrow-outer-color:           fadein($popover-border-color, 5%);\n//** Popover outer arrow fallback color\n$popover-arrow-outer-fallback-color:  darken($popover-fallback-border-color, 20%);\n\n\n//== Labels\n//\n//##\n\n//** Default label background color\n$label-default-bg:            $btn-default-bg;\n//** Primary label background color\n$label-primary-bg:            $brand-primary;\n//** Success label background color\n$label-success-bg:            $brand-success;\n//** Info label background color\n$label-info-bg:               $brand-info;\n//** Warning label background color\n$label-warning-bg:            $brand-warning;\n//** Danger label background color\n$label-danger-bg:             $brand-danger;\n\n//** Default label text color\n$label-color:                 #fff;\n//** Default text color of a linked label\n$label-link-hover-color:      #fff;\n\n\n//== Modals\n//\n//##\n\n//** Padding applied to the modal body\n$modal-inner-padding:         20px;\n\n//** Padding applied to the modal title\n$modal-title-padding:         15px;\n//** Modal title line-height\n$modal-title-line-height:     $line-height-base;\n\n//** Background color of modal content area\n$modal-content-bg:                             #fff;\n//** Modal content border color\n$modal-content-border-color:                   rgba(0,0,0,.2);\n//** Modal content border color **for IE8**\n$modal-content-fallback-border-color:          #999;\n\n//** Modal backdrop background color\n$modal-backdrop-bg:           #000;\n//** Modal backdrop opacity\n$modal-backdrop-opacity:      .5;\n//** Modal header border color\n$modal-header-border-color:   #e5e5e5;\n//** Modal footer border color\n$modal-footer-border-color:   $modal-header-border-color;\n\n$modal-lg:                    900px;\n$modal-md:                    600px;\n$modal-sm:                    300px;\n\n\n//== Alerts\n//\n//## Define alert colors, border radius, and padding.\n\n$alert-padding:               15px;\n$alert-border-radius:         $border-radius-base;\n$alert-link-font-weight:      bold;\n\n$alert-success-bg:            $state-success-bg;\n$alert-success-text:          $state-success-text;\n$alert-success-border:        $state-success-border;\n\n$alert-info-bg:               $state-info-bg;\n$alert-info-text:             $state-info-text;\n$alert-info-border:           $state-info-border;\n\n$alert-warning-bg:            $state-warning-bg;\n$alert-warning-text:          $state-warning-text;\n$alert-warning-border:        $state-warning-border;\n\n$alert-danger-bg:             $state-danger-bg;\n$alert-danger-text:           $state-danger-text;\n$alert-danger-border:         $state-danger-border;\n\n\n//== Progress bars\n//\n//##\n\n//** Background color of the whole progress component\n$progress-bg:                 $gray-lighter;\n//** Progress bar text color\n$progress-bar-color:          #fff;\n//** Variable for setting rounded corners on progress bar.\n$progress-border-radius:      $border-radius-base;\n\n//** Default progress bar color\n$progress-bar-bg:             $brand-primary;\n//** Success progress bar color\n$progress-bar-success-bg:     $brand-success;\n//** Warning progress bar color\n$progress-bar-warning-bg:     $brand-warning;\n//** Danger progress bar color\n$progress-bar-danger-bg:      $brand-danger;\n//** Info progress bar color\n$progress-bar-info-bg:        $brand-info;\n\n\n//== List group\n//\n//##\n\n//** Background color on `.list-group-item`\n$list-group-bg:                 #fff;\n//** `.list-group-item` border color\n$list-group-border:             $gray-lighter;\n//** List group border radius\n$list-group-border-radius:      $border-radius-base;\n\n//** Background color of single list items on hover\n$list-group-hover-bg:           $gray-lighter;\n//** Text color of active list items\n$list-group-active-color:       $component-active-color;\n//** Background color of active list items\n$list-group-active-bg:          $component-active-bg;\n//** Border color of active list elements\n$list-group-active-border:      $list-group-active-bg;\n//** Text color for content within active list items\n$list-group-active-text-color:  lighten($list-group-active-bg, 40%);\n\n//** Text color of disabled list items\n$list-group-disabled-color:      $gray-light;\n//** Background color of disabled list items\n$list-group-disabled-bg:         $gray-lighter;\n//** Text color for content within disabled list items\n$list-group-disabled-text-color: $list-group-disabled-color;\n\n$list-group-link-color:         #555;\n$list-group-link-hover-color:   $list-group-link-color;\n$list-group-link-heading-color: #333;\n\n\n//== Panels\n//\n//##\n\n$panel-bg:                    #fff;\n$panel-body-padding:          15px;\n$panel-heading-padding:       10px 15px;\n$panel-footer-padding:        $panel-heading-padding;\n$panel-border-radius:         $border-radius-base;\n\n//** Border color for elements within panels\n$panel-inner-border:          $gray-lighter;\n$panel-footer-bg:             $gray-lighter;\n\n$panel-default-text:          $text-color;\n$panel-default-border:        $gray-lighter;\n$panel-default-heading-bg:    $gray-lighter;\n\n$panel-primary-text:          #fff;\n$panel-primary-border:        $brand-primary;\n$panel-primary-heading-bg:    $brand-primary;\n\n$panel-success-text:          $state-success-text;\n$panel-success-border:        $state-success-border;\n$panel-success-heading-bg:    $state-success-bg;\n\n$panel-info-text:             $state-info-text;\n$panel-info-border:           $state-info-border;\n$panel-info-heading-bg:       $state-info-bg;\n\n$panel-warning-text:          $state-warning-text;\n$panel-warning-border:        $state-warning-border;\n$panel-warning-heading-bg:    $state-warning-bg;\n\n$panel-danger-text:           $state-danger-text;\n$panel-danger-border:         $state-danger-border;\n$panel-danger-heading-bg:     $state-danger-bg;\n\n\n//== Thumbnails\n//\n//##\n\n//** Padding around the thumbnail image\n$thumbnail-padding:           4px;\n//** Thumbnail background color\n$thumbnail-bg:                $body-bg;\n//** Thumbnail border color\n$thumbnail-border:            $gray-lighter;\n//** Thumbnail border radius\n$thumbnail-border-radius:     $border-radius-base;\n\n//** Custom text color for thumbnail captions\n$thumbnail-caption-color:     $text-color;\n//** Padding around the thumbnail caption\n$thumbnail-caption-padding:   9px;\n\n\n//== Wells\n//\n//##\n\n$well-bg:                     $gray-lighter;\n$well-border:                 transparent;\n\n\n//== Badges\n//\n//##\n\n$badge-color:                 #fff;\n//** Linked badge text color on hover\n$badge-link-hover-color:      #fff;\n$badge-bg:                    $brand-primary;\n\n//** Badge text color in active nav link\n$badge-active-color:          $brand-primary;\n//** Badge background color in active nav link\n$badge-active-bg:             #fff;\n\n$badge-font-weight:           bold;\n$badge-line-height:           1;\n$badge-border-radius:         10px;\n\n\n//== Breadcrumbs\n//\n//##\n\n$breadcrumb-padding-vertical:   8px;\n$breadcrumb-padding-horizontal: 15px;\n//** Breadcrumb background color\n$breadcrumb-bg:                 $gray-lighter;\n//** Breadcrumb text color\n$breadcrumb-color:              #ccc;\n//** Text color of current page in the breadcrumb\n$breadcrumb-active-color:       $gray;\n//** Textual separator for between breadcrumb elements\n$breadcrumb-separator:          \"/\";\n\n\n//== Carousel\n//\n//##\n\n$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6);\n\n$carousel-control-color:                      #fff;\n$carousel-control-width:                      15%;\n$carousel-control-opacity:                    .5;\n$carousel-control-font-size:                  20px;\n\n$carousel-indicator-active-bg:                #fff;\n$carousel-indicator-border-color:             #fff;\n\n$carousel-caption-color:                      #fff;\n\n\n//== Close\n//\n//##\n\n$close-font-weight:           bold;\n$close-color:                 #000;\n$close-text-shadow:           none;\n\n\n//== Code\n//\n//##\n\n$code-color:                  #c7254e;\n$code-bg:                     #f9f2f4;\n\n$kbd-color:                   #fff;\n$kbd-bg:                      #333;\n\n$pre-bg:                      $gray-lighter;\n$pre-color:                   $gray-dark;\n$pre-border-color:            #ccc;\n$pre-scrollable-max-height:   340px;\n\n\n//== Type\n//\n//##\n\n//** Horizontal offset for forms and lists.\n$component-offset-horizontal: 180px;\n//** Text muted color\n$text-muted:                  $gray-light;\n//** Abbreviations and acronyms border color\n$abbr-border-color:           $gray-light;\n//** Headings small color\n$headings-small-color:        $gray-light;\n//** Blockquote small color\n$blockquote-small-color:      $gray-light;\n//** Blockquote font size\n$blockquote-font-size:        ($font-size-base * 1.25);\n//** Blockquote border color\n$blockquote-border-color:     $gray-lighter;\n//** Page header border color\n$page-header-border-color:    transparent;\n//** Width of horizontal description list titles\n$dl-horizontal-offset:        $component-offset-horizontal;\n//** Horizontal line color.\n$hr-border:                   $gray-lighter;\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_alerts.scss",
    "content": "// Alerts\n\n@mixin alert-variant($background, $border, $text-color) {\n  background-color: $background;\n  border-color: $border;\n  color: $text-color;\n\n  hr {\n    border-top-color: darken($border, 5%);\n  }\n  .alert-link {\n    color: darken($text-color, 10%);\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_background-variant.scss",
    "content": "// Contextual backgrounds\n\n// [converter] $parent hack\n@mixin bg-variant($parent, $color) {\n  #{$parent} {\n    background-color: $color;\n  }\n  a#{$parent}:hover {\n    background-color: darken($color, 10%);\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_border-radius.scss",
    "content": "// Single side border-radius\n\n@mixin border-top-radius($radius) {\n  border-top-right-radius: $radius;\n   border-top-left-radius: $radius;\n}\n@mixin border-right-radius($radius) {\n  border-bottom-right-radius: $radius;\n     border-top-right-radius: $radius;\n}\n@mixin border-bottom-radius($radius) {\n  border-bottom-right-radius: $radius;\n   border-bottom-left-radius: $radius;\n}\n@mixin border-left-radius($radius) {\n  border-bottom-left-radius: $radius;\n     border-top-left-radius: $radius;\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_buttons.scss",
    "content": "// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n@mixin button-variant($color, $background, $border) {\n  color: $color;\n  background-color: $background;\n  border-color: $border;\n\n  &:hover,\n  &:focus,\n  &.focus,\n  &:active,\n  &.active,\n  .open > &.dropdown-toggle {\n    color: $color;\n    background-color: darken($background, 10%);\n        border-color: darken($border, 12%);\n  }\n  &:active,\n  &.active,\n  .open > &.dropdown-toggle {\n    background-image: none;\n  }\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    &,\n    &:hover,\n    &:focus,\n    &.focus,\n    &:active,\n    &.active {\n      background-color: $background;\n          border-color: $border;\n    }\n  }\n\n  .badge {\n    color: $background;\n    background-color: $color;\n  }\n}\n\n// Button sizes\n@mixin button-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {\n  padding: $padding-vertical $padding-horizontal;\n  font-size: $font-size;\n  line-height: $line-height;\n  border-radius: $border-radius;\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_center-block.scss",
    "content": "// Center-align a block level element\n\n@mixin center-block() {\n  display: block;\n  margin-left: auto;\n  margin-right: auto;\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_clearfix.scss",
    "content": "// Clearfix\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n//    contenteditable attribute is included anywhere else in the document.\n//    Otherwise it causes space to appear at the top and bottom of elements\n//    that are clearfixed.\n// 2. The use of `table` rather than `block` is only necessary if using\n//    `:before` to contain the top-margins of child elements.\n//\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n\n@mixin clearfix() {\n  &:before,\n  &:after {\n    content: \" \"; // 1\n    display: table; // 2\n  }\n  &:after {\n    clear: both;\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_forms.scss",
    "content": "// Form validation states\n//\n// Used in forms.less to generate the form validation CSS for warnings, errors,\n// and successes.\n\n@mixin form-control-validation($text-color: #555, $border-color: #ccc, $background-color: #f5f5f5) {\n  // Color the label and help text\n  .help-block,\n  .control-label,\n  .radio,\n  .checkbox,\n  .radio-inline,\n  .checkbox-inline,\n  &.radio label,\n  &.checkbox label,\n  &.radio-inline label,\n  &.checkbox-inline label  {\n    color: $text-color;\n  }\n  // Set the border and box shadow on specific inputs to match\n  .form-control {\n    border-color: $border-color;\n    @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work\n    &:focus {\n      border-color: darken($border-color, 10%);\n      $shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten($border-color, 20%);\n      @include box-shadow($shadow);\n    }\n  }\n  // Set validation states also for addons\n  .input-group-addon {\n    color: $text-color;\n    border-color: $border-color;\n    background-color: $background-color;\n  }\n  // Optional feedback icon\n  .form-control-feedback {\n    color: $text-color;\n  }\n}\n\n\n// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `$input-border-focus` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n@mixin form-control-focus($color: $input-border-focus) {\n  $color-rgba: rgba(red($color), green($color), blue($color), .6);\n  &:focus {\n    border-color: $color;\n    outline: 0;\n    @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px $color-rgba);\n  }\n}\n\n// Form control sizing\n//\n// Relative text size, padding, and border-radii changes for form controls. For\n// horizontal sizing, wrap controls in the predefined grid classes. `<select>`\n// element gets special love because it's special, and that's a fact!\n// [converter] $parent hack\n@mixin input-size($parent, $input-height, $padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {\n  #{$parent} {\n    height: $input-height;\n    padding: $padding-vertical $padding-horizontal;\n    font-size: $font-size;\n    line-height: $line-height;\n    border-radius: $border-radius;\n  }\n\n  select#{$parent} {\n    height: $input-height;\n    line-height: $input-height;\n  }\n\n  textarea#{$parent},\n  select[multiple]#{$parent} {\n    height: auto;\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_gradients.scss",
    "content": "// Gradients\n\n\n\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n// Color stops are not available in IE9 and below.\n@mixin gradient-horizontal($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {\n  background-image: -webkit-linear-gradient(left, $start-color $start-percent, $end-color $end-percent); // Safari 5.1-6, Chrome 10+\n  background-image: -o-linear-gradient(left, $start-color $start-percent, $end-color $end-percent); // Opera 12\n  background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9 and down\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n// Color stops are not available in IE9 and below.\n@mixin gradient-vertical($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {\n  background-image: -webkit-linear-gradient(top, $start-color $start-percent, $end-color $end-percent);  // Safari 5.1-6, Chrome 10+\n  background-image: -o-linear-gradient(top, $start-color $start-percent, $end-color $end-percent);  // Opera 12\n  background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 and down\n}\n\n@mixin gradient-directional($start-color: #555, $end-color: #333, $deg: 45deg) {\n  background-repeat: repeat-x;\n  background-image: -webkit-linear-gradient($deg, $start-color, $end-color); // Safari 5.1-6, Chrome 10+\n  background-image: -o-linear-gradient($deg, $start-color, $end-color); // Opera 12\n  background-image: linear-gradient($deg, $start-color, $end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n}\n@mixin gradient-horizontal-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {\n  background-image: -webkit-linear-gradient(left, $start-color, $mid-color $color-stop, $end-color);\n  background-image: -o-linear-gradient(left, $start-color, $mid-color $color-stop, $end-color);\n  background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n  background-repeat: no-repeat;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9 and down, gets no color-stop at all for proper fallback\n}\n@mixin gradient-vertical-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {\n  background-image: -webkit-linear-gradient($start-color, $mid-color $color-stop, $end-color);\n  background-image: -o-linear-gradient($start-color, $mid-color $color-stop, $end-color);\n  background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n  background-repeat: no-repeat;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 and down, gets no color-stop at all for proper fallback\n}\n@mixin gradient-radial($inner-color: #555, $outer-color: #333) {\n  background-image: -webkit-radial-gradient(circle, $inner-color, $outer-color);\n  background-image: radial-gradient(circle, $inner-color, $outer-color);\n  background-repeat: no-repeat;\n}\n@mixin gradient-striped($color: rgba(255,255,255,.15), $angle: 45deg) {\n  background-image: -webkit-linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n  background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_grid-framework.scss",
    "content": "// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n// [converter] This is defined recursively in LESS, but Sass supports real loops\n@mixin make-grid-columns($i: 1, $list: \".col-xs-#{$i}, .col-sm-#{$i}, .col-md-#{$i}, .col-lg-#{$i}\") {\n  @for $i from (1 + 1) through $grid-columns {\n    $list: \"#{$list}, .col-xs-#{$i}, .col-sm-#{$i}, .col-md-#{$i}, .col-lg-#{$i}\";\n  }\n  #{$list} {\n    position: relative;\n    // Prevent columns from collapsing when empty\n    min-height: 1px;\n    // Inner gutter via padding\n    padding-left:  ($grid-gutter-width / 2);\n    padding-right: ($grid-gutter-width / 2);\n  }\n}\n\n\n// [converter] This is defined recursively in LESS, but Sass supports real loops\n@mixin float-grid-columns($class, $i: 1, $list: \".col-#{$class}-#{$i}\") {\n  @for $i from (1 + 1) through $grid-columns {\n    $list: \"#{$list}, .col-#{$class}-#{$i}\";\n  }\n  #{$list} {\n    float: left;\n  }\n}\n\n\n@mixin calc-grid-column($index, $class, $type) {\n  @if ($type == width) and ($index > 0) {\n    .col-#{$class}-#{$index} {\n      width: percentage(($index / $grid-columns));\n    }\n  }\n  @if ($type == push) and ($index > 0) {\n    .col-#{$class}-push-#{$index} {\n      left: percentage(($index / $grid-columns));\n    }\n  }\n  @if ($type == push) and ($index == 0) {\n    .col-#{$class}-push-0 {\n      left: auto;\n    }\n  }\n  @if ($type == pull) and ($index > 0) {\n    .col-#{$class}-pull-#{$index} {\n      right: percentage(($index / $grid-columns));\n    }\n  }\n  @if ($type == pull) and ($index == 0) {\n    .col-#{$class}-pull-0 {\n      right: auto;\n    }\n  }\n  @if ($type == offset) {\n    .col-#{$class}-offset-#{$index} {\n      margin-left: percentage(($index / $grid-columns));\n    }\n  }\n}\n\n// [converter] This is defined recursively in LESS, but Sass supports real loops\n@mixin loop-grid-columns($columns, $class, $type) {\n  @for $i from 0 through $columns {\n    @include calc-grid-column($i, $class, $type);\n  }\n}\n\n\n// Create grid for specific class\n@mixin make-grid($class) {\n  @include float-grid-columns($class);\n  @include loop-grid-columns($grid-columns, $class, width);\n  @include loop-grid-columns($grid-columns, $class, pull);\n  @include loop-grid-columns($grid-columns, $class, push);\n  @include loop-grid-columns($grid-columns, $class, offset);\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_grid.scss",
    "content": "// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n@mixin container-fixed($gutter: $grid-gutter-width) {\n  margin-right: auto;\n  margin-left: auto;\n  padding-left:  ($gutter / 2);\n  padding-right: ($gutter / 2);\n  @include clearfix;\n}\n\n// Creates a wrapper for a series of columns\n@mixin make-row($gutter: $grid-gutter-width) {\n  margin-left:  ($gutter / -2);\n  margin-right: ($gutter / -2);\n  @include clearfix;\n}\n\n// Generate the extra small columns\n@mixin make-xs-column($columns, $gutter: $grid-gutter-width) {\n  position: relative;\n  float: left;\n  width: percentage(($columns / $grid-columns));\n  min-height: 1px;\n  padding-left:  ($gutter / 2);\n  padding-right: ($gutter / 2);\n}\n@mixin make-xs-column-offset($columns) {\n  margin-left: percentage(($columns / $grid-columns));\n}\n@mixin make-xs-column-push($columns) {\n  left: percentage(($columns / $grid-columns));\n}\n@mixin make-xs-column-pull($columns) {\n  right: percentage(($columns / $grid-columns));\n}\n\n// Generate the small columns\n@mixin make-sm-column($columns, $gutter: $grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-left:  ($gutter / 2);\n  padding-right: ($gutter / 2);\n\n  @media (min-width: $screen-sm-min) {\n    float: left;\n    width: percentage(($columns / $grid-columns));\n  }\n}\n@mixin make-sm-column-offset($columns) {\n  @media (min-width: $screen-sm-min) {\n    margin-left: percentage(($columns / $grid-columns));\n  }\n}\n@mixin make-sm-column-push($columns) {\n  @media (min-width: $screen-sm-min) {\n    left: percentage(($columns / $grid-columns));\n  }\n}\n@mixin make-sm-column-pull($columns) {\n  @media (min-width: $screen-sm-min) {\n    right: percentage(($columns / $grid-columns));\n  }\n}\n\n// Generate the medium columns\n@mixin make-md-column($columns, $gutter: $grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-left:  ($gutter / 2);\n  padding-right: ($gutter / 2);\n\n  @media (min-width: $screen-md-min) {\n    float: left;\n    width: percentage(($columns / $grid-columns));\n  }\n}\n@mixin make-md-column-offset($columns) {\n  @media (min-width: $screen-md-min) {\n    margin-left: percentage(($columns / $grid-columns));\n  }\n}\n@mixin make-md-column-push($columns) {\n  @media (min-width: $screen-md-min) {\n    left: percentage(($columns / $grid-columns));\n  }\n}\n@mixin make-md-column-pull($columns) {\n  @media (min-width: $screen-md-min) {\n    right: percentage(($columns / $grid-columns));\n  }\n}\n\n// Generate the large columns\n@mixin make-lg-column($columns, $gutter: $grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-left:  ($gutter / 2);\n  padding-right: ($gutter / 2);\n\n  @media (min-width: $screen-lg-min) {\n    float: left;\n    width: percentage(($columns / $grid-columns));\n  }\n}\n@mixin make-lg-column-offset($columns) {\n  @media (min-width: $screen-lg-min) {\n    margin-left: percentage(($columns / $grid-columns));\n  }\n}\n@mixin make-lg-column-push($columns) {\n  @media (min-width: $screen-lg-min) {\n    left: percentage(($columns / $grid-columns));\n  }\n}\n@mixin make-lg-column-pull($columns) {\n  @media (min-width: $screen-lg-min) {\n    right: percentage(($columns / $grid-columns));\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_hide-text.scss",
    "content": "// CSS image replacement\n//\n// Heads up! v3 launched with with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (will be removed in v4)\n@mixin hide-text() {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n\n// New mixin to use as of v3.0.1\n@mixin text-hide() {\n  @include hide-text;\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_image.scss",
    "content": "// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n@mixin img-responsive($display: block) {\n  display: $display;\n  max-width: 100%; // Part 1: Set a maximum relative to the parent\n  height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {\n  background-image: url(if($bootstrap-sass-asset-helper, twbs-image-path(\"#{$file-1x}\"), \"#{$file-1x}\"));\n\n  @media\n  only screen and (-webkit-min-device-pixel-ratio: 2),\n  only screen and (   min--moz-device-pixel-ratio: 2),\n  only screen and (     -o-min-device-pixel-ratio: 2/1),\n  only screen and (        min-device-pixel-ratio: 2),\n  only screen and (                min-resolution: 192dpi),\n  only screen and (                min-resolution: 2dppx) {\n    background-image: url(if($bootstrap-sass-asset-helper, twbs-image-path(\"#{$file-2x}\"), \"#{$file-2x}\"));\n    background-size: $width-1x $height-1x;\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_labels.scss",
    "content": "// Labels\n\n@mixin label-variant($color) {\n  background-color: $color;\n\n  &[href] {\n    &:hover,\n    &:focus {\n      background-color: darken($color, 10%);\n    }\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_list-group.scss",
    "content": "// List Groups\n\n@mixin list-group-item-variant($state, $background, $color) {\n  .list-group-item-#{$state} {\n    color: $color;\n    background-color: $background;\n\n    // [converter] extracted a& to a.list-group-item-#{$state}\n  }\n\n  a.list-group-item-#{$state} {\n    color: $color;\n\n    .list-group-item-heading {\n      color: inherit;\n    }\n\n    &:hover,\n    &:focus {\n      color: $color;\n      background-color: darken($background, 5%);\n    }\n    &.active,\n    &.active:hover,\n    &.active:focus {\n      color: #fff;\n      background-color: $color;\n      border-color: $color;\n    }\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_nav-divider.scss",
    "content": "// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n@mixin nav-divider($color: #e5e5e5) {\n  height: 1px;\n  margin: (($line-height-computed / 2) - 1) 0;\n  overflow: hidden;\n  background-color: $color;\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_nav-vertical-align.scss",
    "content": "// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n\n@mixin navbar-vertical-align($element-height) {\n  margin-top: (($navbar-height - $element-height) / 2);\n  margin-bottom: (($navbar-height - $element-height) / 2);\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_opacity.scss",
    "content": "// Opacity\n\n@mixin opacity($opacity) {\n  opacity: $opacity;\n  // IE8 filter\n  $opacity-ie: ($opacity * 100);\n  filter: alpha(opacity=$opacity-ie);\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_pagination.scss",
    "content": "// Pagination\n\n@mixin pagination-size($padding-vertical, $padding-horizontal, $font-size, $border-radius) {\n  > li {\n    > a,\n    > span {\n      padding: $padding-vertical $padding-horizontal;\n      font-size: $font-size;\n    }\n    &:first-child {\n      > a,\n      > span {\n        @include border-left-radius($border-radius);\n      }\n    }\n    &:last-child {\n      > a,\n      > span {\n        @include border-right-radius($border-radius);\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_panels.scss",
    "content": "// Panels\n\n@mixin panel-variant($border, $heading-text-color, $heading-bg-color, $heading-border) {\n  border-color: $border;\n\n  & > .panel-heading {\n    color: $heading-text-color;\n    background-color: $heading-bg-color;\n    border-color: $heading-border;\n\n    + .panel-collapse > .panel-body {\n      border-top-color: $border;\n    }\n    .badge {\n      color: $heading-bg-color;\n      background-color: $heading-text-color;\n    }\n  }\n  & > .panel-footer {\n    + .panel-collapse > .panel-body {\n      border-bottom-color: $border;\n    }\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_progress-bar.scss",
    "content": "// Progress bars\n\n@mixin progress-bar-variant($color) {\n  background-color: $color;\n\n  // Deprecated parent class requirement as of v3.2.0\n  .progress-striped & {\n    @include gradient-striped;\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_reset-filter.scss",
    "content": "// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n@mixin reset-filter() {\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_resize.scss",
    "content": "// Resize anything\n\n@mixin resizable($direction) {\n  resize: $direction; // Options: horizontal, vertical, both\n  overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_responsive-visibility.scss",
    "content": "// Responsive utilities\n\n//\n// More easily include all the states for responsive-utilities.less.\n// [converter] $parent hack\n@mixin responsive-visibility($parent) {\n  #{$parent} {\n    display: block !important;\n  }\n  table#{$parent}  { display: table; }\n  tr#{$parent}     { display: table-row !important; }\n  th#{$parent},\n  td#{$parent}     { display: table-cell !important; }\n}\n\n// [converter] $parent hack\n@mixin responsive-invisibility($parent) {\n  #{$parent} {\n    display: none !important;\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_size.scss",
    "content": "// Sizing shortcuts\n\n@mixin size($width, $height) {\n  width: $width;\n  height: $height;\n}\n\n@mixin square($size) {\n  @include size($size, $size);\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_tab-focus.scss",
    "content": "// WebKit-style focus\n\n@mixin tab-focus() {\n  // Default\n  outline: thin dotted;\n  // WebKit\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_table-row.scss",
    "content": "// Tables\n\n@mixin table-row-variant($state, $background) {\n  // Exact selectors below required to override `.table-striped` and prevent\n  // inheritance to nested tables.\n  .table > thead > tr,\n  .table > tbody > tr,\n  .table > tfoot > tr {\n    > td.#{$state},\n    > th.#{$state},\n    &.#{$state} > td,\n    &.#{$state} > th {\n      background-color: $background;\n    }\n  }\n\n  // Hover states for `.table-hover`\n  // Note: this is not available for cells or rows within `thead` or `tfoot`.\n  .table-hover > tbody > tr {\n    > td.#{$state}:hover,\n    > th.#{$state}:hover,\n    &.#{$state}:hover > td,\n    &:hover > .#{$state},\n    &.#{$state}:hover > th {\n      background-color: darken($background, 5%);\n    }\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_text-emphasis.scss",
    "content": "// Typography\n\n// [converter] $parent hack\n@mixin text-emphasis-variant($parent, $color) {\n  #{$parent} {\n    color: $color;\n  }\n  a#{$parent}:hover {\n    color: darken($color, 10%);\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_text-overflow.scss",
    "content": "// Text overflow\n// Requires inline-block or block for proper styling\n\n@mixin text-overflow() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap/mixins/_vendor-prefixes.scss",
    "content": "// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They will be removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n@mixin animation($animation) {\n  -webkit-animation: $animation;\n       -o-animation: $animation;\n          animation: $animation;\n}\n@mixin animation-name($name) {\n  -webkit-animation-name: $name;\n          animation-name: $name;\n}\n@mixin animation-duration($duration) {\n  -webkit-animation-duration: $duration;\n          animation-duration: $duration;\n}\n@mixin animation-timing-function($timing-function) {\n  -webkit-animation-timing-function: $timing-function;\n          animation-timing-function: $timing-function;\n}\n@mixin animation-delay($delay) {\n  -webkit-animation-delay: $delay;\n          animation-delay: $delay;\n}\n@mixin animation-iteration-count($iteration-count) {\n  -webkit-animation-iteration-count: $iteration-count;\n          animation-iteration-count: $iteration-count;\n}\n@mixin animation-direction($direction) {\n  -webkit-animation-direction: $direction;\n          animation-direction: $direction;\n}\n@mixin animation-fill-mode($fill-mode) {\n  -webkit-animation-fill-mode: $fill-mode;\n          animation-fill-mode: $fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n@mixin backface-visibility($visibility){\n  -webkit-backface-visibility: $visibility;\n     -moz-backface-visibility: $visibility;\n          backface-visibility: $visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n@mixin box-shadow($shadow...) {\n  -webkit-box-shadow: $shadow; // iOS <4.3 & Android <4.1\n          box-shadow: $shadow;\n}\n\n// Box sizing\n@mixin box-sizing($boxmodel) {\n  -webkit-box-sizing: $boxmodel;\n     -moz-box-sizing: $boxmodel;\n          box-sizing: $boxmodel;\n}\n\n// CSS3 Content Columns\n@mixin content-columns($column-count, $column-gap: $grid-gutter-width) {\n  -webkit-column-count: $column-count;\n     -moz-column-count: $column-count;\n          column-count: $column-count;\n  -webkit-column-gap: $column-gap;\n     -moz-column-gap: $column-gap;\n          column-gap: $column-gap;\n}\n\n// Optional hyphenation\n@mixin hyphens($mode: auto) {\n  word-wrap: break-word;\n  -webkit-hyphens: $mode;\n     -moz-hyphens: $mode;\n      -ms-hyphens: $mode; // IE10+\n       -o-hyphens: $mode;\n          hyphens: $mode;\n}\n\n// Placeholder text\n@mixin placeholder($color: $input-color-placeholder) {\n  // Firefox\n  &::-moz-placeholder {\n    color: $color;\n    opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n  }\n  &:-ms-input-placeholder { color: $color; } // Internet Explorer 10+\n  &::-webkit-input-placeholder  { color: $color; } // Safari and Chrome\n}\n\n// Transformations\n@mixin scale($ratio...) {\n  -webkit-transform: scale($ratio);\n      -ms-transform: scale($ratio); // IE9 only\n       -o-transform: scale($ratio);\n          transform: scale($ratio);\n}\n\n@mixin scaleX($ratio) {\n  -webkit-transform: scaleX($ratio);\n      -ms-transform: scaleX($ratio); // IE9 only\n       -o-transform: scaleX($ratio);\n          transform: scaleX($ratio);\n}\n@mixin scaleY($ratio) {\n  -webkit-transform: scaleY($ratio);\n      -ms-transform: scaleY($ratio); // IE9 only\n       -o-transform: scaleY($ratio);\n          transform: scaleY($ratio);\n}\n@mixin skew($x, $y) {\n  -webkit-transform: skewX($x) skewY($y);\n      -ms-transform: skewX($x) skewY($y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n       -o-transform: skewX($x) skewY($y);\n          transform: skewX($x) skewY($y);\n}\n@mixin translate($x, $y) {\n  -webkit-transform: translate($x, $y);\n      -ms-transform: translate($x, $y); // IE9 only\n       -o-transform: translate($x, $y);\n          transform: translate($x, $y);\n}\n@mixin translate3d($x, $y, $z) {\n  -webkit-transform: translate3d($x, $y, $z);\n          transform: translate3d($x, $y, $z);\n}\n@mixin rotate($degrees) {\n  -webkit-transform: rotate($degrees);\n      -ms-transform: rotate($degrees); // IE9 only\n       -o-transform: rotate($degrees);\n          transform: rotate($degrees);\n}\n@mixin rotateX($degrees) {\n  -webkit-transform: rotateX($degrees);\n      -ms-transform: rotateX($degrees); // IE9 only\n       -o-transform: rotateX($degrees);\n          transform: rotateX($degrees);\n}\n@mixin rotateY($degrees) {\n  -webkit-transform: rotateY($degrees);\n      -ms-transform: rotateY($degrees); // IE9 only\n       -o-transform: rotateY($degrees);\n          transform: rotateY($degrees);\n}\n@mixin perspective($perspective) {\n  -webkit-perspective: $perspective;\n     -moz-perspective: $perspective;\n          perspective: $perspective;\n}\n@mixin perspective-origin($perspective) {\n  -webkit-perspective-origin: $perspective;\n     -moz-perspective-origin: $perspective;\n          perspective-origin: $perspective;\n}\n@mixin transform-origin($origin) {\n  -webkit-transform-origin: $origin;\n     -moz-transform-origin: $origin;\n      -ms-transform-origin: $origin; // IE9 only\n          transform-origin: $origin;\n}\n\n\n// Transitions\n\n@mixin transition($transition...) {\n  -webkit-transition: $transition;\n       -o-transition: $transition;\n          transition: $transition;\n}\n@mixin transition-property($transition-property...) {\n  -webkit-transition-property: $transition-property;\n          transition-property: $transition-property;\n}\n@mixin transition-delay($transition-delay) {\n  -webkit-transition-delay: $transition-delay;\n          transition-delay: $transition-delay;\n}\n@mixin transition-duration($transition-duration...) {\n  -webkit-transition-duration: $transition-duration;\n          transition-duration: $transition-duration;\n}\n@mixin transition-timing-function($timing-function) {\n  -webkit-transition-timing-function: $timing-function;\n          transition-timing-function: $timing-function;\n}\n@mixin transition-transform($transition...) {\n  -webkit-transition: -webkit-transform $transition;\n     -moz-transition: -moz-transform $transition;\n       -o-transition: -o-transform $transition;\n          transition: transform $transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n@mixin user-select($select) {\n  -webkit-user-select: $select;\n     -moz-user-select: $select;\n      -ms-user-select: $select; // IE10+\n          user-select: $select;\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/bootstrap.scss",
    "content": "// Core variables and mixins\n@import \"bootstrap/variables\";\n@import \"bootstrap/mixins\";\n\n// Flatly Theme\n@import \"bootstrap/flatly-theme/variables\";\n@import \"bootstrap/flatly-theme/bootswatch\";\n\n// Reset and dependencies\n@import \"bootstrap/normalize\";\n@import \"bootstrap/print\";\n// don't import glyphicons because we use FontAwesome icons\n// @import \"bootstrap/glyphicons\";\n\n// Core CSS\n@import \"bootstrap/scaffolding\";\n@import \"bootstrap/type\";\n@import \"bootstrap/code\";\n@import \"bootstrap/grid\";\n@import \"bootstrap/tables\";\n@import \"bootstrap/forms\";\n@import \"bootstrap/buttons\";\n\n// Components\n@import \"bootstrap/component-animations\";\n@import \"bootstrap/dropdowns\";\n@import \"bootstrap/button-groups\";\n@import \"bootstrap/input-groups\";\n@import \"bootstrap/navs\";\n@import \"bootstrap/navbar\";\n@import \"bootstrap/breadcrumbs\";\n@import \"bootstrap/pagination\";\n@import \"bootstrap/pager\";\n@import \"bootstrap/labels\";\n@import \"bootstrap/badges\";\n@import \"bootstrap/jumbotron\";\n@import \"bootstrap/thumbnails\";\n@import \"bootstrap/alerts\";\n@import \"bootstrap/progress-bars\";\n@import \"bootstrap/media\";\n@import \"bootstrap/list-group\";\n@import \"bootstrap/panels\";\n@import \"bootstrap/responsive-embed\";\n@import \"bootstrap/wells\";\n@import \"bootstrap/close\";\n\n// Components w/ JavaScript\n@import \"bootstrap/modals\";\n@import \"bootstrap/tooltip\";\n@import \"bootstrap/popovers\";\n@import \"bootstrap/carousel\";\n\n// Utility classes\n@import \"bootstrap/utilities\";\n@import \"bootstrap/responsive-utilities\";\n"
  },
  {
    "path": "app/Resources/assets/scss/font-awesome/_animated.scss",
    "content": "// Spinning Icons\n// --------------------------\n\n.#{$fa-css-prefix}-spin {\n  -webkit-animation: fa-spin 2s infinite linear;\n          animation: fa-spin 2s infinite linear;\n}\n\n.#{$fa-css-prefix}-pulse {\n  -webkit-animation: fa-spin 1s infinite steps(8);\n          animation: fa-spin 1s infinite steps(8);\n}\n\n@-webkit-keyframes fa-spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n            transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(359deg);\n            transform: rotate(359deg);\n  }\n}\n\n@keyframes fa-spin {\n  0% {\n    -webkit-transform: rotate(0deg);\n            transform: rotate(0deg);\n  }\n  100% {\n    -webkit-transform: rotate(359deg);\n            transform: rotate(359deg);\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/font-awesome/_bordered-pulled.scss",
    "content": "// Bordered & Pulled\n// -------------------------\n\n.#{$fa-css-prefix}-border {\n  padding: .2em .25em .15em;\n  border: solid .08em $fa-border-color;\n  border-radius: .1em;\n}\n\n.pull-right { float: right; }\n.pull-left { float: left; }\n\n.#{$fa-css-prefix} {\n  &.pull-left { margin-right: .3em; }\n  &.pull-right { margin-left: .3em; }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/font-awesome/_core.scss",
    "content": "// Base Class Definition\n// -------------------------\n\n.#{$fa-css-prefix} {\n  display: inline-block;\n  font: normal normal normal #{$fa-font-size-base}/1 FontAwesome; // shortening font declaration\n  font-size: inherit; // can't have font-size inherit on line above, so need to override\n  text-rendering: auto; // optimizelegibility throws things off #1094\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  transform: translate(0, 0); // ensures no half-pixel rendering in firefox\n\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/font-awesome/_fixed-width.scss",
    "content": "// Fixed Width Icons\n// -------------------------\n.#{$fa-css-prefix}-fw {\n  width: (18em / 14);\n  text-align: center;\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/font-awesome/_icons.scss",
    "content": "/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\n   readers do not read off random characters that represent icons */\n\n.#{$fa-css-prefix}-glass:before { content: $fa-var-glass; }\n.#{$fa-css-prefix}-music:before { content: $fa-var-music; }\n.#{$fa-css-prefix}-search:before { content: $fa-var-search; }\n.#{$fa-css-prefix}-envelope-o:before { content: $fa-var-envelope-o; }\n.#{$fa-css-prefix}-heart:before { content: $fa-var-heart; }\n.#{$fa-css-prefix}-star:before { content: $fa-var-star; }\n.#{$fa-css-prefix}-star-o:before { content: $fa-var-star-o; }\n.#{$fa-css-prefix}-user:before { content: $fa-var-user; }\n.#{$fa-css-prefix}-film:before { content: $fa-var-film; }\n.#{$fa-css-prefix}-th-large:before { content: $fa-var-th-large; }\n.#{$fa-css-prefix}-th:before { content: $fa-var-th; }\n.#{$fa-css-prefix}-th-list:before { content: $fa-var-th-list; }\n.#{$fa-css-prefix}-check:before { content: $fa-var-check; }\n.#{$fa-css-prefix}-remove:before,\n.#{$fa-css-prefix}-close:before,\n.#{$fa-css-prefix}-times:before { content: $fa-var-times; }\n.#{$fa-css-prefix}-search-plus:before { content: $fa-var-search-plus; }\n.#{$fa-css-prefix}-search-minus:before { content: $fa-var-search-minus; }\n.#{$fa-css-prefix}-power-off:before { content: $fa-var-power-off; }\n.#{$fa-css-prefix}-signal:before { content: $fa-var-signal; }\n.#{$fa-css-prefix}-gear:before,\n.#{$fa-css-prefix}-cog:before { content: $fa-var-cog; }\n.#{$fa-css-prefix}-trash-o:before { content: $fa-var-trash-o; }\n.#{$fa-css-prefix}-home:before { content: $fa-var-home; }\n.#{$fa-css-prefix}-file-o:before { content: $fa-var-file-o; }\n.#{$fa-css-prefix}-clock-o:before { content: $fa-var-clock-o; }\n.#{$fa-css-prefix}-road:before { content: $fa-var-road; }\n.#{$fa-css-prefix}-download:before { content: $fa-var-download; }\n.#{$fa-css-prefix}-arrow-circle-o-down:before { content: $fa-var-arrow-circle-o-down; }\n.#{$fa-css-prefix}-arrow-circle-o-up:before { content: $fa-var-arrow-circle-o-up; }\n.#{$fa-css-prefix}-inbox:before { content: $fa-var-inbox; }\n.#{$fa-css-prefix}-play-circle-o:before { content: $fa-var-play-circle-o; }\n.#{$fa-css-prefix}-rotate-right:before,\n.#{$fa-css-prefix}-repeat:before { content: $fa-var-repeat; }\n.#{$fa-css-prefix}-refresh:before { content: $fa-var-refresh; }\n.#{$fa-css-prefix}-list-alt:before { content: $fa-var-list-alt; }\n.#{$fa-css-prefix}-lock:before { content: $fa-var-lock; }\n.#{$fa-css-prefix}-flag:before { content: $fa-var-flag; }\n.#{$fa-css-prefix}-headphones:before { content: $fa-var-headphones; }\n.#{$fa-css-prefix}-volume-off:before { content: $fa-var-volume-off; }\n.#{$fa-css-prefix}-volume-down:before { content: $fa-var-volume-down; }\n.#{$fa-css-prefix}-volume-up:before { content: $fa-var-volume-up; }\n.#{$fa-css-prefix}-qrcode:before { content: $fa-var-qrcode; }\n.#{$fa-css-prefix}-barcode:before { content: $fa-var-barcode; }\n.#{$fa-css-prefix}-tag:before { content: $fa-var-tag; }\n.#{$fa-css-prefix}-tags:before { content: $fa-var-tags; }\n.#{$fa-css-prefix}-book:before { content: $fa-var-book; }\n.#{$fa-css-prefix}-bookmark:before { content: $fa-var-bookmark; }\n.#{$fa-css-prefix}-print:before { content: $fa-var-print; }\n.#{$fa-css-prefix}-camera:before { content: $fa-var-camera; }\n.#{$fa-css-prefix}-font:before { content: $fa-var-font; }\n.#{$fa-css-prefix}-bold:before { content: $fa-var-bold; }\n.#{$fa-css-prefix}-italic:before { content: $fa-var-italic; }\n.#{$fa-css-prefix}-text-height:before { content: $fa-var-text-height; }\n.#{$fa-css-prefix}-text-width:before { content: $fa-var-text-width; }\n.#{$fa-css-prefix}-align-left:before { content: $fa-var-align-left; }\n.#{$fa-css-prefix}-align-center:before { content: $fa-var-align-center; }\n.#{$fa-css-prefix}-align-right:before { content: $fa-var-align-right; }\n.#{$fa-css-prefix}-align-justify:before { content: $fa-var-align-justify; }\n.#{$fa-css-prefix}-list:before { content: $fa-var-list; }\n.#{$fa-css-prefix}-dedent:before,\n.#{$fa-css-prefix}-outdent:before { content: $fa-var-outdent; }\n.#{$fa-css-prefix}-indent:before { content: $fa-var-indent; }\n.#{$fa-css-prefix}-video-camera:before { content: $fa-var-video-camera; }\n.#{$fa-css-prefix}-photo:before,\n.#{$fa-css-prefix}-image:before,\n.#{$fa-css-prefix}-picture-o:before { content: $fa-var-picture-o; }\n.#{$fa-css-prefix}-pencil:before { content: $fa-var-pencil; }\n.#{$fa-css-prefix}-map-marker:before { content: $fa-var-map-marker; }\n.#{$fa-css-prefix}-adjust:before { content: $fa-var-adjust; }\n.#{$fa-css-prefix}-tint:before { content: $fa-var-tint; }\n.#{$fa-css-prefix}-edit:before,\n.#{$fa-css-prefix}-pencil-square-o:before { content: $fa-var-pencil-square-o; }\n.#{$fa-css-prefix}-share-square-o:before { content: $fa-var-share-square-o; }\n.#{$fa-css-prefix}-check-square-o:before { content: $fa-var-check-square-o; }\n.#{$fa-css-prefix}-arrows:before { content: $fa-var-arrows; }\n.#{$fa-css-prefix}-step-backward:before { content: $fa-var-step-backward; }\n.#{$fa-css-prefix}-fast-backward:before { content: $fa-var-fast-backward; }\n.#{$fa-css-prefix}-backward:before { content: $fa-var-backward; }\n.#{$fa-css-prefix}-play:before { content: $fa-var-play; }\n.#{$fa-css-prefix}-pause:before { content: $fa-var-pause; }\n.#{$fa-css-prefix}-stop:before { content: $fa-var-stop; }\n.#{$fa-css-prefix}-forward:before { content: $fa-var-forward; }\n.#{$fa-css-prefix}-fast-forward:before { content: $fa-var-fast-forward; }\n.#{$fa-css-prefix}-step-forward:before { content: $fa-var-step-forward; }\n.#{$fa-css-prefix}-eject:before { content: $fa-var-eject; }\n.#{$fa-css-prefix}-chevron-left:before { content: $fa-var-chevron-left; }\n.#{$fa-css-prefix}-chevron-right:before { content: $fa-var-chevron-right; }\n.#{$fa-css-prefix}-plus-circle:before { content: $fa-var-plus-circle; }\n.#{$fa-css-prefix}-minus-circle:before { content: $fa-var-minus-circle; }\n.#{$fa-css-prefix}-times-circle:before { content: $fa-var-times-circle; }\n.#{$fa-css-prefix}-check-circle:before { content: $fa-var-check-circle; }\n.#{$fa-css-prefix}-question-circle:before { content: $fa-var-question-circle; }\n.#{$fa-css-prefix}-info-circle:before { content: $fa-var-info-circle; }\n.#{$fa-css-prefix}-crosshairs:before { content: $fa-var-crosshairs; }\n.#{$fa-css-prefix}-times-circle-o:before { content: $fa-var-times-circle-o; }\n.#{$fa-css-prefix}-check-circle-o:before { content: $fa-var-check-circle-o; }\n.#{$fa-css-prefix}-ban:before { content: $fa-var-ban; }\n.#{$fa-css-prefix}-arrow-left:before { content: $fa-var-arrow-left; }\n.#{$fa-css-prefix}-arrow-right:before { content: $fa-var-arrow-right; }\n.#{$fa-css-prefix}-arrow-up:before { content: $fa-var-arrow-up; }\n.#{$fa-css-prefix}-arrow-down:before { content: $fa-var-arrow-down; }\n.#{$fa-css-prefix}-mail-forward:before,\n.#{$fa-css-prefix}-share:before { content: $fa-var-share; }\n.#{$fa-css-prefix}-expand:before { content: $fa-var-expand; }\n.#{$fa-css-prefix}-compress:before { content: $fa-var-compress; }\n.#{$fa-css-prefix}-plus:before { content: $fa-var-plus; }\n.#{$fa-css-prefix}-minus:before { content: $fa-var-minus; }\n.#{$fa-css-prefix}-asterisk:before { content: $fa-var-asterisk; }\n.#{$fa-css-prefix}-exclamation-circle:before { content: $fa-var-exclamation-circle; }\n.#{$fa-css-prefix}-gift:before { content: $fa-var-gift; }\n.#{$fa-css-prefix}-leaf:before { content: $fa-var-leaf; }\n.#{$fa-css-prefix}-fire:before { content: $fa-var-fire; }\n.#{$fa-css-prefix}-eye:before { content: $fa-var-eye; }\n.#{$fa-css-prefix}-eye-slash:before { content: $fa-var-eye-slash; }\n.#{$fa-css-prefix}-warning:before,\n.#{$fa-css-prefix}-exclamation-triangle:before { content: $fa-var-exclamation-triangle; }\n.#{$fa-css-prefix}-plane:before { content: $fa-var-plane; }\n.#{$fa-css-prefix}-calendar:before { content: $fa-var-calendar; }\n.#{$fa-css-prefix}-random:before { content: $fa-var-random; }\n.#{$fa-css-prefix}-comment:before { content: $fa-var-comment; }\n.#{$fa-css-prefix}-magnet:before { content: $fa-var-magnet; }\n.#{$fa-css-prefix}-chevron-up:before { content: $fa-var-chevron-up; }\n.#{$fa-css-prefix}-chevron-down:before { content: $fa-var-chevron-down; }\n.#{$fa-css-prefix}-retweet:before { content: $fa-var-retweet; }\n.#{$fa-css-prefix}-shopping-cart:before { content: $fa-var-shopping-cart; }\n.#{$fa-css-prefix}-folder:before { content: $fa-var-folder; }\n.#{$fa-css-prefix}-folder-open:before { content: $fa-var-folder-open; }\n.#{$fa-css-prefix}-arrows-v:before { content: $fa-var-arrows-v; }\n.#{$fa-css-prefix}-arrows-h:before { content: $fa-var-arrows-h; }\n.#{$fa-css-prefix}-bar-chart-o:before,\n.#{$fa-css-prefix}-bar-chart:before { content: $fa-var-bar-chart; }\n.#{$fa-css-prefix}-twitter-square:before { content: $fa-var-twitter-square; }\n.#{$fa-css-prefix}-facebook-square:before { content: $fa-var-facebook-square; }\n.#{$fa-css-prefix}-camera-retro:before { content: $fa-var-camera-retro; }\n.#{$fa-css-prefix}-key:before { content: $fa-var-key; }\n.#{$fa-css-prefix}-gears:before,\n.#{$fa-css-prefix}-cogs:before { content: $fa-var-cogs; }\n.#{$fa-css-prefix}-comments:before { content: $fa-var-comments; }\n.#{$fa-css-prefix}-thumbs-o-up:before { content: $fa-var-thumbs-o-up; }\n.#{$fa-css-prefix}-thumbs-o-down:before { content: $fa-var-thumbs-o-down; }\n.#{$fa-css-prefix}-star-half:before { content: $fa-var-star-half; }\n.#{$fa-css-prefix}-heart-o:before { content: $fa-var-heart-o; }\n.#{$fa-css-prefix}-sign-out:before { content: $fa-var-sign-out; }\n.#{$fa-css-prefix}-linkedin-square:before { content: $fa-var-linkedin-square; }\n.#{$fa-css-prefix}-thumb-tack:before { content: $fa-var-thumb-tack; }\n.#{$fa-css-prefix}-external-link:before { content: $fa-var-external-link; }\n.#{$fa-css-prefix}-sign-in:before { content: $fa-var-sign-in; }\n.#{$fa-css-prefix}-trophy:before { content: $fa-var-trophy; }\n.#{$fa-css-prefix}-github-square:before { content: $fa-var-github-square; }\n.#{$fa-css-prefix}-upload:before { content: $fa-var-upload; }\n.#{$fa-css-prefix}-lemon-o:before { content: $fa-var-lemon-o; }\n.#{$fa-css-prefix}-phone:before { content: $fa-var-phone; }\n.#{$fa-css-prefix}-square-o:before { content: $fa-var-square-o; }\n.#{$fa-css-prefix}-bookmark-o:before { content: $fa-var-bookmark-o; }\n.#{$fa-css-prefix}-phone-square:before { content: $fa-var-phone-square; }\n.#{$fa-css-prefix}-twitter:before { content: $fa-var-twitter; }\n.#{$fa-css-prefix}-facebook-f:before,\n.#{$fa-css-prefix}-facebook:before { content: $fa-var-facebook; }\n.#{$fa-css-prefix}-github:before { content: $fa-var-github; }\n.#{$fa-css-prefix}-unlock:before { content: $fa-var-unlock; }\n.#{$fa-css-prefix}-credit-card:before { content: $fa-var-credit-card; }\n.#{$fa-css-prefix}-rss:before { content: $fa-var-rss; }\n.#{$fa-css-prefix}-hdd-o:before { content: $fa-var-hdd-o; }\n.#{$fa-css-prefix}-bullhorn:before { content: $fa-var-bullhorn; }\n.#{$fa-css-prefix}-bell:before { content: $fa-var-bell; }\n.#{$fa-css-prefix}-certificate:before { content: $fa-var-certificate; }\n.#{$fa-css-prefix}-hand-o-right:before { content: $fa-var-hand-o-right; }\n.#{$fa-css-prefix}-hand-o-left:before { content: $fa-var-hand-o-left; }\n.#{$fa-css-prefix}-hand-o-up:before { content: $fa-var-hand-o-up; }\n.#{$fa-css-prefix}-hand-o-down:before { content: $fa-var-hand-o-down; }\n.#{$fa-css-prefix}-arrow-circle-left:before { content: $fa-var-arrow-circle-left; }\n.#{$fa-css-prefix}-arrow-circle-right:before { content: $fa-var-arrow-circle-right; }\n.#{$fa-css-prefix}-arrow-circle-up:before { content: $fa-var-arrow-circle-up; }\n.#{$fa-css-prefix}-arrow-circle-down:before { content: $fa-var-arrow-circle-down; }\n.#{$fa-css-prefix}-globe:before { content: $fa-var-globe; }\n.#{$fa-css-prefix}-wrench:before { content: $fa-var-wrench; }\n.#{$fa-css-prefix}-tasks:before { content: $fa-var-tasks; }\n.#{$fa-css-prefix}-filter:before { content: $fa-var-filter; }\n.#{$fa-css-prefix}-briefcase:before { content: $fa-var-briefcase; }\n.#{$fa-css-prefix}-arrows-alt:before { content: $fa-var-arrows-alt; }\n.#{$fa-css-prefix}-group:before,\n.#{$fa-css-prefix}-users:before { content: $fa-var-users; }\n.#{$fa-css-prefix}-chain:before,\n.#{$fa-css-prefix}-link:before { content: $fa-var-link; }\n.#{$fa-css-prefix}-cloud:before { content: $fa-var-cloud; }\n.#{$fa-css-prefix}-flask:before { content: $fa-var-flask; }\n.#{$fa-css-prefix}-cut:before,\n.#{$fa-css-prefix}-scissors:before { content: $fa-var-scissors; }\n.#{$fa-css-prefix}-copy:before,\n.#{$fa-css-prefix}-files-o:before { content: $fa-var-files-o; }\n.#{$fa-css-prefix}-paperclip:before { content: $fa-var-paperclip; }\n.#{$fa-css-prefix}-save:before,\n.#{$fa-css-prefix}-floppy-o:before { content: $fa-var-floppy-o; }\n.#{$fa-css-prefix}-square:before { content: $fa-var-square; }\n.#{$fa-css-prefix}-navicon:before,\n.#{$fa-css-prefix}-reorder:before,\n.#{$fa-css-prefix}-bars:before { content: $fa-var-bars; }\n.#{$fa-css-prefix}-list-ul:before { content: $fa-var-list-ul; }\n.#{$fa-css-prefix}-list-ol:before { content: $fa-var-list-ol; }\n.#{$fa-css-prefix}-strikethrough:before { content: $fa-var-strikethrough; }\n.#{$fa-css-prefix}-underline:before { content: $fa-var-underline; }\n.#{$fa-css-prefix}-table:before { content: $fa-var-table; }\n.#{$fa-css-prefix}-magic:before { content: $fa-var-magic; }\n.#{$fa-css-prefix}-truck:before { content: $fa-var-truck; }\n.#{$fa-css-prefix}-pinterest:before { content: $fa-var-pinterest; }\n.#{$fa-css-prefix}-pinterest-square:before { content: $fa-var-pinterest-square; }\n.#{$fa-css-prefix}-google-plus-square:before { content: $fa-var-google-plus-square; }\n.#{$fa-css-prefix}-google-plus:before { content: $fa-var-google-plus; }\n.#{$fa-css-prefix}-money:before { content: $fa-var-money; }\n.#{$fa-css-prefix}-caret-down:before { content: $fa-var-caret-down; }\n.#{$fa-css-prefix}-caret-up:before { content: $fa-var-caret-up; }\n.#{$fa-css-prefix}-caret-left:before { content: $fa-var-caret-left; }\n.#{$fa-css-prefix}-caret-right:before { content: $fa-var-caret-right; }\n.#{$fa-css-prefix}-columns:before { content: $fa-var-columns; }\n.#{$fa-css-prefix}-unsorted:before,\n.#{$fa-css-prefix}-sort:before { content: $fa-var-sort; }\n.#{$fa-css-prefix}-sort-down:before,\n.#{$fa-css-prefix}-sort-desc:before { content: $fa-var-sort-desc; }\n.#{$fa-css-prefix}-sort-up:before,\n.#{$fa-css-prefix}-sort-asc:before { content: $fa-var-sort-asc; }\n.#{$fa-css-prefix}-envelope:before { content: $fa-var-envelope; }\n.#{$fa-css-prefix}-linkedin:before { content: $fa-var-linkedin; }\n.#{$fa-css-prefix}-rotate-left:before,\n.#{$fa-css-prefix}-undo:before { content: $fa-var-undo; }\n.#{$fa-css-prefix}-legal:before,\n.#{$fa-css-prefix}-gavel:before { content: $fa-var-gavel; }\n.#{$fa-css-prefix}-dashboard:before,\n.#{$fa-css-prefix}-tachometer:before { content: $fa-var-tachometer; }\n.#{$fa-css-prefix}-comment-o:before { content: $fa-var-comment-o; }\n.#{$fa-css-prefix}-comments-o:before { content: $fa-var-comments-o; }\n.#{$fa-css-prefix}-flash:before,\n.#{$fa-css-prefix}-bolt:before { content: $fa-var-bolt; }\n.#{$fa-css-prefix}-sitemap:before { content: $fa-var-sitemap; }\n.#{$fa-css-prefix}-umbrella:before { content: $fa-var-umbrella; }\n.#{$fa-css-prefix}-paste:before,\n.#{$fa-css-prefix}-clipboard:before { content: $fa-var-clipboard; }\n.#{$fa-css-prefix}-lightbulb-o:before { content: $fa-var-lightbulb-o; }\n.#{$fa-css-prefix}-exchange:before { content: $fa-var-exchange; }\n.#{$fa-css-prefix}-cloud-download:before { content: $fa-var-cloud-download; }\n.#{$fa-css-prefix}-cloud-upload:before { content: $fa-var-cloud-upload; }\n.#{$fa-css-prefix}-user-md:before { content: $fa-var-user-md; }\n.#{$fa-css-prefix}-stethoscope:before { content: $fa-var-stethoscope; }\n.#{$fa-css-prefix}-suitcase:before { content: $fa-var-suitcase; }\n.#{$fa-css-prefix}-bell-o:before { content: $fa-var-bell-o; }\n.#{$fa-css-prefix}-coffee:before { content: $fa-var-coffee; }\n.#{$fa-css-prefix}-cutlery:before { content: $fa-var-cutlery; }\n.#{$fa-css-prefix}-file-text-o:before { content: $fa-var-file-text-o; }\n.#{$fa-css-prefix}-building-o:before { content: $fa-var-building-o; }\n.#{$fa-css-prefix}-hospital-o:before { content: $fa-var-hospital-o; }\n.#{$fa-css-prefix}-ambulance:before { content: $fa-var-ambulance; }\n.#{$fa-css-prefix}-medkit:before { content: $fa-var-medkit; }\n.#{$fa-css-prefix}-fighter-jet:before { content: $fa-var-fighter-jet; }\n.#{$fa-css-prefix}-beer:before { content: $fa-var-beer; }\n.#{$fa-css-prefix}-h-square:before { content: $fa-var-h-square; }\n.#{$fa-css-prefix}-plus-square:before { content: $fa-var-plus-square; }\n.#{$fa-css-prefix}-angle-double-left:before { content: $fa-var-angle-double-left; }\n.#{$fa-css-prefix}-angle-double-right:before { content: $fa-var-angle-double-right; }\n.#{$fa-css-prefix}-angle-double-up:before { content: $fa-var-angle-double-up; }\n.#{$fa-css-prefix}-angle-double-down:before { content: $fa-var-angle-double-down; }\n.#{$fa-css-prefix}-angle-left:before { content: $fa-var-angle-left; }\n.#{$fa-css-prefix}-angle-right:before { content: $fa-var-angle-right; }\n.#{$fa-css-prefix}-angle-up:before { content: $fa-var-angle-up; }\n.#{$fa-css-prefix}-angle-down:before { content: $fa-var-angle-down; }\n.#{$fa-css-prefix}-desktop:before { content: $fa-var-desktop; }\n.#{$fa-css-prefix}-laptop:before { content: $fa-var-laptop; }\n.#{$fa-css-prefix}-tablet:before { content: $fa-var-tablet; }\n.#{$fa-css-prefix}-mobile-phone:before,\n.#{$fa-css-prefix}-mobile:before { content: $fa-var-mobile; }\n.#{$fa-css-prefix}-circle-o:before { content: $fa-var-circle-o; }\n.#{$fa-css-prefix}-quote-left:before { content: $fa-var-quote-left; }\n.#{$fa-css-prefix}-quote-right:before { content: $fa-var-quote-right; }\n.#{$fa-css-prefix}-spinner:before { content: $fa-var-spinner; }\n.#{$fa-css-prefix}-circle:before { content: $fa-var-circle; }\n.#{$fa-css-prefix}-mail-reply:before,\n.#{$fa-css-prefix}-reply:before { content: $fa-var-reply; }\n.#{$fa-css-prefix}-github-alt:before { content: $fa-var-github-alt; }\n.#{$fa-css-prefix}-folder-o:before { content: $fa-var-folder-o; }\n.#{$fa-css-prefix}-folder-open-o:before { content: $fa-var-folder-open-o; }\n.#{$fa-css-prefix}-smile-o:before { content: $fa-var-smile-o; }\n.#{$fa-css-prefix}-frown-o:before { content: $fa-var-frown-o; }\n.#{$fa-css-prefix}-meh-o:before { content: $fa-var-meh-o; }\n.#{$fa-css-prefix}-gamepad:before { content: $fa-var-gamepad; }\n.#{$fa-css-prefix}-keyboard-o:before { content: $fa-var-keyboard-o; }\n.#{$fa-css-prefix}-flag-o:before { content: $fa-var-flag-o; }\n.#{$fa-css-prefix}-flag-checkered:before { content: $fa-var-flag-checkered; }\n.#{$fa-css-prefix}-terminal:before { content: $fa-var-terminal; }\n.#{$fa-css-prefix}-code:before { content: $fa-var-code; }\n.#{$fa-css-prefix}-mail-reply-all:before,\n.#{$fa-css-prefix}-reply-all:before { content: $fa-var-reply-all; }\n.#{$fa-css-prefix}-star-half-empty:before,\n.#{$fa-css-prefix}-star-half-full:before,\n.#{$fa-css-prefix}-star-half-o:before { content: $fa-var-star-half-o; }\n.#{$fa-css-prefix}-location-arrow:before { content: $fa-var-location-arrow; }\n.#{$fa-css-prefix}-crop:before { content: $fa-var-crop; }\n.#{$fa-css-prefix}-code-fork:before { content: $fa-var-code-fork; }\n.#{$fa-css-prefix}-unlink:before,\n.#{$fa-css-prefix}-chain-broken:before { content: $fa-var-chain-broken; }\n.#{$fa-css-prefix}-question:before { content: $fa-var-question; }\n.#{$fa-css-prefix}-info:before { content: $fa-var-info; }\n.#{$fa-css-prefix}-exclamation:before { content: $fa-var-exclamation; }\n.#{$fa-css-prefix}-superscript:before { content: $fa-var-superscript; }\n.#{$fa-css-prefix}-subscript:before { content: $fa-var-subscript; }\n.#{$fa-css-prefix}-eraser:before { content: $fa-var-eraser; }\n.#{$fa-css-prefix}-puzzle-piece:before { content: $fa-var-puzzle-piece; }\n.#{$fa-css-prefix}-microphone:before { content: $fa-var-microphone; }\n.#{$fa-css-prefix}-microphone-slash:before { content: $fa-var-microphone-slash; }\n.#{$fa-css-prefix}-shield:before { content: $fa-var-shield; }\n.#{$fa-css-prefix}-calendar-o:before { content: $fa-var-calendar-o; }\n.#{$fa-css-prefix}-fire-extinguisher:before { content: $fa-var-fire-extinguisher; }\n.#{$fa-css-prefix}-rocket:before { content: $fa-var-rocket; }\n.#{$fa-css-prefix}-maxcdn:before { content: $fa-var-maxcdn; }\n.#{$fa-css-prefix}-chevron-circle-left:before { content: $fa-var-chevron-circle-left; }\n.#{$fa-css-prefix}-chevron-circle-right:before { content: $fa-var-chevron-circle-right; }\n.#{$fa-css-prefix}-chevron-circle-up:before { content: $fa-var-chevron-circle-up; }\n.#{$fa-css-prefix}-chevron-circle-down:before { content: $fa-var-chevron-circle-down; }\n.#{$fa-css-prefix}-html5:before { content: $fa-var-html5; }\n.#{$fa-css-prefix}-css3:before { content: $fa-var-css3; }\n.#{$fa-css-prefix}-anchor:before { content: $fa-var-anchor; }\n.#{$fa-css-prefix}-unlock-alt:before { content: $fa-var-unlock-alt; }\n.#{$fa-css-prefix}-bullseye:before { content: $fa-var-bullseye; }\n.#{$fa-css-prefix}-ellipsis-h:before { content: $fa-var-ellipsis-h; }\n.#{$fa-css-prefix}-ellipsis-v:before { content: $fa-var-ellipsis-v; }\n.#{$fa-css-prefix}-rss-square:before { content: $fa-var-rss-square; }\n.#{$fa-css-prefix}-play-circle:before { content: $fa-var-play-circle; }\n.#{$fa-css-prefix}-ticket:before { content: $fa-var-ticket; }\n.#{$fa-css-prefix}-minus-square:before { content: $fa-var-minus-square; }\n.#{$fa-css-prefix}-minus-square-o:before { content: $fa-var-minus-square-o; }\n.#{$fa-css-prefix}-level-up:before { content: $fa-var-level-up; }\n.#{$fa-css-prefix}-level-down:before { content: $fa-var-level-down; }\n.#{$fa-css-prefix}-check-square:before { content: $fa-var-check-square; }\n.#{$fa-css-prefix}-pencil-square:before { content: $fa-var-pencil-square; }\n.#{$fa-css-prefix}-external-link-square:before { content: $fa-var-external-link-square; }\n.#{$fa-css-prefix}-share-square:before { content: $fa-var-share-square; }\n.#{$fa-css-prefix}-compass:before { content: $fa-var-compass; }\n.#{$fa-css-prefix}-toggle-down:before,\n.#{$fa-css-prefix}-caret-square-o-down:before { content: $fa-var-caret-square-o-down; }\n.#{$fa-css-prefix}-toggle-up:before,\n.#{$fa-css-prefix}-caret-square-o-up:before { content: $fa-var-caret-square-o-up; }\n.#{$fa-css-prefix}-toggle-right:before,\n.#{$fa-css-prefix}-caret-square-o-right:before { content: $fa-var-caret-square-o-right; }\n.#{$fa-css-prefix}-euro:before,\n.#{$fa-css-prefix}-eur:before { content: $fa-var-eur; }\n.#{$fa-css-prefix}-gbp:before { content: $fa-var-gbp; }\n.#{$fa-css-prefix}-dollar:before,\n.#{$fa-css-prefix}-usd:before { content: $fa-var-usd; }\n.#{$fa-css-prefix}-rupee:before,\n.#{$fa-css-prefix}-inr:before { content: $fa-var-inr; }\n.#{$fa-css-prefix}-cny:before,\n.#{$fa-css-prefix}-rmb:before,\n.#{$fa-css-prefix}-yen:before,\n.#{$fa-css-prefix}-jpy:before { content: $fa-var-jpy; }\n.#{$fa-css-prefix}-ruble:before,\n.#{$fa-css-prefix}-rouble:before,\n.#{$fa-css-prefix}-rub:before { content: $fa-var-rub; }\n.#{$fa-css-prefix}-won:before,\n.#{$fa-css-prefix}-krw:before { content: $fa-var-krw; }\n.#{$fa-css-prefix}-bitcoin:before,\n.#{$fa-css-prefix}-btc:before { content: $fa-var-btc; }\n.#{$fa-css-prefix}-file:before { content: $fa-var-file; }\n.#{$fa-css-prefix}-file-text:before { content: $fa-var-file-text; }\n.#{$fa-css-prefix}-sort-alpha-asc:before { content: $fa-var-sort-alpha-asc; }\n.#{$fa-css-prefix}-sort-alpha-desc:before { content: $fa-var-sort-alpha-desc; }\n.#{$fa-css-prefix}-sort-amount-asc:before { content: $fa-var-sort-amount-asc; }\n.#{$fa-css-prefix}-sort-amount-desc:before { content: $fa-var-sort-amount-desc; }\n.#{$fa-css-prefix}-sort-numeric-asc:before { content: $fa-var-sort-numeric-asc; }\n.#{$fa-css-prefix}-sort-numeric-desc:before { content: $fa-var-sort-numeric-desc; }\n.#{$fa-css-prefix}-thumbs-up:before { content: $fa-var-thumbs-up; }\n.#{$fa-css-prefix}-thumbs-down:before { content: $fa-var-thumbs-down; }\n.#{$fa-css-prefix}-youtube-square:before { content: $fa-var-youtube-square; }\n.#{$fa-css-prefix}-youtube:before { content: $fa-var-youtube; }\n.#{$fa-css-prefix}-xing:before { content: $fa-var-xing; }\n.#{$fa-css-prefix}-xing-square:before { content: $fa-var-xing-square; }\n.#{$fa-css-prefix}-youtube-play:before { content: $fa-var-youtube-play; }\n.#{$fa-css-prefix}-dropbox:before { content: $fa-var-dropbox; }\n.#{$fa-css-prefix}-stack-overflow:before { content: $fa-var-stack-overflow; }\n.#{$fa-css-prefix}-instagram:before { content: $fa-var-instagram; }\n.#{$fa-css-prefix}-flickr:before { content: $fa-var-flickr; }\n.#{$fa-css-prefix}-adn:before { content: $fa-var-adn; }\n.#{$fa-css-prefix}-bitbucket:before { content: $fa-var-bitbucket; }\n.#{$fa-css-prefix}-bitbucket-square:before { content: $fa-var-bitbucket-square; }\n.#{$fa-css-prefix}-tumblr:before { content: $fa-var-tumblr; }\n.#{$fa-css-prefix}-tumblr-square:before { content: $fa-var-tumblr-square; }\n.#{$fa-css-prefix}-long-arrow-down:before { content: $fa-var-long-arrow-down; }\n.#{$fa-css-prefix}-long-arrow-up:before { content: $fa-var-long-arrow-up; }\n.#{$fa-css-prefix}-long-arrow-left:before { content: $fa-var-long-arrow-left; }\n.#{$fa-css-prefix}-long-arrow-right:before { content: $fa-var-long-arrow-right; }\n.#{$fa-css-prefix}-apple:before { content: $fa-var-apple; }\n.#{$fa-css-prefix}-windows:before { content: $fa-var-windows; }\n.#{$fa-css-prefix}-android:before { content: $fa-var-android; }\n.#{$fa-css-prefix}-linux:before { content: $fa-var-linux; }\n.#{$fa-css-prefix}-dribbble:before { content: $fa-var-dribbble; }\n.#{$fa-css-prefix}-skype:before { content: $fa-var-skype; }\n.#{$fa-css-prefix}-foursquare:before { content: $fa-var-foursquare; }\n.#{$fa-css-prefix}-trello:before { content: $fa-var-trello; }\n.#{$fa-css-prefix}-female:before { content: $fa-var-female; }\n.#{$fa-css-prefix}-male:before { content: $fa-var-male; }\n.#{$fa-css-prefix}-gittip:before,\n.#{$fa-css-prefix}-gratipay:before { content: $fa-var-gratipay; }\n.#{$fa-css-prefix}-sun-o:before { content: $fa-var-sun-o; }\n.#{$fa-css-prefix}-moon-o:before { content: $fa-var-moon-o; }\n.#{$fa-css-prefix}-archive:before { content: $fa-var-archive; }\n.#{$fa-css-prefix}-bug:before { content: $fa-var-bug; }\n.#{$fa-css-prefix}-vk:before { content: $fa-var-vk; }\n.#{$fa-css-prefix}-weibo:before { content: $fa-var-weibo; }\n.#{$fa-css-prefix}-renren:before { content: $fa-var-renren; }\n.#{$fa-css-prefix}-pagelines:before { content: $fa-var-pagelines; }\n.#{$fa-css-prefix}-stack-exchange:before { content: $fa-var-stack-exchange; }\n.#{$fa-css-prefix}-arrow-circle-o-right:before { content: $fa-var-arrow-circle-o-right; }\n.#{$fa-css-prefix}-arrow-circle-o-left:before { content: $fa-var-arrow-circle-o-left; }\n.#{$fa-css-prefix}-toggle-left:before,\n.#{$fa-css-prefix}-caret-square-o-left:before { content: $fa-var-caret-square-o-left; }\n.#{$fa-css-prefix}-dot-circle-o:before { content: $fa-var-dot-circle-o; }\n.#{$fa-css-prefix}-wheelchair:before { content: $fa-var-wheelchair; }\n.#{$fa-css-prefix}-vimeo-square:before { content: $fa-var-vimeo-square; }\n.#{$fa-css-prefix}-turkish-lira:before,\n.#{$fa-css-prefix}-try:before { content: $fa-var-try; }\n.#{$fa-css-prefix}-plus-square-o:before { content: $fa-var-plus-square-o; }\n.#{$fa-css-prefix}-space-shuttle:before { content: $fa-var-space-shuttle; }\n.#{$fa-css-prefix}-slack:before { content: $fa-var-slack; }\n.#{$fa-css-prefix}-envelope-square:before { content: $fa-var-envelope-square; }\n.#{$fa-css-prefix}-wordpress:before { content: $fa-var-wordpress; }\n.#{$fa-css-prefix}-openid:before { content: $fa-var-openid; }\n.#{$fa-css-prefix}-institution:before,\n.#{$fa-css-prefix}-bank:before,\n.#{$fa-css-prefix}-university:before { content: $fa-var-university; }\n.#{$fa-css-prefix}-mortar-board:before,\n.#{$fa-css-prefix}-graduation-cap:before { content: $fa-var-graduation-cap; }\n.#{$fa-css-prefix}-yahoo:before { content: $fa-var-yahoo; }\n.#{$fa-css-prefix}-google:before { content: $fa-var-google; }\n.#{$fa-css-prefix}-reddit:before { content: $fa-var-reddit; }\n.#{$fa-css-prefix}-reddit-square:before { content: $fa-var-reddit-square; }\n.#{$fa-css-prefix}-stumbleupon-circle:before { content: $fa-var-stumbleupon-circle; }\n.#{$fa-css-prefix}-stumbleupon:before { content: $fa-var-stumbleupon; }\n.#{$fa-css-prefix}-delicious:before { content: $fa-var-delicious; }\n.#{$fa-css-prefix}-digg:before { content: $fa-var-digg; }\n.#{$fa-css-prefix}-pied-piper:before { content: $fa-var-pied-piper; }\n.#{$fa-css-prefix}-pied-piper-alt:before { content: $fa-var-pied-piper-alt; }\n.#{$fa-css-prefix}-drupal:before { content: $fa-var-drupal; }\n.#{$fa-css-prefix}-joomla:before { content: $fa-var-joomla; }\n.#{$fa-css-prefix}-language:before { content: $fa-var-language; }\n.#{$fa-css-prefix}-fax:before { content: $fa-var-fax; }\n.#{$fa-css-prefix}-building:before { content: $fa-var-building; }\n.#{$fa-css-prefix}-child:before { content: $fa-var-child; }\n.#{$fa-css-prefix}-paw:before { content: $fa-var-paw; }\n.#{$fa-css-prefix}-spoon:before { content: $fa-var-spoon; }\n.#{$fa-css-prefix}-cube:before { content: $fa-var-cube; }\n.#{$fa-css-prefix}-cubes:before { content: $fa-var-cubes; }\n.#{$fa-css-prefix}-behance:before { content: $fa-var-behance; }\n.#{$fa-css-prefix}-behance-square:before { content: $fa-var-behance-square; }\n.#{$fa-css-prefix}-steam:before { content: $fa-var-steam; }\n.#{$fa-css-prefix}-steam-square:before { content: $fa-var-steam-square; }\n.#{$fa-css-prefix}-recycle:before { content: $fa-var-recycle; }\n.#{$fa-css-prefix}-automobile:before,\n.#{$fa-css-prefix}-car:before { content: $fa-var-car; }\n.#{$fa-css-prefix}-cab:before,\n.#{$fa-css-prefix}-taxi:before { content: $fa-var-taxi; }\n.#{$fa-css-prefix}-tree:before { content: $fa-var-tree; }\n.#{$fa-css-prefix}-spotify:before { content: $fa-var-spotify; }\n.#{$fa-css-prefix}-deviantart:before { content: $fa-var-deviantart; }\n.#{$fa-css-prefix}-soundcloud:before { content: $fa-var-soundcloud; }\n.#{$fa-css-prefix}-database:before { content: $fa-var-database; }\n.#{$fa-css-prefix}-file-pdf-o:before { content: $fa-var-file-pdf-o; }\n.#{$fa-css-prefix}-file-word-o:before { content: $fa-var-file-word-o; }\n.#{$fa-css-prefix}-file-excel-o:before { content: $fa-var-file-excel-o; }\n.#{$fa-css-prefix}-file-powerpoint-o:before { content: $fa-var-file-powerpoint-o; }\n.#{$fa-css-prefix}-file-photo-o:before,\n.#{$fa-css-prefix}-file-picture-o:before,\n.#{$fa-css-prefix}-file-image-o:before { content: $fa-var-file-image-o; }\n.#{$fa-css-prefix}-file-zip-o:before,\n.#{$fa-css-prefix}-file-archive-o:before { content: $fa-var-file-archive-o; }\n.#{$fa-css-prefix}-file-sound-o:before,\n.#{$fa-css-prefix}-file-audio-o:before { content: $fa-var-file-audio-o; }\n.#{$fa-css-prefix}-file-movie-o:before,\n.#{$fa-css-prefix}-file-video-o:before { content: $fa-var-file-video-o; }\n.#{$fa-css-prefix}-file-code-o:before { content: $fa-var-file-code-o; }\n.#{$fa-css-prefix}-vine:before { content: $fa-var-vine; }\n.#{$fa-css-prefix}-codepen:before { content: $fa-var-codepen; }\n.#{$fa-css-prefix}-jsfiddle:before { content: $fa-var-jsfiddle; }\n.#{$fa-css-prefix}-life-bouy:before,\n.#{$fa-css-prefix}-life-buoy:before,\n.#{$fa-css-prefix}-life-saver:before,\n.#{$fa-css-prefix}-support:before,\n.#{$fa-css-prefix}-life-ring:before { content: $fa-var-life-ring; }\n.#{$fa-css-prefix}-circle-o-notch:before { content: $fa-var-circle-o-notch; }\n.#{$fa-css-prefix}-ra:before,\n.#{$fa-css-prefix}-rebel:before { content: $fa-var-rebel; }\n.#{$fa-css-prefix}-ge:before,\n.#{$fa-css-prefix}-empire:before { content: $fa-var-empire; }\n.#{$fa-css-prefix}-git-square:before { content: $fa-var-git-square; }\n.#{$fa-css-prefix}-git:before { content: $fa-var-git; }\n.#{$fa-css-prefix}-hacker-news:before { content: $fa-var-hacker-news; }\n.#{$fa-css-prefix}-tencent-weibo:before { content: $fa-var-tencent-weibo; }\n.#{$fa-css-prefix}-qq:before { content: $fa-var-qq; }\n.#{$fa-css-prefix}-wechat:before,\n.#{$fa-css-prefix}-weixin:before { content: $fa-var-weixin; }\n.#{$fa-css-prefix}-send:before,\n.#{$fa-css-prefix}-paper-plane:before { content: $fa-var-paper-plane; }\n.#{$fa-css-prefix}-send-o:before,\n.#{$fa-css-prefix}-paper-plane-o:before { content: $fa-var-paper-plane-o; }\n.#{$fa-css-prefix}-history:before { content: $fa-var-history; }\n.#{$fa-css-prefix}-genderless:before,\n.#{$fa-css-prefix}-circle-thin:before { content: $fa-var-circle-thin; }\n.#{$fa-css-prefix}-header:before { content: $fa-var-header; }\n.#{$fa-css-prefix}-paragraph:before { content: $fa-var-paragraph; }\n.#{$fa-css-prefix}-sliders:before { content: $fa-var-sliders; }\n.#{$fa-css-prefix}-share-alt:before { content: $fa-var-share-alt; }\n.#{$fa-css-prefix}-share-alt-square:before { content: $fa-var-share-alt-square; }\n.#{$fa-css-prefix}-bomb:before { content: $fa-var-bomb; }\n.#{$fa-css-prefix}-soccer-ball-o:before,\n.#{$fa-css-prefix}-futbol-o:before { content: $fa-var-futbol-o; }\n.#{$fa-css-prefix}-tty:before { content: $fa-var-tty; }\n.#{$fa-css-prefix}-binoculars:before { content: $fa-var-binoculars; }\n.#{$fa-css-prefix}-plug:before { content: $fa-var-plug; }\n.#{$fa-css-prefix}-slideshare:before { content: $fa-var-slideshare; }\n.#{$fa-css-prefix}-twitch:before { content: $fa-var-twitch; }\n.#{$fa-css-prefix}-yelp:before { content: $fa-var-yelp; }\n.#{$fa-css-prefix}-newspaper-o:before { content: $fa-var-newspaper-o; }\n.#{$fa-css-prefix}-wifi:before { content: $fa-var-wifi; }\n.#{$fa-css-prefix}-calculator:before { content: $fa-var-calculator; }\n.#{$fa-css-prefix}-paypal:before { content: $fa-var-paypal; }\n.#{$fa-css-prefix}-google-wallet:before { content: $fa-var-google-wallet; }\n.#{$fa-css-prefix}-cc-visa:before { content: $fa-var-cc-visa; }\n.#{$fa-css-prefix}-cc-mastercard:before { content: $fa-var-cc-mastercard; }\n.#{$fa-css-prefix}-cc-discover:before { content: $fa-var-cc-discover; }\n.#{$fa-css-prefix}-cc-amex:before { content: $fa-var-cc-amex; }\n.#{$fa-css-prefix}-cc-paypal:before { content: $fa-var-cc-paypal; }\n.#{$fa-css-prefix}-cc-stripe:before { content: $fa-var-cc-stripe; }\n.#{$fa-css-prefix}-bell-slash:before { content: $fa-var-bell-slash; }\n.#{$fa-css-prefix}-bell-slash-o:before { content: $fa-var-bell-slash-o; }\n.#{$fa-css-prefix}-trash:before { content: $fa-var-trash; }\n.#{$fa-css-prefix}-copyright:before { content: $fa-var-copyright; }\n.#{$fa-css-prefix}-at:before { content: $fa-var-at; }\n.#{$fa-css-prefix}-eyedropper:before { content: $fa-var-eyedropper; }\n.#{$fa-css-prefix}-paint-brush:before { content: $fa-var-paint-brush; }\n.#{$fa-css-prefix}-birthday-cake:before { content: $fa-var-birthday-cake; }\n.#{$fa-css-prefix}-area-chart:before { content: $fa-var-area-chart; }\n.#{$fa-css-prefix}-pie-chart:before { content: $fa-var-pie-chart; }\n.#{$fa-css-prefix}-line-chart:before { content: $fa-var-line-chart; }\n.#{$fa-css-prefix}-lastfm:before { content: $fa-var-lastfm; }\n.#{$fa-css-prefix}-lastfm-square:before { content: $fa-var-lastfm-square; }\n.#{$fa-css-prefix}-toggle-off:before { content: $fa-var-toggle-off; }\n.#{$fa-css-prefix}-toggle-on:before { content: $fa-var-toggle-on; }\n.#{$fa-css-prefix}-bicycle:before { content: $fa-var-bicycle; }\n.#{$fa-css-prefix}-bus:before { content: $fa-var-bus; }\n.#{$fa-css-prefix}-ioxhost:before { content: $fa-var-ioxhost; }\n.#{$fa-css-prefix}-angellist:before { content: $fa-var-angellist; }\n.#{$fa-css-prefix}-cc:before { content: $fa-var-cc; }\n.#{$fa-css-prefix}-shekel:before,\n.#{$fa-css-prefix}-sheqel:before,\n.#{$fa-css-prefix}-ils:before { content: $fa-var-ils; }\n.#{$fa-css-prefix}-meanpath:before { content: $fa-var-meanpath; }\n.#{$fa-css-prefix}-buysellads:before { content: $fa-var-buysellads; }\n.#{$fa-css-prefix}-connectdevelop:before { content: $fa-var-connectdevelop; }\n.#{$fa-css-prefix}-dashcube:before { content: $fa-var-dashcube; }\n.#{$fa-css-prefix}-forumbee:before { content: $fa-var-forumbee; }\n.#{$fa-css-prefix}-leanpub:before { content: $fa-var-leanpub; }\n.#{$fa-css-prefix}-sellsy:before { content: $fa-var-sellsy; }\n.#{$fa-css-prefix}-shirtsinbulk:before { content: $fa-var-shirtsinbulk; }\n.#{$fa-css-prefix}-simplybuilt:before { content: $fa-var-simplybuilt; }\n.#{$fa-css-prefix}-skyatlas:before { content: $fa-var-skyatlas; }\n.#{$fa-css-prefix}-cart-plus:before { content: $fa-var-cart-plus; }\n.#{$fa-css-prefix}-cart-arrow-down:before { content: $fa-var-cart-arrow-down; }\n.#{$fa-css-prefix}-diamond:before { content: $fa-var-diamond; }\n.#{$fa-css-prefix}-ship:before { content: $fa-var-ship; }\n.#{$fa-css-prefix}-user-secret:before { content: $fa-var-user-secret; }\n.#{$fa-css-prefix}-motorcycle:before { content: $fa-var-motorcycle; }\n.#{$fa-css-prefix}-street-view:before { content: $fa-var-street-view; }\n.#{$fa-css-prefix}-heartbeat:before { content: $fa-var-heartbeat; }\n.#{$fa-css-prefix}-venus:before { content: $fa-var-venus; }\n.#{$fa-css-prefix}-mars:before { content: $fa-var-mars; }\n.#{$fa-css-prefix}-mercury:before { content: $fa-var-mercury; }\n.#{$fa-css-prefix}-transgender:before { content: $fa-var-transgender; }\n.#{$fa-css-prefix}-transgender-alt:before { content: $fa-var-transgender-alt; }\n.#{$fa-css-prefix}-venus-double:before { content: $fa-var-venus-double; }\n.#{$fa-css-prefix}-mars-double:before { content: $fa-var-mars-double; }\n.#{$fa-css-prefix}-venus-mars:before { content: $fa-var-venus-mars; }\n.#{$fa-css-prefix}-mars-stroke:before { content: $fa-var-mars-stroke; }\n.#{$fa-css-prefix}-mars-stroke-v:before { content: $fa-var-mars-stroke-v; }\n.#{$fa-css-prefix}-mars-stroke-h:before { content: $fa-var-mars-stroke-h; }\n.#{$fa-css-prefix}-neuter:before { content: $fa-var-neuter; }\n.#{$fa-css-prefix}-facebook-official:before { content: $fa-var-facebook-official; }\n.#{$fa-css-prefix}-pinterest-p:before { content: $fa-var-pinterest-p; }\n.#{$fa-css-prefix}-whatsapp:before { content: $fa-var-whatsapp; }\n.#{$fa-css-prefix}-server:before { content: $fa-var-server; }\n.#{$fa-css-prefix}-user-plus:before { content: $fa-var-user-plus; }\n.#{$fa-css-prefix}-user-times:before { content: $fa-var-user-times; }\n.#{$fa-css-prefix}-hotel:before,\n.#{$fa-css-prefix}-bed:before { content: $fa-var-bed; }\n.#{$fa-css-prefix}-viacoin:before { content: $fa-var-viacoin; }\n.#{$fa-css-prefix}-train:before { content: $fa-var-train; }\n.#{$fa-css-prefix}-subway:before { content: $fa-var-subway; }\n.#{$fa-css-prefix}-medium:before { content: $fa-var-medium; }\n"
  },
  {
    "path": "app/Resources/assets/scss/font-awesome/_larger.scss",
    "content": "// Icon Sizes\n// -------------------------\n\n/* makes the font 33% larger relative to the icon container */\n.#{$fa-css-prefix}-lg {\n  font-size: (4em / 3);\n  line-height: (3em / 4);\n  vertical-align: -15%;\n}\n.#{$fa-css-prefix}-2x { font-size: 2em; }\n.#{$fa-css-prefix}-3x { font-size: 3em; }\n.#{$fa-css-prefix}-4x { font-size: 4em; }\n.#{$fa-css-prefix}-5x { font-size: 5em; }\n"
  },
  {
    "path": "app/Resources/assets/scss/font-awesome/_list.scss",
    "content": "// List Icons\n// -------------------------\n\n.#{$fa-css-prefix}-ul {\n  padding-left: 0;\n  margin-left: $fa-li-width;\n  list-style-type: none;\n  > li { position: relative; }\n}\n.#{$fa-css-prefix}-li {\n  position: absolute;\n  left: -$fa-li-width;\n  width: $fa-li-width;\n  top: (2em / 14);\n  text-align: center;\n  &.#{$fa-css-prefix}-lg {\n    left: -$fa-li-width + (4em / 14);\n  }\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/font-awesome/_mixins.scss",
    "content": "// Mixins\n// --------------------------\n\n@mixin fa-icon() {\n  display: inline-block;\n  font: normal normal normal #{$fa-font-size-base}/1 FontAwesome; // shortening font declaration\n  font-size: inherit; // can't have font-size inherit on line above, so need to override\n  text-rendering: auto; // optimizelegibility throws things off #1094\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  transform: translate(0, 0); // ensures no half-pixel rendering in firefox\n\n}\n\n@mixin fa-icon-rotate($degrees, $rotation) {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});\n  -webkit-transform: rotate($degrees);\n      -ms-transform: rotate($degrees);\n          transform: rotate($degrees);\n}\n\n@mixin fa-icon-flip($horiz, $vert, $rotation) {\n  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});\n  -webkit-transform: scale($horiz, $vert);\n      -ms-transform: scale($horiz, $vert);\n          transform: scale($horiz, $vert);\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/font-awesome/_path.scss",
    "content": "/* FONT PATH\n * -------------------------- */\n\n@font-face {\n  font-family: 'FontAwesome';\n  src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}');\n  src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'),\n    url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'),\n    url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'),\n    url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'),\n    url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg');\n//  src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts\n  font-weight: normal;\n  font-style: normal;\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/font-awesome/_rotated-flipped.scss",
    "content": "// Rotated & Flipped Icons\n// -------------------------\n\n.#{$fa-css-prefix}-rotate-90  { @include fa-icon-rotate(90deg, 1);  }\n.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); }\n.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); }\n\n.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); }\n.#{$fa-css-prefix}-flip-vertical   { @include fa-icon-flip(1, -1, 2); }\n\n// Hook for IE8-9\n// -------------------------\n\n:root .#{$fa-css-prefix}-rotate-90,\n:root .#{$fa-css-prefix}-rotate-180,\n:root .#{$fa-css-prefix}-rotate-270,\n:root .#{$fa-css-prefix}-flip-horizontal,\n:root .#{$fa-css-prefix}-flip-vertical {\n  filter: none;\n}\n"
  },
  {
    "path": "app/Resources/assets/scss/font-awesome/_stacked.scss",
    "content": "// Stacked Icons\n// -------------------------\n\n.#{$fa-css-prefix}-stack {\n  position: relative;\n  display: inline-block;\n  width: 2em;\n  height: 2em;\n  line-height: 2em;\n  vertical-align: middle;\n}\n.#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x {\n  position: absolute;\n  left: 0;\n  width: 100%;\n  text-align: center;\n}\n.#{$fa-css-prefix}-stack-1x { line-height: inherit; }\n.#{$fa-css-prefix}-stack-2x { font-size: 2em; }\n.#{$fa-css-prefix}-inverse { color: $fa-inverse; }\n"
  },
  {
    "path": "app/Resources/assets/scss/font-awesome/_variables.scss",
    "content": "// Variables\n// --------------------------\n\n$fa-font-path:        \"../fonts/font-awesome\" !default;\n$fa-font-size-base:   14px !default;\n//$fa-font-path:        \"//netdna.bootstrapcdn.com/font-awesome/4.3.0/fonts\" !default; // for referencing Bootstrap CDN font files directly\n$fa-css-prefix:       fa !default;\n$fa-version:          \"4.3.0\" !default;\n$fa-border-color:     #eee !default;\n$fa-inverse:          #fff !default;\n$fa-li-width:         (30em / 14) !default;\n\n$fa-var-adjust: \"\\f042\";\n$fa-var-adn: \"\\f170\";\n$fa-var-align-center: \"\\f037\";\n$fa-var-align-justify: \"\\f039\";\n$fa-var-align-left: \"\\f036\";\n$fa-var-align-right: \"\\f038\";\n$fa-var-ambulance: \"\\f0f9\";\n$fa-var-anchor: \"\\f13d\";\n$fa-var-android: \"\\f17b\";\n$fa-var-angellist: \"\\f209\";\n$fa-var-angle-double-down: \"\\f103\";\n$fa-var-angle-double-left: \"\\f100\";\n$fa-var-angle-double-right: \"\\f101\";\n$fa-var-angle-double-up: \"\\f102\";\n$fa-var-angle-down: \"\\f107\";\n$fa-var-angle-left: \"\\f104\";\n$fa-var-angle-right: \"\\f105\";\n$fa-var-angle-up: \"\\f106\";\n$fa-var-apple: \"\\f179\";\n$fa-var-archive: \"\\f187\";\n$fa-var-area-chart: \"\\f1fe\";\n$fa-var-arrow-circle-down: \"\\f0ab\";\n$fa-var-arrow-circle-left: \"\\f0a8\";\n$fa-var-arrow-circle-o-down: \"\\f01a\";\n$fa-var-arrow-circle-o-left: \"\\f190\";\n$fa-var-arrow-circle-o-right: \"\\f18e\";\n$fa-var-arrow-circle-o-up: \"\\f01b\";\n$fa-var-arrow-circle-right: \"\\f0a9\";\n$fa-var-arrow-circle-up: \"\\f0aa\";\n$fa-var-arrow-down: \"\\f063\";\n$fa-var-arrow-left: \"\\f060\";\n$fa-var-arrow-right: \"\\f061\";\n$fa-var-arrow-up: \"\\f062\";\n$fa-var-arrows: \"\\f047\";\n$fa-var-arrows-alt: \"\\f0b2\";\n$fa-var-arrows-h: \"\\f07e\";\n$fa-var-arrows-v: \"\\f07d\";\n$fa-var-asterisk: \"\\f069\";\n$fa-var-at: \"\\f1fa\";\n$fa-var-automobile: \"\\f1b9\";\n$fa-var-backward: \"\\f04a\";\n$fa-var-ban: \"\\f05e\";\n$fa-var-bank: \"\\f19c\";\n$fa-var-bar-chart: \"\\f080\";\n$fa-var-bar-chart-o: \"\\f080\";\n$fa-var-barcode: \"\\f02a\";\n$fa-var-bars: \"\\f0c9\";\n$fa-var-bed: \"\\f236\";\n$fa-var-beer: \"\\f0fc\";\n$fa-var-behance: \"\\f1b4\";\n$fa-var-behance-square: \"\\f1b5\";\n$fa-var-bell: \"\\f0f3\";\n$fa-var-bell-o: \"\\f0a2\";\n$fa-var-bell-slash: \"\\f1f6\";\n$fa-var-bell-slash-o: \"\\f1f7\";\n$fa-var-bicycle: \"\\f206\";\n$fa-var-binoculars: \"\\f1e5\";\n$fa-var-birthday-cake: \"\\f1fd\";\n$fa-var-bitbucket: \"\\f171\";\n$fa-var-bitbucket-square: \"\\f172\";\n$fa-var-bitcoin: \"\\f15a\";\n$fa-var-bold: \"\\f032\";\n$fa-var-bolt: \"\\f0e7\";\n$fa-var-bomb: \"\\f1e2\";\n$fa-var-book: \"\\f02d\";\n$fa-var-bookmark: \"\\f02e\";\n$fa-var-bookmark-o: \"\\f097\";\n$fa-var-briefcase: \"\\f0b1\";\n$fa-var-btc: \"\\f15a\";\n$fa-var-bug: \"\\f188\";\n$fa-var-building: \"\\f1ad\";\n$fa-var-building-o: \"\\f0f7\";\n$fa-var-bullhorn: \"\\f0a1\";\n$fa-var-bullseye: \"\\f140\";\n$fa-var-bus: \"\\f207\";\n$fa-var-buysellads: \"\\f20d\";\n$fa-var-cab: \"\\f1ba\";\n$fa-var-calculator: \"\\f1ec\";\n$fa-var-calendar: \"\\f073\";\n$fa-var-calendar-o: \"\\f133\";\n$fa-var-camera: \"\\f030\";\n$fa-var-camera-retro: \"\\f083\";\n$fa-var-car: \"\\f1b9\";\n$fa-var-caret-down: \"\\f0d7\";\n$fa-var-caret-left: \"\\f0d9\";\n$fa-var-caret-right: \"\\f0da\";\n$fa-var-caret-square-o-down: \"\\f150\";\n$fa-var-caret-square-o-left: \"\\f191\";\n$fa-var-caret-square-o-right: \"\\f152\";\n$fa-var-caret-square-o-up: \"\\f151\";\n$fa-var-caret-up: \"\\f0d8\";\n$fa-var-cart-arrow-down: \"\\f218\";\n$fa-var-cart-plus: \"\\f217\";\n$fa-var-cc: \"\\f20a\";\n$fa-var-cc-amex: \"\\f1f3\";\n$fa-var-cc-discover: \"\\f1f2\";\n$fa-var-cc-mastercard: \"\\f1f1\";\n$fa-var-cc-paypal: \"\\f1f4\";\n$fa-var-cc-stripe: \"\\f1f5\";\n$fa-var-cc-visa: \"\\f1f0\";\n$fa-var-certificate: \"\\f0a3\";\n$fa-var-chain: \"\\f0c1\";\n$fa-var-chain-broken: \"\\f127\";\n$fa-var-check: \"\\f00c\";\n$fa-var-check-circle: \"\\f058\";\n$fa-var-check-circle-o: \"\\f05d\";\n$fa-var-check-square: \"\\f14a\";\n$fa-var-check-square-o: \"\\f046\";\n$fa-var-chevron-circle-down: \"\\f13a\";\n$fa-var-chevron-circle-left: \"\\f137\";\n$fa-var-chevron-circle-right: \"\\f138\";\n$fa-var-chevron-circle-up: \"\\f139\";\n$fa-var-chevron-down: \"\\f078\";\n$fa-var-chevron-left: \"\\f053\";\n$fa-var-chevron-right: \"\\f054\";\n$fa-var-chevron-up: \"\\f077\";\n$fa-var-child: \"\\f1ae\";\n$fa-var-circle: \"\\f111\";\n$fa-var-circle-o: \"\\f10c\";\n$fa-var-circle-o-notch: \"\\f1ce\";\n$fa-var-circle-thin: \"\\f1db\";\n$fa-var-clipboard: \"\\f0ea\";\n$fa-var-clock-o: \"\\f017\";\n$fa-var-close: \"\\f00d\";\n$fa-var-cloud: \"\\f0c2\";\n$fa-var-cloud-download: \"\\f0ed\";\n$fa-var-cloud-upload: \"\\f0ee\";\n$fa-var-cny: \"\\f157\";\n$fa-var-code: \"\\f121\";\n$fa-var-code-fork: \"\\f126\";\n$fa-var-codepen: \"\\f1cb\";\n$fa-var-coffee: \"\\f0f4\";\n$fa-var-cog: \"\\f013\";\n$fa-var-cogs: \"\\f085\";\n$fa-var-columns: \"\\f0db\";\n$fa-var-comment: \"\\f075\";\n$fa-var-comment-o: \"\\f0e5\";\n$fa-var-comments: \"\\f086\";\n$fa-var-comments-o: \"\\f0e6\";\n$fa-var-compass: \"\\f14e\";\n$fa-var-compress: \"\\f066\";\n$fa-var-connectdevelop: \"\\f20e\";\n$fa-var-copy: \"\\f0c5\";\n$fa-var-copyright: \"\\f1f9\";\n$fa-var-credit-card: \"\\f09d\";\n$fa-var-crop: \"\\f125\";\n$fa-var-crosshairs: \"\\f05b\";\n$fa-var-css3: \"\\f13c\";\n$fa-var-cube: \"\\f1b2\";\n$fa-var-cubes: \"\\f1b3\";\n$fa-var-cut: \"\\f0c4\";\n$fa-var-cutlery: \"\\f0f5\";\n$fa-var-dashboard: \"\\f0e4\";\n$fa-var-dashcube: \"\\f210\";\n$fa-var-database: \"\\f1c0\";\n$fa-var-dedent: \"\\f03b\";\n$fa-var-delicious: \"\\f1a5\";\n$fa-var-desktop: \"\\f108\";\n$fa-var-deviantart: \"\\f1bd\";\n$fa-var-diamond: \"\\f219\";\n$fa-var-digg: \"\\f1a6\";\n$fa-var-dollar: \"\\f155\";\n$fa-var-dot-circle-o: \"\\f192\";\n$fa-var-download: \"\\f019\";\n$fa-var-dribbble: \"\\f17d\";\n$fa-var-dropbox: \"\\f16b\";\n$fa-var-drupal: \"\\f1a9\";\n$fa-var-edit: \"\\f044\";\n$fa-var-eject: \"\\f052\";\n$fa-var-ellipsis-h: \"\\f141\";\n$fa-var-ellipsis-v: \"\\f142\";\n$fa-var-empire: \"\\f1d1\";\n$fa-var-envelope: \"\\f0e0\";\n$fa-var-envelope-o: \"\\f003\";\n$fa-var-envelope-square: \"\\f199\";\n$fa-var-eraser: \"\\f12d\";\n$fa-var-eur: \"\\f153\";\n$fa-var-euro: \"\\f153\";\n$fa-var-exchange: \"\\f0ec\";\n$fa-var-exclamation: \"\\f12a\";\n$fa-var-exclamation-circle: \"\\f06a\";\n$fa-var-exclamation-triangle: \"\\f071\";\n$fa-var-expand: \"\\f065\";\n$fa-var-external-link: \"\\f08e\";\n$fa-var-external-link-square: \"\\f14c\";\n$fa-var-eye: \"\\f06e\";\n$fa-var-eye-slash: \"\\f070\";\n$fa-var-eyedropper: \"\\f1fb\";\n$fa-var-facebook: \"\\f09a\";\n$fa-var-facebook-f: \"\\f09a\";\n$fa-var-facebook-official: \"\\f230\";\n$fa-var-facebook-square: \"\\f082\";\n$fa-var-fast-backward: \"\\f049\";\n$fa-var-fast-forward: \"\\f050\";\n$fa-var-fax: \"\\f1ac\";\n$fa-var-female: \"\\f182\";\n$fa-var-fighter-jet: \"\\f0fb\";\n$fa-var-file: \"\\f15b\";\n$fa-var-file-archive-o: \"\\f1c6\";\n$fa-var-file-audio-o: \"\\f1c7\";\n$fa-var-file-code-o: \"\\f1c9\";\n$fa-var-file-excel-o: \"\\f1c3\";\n$fa-var-file-image-o: \"\\f1c5\";\n$fa-var-file-movie-o: \"\\f1c8\";\n$fa-var-file-o: \"\\f016\";\n$fa-var-file-pdf-o: \"\\f1c1\";\n$fa-var-file-photo-o: \"\\f1c5\";\n$fa-var-file-picture-o: \"\\f1c5\";\n$fa-var-file-powerpoint-o: \"\\f1c4\";\n$fa-var-file-sound-o: \"\\f1c7\";\n$fa-var-file-text: \"\\f15c\";\n$fa-var-file-text-o: \"\\f0f6\";\n$fa-var-file-video-o: \"\\f1c8\";\n$fa-var-file-word-o: \"\\f1c2\";\n$fa-var-file-zip-o: \"\\f1c6\";\n$fa-var-files-o: \"\\f0c5\";\n$fa-var-film: \"\\f008\";\n$fa-var-filter: \"\\f0b0\";\n$fa-var-fire: \"\\f06d\";\n$fa-var-fire-extinguisher: \"\\f134\";\n$fa-var-flag: \"\\f024\";\n$fa-var-flag-checkered: \"\\f11e\";\n$fa-var-flag-o: \"\\f11d\";\n$fa-var-flash: \"\\f0e7\";\n$fa-var-flask: \"\\f0c3\";\n$fa-var-flickr: \"\\f16e\";\n$fa-var-floppy-o: \"\\f0c7\";\n$fa-var-folder: \"\\f07b\";\n$fa-var-folder-o: \"\\f114\";\n$fa-var-folder-open: \"\\f07c\";\n$fa-var-folder-open-o: \"\\f115\";\n$fa-var-font: \"\\f031\";\n$fa-var-forumbee: \"\\f211\";\n$fa-var-forward: \"\\f04e\";\n$fa-var-foursquare: \"\\f180\";\n$fa-var-frown-o: \"\\f119\";\n$fa-var-futbol-o: \"\\f1e3\";\n$fa-var-gamepad: \"\\f11b\";\n$fa-var-gavel: \"\\f0e3\";\n$fa-var-gbp: \"\\f154\";\n$fa-var-ge: \"\\f1d1\";\n$fa-var-gear: \"\\f013\";\n$fa-var-gears: \"\\f085\";\n$fa-var-genderless: \"\\f1db\";\n$fa-var-gift: \"\\f06b\";\n$fa-var-git: \"\\f1d3\";\n$fa-var-git-square: \"\\f1d2\";\n$fa-var-github: \"\\f09b\";\n$fa-var-github-alt: \"\\f113\";\n$fa-var-github-square: \"\\f092\";\n$fa-var-gittip: \"\\f184\";\n$fa-var-glass: \"\\f000\";\n$fa-var-globe: \"\\f0ac\";\n$fa-var-google: \"\\f1a0\";\n$fa-var-google-plus: \"\\f0d5\";\n$fa-var-google-plus-square: \"\\f0d4\";\n$fa-var-google-wallet: \"\\f1ee\";\n$fa-var-graduation-cap: \"\\f19d\";\n$fa-var-gratipay: \"\\f184\";\n$fa-var-group: \"\\f0c0\";\n$fa-var-h-square: \"\\f0fd\";\n$fa-var-hacker-news: \"\\f1d4\";\n$fa-var-hand-o-down: \"\\f0a7\";\n$fa-var-hand-o-left: \"\\f0a5\";\n$fa-var-hand-o-right: \"\\f0a4\";\n$fa-var-hand-o-up: \"\\f0a6\";\n$fa-var-hdd-o: \"\\f0a0\";\n$fa-var-header: \"\\f1dc\";\n$fa-var-headphones: \"\\f025\";\n$fa-var-heart: \"\\f004\";\n$fa-var-heart-o: \"\\f08a\";\n$fa-var-heartbeat: \"\\f21e\";\n$fa-var-history: \"\\f1da\";\n$fa-var-home: \"\\f015\";\n$fa-var-hospital-o: \"\\f0f8\";\n$fa-var-hotel: \"\\f236\";\n$fa-var-html5: \"\\f13b\";\n$fa-var-ils: \"\\f20b\";\n$fa-var-image: \"\\f03e\";\n$fa-var-inbox: \"\\f01c\";\n$fa-var-indent: \"\\f03c\";\n$fa-var-info: \"\\f129\";\n$fa-var-info-circle: \"\\f05a\";\n$fa-var-inr: \"\\f156\";\n$fa-var-instagram: \"\\f16d\";\n$fa-var-institution: \"\\f19c\";\n$fa-var-ioxhost: \"\\f208\";\n$fa-var-italic: \"\\f033\";\n$fa-var-joomla: \"\\f1aa\";\n$fa-var-jpy: \"\\f157\";\n$fa-var-jsfiddle: \"\\f1cc\";\n$fa-var-key: \"\\f084\";\n$fa-var-keyboard-o: \"\\f11c\";\n$fa-var-krw: \"\\f159\";\n$fa-var-language: \"\\f1ab\";\n$fa-var-laptop: \"\\f109\";\n$fa-var-lastfm: \"\\f202\";\n$fa-var-lastfm-square: \"\\f203\";\n$fa-var-leaf: \"\\f06c\";\n$fa-var-leanpub: \"\\f212\";\n$fa-var-legal: \"\\f0e3\";\n$fa-var-lemon-o: \"\\f094\";\n$fa-var-level-down: \"\\f149\";\n$fa-var-level-up: \"\\f148\";\n$fa-var-life-bouy: \"\\f1cd\";\n$fa-var-life-buoy: \"\\f1cd\";\n$fa-var-life-ring: \"\\f1cd\";\n$fa-var-life-saver: \"\\f1cd\";\n$fa-var-lightbulb-o: \"\\f0eb\";\n$fa-var-line-chart: \"\\f201\";\n$fa-var-link: \"\\f0c1\";\n$fa-var-linkedin: \"\\f0e1\";\n$fa-var-linkedin-square: \"\\f08c\";\n$fa-var-linux: \"\\f17c\";\n$fa-var-list: \"\\f03a\";\n$fa-var-list-alt: \"\\f022\";\n$fa-var-list-ol: \"\\f0cb\";\n$fa-var-list-ul: \"\\f0ca\";\n$fa-var-location-arrow: \"\\f124\";\n$fa-var-lock: \"\\f023\";\n$fa-var-long-arrow-down: \"\\f175\";\n$fa-var-long-arrow-left: \"\\f177\";\n$fa-var-long-arrow-right: \"\\f178\";\n$fa-var-long-arrow-up: \"\\f176\";\n$fa-var-magic: \"\\f0d0\";\n$fa-var-magnet: \"\\f076\";\n$fa-var-mail-forward: \"\\f064\";\n$fa-var-mail-reply: \"\\f112\";\n$fa-var-mail-reply-all: \"\\f122\";\n$fa-var-male: \"\\f183\";\n$fa-var-map-marker: \"\\f041\";\n$fa-var-mars: \"\\f222\";\n$fa-var-mars-double: \"\\f227\";\n$fa-var-mars-stroke: \"\\f229\";\n$fa-var-mars-stroke-h: \"\\f22b\";\n$fa-var-mars-stroke-v: \"\\f22a\";\n$fa-var-maxcdn: \"\\f136\";\n$fa-var-meanpath: \"\\f20c\";\n$fa-var-medium: \"\\f23a\";\n$fa-var-medkit: \"\\f0fa\";\n$fa-var-meh-o: \"\\f11a\";\n$fa-var-mercury: \"\\f223\";\n$fa-var-microphone: \"\\f130\";\n$fa-var-microphone-slash: \"\\f131\";\n$fa-var-minus: \"\\f068\";\n$fa-var-minus-circle: \"\\f056\";\n$fa-var-minus-square: \"\\f146\";\n$fa-var-minus-square-o: \"\\f147\";\n$fa-var-mobile: \"\\f10b\";\n$fa-var-mobile-phone: \"\\f10b\";\n$fa-var-money: \"\\f0d6\";\n$fa-var-moon-o: \"\\f186\";\n$fa-var-mortar-board: \"\\f19d\";\n$fa-var-motorcycle: \"\\f21c\";\n$fa-var-music: \"\\f001\";\n$fa-var-navicon: \"\\f0c9\";\n$fa-var-neuter: \"\\f22c\";\n$fa-var-newspaper-o: \"\\f1ea\";\n$fa-var-openid: \"\\f19b\";\n$fa-var-outdent: \"\\f03b\";\n$fa-var-pagelines: \"\\f18c\";\n$fa-var-paint-brush: \"\\f1fc\";\n$fa-var-paper-plane: \"\\f1d8\";\n$fa-var-paper-plane-o: \"\\f1d9\";\n$fa-var-paperclip: \"\\f0c6\";\n$fa-var-paragraph: \"\\f1dd\";\n$fa-var-paste: \"\\f0ea\";\n$fa-var-pause: \"\\f04c\";\n$fa-var-paw: \"\\f1b0\";\n$fa-var-paypal: \"\\f1ed\";\n$fa-var-pencil: \"\\f040\";\n$fa-var-pencil-square: \"\\f14b\";\n$fa-var-pencil-square-o: \"\\f044\";\n$fa-var-phone: \"\\f095\";\n$fa-var-phone-square: \"\\f098\";\n$fa-var-photo: \"\\f03e\";\n$fa-var-picture-o: \"\\f03e\";\n$fa-var-pie-chart: \"\\f200\";\n$fa-var-pied-piper: \"\\f1a7\";\n$fa-var-pied-piper-alt: \"\\f1a8\";\n$fa-var-pinterest: \"\\f0d2\";\n$fa-var-pinterest-p: \"\\f231\";\n$fa-var-pinterest-square: \"\\f0d3\";\n$fa-var-plane: \"\\f072\";\n$fa-var-play: \"\\f04b\";\n$fa-var-play-circle: \"\\f144\";\n$fa-var-play-circle-o: \"\\f01d\";\n$fa-var-plug: \"\\f1e6\";\n$fa-var-plus: \"\\f067\";\n$fa-var-plus-circle: \"\\f055\";\n$fa-var-plus-square: \"\\f0fe\";\n$fa-var-plus-square-o: \"\\f196\";\n$fa-var-power-off: \"\\f011\";\n$fa-var-print: \"\\f02f\";\n$fa-var-puzzle-piece: \"\\f12e\";\n$fa-var-qq: \"\\f1d6\";\n$fa-var-qrcode: \"\\f029\";\n$fa-var-question: \"\\f128\";\n$fa-var-question-circle: \"\\f059\";\n$fa-var-quote-left: \"\\f10d\";\n$fa-var-quote-right: \"\\f10e\";\n$fa-var-ra: \"\\f1d0\";\n$fa-var-random: \"\\f074\";\n$fa-var-rebel: \"\\f1d0\";\n$fa-var-recycle: \"\\f1b8\";\n$fa-var-reddit: \"\\f1a1\";\n$fa-var-reddit-square: \"\\f1a2\";\n$fa-var-refresh: \"\\f021\";\n$fa-var-remove: \"\\f00d\";\n$fa-var-renren: \"\\f18b\";\n$fa-var-reorder: \"\\f0c9\";\n$fa-var-repeat: \"\\f01e\";\n$fa-var-reply: \"\\f112\";\n$fa-var-reply-all: \"\\f122\";\n$fa-var-retweet: \"\\f079\";\n$fa-var-rmb: \"\\f157\";\n$fa-var-road: \"\\f018\";\n$fa-var-rocket: \"\\f135\";\n$fa-var-rotate-left: \"\\f0e2\";\n$fa-var-rotate-right: \"\\f01e\";\n$fa-var-rouble: \"\\f158\";\n$fa-var-rss: \"\\f09e\";\n$fa-var-rss-square: \"\\f143\";\n$fa-var-rub: \"\\f158\";\n$fa-var-ruble: \"\\f158\";\n$fa-var-rupee: \"\\f156\";\n$fa-var-save: \"\\f0c7\";\n$fa-var-scissors: \"\\f0c4\";\n$fa-var-search: \"\\f002\";\n$fa-var-search-minus: \"\\f010\";\n$fa-var-search-plus: \"\\f00e\";\n$fa-var-sellsy: \"\\f213\";\n$fa-var-send: \"\\f1d8\";\n$fa-var-send-o: \"\\f1d9\";\n$fa-var-server: \"\\f233\";\n$fa-var-share: \"\\f064\";\n$fa-var-share-alt: \"\\f1e0\";\n$fa-var-share-alt-square: \"\\f1e1\";\n$fa-var-share-square: \"\\f14d\";\n$fa-var-share-square-o: \"\\f045\";\n$fa-var-shekel: \"\\f20b\";\n$fa-var-sheqel: \"\\f20b\";\n$fa-var-shield: \"\\f132\";\n$fa-var-ship: \"\\f21a\";\n$fa-var-shirtsinbulk: \"\\f214\";\n$fa-var-shopping-cart: \"\\f07a\";\n$fa-var-sign-in: \"\\f090\";\n$fa-var-sign-out: \"\\f08b\";\n$fa-var-signal: \"\\f012\";\n$fa-var-simplybuilt: \"\\f215\";\n$fa-var-sitemap: \"\\f0e8\";\n$fa-var-skyatlas: \"\\f216\";\n$fa-var-skype: \"\\f17e\";\n$fa-var-slack: \"\\f198\";\n$fa-var-sliders: \"\\f1de\";\n$fa-var-slideshare: \"\\f1e7\";\n$fa-var-smile-o: \"\\f118\";\n$fa-var-soccer-ball-o: \"\\f1e3\";\n$fa-var-sort: \"\\f0dc\";\n$fa-var-sort-alpha-asc: \"\\f15d\";\n$fa-var-sort-alpha-desc: \"\\f15e\";\n$fa-var-sort-amount-asc: \"\\f160\";\n$fa-var-sort-amount-desc: \"\\f161\";\n$fa-var-sort-asc: \"\\f0de\";\n$fa-var-sort-desc: \"\\f0dd\";\n$fa-var-sort-down: \"\\f0dd\";\n$fa-var-sort-numeric-asc: \"\\f162\";\n$fa-var-sort-numeric-desc: \"\\f163\";\n$fa-var-sort-up: \"\\f0de\";\n$fa-var-soundcloud: \"\\f1be\";\n$fa-var-space-shuttle: \"\\f197\";\n$fa-var-spinner: \"\\f110\";\n$fa-var-spoon: \"\\f1b1\";\n$fa-var-spotify: \"\\f1bc\";\n$fa-var-square: \"\\f0c8\";\n$fa-var-square-o: \"\\f096\";\n$fa-var-stack-exchange: \"\\f18d\";\n$fa-var-stack-overflow: \"\\f16c\";\n$fa-var-star: \"\\f005\";\n$fa-var-star-half: \"\\f089\";\n$fa-var-star-half-empty: \"\\f123\";\n$fa-var-star-half-full: \"\\f123\";\n$fa-var-star-half-o: \"\\f123\";\n$fa-var-star-o: \"\\f006\";\n$fa-var-steam: \"\\f1b6\";\n$fa-var-steam-square: \"\\f1b7\";\n$fa-var-step-backward: \"\\f048\";\n$fa-var-step-forward: \"\\f051\";\n$fa-var-stethoscope: \"\\f0f1\";\n$fa-var-stop: \"\\f04d\";\n$fa-var-street-view: \"\\f21d\";\n$fa-var-strikethrough: \"\\f0cc\";\n$fa-var-stumbleupon: \"\\f1a4\";\n$fa-var-stumbleupon-circle: \"\\f1a3\";\n$fa-var-subscript: \"\\f12c\";\n$fa-var-subway: \"\\f239\";\n$fa-var-suitcase: \"\\f0f2\";\n$fa-var-sun-o: \"\\f185\";\n$fa-var-superscript: \"\\f12b\";\n$fa-var-support: \"\\f1cd\";\n$fa-var-table: \"\\f0ce\";\n$fa-var-tablet: \"\\f10a\";\n$fa-var-tachometer: \"\\f0e4\";\n$fa-var-tag: \"\\f02b\";\n$fa-var-tags: \"\\f02c\";\n$fa-var-tasks: \"\\f0ae\";\n$fa-var-taxi: \"\\f1ba\";\n$fa-var-tencent-weibo: \"\\f1d5\";\n$fa-var-terminal: \"\\f120\";\n$fa-var-text-height: \"\\f034\";\n$fa-var-text-width: \"\\f035\";\n$fa-var-th: \"\\f00a\";\n$fa-var-th-large: \"\\f009\";\n$fa-var-th-list: \"\\f00b\";\n$fa-var-thumb-tack: \"\\f08d\";\n$fa-var-thumbs-down: \"\\f165\";\n$fa-var-thumbs-o-down: \"\\f088\";\n$fa-var-thumbs-o-up: \"\\f087\";\n$fa-var-thumbs-up: \"\\f164\";\n$fa-var-ticket: \"\\f145\";\n$fa-var-times: \"\\f00d\";\n$fa-var-times-circle: \"\\f057\";\n$fa-var-times-circle-o: \"\\f05c\";\n$fa-var-tint: \"\\f043\";\n$fa-var-toggle-down: \"\\f150\";\n$fa-var-toggle-left: \"\\f191\";\n$fa-var-toggle-off: \"\\f204\";\n$fa-var-toggle-on: \"\\f205\";\n$fa-var-toggle-right: \"\\f152\";\n$fa-var-toggle-up: \"\\f151\";\n$fa-var-train: \"\\f238\";\n$fa-var-transgender: \"\\f224\";\n$fa-var-transgender-alt: \"\\f225\";\n$fa-var-trash: \"\\f1f8\";\n$fa-var-trash-o: \"\\f014\";\n$fa-var-tree: \"\\f1bb\";\n$fa-var-trello: \"\\f181\";\n$fa-var-trophy: \"\\f091\";\n$fa-var-truck: \"\\f0d1\";\n$fa-var-try: \"\\f195\";\n$fa-var-tty: \"\\f1e4\";\n$fa-var-tumblr: \"\\f173\";\n$fa-var-tumblr-square: \"\\f174\";\n$fa-var-turkish-lira: \"\\f195\";\n$fa-var-twitch: \"\\f1e8\";\n$fa-var-twitter: \"\\f099\";\n$fa-var-twitter-square: \"\\f081\";\n$fa-var-umbrella: \"\\f0e9\";\n$fa-var-underline: \"\\f0cd\";\n$fa-var-undo: \"\\f0e2\";\n$fa-var-university: \"\\f19c\";\n$fa-var-unlink: \"\\f127\";\n$fa-var-unlock: \"\\f09c\";\n$fa-var-unlock-alt: \"\\f13e\";\n$fa-var-unsorted: \"\\f0dc\";\n$fa-var-upload: \"\\f093\";\n$fa-var-usd: \"\\f155\";\n$fa-var-user: \"\\f007\";\n$fa-var-user-md: \"\\f0f0\";\n$fa-var-user-plus: \"\\f234\";\n$fa-var-user-secret: \"\\f21b\";\n$fa-var-user-times: \"\\f235\";\n$fa-var-users: \"\\f0c0\";\n$fa-var-venus: \"\\f221\";\n$fa-var-venus-double: \"\\f226\";\n$fa-var-venus-mars: \"\\f228\";\n$fa-var-viacoin: \"\\f237\";\n$fa-var-video-camera: \"\\f03d\";\n$fa-var-vimeo-square: \"\\f194\";\n$fa-var-vine: \"\\f1ca\";\n$fa-var-vk: \"\\f189\";\n$fa-var-volume-down: \"\\f027\";\n$fa-var-volume-off: \"\\f026\";\n$fa-var-volume-up: \"\\f028\";\n$fa-var-warning: \"\\f071\";\n$fa-var-wechat: \"\\f1d7\";\n$fa-var-weibo: \"\\f18a\";\n$fa-var-weixin: \"\\f1d7\";\n$fa-var-whatsapp: \"\\f232\";\n$fa-var-wheelchair: \"\\f193\";\n$fa-var-wifi: \"\\f1eb\";\n$fa-var-windows: \"\\f17a\";\n$fa-var-won: \"\\f159\";\n$fa-var-wordpress: \"\\f19a\";\n$fa-var-wrench: \"\\f0ad\";\n$fa-var-xing: \"\\f168\";\n$fa-var-xing-square: \"\\f169\";\n$fa-var-yahoo: \"\\f19e\";\n$fa-var-yelp: \"\\f1e9\";\n$fa-var-yen: \"\\f157\";\n$fa-var-youtube: \"\\f167\";\n$fa-var-youtube-play: \"\\f16a\";\n$fa-var-youtube-square: \"\\f166\";\n\n"
  },
  {
    "path": "app/Resources/assets/scss/font-awesome.scss",
    "content": "/*!\n *  Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome\n *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\n */\n\n@import \"font-awesome/variables\";\n@import \"font-awesome/mixins\";\n@import \"font-awesome/path\";\n@import \"font-awesome/core\";\n@import \"font-awesome/larger\";\n@import \"font-awesome/fixed-width\";\n@import \"font-awesome/list\";\n@import \"font-awesome/bordered-pulled\";\n@import \"font-awesome/animated\";\n@import \"font-awesome/rotated-flipped\";\n@import \"font-awesome/stacked\";\n@import \"font-awesome/icons\";\n"
  },
  {
    "path": "app/Resources/assets/scss/main.scss",
    "content": "/*!\n *  Symfony Demo Application by @symfony\n *  License: MIT License\n */\n\n@import \"bootstrap/variables\";\n@import \"bootstrap/mixins\";\n@import \"bootstrap/flatly-theme/variables\";\n\n//\n// Typography\n// --------------------------------------------------\n\np, ul, ol {\n    font-size: $font-size-large;\n    margin-bottom: 1.5em;\n}\n\nli {\n    margin-bottom: .5em;\n}\n\n// Code\ncode {\n    background: $gray-lighter;\n    color: $brand-primary;\n}\n\n// Text labels\n.text-danger,\n.text-danger:hover {\n    color: $brand-danger;\n}\n\n//\n// Icons\n// --------------------------------------------------\n\ni {\n    margin-right: .25em;\n}\n\n//\n// Page elements\n// --------------------------------------------------\n\nbody {\n    display: -webkit-flex;\n    display: flex;\n    -webkit-flex-direction: column;\n    flex-direction: column;\n    min-height: 100vh;\n}\n\n// Header\nheader {\n    margin-bottom: 2em;\n\n    ul.nav li {\n        margin-bottom: 0;\n    }\n\n    .locales a {\n        padding-right: 10px;\n    }\n}\n\n// Search bar\n.search-bar {\n    padding: 0.8em 0;\n\n    form {\n        position: relative;\n    }\n\n    .search-preview {\n        position: absolute;\n        width: 100%;\n        top: 100%;\n    }\n}\n\n// Body contents\n.body-container {\n    -webkit-flex: 1;\n    flex: 1;\n\n    // needed to prevent pages with a very small height and browsers not supporting flex\n    min-height: 600px;\n\n    #main h1,\n    #main h2 {\n        margin-top: 0;\n    }\n}\n\n// Sidebar\n#sidebar {\n    .section {\n        margin-bottom: 2em;\n    }\n\n    p {\n        font-size: $font-size-base;\n\n        & + p {\n            margin: 1.5em 0 0;\n        }\n    }\n}\n\n// Footer\nfooter {\n    background: $gray-lighter;\n    margin-top: 2em;\n    padding-top: 2em;\n    padding-bottom: 2em;\n\n    p {\n        color: $gray-dark;\n        font-size: $font-size-small;\n        margin-bottom: .25em;\n    }\n\n    #footer-resources {\n        text-align: right;\n\n        i {\n            color: $gray-dark;\n            font-size: 1.5 * $font-size-large;\n            margin-left: .5em;\n        }\n    }\n}\n\n// Source Code Modal Window\n#sourceCodeModal {\n    h3 {\n        font-size: $font-size-large;\n        margin-top: 0;\n\n        small {\n            color: $gray-dark;\n            font-size: 80%;\n        }\n    }\n\n    pre {\n        margin-bottom: 2em;\n        padding: 0;\n    }\n}\n\n// Confirmation Modal Window\n#confirmationModal {\n    .modal-dialog {\n        width: 500px;\n    }\n\n    .modal-footer {\n        button {\n            min-width: 75px;\n        }\n    }\n}\n\n//\n// Forms\n// --------------------------------------------------\n\n// Form errors\n.form-group.has-error .form-control {\n    border-color: $brand-danger;\n}\n.form-group.has-error .control-label {\n    color: $brand-danger;\n}\n.form-group.has-error .help-block {\n    background-color: $brand-danger;\n    color: #FFF;\n    font-size: $font-size-base;\n    padding: 1em;\n\n    ul {\n        margin-bottom: 0;\n    }\n}\n\ntextarea {\n    max-width: 100%;\n}\n\n//\n// Page: 'Technical Requirements Checker'\n// --------------------------------------------------\nbody#requirements_checker {\n    header h1 {\n        margin-bottom: 0;\n        margin-top: 0;\n\n        span {\n            font-size: 120%;\n            opacity: .7;\n            padding: 0 5px;\n        }\n    }\n\n    .panel li {\n        margin-bottom: 1em;\n    }\n}\n\n//\n// Page: 'homepage'\n// --------------------------------------------------\nbody#homepage {\n    text-align: center;\n}\n\n//\n// Page: 'login'\n// --------------------------------------------------\nbody#login {\n    #login-users-help p {\n        font-size: $font-size-base;\n        line-height: $line-height-base;\n\n        &:last-child {\n            margin-bottom: 0;\n        }\n\n        .label {\n            margin-right: 5px;\n        }\n\n        .console {\n            display: block;\n            margin: 5px 0;\n            padding: 10px;\n        }\n    }\n}\n\n//\n// Page: 'blog_index'\n// --------------------------------------------------\nbody#blog_index {\n    h1 {\n        margin-bottom: .5em;\n    }\n\n    article.post {\n        margin-bottom: 3em;\n    }\n}\n\n//\n// Page: 'blog_post_show'\n// --------------------------------------------------\nbody#blog_post_show {\n    h3 {\n        margin-bottom: .75em;\n    }\n\n    #post-add-comment {\n        margin: 2em 0;\n\n        p {\n            margin-bottom: 0;\n\n            a.btn {\n                margin-right: .5em;\n            }\n        }\n    }\n\n    .post-comment {\n        margin-bottom: 2em;\n\n        h4 {\n            font-size: $font-size-small;\n            line-height: $line-height-base;\n            margin-top: 0;\n\n            strong {\n                display: block;\n            }\n        }\n    }\n}\n\n//\n// Page: 'comment_form_error'\n// --------------------------------------------------\nbody#comment_form_error {\n    h1.text-danger {\n        margin-bottom: 1em;\n    }\n}\n\n//\n// Page: 'admin_post_index'\n// --------------------------------------------------\nbody#admin_post_index {\n    .item-actions {\n        white-space: nowrap;\n\n        a.btn + a.btn {\n            margin-left: 4px;\n        }\n    }\n}\n\n//\n// Page: 'admin_post_show'\n// --------------------------------------------------\nbody#admin_post_show {\n}\n"
  },
  {
    "path": "app/Resources/translations/messages.ca.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"ca\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"note\">\n                <source>note</source>\n                <target>NOTA</target>\n            </trans-unit>\n            <trans-unit id=\"tip\">\n                <source>tip</source>\n                <target>TRUC</target>\n            </trans-unit>\n            <trans-unit id=\"not_available\">\n                <source>not_available</source>\n                <target>No disponible</target>\n            </trans-unit>\n            <trans-unit id=\"mit_license\">\n                <source>mit_license</source>\n                <target>Llicència MIT</target>\n            </trans-unit>\n            <trans-unit id=\"previous\">\n                <source>Previous</source>\n                <target>Anterior</target>\n            </trans-unit>\n            <trans-unit id=\"next\">\n                <source>Next</source>\n                <target>Següent</target>\n            </trans-unit>\n\n            <trans-unit id=\"title.homepage\">\n                <source>title.homepage</source>\n                <target><![CDATA[Benvingut/da a l'aplicació <strong>Symfony Demo</strong>]]></target>\n            </trans-unit>\n            <trans-unit id=\"title.source_code\">\n                <source>title.source_code</source>\n                <target>Codi font utilitzat per mostrar aquesta pàgina</target>\n            </trans-unit>\n            <trans-unit id=\"title.controller_code\">\n                <source>title.controller_code</source>\n                <target>Codi del controlador</target>\n            </trans-unit>\n            <trans-unit id=\"title.twig_template_code\">\n                <source>title.twig_template_code</source>\n                <target>Codi de la plantilla Twig</target>\n            </trans-unit>\n            <trans-unit id=\"title.login_help\">\n                <source>title.login_help</source>\n                <target>Prova qualsevol dels següents usuaris</target>\n            </trans-unit>\n            <trans-unit id=\"title.login\">\n                <source>title.login</source>\n                <target>Accés segur</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_list\">\n                <source>title.post_list</source>\n                <target>LListat d'articles</target>\n            </trans-unit>\n            <trans-unit id=\"title.edit_post\">\n                <source>title.edit_post</source>\n                <target>Editar article #%id%</target>\n            </trans-unit>\n            <trans-unit id=\"title.add_comment\">\n                <source>title.add_comment</source>\n                <target>Afegir un comentari</target>\n            </trans-unit>\n            <trans-unit id=\"title.comment_error\">\n                <source>title.comment_error</source>\n                <target>S'ha produït un error al publicar el teu comentari</target>\n            </trans-unit>\n\n            <trans-unit id=\"action.show\">\n                <source>action.show</source>\n                <target>Veure</target>\n            </trans-unit>\n            <trans-unit id=\"action.show_code\">\n                <source>action.show_code</source>\n                <target>Veure codi</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit\">\n                <source>action.edit</source>\n                <target>Editar</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_post\">\n                <source>action.edit_post</source>\n                <target>Editar article</target>\n            </trans-unit>\n            <trans-unit id=\"action.save\">\n                <source>action.save</source>\n                <target>Guardar canvis</target>\n            </trans-unit>\n            <trans-unit id=\"action.delete_post\">\n                <source>action.delete_post</source>\n                <target>Borrar article</target>\n            </trans-unit>\n            <trans-unit id=\"delete_post_modal.title\">\n                <source>delete_post_modal.title</source>\n                <target>Estas segur que vols eliminar aquest article?</target>\n            </trans-unit>\n            <trans-unit id=\"delete_post_modal.body\">\n                <source>delete_post_modal.body</source>\n                <target>Aquesta acció no es pot desfer.</target>\n            </trans-unit>\n            <trans-unit id=\"label.delete_post\">\n                <source>label.delete_post</source>\n                <target>Borrar article</target>\n            </trans-unit>\n            <trans-unit id=\"label.cancel\">\n                <source>label.cancel</source>\n                <target>Cancel·lar</target>\n            </trans-unit>\n            <trans-unit id=\"action.create_post\">\n                <source>action.create_post</source>\n                <target>Crear un nou article</target>\n            </trans-unit>\n            <trans-unit id=\"label.create_post\">\n                <source>label.create_post</source>\n                <target>Crear article</target>\n            </trans-unit>\n            <trans-unit id=\"action.back_to_list\">\n                <source>action.back_to_list</source>\n                <target>Tornar al llistat d'articles</target>\n            </trans-unit>\n            <trans-unit id=\"action.publish_comment\">\n                <source>action.publish_comment</source>\n                <target>Publicar comentari</target>\n            </trans-unit>\n            <trans-unit id=\"action.sign_in\">\n                <source>action.sign_in</source>\n                <target>Iniciar sessió</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_app\">\n                <source>action.browse_app</source>\n                <target>Accedir a l'aplicació</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_admin\">\n                <source>action.browse_admin</source>\n                <target>Accedir al backend</target>\n            </trans-unit>\n\n            <trans-unit id=\"label.title\">\n                <source>label.title</source>\n                <target>Títol</target>\n            </trans-unit>\n            <trans-unit id=\"label.author\">\n                <source>label.author</source>\n                <target>Autor</target>\n            </trans-unit>\n            <trans-unit id=\"label.author_email\">\n                <source>label.author_email</source>\n                <target>Email de l'autor</target>\n            </trans-unit>\n            <trans-unit id=\"label.username\">\n                <source>label.username</source>\n                <target>Nom d'usuari</target>\n            </trans-unit>\n            <trans-unit id=\"label.password\">\n                <source>label.password</source>\n                <target>Contrasenya</target>\n            </trans-unit>\n            <trans-unit id=\"label.role\">\n                <source>label.role</source>\n                <target>Rol</target>\n            </trans-unit>\n            <trans-unit id=\"label.content\">\n                <source>label.content</source>\n                <target>Contingut</target>\n            </trans-unit>\n            <trans-unit id=\"label.summary\">\n                <source>label.summary</source>\n                <target>Resum</target>\n            </trans-unit>\n            <trans-unit id=\"label.published_at\">\n                <source>label.published_at</source>\n                <target>Publicat el</target>\n            </trans-unit>\n            <trans-unit id=\"label.actions\">\n                <source>label.actions</source>\n                <target>Accions</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_new\">\n                <source>title.post_new</source>\n                <target>Nou article</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_contents\">\n                <source>action.edit_contents</source>\n                <target>Editar contingut</target>\n            </trans-unit>\n\n            <trans-unit id=\"menu.post_list\">\n                <source>menu.post_list</source>\n                <target>Llistat d'articles</target>\n            </trans-unit>\n            <trans-unit id=\"menu.back_to_blog\">\n                <source>menu.back_to_blog</source>\n                <target>Tornar al blog</target>\n            </trans-unit>\n            <trans-unit id=\"menu.homepage\">\n                <source>menu.homepage</source>\n                <target>Inici</target>\n            </trans-unit>\n            <trans-unit id=\"menu.admin\">\n                <source>menu.admin</source>\n                <target>Backend</target>\n            </trans-unit>\n            <trans-unit id=\"menu.logout\">\n                <source>menu.logout</source>\n                <target>Desconnectar-se</target>\n            </trans-unit>\n\n            <trans-unit id=\"post.to_publish_a_comment\">\n                <source>post.to_publish_a_comment</source>\n                <target>per a publicar un comentari</target>\n            </trans-unit>\n            <trans-unit id=\"post.num_comments\">\n                <source>post.num_comments</source>\n                <target>%count% comentari|%count% comentaris</target>\n            </trans-unit>\n            <trans-unit id=\"post.commented_on\">\n                <source>post.commented_on</source>\n                <target>comentat el</target>\n            </trans-unit>\n            <trans-unit id=\"post.no_comments\">\n                <source>post.no_comments</source>\n                <target>Sigues el primer en afegir un comentari a aquest article.</target>\n            </trans-unit>\n            <trans-unit id=\"post.no_posts_found\">\n                <source>post.no_posts_found</source>\n                <target>No s'ha trobat cap article.</target>\n            </trans-unit>\n\n            <trans-unit id=\"help.app_description\">\n                <source>help.app_description</source>\n                <target><![CDATA[Aquesta <strong>aplicació demo</strong> ha estat programada amb el framework Symfony per mostrar la forma recomenada de programar aplicacions Symfony.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.show_code\">\n                <source>help.show_code</source>\n                <target><![CDATA[Prem aquest botó per veure el codi font del <strong>controlador</strong> i de la <strong>plantilla</strong> utilitzats per crear aquesta pàgina.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_app\">\n                <source>help.browse_app</source>\n                <target><![CDATA[Accedir a la <strong>part pública</strong> de l'aplicació de demostració.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_admin\">\n                <source>help.browse_admin</source>\n                <target><![CDATA[Accedir a la <strong>part d'administració</strong> de l'aplicació de demostració.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.login_users\">\n                <source>help.login_users</source>\n                <target>Prova a accedir amb aquests usuaris</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_user\">\n                <source>help.role_user</source>\n                <target>usuari normal</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_admin\">\n                <source>help.role_admin</source>\n                <target>administrador</target>\n            </trans-unit>\n            <trans-unit id=\"help.reload_fixtures\">\n                <source>help.reload_fixtures</source>\n                <target>Si cap d'aquests usuaris funciona, carrega de nou les dades de l'aplicació executant la següent ordre a la teva consola:</target>\n            </trans-unit>\n            <trans-unit id=\"help.add_user\">\n                <source>help.add_user</source>\n                <target>Si vols crear nous usuaris, executa aquesta altra ordre:</target>\n            </trans-unit>\n            <trans-unit id=\"help.more_information\">\n                <source>help.more_information</source>\n                <target><![CDATA[Per a més informació, consulta la <a href=\"http://symfony.com/doc\">documentació de Symfony</a>.]]></target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/messages.cs.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"cs\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"note\">\n                <source>note</source>\n                <target>POZNÁMKA</target>\n            </trans-unit>\n            <trans-unit id=\"tip\">\n                <source>tip</source>\n                <target>TIP</target>\n            </trans-unit>\n            <trans-unit id=\"not_available\">\n                <source>not_available</source>\n                <target>není dostupný</target>\n            </trans-unit>\n            <trans-unit id=\"mit_license\">\n                <source>mit_license</source>\n                <target>MIT licence</target>\n            </trans-unit>\n\n            <trans-unit id=\"title.homepage\">\n                <source>title.homepage</source>\n                <target><![CDATA[Vítejte v <strong>Symfony Demo</strong> aplikaci]]></target>\n            </trans-unit>\n            <trans-unit id=\"title.source_code\">\n                <source>title.source_code</source>\n                <target>Zdrojové kódy použité při vykreslení této stránky</target>\n            </trans-unit>\n            <trans-unit id=\"title.controller_code\">\n                <source>title.controller_code</source>\n                <target>Kód kontroleru</target>\n            </trans-unit>\n            <trans-unit id=\"title.twig_template_code\">\n                <source>title.twig_template_code</source>\n                <target>Kód Twig šablony</target>\n            </trans-unit>\n            <trans-unit id=\"title.login\">\n                <source>title.login</source>\n                <target>Přihlášení</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_list\">\n                <source>title.post_list</source>\n                <target>Seznam příspěvků</target>\n            </trans-unit>\n            <trans-unit id=\"title.edit_post\">\n                <source>title.edit_post</source>\n                <target>Upravit příspěvek #%id%</target>\n            </trans-unit>\n            <trans-unit id=\"title.add_comment\">\n                <source>title.add_comment</source>\n                <target>Přidat komentář</target>\n            </trans-unit>\n            <trans-unit id=\"title.comment_error\">\n                <source>title.comment_error</source>\n                <target>Při vytváření komentáře došlo k chybě</target>\n            </trans-unit>\n\n            <trans-unit id=\"action.show\">\n                <source>action.show</source>\n                <target>Zobrazit</target>\n            </trans-unit>\n            <trans-unit id=\"action.show_code\">\n                <source>action.show_code</source>\n                <target>Zobrazit zdrojáky</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit\">\n                <source>action.edit</source>\n                <target>Upravit</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_post\">\n                <source>action.edit_post</source>\n                <target>Upravit příspěvek</target>\n            </trans-unit>\n            <trans-unit id=\"action.save\">\n                <source>action.save</source>\n                <target>Uložit změny</target>\n            </trans-unit>\n            <trans-unit id=\"action.delete_post\">\n                <source>action.delete_post</source>\n                <target>Odstranit příspěvek</target>\n            </trans-unit>\n            <trans-unit id=\"action.create_post\">\n                <source>action.create_post</source>\n                <target>Nový příspěvek</target>\n            </trans-unit>\n            <trans-unit id=\"label.create_post\">\n                <source>label.create_post</source>\n                <target>Vytvořit příspěvek</target>\n            </trans-unit>\n            <trans-unit id=\"action.back_to_list\">\n                <source>action.back_to_list</source>\n                <target>Zpět na seznam příspěvků</target>\n            </trans-unit>\n            <trans-unit id=\"action.publish_comment\">\n                <source>action.publish_comment</source>\n                <target>Zveřejnit komentář</target>\n            </trans-unit>\n            <trans-unit id=\"action.sign_in\">\n                <source>action.sign_in</source>\n                <target>Přihlásit</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_app\">\n                <source>action.browse_app</source>\n                <target>Přejít do aplikace</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_admin\">\n                <source>action.browse_admin</source>\n                <target>Přejít do administrace</target>\n            </trans-unit>\n\n            <trans-unit id=\"label.title\">\n                <source>label.title</source>\n                <target>Název</target>\n            </trans-unit>\n            <trans-unit id=\"label.author\">\n                <source>label.author</source>\n                <target>Autor</target>\n            </trans-unit>\n            <trans-unit id=\"label.author_email\">\n                <source>label.author_email</source>\n                <target>Email autora</target>\n            </trans-unit>\n            <trans-unit id=\"label.username\">\n                <source>label.username</source>\n                <target>Login</target>\n            </trans-unit>\n            <trans-unit id=\"label.password\">\n                <source>label.password</source>\n                <target>Heslo</target>\n            </trans-unit>\n            <trans-unit id=\"label.role\">\n                <source>label.role</source>\n                <target>Role</target>\n            </trans-unit>\n            <trans-unit id=\"label.content\">\n                <source>label.content</source>\n                <target>Obsah</target>\n            </trans-unit>\n            <trans-unit id=\"label.summary\">\n                <source>label.summary</source>\n                <target>Shrnutí</target>\n            </trans-unit>\n            <trans-unit id=\"label.published_at\">\n                <source>label.published_at</source>\n                <target>Publikován</target>\n            </trans-unit>\n            <trans-unit id=\"label.actions\">\n                <source>label.actions</source>\n                <target>Akce</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_new\">\n                <source>title.post_new</source>\n                <target>Nový příspěvek</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_contents\">\n                <source>action.edit_contents</source>\n                <target>Upravit příspěvek</target>\n            </trans-unit>\n\n            <trans-unit id=\"menu.post_list\">\n                <source>menu.post_list</source>\n                <target>Seznam příspěvků</target>\n            </trans-unit>\n            <trans-unit id=\"menu.back_to_blog\">\n                <source>menu.back_to_blog</source>\n                <target>Zpět na blog</target>\n            </trans-unit>\n            <trans-unit id=\"menu.homepage\">\n                <source>menu.homepage</source>\n                <target>Hlavní stránka</target>\n            </trans-unit>\n            <trans-unit id=\"menu.admin\">\n                <source>menu.admin</source>\n                <target>Administrace</target>\n            </trans-unit>\n            <trans-unit id=\"menu.logout\">\n                <source>menu.logout</source>\n                <target>Odhlásit</target>\n            </trans-unit>\n\n            <trans-unit id=\"post.to_publish_a_comment\">\n                <source>post.to_publish_a_comment</source>\n                <target>se pro přidání komentáře</target>\n            </trans-unit>\n            <trans-unit id=\"post.num_comments\">\n                <source>post.num_comments</source>\n                <target>%count% komentář|%count% komentáře|%count% komentářů</target>\n            </trans-unit>\n            <trans-unit id=\"post.commented_on\">\n                <source>post.commented_on</source>\n                <target>přidal komentář v</target>\n            </trans-unit>\n            <trans-unit id=\"post.no_comments\">\n                <source>post.no_comments</source>\n                <target>Buďte první, kdo napíše komentář k tomuto příspěvku.</target>\n            </trans-unit>\n            <trans-unit id=\"post.no_posts_found\">\n                <source>post.no_posts_found</source>\n                <target>Nebyly nalezeny žádné příspěvky.</target>\n            </trans-unit>\n\n            <trans-unit id=\"help.app_description\">\n                <source>help.app_description</source>\n                <target><![CDATA[Toto je <strong>demo aplikace</strong> vytvořena Symfony frameworkem s využitím doporučených způsobů vývoje Symfony aplikací.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.show_code\">\n                <source>help.show_code</source>\n                <target><![CDATA[Klikněte na tlačítko pro zobrazení zdrojových kódů <strong>kontroleru</strong> a <strong>šablony</strong> použitých při vykreslení této stránky.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_app\">\n                <source>help.browse_app</source>\n                <target><![CDATA[Prohlédněte si <strong>veřejnou část</strong> demo aplikace.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_admin\">\n                <source>help.browse_admin</source>\n                <target><![CDATA[Prohlédněte si <strong>administrační část</strong> demo aplikace.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.login_users\">\n                <source>help.login_users</source>\n                <target>Zkuste následující uživatele</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_user\">\n                <source>help.role_user</source>\n                <target>běžný uživatel</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_admin\">\n                <source>help.role_admin</source>\n                <target>administrátor</target>\n            </trans-unit>\n            <trans-unit id=\"help.reload_fixtures\">\n                <source>help.reload_fixtures</source>\n                <target>Pokud přihlášení s těmito uživateli nefunguje, spusťte z terminálu příkaz pro načtení výchozích dat:</target>\n            </trans-unit>\n            <trans-unit id=\"help.add_user\">\n                <source>help.add_user</source>\n                <target>Pokud chcete vytvořit nového uživatele, spusťte příkaz:</target>\n            </trans-unit>\n            <trans-unit id=\"help.more_information\">\n                <source>help.more_information</source>\n                <target><![CDATA[Pro více informací přejděte do <a href=\"http://symfony.com/doc\">Symfony dokumentace</a>.]]></target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/messages.de.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"de\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"note\">\n                <source>note</source>\n                <target>HINWEIS</target>\n            </trans-unit>\n            <trans-unit id=\"tip\">\n                <source>tip</source>\n                <target>TIPP</target>\n            </trans-unit>\n            <trans-unit id=\"not_available\">\n                <source>not_available</source>\n                <target>Nicht verfügbar</target>\n            </trans-unit>\n            <trans-unit id=\"mit_license\">\n                <source>mit_license</source>\n                <target>MIT-Lizenz</target>\n            </trans-unit>\n            <trans-unit id=\"previous\">\n                <source>Previous</source>\n                <target>Vorherige</target>\n            </trans-unit>\n            <trans-unit id=\"next\">\n                <source>Next</source>\n                <target>Nächste</target>\n            </trans-unit>\n\n            <trans-unit id=\"title.homepage\">\n                <source>title.homepage</source>\n                <target><![CDATA[Willkommen zur <strong>Symfony Demo</strong> Anwendung]]></target>\n            </trans-unit>\n            <trans-unit id=\"title.source_code\">\n                <source>title.source_code</source>\n                <target>Benutzter Source Code um diese Seite zu rendern.</target>\n            </trans-unit>\n            <trans-unit id=\"title.controller_code\">\n                <source>title.controller_code</source>\n                <target>Controller Code</target>\n            </trans-unit>\n            <trans-unit id=\"title.twig_template_code\">\n                <source>title.twig_template_code</source>\n                <target>Twig Template Code</target>\n            </trans-unit>\n            <trans-unit id=\"title.login\">\n                <source>title.login</source>\n                <target>Sicherer Login</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_list\">\n                <source>title.post_list</source>\n                <target>Beitragsliste</target>\n            </trans-unit>\n            <trans-unit id=\"title.edit_post\">\n                <source>title.edit_post</source>\n                <target>Bearbeite Beitrag #%id%</target>\n            </trans-unit>\n            <trans-unit id=\"title.add_comment\">\n                <source>title.add_comment</source>\n                <target>Kommentar hinzufügen</target>\n            </trans-unit>\n            <trans-unit id=\"title.comment_error\">\n                <source>title.comment_error</source>\n                <target>Beim Veröffentlichen deines Kommentares ist ein Fehler aufgetreten</target>\n            </trans-unit>\n\n            <trans-unit id=\"action.show\">\n                <source>action.show</source>\n                <target>Anzeigen</target>\n            </trans-unit>\n            <trans-unit id=\"action.show_code\">\n                <source>action.show_code</source>\n                <target>Code anzeigen</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit\">\n                <source>action.edit</source>\n                <target>Bearbeiten</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_post\">\n                <source>action.edit_post</source>\n                <target>Beitrag bearbeiten</target>\n            </trans-unit>\n            <trans-unit id=\"action.save\">\n                <source>action.save</source>\n                <target>Änderungen speichern</target>\n            </trans-unit>\n            <trans-unit id=\"action.delete_post\">\n                <source>action.delete_post</source>\n                <target>Beitrag löschen</target>\n            </trans-unit>\n            <trans-unit id=\"delete_post_modal.title\">\n                <source>delete_post_modal.title</source>\n                <target>Bist du sicher, dass du diesen Beitrag löschen möchtest?</target>\n            </trans-unit>\n            <trans-unit id=\"delete_post_modal.body\">\n                <source>delete_post_modal.body</source>\n                <target>Diese Aktion kann nicht rückgängig gemacht werden.</target>\n            </trans-unit>\n            <trans-unit id=\"label.delete_post\">\n                <source>label.delete_post</source>\n                <target>Beitrag löschen</target>\n            </trans-unit>\n            <trans-unit id=\"label.cancel\">\n                <source>label.cancel</source>\n                <target>Abbrechen</target>\n            </trans-unit>\n            <trans-unit id=\"action.create_post\">\n                <source>action.create_post</source>\n                <target>Neuen Beitrag erstellen</target>\n            </trans-unit>\n            <trans-unit id=\"label.create_post\">\n                <source>label.create_post</source>\n                <target>Beitrag erstellen</target>\n            </trans-unit>\n            <trans-unit id=\"label.save_and_create_new\">\n                <source>label.save_and_create_new</source>\n                <target>Speichern und neuen Beitrag erstellen</target>\n            </trans-unit>\n            <trans-unit id=\"action.back_to_list\">\n                <source>action.back_to_list</source>\n                <target>Zurück zur Beitragsliste</target>\n            </trans-unit>\n            <trans-unit id=\"action.publish_comment\">\n                <source>action.publish_comment</source>\n                <target>Kommentar veröffentlichen</target>\n            </trans-unit>\n            <trans-unit id=\"action.sign_in\">\n                <source>action.sign_in</source>\n                <target>Login</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_app\">\n                <source>action.browse_app</source>\n                <target>Zum Frontend</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_admin\">\n                <source>action.browse_admin</source>\n                <target>Zum Backend</target>\n            </trans-unit>\n\n            <trans-unit id=\"label.title\">\n                <source>label.title</source>\n                <target>Titel</target>\n            </trans-unit>\n            <trans-unit id=\"label.author\">\n                <source>label.author</source>\n                <target>Autor</target>\n            </trans-unit>\n            <trans-unit id=\"label.author_email\">\n                <source>label.author_email</source>\n                <target>Autor E-Mail</target>\n            </trans-unit>\n            <trans-unit id=\"label.username\">\n                <source>label.username</source>\n                <target>Benutzername</target>\n            </trans-unit>\n            <trans-unit id=\"label.password\">\n                <source>label.password</source>\n                <target>Passwort</target>\n            </trans-unit>\n            <trans-unit id=\"label.role\">\n                <source>label.role</source>\n                <target>Rolle</target>\n            </trans-unit>\n            <trans-unit id=\"label.content\">\n                <source>label.content</source>\n                <target>Inhalt</target>\n            </trans-unit>\n            <trans-unit id=\"label.summary\">\n                <source>label.summary</source>\n                <target>Zusammenfassung</target>\n            </trans-unit>\n            <trans-unit id=\"label.published_at\">\n                <source>label.published_at</source>\n                <target>Veröffentlicht am</target>\n            </trans-unit>\n            <trans-unit id=\"label.actions\">\n                <source>label.actions</source>\n                <target>Aktionen</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_new\">\n                <source>title.post_new</source>\n                <target>Beitrag erstellen</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_contents\">\n                <source>action.edit_contents</source>\n                <target>Inhalt bearbeiten</target>\n            </trans-unit>\n\n            <trans-unit id=\"menu.post_list\">\n                <source>menu.post_list</source>\n                <target>Beitragsliste</target>\n            </trans-unit>\n            <trans-unit id=\"menu.back_to_blog\">\n                <source>menu.back_to_blog</source>\n                <target>Zurück zum Blog</target>\n            </trans-unit>\n            <trans-unit id=\"menu.homepage\">\n                <source>menu.homepage</source>\n                <target>Homepage</target>\n            </trans-unit>\n            <trans-unit id=\"menu.admin\">\n                <source>menu.admin</source>\n                <target>Backend</target>\n            </trans-unit>\n            <trans-unit id=\"menu.logout\">\n                <source>menu.logout</source>\n                <target>Logout</target>\n            </trans-unit>\n\n            <trans-unit id=\"post.to_publish_a_comment\">\n                <source>post.to_publish_a_comment</source>\n                <target>um einen Kommentar zu veröffentlichen</target>\n            </trans-unit>\n            <trans-unit id=\"post.num_comments\">\n                <source>post.num_comments</source>\n                <target>%count% Kommentar|%count% Kommentare</target>\n            </trans-unit>\n            <trans-unit id=\"post.commented_on\">\n                <source>post.commented_on</source>\n                <target>kommentierte</target>\n            </trans-unit>\n            <trans-unit id=\"post.no_comments\">\n                <source>post.no_comments</source>\n                <target>Hinterlasse als Erste/r einen Kommentar zu diesem Beitrag.</target>\n            </trans-unit>\n            <trans-unit id=\"post.no_posts_found\">\n                <source>post.no_posts_found</source>\n                <target>Keine Beiträge gefunden.</target>\n            </trans-unit>\n            <trans-unit id=\"post.created_successfully\">\n                <source>post.created_successfully</source>\n                <target>Der Beitrag wurde erfolgreich erstellt!</target>\n            </trans-unit>\n            <trans-unit id=\"post.updated_successfully\">\n                <source>post.updated_successfully</source>\n                <target>Der Beitrag wurde erfolgreich bearbeitet!</target>\n            </trans-unit>\n            <trans-unit id=\"post.deleted_successfully\">\n                <source>post.deleted_successfully</source>\n                <target>Der Beitrag wurde erfolgreich gelöscht!</target>\n            </trans-unit>\n\n            <trans-unit id=\"help.app_description\">\n                <source>help.app_description</source>\n                <target><![CDATA[Das ist eine <strong>Demo Applikation</strong>, die mit dem Symfony Framework gebaut wurde um eine Empfehlung für die Entwicklung auszusprechen.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.show_code\">\n                <source>help.show_code</source>\n                <target><![CDATA[Klicke auf diesen Button um den Source Code von <strong>Controller</strong> und <strong>Template</strong> zu sehen der für das Rendern dieser Seite benutzt wird.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_app\">\n                <source>help.browse_app</source>\n                <target><![CDATA[Gehe zum <strong>Frontend</strong> der Demo Applikation.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_admin\">\n                <source>help.browse_admin</source>\n                <target><![CDATA[Gehe zum <strong>Backend</strong> der Demo Applikation.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.login_users\">\n                <source>help.login_users</source>\n                <target>Versuche einen der folgenden Benutzer</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_user\">\n                <source>help.role_user</source>\n                <target>Normaler Benutzer</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_admin\">\n                <source>help.role_admin</source>\n                <target>Administrator</target>\n            </trans-unit>\n            <trans-unit id=\"help.reload_fixtures\">\n                <source>help.reload_fixtures</source>\n                <target>Wenn keiner der Benutzer funktioniert versuche bitte die Fixtures mit folgendem Befehl auf der Kommandozeile neu einzuspielen:</target>\n            </trans-unit>\n            <trans-unit id=\"help.add_user\">\n                <source>help.add_user</source>\n                <target>Wenn du einen neuen Benutzer erstellen willst benutzte diesen Befehl:</target>\n            </trans-unit>\n            <trans-unit id=\"help.more_information\">\n                <source>help.more_information</source>\n                <target><![CDATA[Für mehr Informationen schaue in die offizielle <a href=\"http://symfony.com/doc\">Symfony Dokumentation</a>.]]></target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/messages.en.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"en\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"note\">\n                <source>note</source>\n                <target>NOTE</target>\n            </trans-unit>\n            <trans-unit id=\"tip\">\n                <source>tip</source>\n                <target>TIP</target>\n            </trans-unit>\n            <trans-unit id=\"not_available\">\n                <source>not_available</source>\n                <target>Not available</target>\n            </trans-unit>\n            <trans-unit id=\"mit_license\">\n                <source>mit_license</source>\n                <target>MIT License</target>\n            </trans-unit>\n            <trans-unit id=\"previous\">\n                <source>Previous</source>\n                <target>Previous</target>\n            </trans-unit>\n            <trans-unit id=\"next\">\n                <source>Next</source>\n                <target>Next</target>\n            </trans-unit>\n\n            <trans-unit id=\"title.homepage\">\n                <source>title.homepage</source>\n                <target><![CDATA[Welcome to the <strong>Symfony Demo</strong> application]]></target>\n            </trans-unit>\n            <trans-unit id=\"title.source_code\">\n                <source>title.source_code</source>\n                <target>Source code used to render this page</target>\n            </trans-unit>\n            <trans-unit id=\"title.controller_code\">\n                <source>title.controller_code</source>\n                <target>Controller code</target>\n            </trans-unit>\n            <trans-unit id=\"title.twig_template_code\">\n                <source>title.twig_template_code</source>\n                <target>Twig template code</target>\n            </trans-unit>\n            <trans-unit id=\"title.login\">\n                <source>title.login</source>\n                <target>Secure Sign in</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_list\">\n                <source>title.post_list</source>\n                <target>Post List</target>\n            </trans-unit>\n            <trans-unit id=\"title.edit_post\">\n                <source>title.edit_post</source>\n                <target>Edit post #%id%</target>\n            </trans-unit>\n            <trans-unit id=\"title.add_comment\">\n                <source>title.add_comment</source>\n                <target>Add a comment</target>\n            </trans-unit>\n            <trans-unit id=\"title.comment_error\">\n                <source>title.comment_error</source>\n                <target>There was an error publishing your comment</target>\n            </trans-unit>\n\n            <trans-unit id=\"action.show\">\n                <source>action.show</source>\n                <target>Show</target>\n            </trans-unit>\n            <trans-unit id=\"action.show_code\">\n                <source>action.show_code</source>\n                <target>Show code</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit\">\n                <source>action.edit</source>\n                <target>Edit</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_post\">\n                <source>action.edit_post</source>\n                <target>Edit post</target>\n            </trans-unit>\n            <trans-unit id=\"action.save\">\n                <source>action.save</source>\n                <target>Save changes</target>\n            </trans-unit>\n            <trans-unit id=\"action.delete_post\">\n                <source>action.delete_post</source>\n                <target>Delete post</target>\n            </trans-unit>\n            <trans-unit id=\"delete_post_modal.title\">\n                <source>delete_post_modal.title</source>\n                <target>Are you sure you want to delete this post?</target>\n            </trans-unit>\n            <trans-unit id=\"delete_post_modal.body\">\n                <source>delete_post_modal.body</source>\n                <target>This action cannot be undone.</target>\n            </trans-unit>\n            <trans-unit id=\"label.delete_post\">\n                <source>label.delete_post</source>\n                <target>Delete post</target>\n            </trans-unit>\n            <trans-unit id=\"label.cancel\">\n                <source>label.cancel</source>\n                <target>Cancel</target>\n            </trans-unit>\n            <trans-unit id=\"action.create_post\">\n                <source>action.create_post</source>\n                <target>Create a new post</target>\n            </trans-unit>\n            <trans-unit id=\"label.create_post\">\n                <source>label.create_post</source>\n                <target>Create post</target>\n            </trans-unit>\n            <trans-unit id=\"label.save_and_create_new\">\n                <source>label.save_and_create_new</source>\n                <target>Save and create new</target>\n            </trans-unit>\n            <trans-unit id=\"action.back_to_list\">\n                <source>action.back_to_list</source>\n                <target>Back to the post list</target>\n            </trans-unit>\n            <trans-unit id=\"action.publish_comment\">\n                <source>action.publish_comment</source>\n                <target>Publish comment</target>\n            </trans-unit>\n            <trans-unit id=\"action.sign_in\">\n                <source>action.sign_in</source>\n                <target>Sign in</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_app\">\n                <source>action.browse_app</source>\n                <target>Browse application</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_admin\">\n                <source>action.browse_admin</source>\n                <target>Browse backend</target>\n            </trans-unit>\n\n            <trans-unit id=\"label.title\">\n                <source>label.title</source>\n                <target>Title</target>\n            </trans-unit>\n            <trans-unit id=\"label.author\">\n                <source>label.author</source>\n                <target>Author</target>\n            </trans-unit>\n            <trans-unit id=\"label.author_email\">\n                <source>label.author_email</source>\n                <target>Author email</target>\n            </trans-unit>\n            <trans-unit id=\"label.username\">\n                <source>label.username</source>\n                <target>Username</target>\n            </trans-unit>\n            <trans-unit id=\"label.password\">\n                <source>label.password</source>\n                <target>Password</target>\n            </trans-unit>\n            <trans-unit id=\"label.role\">\n                <source>label.role</source>\n                <target>Role</target>\n            </trans-unit>\n            <trans-unit id=\"label.content\">\n                <source>label.content</source>\n                <target>Content</target>\n            </trans-unit>\n            <trans-unit id=\"label.summary\">\n                <source>label.summary</source>\n                <target>Summary</target>\n            </trans-unit>\n            <trans-unit id=\"label.published_at\">\n                <source>label.published_at</source>\n                <target>Published at</target>\n            </trans-unit>\n            <trans-unit id=\"label.actions\">\n                <source>label.actions</source>\n                <target>Actions</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_new\">\n                <source>title.post_new</source>\n                <target>Post creation</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_contents\">\n                <source>action.edit_contents</source>\n                <target>Edit contents</target>\n            </trans-unit>\n\n            <trans-unit id=\"menu.post_list\">\n                <source>menu.post_list</source>\n                <target>Post list</target>\n            </trans-unit>\n            <trans-unit id=\"menu.back_to_blog\">\n                <source>menu.back_to_blog</source>\n                <target>Back to blog</target>\n            </trans-unit>\n            <trans-unit id=\"menu.homepage\">\n                <source>menu.homepage</source>\n                <target>Homepage</target>\n            </trans-unit>\n            <trans-unit id=\"menu.admin\">\n                <source>menu.admin</source>\n                <target>Backend</target>\n            </trans-unit>\n            <trans-unit id=\"menu.logout\">\n                <source>menu.logout</source>\n                <target>Logout</target>\n            </trans-unit>\n\n            <trans-unit id=\"post.to_publish_a_comment\">\n                <source>post.to_publish_a_comment</source>\n                <target>to publish a comment</target>\n            </trans-unit>\n            <trans-unit id=\"post.num_comments\">\n                <source>post.num_comments</source>\n                <target>%count% comment|%count% comments</target>\n            </trans-unit>\n            <trans-unit id=\"post.commented_on\">\n                <source>post.commented_on</source>\n                <target>commented on</target>\n            </trans-unit>\n            <trans-unit id=\"post.no_comments\">\n                <source>post.no_comments</source>\n                <target>Be the first to comment on this post.</target>\n            </trans-unit>\n            <trans-unit id=\"post.no_posts_found\">\n                <source>post.no_posts_found</source>\n                <target>No posts found.</target>\n            </trans-unit>\n            <trans-unit id=\"post.created_successfully\">\n                <source>post.created_successfully</source>\n                <target>Post created successfully!</target>\n            </trans-unit>\n            <trans-unit id=\"post.updated_successfully\">\n                <source>post.updated_successfully</source>\n                <target>Post updated successfully!</target>\n            </trans-unit>\n            <trans-unit id=\"post.deleted_successfully\">\n                <source>post.deleted_successfully</source>\n                <target>Post deleted successfully!</target>\n            </trans-unit>\n\n            <trans-unit id=\"help.app_description\">\n                <source>help.app_description</source>\n                <target><![CDATA[This is a <strong>demo application</strong> built in the Symfony Framework to illustrate the recommended way of developing Symfony applications.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.show_code\">\n                <source>help.show_code</source>\n                <target><![CDATA[Click on this button to show the source code of the <strong>Controller</strong> and <strong>template</strong> used to render this page.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_app\">\n                <source>help.browse_app</source>\n                <target><![CDATA[Browse the <strong>public section</strong> of the demo application.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_admin\">\n                <source>help.browse_admin</source>\n                <target><![CDATA[Browse the <strong>admin backend</strong> of the demo application.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.login_users\">\n                <source>help.login_users</source>\n                <target>Try either of the following users</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_user\">\n                <source>help.role_user</source>\n                <target>regular user</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_admin\">\n                <source>help.role_admin</source>\n                <target>administrator</target>\n            </trans-unit>\n            <trans-unit id=\"help.reload_fixtures\">\n                <source>help.reload_fixtures</source>\n                <target>If these users don't work, reload application fixtures by running this command from the terminal:</target>\n            </trans-unit>\n            <trans-unit id=\"help.add_user\">\n                <source>help.add_user</source>\n                <target>If you want to create new users, run this other command:</target>\n            </trans-unit>\n            <trans-unit id=\"help.more_information\">\n                <source>help.more_information</source>\n                <target><![CDATA[For more information, check out the <a href=\"http://symfony.com/doc\">Symfony doc</a>.]]></target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/messages.es.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"es\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"note\">\n                <source>note</source>\n                <target>NOTA</target>\n            </trans-unit>\n            <trans-unit id=\"tip\">\n                <source>tip</source>\n                <target>TRUCO</target>\n            </trans-unit>\n            <trans-unit id=\"not_available\">\n                <source>not_available</source>\n                <target>No disponible</target>\n            </trans-unit>\n            <trans-unit id=\"mit_license\">\n                <source>mit_license</source>\n                <target>Licencia MIT</target>\n            </trans-unit>\n            <trans-unit id=\"previous\">\n                <source>Previous</source>\n                <target>Anterior</target>\n            </trans-unit>\n            <trans-unit id=\"next\">\n                <source>Next</source>\n                <target>Siguiente</target>\n            </trans-unit>\n\n            <trans-unit id=\"title.homepage\">\n                <source>title.homepage</source>\n                <target><![CDATA[Bienvenido/a a la aplicación <strong>Symfony Demo</strong>]]></target>\n            </trans-unit>\n            <trans-unit id=\"title.source_code\">\n                <source>title.source_code</source>\n                <target>Código fuente utilizado para mostrar esta página</target>\n            </trans-unit>\n            <trans-unit id=\"title.controller_code\">\n                <source>title.controller_code</source>\n                <target>Código del controlador</target>\n            </trans-unit>\n            <trans-unit id=\"title.twig_template_code\">\n                <source>title.twig_template_code</source>\n                <target>Código de la plantilla Twig</target>\n            </trans-unit>\n            <trans-unit id=\"title.login_help\">\n                <source>title.login_help</source>\n                <target>Prueba cualquiera de los siguientes usuarios</target>\n            </trans-unit>\n            <trans-unit id=\"title.login\">\n                <source>title.login</source>\n                <target>Acceso seguro</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_list\">\n                <source>title.post_list</source>\n                <target>Listado de artículos</target>\n            </trans-unit>\n            <trans-unit id=\"title.edit_post\">\n                <source>title.edit_post</source>\n                <target>Editar artículo #%id%</target>\n            </trans-unit>\n            <trans-unit id=\"title.add_comment\">\n                <source>title.add_comment</source>\n                <target>Añadir un comentario</target>\n            </trans-unit>\n            <trans-unit id=\"title.comment_error\">\n                <source>title.comment_error</source>\n                <target>Se ha producido un error al publicar tu comentario</target>\n            </trans-unit>\n\n            <trans-unit id=\"action.show\">\n                <source>action.show</source>\n                <target>Ver</target>\n            </trans-unit>\n            <trans-unit id=\"action.show_code\">\n                <source>action.show_code</source>\n                <target>Ver código</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit\">\n                <source>action.edit</source>\n                <target>Editar</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_post\">\n                <source>action.edit_post</source>\n                <target>Editar artículo</target>\n            </trans-unit>\n            <trans-unit id=\"action.save\">\n                <source>action.save</source>\n                <target>Guardar cambios</target>\n            </trans-unit>\n            <trans-unit id=\"action.delete_post\">\n                <source>action.delete_post</source>\n                <target>Borrar artículo</target>\n            </trans-unit>\n            <trans-unit id=\"delete_post_modal.title\">\n                <source>delete_post_modal.title</source>\n                <target>¿Está seguro que quiere eliminar este artículo?</target>\n            </trans-unit>\n            <trans-unit id=\"delete_post_modal.body\">\n                <source>delete_post_modal.body</source>\n                <target>Esta acción no se puede deshacer.</target>\n            </trans-unit>\n            <trans-unit id=\"label.delete_post\">\n                <source>label.delete_post</source>\n                <target>Borrar artículo</target>\n            </trans-unit>\n            <trans-unit id=\"label.cancel\">\n                <source>label.cancel</source>\n                <target>Cancelar</target>\n            </trans-unit>\n            <trans-unit id=\"action.create_post\">\n                <source>action.create_post</source>\n                <target>Crear un nuevo artículo</target>\n            </trans-unit>\n            <trans-unit id=\"label.create_post\">\n                <source>label.create_post</source>\n                <target>Crear artículo</target>\n            </trans-unit>\n            <trans-unit id=\"label.save_and_create_new\">\n                <source>label.save_and_create_new</source>\n                <target>Guardar artículo y crear otro</target>\n            </trans-unit>\n            <trans-unit id=\"action.back_to_list\">\n                <source>action.back_to_list</source>\n                <target>Volver al listado de artículos</target>\n            </trans-unit>\n            <trans-unit id=\"action.publish_comment\">\n                <source>action.publish_comment</source>\n                <target>Publicar comentario</target>\n            </trans-unit>\n            <trans-unit id=\"action.sign_in\">\n                <source>action.sign_in</source>\n                <target>Iniciar sesión</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_app\">\n                <source>action.browse_app</source>\n                <target>Acceder a la aplicación</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_admin\">\n                <source>action.browse_admin</source>\n                <target>Acceder al backend</target>\n            </trans-unit>\n\n            <trans-unit id=\"label.title\">\n                <source>label.title</source>\n                <target>Título</target>\n            </trans-unit>\n            <trans-unit id=\"label.author\">\n                <source>label.author</source>\n                <target>Autor</target>\n            </trans-unit>\n            <trans-unit id=\"label.author_email\">\n                <source>label.author_email</source>\n                <target>Email del autor</target>\n            </trans-unit>\n            <trans-unit id=\"label.username\">\n                <source>label.username</source>\n                <target>Nombre de usuario</target>\n            </trans-unit>\n            <trans-unit id=\"label.password\">\n                <source>label.password</source>\n                <target>Contraseña</target>\n            </trans-unit>\n            <trans-unit id=\"label.role\">\n                <source>label.role</source>\n                <target>Rol</target>\n            </trans-unit>\n            <trans-unit id=\"label.content\">\n                <source>label.content</source>\n                <target>Contenido</target>\n            </trans-unit>\n            <trans-unit id=\"label.summary\">\n                <source>label.summary</source>\n                <target>Resumen</target>\n            </trans-unit>\n            <trans-unit id=\"label.published_at\">\n                <source>label.published_at</source>\n                <target>Publicado el</target>\n            </trans-unit>\n            <trans-unit id=\"label.actions\">\n                <source>label.actions</source>\n                <target>Acciones</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_new\">\n                <source>title.post_new</source>\n                <target>Nuevo artículo</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_contents\">\n                <source>action.edit_contents</source>\n                <target>Editar contenidos</target>\n            </trans-unit>\n\n            <trans-unit id=\"menu.post_list\">\n                <source>menu.post_list</source>\n                <target>Listado de artículos</target>\n            </trans-unit>\n            <trans-unit id=\"menu.back_to_blog\">\n                <source>menu.back_to_blog</source>\n                <target>Volver al blog</target>\n            </trans-unit>\n            <trans-unit id=\"menu.homepage\">\n                <source>menu.homepage</source>\n                <target>Inicio</target>\n            </trans-unit>\n            <trans-unit id=\"menu.admin\">\n                <source>menu.admin</source>\n                <target>Backend</target>\n            </trans-unit>\n            <trans-unit id=\"menu.logout\">\n                <source>menu.logout</source>\n                <target>Desconectarse</target>\n            </trans-unit>\n\n            <trans-unit id=\"post.to_publish_a_comment\">\n                <source>post.to_publish_a_comment</source>\n                <target>para publicar un comentario</target>\n            </trans-unit>\n            <trans-unit id=\"post.num_comments\">\n                <source>post.num_comments</source>\n                <target>%count% comentario|%count% comentarios</target>\n            </trans-unit>\n            <trans-unit id=\"post.commented_on\">\n                <source>post.commented_on</source>\n                <target>comentado el</target>\n            </trans-unit>\n            <trans-unit id=\"post.no_comments\">\n                <source>post.no_comments</source>\n                <target>Se el primero en añadir un comentario en este artículo.</target>\n            </trans-unit>\n            <trans-unit id=\"post.no_posts_found\">\n                <source>post.no_posts_found</source>\n                <target>No se ha encontrado ningún artículo.</target>\n            </trans-unit>\n\n            <trans-unit id=\"help.app_description\">\n                <source>help.app_description</source>\n                <target><![CDATA[Esta <strong>aplicación demo</strong> ha sido programada con el framework Symfony para mostrar la forma recomendada de programar aplicaciones Symfony.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.show_code\">\n                <source>help.show_code</source>\n                <target><![CDATA[Pulsa este botón para ver el código fuente del <strong>controlador</strong> y de la <strong>plantilla</strong> utilizados para crear esta página.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_app\">\n                <source>help.browse_app</source>\n                <target><![CDATA[Acceder a la <strong>parte pública</strong> de la aplicación de demostración.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_admin\">\n                <source>help.browse_admin</source>\n                <target><![CDATA[Acceder a la <strong>parte de administración</strong> de la aplicación.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.login_users\">\n                <source>help.login_users</source>\n                <target>Prueba a acceder con estos usuarios</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_user\">\n                <source>help.role_user</source>\n                <target>usuario normal</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_admin\">\n                <source>help.role_admin</source>\n                <target>administrador</target>\n            </trans-unit>\n            <trans-unit id=\"help.reload_fixtures\">\n                <source>help.reload_fixtures</source>\n                <target>Si ninguno de estos usuarios funciona, carga de nuevo los datos de la aplicación ejecutando el siguiente comando en tu consola:</target>\n            </trans-unit>\n            <trans-unit id=\"help.add_user\">\n                <source>help.add_user</source>\n                <target>Si quieres crear nuevos usuarios, ejecuta este otro comando:</target>\n            </trans-unit>\n            <trans-unit id=\"help.more_information\">\n                <source>help.more_information</source>\n                <target><![CDATA[Para más información, consulta la <a href=\"http://symfony.com/doc\">documentación de Symfony</a>.]]></target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/messages.fr.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"fr\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"note\">\n                <source>note</source>\n                <target>NOTE</target>\n            </trans-unit>\n            <trans-unit id=\"tip\">\n                <source>tip</source>\n                <target>ASTUCE</target>\n            </trans-unit>\n            <trans-unit id=\"not_available\">\n                <source>not_available</source>\n                <target>Indisponible</target>\n            </trans-unit>\n            <trans-unit id=\"mit_license\">\n                <source>mit_license</source>\n                <target>Licence MIT</target>\n            </trans-unit>\n\n            <trans-unit id=\"title.homepage\">\n                <source>title.homepage</source>\n                <target><![CDATA[Bienvenue sur l'application <strong>Symfony Demo</strong>]]></target>\n            </trans-unit>\n            <trans-unit id=\"title.source_code\">\n                <source>title.source_code</source>\n                <target>Le code source utilisé pour afficher cette page</target>\n            </trans-unit>\n            <trans-unit id=\"title.controller_code\">\n                <source>title.controller_code</source>\n                <target>Code du contrôleur</target>\n            </trans-unit>\n            <trans-unit id=\"title.twig_template_code\">\n                <source>title.twig_template_code</source>\n                <target>Code du template Twig</target>\n            </trans-unit>\n            <trans-unit id=\"title.login_help\">\n                <source>title.login_help</source>\n                <target>Try either of the following users</target>\n            </trans-unit>\n            <trans-unit id=\"title.login\">\n                <source>title.login</source>\n                <target>Connexion sécurisée</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_list\">\n                <source>title.post_list</source>\n                <target>Liste des articles</target>\n            </trans-unit>\n            <trans-unit id=\"title.edit_post\">\n                <source>title.edit_post</source>\n                <target>Modifier l'article #%id%</target>\n            </trans-unit>\n            <trans-unit id=\"title.add_comment\">\n                <source>title.add_comment</source>\n                <target>Laisser un commentaire</target>\n            </trans-unit>\n\n            <trans-unit id=\"action.show\">\n                <source>action.show</source>\n                <target>Voir</target>\n            </trans-unit>\n            <trans-unit id=\"action.show_code\">\n                <source>action.show_code</source>\n                <target>Voir le code</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit\">\n                <source>action.edit</source>\n                <target>Editer</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_post\">\n                <source>action.edit_post</source>\n                <target>Modifier l'article</target>\n            </trans-unit>\n            <trans-unit id=\"action.save\">\n                <source>action.save</source>\n                <target>Enregistrer</target>\n            </trans-unit>\n            <trans-unit id=\"action.delete_post\">\n                <source>action.delete_post</source>\n                <target>Supprimer l'article</target>\n            </trans-unit>\n            <trans-unit id=\"action.create_post\">\n                <source>action.create_post</source>\n                <target>Créer un nouvel article</target>\n            </trans-unit>\n            <trans-unit id=\"label.create_post\">\n                <source>label.create_post</source>\n                <target>Créer un article</target>\n            </trans-unit>\n            <trans-unit id=\"action.back_to_list\">\n                <source>action.back_to_list</source>\n                <target>Retour à la liste des articles</target>\n            </trans-unit>\n            <trans-unit id=\"action.publish_comment\">\n                <source>action.publish_comment</source>\n                <target>Publier</target>\n            </trans-unit>\n            <trans-unit id=\"action.sign_in\">\n                <source>action.sign_in</source>\n                <target>Connectez-vous</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_app\">\n                <source>action.browse_app</source>\n                <target>Naviguer sur l'application</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_admin\">\n                <source>action.browse_admin</source>\n                <target>Naviguer sur l'admin</target>\n            </trans-unit>\n\n            <trans-unit id=\"label.title\">\n                <source>label.title</source>\n                <target>Titre</target>\n            </trans-unit>\n            <trans-unit id=\"label.author\">\n                <source>label.author</source>\n                <target>Auteur</target>\n            </trans-unit>\n            <trans-unit id=\"label.author_email\">\n                <source>label.author_email</source>\n                <target>Mail de l'auteur</target>\n            </trans-unit>\n            <trans-unit id=\"label.username\">\n                <source>label.username</source>\n                <target>Identifiant</target>\n            </trans-unit>\n            <trans-unit id=\"label.password\">\n                <source>label.password</source>\n                <target>Mot de passe</target>\n            </trans-unit>\n            <trans-unit id=\"label.role\">\n                <source>label.role</source>\n                <target>Rôle</target>\n            </trans-unit>\n            <trans-unit id=\"label.content\">\n                <source>label.content</source>\n                <target>Contenu</target>\n            </trans-unit>\n            <trans-unit id=\"label.summary\">\n                <source>label.summary</source>\n                <target>Résumé</target>\n            </trans-unit>\n            <trans-unit id=\"label.published_at\">\n                <source>label.published_at</source>\n                <target>Publié le</target>\n            </trans-unit>\n            <trans-unit id=\"label.actions\">\n                <source>label.actions</source>\n                <target>Actions</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_new\">\n                <source>title.post_new</source>\n                <target>Ajouter un nouvel article</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_contents\">\n                <source>action.edit_contents</source>\n                <target>Modifier le contenu</target>\n            </trans-unit>\n\n            <trans-unit id=\"menu.post_list\">\n                <source>menu.post_list</source>\n                <target>Liste des articles</target>\n            </trans-unit>\n            <trans-unit id=\"menu.back_to_blog\">\n                <source>menu.back_to_blog</source>\n                <target>Retour au blog</target>\n            </trans-unit>\n            <trans-unit id=\"menu.homepage\">\n                <source>menu.homepage</source>\n                <target>Accueil</target>\n            </trans-unit>\n            <trans-unit id=\"menu.admin\">\n                <source>menu.admin</source>\n                <target>Admin</target>\n            </trans-unit>\n            <trans-unit id=\"menu.logout\">\n                <source>menu.logout</source>\n                <target>Déconnexion</target>\n            </trans-unit>\n\n            <trans-unit id=\"post.to_publish_a_comment\">\n                <source>post.to_publish_a_comment</source>\n                <target>pour publier un commentaire</target>\n            </trans-unit>\n            <trans-unit id=\"post.num_comments\">\n                <source>post.num_comments</source>\n                <target>%count% commentaire|%count% commentaires</target>\n            </trans-unit>\n            <trans-unit id=\"post.commented_on\">\n                <source>post.commented_on</source>\n                <target>commenté le</target>\n            </trans-unit>\n            <trans-unit id=\"post.no_comments\">\n                <source>post.no_comments</source>\n                <target>Soyez le premier à commenter cet article.</target>\n            </trans-unit>\n\n            <trans-unit id=\"help.app_description\">\n                <source>help.app_description</source>\n                <target><![CDATA[Ceci est une <strong>application de démonstration</strong> construite avec le framework Symfony pour illustrer la façon recommandée de développer des applications Symfony.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.show_code\">\n                <source>help.show_code</source>\n                <target><![CDATA[Cliquez sur ce bouton pour voir le code source du <strong>contrôleur</strong> et du <strong>template</strong> utilisé pour afficher cette page.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_app\">\n                <source>help.browse_app</source>\n                <target><![CDATA[Parcourir la <strong>section publique</strong> de l'application de démonstration.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_admin\">\n                <source>help.browse_admin</source>\n                <target><![CDATA[Parcourir l'<strong>interface d'administration</strong> de l'application de démonstration.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.login_users\">\n                <source>help.login_users</source>\n                <target>Essayez l'un des utilisateurs suivants</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_user\">\n                <source>help.role_user</source>\n                <target>utilisateur normal</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_admin\">\n                <source>help.role_admin</source>\n                <target>administrateur</target>\n            </trans-unit>\n            <trans-unit id=\"help.reload_fixtures\">\n                <source>help.reload_fixtures</source>\n                <target>Si ces utilisateurs ne fonctionnent pas, rechargez les fixtures de l'application en exécutant cette commande depuis le terminal :</target>\n            </trans-unit>\n            <trans-unit id=\"help.add_user\">\n                <source>help.add_user</source>\n                <target>Si vous voulez créer de nouveaux utilisateurs, exécutez cette autre commande :</target>\n            </trans-unit>\n            <trans-unit id=\"help.more_information\">\n                <source>help.more_information</source>\n                <target><![CDATA[Pour plus d'informations, consultez la <a href=\"http://symfony.com/doc\">documentation de Symfony</a>.]]></target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/messages.id.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"id\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"note\">\n                <source>note</source>\n                <target>CATATAN</target>\n            </trans-unit>\n            <trans-unit id=\"tip\">\n                <source>tip</source>\n                <target>TIPS</target>\n            </trans-unit>\n            <trans-unit id=\"not_available\">\n                <source>not_available</source>\n                <target>Tidak tersedia</target>\n            </trans-unit>\n            <trans-unit id=\"mit_license\">\n                <source>mit_license</source>\n                <target>MIT License</target>\n            </trans-unit>\n\n            <trans-unit id=\"title.homepage\">\n                <source>title.homepage</source>\n                <target><![CDATA[Selamat datang di aplikasi <strong>Symfony Demo</strong>]]></target>\n            </trans-unit>\n            <trans-unit id=\"title.source_code\">\n                <source>title.source_code</source>\n                <target>Kode yang digunakan untuk membuat halaman ini</target>\n            </trans-unit>\n            <trans-unit id=\"title.controller_code\">\n                <source>title.controller_code</source>\n                <target>Kode di Controller</target>\n            </trans-unit>\n            <trans-unit id=\"title.twig_template_code\">\n                <source>title.twig_template_code</source>\n                <target>Kode Twig template</target>\n            </trans-unit>\n            <trans-unit id=\"title.login\">\n                <source>title.login</source>\n                <target>Secure Sign in</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_list\">\n                <source>title.post_list</source>\n                <target>Daftar Posting</target>\n            </trans-unit>\n            <trans-unit id=\"title.edit_post\">\n                <source>title.edit_post</source>\n                <target>Sunting posting #%id%</target>\n            </trans-unit>\n            <trans-unit id=\"title.add_comment\">\n                <source>title.add_comment</source>\n                <target>Tambahkan komentar</target>\n            </trans-unit>\n            <trans-unit id=\"title.comment_error\">\n                <source>title.comment_error</source>\n                <target>Ada kesalahan penerbitan komentar Anda</target>\n            </trans-unit>\n\n            <trans-unit id=\"action.show\">\n                <source>action.show</source>\n                <target>Tampilkan</target>\n            </trans-unit>\n            <trans-unit id=\"action.show_code\">\n                <source>action.show_code</source>\n                <target>Tampilkan Kode</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit\">\n                <source>action.edit</source>\n                <target>Sunting</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_post\">\n                <source>action.edit_post</source>\n                <target>Sunting Posting</target>\n            </trans-unit>\n            <trans-unit id=\"action.save\">\n                <source>action.save</source>\n                <target>Simpan perubahan</target>\n            </trans-unit>\n            <trans-unit id=\"action.delete_post\">\n                <source>action.delete_post</source>\n                <target>Hapus posting</target>\n            </trans-unit>\n            <trans-unit id=\"action.create_post\">\n                <source>action.create_post</source>\n                <target>Buat posting baru</target>\n            </trans-unit>\n            <trans-unit id=\"label.create_post\">\n                <source>label.create_post</source>\n                <target>Buat posting</target>\n            </trans-unit>\n            <trans-unit id=\"action.back_to_list\">\n                <source>action.back_to_list</source>\n                <target>Kembali Ke daftar posting</target>\n            </trans-unit>\n            <trans-unit id=\"action.publish_comment\">\n                <source>action.publish_comment</source>\n                <target>Terbitkan komentar</target>\n            </trans-unit>\n            <trans-unit id=\"action.sign_in\">\n                <source>action.sign_in</source>\n                <target>Masuk</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_app\">\n                <source>action.browse_app</source>\n                <target>Jelajah aplikasi</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_admin\">\n                <source>action.browse_admin</source>\n                <target>Jelajah backend</target>\n            </trans-unit>\n\n            <trans-unit id=\"label.title\">\n                <source>label.title</source>\n                <target>Judul</target>\n            </trans-unit>\n            <trans-unit id=\"label.author\">\n                <source>label.author</source>\n                <target>Penulis</target>\n            </trans-unit>\n            <trans-unit id=\"label.author_email\">\n                <source>label.author_email</source>\n                <target>Email penulis</target>\n            </trans-unit>\n            <trans-unit id=\"label.username\">\n                <source>label.username</source>\n                <target>Nama Pengguna</target>\n            </trans-unit>\n            <trans-unit id=\"label.password\">\n                <source>label.password</source>\n                <target>Kata Sandi</target>\n            </trans-unit>\n            <trans-unit id=\"label.role\">\n                <source>label.role</source>\n                <target>Peranan</target>\n            </trans-unit>\n            <trans-unit id=\"label.content\">\n                <source>label.content</source>\n                <target>Konten</target>\n            </trans-unit>\n            <trans-unit id=\"label.summary\">\n                <source>label.summary</source>\n                <target>Ringkasan</target>\n            </trans-unit>\n            <trans-unit id=\"label.published_at\">\n                <source>label.published_at</source>\n                <target>Diterbitkan pada</target>\n            </trans-unit>\n            <trans-unit id=\"label.actions\">\n                <source>label.actions</source>\n                <target>Tindakan</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_new\">\n                <source>title.post_new</source>\n                <target>Pembuatan Posting</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_contents\">\n                <source>action.edit_contents</source>\n                <target>Sunting konten</target>\n            </trans-unit>\n\n            <trans-unit id=\"menu.post_list\">\n                <source>menu.post_list</source>\n                <target>Daftar posting</target>\n            </trans-unit>\n            <trans-unit id=\"menu.back_to_blog\">\n                <source>menu.back_to_blog</source>\n                <target>Kembali ke blog</target>\n            </trans-unit>\n            <trans-unit id=\"menu.homepage\">\n                <source>menu.homepage</source>\n                <target>Beranda</target>\n            </trans-unit>\n            <trans-unit id=\"menu.admin\">\n                <source>menu.admin</source>\n                <target>Backend</target>\n            </trans-unit>\n            <trans-unit id=\"menu.logout\">\n                <source>menu.logout</source>\n                <target>Keluar</target>\n            </trans-unit>\n\n            <trans-unit id=\"post.to_publish_a_comment\">\n                <source>post.to_publish_a_comment</source>\n                <target>untuk menerbitkan komentar</target>\n            </trans-unit>\n            <trans-unit id=\"post.num_comments\">\n                <source>post.num_comments</source>\n                <target>%count% komentar</target>\n            </trans-unit>\n            <trans-unit id=\"post.commented_on\">\n                <source>post.commented_on</source>\n                <target>Komentar pada</target>\n            </trans-unit>\n            <trans-unit id=\"post.no_comments\">\n                <source>post.no_comments</source>\n                <target>Jadilah yang pertama yang mengomentari posting ini.</target>\n            </trans-unit>\n\n            <trans-unit id=\"help.app_description\">\n                <source>help.app_description</source>\n                <target><![CDATA[Ini adalah <strong>aplikasi demo</strong> dibangun di dalam Symfony Framework sebagai ilustrasi cara-cara yang direkomendasikan untuk membangun aplikasi Symfony.]]></target>\n            </trans-unit>\n             <trans-unit id=\"help.show_code\">\n                <source>help.show_code</source>\n                <target><![CDATA[Klik pada tombol ini untuk menampilkan kode <strong>Controller</strong> dan <strong>template</strong> yang digunakan untuk membuat halaman ini.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_app\">\n                <source>help.browse_app</source>\n                <target><![CDATA[Jelajah <strong>bagian publik</strong> dari aplikasi demo ini.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_admin\">\n                <source>help.browse_admin</source>\n                <target><![CDATA[Jelajah <strong>admin backend</strong> dari aplikasi demo ini.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.login_users\">\n                <source>help.login_users</source>\n                <target>Coba salah satu dari pengguna berikut</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_user\">\n                <source>help.role_user</source>\n                <target>Pengguna umum</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_admin\">\n                <source>help.role_admin</source>\n                <target>administrator</target>\n            </trans-unit>\n            <trans-unit id=\"help.reload_fixtures\">\n                <source>help.reload_fixtures</source>\n                <target>Jika pengguna-pengguna tersebut tidak dapat digunakan, muat ulang fixtur aplikasi dengan menjalankan perintah berikut dari terminal:</target>\n            </trans-unit>\n            <trans-unit id=\"help.add_user\">\n                <source>help.add_user</source>\n                <target>Jika anda ingin membuat user baru, jalankan perintah berikut:</target>\n            </trans-unit>\n            <trans-unit id=\"help.more_information\">\n                <source>help.more_information</source>\n                <target><![CDATA[Informasi selengkapnya, kunjungi <a href=\"http://symfony.com/doc\">Symfony doc</a>.]]></target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/messages.it.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"it\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"note\">\n                <source>note</source>\n                <target>NOTE</target>\n            </trans-unit>\n            <trans-unit id=\"tip\">\n                <source>tip</source>\n                <target>SUGGERIMENTO</target>\n            </trans-unit>\n            <trans-unit id=\"not_available\">\n                <source>not_available</source>\n                <target>Non disponibile</target>\n            </trans-unit>\n            <trans-unit id=\"mit_license\">\n                <source>mit_license</source>\n                <target>Licenza MIT</target>\n            </trans-unit>\n\n            <trans-unit id=\"title.homepage\">\n                <source>title.homepage</source>\n                <target><![CDATA[Benvenuto nell'applicazione <strong>Symfony Demo</strong>]]></target>\n            </trans-unit>\n            <trans-unit id=\"title.source_code\">\n                <source>title.source_code</source>\n                <target>Codice sorgente usato per effettuare il render di questa pagina</target>\n            </trans-unit>\n            <trans-unit id=\"title.controller_code\">\n                <source>title.controller_code</source>\n                <target>Codice del controllore</target>\n            </trans-unit>\n            <trans-unit id=\"title.twig_template_code\">\n                <source>title.twig_template_code</source>\n                <target>Codice del template Twig</target>\n            </trans-unit>\n            <trans-unit id=\"title.login\">\n                <source>title.login</source>\n                <target>Accesso sicuro</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_list\">\n                <source>title.post_list</source>\n                <target>Lista dei post</target>\n            </trans-unit>\n            <trans-unit id=\"title.edit_post\">\n                <source>title.edit_post</source>\n                <target>Modifica post #%id%</target>\n            </trans-unit>\n            <trans-unit id=\"title.add_comment\">\n                <source>title.add_comment</source>\n                <target>Aggiungi un commento</target>\n            </trans-unit>\n            <trans-unit id=\"title.comment_error\">\n                <source>title.comment_error</source>\n                <target>C'è stato un errore nella pubblicazione del tuo commento</target>\n            </trans-unit>\n\n            <trans-unit id=\"action.show\">\n                <source>action.show</source>\n                <target>Mostra</target>\n            </trans-unit>\n            <trans-unit id=\"action.show_code\">\n                <source>action.show_code</source>\n                <target>Mostra codice</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit\">\n                <source>action.edit</source>\n                <target>Modifica</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_post\">\n                <source>action.edit_post</source>\n                <target>Modifica post</target>\n            </trans-unit>\n            <trans-unit id=\"action.save\">\n                <source>action.save</source>\n                <target>Salva cambiamenti</target>\n            </trans-unit>\n            <trans-unit id=\"action.delete_post\">\n                <source>action.delete_post</source>\n                <target>Elimina post</target>\n            </trans-unit>\n            <trans-unit id=\"action.create_post\">\n                <source>action.create_post</source>\n                <target>Crea un nuovo post</target>\n            </trans-unit>\n            <trans-unit id=\"label.create_post\">\n                <source>label.create_post</source>\n                <target>Crea post</target>\n            </trans-unit>\n            <trans-unit id=\"action.back_to_list\">\n                <source>action.back_to_list</source>\n                <target>Ritorna alla lista dei post</target>\n            </trans-unit>\n            <trans-unit id=\"action.publish_comment\">\n                <source>action.publish_comment</source>\n                <target>Pubblica commento</target>\n            </trans-unit>\n            <trans-unit id=\"action.sign_in\">\n                <source>action.sign_in</source>\n                <target>Accedi</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_app\">\n                <source>action.browse_app</source>\n                <target>Naviga nell'applicazione</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_admin\">\n                <source>action.browse_admin</source>\n                <target>Naviga nel pannello di controllo</target>\n            </trans-unit>\n\n            <trans-unit id=\"label.title\">\n                <source>label.title</source>\n                <target>Titolo</target>\n            </trans-unit>\n            <trans-unit id=\"label.author\">\n                <source>label.author</source>\n                <target>Autore</target>\n            </trans-unit>\n            <trans-unit id=\"label.author_email\">\n                <source>label.author_email</source>\n                <target>Email dell'autore</target>\n            </trans-unit>\n            <trans-unit id=\"label.username\">\n                <source>label.username</source>\n                <target>Nome utente</target>\n            </trans-unit>\n            <trans-unit id=\"label.password\">\n                <source>label.password</source>\n                <target>Password</target>\n            </trans-unit>\n            <trans-unit id=\"label.role\">\n                <source>label.role</source>\n                <target>Ruolo</target>\n            </trans-unit>\n            <trans-unit id=\"label.content\">\n                <source>label.content</source>\n                <target>Contenuto</target>\n            </trans-unit>\n            <trans-unit id=\"label.summary\">\n                <source>label.summary</source>\n                <target>Descrizione</target>\n            </trans-unit>\n            <trans-unit id=\"label.published_at\">\n                <source>label.published_at</source>\n                <target>Data pubblicazione</target>\n            </trans-unit>\n            <trans-unit id=\"label.actions\">\n                <source>label.actions</source>\n                <target>Azioni</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_new\">\n                <source>title.post_new</source>\n                <target>Creazione post</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_contents\">\n                <source>action.edit_contents</source>\n                <target>Modifica contenuti</target>\n            </trans-unit>\n\n            <trans-unit id=\"menu.post_list\">\n                <source>menu.post_list</source>\n                <target>Lista post</target>\n            </trans-unit>\n            <trans-unit id=\"menu.back_to_blog\">\n                <source>menu.back_to_blog</source>\n                <target>Ritorna al blog</target>\n            </trans-unit>\n            <trans-unit id=\"menu.homepage\">\n                <source>menu.homepage</source>\n                <target>Homepage</target>\n            </trans-unit>\n            <trans-unit id=\"menu.admin\">\n                <source>menu.admin</source>\n                <target>Pannello di controllo</target>\n            </trans-unit>\n            <trans-unit id=\"menu.logout\">\n                <source>menu.logout</source>\n                <target>Esci</target>\n            </trans-unit>\n\n            <trans-unit id=\"post.to_publish_a_comment\">\n                <source>post.to_publish_a_comment</source>\n                <target>per pubblicare un commento</target>\n            </trans-unit>\n            <trans-unit id=\"post.num_comments\">\n                <source>post.num_comments</source>\n                <target>%count% commento|%count% commenti</target>\n            </trans-unit>\n            <trans-unit id=\"post.commented_on\">\n                <source>post.commented_on</source>\n                <target>ha commentato il</target>\n            </trans-unit>\n            <trans-unit id=\"post.no_comments\">\n                <source>post.no_comments</source>\n                <target>Commenta per primo.</target>\n            </trans-unit>\n\n            <trans-unit id=\"help.app_description\">\n                <source>help.app_description</source>\n                <target><![CDATA[Questa è un'<strong>applicazione demo</strong> creata con il Framework Symfony per illustrare il modo raccomandato per sviluppare applicazioni con Symfony.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.show_code\">\n                <source>help.show_code</source>\n                <target><![CDATA[Clicca su questo pulsante per mostare il codice sorgente dei <strong>controllori</strong> e <strong>template</strong> usati per effettuare il render di questa pagina.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_app\">\n                <source>help.browse_app</source>\n                <target><![CDATA[Naviga nella <strong>sezione pubblica</strong> dell'applicazione demo.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_admin\">\n                <source>help.browse_admin</source>\n                <target><![CDATA[Naviga nel <strong>pannello di controllo</strong> dell'applicazione demo.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.login_users\">\n                <source>help.login_users</source>\n                <target>Prova uno dei seguenti utenti</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_user\">\n                <source>help.role_user</source>\n                <target>utente normale</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_admin\">\n                <source>help.role_admin</source>\n                <target>amministratore</target>\n            </trans-unit>\n            <trans-unit id=\"help.reload_fixtures\">\n                <source>help.reload_fixtures</source>\n                <target>Se questi utenti non dovessero funzionare, ricarica i dati dell'applicazione eseguendo questo comando dal terminale:</target>\n            </trans-unit>\n            <trans-unit id=\"help.add_user\">\n                <source>help.add_user</source>\n                <target>Se vuoi aggiungere nuovi utenti, esegui quest'altro comando:</target>\n            </trans-unit>\n            <trans-unit id=\"help.more_information\">\n                <source>help.more_information</source>\n                <target><![CDATA[Per altre informazioni, visita la <a href=\"http://symfony.com/doc\">documentazione di Symfony</a>.]]></target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/messages.ja.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"ja\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"note\">\n                <source>note</source>\n                <target>ノート</target>\n            </trans-unit>\n            <trans-unit id=\"tip\">\n                <source>tip</source>\n                <target>ヒント</target>\n            </trans-unit>\n            <trans-unit id=\"not_available\">\n                <source>not_available</source>\n                <target>利用できません</target>\n            </trans-unit>\n            <trans-unit id=\"mit_license\">\n                <source>mit_license</source>\n                <target>MIT ライセンス</target>\n            </trans-unit>\n\n            <trans-unit id=\"title.homepage\">\n                <source>title.homepage</source>\n                <target><![CDATA[ようこそ <strong>Symfony Demo</strong> アプリケーションへ]]></target>\n            </trans-unit>\n            <trans-unit id=\"title.source_code\">\n                <source>title.source_code</source>\n                <target>このページを表示するのに使われたソースコード</target>\n            </trans-unit>\n            <trans-unit id=\"title.controller_code\">\n                <source>title.controller_code</source>\n                <target>Controller コード</target>\n            </trans-unit>\n            <trans-unit id=\"title.twig_template_code\">\n                <source>title.twig_template_code</source>\n                <target>Twig テンプレートコード</target>\n            </trans-unit>\n            <trans-unit id=\"title.login\">\n                <source>title.login</source>\n                <target>安全なログイン</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_list\">\n                <source>title.post_list</source>\n                <target>記事一覧</target>\n            </trans-unit>\n            <trans-unit id=\"title.edit_post\">\n                <source>title.edit_post</source>\n                <target>#%id% この記事を編集</target>\n            </trans-unit>\n            <trans-unit id=\"title.add_comment\">\n                <source>title.add_comment</source>\n                <target>コメントを追加</target>\n            </trans-unit>\n            <trans-unit id=\"title.comment_error\">\n                <source>title.comment_error</source>\n                <target>コメント投稿時にエラーが起きました</target>\n            </trans-unit>\n\n            <trans-unit id=\"action.show\">\n                <source>action.show</source>\n                <target>確認</target>\n            </trans-unit>\n            <trans-unit id=\"action.show_code\">\n                <source>action.show_code</source>\n                <target>コードを見る</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit\">\n                <source>action.edit</source>\n                <target>編集</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_post\">\n                <source>action.edit_post</source>\n                <target>記事を編集</target>\n            </trans-unit>\n            <trans-unit id=\"action.save\">\n                <source>action.save</source>\n                <target>変更を保存</target>\n            </trans-unit>\n            <trans-unit id=\"action.delete_post\">\n                <source>action.delete_post</source>\n                <target>記事を削除</target>\n            </trans-unit>\n            <trans-unit id=\"action.create_post\">\n                <source>action.create_post</source>\n                <target>新たに記事を作成</target>\n            </trans-unit>\n            <trans-unit id=\"label.create_post\">\n                <source>label.create_post</source>\n                <target>記事を作成</target>\n            </trans-unit>\n            <trans-unit id=\"action.back_to_list\">\n                <source>action.back_to_list</source>\n                <target>記事一覧に戻る</target>\n            </trans-unit>\n            <trans-unit id=\"action.publish_comment\">\n                <source>action.publish_comment</source>\n                <target>コメントを投稿</target>\n            </trans-unit>\n            <trans-unit id=\"action.sign_in\">\n                <source>action.sign_in</source>\n                <target>ログイン</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_app\">\n                <source>action.browse_app</source>\n                <target>アプリケーションへ</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_admin\">\n                <source>action.browse_admin</source>\n                <target>バックエンドへ</target>\n            </trans-unit>\n\n            <trans-unit id=\"label.title\">\n                <source>label.title</source>\n                <target>タイトル</target>\n            </trans-unit>\n            <trans-unit id=\"label.author\">\n                <source>label.author</source>\n                <target>投稿者</target>\n            </trans-unit>\n            <trans-unit id=\"label.author_email\">\n                <source>label.author_email</source>\n                <target>投稿者メールアドレス</target>\n            </trans-unit>\n            <trans-unit id=\"label.username\">\n                <source>label.username</source>\n                <target>ユーザー名</target>\n            </trans-unit>\n            <trans-unit id=\"label.password\">\n                <source>label.password</source>\n                <target>パスワード</target>\n            </trans-unit>\n            <trans-unit id=\"label.role\">\n                <source>label.role</source>\n                <target>ロール</target>\n            </trans-unit>\n            <trans-unit id=\"label.content\">\n                <source>label.content</source>\n                <target>本文</target>\n            </trans-unit>\n            <trans-unit id=\"label.summary\">\n                <source>label.summary</source>\n                <target>要約</target>\n            </trans-unit>\n            <trans-unit id=\"label.published_at\">\n                <source>label.published_at</source>\n                <target>投稿日時</target>\n            </trans-unit>\n            <trans-unit id=\"label.actions\">\n                <source>label.actions</source>\n                <target>アクション</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_new\">\n                <source>title.post_new</source>\n                <target>記事を作成</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_contents\">\n                <source>action.edit_contents</source>\n                <target>内容を編集</target>\n            </trans-unit>\n\n            <trans-unit id=\"menu.post_list\">\n                <source>menu.post_list</source>\n                <target>記事一覧</target>\n            </trans-unit>\n            <trans-unit id=\"menu.back_to_blog\">\n                <source>menu.back_to_blog</source>\n                <target>ブログへ戻る</target>\n            </trans-unit>\n            <trans-unit id=\"menu.homepage\">\n                <source>menu.homepage</source>\n                <target>ホームページ</target>\n            </trans-unit>\n            <trans-unit id=\"menu.admin\">\n                <source>menu.admin</source>\n                <target>バックエンド</target>\n            </trans-unit>\n            <trans-unit id=\"menu.logout\">\n                <source>menu.logout</source>\n                <target>ログアウト</target>\n            </trans-unit>\n\n            <trans-unit id=\"post.to_publish_a_comment\">\n                <source>post.to_publish_a_comment</source>\n                <target>コメントを投稿する</target>\n            </trans-unit>\n            <trans-unit id=\"post.num_comments\">\n                <source>post.num_comments</source>\n                <target>%count% コメント</target>\n            </trans-unit>\n            <trans-unit id=\"post.commented_on\">\n                <source>post.commented_on</source>\n                <target>コメント投稿日時</target>\n            </trans-unit>\n            <trans-unit id=\"post.no_comments\">\n                <source>post.no_comments</source>\n                <target>この記事へのコメントはまだ投稿されていません。</target>\n            </trans-unit>\n\n            <trans-unit id=\"help.app_description\">\n                <source>help.app_description</source>\n                <target><![CDATA[これはSymfonyフレームワークで構築された <strong>デモアプリケーション</strong>で、Symfonyアプリケーションを開発する際に推奨される方法を説明するためのものです。]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.show_code\">\n                <source>help.show_code</source>\n                <target><![CDATA[このボタンをクリックすれば、このページを表示するために使われた <strong>Controller</strong> と <strong>template</strong> のソースコードが表示されます。]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_app\">\n                <source>help.browse_app</source>\n                <target><![CDATA[デモアプリケーションの <strong>公開セクション</strong> を確認する。]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_admin\">\n                <source>help.browse_admin</source>\n                <target><![CDATA[デモアプリケーションの <strong>管理セクション</strong> を確認する。]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.login_users\">\n                <source>help.login_users</source>\n                <target>以下のユーザーのどれかを試す</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_user\">\n                <source>help.role_user</source>\n                <target>通常ユーザー</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_admin\">\n                <source>help.role_admin</source>\n                <target>管理者</target>\n            </trans-unit>\n            <trans-unit id=\"help.reload_fixtures\">\n                <source>help.reload_fixtures</source>\n                <target>もしこれらのユーザーが利用できない場合、このコマンドをターミナルで実行してアプリケーション設定を再読み込みしてください:</target>\n            </trans-unit>\n            <trans-unit id=\"help.add_user\">\n                <source>help.add_user</source>\n                <target>もし新しいユーザーを作成したければ、このコマンドを実行してください:</target>\n            </trans-unit>\n            <trans-unit id=\"help.more_information\">\n                <source>help.more_information</source>\n                <target><![CDATA[さらに詳しく知りたい場合は, <a href=\"http://symfony.com/doc\">Symfony doc</a>を参照してください。]]></target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/messages.nl.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"en\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"note\">\n                <source>note</source>\n                <target>NOTITIE</target>\n            </trans-unit>\n            <trans-unit id=\"tip\">\n                <source>tip</source>\n                <target>TIP</target>\n            </trans-unit>\n            <trans-unit id=\"not_available\">\n                <source>not_available</source>\n                <target>Niet beschikbaar</target>\n            </trans-unit>\n            <trans-unit id=\"mit_license\">\n                <source>mit_license</source>\n                <target>MIT Licentie</target>\n            </trans-unit>\n            <trans-unit id=\"Previous\">\n                <source>Previous</source>\n                <target>Vorige</target>\n            </trans-unit>\n            <trans-unit id=\"Next\">\n                <source>Next</source>\n                <target>Volgende</target>\n            </trans-unit>\n\n            <trans-unit id=\"title.homepage\">\n                <source>title.homepage</source>\n                <target><![CDATA[Welkom bij de <strong>Symfony Demo</strong> applicatie]]></target>\n            </trans-unit>\n            <trans-unit id=\"title.source_code\">\n                <source>title.source_code</source>\n                <target>Broncode van deze pagina</target>\n            </trans-unit>\n            <trans-unit id=\"title.controller_code\">\n                <source>title.controller_code</source>\n                <target>Controller code</target>\n            </trans-unit>\n            <trans-unit id=\"title.twig_template_code\">\n                <source>title.twig_template_code</source>\n                <target>Twig template code</target>\n            </trans-unit>\n            <trans-unit id=\"title.login\">\n                <source>title.login</source>\n                <target>Veilig inloggen</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_list\">\n                <source>title.post_list</source>\n                <target>Berichten Lijst</target>\n            </trans-unit>\n            <trans-unit id=\"title.edit_post\">\n                <source>title.edit_post</source>\n                <target>Bewerk bericht #%id%</target>\n            </trans-unit>\n            <trans-unit id=\"title.add_comment\">\n                <source>title.add_comment</source>\n                <target>Voeg een reactie toe</target>\n            </trans-unit>\n            <trans-unit id=\"title.comment_error\">\n                <source>title.comment_error</source>\n                <target>Er is een fout opgetreden bij het opslaan van uw reactie</target>\n            </trans-unit>\n\n            <trans-unit id=\"action.show\">\n                <source>action.show</source>\n                <target>Weergeven</target>\n            </trans-unit>\n            <trans-unit id=\"action.show_code\">\n                <source>action.show_code</source>\n                <target>Code weergeven</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit\">\n                <source>action.edit</source>\n                <target>Bewerken</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_post\">\n                <source>action.edit_post</source>\n                <target>Bericht bewerken</target>\n            </trans-unit>\n            <trans-unit id=\"action.save\">\n                <source>action.save</source>\n                <target>Opslaan</target>\n            </trans-unit>\n            <trans-unit id=\"action.delete_post\">\n                <source>action.delete_post</source>\n                <target>Bericht verwijderen</target>\n            </trans-unit>\n            <trans-unit id=\"action.create_post\">\n                <source>action.create_post</source>\n                <target>Nieuw bericht schrijven</target>\n            </trans-unit>\n            <trans-unit id=\"label.create_post\">\n                <source>label.create_post</source>\n                <target>Bericht maken</target>\n            </trans-unit>\n            <trans-unit id=\"action.back_to_list\">\n                <source>action.back_to_list</source>\n                <target>Terug naar de berichten lijst</target>\n            </trans-unit>\n            <trans-unit id=\"action.publish_comment\">\n                <source>action.publish_comment</source>\n                <target>Reactie opslaan</target>\n            </trans-unit>\n            <trans-unit id=\"action.sign_in\">\n                <source>action.sign_in</source>\n                <target>Inloggen</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_app\">\n                <source>action.browse_app</source>\n                <target>Applicatie bekijken</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_admin\">\n                <source>action.browse_admin</source>\n                <target>Beheerpaneel bekijken</target>\n            </trans-unit>\n\n            <trans-unit id=\"label.title\">\n                <source>label.title</source>\n                <target>Titel</target>\n            </trans-unit>\n            <trans-unit id=\"label.author\">\n                <source>label.author</source>\n                <target>Auteur</target>\n            </trans-unit>\n            <trans-unit id=\"label.author_email\">\n                <source>label.author_email</source>\n                <target>Auteur e-mail</target>\n            </trans-unit>\n            <trans-unit id=\"label.username\">\n                <source>label.username</source>\n                <target>Gebruikersnaam</target>\n            </trans-unit>\n            <trans-unit id=\"label.password\">\n                <source>label.password</source>\n                <target>Wachtwoord</target>\n            </trans-unit>\n            <trans-unit id=\"label.role\">\n                <source>label.role</source>\n                <target>Rol</target>\n            </trans-unit>\n            <trans-unit id=\"label.content\">\n                <source>label.content</source>\n                <target>Inhoud</target>\n            </trans-unit>\n            <trans-unit id=\"label.summary\">\n                <source>label.summary</source>\n                <target>Samenvatting</target>\n            </trans-unit>\n            <trans-unit id=\"label.published_at\">\n                <source>label.published_at</source>\n                <target>Geplaatst</target>\n            </trans-unit>\n            <trans-unit id=\"label.actions\">\n                <source>label.actions</source>\n                <target>Acties</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_new\">\n                <source>title.post_new</source>\n                <target>Nieuw bericht</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_contents\">\n                <source>action.edit_contents</source>\n                <target>Inhoud bewerken</target>\n            </trans-unit>\n\n            <trans-unit id=\"menu.post_list\">\n                <source>menu.post_list</source>\n                <target>Berichten lijst</target>\n            </trans-unit>\n            <trans-unit id=\"menu.back_to_blog\">\n                <source>menu.back_to_blog</source>\n                <target>Terug naar de blog</target>\n            </trans-unit>\n            <trans-unit id=\"menu.homepage\">\n                <source>menu.homepage</source>\n                <target>Homepagina</target>\n            </trans-unit>\n            <trans-unit id=\"menu.admin\">\n                <source>menu.admin</source>\n                <target>Beheerpaneel</target>\n            </trans-unit>\n            <trans-unit id=\"menu.logout\">\n                <source>menu.logout</source>\n                <target>Uitloggen</target>\n            </trans-unit>\n\n            <trans-unit id=\"post.to_publish_a_comment\">\n                <source>post.to_publish_a_comment</source>\n                <target>om een reactie toe te voegen</target>\n            </trans-unit>\n            <trans-unit id=\"post.num_comments\">\n                <source>post.num_comments</source>\n                <target>%count% reactie|%count% reacties</target>\n            </trans-unit>\n            <trans-unit id=\"post.commented_on\">\n                <source>post.commented_on</source>\n                <target>gereageerd op</target>\n            </trans-unit>\n            <trans-unit id=\"post.no_comments\">\n                <source>post.no_comments</source>\n                <target>Wees de eerste om te reageren op dit bericht.</target>\n            </trans-unit>\n\n            <trans-unit id=\"help.app_description\">\n                <source>help.app_description</source>\n                <target><![CDATA[Dit is een <strong>voorbeeld applicatie</strong>, gemaakt met het Symfony framework, die u een indruk geeft van de aanbevolen manier om een Symfony applicatie te ontwikkelen.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.show_code\">\n                <source>help.show_code</source>\n                <target><![CDATA[Klik op deze knop om de broncode van de <strong>Controller</strong> en <strong>template</strong> weer te geven, die gebruikt is bij het weergeven van deze pagina.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_app\">\n                <source>help.browse_app</source>\n                <target><![CDATA[Bekijk het <strong>publieke gedeelte</strong> van de demo applicatie.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_admin\">\n                <source>help.browse_admin</source>\n                <target><![CDATA[Bekijk het <strong>Beheerpaneel</strong> van de demo applicatie.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.login_users\">\n                <source>help.login_users</source>\n                <target>Probeer een van de volgende gebruikers</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_user\">\n                <source>help.role_user</source>\n                <target>normale gebruiker</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_admin\">\n                <source>help.role_admin</source>\n                <target>beheerder</target>\n            </trans-unit>\n            <trans-unit id=\"help.reload_fixtures\">\n                <source>help.reload_fixtures</source>\n                <target>Als het niet lukt om in te loggen met deze gebruikers, probeer dan de applicatie instellingen te herladen door dit commando in de terminal uit te voeren:</target>\n            </trans-unit>\n            <trans-unit id=\"help.add_user\">\n                <source>help.add_user</source>\n                <target>Als u een nieuwe gebruiker wilt toevoegen dan voer dit commando uit:</target>\n            </trans-unit>\n            <trans-unit id=\"help.more_information\">\n                <source>help.more_information</source>\n                <target><![CDATA[Voor meer informatie bekijk de <a href=\"http://symfony.com/doc\">Symfony documentatie</a>.]]></target>\n            </trans-unit>\n            <trans-unit id=\"delete_post_modal.title\">\n                <source>delete_post_modal.title</source>\n                <target>Weet u zeker dat u dit bericht wilt verwijderen?</target>\n            </trans-unit>\n            <trans-unit id=\"delete_post_modal.body\">\n                <source>delete_post_modal.body</source>\n                <target>Deze actie kan niet ongedaan gemaakt worden.</target>\n            </trans-unit>\n            <trans-unit id=\"label.cancel\">\n                <source>label.cancel</source>\n                <target>Annuleren</target>\n            </trans-unit>\n            <trans-unit id=\"label.delete_post\">\n                <source>label.delete_post</source>\n                <target>Verwijderen</target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/messages.pl.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"pl\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"note\">\n                <source>note</source>\n                <target>UWAGA</target>\n            </trans-unit>\n            <trans-unit id=\"tip\">\n                <source>tip</source>\n                <target>PORADA</target>\n            </trans-unit>\n            <trans-unit id=\"not_available\">\n                <source>not_available</source>\n                <target>Niedostępne</target>\n            </trans-unit>\n            <trans-unit id=\"mit_license\">\n                <source>mit_license</source>\n                <target>Licencja MIT</target>\n            </trans-unit>\n            <trans-unit id=\"previous\">\n                <source>Previous</source>\n                <target>Poprzednia</target>\n            </trans-unit>\n            <trans-unit id=\"next\">\n                <source>Next</source>\n                <target>Następna</target>\n            </trans-unit>\n\n            <trans-unit id=\"title.homepage\">\n                <source>title.homepage</source>\n                <target><![CDATA[Witamy w aplikacji <strong>Symfony Demo</strong>]]></target>\n            </trans-unit>\n            <trans-unit id=\"title.source_code\">\n                <source>title.source_code</source>\n                <target>Kod źródłowy użyty do wygenerowania tej podstrony</target>\n            </trans-unit>\n            <trans-unit id=\"title.controller_code\">\n                <source>title.controller_code</source>\n                <target>Kod kontrolera</target>\n            </trans-unit>\n            <trans-unit id=\"title.twig_template_code\">\n                <source>title.twig_template_code</source>\n                <target>Kod szablonu Twig</target>\n            </trans-unit>\n            <trans-unit id=\"title.login\">\n                <source>title.login</source>\n                <target>Bezpieczne logowanie</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_list\">\n                <source>title.post_list</source>\n                <target>Lista artykułów</target>\n            </trans-unit>\n            <trans-unit id=\"title.edit_post\">\n                <source>title.edit_post</source>\n                <target>Edytuj artykuł #%id%</target>\n            </trans-unit>\n            <trans-unit id=\"title.add_comment\">\n                <source>title.add_comment</source>\n                <target>Dodaj komentarz</target>\n            </trans-unit>\n            <trans-unit id=\"title.comment_error\">\n                <source>title.comment_error</source>\n                <target>Podczas publikacji Twojego komentarza wystąpił błąd</target>\n            </trans-unit>\n\n            <trans-unit id=\"action.show\">\n                <source>action.show</source>\n                <target>Pokaż</target>\n            </trans-unit>\n            <trans-unit id=\"action.show_code\">\n                <source>action.show_code</source>\n                <target>Pokaż kod</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit\">\n                <source>action.edit</source>\n                <target>Edytuj</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_post\">\n                <source>action.edit_post</source>\n                <target>Edytuj artykuł</target>\n            </trans-unit>\n            <trans-unit id=\"action.save\">\n                <source>action.save</source>\n                <target>Zapisz</target>\n            </trans-unit>\n            <trans-unit id=\"action.delete_post\">\n                <source>action.delete_post</source>\n                <target>Usuń artykuł</target>\n            </trans-unit>\n            <trans-unit id=\"delete_post_modal.title\">\n                <source>delete_post_modal.title</source>\n                <target>Czy na pewno chcesz usunąć ten artykuł?</target>\n            </trans-unit>\n            <trans-unit id=\"delete_post_modal.body\">\n                <source>delete_post_modal.body</source>\n                <target>Ta akcja nie może zostać cofnięta.</target>\n            </trans-unit>\n            <trans-unit id=\"label.delete_post\">\n                <source>label.delete_post</source>\n                <target>Usuń artykuł</target>\n            </trans-unit>\n            <trans-unit id=\"label.cancel\">\n                <source>label.cancel</source>\n                <target>Anuluj</target>\n            </trans-unit>\n            <trans-unit id=\"action.create_post\">\n                <source>action.create_post</source>\n                <target>Dodaj nowy artykuł</target>\n            </trans-unit>\n            <trans-unit id=\"label.create_post\">\n                <source>label.create_post</source>\n                <target>Dodaj artykuł</target>\n            </trans-unit>\n            <trans-unit id=\"label.save_and_create_new\">\n                <source>label.save_and_create_new</source>\n                <target>Zapisz i dodaj kolejny</target>\n            </trans-unit>\n            <trans-unit id=\"action.back_to_list\">\n                <source>action.back_to_list</source>\n                <target>Powrót do listy artykułów</target>\n            </trans-unit>\n            <trans-unit id=\"action.publish_comment\">\n                <source>action.publish_comment</source>\n                <target>Publikuj komentarz</target>\n            </trans-unit>\n            <trans-unit id=\"action.sign_in\">\n                <source>action.sign_in</source>\n                <target>Zaloguj się</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_app\">\n                <source>action.browse_app</source>\n                <target>Przeglądaj aplikację</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_admin\">\n                <source>action.browse_admin</source>\n                <target>Przeglądaj panel administracyjny</target>\n            </trans-unit>\n\n            <trans-unit id=\"label.title\">\n                <source>label.title</source>\n                <target>Tytuł</target>\n            </trans-unit>\n            <trans-unit id=\"label.author\">\n                <source>label.author</source>\n                <target>Autor</target>\n            </trans-unit>\n            <trans-unit id=\"label.author_email\">\n                <source>label.author_email</source>\n                <target>Adres e-mail autora</target>\n            </trans-unit>\n            <trans-unit id=\"label.username\">\n                <source>label.username</source>\n                <target>Użytkownik</target>\n            </trans-unit>\n            <trans-unit id=\"label.password\">\n                <source>label.password</source>\n                <target>Hasło</target>\n            </trans-unit>\n            <trans-unit id=\"label.role\">\n                <source>label.role</source>\n                <target>Rola</target>\n            </trans-unit>\n            <trans-unit id=\"label.content\">\n                <source>label.content</source>\n                <target>Treść</target>\n            </trans-unit>\n            <trans-unit id=\"label.summary\">\n                <source>label.summary</source>\n                <target>Podsumowanie</target>\n            </trans-unit>\n            <trans-unit id=\"label.published_at\">\n                <source>label.published_at</source>\n                <target>Opublikowano</target>\n            </trans-unit>\n            <trans-unit id=\"label.actions\">\n                <source>label.actions</source>\n                <target>Akcje</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_new\">\n                <source>title.post_new</source>\n                <target>Tworzenie nowego artykułu</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_contents\">\n                <source>action.edit_contents</source>\n                <target>Edycja treści</target>\n            </trans-unit>\n\n            <trans-unit id=\"menu.post_list\">\n                <source>menu.post_list</source>\n                <target>Lista artykułów</target>\n            </trans-unit>\n            <trans-unit id=\"menu.back_to_blog\">\n                <source>menu.back_to_blog</source>\n                <target>Powrót do bloga</target>\n            </trans-unit>\n            <trans-unit id=\"menu.homepage\">\n                <source>menu.homepage</source>\n                <target>Strona główna</target>\n            </trans-unit>\n            <trans-unit id=\"menu.admin\">\n                <source>menu.admin</source>\n                <target>Panel administracyjny</target>\n            </trans-unit>\n            <trans-unit id=\"menu.logout\">\n                <source>menu.logout</source>\n                <target>Wyloguj się</target>\n            </trans-unit>\n\n            <trans-unit id=\"post.to_publish_a_comment\">\n                <source>post.to_publish_a_comment</source>\n                <target>aby dodać komentarz</target>\n            </trans-unit>\n            <trans-unit id=\"post.num_comments\">\n                <source>post.num_comments</source>\n                <target>%count% komentarz|%count% komentarze|%count% komentarzy</target>\n            </trans-unit>\n            <trans-unit id=\"post.commented_on\">\n                <source>post.commented_on</source>\n                <target>skomentował</target>\n            </trans-unit>\n            <trans-unit id=\"post.no_comments\">\n                <source>post.no_comments</source>\n                <target>Bądź pierwszym, który skomentuje.</target>\n            </trans-unit>\n            <trans-unit id=\"post.no_posts_found\">\n                <source>post.no_posts_found</source>\n                <target>Brak artykułów</target>\n            </trans-unit>\n            <trans-unit id=\"post.created_successfully\">\n                <source>post.created_successfully</source>\n                <target>Artykuł został utworzony!</target>\n            </trans-unit>\n            <trans-unit id=\"post.updated_successfully\">\n                <source>post.updated_successfully</source>\n                <target>Artykuł został zaktualizowany!</target>\n            </trans-unit>\n            <trans-unit id=\"post.deleted_successfully\">\n                <source>post.deleted_successfully</source>\n                <target>Artykuł został usunięty!</target>\n            </trans-unit>\n            <trans-unit id=\"help.app_description\">\n                <source>help.app_description</source>\n                <target><![CDATA[To jest <strong> przykładowa aplikacja </strong> zbudowana przy pomocy frameworka Symfony, dla zademonostrowania polecanego sposobu tworzenia aplikacji przy jego użyciu.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.show_code\">\n                <source>help.show_code</source>\n                <target><![CDATA[Kliknij poniższy przycisk, aby zobaczyć kod <strong>kontrolera</strong> oraz <strong>szablonu</strong> użytych podczas generowania tej podstrony.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_app\">\n                <source>help.browse_app</source>\n                <target><![CDATA[Przeglądaj <strong>publiczną część</strong> aplikacji demonstracyjnej.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_admin\">\n                <source>help.browse_admin</source>\n                <target><![CDATA[Przeglądaj <strong>panel administracyjny</strong> aplikacji demonstracyjnej.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.login_users\">\n                <source>help.login_users</source>\n                <target>Użyj dowolnego z poniższych użytkowników</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_user\">\n                <source>help.role_user</source>\n                <target>zwykły użytkownik</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_admin\">\n                <source>help.role_admin</source>\n                <target>administrator</target>\n            </trans-unit>\n            <trans-unit id=\"help.reload_fixtures\">\n                <source>help.reload_fixtures</source>\n                <target>Jeśli powyższe dane logowania nie działają, załaduj ponownie przykładowe dane dla tej aplikacji. Uruchom następującą komendę:</target>\n            </trans-unit>\n            <trans-unit id=\"help.add_user\">\n                <source>help.add_user</source>\n                <target>Jeśli chcesz dodać nowego użytkownika, uruchom następującą komendę:</target>\n            </trans-unit>\n            <trans-unit id=\"help.more_information\">\n                <source>help.more_information</source>\n                <target><![CDATA[Sprawdź <a href=\"http://symfony.com/doc\">dokumentację Symfony</a>, aby uzyskać więcej informacji.]]></target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/messages.pt_BR.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"pt-BR\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"note\">\n                <source>note</source>\n                <target>NOTA</target>\n            </trans-unit>\n            <trans-unit id=\"tip\">\n                <source>tip</source>\n                <target>DICA</target>\n            </trans-unit>\n            <trans-unit id=\"not_available\">\n                <source>not_available</source>\n                <target>Não disponível</target>\n            </trans-unit>\n            <trans-unit id=\"mit_license\">\n                <source>mit_license</source>\n                <target>Licença MIT</target>\n            </trans-unit>\n\n            <trans-unit id=\"previous\">\n                <source>Previous</source>\n                <target>Anterior</target>\n            </trans-unit>\n            <trans-unit id=\"next\">\n                <source>Next</source>\n                <target>Próximo</target>\n            </trans-unit>\n\n            <trans-unit id=\"title.homepage\">\n                <source>title.homepage</source>\n                <target><![CDATA[Bem-vindo à aplicação <strong>Symfony Demo</strong>]]></target>\n            </trans-unit>\n            <trans-unit id=\"title.source_code\">\n                <source>title.source_code</source>\n                <target>Código fonte utilizado para renderizar esta página</target>\n            </trans-unit>\n            <trans-unit id=\"title.controller_code\">\n                <source>title.controller_code</source>\n                <target>Código do Controller</target>\n            </trans-unit>\n            <trans-unit id=\"title.twig_template_code\">\n                <source>title.twig_template_code</source>\n                <target>Código do template Twig</target>\n            </trans-unit>\n            <trans-unit id=\"title.login\">\n                <source>title.login</source>\n                <target>Login seguro</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_list\">\n                <source>title.post_list</source>\n                <target>Lista de Posts</target>\n            </trans-unit>\n            <trans-unit id=\"title.edit_post\">\n                <source>title.edit_post</source>\n                <target>Editar o post #%id%</target>\n            </trans-unit>\n            <trans-unit id=\"title.add_comment\">\n                <source>title.add_comment</source>\n                <target>Adicionar um comentário</target>\n            </trans-unit>\n            <trans-unit id=\"title.comment_error\">\n                <source>title.comment_error</source>\n                <target>Houve um erro ao publicar o seu comentário</target>\n            </trans-unit>\n\n            <trans-unit id=\"action.show\">\n                <source>action.show</source>\n                <target>Exibir</target>\n            </trans-unit>\n            <trans-unit id=\"action.show_code\">\n                <source>action.show_code</source>\n                <target>Mostrar o código</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit\">\n                <source>action.edit</source>\n                <target>Editar</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_post\">\n                <source>action.edit_post</source>\n                <target>Editar o post</target>\n            </trans-unit>\n            <trans-unit id=\"action.save\">\n                <source>action.save</source>\n                <target>Salvar alterações</target>\n            </trans-unit>\n            <trans-unit id=\"action.delete_post\">\n                <source>action.delete_post</source>\n                <target>Excluir o post</target>\n            </trans-unit>\n            <trans-unit id=\"delete_post_modal.title\">\n                <source>delete_post_modal.title</source>\n                <target>Tem certeza que deseja excluir esse post?</target>\n            </trans-unit>\n            <trans-unit id=\"delete_post_modal.body\">\n                <source>delete_post_modal.body</source>\n                <target>Essa ação não pode ser desfeita.</target>\n            </trans-unit>\n            <trans-unit id=\"label.delete_post\">\n                <source>label.delete_post</source>\n                <target>Excluir o post</target>\n            </trans-unit>\n            <trans-unit id=\"label.cancel\">\n                <source>label.cancel</source>\n                <target>Cancelar</target>\n            </trans-unit>\n            <trans-unit id=\"action.create_post\">\n                <source>action.create_post</source>\n                <target>Criar um novo post</target>\n            </trans-unit>\n            <trans-unit id=\"label.create_post\">\n                <source>label.create_post</source>\n                <target>Criar um post</target>\n            </trans-unit>\n            <trans-unit id=\"action.back_to_list\">\n                <source>action.back_to_list</source>\n                <target>Voltar para a lista de posts</target>\n            </trans-unit>\n            <trans-unit id=\"action.publish_comment\">\n                <source>action.publish_comment</source>\n                <target>Publicar comentário</target>\n            </trans-unit>\n            <trans-unit id=\"action.sign_in\">\n                <source>action.sign_in</source>\n                <target>Entrar</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_app\">\n                <source>action.browse_app</source>\n                <target>Navegar na aplicação</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_admin\">\n                <source>action.browse_admin</source>\n                <target>Navegar na área administrativa</target>\n            </trans-unit>\n\n            <trans-unit id=\"label.title\">\n                <source>label.title</source>\n                <target>Título</target>\n            </trans-unit>\n            <trans-unit id=\"label.author\">\n                <source>label.author</source>\n                <target>Autor</target>\n            </trans-unit>\n            <trans-unit id=\"label.author_email\">\n                <source>label.author_email</source>\n                <target>Email do autor</target>\n            </trans-unit>\n            <trans-unit id=\"label.username\">\n                <source>label.username</source>\n                <target>Usuário</target>\n            </trans-unit>\n            <trans-unit id=\"label.password\">\n                <source>label.password</source>\n                <target>Senha</target>\n            </trans-unit>\n            <trans-unit id=\"label.role\">\n                <source>label.role</source>\n                <target>Role</target>\n            </trans-unit>\n            <trans-unit id=\"label.content\">\n                <source>label.content</source>\n                <target>Conteúdo</target>\n            </trans-unit>\n            <trans-unit id=\"label.summary\">\n                <source>label.summary</source>\n                <target>Sumário</target>\n            </trans-unit>\n            <trans-unit id=\"label.published_at\">\n                <source>label.published_at</source>\n                <target>Publicado em</target>\n            </trans-unit>\n            <trans-unit id=\"label.actions\">\n                <source>label.actions</source>\n                <target>Ações</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_new\">\n                <source>title.post_new</source>\n                <target>Criação do post</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_contents\">\n                <source>action.edit_contents</source>\n                <target>Editar conteúdo</target>\n            </trans-unit>\n\n            <trans-unit id=\"menu.post_list\">\n                <source>menu.post_list</source>\n                <target>Lista de posts</target>\n            </trans-unit>\n            <trans-unit id=\"menu.back_to_blog\">\n                <source>menu.back_to_blog</source>\n                <target>Voltar para o blog</target>\n            </trans-unit>\n            <trans-unit id=\"menu.homepage\">\n                <source>menu.homepage</source>\n                <target>Página inicial</target>\n            </trans-unit>\n            <trans-unit id=\"menu.admin\">\n                <source>menu.admin</source>\n                <target>Área Administrativa</target>\n            </trans-unit>\n            <trans-unit id=\"menu.logout\">\n                <source>menu.logout</source>\n                <target>Sair</target>\n            </trans-unit>\n\n            <trans-unit id=\"post.to_publish_a_comment\">\n                <source>post.to_publish_a_comment</source>\n                <target>para publicar um comentário</target>\n            </trans-unit>\n            <trans-unit id=\"post.num_comments\">\n                <source>post.num_comments</source>\n                <target>%count% comentário|%count% comentários</target>\n            </trans-unit>\n            <trans-unit id=\"post.commented_on\">\n                <source>post.commented_on</source>\n                <target>comentou em</target>\n            </trans-unit>\n            <trans-unit id=\"post.no_comments\">\n                <source>post.no_comments</source>\n                <target>Seja o primeiro a comentar nesse post.</target>\n            </trans-unit>\n            <trans-unit id=\"post.no_posts_found\">\n                <source>post.no_posts_found</source>\n                <target>Nenhum post encontrado.</target>\n            </trans-unit>\n            <trans-unit id=\"post.created_successfully\">\n                <source>post.created_successfully</source>\n                <target>Post criado com sucesso!</target>\n            </trans-unit>\n            <trans-unit id=\"post.updated_successfully\">\n                <source>post.updated_successfully</source>\n                <target>Post atualizado com sucesso!</target>\n            </trans-unit>\n            <trans-unit id=\"post.deleted_successfully\">\n                <source>post.deleted_successfully</source>\n                <target>Post excluído com sucesso!</target>\n            </trans-unit>\n\n            <trans-unit id=\"help.app_description\">\n                <source>help.app_description</source>\n                <target><![CDATA[Esta é uma <strong>aplicação de demonstração</strong> construída com o Symfony Framework para ilustrar a maneira recomendada de se desenvolver aplicações Symfony.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.show_code\">\n                <source>help.show_code</source>\n                <target><![CDATA[Clique nesse botão para exibir o código fonte do <strong>Controller</strong> e do <strong>template</strong> utilizados para renderizar esta página.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_app\">\n                <source>help.browse_app</source>\n                <target><![CDATA[Navegue pela <strong>área pública</strong> da aplicação de demonstração.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_admin\">\n                <source>help.browse_admin</source>\n                <target><![CDATA[Navegue pela <strong>área administrativa</strong> da aplicação de demonstração.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.login_users\">\n                <source>help.login_users</source>\n                <target>Experimente um dos usuários abaixo</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_user\">\n                <source>help.role_user</source>\n                <target>usuário comum</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_admin\">\n                <source>help.role_admin</source>\n                <target>administrador</target>\n            </trans-unit>\n            <trans-unit id=\"help.reload_fixtures\">\n                <source>help.reload_fixtures</source>\n                <target>Se esses usuários não funcionarem, recarregue as fixtures da aplicação executando esse comando no terminal:</target>\n            </trans-unit>\n            <trans-unit id=\"help.add_user\">\n                <source>help.add_user</source>\n                <target>Se quiser criar novos usuários, execute esse outro comando:</target>\n            </trans-unit>\n            <trans-unit id=\"help.more_information\">\n                <source>help.more_information</source>\n                <target><![CDATA[Para mais informações, visite a <a href=\"http://symfony.com/doc\">documentação do Symfony</a>.]]></target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/messages.ro.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"ro\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"note\">\n                <source>note</source>\n                <target>NOTĂ</target>\n            </trans-unit>\n            <trans-unit id=\"tip\">\n                <source>tip</source>\n                <target>SFAT</target>\n            </trans-unit>\n            <trans-unit id=\"not_available\">\n                <source>not_available</source>\n                <target>Indisponibil</target>\n            </trans-unit>\n            <trans-unit id=\"mit_license\">\n                <source>mit_license</source>\n                <target>Licenţă MIT</target>\n            </trans-unit>\n            <trans-unit id=\"previous\">\n                <source>Previous</source>\n                <target>Anterioare</target>\n            </trans-unit>\n            <trans-unit id=\"next\">\n                <source>Next</source>\n                <target>Următoare</target>\n            </trans-unit>\n\n            <trans-unit id=\"title.homepage\">\n                <source>title.homepage</source>\n                <target><![CDATA[Bine ai venit la aplicaţia <strong>Symfony Demo</strong>]]></target>\n            </trans-unit>\n            <trans-unit id=\"title.source_code\">\n                <source>title.source_code</source>\n                <target>Codul sursă folosit în această pagină</target>\n            </trans-unit>\n            <trans-unit id=\"title.controller_code\">\n                <source>title.controller_code</source>\n                <target>Codul din controler</target>\n            </trans-unit>\n            <trans-unit id=\"title.twig_template_code\">\n                <source>title.twig_template_code</source>\n                <target>Codul din şablonul Twig</target>\n            </trans-unit>\n            <trans-unit id=\"title.login\">\n                <source>title.login</source>\n                <target>Autentificare securizată</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_list\">\n                <source>title.post_list</source>\n                <target>Lista de articole</target>\n            </trans-unit>\n            <trans-unit id=\"title.edit_post\">\n                <source>title.edit_post</source>\n                <target>Modifică articolul #%id%</target>\n            </trans-unit>\n            <trans-unit id=\"title.add_comment\">\n                <source>title.add_comment</source>\n                <target>Adaugă un comentariu</target>\n            </trans-unit>\n            <trans-unit id=\"title.comment_error\">\n                <source>title.comment_error</source>\n                <target>A intervenit o eroare la publicarea comentariului tău</target>\n            </trans-unit>\n\n            <trans-unit id=\"action.show\">\n                <source>action.show</source>\n                <target>Vezi</target>\n            </trans-unit>\n            <trans-unit id=\"action.show_code\">\n                <source>action.show_code</source>\n                <target>Vezi codul sursă</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit\">\n                <source>action.edit</source>\n                <target>Modifică</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_post\">\n                <source>action.edit_post</source>\n                <target>Modifică articolul</target>\n            </trans-unit>\n            <trans-unit id=\"action.save\">\n                <source>action.save</source>\n                <target>Salvează modificările</target>\n            </trans-unit>\n            <trans-unit id=\"action.delete_post\">\n                <source>action.delete_post</source>\n                <target>Şterge articolul</target>\n            </trans-unit>\n            <trans-unit id=\"delete_post_modal.title\">\n                <source>delete_post_modal.title</source>\n                <target>Sunteți sigur că doriți ștergerea acestui articol?</target>\n            </trans-unit>\n            <trans-unit id=\"delete_post_modal.body\">\n                <source>delete_post_modal.body</source>\n                <target>Această acțiune nu poate fi anulată.</target>\n            </trans-unit>\n            <trans-unit id=\"label.delete_post\">\n                <source>label.delete_post</source>\n                <target>Șterge articolul</target>\n            </trans-unit>\n            <trans-unit id=\"label.cancel\">\n                <source>label.cancel</source>\n                <target>Anulează</target>\n            </trans-unit>\n            <trans-unit id=\"action.create_post\">\n                <source>action.create_post</source>\n                <target>Creează un articol nou</target>\n            </trans-unit>\n            <trans-unit id=\"label.create_post\">\n                <source>label.create_post</source>\n                <target>Creează un articol nou</target>\n            </trans-unit>\n            <trans-unit id=\"label.save_and_create_new\">\n                <source>label.save_and_create_new</source>\n                <target>Salvează și creează unul nou</target>\n            </trans-unit>\n            <trans-unit id=\"action.back_to_list\">\n                <source>action.back_to_list</source>\n                <target>Înapoi la lista de articole</target>\n            </trans-unit>\n            <trans-unit id=\"action.publish_comment\">\n                <source>action.publish_comment</source>\n                <target>Publică comentariu</target>\n            </trans-unit>\n            <trans-unit id=\"action.sign_in\">\n                <source>action.sign_in</source>\n                <target>Autentifică-te</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_app\">\n                <source>action.browse_app</source>\n                <target>Mergi la aplicaţie</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_admin\">\n                <source>action.browse_admin</source>\n                <target>Mergi la administrare</target>\n            </trans-unit>\n\n            <trans-unit id=\"label.title\">\n                <source>label.title</source>\n                <target>Titlu</target>\n            </trans-unit>\n            <trans-unit id=\"label.author\">\n                <source>label.author</source>\n                <target>Autor</target>\n            </trans-unit>\n            <trans-unit id=\"label.author_email\">\n                <source>label.author_email</source>\n                <target>Email autor</target>\n            </trans-unit>\n            <trans-unit id=\"label.username\">\n                <source>label.username</source>\n                <target>Utilizator</target>\n            </trans-unit>\n            <trans-unit id=\"label.password\">\n                <source>label.password</source>\n                <target>Parolă</target>\n            </trans-unit>\n            <trans-unit id=\"label.role\">\n                <source>label.role</source>\n                <target>Rol</target>\n            </trans-unit>\n            <trans-unit id=\"label.content\">\n                <source>label.content</source>\n                <target>Conţinut</target>\n            </trans-unit>\n            <trans-unit id=\"label.summary\">\n                <source>label.summary</source>\n                <target>Rezumat</target>\n            </trans-unit>\n            <trans-unit id=\"label.published_at\">\n                <source>label.published_at</source>\n                <target>Publicat la</target>\n            </trans-unit>\n            <trans-unit id=\"label.actions\">\n                <source>label.actions</source>\n                <target>Acţiuni</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_new\">\n                <source>title.post_new</source>\n                <target>Crearea unui articol nou</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_contents\">\n                <source>action.edit_contents</source>\n                <target>Modifică articolul</target>\n            </trans-unit>\n\n            <trans-unit id=\"menu.post_list\">\n                <source>menu.post_list</source>\n                <target>Lista de articole</target>\n            </trans-unit>\n            <trans-unit id=\"menu.back_to_blog\">\n                <source>menu.back_to_blog</source>\n                <target>Înapoi la blog</target>\n            </trans-unit>\n            <trans-unit id=\"menu.homepage\">\n                <source>menu.homepage</source>\n                <target>Prima pagină</target>\n            </trans-unit>\n            <trans-unit id=\"menu.admin\">\n                <source>menu.admin</source>\n                <target>Administrare</target>\n            </trans-unit>\n            <trans-unit id=\"menu.logout\">\n                <source>menu.logout</source>\n                <target>Ieşire</target>\n            </trans-unit>\n\n            <trans-unit id=\"post.to_publish_a_comment\">\n                <source>post.to_publish_a_comment</source>\n                <target>pentru a publica un comentariu</target>\n            </trans-unit>\n            <trans-unit id=\"post.num_comments\">\n                <source>post.num_comments</source>\n                <target>%count% comentariu|%count% comentarii</target>\n            </trans-unit>\n            <trans-unit id=\"post.commented_on\">\n                <source>post.commented_on</source>\n                <target>comentat la</target>\n            </trans-unit>\n            <trans-unit id=\"post.no_comments\">\n                <source>post.no_comments</source>\n                <target>Fii primul care comentează acest articol.</target>\n            </trans-unit>\n            <trans-unit id=\"post.no_posts_found\">\n                <source>post.no_posts_found</source>\n                <target>Nu s-au găsit articole.</target>\n            </trans-unit>\n            <trans-unit id=\"post.created_successfully\">\n                <source>post.created_successfully</source>\n                <target>Articol creat cu succes!</target>\n            </trans-unit>\n            <trans-unit id=\"post.updated_successfully\">\n                <source>post.updated_successfully</source>\n                <target>Articol modifica cu succes!</target>\n            </trans-unit>\n            <trans-unit id=\"post.deleted_successfully\">\n                <source>post.deleted_successfully</source>\n                <target>Articol șters cu succes!</target>\n            </trans-unit>\n\n            <trans-unit id=\"help.app_description\">\n                <source>help.app_description</source>\n                <target><![CDATA[Aceasta este o <strong>aplicaţie demonstrativă</strong> construită pe Platforma Symfony pentru a ilustra modul recomandata de a dezvolta aplicaţii Symfony.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.show_code\">\n                <source>help.show_code</source>\n                <target><![CDATA[Fă click pe acest buton pentru afişarea codului sursă din <strong>controlerul</strong> şi <strong>şablonul</strong> folosite în acestă pagină.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_app\">\n                <source>help.browse_app</source>\n                <target><![CDATA[Mergi la <strong>secţiunea publică</strong> a aplicaţiei demonstrative.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_admin\">\n                <source>help.browse_admin</source>\n                <target><![CDATA[Mergi la <strong>secţiunea administrativă</strong> a aplicaţiei demonstrative.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.login_users\">\n                <source>help.login_users</source>\n                <target>Încearcă oricare dintr următorii utilizatori</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_user\">\n                <source>help.role_user</source>\n                <target>utilizator simplu</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_admin\">\n                <source>help.role_admin</source>\n                <target>administrator</target>\n            </trans-unit>\n            <trans-unit id=\"help.reload_fixtures\">\n                <source>help.reload_fixtures</source>\n                <target>Dacă aceşti utilizatori nu funcţionează, reîncarcă datele fixe ale aplicaţiei (fixtures) prin executarea acestei comenzi în terminal:</target>\n            </trans-unit>\n            <trans-unit id=\"help.add_user\">\n                <source>help.add_user</source>\n                <target>Dacă doreşti să creezi utilizatori noi, execută această comandă în terminal:</target>\n            </trans-unit>\n            <trans-unit id=\"help.more_information\">\n                <source>help.more_information</source>\n                <target><![CDATA[Pentru mai multe informaţii, citeşte <a href=\"http://symfony.com/doc\">documentaţia Symfony</a>.]]></target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/messages.ru.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"ru\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"note\">\n                <source>note</source>\n                <target>ПРИМЕЧАНИЕ</target>\n            </trans-unit>\n            <trans-unit id=\"tip\">\n                <source>tip</source>\n                <target>СОВЕТ</target>\n            </trans-unit>\n            <trans-unit id=\"not_available\">\n                <source>not_available</source>\n                <target>Недоступно</target>\n            </trans-unit>\n            <trans-unit id=\"mit_license\">\n                <source>mit_license</source>\n                <target>MIT Лицензия</target>\n            </trans-unit>\n            <trans-unit id=\"previous\">\n                <source>Previous</source>\n                <target>Предыдущая</target>\n            </trans-unit>\n            <trans-unit id=\"next\">\n                <source>Next</source>\n                <target>Следующая</target>\n            </trans-unit>\n\n            <trans-unit id=\"title.homepage\">\n                <source>title.homepage</source>\n                <target><![CDATA[Добро пожаловать в <strong>Symfony Demo</strong> приложение]]></target>\n            </trans-unit>\n            <trans-unit id=\"title.source_code\">\n                <source>title.source_code</source>\n                <target>Исходный код, который использовался для отображения этой страницы</target>\n            </trans-unit>\n            <trans-unit id=\"title.controller_code\">\n                <source>title.controller_code</source>\n                <target>Код контроллера</target>\n            </trans-unit>\n            <trans-unit id=\"title.twig_template_code\">\n                <source>title.twig_template_code</source>\n                <target>Код шаблона Twig</target>\n            </trans-unit>\n            <trans-unit id=\"title.login\">\n                <source>title.login</source>\n                <target>Авторизация</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_list\">\n                <source>title.post_list</source>\n                <target>Список записей</target>\n            </trans-unit>\n            <trans-unit id=\"title.edit_post\">\n                <source>title.edit_post</source>\n                <target>Изменение записи #%id%</target>\n            </trans-unit>\n            <trans-unit id=\"title.add_comment\">\n                <source>title.add_comment</source>\n                <target>Добавить комментарий</target>\n            </trans-unit>\n            <trans-unit id=\"title.comment_error\">\n                <source>title.comment_error</source>\n                <target>Произошла ошибка во время публикации вашего комментария</target>\n            </trans-unit>\n\n            <trans-unit id=\"action.show\">\n                <source>action.show</source>\n                <target>Показать</target>\n            </trans-unit>\n            <trans-unit id=\"action.show_code\">\n                <source>action.show_code</source>\n                <target>Показать код</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit\">\n                <source>action.edit</source>\n                <target>Изменить</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_post\">\n                <source>action.edit_post</source>\n                <target>Изменить запись</target>\n            </trans-unit>\n            <trans-unit id=\"action.save\">\n                <source>action.save</source>\n                <target>Сохранить изменения</target>\n            </trans-unit>\n            <trans-unit id=\"action.delete_post\">\n                <source>action.delete_post</source>\n                <target>Удалить запись</target>\n            </trans-unit>\n            <trans-unit id=\"delete_post_modal.title\">\n                <source>delete_post_modal.title</source>\n                <target>Вы уверены, что хотите удалить эту запись?</target>\n            </trans-unit>\n            <trans-unit id=\"delete_post_modal.body\">\n                <source>delete_post_modal.body</source>\n                <target>Это действие не может быть отменено.</target>\n            </trans-unit>\n            <trans-unit id=\"label.delete_post\">\n                <source>label.delete_post</source>\n                <target>Удалить запись</target>\n            </trans-unit>\n            <trans-unit id=\"label.cancel\">\n                <source>label.cancel</source>\n                <target>Отменить</target>\n            </trans-unit>\n            <trans-unit id=\"action.create_post\">\n                <source>action.create_post</source>\n                <target>Создать новую запись</target>\n            </trans-unit>\n            <trans-unit id=\"label.create_post\">\n                <source>label.create_post</source>\n                <target>Создать запись</target>\n            </trans-unit>\n            <trans-unit id=\"label.save_and_create_new\">\n                <source>label.save_and_create_new</source>\n                <target>Сохранить и создать новую</target>\n            </trans-unit>\n            <trans-unit id=\"action.back_to_list\">\n                <source>action.back_to_list</source>\n                <target>Назад к списку записей</target>\n            </trans-unit>\n            <trans-unit id=\"action.publish_comment\">\n                <source>action.publish_comment</source>\n                <target>Опубликовать комментарий</target>\n            </trans-unit>\n            <trans-unit id=\"action.sign_in\">\n                <source>action.sign_in</source>\n                <target>Войти</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_app\">\n                <source>action.browse_app</source>\n                <target>Перейти в публичный раздел</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_admin\">\n                <source>action.browse_admin</source>\n                <target>Перейти в панель управления</target>\n            </trans-unit>\n\n            <trans-unit id=\"label.title\">\n                <source>label.title</source>\n                <target>Название</target>\n            </trans-unit>\n            <trans-unit id=\"label.author\">\n                <source>label.author</source>\n                <target>Автор</target>\n            </trans-unit>\n            <trans-unit id=\"label.author_email\">\n                <source>label.author_email</source>\n                <target>Email автора</target>\n            </trans-unit>\n            <trans-unit id=\"label.username\">\n                <source>label.username</source>\n                <target>Логин</target>\n            </trans-unit>\n            <trans-unit id=\"label.password\">\n                <source>label.password</source>\n                <target>Пароль</target>\n            </trans-unit>\n            <trans-unit id=\"label.role\">\n                <source>label.role</source>\n                <target>Роль</target>\n            </trans-unit>\n            <trans-unit id=\"label.content\">\n                <source>label.content</source>\n                <target>Содержание</target>\n            </trans-unit>\n            <trans-unit id=\"label.summary\">\n                <source>label.summary</source>\n                <target>Краткое содержание</target>\n            </trans-unit>\n            <trans-unit id=\"label.published_at\">\n                <source>label.published_at</source>\n                <target>Опубликовано</target>\n            </trans-unit>\n            <trans-unit id=\"label.actions\">\n                <source>label.actions</source>\n                <target>Действия</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_new\">\n                <source>title.post_new</source>\n                <target>Создание записи</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_contents\">\n                <source>action.edit_contents</source>\n                <target>Изменить содержание</target>\n            </trans-unit>\n\n            <trans-unit id=\"menu.post_list\">\n                <source>menu.post_list</source>\n                <target>Список записей</target>\n            </trans-unit>\n            <trans-unit id=\"menu.back_to_blog\">\n                <source>menu.back_to_blog</source>\n                <target>Назад к блогу</target>\n            </trans-unit>\n            <trans-unit id=\"menu.homepage\">\n                <source>menu.homepage</source>\n                <target>Главная страница</target>\n            </trans-unit>\n            <trans-unit id=\"menu.admin\">\n                <source>menu.admin</source>\n                <target>Панель управления</target>\n            </trans-unit>\n            <trans-unit id=\"menu.logout\">\n                <source>menu.logout</source>\n                <target>Выйти</target>\n            </trans-unit>\n\n            <trans-unit id=\"post.to_publish_a_comment\">\n                <source>post.to_publish_a_comment</source>\n                <target>опубликовать комментарий</target>\n            </trans-unit>\n            <trans-unit id=\"post.num_comments\">\n                <source>post.num_comments</source>\n                <target>%count% комментарий|%count% комментария|%count% комментариев</target>\n            </trans-unit>\n            <trans-unit id=\"post.commented_on\">\n                <source>post.commented_on</source>\n                <target>прокомментировано</target>\n            </trans-unit>\n            <trans-unit id=\"post.no_comments\">\n                <source>post.no_comments</source>\n                <target>Будьте первыми кто прокомментирует эту запись.</target>\n            </trans-unit>\n            <trans-unit id=\"post.no_posts_found\">\n                <source>post.no_posts_found</source>\n                <target>Ни одной записи не найдено.</target>\n            </trans-unit>\n            <trans-unit id=\"post.created_successfully\">\n                <source>post.created_successfully</source>\n                <target>Запись успешно создана!</target>\n            </trans-unit>\n            <trans-unit id=\"post.updated_successfully\">\n                <source>post.updated_successfully</source>\n                <target>Запись успешно обновлена!</target>\n            </trans-unit>\n            <trans-unit id=\"post.deleted_successfully\">\n                <source>post.deleted_successfully</source>\n                <target>Запись успешно удалена!</target>\n            </trans-unit>\n\n            <trans-unit id=\"help.app_description\">\n                <source>help.app_description</source>\n                <target><![CDATA[Это <strong>демо приложение</strong> создано на основе Symfony фреймворка для того, чтобы показать рекомендованный способ разработки Symfony приложений.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.show_code\">\n                <source>help.show_code</source>\n                <target><![CDATA[Нажмите на эту кнопку для просмотра исходного кода <strong>Контроллера</strong> и <strong>шаблона</strong>, которые использовались для отображения этой страницы.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_app\">\n                <source>help.browse_app</source>\n                <target><![CDATA[Перейти в <strong>публичный раздел</strong> демо приложения.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_admin\">\n                <source>help.browse_admin</source>\n                <target><![CDATA[Перейти в <strong>панель управления</strong> демо приложения.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.login_users\">\n                <source>help.login_users</source>\n                <target>Используйте любого из следующих пользователей</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_user\">\n                <source>help.role_user</source>\n                <target>обычный пользователь</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_admin\">\n                <source>help.role_admin</source>\n                <target>администратор</target>\n            </trans-unit>\n            <trans-unit id=\"help.reload_fixtures\">\n                <source>help.reload_fixtures</source>\n                <target>Если эти пользователи не работают, перезагрузите фикстуры приложения, выполнив в консоли следующую команду:</target>\n            </trans-unit>\n            <trans-unit id=\"help.add_user\">\n                <source>help.add_user</source>\n                <target>Если вы хотите создать новых пользователей, воспользуйтесь следующей командой:</target>\n            </trans-unit>\n            <trans-unit id=\"help.more_information\">\n                <source>help.more_information</source>\n                <target><![CDATA[Для дополнительной информации обратитесь к <a href=\"http://symfony.com/doc\">Symfony документации</a>.]]></target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/messages.uk.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"uk\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"note\">\n                <source>note</source>\n                <target>ПРИМІТКА</target>\n            </trans-unit>\n            <trans-unit id=\"tip\">\n                <source>tip</source>\n                <target>ПОРАДА</target>\n            </trans-unit>\n            <trans-unit id=\"not_available\">\n                <source>not_available</source>\n                <target>Недоступно</target>\n            </trans-unit>\n            <trans-unit id=\"mit_license\">\n                <source>mit_license</source>\n                <target>MIT Ліцензія</target>\n            </trans-unit>\n            <trans-unit id=\"previous\">\n                <source>Previous</source>\n                <target>Попередня</target>\n            </trans-unit>\n            <trans-unit id=\"next\">\n                <source>Next</source>\n                <target>Наступна</target>\n            </trans-unit>\n\n            <trans-unit id=\"title.homepage\">\n                <source>title.homepage</source>\n                <target><![CDATA[Ласкаво просимо до <strong>Symfony Demo</strong> додатку]]></target>\n            </trans-unit>\n            <trans-unit id=\"title.source_code\">\n                <source>title.source_code</source>\n                <target>Вихідний код, який використовувався для побудови цієї сторінки</target>\n            </trans-unit>\n            <trans-unit id=\"title.controller_code\">\n                <source>title.controller_code</source>\n                <target>Код контролеру</target>\n            </trans-unit>\n            <trans-unit id=\"title.twig_template_code\">\n                <source>title.twig_template_code</source>\n                <target>Код шаблону Twig</target>\n            </trans-unit>\n            <trans-unit id=\"title.login\">\n                <source>title.login</source>\n                <target>Авторизація</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_list\">\n                <source>title.post_list</source>\n                <target>Список записів</target>\n            </trans-unit>\n            <trans-unit id=\"title.edit_post\">\n                <source>title.edit_post</source>\n                <target>Редагування запису #%id%</target>\n            </trans-unit>\n            <trans-unit id=\"title.add_comment\">\n                <source>title.add_comment</source>\n                <target>Додати коментар</target>\n            </trans-unit>\n            <trans-unit id=\"title.comment_error\">\n                <source>title.comment_error</source>\n                <target>Виникла помилка під час публікації вашого коментаря</target>\n            </trans-unit>\n\n            <trans-unit id=\"action.show\">\n                <source>action.show</source>\n                <target>Показати</target>\n            </trans-unit>\n            <trans-unit id=\"action.show_code\">\n                <source>action.show_code</source>\n                <target>Показати код</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit\">\n                <source>action.edit</source>\n                <target>Редагувати</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_post\">\n                <source>action.edit_post</source>\n                <target>Редагувати запис</target>\n            </trans-unit>\n            <trans-unit id=\"action.save\">\n                <source>action.save</source>\n                <target>Зберегти зміни</target>\n            </trans-unit>\n            <trans-unit id=\"action.delete_post\">\n                <source>action.delete_post</source>\n                <target>Видалити запис</target>\n            </trans-unit>\n            <trans-unit id=\"delete_post_modal.title\">\n                <source>delete_post_modal.title</source>\n                <target>Ви впевнені, що хочете видалити цей запис?</target>\n            </trans-unit>\n            <trans-unit id=\"delete_post_modal.body\">\n                <source>delete_post_modal.body</source>\n                <target>Ця дія не може бути скасована.</target>\n            </trans-unit>\n            <trans-unit id=\"label.delete_post\">\n                <source>label.delete_post</source>\n                <target>Видалити запис</target>\n            </trans-unit>\n            <trans-unit id=\"label.cancel\">\n                <source>label.cancel</source>\n                <target>Скасувати</target>\n            </trans-unit>\n            <trans-unit id=\"action.create_post\">\n                <source>action.create_post</source>\n                <target>Створити новий запис</target>\n            </trans-unit>\n            <trans-unit id=\"label.create_post\">\n                <source>label.create_post</source>\n                <target>Створити запис</target>\n            </trans-unit>\n            <trans-unit id=\"label.save_and_create_new\">\n                <source>label.save_and_create_new</source>\n                <target>Зберегти та створити новий</target>\n            </trans-unit>\n            <trans-unit id=\"action.back_to_list\">\n                <source>action.back_to_list</source>\n                <target>Назад до списку записів</target>\n            </trans-unit>\n            <trans-unit id=\"action.publish_comment\">\n                <source>action.publish_comment</source>\n                <target>Опублікувати коментар</target>\n            </trans-unit>\n            <trans-unit id=\"action.sign_in\">\n                <source>action.sign_in</source>\n                <target>Ввійти</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_app\">\n                <source>action.browse_app</source>\n                <target>Перейти до публічного розділу</target>\n            </trans-unit>\n            <trans-unit id=\"action.browse_admin\">\n                <source>action.browse_admin</source>\n                <target>Перейти до панелі керування</target>\n            </trans-unit>\n\n            <trans-unit id=\"label.title\">\n                <source>label.title</source>\n                <target>Назва</target>\n            </trans-unit>\n            <trans-unit id=\"label.author\">\n                <source>label.author</source>\n                <target>Автор</target>\n            </trans-unit>\n            <trans-unit id=\"label.author_email\">\n                <source>label.author_email</source>\n                <target>Email автора</target>\n            </trans-unit>\n            <trans-unit id=\"label.username\">\n                <source>label.username</source>\n                <target>Логін</target>\n            </trans-unit>\n            <trans-unit id=\"label.password\">\n                <source>label.password</source>\n                <target>Пароль</target>\n            </trans-unit>\n            <trans-unit id=\"label.role\">\n                <source>label.role</source>\n                <target>Роль</target>\n            </trans-unit>\n            <trans-unit id=\"label.content\">\n                <source>label.content</source>\n                <target>Зміст</target>\n            </trans-unit>\n            <trans-unit id=\"label.summary\">\n                <source>label.summary</source>\n                <target>Короткий зміст</target>\n            </trans-unit>\n            <trans-unit id=\"label.published_at\">\n                <source>label.published_at</source>\n                <target>Опубліковано</target>\n            </trans-unit>\n            <trans-unit id=\"label.actions\">\n                <source>label.actions</source>\n                <target>Дії</target>\n            </trans-unit>\n            <trans-unit id=\"title.post_new\">\n                <source>title.post_new</source>\n                <target>Створення запису</target>\n            </trans-unit>\n            <trans-unit id=\"action.edit_contents\">\n                <source>action.edit_contents</source>\n                <target>Редагувати зміст</target>\n            </trans-unit>\n\n            <trans-unit id=\"menu.post_list\">\n                <source>menu.post_list</source>\n                <target>Список записів</target>\n            </trans-unit>\n            <trans-unit id=\"menu.back_to_blog\">\n                <source>menu.back_to_blog</source>\n                <target>Назад до блогу</target>\n            </trans-unit>\n            <trans-unit id=\"menu.homepage\">\n                <source>menu.homepage</source>\n                <target>Головна сторінка</target>\n            </trans-unit>\n            <trans-unit id=\"menu.admin\">\n                <source>menu.admin</source>\n                <target>Панель керування</target>\n            </trans-unit>\n            <trans-unit id=\"menu.logout\">\n                <source>menu.logout</source>\n                <target>Вийти</target>\n            </trans-unit>\n\n            <trans-unit id=\"post.to_publish_a_comment\">\n                <source>post.to_publish_a_comment</source>\n                <target>опублікувати коментар</target>\n            </trans-unit>\n            <trans-unit id=\"post.num_comments\">\n                <source>post.num_comments</source>\n                <target>%count% коментар|%count% коментаря|%count% коментарів</target>\n            </trans-unit>\n            <trans-unit id=\"post.commented_on\">\n                <source>post.commented_on</source>\n                <target>прокоментовано</target>\n            </trans-unit>\n            <trans-unit id=\"post.no_comments\">\n                <source>post.no_comments</source>\n                <target>Будьте першими, хто прокоментує цей запис.</target>\n            </trans-unit>\n            <trans-unit id=\"post.no_posts_found\">\n                <source>post.no_posts_found</source>\n                <target>Жодного запису не знайдено.</target>\n            </trans-unit>\n            <trans-unit id=\"post.created_successfully\">\n                <source>post.created_successfully</source>\n                <target>Запис успішно створений!</target>\n            </trans-unit>\n            <trans-unit id=\"post.updated_successfully\">\n                <source>post.updated_successfully</source>\n                <target>Запис успішно оновлений!</target>\n            </trans-unit>\n            <trans-unit id=\"post.deleted_successfully\">\n                <source>post.deleted_successfully</source>\n                <target>Запис успішно видалений!</target>\n            </trans-unit>\n\n            <trans-unit id=\"help.app_description\">\n                <source>help.app_description</source>\n                <target><![CDATA[Цей <strong>демо додаток</strong> створено на основі Symfony фреймворку для того, щоб показати рекомендований спосіб розробки Symfony додатків.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.show_code\">\n                <source>help.show_code</source>\n                <target><![CDATA[Натисніть на цю кнопку для перегляду вихідного коду <strong>контролеру</strong> та <strong>шаблону</strong>, які використовувалися для побудови цієї сторінки.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_app\">\n                <source>help.browse_app</source>\n                <target><![CDATA[Перейти до <strong>публічного розділу</strong> демо додатку.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.browse_admin\">\n                <source>help.browse_admin</source>\n                <target><![CDATA[Перейти до <strong>панелі керування</strong> демо додатку.]]></target>\n            </trans-unit>\n            <trans-unit id=\"help.login_users\">\n                <source>help.login_users</source>\n                <target>Використовуйте будь-якого з наступних користувачів</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_user\">\n                <source>help.role_user</source>\n                <target>звичайний користувач</target>\n            </trans-unit>\n            <trans-unit id=\"help.role_admin\">\n                <source>help.role_admin</source>\n                <target>адміністратор</target>\n            </trans-unit>\n            <trans-unit id=\"help.reload_fixtures\">\n                <source>help.reload_fixtures</source>\n                <target>Якщо ці користувачі не працюють, перезавантажте фікстури додатку, виконавши в консолі наступну команду:</target>\n            </trans-unit>\n            <trans-unit id=\"help.add_user\">\n                <source>help.add_user</source>\n                <target>Якщо ви хочете створити нових користувачів, скористайтеся наступною командою:</target>\n            </trans-unit>\n            <trans-unit id=\"help.more_information\">\n                <source>help.more_information</source>\n                <target><![CDATA[Для додаткової інформації зверніться до <a href=\"http://symfony.com/doc\">Symfony документації</a>.]]></target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/validators.ca.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"ca\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"post.blank_summary\">\n                <source>post.blank_summary</source>\n                <target>No és possible deixar buit el resum de l'article.</target>\n            </trans-unit>\n            <trans-unit id=\"post.blank_content\">\n                <source>post.blank_content</source>\n                <target>No és possible deixar buit el contingut de l'article.</target>\n            </trans-unit>\n            <trans-unit id=\"post.too_short_content\">\n                <source>post.too_short_content</source>\n                <target>El contingut de l'article és massa curt ({{ limit }} caràcters com a mínim)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.blank\">\n                <source>comment.blank</source>\n                <target>No és possible deixar buit el contingut del comentari.</target>\n            </trans-unit>\n            <trans-unit id=\"comment.too_short\">\n                <source>comment.too_short</source>\n                <target>El comentari és massa curt ({{ limit }} caràcters com a mínim)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.too_long\">\n                <source>comment.too_long</source>\n                <target>El comentari és massa llarg ({{ limit }} caràcters com a màxim)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.is_spam\">\n                <source>comment.is_spam</source>\n                <target>El contingut del comentari es considera spam.</target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/validators.cs.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"cs\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"post.blank_summary\">\n                <source>post.blank_summary</source>\n                <target>Napište shrnutí příspěvku!</target>\n            </trans-unit>\n            <trans-unit id=\"post.too_short_content\">\n                <source>post.too_short_content</source>\n                <target>Příspěvek je příliš krátký (musí mít minimálně {{ limit }} znak)|Příspěvek je příliš krátký (musí mít minimálně {{ limit }} znaky)|Příspěvek je příliš krátký (musí mít minimálně {{ limit }} znaků)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.blank\">\n                <source>comment.blank</source>\n                <target>Prosím, napište text komentáře!</target>\n            </trans-unit>\n            <trans-unit id=\"comment.too_short\">\n                <source>comment.too_short</source>\n                <target>Komentář je příliš krátký (musí mít minimálně {{ limit }} znak)|Komentář je příliš krátký (musí mít minimálně {{ limit }} znaky)|Komentář je příliš krátký (musí mít minimálně {{ limit }} znaků)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.too_long\">\n                <source>comment.too_long</source>\n                <target>Komentář je příliš dlouhý (musí mít maximálně {{ limit }} znak)|Komentář je příliš dlouhý (musí mít maximálně {{ limit }} znaky)|Komentář je příliš dlouhý (musí mít maximálně {{ limit }} znaků)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.is_spam\">\n                <source>comment.is_spam</source>\n                <target>Obsah tohoto komentáře je považován za spam.</target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/validators.de.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"de\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n        <trans-unit id=\"post.blank_summary\">\n            <source>post.blank_summary</source>\n            <target>Gib deinem Beitrag eine Zusammenfassung!</target>\n        </trans-unit>\n        <trans-unit id=\"post.blank_content\">\n            <source>post.blank_content</source>\n            <target>Dein Beitrag sollte einen Inhalt haben!</target>\n        </trans-unit>\n        <trans-unit id=\"post.too_short_content\">\n            <source>post.too_short_content</source>\n            <target>Der Beitragsinhalt ist zu kurz (mindestens {{ limit }} Zeichen)</target>\n        </trans-unit>\n        <trans-unit id=\"comment.blank\">\n            <source>comment.blank</source>\n            <target>Bitte gib einen Kommentar ein!</target>\n        </trans-unit>\n        <trans-unit id=\"comment.too_short\">\n            <source>comment.too_short</source>\n            <target>Der Kommentar ist zu kurz (mindestens {{ limit }} Zeichen)</target>\n        </trans-unit>\n        <trans-unit id=\"comment.too_long\">\n            <source>comment.too_long</source>\n            <target>Der Kommentar ist zu lang (maximal {{ limit }} Zeichen)</target>\n        </trans-unit>\n        <trans-unit id=\"comment.is_spam\">\n            <source>comment.is_spam</source>\n            <target>Der Inhalt des Kommentars wird als Spam eingestuft.</target>\n        </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/validators.en.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"en\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"post.blank_summary\">\n                <source>post.blank_summary</source>\n                <target>Give your post a summary!</target>\n            </trans-unit>\n            <trans-unit id=\"post.blank_content\">\n                <source>post.blank_content</source>\n                <target>Your post should have some content!</target>\n            </trans-unit>\n            <trans-unit id=\"post.too_short_content\">\n                <source>post.too_short_content</source>\n                <target>Post content is too short ({{ limit }} characters minimum)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.blank\">\n                <source>comment.blank</source>\n                <target>Please don't leave your comment blank!</target>\n            </trans-unit>\n            <trans-unit id=\"comment.too_short\">\n                <source>comment.too_short</source>\n                <target>Comment is too short ({{ limit }} characters minimum)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.too_long\">\n                <source>comment.too_long</source>\n                <target>Comment is too long ({{ limit }} characters maximum)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.is_spam\">\n                <source>comment.is_spam</source>\n                <target>The content of this comment is considered spam.</target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/validators.es.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"es\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"post.blank_summary\">\n                <source>post.blank_summary</source>\n                <target>No es posible dejar el resumen del artículo vacío.</target>\n            </trans-unit>\n            <trans-unit id=\"post.blank_content\">\n                <source>post.blank_content</source>\n                <target>No es posible dejar el contenido del artículo vacío.</target>\n            </trans-unit>\n            <trans-unit id=\"post.too_short_content\">\n                <source>post.too_short_content</source>\n                <target>El contenido del artículo es demasiado corto ({{ limit }} caracteres como mínimo)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.blank\">\n                <source>comment.blank</source>\n                <target>No es posible dejar el contenido del comentario vacío.</target>\n            </trans-unit>\n            <trans-unit id=\"comment.too_short\">\n                <source>comment.too_short</source>\n                <target>El comentario es demasiado corto ({{ limit }} caracteres como mínimo)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.too_long\">\n                <source>comment.too_long</source>\n                <target>El comentario es demasiado largo ({{ limit }} caracteres como máximo)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.is_spam\">\n                <source>comment.is_spam</source>\n                <target>El contenido del comentario se considera spam.</target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/validators.fr.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"fr\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"post.blank_summary\">\n                <source>post.blank_summary</source>\n                <target>Veuillez donner un résumé à votre post.</target>\n            </trans-unit>\n            <trans-unit id=\"post.blank_content\">\n                <source>post.blank_content</source>\n                <target>Veuillez donner un contenu à votre post.</target>\n            </trans-unit>\n            <trans-unit id=\"post.too_short_content\">\n                <source>post.too_short_content</source>\n                <target>Le contenu de votre post est trop court ({{ limit }} caractères minimum)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.blank\">\n                <source>comment.blank</source>\n                <target>Veuillez ne pas laisser votre commentaire vide.</target>\n            </trans-unit>\n            <trans-unit id=\"comment.too_short\">\n                <source>comment.too_short</source>\n                <target>Votre commentaire est trop court ({{ limit }} caractères minimum)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.too_long\">\n                <source>comment.too_long</source>\n                <target>Votre commentaire est trop long ({{ limit }} caractères maximum)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.is_spam\">\n                <source>comment.is_spam</source>\n                <target>Le contenu de votre commentaire est considéré comme du spam.</target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/validators.id.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"en\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"post.blank_summary\">\n                <source>post.blank_summary</source>\n                <target>Beri posting anda ringkasan!</target>\n            </trans-unit>\n            <trans-unit id=\"post.blank_content\">\n                <source>post.blank_content</source>\n                <target>Posting anda harus mempunyai konten!</target>\n            </trans-unit>\n            <trans-unit id=\"post.too_short_content\">\n                <source>post.too_short_content</source>\n                <target>Konten terlalu singkat (Minimal {{ limit }} karakter)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.blank\">\n                <source>comment.blank</source>\n                <target>Mohon jangan tinggalkan komentar kosong!</target>\n            </trans-unit>\n            <trans-unit id=\"comment.too_short\">\n                <source>comment.too_short</source>\n                <target>Komentar terlalu singkat (Minimal {{ limit }} karakter)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.too_long\">\n                <source>comment.too_long</source>\n                <target>Komentar terlalu panjang (Maksimal {{ limit }} karakter)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.is_spam\">\n                <source>comment.is_spam</source>\n                <target>Konten komentar ini dianggap sebagai spam.</target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/validators.it.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"it\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"post.blank_summary\">\n                <source>post.blank_summary</source>\n                <target>Da' una descrizione al tuo post!</target>\n            </trans-unit>\n            <trans-unit id=\"post.blank_content\">\n                <source>post.blank_content</source>\n                <target>Da' un contenuto al tuo post!</target>\n            </trans-unit>\n            <trans-unit id=\"post.too_short_content\">\n                <source>post.too_short_content</source>\n                <target>Il contenuto del post è troppo breve (minimo {{ limit }} caratteri)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.blank\">\n                <source>comment.blank</source>\n                <target>Per favore non lasciare in bianco il tuo commento!</target>\n            </trans-unit>\n            <trans-unit id=\"comment.too_short\">\n                <source>comment.too_short</source>\n                <target>Il commento è troppo breve (minimo {{ limit }} caratteri)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.too_long\">\n                <source>comment.too_long</source>\n                <target>Il commento è troppo lungo (massimo {{ limit }} caratteri)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.is_spam\">\n                <source>comment.is_spam</source>\n                <target>Il contenuto di questo commento è considerato come spam.</target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/validators.ja.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"ja\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"post.blank_summary\">\n                <source>post.blank_summary</source>\n                <target>要約を入力してください。</target>\n            </trans-unit>\n            <trans-unit id=\"post.blank_content\">\n                <source>post.blank_content</source>\n                <target>本文を入力してください。</target>\n            </trans-unit>\n            <trans-unit id=\"post.too_short_content\">\n                <source>post.too_short_content</source>\n                <target>本文が短すぎます ({{ limit }} 文字以上必要です)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.blank\">\n                <source>comment.blank</source>\n                <target>コメントを入力してください。</target>\n            </trans-unit>\n            <trans-unit id=\"comment.too_short\">\n                <source>comment.too_short</source>\n                <target>コメントが短すぎます ({{ limit }} 文字以上必要です)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.too_long\">\n                <source>comment.too_long</source>\n                <target>コメントが長すぎます ({{ limit }} 文字以下にしてください)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.is_spam\">\n                <source>comment.is_spam</source>\n                <target>コメントの内容がスパムと判定されました。</target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/validators.nl.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"en\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"post.blank_summary\">\n                <source>post.blank_summary</source>\n                <target>Geef uw bericht een samenvatting.</target>\n            </trans-unit>\n            <trans-unit id=\"post.blank_content\">\n                <source>post.blank_content</source>\n                <target>Uw bericht heeft nog geen inhoud.</target>\n            </trans-unit>\n            <trans-unit id=\"post.too_short_content\">\n                <source>post.too_short_content</source>\n                <target>Bericht inhoud is te kort (minimaal {{ limit }} karakters)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.blank\">\n                <source>comment.blank</source>\n                <target>Vul alstublieft een reactie in.</target>\n            </trans-unit>\n            <trans-unit id=\"comment.too_short\">\n                <source>comment.too_short</source>\n                <target>Reactie is te kort (minimaal {{ limit }} karakters)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.too_long\">\n                <source>comment.too_long</source>\n                <target>Reactie is te lang (maximaal {{ limit }} karakters)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.is_spam\">\n                <source>comment.is_spam</source>\n                <target>De inhoud van deze reactie wordt als spam gemarkeerd.</target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/validators.pl.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"pl\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"post.blank_summary\">\n                <source>post.blank_summary</source>\n                <target>Dodaj podsumowanie Twojego artykułu!</target>\n            </trans-unit>\n            <trans-unit id=\"post.blank_content\">\n                <source>post.blank_content</source>\n                <target>Treść artykułu nie może być pusta!</target>\n            </trans-unit>\n            <trans-unit id=\"post.too_short_content\">\n                <source>post.too_short_content</source>\n                <target>Treść artykułu jest za krótka (minimum: {{ limit }} znaków)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.blank\">\n                <source>comment.blank</source>\n                <target>Pole komentarza nie może być puste!</target>\n            </trans-unit>\n            <trans-unit id=\"comment.too_short\">\n                <source>comment.too_short</source>\n                <target>Twój komentarz jest za krótki (minimum: {{ limit }} znaków)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.too_long\">\n                <source>comment.too_long</source>\n                <target>Twój komentarz jest za długi (maksimum: {{ limit }} znaków)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.is_spam\">\n                <source>comment.is_spam</source>\n                <target>Twój komentarz został uznany za spam.</target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/validators.pt_BR.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"pt-BR\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"post.blank_summary\">\n                <source>post.blank_summary</source>\n                <target>Informe um sumário para o seu post!</target>\n            </trans-unit>\n            <trans-unit id=\"post.blank_content\">\n                <source>post.blank_content</source>\n                <target>Informe um conteúdo para o seu post!</target>\n            </trans-unit>\n            <trans-unit id=\"post.too_short_content\">\n                <source>post.too_short_content</source>\n                <target>O conteúdo do post está muito curto (mínimo de {{ limit }} caracteres)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.blank\">\n                <source>comment.blank</source>\n                <target>Por favor, não deixe seu comentário vazio!</target>\n            </trans-unit>\n            <trans-unit id=\"comment.too_short\">\n                <source>comment.too_short</source>\n                <target>O comentário está muito curto (mínimo de {{ limit }} caracteres)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.too_long\">\n                <source>comment.too_long</source>\n                <target>O comentário está muito grande (máximo de {{ limit }} caracteres)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.is_spam\">\n                <source>comment.is_spam</source>\n                <target>O conteúdo desse comentário é considerado spam.</target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/validators.ro.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"ro\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"post.blank_summary\">\n                <source>post.blank_summary</source>\n                <target>Dă articolului tău un rezumat!</target>\n            </trans-unit>\n            <trans-unit id=\"post.blank_content\">\n                <source>post.blank_content</source>\n                <target>Articolul ar trebui să aibe conținut!</target>\n            </trans-unit>\n            <trans-unit id=\"post.too_short_content\">\n                <source>post.too_short_content</source>\n                <target>Conţinutul articolului este prea scurt (minimum {{ limit }} caractere)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.blank\">\n                <source>comment.blank</source>\n                <target>Te rugăm nu lăsa comentariul tău necompletat!</target>\n            </trans-unit>\n            <trans-unit id=\"comment.too_short\">\n                <source>comment.too_short</source>\n                <target>Comentariul este prea scurt (minimum {{ limit }} caractere)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.too_long\">\n                <source>comment.too_long</source>\n                <target>Comentariul este prea lung (maximum {{ limit }} caractere)</target>\n            </trans-unit>\n            <trans-unit id=\"comment.is_spam\">\n                <source>comment.is_spam</source>\n                <target>Conţinutul acestui comentariu este considerat spam.</target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/validators.ru.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"ru\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"post.blank_summary\">\n                <source>post.blank_summary</source>\n                <target>Введите краткое содержание вашей записи!</target>\n            </trans-unit>\n            <trans-unit id=\"post.blank_content\">\n                <source>post.blank_content</source>\n                <target>Ваша запись должна содержать хоть какое-то содержание!</target>\n            </trans-unit>\n            <trans-unit id=\"post.too_short_content\">\n                <source>post.too_short_content</source>\n                <target>Содержание записи слишком короткое (минимум {{ limit }} символов).</target>\n            </trans-unit>\n            <trans-unit id=\"comment.blank\">\n                <source>comment.blank</source>\n                <target>Пожалуйста, не оставляйте текст комментария пустым!</target>\n            </trans-unit>\n            <trans-unit id=\"comment.too_short\">\n                <source>comment.too_short</source>\n                <target>Комментарий слишком короткий, (минимум {{ limit }} символов).</target>\n            </trans-unit>\n            <trans-unit id=\"comment.too_long\">\n                <source>comment.too_long</source>\n                <target>Комментарий слишком длинный, (максимум {{ limit }} символов).</target>\n            </trans-unit>\n            <trans-unit id=\"comment.is_spam\">\n                <source>comment.is_spam</source>\n                <target>Содержание этого комментария было расценено как спам.</target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/translations/validators.uk.xliff",
    "content": "<?xml version=\"1.0\"?>\n<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n    <file source-language=\"en\" target-language=\"uk\" datatype=\"plaintext\" original=\"file.ext\">\n        <body>\n            <trans-unit id=\"post.blank_summary\">\n                <source>post.blank_summary</source>\n                <target>Введіть короткий зміст вашого запису!</target>\n            </trans-unit>\n            <trans-unit id=\"post.blank_content\">\n                <source>post.blank_content</source>\n                <target>Ваш запис повинен містити хоч якийсь зміст!</target>\n            </trans-unit>\n            <trans-unit id=\"post.too_short_content\">\n                <source>post.too_short_content</source>\n                <target>Зміст запису занадто короткий (мінімум {{limit}} символів).</target>\n            </trans-unit>\n            <trans-unit id=\"comment.blank\">\n                <source>comment.blank</source>\n                <target>Будь ласка, не залишайте текст коментаря порожнім!</target>\n            </trans-unit>\n            <trans-unit id=\"comment.too_short\">\n                <source>comment.too_short</source>\n                <target>Коментар занадто короткий, (мінімум {{limit}} символів).</target>\n            </trans-unit>\n            <trans-unit id=\"comment.too_long\">\n                <source>comment.too_long</source>\n                <target>Коментар занадто довгий, (максимум {{limit}} символів).</target>\n            </trans-unit>\n            <trans-unit id=\"comment.is_spam\">\n                <source>comment.is_spam</source>\n                <target>Зміст цього коментаря було розцінено як спам.</target>\n            </trans-unit>\n        </body>\n    </file>\n</xliff>\n"
  },
  {
    "path": "app/Resources/views/admin/blog/_form.html.twig",
    "content": "{#\n    By default, forms enable client-side validation. This means that you can't\n    test the server-side validation errors from the browser. To temporarily\n    disable this validation, add the 'novalidate' attribute:\n\n    {{ form_start(form, { attr: { novalidate: 'novalidate' } }) }}\n#}\n\n{% if show_confirmation|default(false) %}\n    {% set attr = {'data-confirmation': 'true'} %}\n    {{ include('blog/_delete_post_confirmation.html.twig') }}\n{% endif %}\n\n{{ form_start(form, { attr: attr|default({}) }) }}\n    {{ form_widget(form) }}\n\n    <input type=\"submit\" value=\"{{ button_label|default('label.create_post'|trans) }}\"\n           class=\"{{ button_css|default(\"btn btn-primary\") }}\" />\n\n    {% if include_back_to_home_link|default(false) %}\n        <a href=\"{{ path('admin_post_index') }}\" class=\"btn btn-link\">\n            {{ 'action.back_to_list'|trans }}\n        </a>\n    {% endif %}\n{{ form_end(form) }}\n"
  },
  {
    "path": "app/Resources/views/admin/blog/edit.html.twig",
    "content": "{% extends 'admin/layout.html.twig' %}\n\n{% block body_id 'admin_post_edit' %}\n\n{% block main %}\n    <h1>{{ 'title.edit_post'|trans({'%id%': post.id}) }}</h1>\n\n    {{ include('default/_flash_messages.html.twig') }}\n\n    {{ include('admin/blog/_form.html.twig', {\n        form: edit_form,\n        button_label: 'action.save'|trans,\n        include_back_to_home_link: true,\n    }, with_context = false) }}\n{% endblock %}\n\n{% block sidebar %}\n    <div class=\"section actions\">\n        {{ include('admin/blog/_form.html.twig', {\n            form: delete_form,\n            button_label: 'action.delete_post'|trans,\n            button_css: 'btn btn-lg btn-block btn-danger',\n            show_confirmation: true,\n        }, with_context = false) }}\n    </div>\n\n    {{ parent() }}\n\n    {{ show_source_code(_self) }}\n{% endblock %}\n"
  },
  {
    "path": "app/Resources/views/admin/blog/index.html.twig",
    "content": "{% extends 'admin/layout.html.twig' %}\n\n{% block body_id 'admin_post_index' %}\n\n{% block main %}\n    <h1>{{ 'title.post_list'|trans }}</h1>\n\n    <table class=\"table table-striped\">\n        <thead>\n            <tr>\n                <th>{{ 'label.title'|trans }}</th>\n                <th><i class=\"fa fa-user\"></i> {{ 'label.author'|trans }}</th>\n                <th><i class=\"fa fa-calendar\"></i> {{ 'label.published_at'|trans }}</th>\n                <th><i class=\"fa fa-cogs\"></i> {{ 'label.actions'|trans }}</th>\n            </tr>\n        </thead>\n        <tbody>\n        {% for post in posts %}\n            <tr>\n                <td>{{ post.title }}</td>\n                <td>{{ post.authorEmail }}</td>\n                <td>{% if post.publishedAt %}{{ post.publishedAt|localizeddate('short', 'short') }}{% endif %}</td>\n                <td>\n                    <div class=\"item-actions\">\n                        <a href=\"{{ path('admin_post_show', { id: post.id }) }}\" class=\"btn btn-sm btn-default\">\n                            {{ 'action.show'|trans }}\n                        </a>\n\n                        {% if post.isAuthor(app.user) %}\n                            <a href=\"{{ path('admin_post_edit', { id: post.id }) }}\" class=\"btn btn-sm btn-primary\">\n                                <i class=\"fa fa-edit\"></i> {{ 'action.edit'|trans }}\n                            </a>\n                        {% endif %}\n                    </div>\n                </td>\n            </tr>\n        {% else %}\n            <tr>\n                <td colspan=\"4\" align=\"center\">{{ 'post.no_posts_found'|trans }}</td>\n           </tr>\n        {% endfor %}\n        </tbody>\n    </table>\n{% endblock %}\n\n{% block sidebar %}\n    <div class=\"section actions\">\n        <a href=\"{{ path('admin_post_new') }}\" class=\"btn btn-lg btn-block btn-success\">\n            <i class=\"fa fa-plus\"></i> {{ 'action.create_post'|trans }}\n        </a>\n    </div>\n\n    <div class=\"section\">\n        {% if app.user.githubid is empty %}\n            <a href=\"{{ path('hwi_oauth_service_redirect', {\"service\": \"github\"}) }}\" class=\"btn btn-lg btn-block btn-primary\">\n                <i class=\"fa fa-github-square\"></i> Link GitHub account\n            </a>\n        {% else %}\n            <form action=\"{{ path('oauth_dissconnect_service', {'service': 'github', 'usernameId': app.user.githubid, 'accessToken': app.user.githubaccesstoken}) }}\" method=\"post\">\n                <input type=\"hidden\" name=\"_csrf_token\" value=\"{{ csrf_token('authenticate') }}\">\n                <button type=\"submit\" class=\"btn btn-lg btn-block btn-danger\" style=\"font-size: 16px\">\n                    <i class=\"fa fa-github-square\"></i> Delete linked GitHub account\n                </button>\n            </form>\n        {% endif %}\n    </div>\n\n    {{ parent() }}\n\n    {{ show_source_code(_self) }}\n{% endblock %}\n"
  },
  {
    "path": "app/Resources/views/admin/blog/new.html.twig",
    "content": "{% extends 'admin/layout.html.twig' %}\n\n{% block body_id 'admin_post_new' %}\n\n{% block main %}\n    <h1>{{ 'title.post_new'|trans }}</h1>\n\n    {{ form_start(form) }}\n        {{ form_row(form.title) }}\n        {{ form_row(form.summary) }}\n        {{ form_row(form.content) }}\n        {{ form_row(form.authorEmail) }}\n        {{ form_row(form.publishedAt) }}\n\n        <input type=\"submit\" value=\"{{ 'label.create_post'|trans }}\" class=\"btn btn-primary\" />\n\n        {{ form_widget(form.saveAndCreateNew, { label: 'label.save_and_create_new', attr: { class: 'btn btn-primary' } }) }}\n\n        <a href=\"{{ path('admin_post_index') }}\" class=\"btn btn-link\">\n            {{ 'action.back_to_list'|trans }}\n        </a>\n    {{ form_end(form) }}\n{% endblock %}\n\n{% block sidebar %}\n    {{ parent() }}\n\n    {{ show_source_code(_self) }}\n{% endblock %}\n"
  },
  {
    "path": "app/Resources/views/admin/blog/show.html.twig",
    "content": "{% extends 'admin/layout.html.twig' %}\n\n{% block body_id 'admin_post_show' %}\n\n{% block main %}\n    <h1>{{ post.title }}</h1>\n\n    <table class=\"table\">\n        <tbody>\n            <tr>\n                <th>{{ 'label.summary'|trans }}</th>\n                <td>{{ post.summary|md2html }}</td>\n            </tr>\n            <tr>\n                <th>{{ 'label.content'|trans }}</th>\n                <td>{{ post.content|md2html }}</td>\n            </tr>\n            <tr>\n                <th>{{ 'label.author'|trans }}</th>\n                <td><p>{{ post.authorEmail }}</p></td>\n            </tr>\n            <tr>\n                <th>{{ 'label.published_at'|trans }}</th>\n                <td><p>{{ post.publishedAt|localizeddate('long', 'medium') }}</p></td>\n            </tr>\n        </tbody>\n    </table>\n{% endblock %}\n\n{% block sidebar %}\n    <div class=\"section\">\n        <a href=\"{{ path('admin_post_edit', { id: post.id }) }}\" class=\"btn btn-lg btn-block btn-success\">\n            <i class=\"fa fa-edit\"></i> {{ 'action.edit_contents'|trans }}\n        </a>\n    </div>\n\n    <div class=\"section\">\n        {{ include('admin/blog/_form.html.twig', {\n            form: delete_form,\n            button_label: 'action.delete_post'|trans,\n            button_css: 'btn btn-lg btn-block btn-danger',\n            show_confirmation: true,\n        }, with_context = false) }}\n    </div>\n\n    {{ show_source_code(_self) }}\n{% endblock %}\n"
  },
  {
    "path": "app/Resources/views/admin/layout.html.twig",
    "content": "{#\n   This is the base template of the all backend pages. Since this layout is similar\n   to the global layout, we inherit from it to just change the contents of some\n   blocks. In practice, backend templates are using a three-level inheritance,\n   showing how powerful, yet easy to use, is Twig's inheritance mechanism.\n   See http://symfony.com/doc/current/book/templating.html#template-inheritance-and-layouts\n#}\n{% extends 'base.html.twig' %}\n\n{% block header_navigation_links %}\n    <li>\n        <a href=\"{{ path('admin_post_index') }}\">\n            <i class=\"fa fa-list-alt\"></i> {{ 'menu.post_list'|trans }}\n        </a>\n    </li>\n    <li>\n        <a href=\"{{ path('blog_index') }}\">\n            <i class=\"fa fa-home\"></i> {{ 'menu.back_to_blog'|trans }}\n        </a>\n    </li>\n{% endblock %}\n"
  },
  {
    "path": "app/Resources/views/base.html.twig",
    "content": "{#\n   This is the base template used as the application layout which contains the\n   common elements and decorates all the other templates.\n   See http://symfony.com/doc/current/book/templating.html#template-inheritance-and-layouts\n#}\n<!DOCTYPE html>\n<html>\n    <head>\n        <meta charset=\"UTF-8\" />\n        <title>{% block title %}Symfony Demo On Roids{% endblock %}</title>\n\n        {% block stylesheets %}\n        {# uncomment the following lines to compile SCSS assets with Assetic\n\n            {% stylesheets filter=\"scssphp\" output=\"css/app.css\"\n                \"%kernel.root_dir%/Resources/assets/scss/bootstrap.scss\"\n                \"%kernel.root_dir%/Resources/assets/scss/font-awesome.scss\"\n                \"%kernel.root_dir%/Resources/assets/css/*.css\"\n                \"%kernel.root_dir%/Resources/assets/scss/main.scss\"\n            %}\n                <link rel=\"stylesheet\" href=\"{{ asset_url }}\" />\n            {% endstylesheets %}\n        #}\n\n            <link rel=\"stylesheet\" href=\"{{ asset('css/app.css') }}\">\n        {% endblock %}\n        <link rel=\"icon\" type=\"image/x-icon\" href=\"{{ asset('favicon.ico') }}\" />\n    </head>\n\n    <body id=\"{% block body_id %}{% endblock %}\">\n\n        {% block header %}\n            <header>\n                <div class=\"navbar navbar-default navbar-static-top\" role=\"navigation\">\n                    <div class=\"container\">\n                        <div class=\"navbar-header\">\n                            <a class=\"navbar-brand\" href=\"{{ path('homepage') }}\">\n                               The Symfony Demo on Roids Application!\n                            </a>\n\n                            <button type=\"button\" class=\"navbar-toggle\"\n                                    data-toggle=\"collapse\"\n                                    data-target=\".navbar-collapse\">\n                                <span class=\"sr-only\">Toggle navigation</span>\n                                <span class=\"icon-bar\"></span>\n                                <span class=\"icon-bar\"></span>\n                                <span class=\"icon-bar\"></span>\n                            </button>\n                        </div>\n                        <div class=\"navbar-collapse collapse\">\n                            <div class=\"search-bar col-sm-3\">\n                                <form action=\"{{ path('elasticsearch_blog_search_post') }}\" method=\"get\">\n                                    <div class=\"input-group-sm\" style=\"display: inline-block\">\n                                        <input name=\"q\" type=\"text\" class=\"form-control\" placeholder=\"Search specific post\" autocomplete=\"off\">\n                                    </div>\n                                    <input type=\"submit\" value=\"search\" class=\"btn btn-sm btn-danger\">\n                                </form>\n                            </div>\n                            <ul class=\"nav navbar-nav navbar-right\">\n\n                                {% block header_navigation_links %}\n                                    <li>\n                                        <a href=\"{{ path('blog_index') }}\">\n                                            <i class=\"fa fa-home\"></i> {{ 'menu.homepage'|trans }}\n                                        </a>\n                                    </li>\n\n                                    {# The 'app.user' condition is required to avoid issues in 404 and 500 error pages\n                                       As routing is done before security, error pages are not covered by any firewall.\n                                       This means you can't use is_granted() directly on these pages.\n                                       See http://symfony.com/doc/current/cookbook/security/form_login_setup.html#avoid-common-pitfalls\n                                    #}\n                                    {% if app.user and is_granted('ROLE_ADMIN') %}\n                                        <li>\n                                            <a href=\"{{ path('admin_post_index') }}\">\n                                                <i class=\"fa fa-lock\"></i> {{ 'menu.admin'|trans }}\n                                            </a>\n                                        </li>\n                                    {% endif %}\n                                {% endblock %}\n\n                                {% if app.user %}\n                                    <li>\n                                        <a href=\"{{ path('security_logout') }}\">\n                                            <i class=\"fa fa-sign-out\"></i> {{ 'menu.logout'|trans }}\n                                        </a>\n                                    </li>\n                                {% endif %}\n\n                                <li class=\"dropdown\">\n                                    <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" aria-expanded=\"false\"><i class=\"fa fa-globe\"></i> <span class=\"caret\"></span></a>\n                                    <ul class=\"dropdown-menu locales\" role=\"menu\">\n                                        {% for locale in locales() %}\n                                            <li {% if app.request.locale == locale.code %}class=\"active\"{% endif %}><a href=\"{{ path(app.request.get('_route', 'blog_index'), app.request.get('_route_params', [])|merge({ _locale: locale.code })) }}\">{{ locale.name|capitalize }}</a></li>\n                                        {% endfor %}\n                                    </ul>\n                                </li>\n                            </ul>\n                        </div>\n                    </div>\n                </div>\n            </header>\n        {% endblock %}\n\n        <div class=\"container body-container\">\n            {% block body %}\n                <div class=\"row\">\n                    <div id=\"main\" class=\"col-sm-9\">\n                        {{ include('default/_flash_messages.html.twig') }}\n\n                        {% block main %}{% endblock %}\n                    </div>\n\n                    <div id=\"sidebar\" class=\"col-sm-3\">\n                        {% block sidebar %}\n                            <div class=\"section about\">\n                                <div class=\"well well-lg\">\n                                    <p>\n                                        {{ 'help.app_description'|trans|raw }}\n                                    </p>\n                                    <p>\n                                        {{ 'help.more_information'|trans|raw }}\n                                    </p>\n                                </div>\n                            </div>\n                        {% endblock %}\n                    </div>\n                </div>\n            {% endblock %}\n        </div>\n\n        {% block footer %}\n            <footer>\n                <div class=\"container\">\n                    <div class=\"row\">\n                        <div id=\"footer-copyright\" class=\"col-md-6\">\n                            <p>&copy; {{ 'now'|date('Y') }} - The Symfony Project</p>\n                            <p>{{ 'mit_license'|trans }}</p>\n                        </div>\n                        <div id=\"footer-resources\" class=\"col-md-6\">\n                            <p>\n                                <a href=\"https://twitter.com/symfony\"><i class=\"fa fa-twitter\"></i></a>\n                                <a href=\"https://www.facebook.com/SensioLabs\"><i class=\"fa fa-facebook\"></i></a>\n                                <a href=\"http://symfony.com/blog\"><i class=\"fa fa-rss\"></i></a>\n                            </p>\n                        </div>\n                    </div>\n                </div>\n            </footer>\n        {% endblock %}\n\n        {% block javascripts %}\n        {# uncomment the following lines to combine and minimize JavaScript assets with Assetic\n            {% javascripts filter=\"?jsqueeze\" output=\"js/app.js\"\n                \"%kernel.root_dir%/Resources/assets/js/jquery-2.1.4.js\"\n                \"%kernel.root_dir%/Resources/assets/js/moment.min.js\"\n                \"%kernel.root_dir%/Resources/assets/js/bootstrap-3.3.4.js\"\n                \"%kernel.root_dir%/Resources/assets/js/highlight.pack.js\"\n                \"%kernel.root_dir%/Resources/assets/js/bootstrap-datetimepicker.min.js\"\n                \"%kernel.root_dir%/Resources/assets/js/main.js\" %}\n                <script src=\"{{ asset_url }}\"></script>\n            {% endjavascripts %}\n        #}\n\n            <script src=\"{{ asset('js/app.js') }}\"></script>\n        {% endblock %}\n    </body>\n</html>\n"
  },
  {
    "path": "app/Resources/views/blog/_comment_form.html.twig",
    "content": "{#\n    By default, forms enable client-side validation. This means that you can't\n    test the server-side validation errors from the browser. To temporarily\n    disable this validation, add the 'novalidate' attribute:\n\n    {{ form_start(form, { method: ..., action: ..., attr: { novalidate: 'novalidate' } }) }}\n#}\n\n{{ form_start(form, { method: 'POST', action: path('comment_new', { 'postSlug': post.slug }) }) }}\n    {#  instead of displaying form fields one by one, you can also display them\n        all with their default options and styles just by calling to this function:\n\n        {{ form_widget(form) }}\n    #}\n\n    <fieldset>\n        <legend>{{ 'title.add_comment'|trans }}</legend>\n\n        {# Render any global form error (e.g. when a constraint on a public getter method failed) #}\n        {{ form_errors(form) }}\n\n        <div class=\"form-group {% if not form.content.vars.valid %}has-error{% endif %}\">\n            {{ form_label(form.content, 'label.content', { label_attr: { class: 'hidden' }}) }}\n\n            {# Render any errors for the \"content\" field (e.g. when a class property constraint failed) #}\n            {{ form_errors(form.content) }}\n\n            {{ form_widget(form.content, { attr: { rows: 10 } }) }}\n        </div>\n\n        <div class=\"form-group\">\n            <button class=\"btn btn-primary pull-right\" type=\"submit\">{{ 'action.publish_comment'|trans }}</button>\n        </div>\n    </fieldset>\n{{ form_end(form) }}\n"
  },
  {
    "path": "app/Resources/views/blog/_delete_post_confirmation.html.twig",
    "content": "{# Bootstrap modal, see http://getbootstrap.com/javascript/#modals #}\n<div class=\"modal fade\" id=\"confirmationModal\" tabindex=\"-1\">\n    <div class=\"modal-dialog\">\n        <div class=\"modal-content\">\n            <div class=\"modal-body\">\n                <h4>{{ 'delete_post_modal.title'|trans }}</h4>\n                <p>{{ 'delete_post_modal.body'|trans }}</p>\n            </div>\n            <div class=\"modal-footer\">\n                <button type=\"button\" class=\"btn btn-default\" id=\"btnNo\" data-dismiss=\"modal\">\n                    {{ 'label.cancel'|trans }}\n                </button>\n                <button type=\"button\" class=\"btn btn-danger\" id=\"btnYes\" data-dismiss=\"modal\">\n                    {{ 'label.delete_post'|trans }}\n                </button>\n            </div>\n        </div>\n    </div>\n</div>\n"
  },
  {
    "path": "app/Resources/views/blog/comment_form_error.html.twig",
    "content": "{% extends 'base.html.twig' %}\n\n{% block body_id 'comment_form_error' %}\n\n{% block main %}\n    <h1 class=\"text-danger\">{{ 'title.comment_error'|trans }}</h1>\n\n    <div class=\"well\">\n        {{ include('blog/_comment_form.html.twig') }}\n    </div>\n{% endblock %}\n"
  },
  {
    "path": "app/Resources/views/blog/index.html.twig",
    "content": "{% extends 'base.html.twig' %}\n\n{% block body_id 'blog_index' %}\n\n{% block main %}\n    {% for post in posts %}\n        <article class=\"post\">\n            <h2>\n                <a href=\"{{ path('blog_post', { slug: post.slug }) }}\">\n                    {{ post.title }}\n                </a>\n            </h2>\n\n            {{ post.summary|md2html }}\n        </article>\n    {% else %}\n        <div class=\"well\">{{ 'post.no_posts_found'|trans }}</div>\n    {% endfor %}\n\n    <div class=\"navigation text-center\">\n        {{ knp_pagination_render(posts) }}\n    </div>\n{% endblock %}\n\n{% block sidebar %}\n    <div class=\"section\">\n        <a class=\"btn btn-lg btn-block btn-warning\" href=\"{{ path('blog_top_5_redis') }}\">\n            <i class=\"fa fa-star\"></i> Top 5 Popular Posts\n        </a>\n    </div>\n\n    {{ parent() }}\n\n    {{ show_source_code(_self) }}\n{% endblock %}\n"
  },
  {
    "path": "app/Resources/views/blog/post_show.html.twig",
    "content": "{% extends 'base.html.twig' %}\n\n{% block body_id 'blog_post_show' %}\n\n{% block main %}\n    <h1>{{ post.title }}</h1>\n\n    {{ post.content|md2html }}\n\n    <div id=\"post-add-comment\" class=\"well\">\n        {# The 'IS_AUTHENTICATED_FULLY' role ensures that the user has entered\n        his/her credentials (login + password) during this session. If he/she\n        is automatically logged via the 'Remember Me' functionality, he/she won't\n        be able to add a comment.\n        See http://symfony.com/doc/current/cookbook/security/remember_me.html#forcing-the-user-to-re-authenticate-before-accessing-certain-resources\n        #}\n        {% if is_granted('IS_AUTHENTICATED_FULLY') %}\n            {{ render(controller('AppBundle:Blog:commentForm', { 'id': post.id })) }}\n        {% else %}\n            <p>\n                <a class=\"btn btn-success\" href=\"{{ path('security_login_form') }}\">\n                    <i class=\"fa fa-sign-in\"></i> {{ 'action.sign_in'|trans }}\n                </a>\n                {{ 'post.to_publish_a_comment'|trans }}\n            </p>\n        {% endif %}\n    </div>\n\n    <h3>{{ 'post.num_comments'|transchoice(post.comments|length) }}</h3>\n\n    {% for comment in post.comments %}\n        <div class=\"row post-comment\">\n            <h4 class=\"col-sm-3\">\n                <strong>{{ comment.authorEmail }}</strong> {{ 'post.commented_on'|trans }}\n                <strong>{{ comment.publishedAt|localizeddate('medium', 'short') }}</strong>\n            </h4>\n            <div class=\"col-sm-9\">\n                {{ comment.content|md2html }}\n            </div>\n        </div>\n    {% else %}\n        <div class=\"post-comment\">\n            <p>{{ 'post.no_comments'|trans }}</p>\n        </div>\n    {% endfor %}\n{% endblock %}\n\n{% block sidebar %}\n    <div class=\"section\">\n    {% if app.user and post.isAuthor(app.user) %}\n        <a class=\"btn btn-lg btn-block btn-success\" href=\"{{ path('admin_post_edit', { id: post.id }) }}\">\n            <i class=\"fa fa-edit\"></i> {{ 'action.edit_post'|trans }}\n        </a>\n    {% endif %}\n        <a id=\"download-post-pdf\" class=\"btn btn-lg btn-block btn-danger\" onclick=\"getPostPdf({{ post.id }})\">\n            <i class=\"fa fa-download\"></i> Download post as PDF\n        </a>\n\n        <script type=\"application/javascript\">\n            function getPostPdf(postId) {\n                var request = new XMLHttpRequest();\n                request.onreadystatechange = function() {\n                    if (request.readyState === 4) {\n                        if (request.status === 200) {\n                            var pdfResponse = JSON.parse(request.response);\n                            console.log(request.response);\n                            if (pdfResponse.pdfName) {\n                                tryDownloadPdf(pdfResponse.pdfName);\n                            }\n                        }\n                    }\n                };\n                request.open('POST', '{{ url('rabbitmq_generate_post_pdf', {'id': post.id}) }}', true);\n                request.send(null);\n            }\n\n            var pdfDownloadIsReady = false;\n            function tryDownloadPdf(pdfName) {\n                var fileUrl = '{{ app.request.schemeAndHttpHost }}/downloads/pdf/' + pdfName + '.pdf';\n                setInterval(function () {\n                    if (pdfDownloadIsReady === false) {\n                        downloadRequest = new XMLHttpRequest();\n                        downloadRequest.onreadystatechange = function() {\n                            if (downloadRequest.readyState === 4) {\n                                if (downloadRequest.status === 200) {\n                                    pdfDownloadIsReady = true;\n                                    var downloadBtn = document.getElementById('download-post-pdf');\n                                    downloadBtn.removeAttribute('onclick');\n                                    downloadBtn.setAttribute('download', pdfName + '.pdf');\n                                    downloadBtn.setAttribute('href', fileUrl);\n                                    downloadBtn.click();\n                                }\n                            }\n                        };\n                        downloadRequest.open(\n                                'GET', fileUrl\n                        );\n                        downloadRequest.send(null);\n                    }\n                }, 1000)\n            }\n        </script>\n\n    </div>\n\n    {# the parent() function includes the contents defined by the parent template\n      ('base.html.twig') for this block ('sidebar'). This is a very convenient way\n      to share common contents in different templates #}\n    {{ parent() }}\n\n    {{ show_source_code(_self) }}\n{% endblock %}\n"
  },
  {
    "path": "app/Resources/views/default/_flash_messages.html.twig",
    "content": "{#\n   This is a template fragment designed to be included in other templates\n   See http://symfony.com/doc/current/book/templating.html#including-other-templates\n\n   A common practice to better distinguish between templates and fragments is to\n   prefix fragments with an underscore. That's why this template is called\n   '_flash_messages.html.twig' instead of 'flash_messages.html.twig'\n#}\n\n{% if app.session.started %}\n    <div class=\"messages\">\n        {% for message in app.session.flashBag.get('success') %}\n            {# Bootstrap alert, see http://getbootstrap.com/components/#alerts #}\n            <div class=\"alert alert-dismissible alert-success\" role=\"alert\">\n                <button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\">\n                    <span aria-hidden=\"true\">&times;</span>\n                </button>\n\n                {{ message|trans }}\n            </div>\n        {% endfor %}\n    </div>\n{% endif %}\n"
  },
  {
    "path": "app/Resources/views/default/homepage.html.twig",
    "content": "{% extends 'base.html.twig' %}\n\n{% block body_id 'homepage' %}\n\n{#\n    the homepage is a special page which displays neither a header nor a footer.\n    this is done with the 'trick' of defining empty Twig blocks without any content\n#}\n{% block header %}{% endblock %}\n{% block footer %}{% endblock %}\n\n{% block body %}\n    <div class=\"page-header\">\n        <h1>Welcome to the <b>Symfony Demo On Roids</b> application</h1>\n    </div>\n\n    <div class=\"row\">\n        <div class=\"col-sm-6\">\n            <div class=\"jumbotron\">\n                <p>\n                    {{ 'help.browse_app'|trans|raw }}\n                </p>\n                <p>\n                    <a class=\"btn btn-primary btn-lg\" href=\"{{ path('blog_index') }}\">\n                        <i class=\"fa fa-users\"></i> {{ 'action.browse_app'|trans }}\n                    </a>\n                </p>\n            </div>\n        </div>\n\n        <div class=\"col-sm-6\">\n            <div class=\"jumbotron\">\n                <p>\n                    {{ 'help.browse_admin'|trans|raw }}\n                </p>\n                <p>\n                    <a class=\"btn btn-primary btn-lg\" href=\"{{ path('admin_index') }}\">\n                        <i class=\"fa fa-lock\"></i> {{ 'action.browse_admin'|trans }}\n                    </a>\n                </p>\n            </div>\n        </div>\n\n        <h1>\n            <a href=\"https://github.com/alfonsomga/symfony.demo.on.roids\" target=\"_blank\" style=\"color: #2c3e50\">\n                <i class=\"fa fa-github-square fa-3x\"></i>\n            </a>\n        </h1>\n\n    </div>\n{% endblock %}\n"
  },
  {
    "path": "app/Resources/views/form/fields.html.twig",
    "content": "{#\n   Each field type is rendered by a template fragment, which is determined\n   by the value of your getName() method and the suffix _widget.\n\n   See http://symfony.com/doc/current/cookbook/form/create_custom_field_type.html#creating-a-template-for-the-field\n#}\n\n{% block app_datetimepicker_widget %}\n    {% spaceless %}\n        <div class=\"input-group date\" data-toggle=\"datetimepicker\">\n            {{ block('datetime_widget') }}\n            <span class=\"input-group-addon\">\n                <span class=\"fa fa-calendar\"></span>\n            </span>\n        </div>\n    {% endspaceless %}\n{% endblock %}\n"
  },
  {
    "path": "app/Resources/views/security/login.html.twig",
    "content": "{% extends 'base.html.twig' %}\n\n{% block body_id 'login' %}\n\n{% block main %}\n    {% if error %}\n        <div class=\"alert alert-danger\">\n            {{ error.messageKey|trans(error.messageData, 'security') }}\n        </div>\n    {% endif %}\n\n    <div class=\"row\">\n        <div class=\"col-sm-5\">\n            <div class=\"well\">\n                <form action=\"{{ path('security_login_check') }}\" method=\"post\">\n                    <fieldset>\n                        <legend><i class=\"fa fa-lock\"></i> {{ 'title.login'|trans }}</legend>\n                        <div class=\"form-group\">\n                            <label for=\"username\">{{ 'label.username'|trans }}</label>\n                            <input type=\"text\" id=\"username\" name=\"_username\" value=\"{{ last_username }}\" class=\"form-control\"/>\n                        </div>\n                        <div class=\"form-group\">\n                            <label for=\"password\">{{ 'label.password'|trans }}</label>\n                            <input type=\"password\" id=\"password\" name=\"_password\" class=\"form-control\" />\n                        </div>\n                        <input type=\"hidden\" name=\"_csrf_token\" value=\"{{ csrf_token('authenticate') }}\"/>\n                        <button type=\"submit\" class=\"btn btn-primary\">\n                            <i class=\"fa fa-sign-in\"></i> {{ 'action.sign_in'|trans }}\n                        </button>\n                        {% if github_client_id == 'foo' %}\n                            <a href=\"#\" class=\"not-active btn btn-primary\" disabled>\n                                <i class=\"fa fa-github-square\"></i> Sign in with GitHub\n                            </a>\n                        {% else %}\n                            <a href=\"{{ path('hwi_oauth_service_redirect', {\"service\": \"github\"}) }}\" class=\"btn btn-primary\">\n                                <i class=\"fa fa-github-square\"></i> Sign in with GitHub\n                            </a>\n                        {% endif %}\n                    </fieldset>\n                </form>\n            </div>\n        </div>\n\n        <div id=\"login-help\" class=\"col-sm-7\">\n            <h3>\n                <i class=\"fa fa-long-arrow-left\"></i>\n                {{ 'help.login_users'|trans }}\n            </h3>\n\n            <table class=\"table table-striped table-bordered table-hover\">\n                <thead>\n                    <tr>\n                        <th>{{ 'label.username'|trans }}</th>\n                        <th>{{ 'label.password'|trans }}</th>\n                        <th>{{ 'label.role'|trans }}</th>\n                    </tr>\n                </thead>\n                <tbody>\n                    <tr>\n                        <td>john_user</td>\n                        <td>kitten</td>\n                        <td><code>ROLE_USER</code> ({{ 'help.role_user'|trans }})</td>\n                    </tr>\n                    <tr>\n                        <td>anna_admin</td>\n                        <td>kitten</td>\n                        <td><code>ROLE_ADMIN</code> ({{ 'help.role_admin'|trans }})</td>\n                    </tr>\n                </tbody>\n            </table>\n\n            <div id=\"login-users-help\" class=\"panel panel-default\">\n                <div class=\"panel-body\">\n                    <p>\n                        <span class=\"label label-success\">{{ 'note'|trans }}</span>\n                        {{ 'help.reload_fixtures'|trans }}<br/>\n\n                        <code class=\"console\">$ php app/console doctrine:fixtures:load</code>\n                    </p>\n\n                    <p>\n                        <span class=\"label label-success\">{{ 'tip'|trans }}</span>\n                        {{ 'help.add_user'|trans }}<br/>\n\n                        <code class=\"console\">$ php app/console app:add-user</code>\n                    </p>\n                </div>\n            </div>\n        </div>\n    </div>\n{% endblock %}\n{% block sidebar %}\n\n    {{ parent() }}\n\n    {{ show_source_code(_self) }}\n{% endblock %}\n\n{% block javascripts %}\n    {{ parent() }}\n\n    <script>\n        $(document).ready(function() {\n            $('#username').val('anna_admin');\n            $('#password').val('kitten');\n        });\n    </script>\n{% endblock %}\n"
  },
  {
    "path": "app/SymfonyRequirements.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n/*\n * Users of PHP 5.2 should be able to run the requirements checks.\n * This is why the file and all classes must be compatible with PHP 5.2+\n * (e.g. not using namespaces and closures).\n *\n * ************** CAUTION **************\n *\n * DO NOT EDIT THIS FILE as it will be overridden by Composer as part of\n * the installation/update process. The original file resides in the\n * SensioDistributionBundle.\n *\n * ************** CAUTION **************\n */\n\n/**\n * Represents a single PHP requirement, e.g. an installed extension.\n * It can be a mandatory requirement or an optional recommendation.\n * There is a special subclass, named PhpIniRequirement, to check a php.ini configuration.\n *\n * @author Tobias Schultze <http://tobion.de>\n */\nclass Requirement\n{\n    private $fulfilled;\n    private $testMessage;\n    private $helpText;\n    private $helpHtml;\n    private $optional;\n\n    /**\n     * Constructor that initializes the requirement.\n     *\n     * @param bool        $fulfilled   Whether the requirement is fulfilled\n     * @param string      $testMessage The message for testing the requirement\n     * @param string      $helpHtml    The help text formatted in HTML for resolving the problem\n     * @param string|null $helpText    The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)\n     * @param bool        $optional    Whether this is only an optional recommendation not a mandatory requirement\n     */\n    public function __construct($fulfilled, $testMessage, $helpHtml, $helpText = null, $optional = false)\n    {\n        $this->fulfilled = (bool) $fulfilled;\n        $this->testMessage = (string) $testMessage;\n        $this->helpHtml = (string) $helpHtml;\n        $this->helpText = null === $helpText ? strip_tags($this->helpHtml) : (string) $helpText;\n        $this->optional = (bool) $optional;\n    }\n\n    /**\n     * Returns whether the requirement is fulfilled.\n     *\n     * @return bool true if fulfilled, otherwise false\n     */\n    public function isFulfilled()\n    {\n        return $this->fulfilled;\n    }\n\n    /**\n     * Returns the message for testing the requirement.\n     *\n     * @return string The test message\n     */\n    public function getTestMessage()\n    {\n        return $this->testMessage;\n    }\n\n    /**\n     * Returns the help text for resolving the problem.\n     *\n     * @return string The help text\n     */\n    public function getHelpText()\n    {\n        return $this->helpText;\n    }\n\n    /**\n     * Returns the help text formatted in HTML.\n     *\n     * @return string The HTML help\n     */\n    public function getHelpHtml()\n    {\n        return $this->helpHtml;\n    }\n\n    /**\n     * Returns whether this is only an optional recommendation and not a mandatory requirement.\n     *\n     * @return bool true if optional, false if mandatory\n     */\n    public function isOptional()\n    {\n        return $this->optional;\n    }\n}\n\n/**\n * Represents a PHP requirement in form of a php.ini configuration.\n *\n * @author Tobias Schultze <http://tobion.de>\n */\nclass PhpIniRequirement extends Requirement\n{\n    /**\n     * Constructor that initializes the requirement.\n     *\n     * @param string        $cfgName           The configuration name used for ini_get()\n     * @param bool|callback $evaluation        Either a boolean indicating whether the configuration should evaluate to true or false,\n     *                                         or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement\n     * @param bool          $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false.\n     *                                         This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin.\n     *                                         Example: You require a config to be true but PHP later removes this config and defaults it to true internally.\n     * @param string|null   $testMessage       The message for testing the requirement (when null and $evaluation is a boolean a default message is derived)\n     * @param string|null   $helpHtml          The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived)\n     * @param string|null   $helpText          The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)\n     * @param bool          $optional          Whether this is only an optional recommendation not a mandatory requirement\n     */\n    public function __construct($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null, $optional = false)\n    {\n        $cfgValue = ini_get($cfgName);\n\n        if (is_callable($evaluation)) {\n            if (null === $testMessage || null === $helpHtml) {\n                throw new InvalidArgumentException('You must provide the parameters testMessage and helpHtml for a callback evaluation.');\n            }\n\n            $fulfilled = call_user_func($evaluation, $cfgValue);\n        } else {\n            if (null === $testMessage) {\n                $testMessage = sprintf('%s %s be %s in php.ini',\n                    $cfgName,\n                    $optional ? 'should' : 'must',\n                    $evaluation ? 'enabled' : 'disabled'\n                );\n            }\n\n            if (null === $helpHtml) {\n                $helpHtml = sprintf('Set <strong>%s</strong> to <strong>%s</strong> in php.ini<a href=\"#phpini\">*</a>.',\n                    $cfgName,\n                    $evaluation ? 'on' : 'off'\n                );\n            }\n\n            $fulfilled = $evaluation == $cfgValue;\n        }\n\n        parent::__construct($fulfilled || ($approveCfgAbsence && false === $cfgValue), $testMessage, $helpHtml, $helpText, $optional);\n    }\n}\n\n/**\n * A RequirementCollection represents a set of Requirement instances.\n *\n * @author Tobias Schultze <http://tobion.de>\n */\nclass RequirementCollection implements IteratorAggregate\n{\n    private $requirements = array();\n\n    /**\n     * Gets the current RequirementCollection as an Iterator.\n     *\n     * @return Traversable A Traversable interface\n     */\n    public function getIterator()\n    {\n        return new ArrayIterator($this->requirements);\n    }\n\n    /**\n     * Adds a Requirement.\n     *\n     * @param Requirement $requirement A Requirement instance\n     */\n    public function add(Requirement $requirement)\n    {\n        $this->requirements[] = $requirement;\n    }\n\n    /**\n     * Adds a mandatory requirement.\n     *\n     * @param bool        $fulfilled   Whether the requirement is fulfilled\n     * @param string      $testMessage The message for testing the requirement\n     * @param string      $helpHtml    The help text formatted in HTML for resolving the problem\n     * @param string|null $helpText    The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)\n     */\n    public function addRequirement($fulfilled, $testMessage, $helpHtml, $helpText = null)\n    {\n        $this->add(new Requirement($fulfilled, $testMessage, $helpHtml, $helpText, false));\n    }\n\n    /**\n     * Adds an optional recommendation.\n     *\n     * @param bool        $fulfilled   Whether the recommendation is fulfilled\n     * @param string      $testMessage The message for testing the recommendation\n     * @param string      $helpHtml    The help text formatted in HTML for resolving the problem\n     * @param string|null $helpText    The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)\n     */\n    public function addRecommendation($fulfilled, $testMessage, $helpHtml, $helpText = null)\n    {\n        $this->add(new Requirement($fulfilled, $testMessage, $helpHtml, $helpText, true));\n    }\n\n    /**\n     * Adds a mandatory requirement in form of a php.ini configuration.\n     *\n     * @param string        $cfgName           The configuration name used for ini_get()\n     * @param bool|callback $evaluation        Either a boolean indicating whether the configuration should evaluate to true or false,\n     *                                         or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement\n     * @param bool          $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false.\n     *                                         This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin.\n     *                                         Example: You require a config to be true but PHP later removes this config and defaults it to true internally.\n     * @param string        $testMessage       The message for testing the requirement (when null and $evaluation is a boolean a default message is derived)\n     * @param string        $helpHtml          The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived)\n     * @param string|null   $helpText          The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)\n     */\n    public function addPhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null)\n    {\n        $this->add(new PhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence, $testMessage, $helpHtml, $helpText, false));\n    }\n\n    /**\n     * Adds an optional recommendation in form of a php.ini configuration.\n     *\n     * @param string        $cfgName           The configuration name used for ini_get()\n     * @param bool|callback $evaluation        Either a boolean indicating whether the configuration should evaluate to true or false,\n     *                                         or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement\n     * @param bool          $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false.\n     *                                         This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin.\n     *                                         Example: You require a config to be true but PHP later removes this config and defaults it to true internally.\n     * @param string        $testMessage       The message for testing the requirement (when null and $evaluation is a boolean a default message is derived)\n     * @param string        $helpHtml          The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived)\n     * @param string|null   $helpText          The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)\n     */\n    public function addPhpIniRecommendation($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null)\n    {\n        $this->add(new PhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence, $testMessage, $helpHtml, $helpText, true));\n    }\n\n    /**\n     * Adds a requirement collection to the current set of requirements.\n     *\n     * @param RequirementCollection $collection A RequirementCollection instance\n     */\n    public function addCollection(RequirementCollection $collection)\n    {\n        $this->requirements = array_merge($this->requirements, $collection->all());\n    }\n\n    /**\n     * Returns both requirements and recommendations.\n     *\n     * @return array Array of Requirement instances\n     */\n    public function all()\n    {\n        return $this->requirements;\n    }\n\n    /**\n     * Returns all mandatory requirements.\n     *\n     * @return array Array of Requirement instances\n     */\n    public function getRequirements()\n    {\n        $array = array();\n        foreach ($this->requirements as $req) {\n            if (!$req->isOptional()) {\n                $array[] = $req;\n            }\n        }\n\n        return $array;\n    }\n\n    /**\n     * Returns the mandatory requirements that were not met.\n     *\n     * @return array Array of Requirement instances\n     */\n    public function getFailedRequirements()\n    {\n        $array = array();\n        foreach ($this->requirements as $req) {\n            if (!$req->isFulfilled() && !$req->isOptional()) {\n                $array[] = $req;\n            }\n        }\n\n        return $array;\n    }\n\n    /**\n     * Returns all optional recommendations.\n     *\n     * @return array Array of Requirement instances\n     */\n    public function getRecommendations()\n    {\n        $array = array();\n        foreach ($this->requirements as $req) {\n            if ($req->isOptional()) {\n                $array[] = $req;\n            }\n        }\n\n        return $array;\n    }\n\n    /**\n     * Returns the recommendations that were not met.\n     *\n     * @return array Array of Requirement instances\n     */\n    public function getFailedRecommendations()\n    {\n        $array = array();\n        foreach ($this->requirements as $req) {\n            if (!$req->isFulfilled() && $req->isOptional()) {\n                $array[] = $req;\n            }\n        }\n\n        return $array;\n    }\n\n    /**\n     * Returns whether a php.ini configuration is not correct.\n     *\n     * @return bool php.ini configuration problem?\n     */\n    public function hasPhpIniConfigIssue()\n    {\n        foreach ($this->requirements as $req) {\n            if (!$req->isFulfilled() && $req instanceof PhpIniRequirement) {\n                return true;\n            }\n        }\n\n        return false;\n    }\n\n    /**\n     * Returns the PHP configuration file (php.ini) path.\n     *\n     * @return string|false php.ini file path\n     */\n    public function getPhpIniConfigPath()\n    {\n        return get_cfg_var('cfg_file_path');\n    }\n}\n\n/**\n * This class specifies all requirements and optional recommendations that\n * are necessary to run the Symfony Standard Edition.\n *\n * @author Tobias Schultze <http://tobion.de>\n * @author Fabien Potencier <fabien@symfony.com>\n */\nclass SymfonyRequirements extends RequirementCollection\n{\n    const REQUIRED_PHP_VERSION = '5.3.3';\n\n    /**\n     * Constructor that initializes the requirements.\n     */\n    public function __construct()\n    {\n        /* mandatory requirements follow */\n\n        $installedPhpVersion = phpversion();\n\n        $this->addRequirement(\n            version_compare($installedPhpVersion, self::REQUIRED_PHP_VERSION, '>='),\n            sprintf('PHP version must be at least %s (%s installed)', self::REQUIRED_PHP_VERSION, $installedPhpVersion),\n            sprintf('You are running PHP version \"<strong>%s</strong>\", but Symfony needs at least PHP \"<strong>%s</strong>\" to run.\n                Before using Symfony, upgrade your PHP installation, preferably to the latest version.',\n                $installedPhpVersion, self::REQUIRED_PHP_VERSION),\n            sprintf('Install PHP %s or newer (installed version is %s)', self::REQUIRED_PHP_VERSION, $installedPhpVersion)\n        );\n\n        $this->addRequirement(\n            version_compare($installedPhpVersion, '5.3.16', '!='),\n            'PHP version must not be 5.3.16 as Symfony won\\'t work properly with it',\n            'Install PHP 5.3.17 or newer (or downgrade to an earlier PHP version)'\n        );\n\n        $this->addRequirement(\n            is_dir(__DIR__.'/../vendor/composer'),\n            'Vendor libraries must be installed',\n            'Vendor libraries are missing. Install composer following instructions from <a href=\"http://getcomposer.org/\">http://getcomposer.org/</a>. '.\n                'Then run \"<strong>php composer.phar install</strong>\" to install them.'\n        );\n\n        $cacheDir = is_dir(__DIR__.'/../var/cache') ? __DIR__.'/../var/cache' : __DIR__.'/cache';\n\n        $this->addRequirement(\n            is_writable($cacheDir),\n            'app/cache/ or var/cache/ directory must be writable',\n            'Change the permissions of either \"<strong>app/cache/</strong>\" or  \"<strong>var/cache/</strong>\" directory so that the web server can write into it.'\n        );\n\n        $logsDir = is_dir(__DIR__.'/../var/logs') ? __DIR__.'/../var/logs' : __DIR__.'/logs';\n\n        $this->addRequirement(\n            is_writable($logsDir),\n            'app/logs/ or var/logs/ directory must be writable',\n            'Change the permissions of either \"<strong>app/logs/</strong>\" or  \"<strong>var/logs/</strong>\" directory so that the web server can write into it.'\n        );\n\n        $this->addPhpIniRequirement(\n            'date.timezone', true, false,\n            'date.timezone setting must be set',\n            'Set the \"<strong>date.timezone</strong>\" setting in php.ini<a href=\"#phpini\">*</a> (like Europe/Paris).'\n        );\n\n        if (version_compare($installedPhpVersion, self::REQUIRED_PHP_VERSION, '>=')) {\n            $timezones = array();\n            foreach (DateTimeZone::listAbbreviations() as $abbreviations) {\n                foreach ($abbreviations as $abbreviation) {\n                    $timezones[$abbreviation['timezone_id']] = true;\n                }\n            }\n\n            $this->addRequirement(\n                isset($timezones[@date_default_timezone_get()]),\n                sprintf('Configured default timezone \"%s\" must be supported by your installation of PHP', @date_default_timezone_get()),\n                'Your default timezone is not supported by PHP. Check for typos in your <strong>php.ini</strong> file and have a look at the list of deprecated timezones at <a href=\"http://php.net/manual/en/timezones.others.php\">http://php.net/manual/en/timezones.others.php</a>.'\n            );\n        }\n\n        $this->addRequirement(\n            function_exists('iconv'),\n            'iconv() must be available',\n            'Install and enable the <strong>iconv</strong> extension.'\n        );\n\n        $this->addRequirement(\n            function_exists('json_encode'),\n            'json_encode() must be available',\n            'Install and enable the <strong>JSON</strong> extension.'\n        );\n\n        $this->addRequirement(\n            function_exists('session_start'),\n            'session_start() must be available',\n            'Install and enable the <strong>session</strong> extension.'\n        );\n\n        $this->addRequirement(\n            function_exists('ctype_alpha'),\n            'ctype_alpha() must be available',\n            'Install and enable the <strong>ctype</strong> extension.'\n        );\n\n        $this->addRequirement(\n            function_exists('token_get_all'),\n            'token_get_all() must be available',\n            'Install and enable the <strong>Tokenizer</strong> extension.'\n        );\n\n        $this->addRequirement(\n            function_exists('simplexml_import_dom'),\n            'simplexml_import_dom() must be available',\n            'Install and enable the <strong>SimpleXML</strong> extension.'\n        );\n\n        if (function_exists('apc_store') && ini_get('apc.enabled')) {\n            if (version_compare($installedPhpVersion, '5.4.0', '>=')) {\n                $this->addRequirement(\n                    version_compare(phpversion('apc'), '3.1.13', '>='),\n                    'APC version must be at least 3.1.13 when using PHP 5.4',\n                    'Upgrade your <strong>APC</strong> extension (3.1.13+).'\n                );\n            } else {\n                $this->addRequirement(\n                    version_compare(phpversion('apc'), '3.0.17', '>='),\n                    'APC version must be at least 3.0.17',\n                    'Upgrade your <strong>APC</strong> extension (3.0.17+).'\n                );\n            }\n        }\n\n        $this->addPhpIniRequirement('detect_unicode', false);\n\n        if (extension_loaded('suhosin')) {\n            $this->addPhpIniRequirement(\n                'suhosin.executor.include.whitelist',\n                create_function('$cfgValue', 'return false !== stripos($cfgValue, \"phar\");'),\n                false,\n                'suhosin.executor.include.whitelist must be configured correctly in php.ini',\n                'Add \"<strong>phar</strong>\" to <strong>suhosin.executor.include.whitelist</strong> in php.ini<a href=\"#phpini\">*</a>.'\n            );\n        }\n\n        if (extension_loaded('xdebug')) {\n            $this->addPhpIniRequirement(\n                'xdebug.show_exception_trace', false, true\n            );\n\n            $this->addPhpIniRequirement(\n                'xdebug.scream', false, true\n            );\n\n            $this->addPhpIniRecommendation(\n                'xdebug.max_nesting_level',\n                create_function('$cfgValue', 'return $cfgValue > 100;'),\n                true,\n                'xdebug.max_nesting_level should be above 100 in php.ini',\n                'Set \"<strong>xdebug.max_nesting_level</strong>\" to e.g. \"<strong>250</strong>\" in php.ini<a href=\"#phpini\">*</a> to stop Xdebug\\'s infinite recursion protection erroneously throwing a fatal error in your project.'\n            );\n        }\n\n        $pcreVersion = defined('PCRE_VERSION') ? (float) PCRE_VERSION : null;\n\n        $this->addRequirement(\n            null !== $pcreVersion,\n            'PCRE extension must be available',\n            'Install the <strong>PCRE</strong> extension (version 8.0+).'\n        );\n\n        if (extension_loaded('mbstring')) {\n            $this->addPhpIniRequirement(\n                'mbstring.func_overload',\n                create_function('$cfgValue', 'return (int) $cfgValue === 0;'),\n                true,\n                'string functions should not be overloaded',\n                'Set \"<strong>mbstring.func_overload</strong>\" to <strong>0</strong> in php.ini<a href=\"#phpini\">*</a> to disable function overloading by the mbstring extension.'\n            );\n        }\n\n        /* optional recommendations follow */\n\n        if (file_exists(__DIR__.'/../vendor/composer')) {\n            require_once __DIR__.'/../vendor/autoload.php';\n\n            try {\n                $r = new ReflectionClass('Sensio\\Bundle\\DistributionBundle\\SensioDistributionBundle');\n\n                $contents = file_get_contents(dirname($r->getFileName()).'/Resources/skeleton/app/SymfonyRequirements.php');\n            } catch (ReflectionException $e) {\n                $contents = '';\n            }\n            $this->addRecommendation(\n                file_get_contents(__FILE__) === $contents,\n                'Requirements file should be up-to-date',\n                'Your requirements file is outdated. Run composer install and re-check your configuration.'\n            );\n        }\n\n        $this->addRecommendation(\n            version_compare($installedPhpVersion, '5.3.4', '>='),\n            'You should use at least PHP 5.3.4 due to PHP bug #52083 in earlier versions',\n            'Your project might malfunction randomly due to PHP bug #52083 (\"Notice: Trying to get property of non-object\"). Install PHP 5.3.4 or newer.'\n        );\n\n        $this->addRecommendation(\n            version_compare($installedPhpVersion, '5.3.8', '>='),\n            'When using annotations you should have at least PHP 5.3.8 due to PHP bug #55156',\n            'Install PHP 5.3.8 or newer if your project uses annotations.'\n        );\n\n        $this->addRecommendation(\n            version_compare($installedPhpVersion, '5.4.0', '!='),\n            'You should not use PHP 5.4.0 due to the PHP bug #61453',\n            'Your project might not work properly due to the PHP bug #61453 (\"Cannot dump definitions which have method calls\"). Install PHP 5.4.1 or newer.'\n        );\n\n        $this->addRecommendation(\n            version_compare($installedPhpVersion, '5.4.11', '>='),\n            'When using the logout handler from the Symfony Security Component, you should have at least PHP 5.4.11 due to PHP bug #63379 (as a workaround, you can also set invalidate_session to false in the security logout handler configuration)',\n            'Install PHP 5.4.11 or newer if your project uses the logout handler from the Symfony Security Component.'\n        );\n\n        $this->addRecommendation(\n            (version_compare($installedPhpVersion, '5.3.18', '>=') && version_compare($installedPhpVersion, '5.4.0', '<'))\n            ||\n            version_compare($installedPhpVersion, '5.4.8', '>='),\n            'You should use PHP 5.3.18+ or PHP 5.4.8+ to always get nice error messages for fatal errors in the development environment due to PHP bug #61767/#60909',\n            'Install PHP 5.3.18+ or PHP 5.4.8+ if you want nice error messages for all fatal errors in the development environment.'\n        );\n\n        if (null !== $pcreVersion) {\n            $this->addRecommendation(\n                $pcreVersion >= 8.0,\n                sprintf('PCRE extension should be at least version 8.0 (%s installed)', $pcreVersion),\n                '<strong>PCRE 8.0+</strong> is preconfigured in PHP since 5.3.2 but you are using an outdated version of it. Symfony probably works anyway but it is recommended to upgrade your PCRE extension.'\n            );\n        }\n\n        $this->addRecommendation(\n            class_exists('DomDocument'),\n            'PHP-DOM and PHP-XML modules should be installed',\n            'Install and enable the <strong>PHP-DOM</strong> and the <strong>PHP-XML</strong> modules.'\n        );\n\n        $this->addRecommendation(\n            function_exists('mb_strlen'),\n            'mb_strlen() should be available',\n            'Install and enable the <strong>mbstring</strong> extension.'\n        );\n\n        $this->addRecommendation(\n            function_exists('iconv'),\n            'iconv() should be available',\n            'Install and enable the <strong>iconv</strong> extension.'\n        );\n\n        $this->addRecommendation(\n            function_exists('utf8_decode'),\n            'utf8_decode() should be available',\n            'Install and enable the <strong>XML</strong> extension.'\n        );\n\n        $this->addRecommendation(\n            function_exists('filter_var'),\n            'filter_var() should be available',\n            'Install and enable the <strong>filter</strong> extension.'\n        );\n\n        if (!defined('PHP_WINDOWS_VERSION_BUILD')) {\n            $this->addRecommendation(\n                function_exists('posix_isatty'),\n                'posix_isatty() should be available',\n                'Install and enable the <strong>php_posix</strong> extension (used to colorize the CLI output).'\n            );\n        }\n\n        $this->addRecommendation(\n            extension_loaded('intl'),\n            'intl extension should be available',\n            'Install and enable the <strong>intl</strong> extension (used for validators).'\n        );\n\n        if (extension_loaded('intl')) {\n            // in some WAMP server installations, new Collator() returns null\n            $this->addRecommendation(\n                null !== new Collator('fr_FR'),\n                'intl extension should be correctly configured',\n                'The intl extension does not behave properly. This problem is typical on PHP 5.3.X x64 WIN builds.'\n            );\n\n            // check for compatible ICU versions (only done when you have the intl extension)\n            if (defined('INTL_ICU_VERSION')) {\n                $version = INTL_ICU_VERSION;\n            } else {\n                $reflector = new ReflectionExtension('intl');\n\n                ob_start();\n                $reflector->info();\n                $output = strip_tags(ob_get_clean());\n\n                preg_match('/^ICU version +(?:=> )?(.*)$/m', $output, $matches);\n                $version = $matches[1];\n            }\n\n            $this->addRecommendation(\n                version_compare($version, '4.0', '>='),\n                'intl ICU version should be at least 4+',\n                'Upgrade your <strong>intl</strong> extension with a newer ICU version (4+).'\n            );\n\n            $this->addPhpIniRecommendation(\n                'intl.error_level',\n                create_function('$cfgValue', 'return (int) $cfgValue === 0;'),\n                true,\n                'intl.error_level should be 0 in php.ini',\n                'Set \"<strong>intl.error_level</strong>\" to \"<strong>0</strong>\" in php.ini<a href=\"#phpini\">*</a> to inhibit the messages when an error occurs in ICU functions.'\n            );\n        }\n\n        $accelerator =\n            (extension_loaded('eaccelerator') && ini_get('eaccelerator.enable'))\n            ||\n            (extension_loaded('apc') && ini_get('apc.enabled'))\n            ||\n            (extension_loaded('Zend Optimizer+') && ini_get('zend_optimizerplus.enable'))\n            ||\n            (extension_loaded('Zend OPcache') && ini_get('opcache.enable'))\n            ||\n            (extension_loaded('xcache') && ini_get('xcache.cacher'))\n            ||\n            (extension_loaded('wincache') && ini_get('wincache.ocenabled'))\n        ;\n\n        $this->addRecommendation(\n            $accelerator,\n            'a PHP accelerator should be installed',\n            'Install and/or enable a <strong>PHP accelerator</strong> (highly recommended).'\n        );\n\n        if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {\n            $this->addRecommendation(\n                $this->getRealpathCacheSize() > 1000,\n                'realpath_cache_size should be above 1024 in php.ini',\n                'Set \"<strong>realpath_cache_size</strong>\" to e.g. \"<strong>1024</strong>\" in php.ini<a href=\"#phpini\">*</a> to improve performance on windows.'\n            );\n        }\n\n        $this->addPhpIniRecommendation('short_open_tag', false);\n\n        $this->addPhpIniRecommendation('magic_quotes_gpc', false, true);\n\n        $this->addPhpIniRecommendation('register_globals', false, true);\n\n        $this->addPhpIniRecommendation('session.auto_start', false);\n\n        $this->addRecommendation(\n            class_exists('PDO'),\n            'PDO should be installed',\n            'Install <strong>PDO</strong> (mandatory for Doctrine).'\n        );\n\n        if (class_exists('PDO')) {\n            $drivers = PDO::getAvailableDrivers();\n            $this->addRecommendation(\n                count($drivers) > 0,\n                sprintf('PDO should have some drivers installed (currently available: %s)', count($drivers) ? implode(', ', $drivers) : 'none'),\n                'Install <strong>PDO drivers</strong> (mandatory for Doctrine).'\n            );\n        }\n    }\n\n    /**\n     * Loads realpath_cache_size from php.ini and converts it to int.\n     *\n     * (e.g. 16k is converted to 16384 int)\n     *\n     * @return int\n     */\n    protected function getRealpathCacheSize()\n    {\n        $size = ini_get('realpath_cache_size');\n        $size = trim($size);\n        $unit = strtolower(substr($size, -1, 1));\n        switch ($unit) {\n            case 'g':\n                return $size * 1024 * 1024 * 1024;\n            case 'm':\n                return $size * 1024 * 1024;\n            case 'k':\n                return $size * 1024;\n            default:\n                return (int) $size;\n        }\n    }\n}\n"
  },
  {
    "path": "app/autoload.php",
    "content": "<?php\n\nuse Doctrine\\Common\\Annotations\\AnnotationRegistry;\nuse Composer\\Autoload\\ClassLoader;\n\nerror_reporting(error_reporting() & ~E_USER_DEPRECATED);\n\n/**\n * @var ClassLoader $loader\n */\n$loader = require __DIR__.'/../vendor/autoload.php';\n\nAnnotationRegistry::registerLoader(array($loader, 'loadClass'));\n\nreturn $loader;\n"
  },
  {
    "path": "app/check.php",
    "content": "<?php\n\nrequire_once dirname(__FILE__).'/SymfonyRequirements.php';\n\n$lineSize = 70;\n$symfonyRequirements = new SymfonyRequirements();\n$iniPath = $symfonyRequirements->getPhpIniConfigPath();\n\necho_title('Symfony2 Requirements Checker');\n\necho '> PHP is using the following php.ini file:'.PHP_EOL;\nif ($iniPath) {\n    echo_style('green', '  '.$iniPath);\n} else {\n    echo_style('warning', '  WARNING: No configuration file (php.ini) used by PHP!');\n}\n\necho PHP_EOL.PHP_EOL;\n\necho '> Checking Symfony requirements:'.PHP_EOL.'  ';\n\n$messages = array();\nforeach ($symfonyRequirements->getRequirements() as $req) {\n    /** @var $req Requirement */\n    if ($helpText = get_error_message($req, $lineSize)) {\n        echo_style('red', 'E');\n        $messages['error'][] = $helpText;\n    } else {\n        echo_style('green', '.');\n    }\n}\n\n$checkPassed = empty($messages['error']);\n\nforeach ($symfonyRequirements->getRecommendations() as $req) {\n    if ($helpText = get_error_message($req, $lineSize)) {\n        echo_style('yellow', 'W');\n        $messages['warning'][] = $helpText;\n    } else {\n        echo_style('green', '.');\n    }\n}\n\nif ($checkPassed) {\n    echo_block('success', 'OK', 'Your system is ready to run Symfony2 projects');\n} else {\n    echo_block('error', 'ERROR', 'Your system is not ready to run Symfony2 projects');\n\n    echo_title('Fix the following mandatory requirements', 'red');\n\n    foreach ($messages['error'] as $helpText) {\n        echo ' * '.$helpText.PHP_EOL;\n    }\n}\n\nif (!empty($messages['warning'])) {\n    echo_title('Optional recommendations to improve your setup', 'yellow');\n\n    foreach ($messages['warning'] as $helpText) {\n        echo ' * '.$helpText.PHP_EOL;\n    }\n}\n\necho PHP_EOL;\necho_style('title', 'Note');\necho '  The command console could use a different php.ini file'.PHP_EOL;\necho_style('title', '~~~~');\necho '  than the one used with your web server. To be on the'.PHP_EOL;\necho '      safe side, please check the requirements from your web'.PHP_EOL;\necho '      server using the ';\necho_style('yellow', 'web/config.php');\necho ' script.'.PHP_EOL;\necho PHP_EOL;\n\nexit($checkPassed ? 0 : 1);\n\nfunction get_error_message(Requirement $requirement, $lineSize)\n{\n    if ($requirement->isFulfilled()) {\n        return;\n    }\n\n    $errorMessage = wordwrap($requirement->getTestMessage(), $lineSize - 3, PHP_EOL.'   ').PHP_EOL;\n    $errorMessage .= '   > '.wordwrap($requirement->getHelpText(), $lineSize - 5, PHP_EOL.'   > ').PHP_EOL;\n\n    return $errorMessage;\n}\n\nfunction echo_title($title, $style = null)\n{\n    $style = $style ?: 'title';\n\n    echo PHP_EOL;\n    echo_style($style, $title.PHP_EOL);\n    echo_style($style, str_repeat('~', strlen($title)).PHP_EOL);\n    echo PHP_EOL;\n}\n\nfunction echo_style($style, $message)\n{\n    // ANSI color codes\n    $styles = array(\n        'reset' => \"\\033[0m\",\n        'red' => \"\\033[31m\",\n        'green' => \"\\033[32m\",\n        'yellow' => \"\\033[33m\",\n        'error' => \"\\033[37;41m\",\n        'success' => \"\\033[37;42m\",\n        'title' => \"\\033[34m\",\n    );\n    $supports = has_color_support();\n\n    echo($supports ? $styles[$style] : '').$message.($supports ? $styles['reset'] : '');\n}\n\nfunction echo_block($style, $title, $message)\n{\n    $message = ' '.trim($message).' ';\n    $width = strlen($message);\n\n    echo PHP_EOL.PHP_EOL;\n\n    echo_style($style, str_repeat(' ', $width).PHP_EOL);\n    echo_style($style, str_pad(' ['.$title.']', $width, ' ', STR_PAD_RIGHT).PHP_EOL);\n    echo_style($style, str_pad($message, $width, ' ', STR_PAD_RIGHT).PHP_EOL);\n    echo_style($style, str_repeat(' ', $width).PHP_EOL);\n}\n\nfunction has_color_support()\n{\n    static $support;\n\n    if (null === $support) {\n        if (DIRECTORY_SEPARATOR == '\\\\') {\n            $support = false !== getenv('ANSICON') || 'ON' === getenv('ConEmuANSI');\n        } else {\n            $support = function_exists('posix_isatty') && @posix_isatty(STDOUT);\n        }\n    }\n\n    return $support;\n}\n"
  },
  {
    "path": "app/config/config.yml",
    "content": "# This is the main configuration file of your application. It stores all the\n# common options for every execution environment ('prod', 'dev', 'test').\n\n# To avoid creating configuration files that are too long, we first import some\n# files that define the values for important parts of the Symfony application,\n# such as the security component and the dependency injection services\nimports:\n    - { resource: parameters.yml }\n    - { resource: security.yml }\n    - { resource: services.yml }\n    - { resource: '@ElasticSearchBundle/Resources/config/config.yml' }\n    - { resource: '@OAuthBundle/Resources/config/config.yml' }\n    - { resource: '@RabbitMQBundle/Resources/config/config.yml' }\n    - { resource: '@RedisBundle/Resources/config/config.yml' }\n    - { resource: '@RestBundle/Resources/config/config.yml' }\n\n# These are the configuration parameters that define the application's behavior\n# and which are independent from the underlying technical infrastructure\n# See http://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration\nparameters:\n    # This parameter defines the codes of the locales (languages) enabled in the application\n    app_locales: en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca\n    app.notifications.email_sender: anonymous@example.com\n\n# Basic configuration for the Symfony framework features\nframework:\n    # Uncomment the 'ide' option to turn all of the file paths in an exception\n    # page into clickable links that open the given file using your favorite IDE.\n    # Supported values are 'textmate', 'macvim', 'emacs' and 'sublime' shortcuts\n    # and any custom configuration string, such as: \"phpstorm://open?file=%%f&line=%%l\"\n    # See http://symfony.com/doc/current/reference/configuration/framework.html#ide\n    ide: sublime\n\n    # esi:             ~\n    translator:      { fallback: \"%locale%\" }\n    secret:          \"%secret%\"\n    router:\n        resource: \"%kernel.root_dir%/config/routing.yml\"\n        strict_requirements: ~\n    form:            ~\n    csrf_protection: ~\n    validation:      { enable_annotations: true }\n    templating:\n        engines: ['twig']\n    default_locale:  \"%locale%\"\n    trusted_hosts:   ~\n    trusted_proxies: ~\n    session:\n        # handler_id set to null will use default session handler from php.ini\n        handler_id:  ~\n    fragments:       ~\n    http_method_override: true\n    assets: ~\n\n# Twig Configuration (used for rendering application templates)\ntwig:\n    debug:            \"%kernel.debug%\"\n    strict_variables: \"%kernel.debug%\"\n    form_themes:\n        - \"bootstrap_3_layout.html.twig\"\n        - \"form/fields.html.twig\"\n    globals:\n        github_client_id: %github_client_id%\n\n# Assetic Configuration (used for managing web assets: CSS, JavaScript, Sass, etc.)\nassetic:\n    debug:          \"%kernel.debug%\"\n    use_controller: false\n    bundles:        [ ]\n    filters:\n        cssrewrite: ~\n        jsqueeze: ~\n        scssphp:\n            # the formatter must be the FQCN (don't use the 'compressed' value)\n            formatter: \"Leafo\\\\ScssPhp\\\\Formatter\\\\Compressed\"\n\n# Doctrine Configuration (used to access databases and manipulate their information)\ndoctrine:\n    dbal:\n        # instead of configuring the database access options in this file, we pull\n        # them from the app/config/parameters.yml file. The reason is that config.yml\n        # stores options that change the application behavior and parameters.yml\n        # stores options that change from one server to another\n        driver:   \"%database_driver%\"\n        host:     \"%database_host%\"\n        port:     \"%database_port%\"\n        dbname:   \"%database_name%\"\n        user:     \"%database_user%\"\n        password: \"%database_password%\"\n        charset:  UTF8\n        # if using pdo_sqlite as your database driver, add the path in parameters.yml\n        # e.g. database_path: \"%kernel.root_dir%/data/data.db3\"\n        path:     \"%database_path%\"\n\n    orm:\n        auto_generate_proxy_classes: \"%kernel.debug%\"\n        auto_mapping: true\n\n# Swiftmailer Configuration (used to send emails)\nswiftmailer:\n    transport: \"%mailer_transport%\"\n    host:      \"%mailer_host%\"\n    username:  \"%mailer_user%\"\n    password:  \"%mailer_password%\"\n    spool:     { type: memory }\n\n# KnpPaginatorBundle configuration (used to paginate large result set)\nknp_paginator:\n    template:\n        pagination: KnpPaginatorBundle:Pagination:twitter_bootstrap_v3_pagination.html.twig"
  },
  {
    "path": "app/config/config_dev.yml",
    "content": "imports:\n    - { resource: config.yml }\n    - { resource: '@RabbitMQBundle/Resources/config/config_dev.yml' }\n\nframework:\n    router:\n        resource: \"%kernel.root_dir%/config/routing_dev.yml\"\n        strict_requirements: true\n    profiler: { only_exceptions: false }\n\nweb_profiler:\n    toolbar: %kernel.debug%\n    intercept_redirects: false\n\nmonolog:\n    handlers:\n        main:\n            type:   stream\n            path:   \"%kernel.logs_dir%/%kernel.environment%.log\"\n            level:  info\n        console:\n            type:   console\n            bubble: false\n        # uncomment to get logging in your browser\n        # you may have to allow bigger header sizes in your Web server configuration\n        #firephp:\n        #    type:   firephp\n        #    level:  info\n        #chromephp:\n        #    type:   chromephp\n        #    level:  info\n\nassetic:\n    use_controller: true\n\n#swiftmailer:\n#    delivery_address: me@example.com"
  },
  {
    "path": "app/config/config_prod.yml",
    "content": "imports:\n    - { resource: config.yml }\n\n#framework:\n#    validation:\n#        cache: apc\n\n#doctrine:\n#    orm:\n#        metadata_cache_driver: apc\n#        result_cache_driver: apc\n#        query_cache_driver: apc\n\nmonolog:\n    handlers:\n        main:\n            type:         fingers_crossed\n            action_level: error\n            handler:      nested\n        nested:\n            type:  stream\n            path:  \"%kernel.logs_dir%/%kernel.environment%.log\"\n            level: debug\n        console:\n            type:  console\n"
  },
  {
    "path": "app/config/config_test.yml",
    "content": "imports:\n    - { resource: config_dev.yml }\n    - { resource: '@RabbitMQBundle/Resources/config/config_test.yml' }\n\nframework:\n    test: ~\n    session:\n        storage_id: session.storage.mock_file\n    profiler:\n        collect: false\n\nweb_profiler:\n    toolbar: false\n    intercept_redirects: false\n\nswiftmailer:\n    disable_delivery: true\n\n# It's recommended to use a separate database for tests. This allows to have a\n# fixed and known set of data fixtures, it simplifies the code of tests and it\n# makes them more robust.\n# In this case we just need to define a different path for the application database.\ndoctrine:\n    dbal:\n        driver:   \"%database_driver%\"\n        host:     \"%database_host%\"\n        port:     \"%database_port%\"\n        dbname:   \"%database_name%\"\n        user:     \"%database_user%\"\n        password: \"%database_password%\"\n        charset:  UTF8\n        path: \"%kernel.root_dir%/data/blog_test.sqlite\"\n\n# this configuration simplifies testing URLs protected by the security mechanism\n# See http://symfony.com/doc/current/cookbook/testing/http_authentication.html\nsecurity:\n    firewalls:\n        secured_area:\n            http_basic: ~\n\nliip_functional_test:\n    cache_sqlite_db: true"
  },
  {
    "path": "app/config/parameters.yml.dist",
    "content": "# This file defines the canonical configuration parameters of the application.\n# Symfony uses this file as a template to generate the real app/config/parameters.yml\n# used by the application.\n# See http://symfony.com/doc/current/best_practices/configuration.html#canonical-parameters\nparameters:\n    # this demo application uses an embedded SQLite database to simplify setup.\n    # in a real Symfony application you probably will use a MySQL or PostgreSQL database\n    database_driver:   pdo_sqlite\n    database_host:     127.0.0.1\n    database_port:     ~\n    database_name:     ~\n    database_user:     root\n    database_password: ~\n    # the 'database_path' is only used for SQLite type databases\n    database_path:     '%kernel.root_dir%/data/blog.sqlite'\n\n    # Uncomment these lines to use a MySQL database instead of SQLite:\n    #\n    # database_driver: pdo_mysql\n    # database_host: 127.0.0.1\n    # database_port: ~\n    # database_name: symfony_demo\n    # database_user: root\n    # database_password: ~\n    #\n    # You can even create the database and load the sample data from the command line:\n    #\n    # $ cd symfony-demo/\n    # $ php app/console doctrine:database:create\n    # $ php app/console doctrine:schema:create\n    # $ php app/console doctrine:fixtures:load\n\n    # If you don't use a real mail server, you can send emails via your Gmail account.\n    # see http://symfony.com/doc/current/cookbook/email/gmail.html\n    mailer_transport:  smtp\n    mailer_host:       127.0.0.1\n    mailer_user:       ~\n    mailer_password:   ~\n\n    # The code of the default language used by the application ('en' = English)\n    locale: en\n\n    # The 'secret' value is a random string of characters, numbers and symbols\n    # used internally by Symfony in several places (CSRF tokens, URI signing,\n    # 'Remember Me' functionality, etc.)\n    # see: http://symfony.com/doc/current/reference/configuration/framework.html#secret\n    secret: 'secret_value_for_symfony_demo_application'\n\n    github_client_id:     foo # Add your GitHub client id here\n    github_client_secret: foo # Add your GitHub client secret id here"
  },
  {
    "path": "app/config/routing.yml",
    "content": "# These first lines load the all routes defined as @Route() annotations in any\n# controller defined inside the src/AppBundle/Controller/ directory. Controllers\n# are loaded recursively, so you can separate them into subdirectories.\n# If you don't like to add annotations in your applications, you can also define\n# the routes in YAML, XML or PHP files.\n# See http://symfony.com/doc/current/book/routing.html\napp:\n    resource: '@AppBundle/Controller/'\n    type:     annotation\n    prefix:   /{_locale}\n    requirements:\n        _locale: %app_locales%\n    defaults:\n        _locale: %locale%\n\nrest:\n    resource: \"@RestBundle/Resources/config/routing.yml\"\n    type:     rest\n    prefix:   /api\n\noauth:\n    resource: \"@OAuthBundle/Resources/config/routing.yml\"\n    prefix:   /\n\nredis:\n    resource: \"@RedisBundle/Resources/config/routing.yml\"\n    prefix:   /\n\nelastic_search:\n    resource: \"@ElasticSearchBundle/Resources/config/routing.yml\"\n    prefix:   /\n\nrabbit_mq:\n    resource: \"@RabbitMQBundle/Resources/config/routing.yml\"\n    prefix:   /\n# These lines define a route using YAML configuration. The controller used by\n# the route (FrameworkBundle:Template:template) is a convenient shortcut when\n# the template can be rendered without executing any logic in your own controller.\n# See http://symfony.com/doc/current/cookbook/templating/render_without_controller.html\nhomepage:\n    path: /{_locale}\n    requirements:\n        _locale: %app_locales%\n    defaults:\n        _controller: FrameworkBundle:Template:template\n        template:    default/homepage.html.twig\n        _locale:     %locale%\n"
  },
  {
    "path": "app/config/routing_dev.yml",
    "content": "_wdt:\n    resource: \"@WebProfilerBundle/Resources/config/routing/wdt.xml\"\n    prefix:   /_wdt\n\n_profiler:\n    resource: \"@WebProfilerBundle/Resources/config/routing/profiler.xml\"\n    prefix:   /_profiler\n\n_main:\n    resource: routing.yml\n"
  },
  {
    "path": "app/config/security.yml",
    "content": "security:\n    encoders:\n        # Our user class and the algorithm we'll use to encode passwords\n        # http://symfony.com/doc/current/book/security.html#encoding-the-user-s-password\n        AppBundle\\Entity\\User: bcrypt\n\n    providers:\n        # in this example, users are stored via Doctrine in the database\n        # To see the users at src/AppBundle/DataFixtures/ORM/LoadFixtures.php\n        # To load users from somewhere else: http://symfony.com/doc/current/cookbook/security/custom_provider.html\n        database_users:\n            entity: { class: AppBundle:User, property: username }\n        my_custom_hwi_provider:\n             id: oauth.user_provider\n\n    # http://symfony.com/doc/current/book/security.html#firewalls-authentication\n    firewalls:\n        secured_area:\n            # this firewall applies to all URLs\n            pattern: ^/\n\n            # but the firewall does not require login on every page\n            # denying access is done in access_control or in your controllers\n            anonymous: true\n\n            # This allows the user to login by submitting a username and password\n            # Reference: http://symfony.com/doc/current/cookbook/security/form_login_setup.html\n            form_login:\n                # The route name that the login form submits to\n                check_path: security_login_check\n                # The name of the route where the login form lives\n                # When the user tries to access a protected page, they are redirected here\n                login_path: security_login_form\n                success_handler: app.login_success_handler\n                # Secure the login form against CSRF\n                # Reference: http://symfony.com/doc/current/cookbook/security/csrf_in_login_form.html\n                csrf_token_generator: security.csrf.token_manager\n            oauth:\n                resource_owners:\n                    github: \"/oauth/login/check-github\"\n                login_path: security_login_form\n                success_handler: app.login_success_handler\n                oauth_user_provider:\n                    service: oauth.user_provider\n            logout:\n                # The route name the user can go to in order to logout\n                path: security_logout\n                # The name of the route to redirect to after logging out\n                target: homepage\n\n    access_control:\n        # this is a catch-all for the admin area\n        # additional security lives in the controllers\n        - { path: ^/admin, roles: ROLE_ADMIN }\n"
  },
  {
    "path": "app/config/services.yml",
    "content": "services:\n    # First we define some basic services to make these utilities available in\n    # the entire application\n    slugger:\n        class: AppBundle\\Utils\\Slugger\n\n    markdown:\n        class: AppBundle\\Utils\\Markdown\n\n    # These are the Twig extensions that create new filters and functions for\n    # using them in the templates\n    app.twig.app_extension:\n        public:    false\n        class:     AppBundle\\Twig\\AppExtension\n        arguments: ['@markdown', %app_locales%]\n        tags:\n            - { name: twig.extension }\n\n    app.twig.intl_extension:\n        public: false\n        class:  Twig_Extensions_Extension_Intl\n        tags:\n            - { name: twig.extension }\n\n    app.redirect_to_preferred_locale_listener:\n        class: AppBundle\\EventListener\\RedirectToPreferredLocaleListener\n        arguments: ['@router', %app_locales%, %locale%]\n        tags:\n            - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }\n\n    # Uncomment the following lines to define a service for the Post Doctrine repository.\n    # It's not mandatory to create these services, but if you use repositories a lot,\n    # these services simplify your code:\n    #\n    # app.post_repository:\n    #     class:     Doctrine\\ORM\\EntityRepository\n    #     factory:   ['@doctrine.orm.entity_manager', getRepository]\n    #     arguments: [AppBundle\\Entity\\Post]\n    #\n    # // traditional code inside a controller\n    # $entityManager = $this->getDoctrine()->getManager();\n    # $posts = $entityManager->getRepository('AppBundle:Post')->findAll();\n    #\n    # // same code using repository services\n    # $posts = $this->get('app.post_repository')->findAll();\n"
  },
  {
    "path": "app/console",
    "content": "#!/usr/bin/env php\n<?php\n\nuse Symfony\\Bundle\\FrameworkBundle\\Console\\Application;\nuse Symfony\\Component\\Console\\Input\\ArgvInput;\nuse Symfony\\Component\\Debug\\Debug;\n\n// if you don't want to setup permissions the proper way, just uncomment the following PHP line\n// read http://symfony.com/doc/current/book/installation.html#configuration-and-setup for more information\n//umask(0000);\n\nset_time_limit(0);\n\n/**\n * @var Composer\\Autoload\\ClassLoader $loader\n */\n$loader = require __DIR__.'/autoload.php';\n\n$input = new ArgvInput();\n$env = $input->getParameterOption(array('--env', '-e'), getenv('SYMFONY_ENV') ?: 'dev');\n$debug = getenv('SYMFONY_DEBUG') !== '0' && !$input->hasParameterOption(array('--no-debug', '')) && $env !== 'prod';\n\nif ($debug) {\n    Debug::enable();\n}\n\n$kernel = new AppKernel($env, $debug);\n$application = new Application($kernel);\n$application->run($input);\n"
  },
  {
    "path": "app/logs/.gitkeep",
    "content": ""
  },
  {
    "path": "app/phpunit.xml.dist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!-- http://phpunit.de/manual/current/en/appendixes.configuration.html -->\n<phpunit\n    backupGlobals               = \"false\"\n    backupStaticAttributes      = \"false\"\n    colors                      = \"true\"\n    convertErrorsToExceptions   = \"true\"\n    convertNoticesToExceptions  = \"true\"\n    convertWarningsToExceptions = \"true\"\n    processIsolation            = \"false\"\n    stopOnFailure               = \"false\"\n    syntaxCheck                 = \"false\"\n    bootstrap                   = \"autoload.php\" >\n\n    <testsuites>\n        <testsuite name=\"Project Test Suite\">\n            <directory>../src/*Bundle/Tests</directory>\n            <directory>../src/*/*Bundle/Tests</directory>\n            <directory>../src/*/Bundle/*Bundle/Tests</directory>\n        </testsuite>\n    </testsuites>\n\n    <!--\n    <php>\n        <server name=\"KERNEL_DIR\" value=\"/path/to/your/app/\" />\n    </php>\n    -->\n\n    <filter>\n        <whitelist>\n            <directory>../src</directory>\n            <exclude>\n                <directory>../src/*Bundle/Resources</directory>\n                <directory>../src/*Bundle/Tests</directory>\n                <directory>../src/*/*Bundle/Resources</directory>\n                <directory>../src/*/*Bundle/Tests</directory>\n                <directory>../src/*/Bundle/*Bundle/Resources</directory>\n                <directory>../src/*/Bundle/*Bundle/Tests</directory>\n            </exclude>\n        </whitelist>\n    </filter>\n\n</phpunit>\n"
  },
  {
    "path": "composer.json",
    "content": "{\n    \"name\": \"alfonsomga/symfony.demo.on.roids\",\n    \"license\": \"MIT\",\n    \"type\": \"project\",\n    \"description\": \"The Symfony Demo Application On Roids\",\n    \"authors\": [\n        {\n            \"name\": \"Alfonso M. García Astorga\",\n            \"email\": \"me@alfon.io\",\n            \"homepage\": \"https://alfon.io\",\n            \"role\": \"Developer\"\n        }\n    ],\n    \"autoload\": {\n        \"psr-4\": { \"\": \"src/\" },\n        \"classmap\": [ \"app/AppKernel.php\", \"app/AppCache.php\" ]\n    },\n    \"require\": {\n        \"php\"                                  : \">=5.5.21\",\n        \"ext-pdo_sqlite\"                       : \"*\",\n        \"doctrine/doctrine-bundle\"             : \"~1.5\",\n        \"doctrine/doctrine-fixtures-bundle\"    : \"~2.2\",\n        \"doctrine/orm\"                         : \"~2.4\",\n        \"erusev/parsedown\"                     : \"~1.5\",\n        \"ezyang/htmlpurifier\"                  : \"~4.7\",\n        \"incenteev/composer-parameter-handler\" : \"~2.1\",\n        \"ircmaxell/password-compat\"            : \"~1.0\",\n        \"knplabs/knp-paginator-bundle\"         : \"~2.4\",\n        \"leafo/scssphp\"                        : \"~0.1.5\",\n        \"patchwork/jsqueeze\"                   : \"~1.0\",\n        \"sensio/distribution-bundle\"           : \"~5.0\",\n        \"sensio/framework-extra-bundle\"        : \"~3.0\",\n        \"symfony/assetic-bundle\"               : \"~2.6\",\n        \"symfony/monolog-bundle\"               : \"~2.7\",\n        \"symfony/swiftmailer-bundle\"           : \"~2.3\",\n        \"symfony/symfony\"                      : \"~2.8\",\n        \"twig/extensions\"                      : \"~1.2\",\n        \"friendsofsymfony/rest-bundle\": \"~1.7\",\n        \"jms/serializer-bundle\": \"~1.1\",\n        \"nelmio/api-doc-bundle\": \"~2.11\",\n        \"friendsofsymfony/http-cache-bundle\": \"~1.0\",\n        \"willdurand/hateoas-bundle\": \"~1.1\",\n        \"willdurand/rest-extra-bundle\": \"~1.0\",\n        \"hwi/oauth-bundle\": \"0.4.*\",\n        \"predis/predis\": \"^1.0\",\n        \"snc/redis-bundle\": \"1.1.x-dev\",\n        \"friendsofsymfony/elastica-bundle\": \"dev-master\",\n        \"oldsound/rabbitmq-bundle\": \"~1.8\",\n        \"knplabs/knp-snappy-bundle\": \"dev-master\"\n    },\n    \"require-dev\": {\n        \"sensio/generator-bundle\": \"~3.0\",\n        \"liip/functional-test-bundle\": \"~1.3\"\n    },\n    \"scripts\": {\n        \"post-install-cmd\": [\n            \"Incenteev\\\\ParameterHandler\\\\ScriptHandler::buildParameters\",\n            \"Sensio\\\\Bundle\\\\DistributionBundle\\\\Composer\\\\ScriptHandler::buildBootstrap\",\n            \"Sensio\\\\Bundle\\\\DistributionBundle\\\\Composer\\\\ScriptHandler::clearCache\",\n            \"Sensio\\\\Bundle\\\\DistributionBundle\\\\Composer\\\\ScriptHandler::installAssets\",\n            \"Sensio\\\\Bundle\\\\DistributionBundle\\\\Composer\\\\ScriptHandler::installRequirementsFile\",\n            \"Sensio\\\\Bundle\\\\DistributionBundle\\\\Composer\\\\ScriptHandler::prepareDeploymentTarget\"\n        ],\n        \"post-update-cmd\": [\n            \"Incenteev\\\\ParameterHandler\\\\ScriptHandler::buildParameters\",\n            \"Sensio\\\\Bundle\\\\DistributionBundle\\\\Composer\\\\ScriptHandler::buildBootstrap\",\n            \"Sensio\\\\Bundle\\\\DistributionBundle\\\\Composer\\\\ScriptHandler::clearCache\",\n            \"Sensio\\\\Bundle\\\\DistributionBundle\\\\Composer\\\\ScriptHandler::installAssets\",\n            \"Sensio\\\\Bundle\\\\DistributionBundle\\\\Composer\\\\ScriptHandler::installRequirementsFile\",\n            \"Sensio\\\\Bundle\\\\DistributionBundle\\\\Composer\\\\ScriptHandler::prepareDeploymentTarget\"\n        ]\n    },\n    \"config\": {\n        \"bin-dir\": \"bin\",\n        \"platform\": {\n            \"php\": \"5.5.21\"\n        }\n    },\n    \"extra\": {\n        \"symfony-app-dir\": \"app\",\n        \"symfony-web-dir\": \"web\",\n        \"symfony-assets-install\": \"relative\",\n        \"incenteev-parameters\": {\n            \"file\": \"app/config/parameters.yml\"\n        }\n    }\n}\n"
  },
  {
    "path": "src/.htaccess",
    "content": "<IfModule mod_authz_core.c>\n    Require all denied\n</IfModule>\n<IfModule !mod_authz_core.c>\n    Order deny,allow\n    Deny from all\n</IfModule>\n"
  },
  {
    "path": "src/AppBundle/AppBundle.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace AppBundle;\n\nuse Symfony\\Component\\HttpKernel\\Bundle\\Bundle;\n\n/**\n * This class is the one that transforms the src/AppBundle/ directory into a real\n * Symfony bundle. There are two types of bundles:\n *\n *   * Reusable Bundles: they are meant to be shared between different applications.\n *     A lot of them are even publicly available in sites like packagist.org.\n *     See http://symfony.com/doc/current/cookbook/bundles/best_practices.html\n *   * Application bundles: they are never shared, not even with other of your\n *     applications. This allows them to be less strict in some conventions and\n *     their code is usually simpler.\n *     See http://symfony.com/doc/current/best_practices/business-logic.html\n *\n * The AppBundle is an application bundle that is already created when you install\n * Symfony. Using AppBundle to start developing your Symfony application is\n * considered a good practice, but you can also split your application code into\n * as many bundles as you want.\n *\n * @author Ryan Weaver <weaverryan@gmail.com>\n * @author Javier Eguiluz <javier.eguiluz@gmail.com>\n */\nclass AppBundle extends Bundle\n{\n    // At first it's common to leave this class empty, but when the application grows,\n    // you may need to add some initialization code in the boot() method.\n    //\n    // Checkout the Symfony\\Component\\HttpKernel\\Bundle\\Bundle class to see all\n    // the available methods for bundles.\n}\n"
  },
  {
    "path": "src/AppBundle/Command/AddUserCommand.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace AppBundle\\Command;\n\nuse Symfony\\Bundle\\FrameworkBundle\\Command\\ContainerAwareCommand;\nuse Symfony\\Component\\Console\\Input\\InputArgument;\nuse Symfony\\Component\\Console\\Input\\InputInterface;\nuse Symfony\\Component\\Console\\Input\\InputOption;\nuse Symfony\\Component\\Console\\Output\\OutputInterface;\nuse Symfony\\Component\\Console\\Question\\Question;\nuse Doctrine\\Common\\Persistence\\ObjectManager;\nuse AppBundle\\Entity\\User;\n\n/**\n * A command console that creates users and stores them in the database.\n * To use this command, open a terminal window, enter into your project\n * directory and execute the following:\n *\n *     $ php app/console app:add-user\n *\n * To output detailed information, increase the command verbosity:\n *\n *     $ php app/console app:add-user -vv\n *\n * See http://symfony.com/doc/current/cookbook/console/console_command.html\n *\n * @author Javier Eguiluz <javier.eguiluz@gmail.com>\n */\nclass AddUserCommand extends ContainerAwareCommand\n{\n    const MAX_ATTEMPTS = 5;\n\n    /**\n     * @var ObjectManager\n     */\n    private $entityManager;\n\n    /**\n     * {@inheritdoc}\n     */\n    protected function configure()\n    {\n        $this\n            // a good practice is to use the 'app:' prefix to group all your custom application commands\n            ->setName('app:add-user')\n            ->setDescription('Creates users and stores them in the database')\n            ->setHelp($this->getCommandHelp())\n            // commands can optionally define arguments and/or options (mandatory and optional)\n            // see http://symfony.com/doc/current/components/console/console_arguments.html\n            ->addArgument('username', InputArgument::OPTIONAL, 'The username of the new user')\n            ->addArgument('password', InputArgument::OPTIONAL, 'The plain password of the new user')\n            ->addArgument('email', InputArgument::OPTIONAL, 'The email of the new user')\n            ->addOption('is-admin', null, InputOption::VALUE_NONE, 'If set, the user is created as an administrator')\n        ;\n    }\n\n    /**\n     * This method is executed before the interact() and the execute() methods.\n     * It's main purpose is to initialize the variables used in the rest of the\n     * command methods.\n     *\n     * Beware that the input options and arguments are validated after executing\n     * the interact() method, so you can't blindly trust their values in this method.\n     */\n    protected function initialize(InputInterface $input, OutputInterface $output)\n    {\n        $this->entityManager = $this->getContainer()->get('doctrine')->getManager();\n    }\n\n    /**\n     * This method is executed after initialize() and before execute(). Its purpose\n     * is to check if some of the options/arguments are missing and interactively\n     * ask the user for those values.\n     *\n     * This method is completely optional. If you are developing an internal console\n     * command, you probably should not implement this method because it requires\n     * quite a lot of work. However, if the command is meant to be used by external\n     * users, this method is a nice way to fall back and prevent errors.\n     */\n    protected function interact(InputInterface $input, OutputInterface $output)\n    {\n        if (null !== $input->getArgument('username') && null !== $input->getArgument('password') && null !== $input->getArgument('email')) {\n            return;\n        }\n\n        // multi-line messages can be displayed this way...\n        $output->writeln('');\n        $output->writeln('Add User Command Interactive Wizard');\n        $output->writeln('-----------------------------------');\n\n        // ...but you can also pass an array of strings to the writeln() method\n        $output->writeln(array(\n            '',\n            'If you prefer to not use this interactive wizard, provide the',\n            'arguments required by this command as follows:',\n            '',\n            ' $ php app/console app:add-user username password email@example.com',\n            '',\n        ));\n\n        $output->writeln(array(\n            '',\n            'Now we\\'ll ask you for the value of all the missing command arguments.',\n            '',\n        ));\n\n        // See http://symfony.com/doc/current/components/console/helpers/questionhelper.html\n        $console = $this->getHelper('question');\n\n        // Ask for the username if it's not defined\n        $username = $input->getArgument('username');\n        if (null === $username) {\n            $question = new Question(' > <info>Username</info>: ');\n            $question->setValidator(function ($answer) {\n                if (empty($answer)) {\n                    throw new \\RuntimeException('The username cannot be empty');\n                }\n\n                return $answer;\n            });\n            $question->setMaxAttempts(self::MAX_ATTEMPTS);\n\n            $username = $console->ask($input, $output, $question);\n            $input->setArgument('username', $username);\n        } else {\n            $output->writeln(' > <info>Username</info>: '.$username);\n        }\n\n        // Ask for the password if it's not defined\n        $password = $input->getArgument('password');\n        if (null === $password) {\n            $question = new Question(' > <info>Password</info> (your type will be hidden): ');\n            $question->setValidator(array($this, 'passwordValidator'));\n            $question->setHidden(true);\n            $question->setMaxAttempts(self::MAX_ATTEMPTS);\n\n            $password = $console->ask($input, $output, $question);\n            $input->setArgument('password', $password);\n        } else {\n            $output->writeln(' > <info>Password</info>: '.str_repeat('*', strlen($password)));\n        }\n\n        // Ask for the email if it's not defined\n        $email = $input->getArgument('email');\n        if (null === $email) {\n            $question = new Question(' > <info>Email</info>: ');\n            $question->setValidator(array($this, 'emailValidator'));\n            $question->setMaxAttempts(self::MAX_ATTEMPTS);\n\n            $email = $console->ask($input, $output, $question);\n            $input->setArgument('email', $email);\n        } else {\n            $output->writeln(' > <info>Email</info>: '.$email);\n        }\n    }\n\n    /**\n     * This method is executed after interact() and initialize(). It usually\n     * contains the logic to execute to complete this command task.\n     */\n    protected function execute(InputInterface $input, OutputInterface $output)\n    {\n        $startTime = microtime(true);\n\n        $username = $input->getArgument('username');\n        $plainPassword = $input->getArgument('password');\n        $email = $input->getArgument('email');\n        $isAdmin = $input->getOption('is-admin');\n\n        // first check if a user with the same username already exists\n        $existingUser = $this->entityManager->getRepository('AppBundle:User')->findOneBy(array('username' => $username));\n\n        if (null !== $existingUser) {\n            throw new \\RuntimeException(sprintf('There is already a user registered with the \"%s\" username.', $username));\n        }\n\n        // create the user and encode its password\n        $user = new User();\n        $user->setUsername($username);\n        $user->setEmail($email);\n        $user->setRoles(array($isAdmin ? 'ROLE_ADMIN' : 'ROLE_USER'));\n\n        // See http://symfony.com/doc/current/book/security.html#security-encoding-password\n        $encoder = $this->getContainer()->get('security.password_encoder');\n        $encodedPassword = $encoder->encodePassword($user, $plainPassword);\n        $user->setPassword($encodedPassword);\n\n        $this->entityManager->persist($user);\n        $this->entityManager->flush();\n\n        $output->writeln('');\n        $output->writeln(sprintf('[OK] %s was successfully created: %s (%s)', $isAdmin ? 'Administrator user' : 'User', $user->getUsername(), $user->getEmail()));\n\n        if ($output->isVerbose()) {\n            $finishTime = microtime(true);\n            $elapsedTime = $finishTime - $startTime;\n\n            $output->writeln(sprintf('[INFO] New user database id: %d / Elapsed time: %.2f ms', $user->getId(), $elapsedTime*1000));\n        }\n    }\n\n    /**\n     * This internal method should be private, but it's declared as public to\n     * maintain PHP 5.3 compatibility when using it in a callback.\n     *\n     * @internal\n     */\n    public function passwordValidator($plainPassword)\n    {\n        if (empty($plainPassword)) {\n            throw new \\Exception('The password can not be empty');\n        }\n\n        if (strlen(trim($plainPassword)) < 6) {\n            throw new \\Exception('The password must be at least 6 characters long');\n        }\n\n        return $plainPassword;\n    }\n\n    /**\n     * This internal method should be private, but it's declared as public to\n     * maintain PHP 5.3 compatibility when using it in a callback.\n     *\n     * @internal\n     */\n    public function emailValidator($email)\n    {\n        if (empty($email)) {\n            throw new \\Exception('The email can not be empty');\n        }\n\n        if (false === strpos($email, '@')) {\n            throw new \\Exception('The email should look like a real email');\n        }\n\n        return $email;\n    }\n\n    /**\n     * The command help is usually included in the configure() method, but when\n     * it's too long, it's better to define a separate method to maintain the\n     * code readability.\n     */\n    private function getCommandHelp()\n    {\n        return <<<HELP\nThe <info>%command.name%</info> command creates new users and saves them in the database:\n\n  <info>php %command.full_name%</info> <comment>username password email</comment>\n\nBy default the command creates regular users. To create administrator users,\nadd the <comment>--is-admin</comment> option:\n\n  <info>php %command.full_name%</info> username password email <comment>--is-admin</comment>\n\nIf you omit any of the three required arguments, the command will ask you to\nprovide the missing values:\n\n  # command will ask you for the email\n  <info>php %command.full_name%</info> <comment>username password</comment>\n\n  # command will ask you for the email and password\n  <info>php %command.full_name%</info> <comment>username</comment>\n\n  # command will ask you for all arguments\n  <info>php %command.full_name%</info>\n\nHELP;\n    }\n}\n"
  },
  {
    "path": "src/AppBundle/Command/DeleteUserCommand.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace AppBundle\\Command;\n\nuse AppBundle\\Entity\\User;\nuse Symfony\\Bundle\\FrameworkBundle\\Command\\ContainerAwareCommand;\nuse Symfony\\Component\\Console\\Input\\InputArgument;\nuse Symfony\\Component\\Console\\Input\\InputInterface;\nuse Symfony\\Component\\Console\\Output\\OutputInterface;\nuse Symfony\\Component\\Console\\Question\\Question;\nuse Doctrine\\Common\\Persistence\\ObjectManager;\n\n/**\n * A command console that deletes users from the database.\n * To use this command, open a terminal window, enter into your project\n * directory and execute the following:\n *\n *     $ php app/console app:delete-user\n *\n * Check out the code of the src/AppBundle/Command/AddUserCommand.php file for\n * the full explanation about Symfony commands.\n * See http://symfony.com/doc/current/cookbook/console/console_command.html\n *\n * @author Oleg Voronkovich <oleg-voronkovich@yandex.ru>\n */\nclass DeleteUserCommand extends ContainerAwareCommand\n{\n    const MAX_ATTEMPTS = 5;\n\n    /**\n     * @var ObjectManager\n     */\n    private $entityManager;\n\n    /**\n     * {@inheritdoc}\n     */\n    protected function configure()\n    {\n        $this\n            ->setName('app:delete-user')\n            ->setDescription('Deletes users from the database')\n            ->addArgument('username', InputArgument::REQUIRED, 'The username of an existing user')\n            ->setHelp(<<<HELP\nThe <info>%command.name%</info> command deletes users from the database:\n\n  <info>php %command.full_name%</info> <comment>username</comment>\n\nIf you omit the argument, the command will ask you to\nprovide the missing value:\n\n  <info>php %command.full_name%</info>\nHELP\n            );\n    }\n\n    protected function initialize(InputInterface $input, OutputInterface $output)\n    {\n        $this->entityManager = $this->getContainer()->get('doctrine')->getManager();\n    }\n\n    protected function interact(InputInterface $input, OutputInterface $output)\n    {\n        if (null !== $input->getArgument('username')) {\n            return;\n        }\n\n        $output->writeln('');\n        $output->writeln('Delete User Command Interactive Wizard');\n        $output->writeln('-----------------------------------');\n\n        $output->writeln(array(\n            '',\n            'If you prefer to not use this interactive wizard, provide the',\n            'arguments required by this command as follows:',\n            '',\n            ' $ php app/console app:delete-user username',\n            '',\n        ));\n\n        $output->writeln(array(\n            '',\n            'Now we\\'ll ask you for the value of all the missing command arguments.',\n            '',\n        ));\n\n        $helper = $this->getHelper('question');\n\n        $question = new Question(' > <info>Username</info>: ');\n        $question->setValidator(array($this, 'usernameValidator'));\n        $question->setMaxAttempts(self::MAX_ATTEMPTS);\n\n        $username = $helper->ask($input, $output, $question);\n        $input->setArgument('username', $username);\n    }\n\n    protected function execute(InputInterface $input, OutputInterface $output)\n    {\n        $username = $input->getArgument('username');\n        $this->usernameValidator($username);\n\n        $repository = $this->entityManager->getRepository('AppBundle:User');\n        /** @var User $user */\n        $user = $repository->findOneByUsername($username);\n\n        if (null === $user) {\n            throw new \\RuntimeException(sprintf('User with username \"%s\" not found.', $username));\n        }\n\n        // After an entity has been removed its in-memory state is the same\n        // as before the removal, except for generated identifiers.\n        // See http://docs.doctrine-project.org/en/latest/reference/working-with-objects.html#removing-entities\n        $userId = $user->getId();\n\n        $this->entityManager->remove($user);\n        $this->entityManager->flush();\n\n        $output->writeln('');\n        $output->writeln(sprintf('[OK] User \"%s\" (ID: %d, email: %s) was successfully deleted.', $user->getUsername(), $userId, $user->getEmail()));\n    }\n\n    /**\n     * This internal method should be private, but it's declared public to\n     * maintain PHP 5.3 compatibility when using it in a callback.\n     *\n     * @internal\n     */\n    public function usernameValidator($username)\n    {\n        if (empty($username)) {\n            throw new \\Exception('The username can not be empty.');\n        }\n\n        if (1 !== preg_match('/^[a-z_]+$/', $username)) {\n            throw new \\Exception('The username must contain only lowercase latin characters and underscores.');\n        }\n\n        return $username;\n    }\n}\n"
  },
  {
    "path": "src/AppBundle/Command/ListUsersCommand.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace AppBundle\\Command;\n\nuse AppBundle\\Entity\\User;\nuse Doctrine\\Common\\Persistence\\ObjectManager;\nuse Symfony\\Bundle\\FrameworkBundle\\Command\\ContainerAwareCommand;\nuse Symfony\\Component\\Console\\Helper\\Table;\nuse Symfony\\Component\\Console\\Input\\InputInterface;\nuse Symfony\\Component\\Console\\Input\\InputOption;\nuse Symfony\\Component\\Console\\Output\\OutputInterface;\nuse Symfony\\Component\\Console\\Output\\BufferedOutput;\n\n/**\n * A command console that lists all the existing users. To use this command, open\n * a terminal window, enter into your project directory and execute the following:\n *\n *     $ php app/console app:list-users\n *\n * See http://symfony.com/doc/current/cookbook/console/console_command.html\n *\n * @author Javier Eguiluz <javier.eguiluz@gmail.com>\n */\nclass ListUsersCommand extends ContainerAwareCommand\n{\n    /**\n     * @var ObjectManager\n     */\n    private $entityManager;\n\n    /**\n     * {@inheritdoc}\n     */\n    protected function configure()\n    {\n        $this\n            // a good practice is to use the 'app:' prefix to group all your custom application commands\n            ->setName('app:list-users')\n            ->setDescription('Lists all the existing users')\n            ->setHelp(<<<HELP\nThe <info>%command.name%</info> command lists all the users registered in the application:\n\n  <info>php %command.full_name%</info>\n\nBy default the command only displays the 50 most recent users. Set the number of\nresults to display with the <comment>--max-results</comment> option:\n\n  <info>php %command.full_name%</info> <comment>--max-results=2000</comment>\n\nIn addition to displaying the user list, you can also send this information to\nthe email address specified in the <comment>--send-to</comment> option:\n\n  <info>php %command.full_name%</info> <comment>--send-to=fabien@symfony.com</comment>\n\nHELP\n            )\n            // commands can optionally define arguments and/or options (mandatory and optional)\n            // see http://symfony.com/doc/current/components/console/console_arguments.html\n            ->addOption('max-results', null, InputOption::VALUE_OPTIONAL, 'Limits the number of users listed', 50)\n            ->addOption('send-to', null, InputOption::VALUE_OPTIONAL, 'If set, the result is sent to the given email address')\n        ;\n    }\n\n    /**\n     * This method is executed before the the execute() method. It's main purpose\n     * is to initialize the variables used in the rest of the command methods.\n     */\n    protected function initialize(InputInterface $input, OutputInterface $output)\n    {\n        $this->entityManager = $this->getContainer()->get('doctrine')->getManager();\n    }\n\n    /**\n     * This method is executed after initialize(). It usually contains the logic\n     * to execute to complete this command task.\n     */\n    protected function execute(InputInterface $input, OutputInterface $output)\n    {\n        $maxResults = $input->getOption('max-results');\n        // Use ->findBy() instead of ->findAll() to allow result sorting and limiting\n        $users = $this->entityManager->getRepository('AppBundle:User')->findBy(array(), array('id' => 'DESC'), $maxResults);\n\n        // Doctrine query returns an array of objects and we need an array of plain arrays\n        $usersAsPlainArrays = array_map(function (User $user) {\n            return array($user->getId(), $user->getUsername(), $user->getEmail(), implode(', ', $user->getRoles()));\n        }, $users);\n\n        // In your console commands you should always use the regular output type,\n        // which outputs contents directly in the console window. However, this\n        // particular command uses the BufferedOutput type instead.\n        // The reason is that the table displaying the list of users can be sent\n        // via email if the '--send-to' option is provided. Instead of complicating\n        // things, the BufferedOutput allows to get the command output and store\n        // it in a variable before displaying it.\n        $bufferedOutput = new BufferedOutput();\n\n        $table = new Table($bufferedOutput);\n        $table\n            ->setHeaders(array('ID', 'Username', 'Email', 'Roles'))\n            ->setRows($usersAsPlainArrays)\n        ;\n        $table->render();\n\n        // instead of displaying the table of users, store it in a variable\n        $tableContents = $bufferedOutput->fetch();\n\n        if (null !== $email = $input->getOption('send-to')) {\n            $this->sendReport($tableContents, $email);\n        }\n\n        $output->writeln($tableContents);\n    }\n\n    /**\n     * Sends the given $contents to the $recipient email address.\n     *\n     * @param string $contents\n     * @param string $recipient\n     */\n    private function sendReport($contents, $recipient)\n    {\n        // See http://symfony.com/doc/current/cookbook/email/email.html\n        $mailer = $this->getContainer()->get('mailer');\n\n        $message = $mailer->createMessage()\n            ->setSubject(sprintf('app:list-users report (%s)', date('Y-m-d H:i:s')))\n            ->setFrom($this->getContainer()->getParameter('app.notifications.email_sender'))\n            ->setTo($recipient)\n            ->setBody($contents, 'text/plain')\n        ;\n\n        $mailer->send($message);\n    }\n}\n"
  },
  {
    "path": "src/AppBundle/Controller/Admin/BlogController.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace AppBundle\\Controller\\Admin;\n\nuse AppBundle\\Form\\PostType;\nuse Symfony\\Component\\HttpFoundation\\Request;\nuse Symfony\\Bundle\\FrameworkBundle\\Controller\\Controller;\nuse Sensio\\Bundle\\FrameworkExtraBundle\\Configuration\\Method;\nuse Sensio\\Bundle\\FrameworkExtraBundle\\Configuration\\Route;\nuse Sensio\\Bundle\\FrameworkExtraBundle\\Configuration\\Security;\nuse AppBundle\\Entity\\Post;\n\n/**\n * Controller used to manage blog contents in the backend.\n *\n * Please note that the application backend is developed manually for learning\n * purposes. However, in your real Symfony application you should use any of the\n * existing bundles that let you generate ready-to-use backends without effort.\n * See http://knpbundles.com/keyword/admin\n *\n * @Route(\"/admin/post\")\n * @Security(\"has_role('ROLE_ADMIN')\")\n *\n * @author Ryan Weaver <weaverryan@gmail.com>\n * @author Javier Eguiluz <javier.eguiluz@gmail.com>\n */\nclass BlogController extends Controller\n{\n    /**\n     * Lists all Post entities.\n     *\n     * This controller responds to two different routes with the same URL:\n     *   * 'admin_post_index' is the route with a name that follows the same\n     *     structure as the rest of the controllers of this class.\n     *   * 'admin_index' is a nice shortcut to the backend homepage. This allows\n     *     to create simpler links in the templates. Moreover, in the future we\n     *     could move this annotation to any other controller while maintaining\n     *     the route name and therefore, without breaking any existing link.\n     *\n     * @Route(\"/\", name=\"admin_index\")\n     * @Route(\"/\", name=\"admin_post_index\")\n     * @Method(\"GET\")\n     */\n    public function indexAction()\n    {\n        $entityManager = $this->getDoctrine()->getManager();\n        $posts = $entityManager->getRepository('AppBundle:Post')->findAll();\n\n        return $this->render('admin/blog/index.html.twig', array('posts' => $posts));\n    }\n\n    /**\n     * Creates a new Post entity.\n     *\n     * @Route(\"/new\", name=\"admin_post_new\")\n     * @Method({\"GET\", \"POST\"})\n     *\n     * NOTE: the Method annotation is optional, but it's a recommended practice\n     * to constraint the HTTP methods each controller responds to (by default\n     * it responds to all methods).\n     */\n    public function newAction(Request $request)\n    {\n        $post = new Post();\n        $post->setAuthorEmail($this->getUser()->getEmail());\n\n        // See http://symfony.com/doc/current/book/forms.html#submitting-forms-with-multiple-buttons\n        $form = $this->createForm('AppBundle\\Form\\PostType', $post)\n            ->add('saveAndCreateNew', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\SubmitType');\n\n        $form->handleRequest($request);\n\n        // the isSubmitted() method is completely optional because the other\n        // isValid() method already checks whether the form is submitted.\n        // However, we explicitly add it to improve code readability.\n        // See http://symfony.com/doc/current/best_practices/forms.html#handling-form-submits\n        if ($form->isSubmitted() && $form->isValid()) {\n            $post->setSlug($this->get('slugger')->slugify($post->getTitle()));\n\n            $entityManager = $this->getDoctrine()->getManager();\n            $entityManager->persist($post);\n            $entityManager->flush();\n\n            // Flash messages are used to notify the user about the result of the\n            // actions. They are deleted automatically from the session as soon\n            // as they are accessed.\n            // See http://symfony.com/doc/current/book/controller.html#flash-messages\n            $this->addFlash('success', 'post.created_successfully');\n\n            if ($form->get('saveAndCreateNew')->isClicked()) {\n                return $this->redirectToRoute('admin_post_new');\n            }\n\n            return $this->redirectToRoute('admin_post_index');\n        }\n\n        return $this->render('admin/blog/new.html.twig', array(\n            'post' => $post,\n            'form' => $form->createView(),\n        ));\n    }\n\n    /**\n     * Finds and displays a Post entity.\n     *\n     * @Route(\"/{id}\", requirements={\"id\" = \"\\d+\"}, name=\"admin_post_show\")\n     * @Method(\"GET\")\n     */\n    public function showAction(Post $post)\n    {\n        // This security check can also be performed:\n        //   1. Using an annotation: @Security(\"post.isAuthor(user)\")\n        //   2. Using a \"voter\" (see http://symfony.com/doc/current/cookbook/security/voters_data_permission.html)\n        if (null === $this->getUser() || !$post->isAuthor($this->getUser())) {\n            throw $this->createAccessDeniedException('Posts can only be shown to their authors.');\n        }\n\n        $deleteForm = $this->createDeleteForm($post);\n\n        return $this->render('admin/blog/show.html.twig', array(\n            'post'        => $post,\n            'delete_form' => $deleteForm->createView(),\n        ));\n    }\n\n    /**\n     * Displays a form to edit an existing Post entity.\n     *\n     * @Route(\"/{id}/edit\", requirements={\"id\" = \"\\d+\"}, name=\"admin_post_edit\")\n     * @Method({\"GET\", \"POST\"})\n     */\n    public function editAction(Post $post, Request $request)\n    {\n        if (null === $this->getUser() || !$post->isAuthor($this->getUser())) {\n            throw $this->createAccessDeniedException('Posts can only be edited by their authors.');\n        }\n\n        $entityManager = $this->getDoctrine()->getManager();\n\n        $editForm = $this->createForm('AppBundle\\Form\\PostType', $post);\n        $deleteForm = $this->createDeleteForm($post);\n\n        $editForm->handleRequest($request);\n\n        if ($editForm->isSubmitted() && $editForm->isValid()) {\n            $post->setSlug($this->get('slugger')->slugify($post->getTitle()));\n            $post->setUpdatedAt(new \\DateTime('now'));\n            $entityManager->flush();\n\n            $this->addFlash('success', 'post.updated_successfully');\n\n            return $this->redirectToRoute('admin_post_edit', array('id' => $post->getId()));\n        }\n\n        return $this->render('admin/blog/edit.html.twig', array(\n            'post'        => $post,\n            'edit_form'   => $editForm->createView(),\n            'delete_form' => $deleteForm->createView(),\n        ));\n    }\n\n    /**\n     * Deletes a Post entity.\n     *\n     * @Route(\"/{id}\", name=\"admin_post_delete\")\n     * @Method(\"DELETE\")\n     * @Security(\"post.isAuthor(user)\")\n     *\n     * The Security annotation value is an expression (if it evaluates to false,\n     * the authorization mechanism will prevent the user accessing this resource).\n     * The isAuthor() method is defined in the AppBundle\\Entity\\Post entity.\n     */\n    public function deleteAction(Request $request, Post $post)\n    {\n        $form = $this->createDeleteForm($post);\n        $form->handleRequest($request);\n\n        if ($form->isSubmitted() && $form->isValid()) {\n            $entityManager = $this->getDoctrine()->getManager();\n\n            $entityManager->remove($post);\n            $entityManager->flush();\n\n            $this->addFlash('success', 'post.deleted_successfully');\n        }\n\n        return $this->redirectToRoute('admin_post_index');\n    }\n\n    /**\n     * Creates a form to delete a Post entity by id.\n     *\n     * This is necessary because browsers don't support HTTP methods different\n     * from GET and POST. Since the controller that removes the blog posts expects\n     * a DELETE method, the trick is to create a simple form that *fakes* the\n     * HTTP DELETE method.\n     * See http://symfony.com/doc/current/cookbook/routing/method_parameters.html.\n     *\n     * @param Post $post The post object\n     *\n     * @return \\Symfony\\Component\\Form\\Form The form\n     */\n    private function createDeleteForm(Post $post)\n    {\n        return $this->createFormBuilder()\n            ->setAction($this->generateUrl('admin_post_delete', array('id' => $post->getId())))\n            ->setMethod('DELETE')\n            ->getForm()\n        ;\n    }\n}\n"
  },
  {
    "path": "src/AppBundle/Controller/BlogController.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace AppBundle\\Controller;\n\nuse AppBundle\\Entity\\Comment;\nuse AppBundle\\Entity\\Post;\nuse AppBundle\\Form\\CommentType;\nuse Sensio\\Bundle\\FrameworkExtraBundle\\Configuration\\Method;\nuse Sensio\\Bundle\\FrameworkExtraBundle\\Configuration\\ParamConverter;\nuse Sensio\\Bundle\\FrameworkExtraBundle\\Configuration\\Route;\nuse Sensio\\Bundle\\FrameworkExtraBundle\\Configuration\\Security;\nuse Symfony\\Bundle\\FrameworkBundle\\Controller\\Controller;\nuse Symfony\\Component\\HttpFoundation\\Request;\nuse Symfony\\Component\\HttpFoundation\\Response;\n\n/**\n * Controller used to manage blog contents in the public part of the site.\n *\n * @Route(\"/blog\")\n *\n * @author Ryan Weaver <weaverryan@gmail.com>\n * @author Javier Eguiluz <javier.eguiluz@gmail.com>\n */\nclass BlogController extends Controller\n{\n    /**\n     * @Route(\"/\", name=\"blog_index\", defaults={\"page\" = 1})\n     * @Route(\"/page/{page}\", name=\"blog_index_paginated\", requirements={\"page\" : \"\\d+\"})\n     */\n    public function indexAction($page)\n    {\n        $query = $this->getDoctrine()->getRepository('AppBundle:Post')->queryLatest();\n\n        $paginator = $this->get('knp_paginator');\n        $posts = $paginator->paginate($query, $page, Post::NUM_ITEMS);\n        $posts->setUsedRoute('blog_index_paginated');\n\n        return $this->render('blog/index.html.twig', array('posts' => $posts));\n    }\n\n    /**\n     * @Route(\"/posts/{slug}\", name=\"blog_post\")\n     *\n     * NOTE: The $post controller argument is automatically injected by Symfony\n     * after performing a database query looking for a Post with the 'slug'\n     * value given in the route.\n     * See http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/converters.html\n     */\n    public function postShowAction(Post $post)\n    {\n        return $this->render('blog/post_show.html.twig', array('post' => $post));\n    }\n\n    /**\n     * @Route(\"/comment/{postSlug}/new\", name = \"comment_new\")\n     * @Security(\"is_granted('IS_AUTHENTICATED_FULLY')\")\n     *\n     * @Method(\"POST\")\n     * @ParamConverter(\"post\", options={\"mapping\": {\"postSlug\": \"slug\"}})\n     *\n     * NOTE: The ParamConverter mapping is required because the route parameter\n     * (postSlug) doesn't match any of the Doctrine entity properties (slug).\n     * See http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/converters.html#doctrine-converter\n     */\n    public function commentNewAction(Request $request, Post $post)\n    {\n        $form = $this->createForm('AppBundle\\Form\\CommentType');\n        $form->handleRequest($request);\n\n        if ($form->isSubmitted() && $form->isValid()) {\n            /** @var Comment $comment */\n            $comment = $form->getData();\n            $comment->setAuthorEmail($this->getUser()->getEmail());\n            $comment->setPost($post);\n\n            $entityManager = $this->getDoctrine()->getManager();\n            $entityManager->persist($comment);\n            $entityManager->flush();\n\n            return $this->redirectToRoute('blog_post', array('slug' => $post->getSlug()));\n        }\n\n        return $this->render('blog/comment_form_error.html.twig', array(\n            'post' => $post,\n            'form' => $form->createView(),\n        ));\n    }\n\n    /**\n     * This controller is called directly via the render() function in the\n     * blog/post_show.html.twig template. That's why it's not needed to define\n     * a route name for it.\n     *\n     * The \"id\" of the Post is passed in and then turned into a Post object\n     * automatically by the ParamConverter.\n     *\n     * @param Post $post\n     *\n     * @return Response\n     */\n    public function commentFormAction(Post $post)\n    {\n        $form = $this->createForm('AppBundle\\Form\\CommentType');\n\n        return $this->render('blog/_comment_form.html.twig', array(\n            'post' => $post,\n            'form' => $form->createView(),\n        ));\n    }\n}\n"
  },
  {
    "path": "src/AppBundle/Controller/SecurityController.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace AppBundle\\Controller;\n\nuse Symfony\\Bundle\\FrameworkBundle\\Controller\\Controller;\nuse Sensio\\Bundle\\FrameworkExtraBundle\\Configuration\\Route;\n\n/**\n * Controller used to manage the application security.\n * See http://symfony.com/doc/current/cookbook/security/form_login_setup.html.\n *\n * @author Ryan Weaver <weaverryan@gmail.com>\n * @author Javier Eguiluz <javier.eguiluz@gmail.com>\n */\nclass SecurityController extends Controller\n{\n    /**\n     * @Route(\"/login\", name=\"security_login_form\")\n     */\n    public function loginAction()\n    {\n        $helper = $this->get('security.authentication_utils');\n\n        return $this->render('security/login.html.twig', array(\n            // last username entered by the user (if any)\n            'last_username' => $helper->getLastUsername(),\n            // last authentication error (if any)\n            'error' => $helper->getLastAuthenticationError(),\n        ));\n    }\n\n    /**\n     * This is the route the login form submits to.\n     *\n     * But, this will never be executed. Symfony will intercept this first\n     * and handle the login automatically. See form_login in app/config/security.yml\n     *\n     * @Route(\"/login_check\", name=\"security_login_check\")\n     */\n    public function loginCheckAction()\n    {\n        throw new \\Exception('This should never be reached!');\n    }\n\n    /**\n     * This is the route the user can use to logout.\n     *\n     * But, this will never be executed. Symfony will intercept this first\n     * and handle the logout automatically. See logout in app/config/security.yml\n     *\n     * @Route(\"/logout\", name=\"security_logout\")\n     */\n    public function logoutAction()\n    {\n        throw new \\Exception('This should never be reached!');\n    }\n}\n"
  },
  {
    "path": "src/AppBundle/DataFixtures/ORM/LoadFixtures.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace AppBundle\\DataFixtures\\ORM;\n\nuse AppBundle\\Entity\\User;\nuse AppBundle\\Entity\\Post;\nuse AppBundle\\Entity\\Comment;\nuse Doctrine\\Common\\DataFixtures\\FixtureInterface;\nuse Doctrine\\Common\\Persistence\\ObjectManager;\nuse Symfony\\Component\\DependencyInjection\\ContainerAwareInterface;\nuse Symfony\\Component\\DependencyInjection\\ContainerInterface;\n\n/**\n * Defines the sample data to load in the database when running the unit and\n * functional tests. Execute this command to load the data:\n *\n *   $ php app/console doctrine:fixtures:load\n *\n * See http://symfony.com/doc/current/bundles/DoctrineFixturesBundle/index.html\n *\n * @author Ryan Weaver <weaverryan@gmail.com>\n * @author Javier Eguiluz <javier.eguiluz@gmail.com>\n */\nclass LoadFixtures implements FixtureInterface, ContainerAwareInterface\n{\n    /** @var ContainerInterface */\n    private $container;\n\n    /**\n     * {@inheritdoc}\n     */\n    public function load(ObjectManager $manager)\n    {\n        $this->loadUsers($manager);\n        $this->loadPosts($manager);\n    }\n\n    private function loadUsers(ObjectManager $manager)\n    {\n        $passwordEncoder = $this->container->get('security.password_encoder');\n\n        $johnUser = new User();\n        $johnUser->setUsername('john_user');\n        $johnUser->setEmail('john_user@symfony.com');\n        $encodedPassword = $passwordEncoder->encodePassword($johnUser, 'kitten');\n        $johnUser->setPassword($encodedPassword);\n        $manager->persist($johnUser);\n\n        $annaAdmin = new User();\n        $annaAdmin->setUsername('anna_admin');\n        $annaAdmin->setEmail('anna_admin@symfony.com');\n        $annaAdmin->setRoles(array('ROLE_ADMIN'));\n        $encodedPassword = $passwordEncoder->encodePassword($annaAdmin, 'kitten');\n        $annaAdmin->setPassword($encodedPassword);\n        $manager->persist($annaAdmin);\n\n        $manager->flush();\n    }\n\n    private function loadPosts(ObjectManager $manager)\n    {\n        foreach (range(1, 30) as $i) {\n            $post = new Post();\n\n            $post->setTitle($this->getRandomPostTitle());\n            $post->setSummary($this->getRandomPostSummary());\n            $post->setSlug($this->container->get('slugger')->slugify($post->getTitle()));\n            $post->setContent($this->getPostContent());\n            $post->setAuthorEmail('anna_admin@symfony.com');\n            $post->setPublishedAt(new \\DateTime('now - '.$i.'days'));\n\n            foreach (range(1, 5) as $j) {\n                $comment = new Comment();\n\n                $comment->setAuthorEmail('john_user@symfony.com');\n                $comment->setPublishedAt(new \\DateTime('now + '.($i + $j).'seconds'));\n                $comment->setContent($this->getRandomCommentContent());\n                $comment->setPost($post);\n\n                $manager->persist($comment);\n                $post->addComment($comment);\n            }\n\n            $manager->persist($post);\n        }\n\n        $manager->flush();\n    }\n\n    /**\n     * {@inheritdoc}\n     */\n    public function setContainer(ContainerInterface $container = null)\n    {\n        $this->container = $container;\n    }\n\n    private function getPostContent()\n    {\n        return <<<MARKDOWN\nLorem ipsum dolor sit amet consectetur adipisicing elit, sed do eiusmod tempor\nincididunt ut labore et **dolore magna aliqua**: Duis aute irure dolor in\nreprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\nExcepteur sint occaecat cupidatat non proident, sunt in culpa qui officia\ndeserunt mollit anim id est laborum.\n\n  * Ut enim ad minim veniam\n  * Quis nostrud exercitation *ullamco laboris*\n  * Nisi ut aliquip ex ea commodo consequat\n\nPraesent id fermentum lorem. Ut est lorem, fringilla at accumsan nec, euismod at\nnunc. Aenean mattis sollicitudin mattis. Nullam pulvinar vestibulum bibendum.\nClass aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos\nhimenaeos. Fusce nulla purus, gravida ac interdum ut, blandit eget ex. Duis a\nluctus dolor.\n\nInteger auctor massa maximus nulla scelerisque accumsan. *Aliquam ac malesuada*\nex. Pellentesque tortor magna, vulputate eu vulputate ut, venenatis ac lectus.\nPraesent ut lacinia sem. Mauris a lectus eget felis mollis feugiat. Quisque\nefficitur, mi ut semper pulvinar, urna urna blandit massa, eget tincidunt augue\nnulla vitae est.\n\nUt posuere aliquet tincidunt. Aliquam erat volutpat. **Class aptent taciti**\nsociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Morbi\narcu orci, gravida eget aliquam eu, suscipit et ante. Morbi vulputate metus vel\nipsum finibus, ut dapibus massa feugiat. Vestibulum vel lobortis libero. Sed\ntincidunt tellus et viverra scelerisque. Pellentesque tincidunt cursus felis.\nSed in egestas erat.\n\nAliquam pulvinar interdum massa, vel ullamcorper ante consectetur eu. Vestibulum\nlacinia ac enim vel placerat. Integer pulvinar magna nec dui malesuada, nec\ncongue nisl dictum. Donec mollis nisl tortor, at congue erat consequat a. Nam\ntempus elit porta, blandit elit vel, viverra lorem. Sed sit amet tellus\ntincidunt, faucibus nisl in, aliquet libero.\nMARKDOWN;\n    }\n\n    private function getPhrases()\n    {\n        return array(\n            'Lorem ipsum dolor sit amet consectetur adipiscing elit',\n            'Pellentesque vitae velit ex',\n            'Mauris dapibus risus quis suscipit vulputate',\n            'Eros diam egestas libero eu vulputate risus',\n            'In hac habitasse platea dictumst',\n            'Morbi tempus commodo mattis',\n            'Ut suscipit posuere justo at vulputate',\n            'Ut eleifend mauris et risus ultrices egestas',\n            'Aliquam sodales odio id eleifend tristique',\n            'Urna nisl sollicitudin id varius orci quam id turpis',\n            'Nulla porta lobortis ligula vel egestas',\n            'Curabitur aliquam euismod dolor non ornare',\n            'Sed varius a risus eget aliquam',\n            'Nunc viverra elit ac laoreet suscipit',\n            'Pellentesque et sapien pulvinar consectetur',\n        );\n    }\n\n    private function getRandomPostTitle()\n    {\n        $titles = $this->getPhrases();\n\n        return $titles[array_rand($titles)];\n    }\n\n    private function getRandomPostSummary()\n    {\n        $phrases = $this->getPhrases();\n\n        $numPhrases = rand(6, 12);\n        shuffle($phrases);\n\n        return implode(' ', array_slice($phrases, 0, $numPhrases-1));\n    }\n\n    private function getRandomCommentContent()\n    {\n        $phrases = $this->getPhrases();\n\n        $numPhrases = rand(2, 15);\n        shuffle($phrases);\n\n        return implode(' ', array_slice($phrases, 0, $numPhrases-1));\n    }\n}\n"
  },
  {
    "path": "src/AppBundle/Entity/Comment.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace AppBundle\\Entity;\n\nuse Doctrine\\ORM\\Mapping as ORM;\nuse Symfony\\Component\\Validator\\Constraints as Assert;\n\n/**\n * @ORM\\Entity\n *\n * Defines the properties of the Comment entity to represent the blog comments.\n * See http://symfony.com/doc/current/book/doctrine.html#creating-an-entity-class\n *\n * Tip: if you have an existing database, you can generate these entity class automatically.\n * See http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html\n *\n * @author Ryan Weaver <weaverryan@gmail.com>\n * @author Javier Eguiluz <javier.eguiluz@gmail.com>\n */\nclass Comment\n{\n    /**\n     * @ORM\\Id\n     * @ORM\\GeneratedValue\n     * @ORM\\Column(type=\"integer\")\n     */\n    private $id;\n\n    /**\n     * @ORM\\ManyToOne(targetEntity=\"Post\", inversedBy=\"comments\")\n     * @ORM\\JoinColumn(nullable=false)\n     */\n    private $post;\n\n    /**\n     * @ORM\\Column(type=\"text\")\n     * @Assert\\NotBlank(message=\"comment.blank\")\n     * @Assert\\Length(\n     *     min = \"5\",\n     *     minMessage = \"comment.too_short\",\n     *     max = \"10000\",\n     *     maxMessage = \"comment.too_long\"\n     * )\n     */\n    private $content;\n\n    /**\n     * @ORM\\Column(type=\"string\")\n     * @Assert\\Email()\n     */\n    private $authorEmail;\n\n    /**\n     * @ORM\\Column(type=\"datetime\")\n     * @Assert\\DateTime()\n     */\n    private $publishedAt;\n\n    public function __construct()\n    {\n        $this->publishedAt = new \\DateTime();\n    }\n\n    /**\n     * @Assert\\IsTrue(message = \"comment.is_spam\")\n     */\n    public function isLegitComment()\n    {\n        $containsInvalidCharacters = false !== strpos($this->content, '@');\n\n        return !$containsInvalidCharacters;\n    }\n\n    public function getId()\n    {\n        return $this->id;\n    }\n\n    public function setId($id)\n    {\n        return $this->id = $id;\n    }\n\n    public function getContent()\n    {\n        return $this->content;\n    }\n    public function setContent($content)\n    {\n        $this->content = $content;\n    }\n\n    public function getAuthorEmail()\n    {\n        return $this->authorEmail;\n    }\n    public function setAuthorEmail($authorEmail)\n    {\n        $this->authorEmail = $authorEmail;\n    }\n\n    public function getPublishedAt()\n    {\n        return $this->publishedAt;\n    }\n    public function setPublishedAt(\\DateTime $publishedAt)\n    {\n        $this->publishedAt = $publishedAt;\n    }\n\n    public function getPost()\n    {\n        return $this->post;\n    }\n    public function setPost(Post $post)\n    {\n        $this->post = $post;\n    }\n}\n"
  },
  {
    "path": "src/AppBundle/Entity/Post.php",
    "content": "<?php\n\nnamespace AppBundle\\Entity;\n\nuse Doctrine\\ORM\\Mapping as ORM;\nuse Doctrine\\Common\\Collections\\ArrayCollection;\nuse Symfony\\Component\\Validator\\Constraints as Assert;\n\n/**\n * @ORM\\Entity(repositoryClass=\"AppBundle\\Repository\\PostRepository\")\n *\n * Defines the properties of the Post entity to represent the blog posts.\n * See http://symfony.com/doc/current/book/doctrine.html#creating-an-entity-class\n *\n * Tip: if you have an existing database, you can generate these entity class automatically.\n * See http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html\n *\n * @author Ryan Weaver <weaverryan@gmail.com>\n * @author Javier Eguiluz <javier.eguiluz@gmail.com>\n */\nclass Post\n{\n    /**\n     * Use constants to define configuration options that rarely change instead\n     * of specifying them in app/config/config.yml.\n     * See http://symfony.com/doc/current/best_practices/configuration.html#constants-vs-configuration-options\n     */\n    const NUM_ITEMS = 10;\n\n    /**\n     * @ORM\\Id\n     * @ORM\\GeneratedValue\n     * @ORM\\Column(type=\"integer\")\n     */\n    private $id;\n\n    /**\n     * @ORM\\Column(type=\"string\")\n     * @Assert\\NotBlank()\n     */\n    private $title;\n\n    /**\n     * @ORM\\Column(type=\"string\")\n     */\n    private $slug;\n\n    /**\n     * @ORM\\Column(type=\"string\")\n     * @Assert\\NotBlank(message=\"post.blank_summary\")\n     */\n    private $summary;\n\n    /**\n     * @ORM\\Column(type=\"text\")\n     * @Assert\\NotBlank(message=\"post.blank_content\")\n     * @Assert\\Length(min = \"10\", minMessage = \"post.too_short_content\")\n     */\n    private $content;\n\n    /**\n     * @ORM\\Column(type=\"string\")\n     * @Assert\\Email()\n     */\n    private $authorEmail;\n\n    /**\n     * @ORM\\Column(type=\"datetime\")\n     * @Assert\\DateTime()\n     */\n    private $publishedAt;\n\n    /**\n     * @ORM\\Column(type=\"datetime\", nullable=true)\n     * @Assert\\DateTime()\n     */\n    private $updatedAt;\n\n    /**\n     * @ORM\\Column(type=\"datetime\", nullable=true)\n     * @Assert\\DateTime()\n     */\n    private $generatedAt;\n\n    /**\n     * @ORM\\Column(type=\"string\", nullable=true)\n     */\n    private $pdfName;\n\n    /**\n     * @ORM\\Column(type=\"boolean\")\n     */\n    private $isPdfGenerated;\n\n    /**\n     * @ORM\\OneToMany(\n     *      targetEntity=\"Comment\",\n     *      mappedBy=\"post\",\n     *      orphanRemoval=true\n     * )\n     * @ORM\\OrderBy({\"publishedAt\" = \"DESC\"})\n     */\n    private $comments;\n\n    public function __construct()\n    {\n        $this->publishedAt = new \\DateTime();\n        $this->updatedAt = new \\DateTime();\n        $this->isPdfGenerated = 0;\n        $this->comments = new ArrayCollection();\n    }\n\n    public function getId()\n    {\n        return $this->id;\n    }\n\n    public function setId($id)\n    {\n        $this->id = $id;\n    }\n\n    public function getTitle()\n    {\n        return $this->title;\n    }\n\n    public function setTitle($title)\n    {\n        $this->title = $title;\n    }\n\n    public function getSlug()\n    {\n        return $this->slug;\n    }\n\n    public function setSlug($slug)\n    {\n        $this->slug = $slug;\n    }\n\n    public function getContent()\n    {\n        return $this->content;\n    }\n\n    public function setContent($content)\n    {\n        $this->content = $content;\n    }\n\n    public function getAuthorEmail()\n    {\n        return $this->authorEmail;\n    }\n\n    public function setAuthorEmail($authorEmail)\n    {\n        $this->authorEmail = $authorEmail;\n    }\n\n    /**\n     * Is the given User the author of this Post?\n     *\n     * @param User $user\n     *\n     * @return bool\n     */\n    public function isAuthor(User $user)\n    {\n        return $user->getEmail() == $this->getAuthorEmail();\n    }\n\n    public function getPublishedAt()\n    {\n        return $this->publishedAt;\n    }\n\n    public function setPublishedAt($publishedAt)\n    {\n        $this->publishedAt = $publishedAt;\n    }\n\n    public function getComments()\n    {\n        return $this->comments;\n    }\n\n    public function addComment(Comment $comment)\n    {\n        $this->comments->add($comment);\n        $comment->setPost($this);\n    }\n\n    public function removeComment(Comment $comment)\n    {\n        $this->comments->removeElement($comment);\n        $comment->setPost(null);\n    }\n\n    public function getSummary()\n    {\n        return $this->summary;\n    }\n\n    public function setSummary($summary)\n    {\n        $this->summary = $summary;\n    }\n\n    public function getUpdatedAt()\n    {\n        return $this->updatedAt;\n    }\n\n    public function setUpdatedAt($updatedAt)\n    {\n        $this->updatedAt = $updatedAt;\n    }\n\n\n    public function getGeneratedAt()\n    {\n        return $this->generatedAt;\n    }\n\n    public function setGeneratedAt($generatedAt)\n    {\n        $this->generatedAt = $generatedAt;\n    }\n\n\n    public function getPdfName()\n    {\n        return $this->pdfName;\n    }\n\n    public function setPdfName($pdfName)\n    {\n        $this->pdfName = $pdfName;\n    }\n\n    public function getIsPdfGenerated()\n    {\n        return $this->isPdfGenerated;\n    }\n\n    public function setIsPdfGenerated($isPdfGenerated)\n    {\n        $this->isPdfGenerated = $isPdfGenerated;\n    }\n}\n"
  },
  {
    "path": "src/AppBundle/Entity/User.php",
    "content": "<?php\n\nnamespace AppBundle\\Entity;\n\nuse Doctrine\\ORM\\Mapping as ORM;\nuse Symfony\\Component\\Security\\Core\\User\\UserInterface;\n\n/**\n * @ORM\\Entity(repositoryClass=\"AppBundle\\Repository\\UserRepository\")\n *\n * Defines the properties of the User entity to represent the application users.\n * See http://symfony.com/doc/current/book/doctrine.html#creating-an-entity-class\n *\n * Tip: if you have an existing database, you can generate these entity class automatically.\n * See http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html\n *\n * @author Ryan Weaver <weaverryan@gmail.com>\n * @author Javier Eguiluz <javier.eguiluz@gmail.com>\n */\nclass User implements UserInterface\n{\n    /**\n     * @ORM\\Id\n     * @ORM\\GeneratedValue\n     * @ORM\\Column(type=\"integer\")\n     */\n    private $id;\n\n    /**\n     * @ORM\\Column(type=\"string\", unique=true)\n     */\n    private $username;\n\n    /**\n     * @ORM\\Column(type=\"string\", unique=true)\n     */\n    private $email;\n\n    /**\n     * @ORM\\Column(type=\"string\")\n     */\n    private $password;\n\n    /**\n     * @ORM\\Column(type=\"json_array\")\n     */\n    private $roles = array();\n\n    /**\n     * @ORM\\Column(name=\"github_id\", type=\"string\", length=255, nullable=true)\n     */\n    private $github_id;\n\n    /**\n     * @ORM\\Column(name=\"github_access_token\", type=\"string\", length=255, nullable=true)\n     */\n    private $github_access_token;\n\n    public function getId()\n    {\n        return $this->id;\n    }\n\n    /**\n     * {@inheritdoc}\n     */\n    public function getUsername()\n    {\n        return $this->username;\n    }\n    public function setUsername($username)\n    {\n        $this->username = $username;\n    }\n\n    public function getEmail()\n    {\n        return $this->email;\n    }\n    public function setEmail($email)\n    {\n        $this->email = $email;\n    }\n\n    /**\n     * {@inheritdoc}\n     */\n    public function getPassword()\n    {\n        return $this->password;\n    }\n    public function setPassword($password)\n    {\n        $this->password = $password;\n    }\n\n    /**\n     * Returns the roles or permissions granted to the user for security.\n     */\n    public function getRoles()\n    {\n        $roles = $this->roles;\n\n        // guarantees that a user always has at least one role for security\n        if (empty($roles)) {\n            $roles[] = 'ROLE_USER';\n        }\n\n        return array_unique($roles);\n    }\n\n    public function setRoles(array $roles)\n    {\n        $this->roles = $roles;\n    }\n\n    /**\n     * Returns the salt that was originally used to encode the password.\n     */\n    public function getSalt()\n    {\n        // See \"Do you need to use a Salt?\" at http://symfony.com/doc/current/cookbook/security/entity_provider.html\n        // we're using bcrypt in security.yml to encode the password, so\n        // the salt value is built-in and you don't have to generate one\n\n        return;\n    }\n\n    /**\n     * Removes sensitive data from the user.\n     */\n    public function eraseCredentials()\n    {\n        // if you had a plainPassword property, you'd nullify it here\n        // $this->plainPassword = null;\n    }\n\n    /**\n     * Returns the GitHub user id\n     */\n    public function getGithubId()\n    {\n        return $this->github_id;\n    }\n\n    /**\n     * Set GitHub user id\n     *\n     * @param $github_id\n     */\n    public function setGithubId($github_id)\n    {\n        $this->github_id = $github_id;\n    }\n\n    /**\n     * Returns the GitHub access token\n     */\n    public function getGithubAccessToken()\n    {\n        return $this->github_access_token;\n    }\n\n    /**\n     * Set GitHub access token\n     *\n     * @param $github_access_token\n     */\n    public function setGithubAccessToken($github_access_token)\n    {\n        $this->github_access_token = $github_access_token;\n    }\n}\n"
  },
  {
    "path": "src/AppBundle/EventListener/RedirectToPreferredLocaleListener.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace AppBundle\\EventListener;\n\nuse Symfony\\Component\\HttpKernel\\Event\\GetResponseEvent;\nuse Symfony\\Component\\HttpFoundation\\RedirectResponse;\nuse Symfony\\Component\\Routing\\Generator\\UrlGeneratorInterface;\n\n/**\n * When visiting the homepage, this listener redirects the user to the most\n * appropriate localized version according to the browser settings.\n *\n * See http://symfony.com/doc/current/components/http_kernel/introduction.html#the-kernel-request-event\n *\n * @author Oleg Voronkovich <oleg-voronkovich@yandex.ru>\n */\nclass RedirectToPreferredLocaleListener\n{\n    /**\n     * @var UrlGeneratorInterface\n     */\n    private $urlGenerator;\n\n    /**\n     * List of supported locales.\n     *\n     * @var string[]\n     */\n    private $locales = array();\n\n    /**\n     * @var string\n     */\n    private $defaultLocale = '';\n\n    /**\n     * Constructor.\n     *\n     * @param UrlGeneratorInterface $urlGenerator\n     * @param string $locales Supported locales separated by '|'\n     * @param string|null $defaultLocale\n     */\n    public function __construct(UrlGeneratorInterface $urlGenerator, $locales, $defaultLocale = null)\n    {\n        $this->urlGenerator = $urlGenerator;\n\n        $this->locales = explode('|', trim($locales));\n        if (empty($this->locales)) {\n            throw new \\UnexpectedValueException('The list of supported locales must not be empty.');\n        }\n\n        $this->defaultLocale = $defaultLocale ?: $this->locales[0];\n\n        if (!in_array($this->defaultLocale, $this->locales)) {\n            throw new \\UnexpectedValueException(sprintf('The default locale (\"%s\") must be one of \"%s\".', $this->defaultLocale, $locales));\n        }\n\n        // Add the default locale at the first position of the array,\n        // because Symfony\\HttpFoundation\\Request::getPreferredLanguage\n        // returns the first element when no an appropriate language is found\n        array_unshift($this->locales, $this->defaultLocale);\n    }\n\n    /**\n     * @param GetResponseEvent $event\n     */\n    public function onKernelRequest(GetResponseEvent $event)\n    {\n        $request = $event->getRequest();\n\n        // Ignore sub-requests and all URLs but the homepage\n        if (!$event->isMasterRequest() || '/' !== $request->getPathInfo()) {\n            return;\n        }\n\n        $preferredLanguage = $request->getPreferredLanguage($this->locales);\n\n        if ($preferredLanguage !== $this->defaultLocale) {\n            $response = new RedirectResponse($this->urlGenerator->generate('homepage', array('_locale' => $preferredLanguage)));\n            $event->setResponse($response);\n        }\n    }\n}\n"
  },
  {
    "path": "src/AppBundle/Form/CommentType.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace AppBundle\\Form;\n\nuse Symfony\\Component\\Form\\AbstractType;\nuse Symfony\\Component\\Form\\FormBuilderInterface;\nuse Symfony\\Component\\OptionsResolver\\OptionsResolver;\n\n/**\n * Defines the form used to create and manipulate blog comments. Although in this\n * case the form is trivial and we could build it inside the controller, a good\n * practice is to always define your forms as classes.\n * See http://symfony.com/doc/current/book/forms.html#creating-form-classes\n *\n * @author Ryan Weaver <weaverryan@gmail.com>\n * @author Javier Eguiluz <javier.eguiluz@gmail.com>\n */\nclass CommentType extends AbstractType\n{\n    /**\n     * {@inheritdoc}\n     */\n    public function buildForm(FormBuilderInterface $builder, array $options)\n    {\n        // By default, form fields include the 'required' attribute, which enables\n        // the client-side form validation. This means that you can't test the\n        // server-side validation errors from the browser. To temporarily disable\n        // this validation, set the 'required' attribute to 'false':\n        //\n        //     $builder->add('content', null, array('required' => false));\n\n        $builder\n            ->add('content')\n        ;\n    }\n\n    /**\n     * {@inheritdoc}\n     */\n    public function configureOptions(OptionsResolver $resolver)\n    {\n        $resolver->setDefaults(array(\n            'data_class' => 'AppBundle\\Entity\\Comment',\n        ));\n    }\n}\n"
  },
  {
    "path": "src/AppBundle/Form/PostType.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace AppBundle\\Form;\n\nuse Symfony\\Component\\Form\\AbstractType;\nuse Symfony\\Component\\Form\\FormBuilderInterface;\nuse Symfony\\Component\\OptionsResolver\\OptionsResolver;\n\n/**\n * Defines the form used to create and manipulate blog posts.\n *\n * @author Ryan Weaver <weaverryan@gmail.com>\n * @author Javier Eguiluz <javier.eguiluz@gmail.com>\n */\nclass PostType extends AbstractType\n{\n    /**\n     * {@inheritdoc}\n     */\n    public function buildForm(FormBuilderInterface $builder, array $options)\n    {\n        // For the full reference of options defined by each form field type\n        // see http://symfony.com/doc/current/reference/forms/types.html\n\n        // By default, form fields include the 'required' attribute, which enables\n        // the client-side form validation. This means that you can't test the\n        // server-side validation errors from the browser. To temporarily disable\n        // this validation, set the 'required' attribute to 'false':\n        //\n        //     $builder->add('title', null, array('required' => false, ...));\n\n        $builder\n            ->add('title', null, array(\n                'attr' => array('autofocus' => true),\n                'label' => 'label.title',\n            ))\n            ->add('summary', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\TextareaType', array('label' => 'label.summary'))\n            ->add('content', null, array(\n                'attr' => array('rows' => 20),\n                'label' => 'label.content',\n            ))\n            ->add('authorEmail', null, array('label' => 'label.author_email'))\n            ->add('publishedAt', 'AppBundle\\Form\\Type\\DateTimePickerType', array(\n                'label' => 'label.published_at',\n            ))\n        ;\n    }\n\n    /**\n     * {@inheritdoc}\n     */\n    public function configureOptions(OptionsResolver $resolver)\n    {\n        $resolver->setDefaults(array(\n            'data_class' => 'AppBundle\\Entity\\Post',\n        ));\n    }\n}\n"
  },
  {
    "path": "src/AppBundle/Form/Type/DateTimePickerType.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace AppBundle\\Form\\Type;\n\nuse AppBundle\\Utils\\MomentFormatConverter;\nuse Symfony\\Component\\Form\\AbstractType;\nuse Symfony\\Component\\Form\\FormInterface;\nuse Symfony\\Component\\Form\\FormView;\nuse Symfony\\Component\\OptionsResolver\\OptionsResolver;\n\n/**\n * Defines the custom form field type used to manipulate datetime values across\n * Bootstrap Date\\Time Picker javascript plugin.\n * See http://symfony.com/doc/current/cookbook/form/create_custom_field_type.html\n *\n * @author Yonel Ceruto <yonelceruto@gmail.com>\n */\nclass DateTimePickerType extends AbstractType\n{\n    /**\n     * @var MomentFormatConverter\n     */\n    private $formatConverter;\n\n    public function __construct()\n    {\n        $this->formatConverter = new MomentFormatConverter();\n    }\n\n    /**\n     * {@inheritdoc}\n     */\n    public function buildView(FormView $view, FormInterface $form, array $options)\n    {\n        $view->vars['attr']['data-date-format'] = $this->formatConverter->convert($options['format']);;\n        $view->vars['attr']['data-date-locale'] = \\Locale::getDefault();\n    }\n\n    /**\n     * {@inheritdoc}\n     */\n    public function configureOptions(OptionsResolver $resolver)\n    {\n        $resolver->setDefaults(array(\n            'widget' => 'single_text',\n        ));\n    }\n\n    /**\n     * {@inheritdoc}\n     */\n    public function getParent()\n    {\n        return 'Symfony\\Component\\Form\\Extension\\Core\\Type\\DateTimeType';\n    }\n}\n"
  },
  {
    "path": "src/AppBundle/Repository/PostRepository.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace AppBundle\\Repository;\n\nuse Doctrine\\ORM\\EntityRepository;\n\n/**\n * This custom Doctrine repository contains some methods which are useful when\n * querying for blog post information.\n * See http://symfony.com/doc/current/book/doctrine.html#custom-repository-classes\n *\n * @author Ryan Weaver <weaverryan@gmail.com>\n * @author Javier Eguiluz <javier.eguiluz@gmail.com>\n */\nclass PostRepository extends EntityRepository\n{\n    public function queryLatest()\n    {\n        return $this->getEntityManager()\n            ->createQuery('\n                SELECT p\n                FROM AppBundle:Post p\n                WHERE p.publishedAt <= :now\n                ORDER BY p.publishedAt DESC\n            ')\n            ->setParameter('now', new \\DateTime())\n        ;\n    }\n\n    public function findLatest()\n    {\n        $this->queryLatest()->getResult();\n    }\n}\n"
  },
  {
    "path": "src/AppBundle/Repository/UserRepository.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace AppBundle\\Repository;\n\nuse Doctrine\\ORM\\EntityRepository;\n\n/**\n * This custom Doctrine repository is empty because so far we don't need any custom\n * method to query for application user information. But it's always a good practice\n * to define a custom repository that will be used when the application grows.\n * See http://symfony.com/doc/current/book/doctrine.html#custom-repository-classes\n *\n * @author Ryan Weaver <weaverryan@gmail.com>\n * @author Javier Eguiluz <javier.eguiluz@gmail.com>\n */\nclass UserRepository extends EntityRepository\n{\n}\n"
  },
  {
    "path": "src/AppBundle/Tests/Controller/Admin/BlogControllerTest.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace AppBundle\\Tests\\Controller\\Admin;\n\nuse Symfony\\Bundle\\FrameworkBundle\\Test\\WebTestCase;\nuse Symfony\\Component\\HttpFoundation\\Response;\nuse AppBundle\\Entity\\Post;\n\n/**\n * Functional test for the controllers defined inside the BlogController used\n * for managing the blog in the backend.\n * See http://symfony.com/doc/current/book/testing.html#functional-tests\n *\n * Whenever you test resources protected by a firewall, consider using the\n * technique explained in:\n * http://symfony.com/doc/current/cookbook/testing/http_authentication.html\n *\n * Execute the application tests using this command (requires PHPUnit to be installed):\n *\n *     $ cd your-symfony-project/\n *     $ phpunit -c app\n *\n */\nclass BlogControllerTest extends WebTestCase\n{\n    public function testRegularUsersCannotAccessToTheBackend()\n    {\n        $client = static::createClient(array(), array(\n            'PHP_AUTH_USER' => 'john_user',\n            'PHP_AUTH_PW'   => 'kitten',\n        ));\n\n        $client->request('GET', '/en/admin/post/');\n\n        $this->assertEquals(Response::HTTP_FORBIDDEN, $client->getResponse()->getStatusCode());\n    }\n\n    public function testAdministratorUsersCanAccessToTheBackend()\n    {\n        $client = static::createClient(array(), array(\n            'PHP_AUTH_USER' => 'anna_admin',\n            'PHP_AUTH_PW'   => 'kitten',\n        ));\n\n        $client->request('GET', '/en/admin/post/');\n\n        $this->assertEquals(Response::HTTP_OK, $client->getResponse()->getStatusCode());\n    }\n\n    public function testIndex()\n    {\n        $client = static::createClient(array(), array(\n            'PHP_AUTH_USER' => 'anna_admin',\n            'PHP_AUTH_PW'   => 'kitten',\n        ));\n\n        $crawler = $client->request('GET', '/en/admin/post/');\n\n        $this->assertCount(\n            Post::NUM_ITEMS,\n            $crawler->filter('body#admin_post_index #main tbody tr'),\n            'The backend homepage displays the right number of posts.'\n        );\n    }\n}\n"
  },
  {
    "path": "src/AppBundle/Tests/Controller/BlogControllerTest.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace AppBundle\\Tests\\Controller;\n\nuse Symfony\\Bundle\\FrameworkBundle\\Test\\WebTestCase;\nuse AppBundle\\Entity\\Post;\n\n/**\n * Functional test for the controllers defined inside BlogController.\n * See http://symfony.com/doc/current/book/testing.html#functional-tests\n *\n * Execute the application tests using this command (requires PHPUnit to be installed):\n *\n *     $ cd your-symfony-project/\n *     $ phpunit -c app\n *\n */\nclass BlogControllerTest extends WebTestCase\n{\n    public function testIndex()\n    {\n        $client = static::createClient();\n        $crawler = $client->request('GET', '/en/blog/');\n\n        $this->assertCount(\n            Post::NUM_ITEMS,\n            $crawler->filter('article.post'),\n            'The homepage displays the right number of posts.'\n        );\n    }\n}\n"
  },
  {
    "path": "src/AppBundle/Tests/Controller/DefaultControllerTest.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace AppBundle\\Tests\\Controller;\n\nuse Symfony\\Bundle\\FrameworkBundle\\Test\\WebTestCase;\n\n/**\n * Functional test that implements a \"smoke test\" of all the public and secure\n * URLs of the application.\n * See http://symfony.com/doc/current/best_practices/tests.html#functional-tests.\n *\n * Execute the application tests using this command (requires PHPUnit to be installed):\n *\n *     $ cd your-symfony-project/\n *     $ phpunit -c app\n *\n */\nclass DefaultControllerTest extends WebTestCase\n{\n    /**\n     * PHPUnit's data providers allow to execute the same tests repeated times\n     * using a different set of data each time.\n     * See http://symfony.com/doc/current/cookbook/form/unit_testing.html#testing-against-different-sets-of-data.\n     *\n     * @dataProvider getPublicUrls\n     */\n    public function testPublicUrls($url)\n    {\n        $client = self::createClient();\n        $client->request('GET', $url);\n\n        $this->assertTrue(\n            $client->getResponse()->isSuccessful(),\n            sprintf('The %s public URL loads correctly.', $url)\n        );\n    }\n\n    /**\n     * The application contains a lot of secure URLs which shouldn't be\n     * publicly accessible. This tests ensures that whenever a user tries to\n     * access one of those pages, a redirection to the login form is performed.\n     *\n     * @dataProvider getSecureUrls\n     */\n    public function testSecureUrls($url)\n    {\n        $client = self::createClient();\n        $client->request('GET', $url);\n\n        $this->assertTrue($client->getResponse()->isRedirect());\n\n        $this->assertEquals(\n            'http://localhost/en/login',\n            $client->getResponse()->getTargetUrl(),\n            sprintf('The %s secure URL redirects to the login form.', $url)\n        );\n    }\n\n    public function getPublicUrls()\n    {\n        return array(\n            array('/'),\n            array('/en/blog/'),\n            array('/en/blog/posts/morbi-tempus-commodo-mattis'),\n            array('/en/login'),\n        );\n    }\n\n    public function getSecureUrls()\n    {\n        return array(\n            array('/en/admin/post/'),\n            array('/en/admin/post/new'),\n            array('/en/admin/post/1'),\n            array('/en/admin/post/1/edit'),\n        );\n    }\n}\n"
  },
  {
    "path": "src/AppBundle/Tests/Utils/SluggerTest.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace Tests\\Utils;\n\nuse AppBundle\\Utils\\Slugger;\n\n/**\n * Unit test for the application utils.\n * See http://symfony.com/doc/current/book/testing.html#unit-tests\n *\n * Execute the application tests using this command (requires PHPUnit to be installed):\n *\n *     $ cd your-symfony-project/\n *     $ phpunit -c app\n *\n */\nclass SluggerTest extends \\PHPUnit_Framework_TestCase\n{\n    /**\n     * @dataProvider getSlugs\n     */\n    public function testSlugify($string, $slug)\n    {\n        $slugger = new Slugger();\n        $result = $slugger->slugify($string);\n\n        $this->assertEquals($slug, $result);\n    }\n\n    public function getSlugs()\n    {\n        return array(\n            array('Lorem Ipsum'     , 'lorem-ipsum'),\n            array('  Lorem Ipsum  ' , 'lorem-ipsum'),\n            array(' lOrEm  iPsUm  ' , 'lorem-ipsum'),\n            array('!Lorem Ipsum!'   , 'lorem-ipsum'),\n            array('lorem-ipsum'     , 'lorem-ipsum'),\n        );\n    }\n}\n"
  },
  {
    "path": "src/AppBundle/Twig/AppExtension.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace AppBundle\\Twig;\n\nuse AppBundle\\Utils\\Markdown;\nuse Symfony\\Component\\Intl\\Intl;\n\n/**\n * This Twig extension adds a new 'md2html' filter to easily transform Markdown\n * contents into HTML contents inside Twig templates.\n * See http://symfony.com/doc/current/cookbook/templating/twig_extension.html\n *\n * In addition to creating the Twig extension class, before using it you must also\n * register it as a service. See app/config/services.yml file for details.\n *\n * @author Ryan Weaver <weaverryan@gmail.com>\n * @author Javier Eguiluz <javier.eguiluz@gmail.com>\n * @author Julien ITARD <julienitard@gmail.com>\n */\nclass AppExtension extends \\Twig_Extension\n{\n    /**\n     * @var Markdown\n     */\n    private $parser;\n\n    /**\n     * @var array\n     */\n    private $locales;\n\n    public function __construct(Markdown $parser, $locales)\n    {\n        $this->parser = $parser;\n        $this->locales = $locales;\n    }\n\n    /**\n     * {@inheritdoc}\n     */\n    public function getFilters()\n    {\n        return array(\n            new \\Twig_SimpleFilter('md2html', array($this, 'markdownToHtml'), array('is_safe' => array('html'))),\n        );\n    }\n\n    /**\n     * {@inheritdoc}\n     */\n    public function getFunctions()\n    {\n        return array(\n            new \\Twig_SimpleFunction('locales', array($this, 'getLocales')),\n        );\n    }\n\n    /**\n     * Transforms the given Markdown content into HTML content.\n     *\n     *  @param string $content\n     *\n     * @return string\n     */\n    public function markdownToHtml($content)\n    {\n        return $this->parser->toHtml($content);\n    }\n\n    /**\n     * Takes the list of codes of the locales (languages) enabled in the\n     * application and returns an array with the name of each locale written\n     * in its own language (e.g. English, Français, Español, etc.)\n     *\n     * @return array\n     */\n    public function getLocales()\n    {\n        $localeCodes = explode('|', $this->locales);\n\n        $locales = array();\n        foreach ($localeCodes as $localeCode) {\n            $locales[] = array('code' => $localeCode, 'name' => Intl::getLocaleBundle()->getLocaleName($localeCode, $localeCode));\n        }\n\n        return $locales;\n    }\n\n    /**\n     * {@inheritdoc}\n     */\n    public function getName()\n    {\n        // the name of the Twig extension must be unique in the application. Consider\n        // using 'app.extension' if you only have one Twig extension in your application.\n        return 'app.extension';\n    }\n}\n"
  },
  {
    "path": "src/AppBundle/Utils/Markdown.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace AppBundle\\Utils;\n\n/**\n * This class is a light interface between an external Markdown parser library\n * and the application. It's generally recommended to create these light interfaces\n * to decouple your application from the implementation details of the third-party library.\n *\n * @author Ryan Weaver <weaverryan@gmail.com>\n * @author Javier Eguiluz <javier.eguiluz@gmail.com>\n */\nclass Markdown\n{\n    /**\n     * @var \\Parsedown\n     */\n    private $parser;\n\n    /**\n     * @var \\HTMLPurifier\n     */\n    private $purifier;\n\n    public function __construct()\n    {\n        $this->parser = new \\Parsedown();\n        $this->purifier = new \\HTMLPurifier();\n    }\n\n    /**\n     * @param string $text\n     *\n     * @return string\n     */\n    public function toHtml($text)\n    {\n        $html = $this->parser->text($text);\n        $safeHtml = $this->purifier->purify($html);\n\n        return $safeHtml;\n    }\n}\n"
  },
  {
    "path": "src/AppBundle/Utils/MomentFormatConverter.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace AppBundle\\Utils;\n\n/**\n * This class is used to convert PHP date format to moment.js format\n *\n * @author Yonel Ceruto <yonelceruto@gmail.com>\n */\nclass MomentFormatConverter\n{\n    /**\n     * This defines the mapping between PHP ICU date format (key) and moment.js date format (value)\n     * For ICU formats see http://userguide.icu-project.org/formatparse/datetime#TOC-Date-Time-Format-Syntax\n     * For Moment formats see http://momentjs.com/docs/#/displaying/format/\n     *\n     * @var array\n     */\n    private static $formatConvertRules = array(\n        // year\n        'yyyy' => 'YYYY', 'yy' => 'YY', 'y' => 'YYYY',\n        // day\n        'dd' => 'DD', 'd' => 'D',\n        // day of week\n        'EE' => 'ddd', 'EEEEEE' => 'dd',\n        // timezone\n        'ZZZZZ' => 'Z', 'ZZZ' => 'ZZ',\n        // letter 'T'\n        '\\'T\\'' => 'T',\n    );\n\n    /**\n     * Returns associated moment.js format.\n     *\n     * @param string $format PHP Date format\n     *\n     * @return string\n     */\n    public function convert($format)\n    {\n        return strtr($format, self::$formatConvertRules);\n    }\n}\n"
  },
  {
    "path": "src/AppBundle/Utils/Slugger.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace AppBundle\\Utils;\n\n/**\n * This class is used to provide an example of integrating simple classes as\n * services into a Symfony application.\n *\n * @author Ryan Weaver <weaverryan@gmail.com>\n * @author Javier Eguiluz <javier.eguiluz@gmail.com>\n */\nclass Slugger\n{\n    /**\n     * @param string $string\n     *\n     * @return string\n     */\n    public function slugify($string)\n    {\n        return trim(preg_replace('/[^a-z0-9]+/', '-', strtolower(strip_tags($string))), '-');\n    }\n}\n"
  },
  {
    "path": "src/CodeExplorerBundle/CodeExplorerBundle.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace CodeExplorerBundle;\n\nuse Symfony\\Component\\HttpKernel\\Bundle\\Bundle;\n\n/**\n * @author Oleg Voronkovich <oleg-voronkovich@yandex.ru>\n */\nclass CodeExplorerBundle extends Bundle\n{\n}\n"
  },
  {
    "path": "src/CodeExplorerBundle/DependencyInjection/CodeExplorerExtension.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace CodeExplorerBundle\\DependencyInjection;\n\nuse Symfony\\Component\\Config\\FileLocator;\nuse Symfony\\Component\\DependencyInjection\\ContainerBuilder;\nuse Symfony\\Component\\DependencyInjection\\Loader\\YamlFileLoader;\nuse Symfony\\Component\\HttpKernel\\DependencyInjection\\Extension;\n\n/**\n * @author Oleg Voronkovich <oleg-voronkovich@yandex.ru>\n */\nclass CodeExplorerExtension extends Extension\n{\n    public function load(array $configs, ContainerBuilder $container)\n    {\n        $loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));\n\n        $loader->load('services.yml');\n    }\n}\n"
  },
  {
    "path": "src/CodeExplorerBundle/EventListener/ControllerListener.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace CodeExplorerBundle\\EventListener;\n\nuse Symfony\\Component\\HttpKernel\\Event\\FilterControllerEvent;\nuse CodeExplorerBundle\\Twig\\SourceCodeExtension;\n\n/**\n * Defines the method that 'listens' to the 'kernel.controller' event, which is\n * triggered whenever a controller is executed in the application.\n * See http://symfony.com/doc/current/book/internals.html#kernel-controller-event\n *\n * Tip: listeners are common in Symfony applications, but this particular listener\n * is too advanced and too specific for the demo application needs. For more common\n * examples see http://symfony.com/doc/current/cookbook/service_container/event_listener.html\n *\n * @author Ryan Weaver <weaverryan@gmail.com>\n * @author Javier Eguiluz <javier.eguiluz@gmail.com>\n */\nclass ControllerListener\n{\n    private $twigExtension;\n\n    public function __construct(SourceCodeExtension $twigExtension)\n    {\n        $this->twigExtension = $twigExtension;\n    }\n\n    public function registerCurrentController(FilterControllerEvent $event)\n    {\n        // this check is needed because in Symfony a request can perform any\n        // number of sub-requests. See\n        // http://symfony.com/doc/current/components/http_kernel/introduction.html#sub-requests\n        if ($event->isMasterRequest()) {\n            $this->twigExtension->setController($event->getController());\n        }\n    }\n}\n"
  },
  {
    "path": "src/CodeExplorerBundle/Resources/config/services.yml",
    "content": "services:\n    code_explorer.twig.source_code_extension:\n        public:    false\n        class:     CodeExplorerBundle\\Twig\\SourceCodeExtension\n        arguments: [%kernel.root_dir%]\n        tags:\n            - { name: twig.extension }\n\n    code_explorer.controller_listener:\n        class:     CodeExplorerBundle\\EventListener\\ControllerListener\n        arguments: ['@code_explorer.twig.source_code_extension']\n        tags:\n            - { name: kernel.event_listener, event: kernel.controller, method: registerCurrentController }\n"
  },
  {
    "path": "src/CodeExplorerBundle/Resources/views/source_code.html.twig",
    "content": "<div class=\"section source-code\">\n    <p>\n        {{ 'help.show_code'|trans|raw }}\n    </p>\n\n    <button type=\"button\" class=\"btn btn-default btn-lg btn-block\" data-toggle=\"modal\" data-target=\"#sourceCodeModal\">\n      <i class=\"fa fa-cogs\"></i> {{ 'action.show_code'|trans }}\n    </button>\n\n    <div class=\"modal fade\" id=\"sourceCodeModal\" tabindex=\"-1\">\n        <div class=\"modal-dialog modal-lg\">\n            <div class=\"modal-content\">\n                <div class=\"modal-header\">\n                    <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\n                        <span aria-hidden=\"true\">&times;</span>\n                    </button>\n                    <h4 class=\"modal-title\"><i class=\"fa fa-code\"></i> {{ 'title.source_code'|trans }}</h4>\n                </div>\n\n                <div class=\"modal-body\">\n                    {% if controller %}\n                        <h3>{{ 'title.controller_code'|trans }}<small class=\"pull-right\">{{ controller.file_path|format_file(controller.starting_line) }}</small></h3>\n                        <pre><code class=\"php\">{{ controller.source_code }}</code></pre>\n                    {% else %}\n                        <h3>{{ 'title.controller_code'|trans }}</h3>\n                        <pre><code>{{ 'not_available'|trans }}</code></pre>\n                    {% endif %}\n\n                    <h3>{{ 'title.twig_template_code'|trans }}<small class=\"pull-right\">{{ template.file_path|format_file(template.starting_line) }}</small></h3>\n                    <pre><code class=\"twig\">{{ template.source_code }}</code></pre>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n"
  },
  {
    "path": "src/CodeExplorerBundle/Twig/SourceCodeExtension.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace CodeExplorerBundle\\Twig;\n\n/**\n * CAUTION: this is an extremely advanced Twig extension. It's used to get the\n * source code of the controller and the template used to render the current\n * page. If you are starting with Symfony, don't look at this code and consider\n * studying instead the code of the src/AppBundle/Twig/AppExtension.php extension.\n *\n * @author Ryan Weaver <weaverryan@gmail.com>\n * @author Javier Eguiluz <javier.eguiluz@gmail.com>\n */\nclass SourceCodeExtension extends \\Twig_Extension\n{\n    private $controller;\n    private $kernelRootDir;\n\n    public function __construct($kernelRootDir)\n    {\n        $this->kernelRootDir = $kernelRootDir;\n    }\n\n    public function setController($controller)\n    {\n        $this->controller = $controller;\n    }\n\n    /**\n     * {@inheritdoc}\n     */\n    public function getFunctions()\n    {\n        return array(\n            new \\Twig_SimpleFunction('show_source_code', array($this, 'showSourceCode'), array('is_safe' => array('html'), 'needs_environment' => true)),\n        );\n    }\n\n    public function showSourceCode(\\Twig_Environment $twig, \\Twig_Template $template)\n    {\n        return $twig->render('@CodeExplorer/source_code.html.twig', array(\n            'controller' => $this->getController(),\n            'template'   => $this->getTemplateSource($template),\n        ));\n    }\n\n    private function getController()\n    {\n        // this happens for example for exceptions (404 errors, etc.)\n        if (null === $this->controller) {\n            return;\n        }\n\n        $method = $this->getCallableReflector($this->controller);\n\n        $classCode = file($method->getFilename());\n        $methodCode = array_slice($classCode, $method->getStartline() - 1, $method->getEndLine() - $method->getStartline() + 1);\n        $controllerCode = '    '.$method->getDocComment().\"\\n\".implode('', $methodCode);\n\n        return array(\n            'file_path' => $method->getFilename(),\n            'starting_line' => $method->getStartline(),\n            'source_code' => $this->unindentCode($controllerCode)\n        );\n    }\n\n    /**\n     * Gets a reflector for a callable.\n     *\n     * This logic is copied from Symfony\\Component\\HttpKernel\\Controller\\ControllerResolver::getArguments\n     *\n     * @param callable $callable\n     *\n     * @return \\ReflectionFunctionAbstract\n     */\n    private function getCallableReflector($callable)\n    {\n        if (is_array($callable)) {\n            return new \\ReflectionMethod($callable[0], $callable[1]);\n        }\n\n        if (is_object($callable) && !$callable instanceof \\Closure) {\n            $r = new \\ReflectionObject($callable);\n\n            return $r->getMethod('__invoke');\n        }\n\n        return new \\ReflectionFunction($callable);\n    }\n\n    private function getTemplateSource(\\Twig_Template $template)\n    {\n        return array(\n            // Twig templates are not always stored in files, and so there is no\n            // API to get the filename from a template name in a generic way.\n            // The logic used here works only for templates stored in app/Resources/views\n            // and referenced via the \"filename.html.twig\" notation, not via the \"::filename.html.twig\"\n            // one or stored in bundles. This is enough for the needs of the demo app.\n            'file_path' => $this->kernelRootDir.'/Resources/views/'.$template->getTemplateName(),\n            'starting_line' => 1,\n            'source_code' => $template->getSource(),\n        );\n    }\n\n    /**\n     * Utility method that \"unindents\" the given $code when all its lines start\n     * with a tabulation of four white spaces.\n     *\n     * @param  string $code\n     *\n     * @return string\n     */\n    private function unindentCode($code)\n    {\n        $formattedCode = $code;\n        $codeLines = explode(\"\\n\", $code);\n\n        $indentedLines = array_filter($codeLines, function ($lineOfCode) {\n            return '' === $lineOfCode || '    ' === substr($lineOfCode, 0, 4);\n        });\n\n        if (count($indentedLines) === count($codeLines)) {\n            $formattedCode = array_map(function ($lineOfCode) { return substr($lineOfCode, 4); }, $codeLines);\n            $formattedCode = implode(\"\\n\", $formattedCode);\n        }\n\n        return $formattedCode;\n    }\n\n    // the name of the Twig extension must be unique in the application\n    public function getName()\n    {\n        return 'code_explorer_source_code';\n    }\n}\n"
  },
  {
    "path": "src/ElasticSearchBundle/Controller/ElasticSearchController.php",
    "content": "<?php\n\nnamespace ElasticSearchBundle\\Controller;\n\nuse Symfony\\Bundle\\FrameworkBundle\\Controller\\Controller;\nuse Symfony\\Component\\HttpFoundation\\Request;\n\nclass ElasticSearchController extends Controller\n{\n    public function searchAction(Request $request, $page)\n    {\n        $term = $request->get('q');\n\n        if(strlen($term) === 0) {\n            return $this->redirectToRoute('blog_index');\n        }\n\n        $finder = $this->container->get('fos_elastica.finder.app.post');\n\n        $queryString = new \\Elastica\\Query\\QueryString();\n        $queryString->setDefaultField('_all');\n        $queryString->setQuery($term);\n\n        $query = new \\Elastica\\Query($queryString);\n        $query->setSize(50);\n        $query->setHighlight(array(\n            'fields' => array('*' => new \\stdClass)\n        ));\n\n        $elasticaSearchResults = $finder->findHybrid($query);\n\n        $searchResults = array();\n        $serializer = $this->get('serializer');\n        foreach ($elasticaSearchResults as $elasticaSearchResult) {\n            $resultJson = $serializer->serialize($elasticaSearchResult->getTransformed(), 'json');\n            $resultObj =  json_decode($resultJson, true);\n            foreach ($elasticaSearchResult->getResult()->getHit()['highlight'] as $key => $value) {\n                if ($key !== 'slug') {\n                    $resultObj[$key] = current($value);\n                }\n            }\n            array_push($searchResults, $resultObj);\n        }\n\n        return $this->render('ElasticSearchBundle::elastica_search_results.html.twig', array(\n            'term' => $term,\n            'results' => $searchResults\n        ));\n    }\n}\n"
  },
  {
    "path": "src/ElasticSearchBundle/ElasticSearchBundle.php",
    "content": "<?php\n\nnamespace ElasticSearchBundle;\n\nuse Symfony\\Component\\HttpKernel\\Bundle\\Bundle;\n\nclass ElasticSearchBundle extends Bundle\n{\n}\n"
  },
  {
    "path": "src/ElasticSearchBundle/Resources/config/config.yml",
    "content": "fos_elastica:\n    clients:\n        default: { host: localhost, port: 9200 }\n    indexes:\n        app:\n            index_name: app_%kernel.environment%\n            types:\n                post:\n                    mappings:\n                        id: ~\n                        slug:\n                            boost: 3.50\n                        title:\n                            boost: 10.00\n                        summary:\n                            boost: 5.00\n                        content:\n                            boost: 2.50\n                    persistence:\n                        driver: orm\n                        model: AppBundle\\Entity\\Post\n                        provider: ~\n                        listener:\n                            insert: true\n                            update: true\n                            delete: true\n                        finder: ~"
  },
  {
    "path": "src/ElasticSearchBundle/Resources/config/routing.yml",
    "content": "elasticsearch_blog_search_post:\n    path:     /blog/search-results\n    methods: ['GET']\n    defaults: { _controller: ElasticSearchBundle:ElasticSearch:search, page: 1 }\n\nelasticsearch_blog_search_post_paginated:\n    path:     /blog/search-results/page/{page}\n    methods: ['GET']\n    defaults: { _controller: ElasticSearchBundle:ElasticSearch:search }"
  },
  {
    "path": "src/ElasticSearchBundle/Resources/config/services.yml",
    "content": "services:\n#    elastic_search.example:\n#        class: ElasticSearchBundle\\Example\n#        arguments: [@service_id, \"plain_value\", %parameter%]\n"
  },
  {
    "path": "src/ElasticSearchBundle/Resources/views/elastica_search_results.html.twig",
    "content": "{% extends 'base.html.twig' %}\n\n{% block body_id 'blog_index' %}\n\n{% block main %}\n    <style>\n        em {\n            color: red;\n            font-style: normal;\n            font-weight: bold;\n        }\n    </style>\n    <h2 style=\"margin-bottom: 15px\" id=\"results-info\">\n        <span>Results for <b>{{ term }}</b> ({{ results|length }})</span>\n    </h2>\n    {% for result in results %}\n        <article class=\"post\">\n            <h2>\n                <a href=\"{{ path('blog_post', { slug: result.slug }) }}\">\n                    {{ result.title|raw }}\n                </a>\n            </h2>\n\n            {{ result.summary|md2html }}\n        </article>\n    {% endfor %}\n{% endblock %}"
  },
  {
    "path": "src/ElasticSearchBundle/Tests/Controller/ElasticSearchControllerTest.php",
    "content": "<?php\n\nnamespace ElasticSearchBundle\\Tests\\Controller;\n\nuse AppBundle\\Entity\\Post;\nuse Symfony\\Bundle\\FrameworkBundle\\Test\\WebTestCase;\nuse Symfony\\Component\\HttpFoundation\\Response;\n\nclass ElasticSearchControllerTest extends WebTestCase\n{\n    protected $entityManager;\n\n    public function __construct()\n    {\n        self::bootKernel(array('environment' => 'test', 'debug' => 'true'));\n\n        $this->entityManager = self::$kernel->getContainer()->get('doctrine')->getManager();\n\n        self::populateElasticSearchIndices();\n    }\n\n    public function testElasticSearch()\n    {\n        $client = self::createClient();\n\n        $crawler = $client->request('GET', '/blog/search-results?q=odio');\n        $this->assertEquals(Response::HTTP_OK, $client->getResponse()->getStatusCode());\n        $this->assertEquals('Results for <b>odio</b> (5)', $crawler->filter('h2#results-info>span')->html());\n\n        $randnumber = rand();\n\n        $post = new Post();\n        $post->setTitle('Elasticsearch rocks ' . $randnumber);\n        $post->setSlug('elasticsearch-rocks-' . $randnumber);\n        $post->setSummary('Lorem ipsum dolor sit amet consectetur adipiscing elit Urna nisl sollicitudin');\n        $post->setContent('Lorem ipsum dolor sit amet consectetur adipiscing elit Urna nisl sollicitudin');\n        $post->setAuthorEmail('anna_admin@symfony.com');\n\n        $this->entityManager->persist($post);\n        $this->entityManager->flush();\n\n        self::populateElasticSearchIndices();\n\n        $crawler = $client->request('GET', '/blog/search-results?q=Elasticsearch rocks ' . $randnumber);\n        $this->assertEquals(Response::HTTP_OK, $client->getResponse()->getStatusCode());\n        $this->assertEquals(\n            'Results for <b>Elasticsearch rocks ' . $randnumber . '</b> (1)',\n            $crawler->filter('h2#results-info>span')->html()\n        );\n\n        $this->entityManager->remove($post);\n        $this->entityManager->flush();\n    }\n\n    public function populateElasticSearchIndices()\n    {\n        $application = new \\Symfony\\Bundle\\FrameworkBundle\\Console\\Application(self::$kernel);\n        $application->setAutoExit(false);\n        $options = new \\Symfony\\Component\\Console\\Input\\StringInput('fos:elastica:populate --quiet');\n        $application->run($options);\n    }\n}\n"
  },
  {
    "path": "src/OAuthBundle/Controller/OAuthController.php",
    "content": "<?php\n\nnamespace OAuthBundle\\Controller;\n\nuse Symfony\\Component\\HttpFoundation\\Request;\nuse Symfony\\Bundle\\FrameworkBundle\\Controller\\Controller;\n\n\n/**\n * Class OAuthController\n * @package OAuthBundle\\Controller\n *\n * @author Alfonso M. García Astorga <me@alfon.io>\n */\nclass OAuthController extends Controller\n{\n    public function disconnectServiceAction(Request $request, $service, $usernameId, $accessToken)\n    {\n        if ($request->isMethod('POST') && $this->isCsrfTokenValid('authenticate', $request->request->get('_csrf_token'))) {\n\n            $em = $this->getDoctrine()->getManager();\n            $user = $em->getRepository('AppBundle:User')->findOneBy(array(\n               $service . '_id' => $usernameId,\n                $service . '_access_token' => $accessToken\n            ));\n\n            if ($user && $user->getId() === $this->getUser()->getId()) {\n\n                $user->setGithubId(null);\n                $user->setGithubAccessToken(null);\n\n                $em->persist($user);\n                $em->flush();\n            }\n        }\n\n        return $this->redirectToRoute('admin_index');\n    }\n}"
  },
  {
    "path": "src/OAuthBundle/DependencyInjection/Configuration.php",
    "content": "<?php\n\nnamespace OAuthBundle\\DependencyInjection;\n\nuse Symfony\\Component\\Config\\Definition\\Builder\\TreeBuilder;\nuse Symfony\\Component\\Config\\Definition\\ConfigurationInterface;\n\n/**\n * This is the class that validates and merges configuration from your app/config files\n *\n * To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html#cookbook-bundles-extension-config-class}\n */\nclass Configuration implements ConfigurationInterface\n{\n    /**\n     * {@inheritdoc}\n     */\n    public function getConfigTreeBuilder()\n    {\n        $treeBuilder = new TreeBuilder();\n        $rootNode = $treeBuilder->root('oauth');\n\n        // Here you should define the parameters that are allowed to\n        // configure your bundle. See the documentation linked above for\n        // more information on that topic.\n\n        return $treeBuilder;\n    }\n}\n"
  },
  {
    "path": "src/OAuthBundle/DependencyInjection/OAuthExtension.php",
    "content": "<?php\n\nnamespace OAuthBundle\\DependencyInjection;\n\nuse Symfony\\Component\\DependencyInjection\\ContainerBuilder;\nuse Symfony\\Component\\Config\\FileLocator;\nuse Symfony\\Component\\HttpKernel\\DependencyInjection\\Extension;\nuse Symfony\\Component\\DependencyInjection\\Loader;\n\n/**\n * This is the class that loads and manages your bundle configuration\n *\n * To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html}\n */\nclass OAuthExtension extends Extension\n{\n    /**\n     * {@inheritdoc}\n     */\n    public function load(array $configs, ContainerBuilder $container)\n    {\n        $configuration = new Configuration();\n        $config = $this->processConfiguration($configuration, $configs);\n\n        $loader = new Loader\\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));\n        $loader->load('services.yml');\n    }\n}\n"
  },
  {
    "path": "src/OAuthBundle/OAuthBundle.php",
    "content": "<?php\n\nnamespace OAuthBundle;\n\nuse Symfony\\Component\\HttpKernel\\Bundle\\Bundle;\n\nclass OAuthBundle extends Bundle\n{\n}\n"
  },
  {
    "path": "src/OAuthBundle/Provider/UserProvider.php",
    "content": "<?php\n\nnamespace OAuthBundle\\Provider;\n\nuse Doctrine\\ORM\\EntityManager;\nuse HWI\\Bundle\\OAuthBundle\\Security\\Core\\Exception\\AccountNotLinkedException;\nuse HWI\\Bundle\\OAuthBundle\\Security\\Core\\User\\OAuthUserProvider;\nuse HWI\\Bundle\\OAuthBundle\\OAuth\\Response\\UserResponseInterface;\nuse HWI\\Bundle\\OAuthBundle\\Tests\\Fixtures\\OAuthAwareException;\nuse Symfony\\Component\\DependencyInjection\\ContainerInterface;\n\n/**\n * Class UserProvider\n * @package OAuthBundle\\Provider\n *\n * @author Alfonso M. García Astorga <me@alfon.io>\n */\nclass UserProvider extends OAuthUserProvider\n{\n    /**\n     * @var $entityManager\n     */\n    protected $entityManager;\n\n    /**\n     * @var $container\n     */\n    protected $container;\n\n    /**\n     * UserProvider constructor.\n     * @param $entityManager\n     * @param $container\n     */\n    public function __construct(EntityManager $entityManager, ContainerInterface $container)\n    {\n        $this->entityManager = $entityManager;\n        $this->container = $container;\n    }\n\n    /**\n     * @param UserResponseInterface $response\n     * @return mixed\n     * @throws OAuthAwareException\n     */\n    public function loadUserByOAuthUserResponse(UserResponseInterface $response)\n    {\n        $tokenLoggedUser = $this->container->get('security.token_storage')->getToken();\n        $oauthServiceName = $response->getResourceOwner()->getName();\n        $oauthServiceUserId = $response->getUsername();\n        $oauthServiceAccessToken = $response->getAccessToken();\n\n        $user = $this->entityManager->getRepository('AppBundle:User')->findOneBy(\n            array($oauthServiceName . '_id' => $oauthServiceUserId)\n        );\n\n        $setter = 'set'.ucfirst($oauthServiceName);\n        $setter_id = $setter.'Id';\n        $setter_token = $setter.'AccessToken';\n\n        if (null === $user) {\n            if(null === $tokenLoggedUser) {\n                throw new AccountNotLinkedException(\n                    sprintf('Not linked \"%s\" account could be found', $oauthServiceName)\n                );\n            }\n\n            $currentLoggedUser = $tokenLoggedUser->getUser();\n\n            if (in_array('ROLE_ADMIN', $currentLoggedUser->getRoles())) {\n\n                $currentLoggedUser->$setter_id($oauthServiceUserId);\n                $currentLoggedUser->$setter_token($oauthServiceAccessToken);\n\n                $this->entityManager->persist($currentLoggedUser);\n                $this->entityManager->flush();\n\n                $user = $this->entityManager->getRepository('AppBundle:User')->find($currentLoggedUser->getId());\n\n                return $user;\n            } else {\n                throw new OAuthAwareException(\n                    sprintf('Only users with role \"ROLE_ADMIN\" can link OAuth accounts.', $oauthServiceName)\n                );\n            }\n\n        } else {\n            $user->$setter_token($response->getAccessToken());\n            $this->entityManager->persist($user);\n            $this->entityManager->flush();\n\n            return $user;\n        }\n    }\n}"
  },
  {
    "path": "src/OAuthBundle/Resources/config/config.yml",
    "content": "hwi_oauth:\n    firewall_name: secured_area\n    resource_owners:\n        github:\n            type: github\n            client_id: %github_client_id%\n            client_secret: %github_client_secret%\n            options:\n                csrf: true"
  },
  {
    "path": "src/OAuthBundle/Resources/config/routing.yml",
    "content": "hwi_oauth_login:\n    resource: \"@HWIOAuthBundle/Resources/config/routing/login.xml\"\n    prefix:   /oauth/login\nhwi_oauth_redirect:\n    resource: \"@HWIOAuthBundle/Resources/config/routing/redirect.xml\"\n    prefix:   /oauth/connect\ngithub_login:\n    pattern: /oauth/login/check-github\n\noauth_dissconnect_service:\n    path: /oauth/service-disconnect/{service}/{usernameId}/{accessToken}\n    methods: POST\n    defaults:  { _controller: OAuthBundle:OAuth:disconnectService }"
  },
  {
    "path": "src/OAuthBundle/Resources/config/services.yml",
    "content": "services:\n    oauth.user_provider:\n        class: OAuthBundle\\Provider\\UserProvider\n        arguments: ['@doctrine.orm.entity_manager', '@service_container']\n    app.login_success_handler:\n        class: OAuthBundle\\Services\\AuthenticationSuccessHandler\n        arguments:  ['@security.authorization_checker', '@router']"
  },
  {
    "path": "src/OAuthBundle/Services/AuthenticationSuccessHandler.php",
    "content": "<?php\n\nnamespace OAuthBundle\\Services;\n\nuse Symfony\\Component\\Security\\Core\\Authentication\\Token\\TokenInterface;\nuse Symfony\\Component\\HttpFoundation\\Request;\nuse Symfony\\Component\\HttpFoundation\\RedirectResponse;\nuse Symfony\\Component\\Routing\\Router;\nuse Symfony\\Component\\Security\\Core\\Authorization\\AuthorizationChecker;\nuse Symfony\\Component\\Security\\Http\\Authentication\\AuthenticationSuccessHandlerInterface;\n\n/**\n * Class AuthenticationSuccessHandler\n * @package OAuthBundle\\Services\n *\n * @author Alfonso M. García Astorga <me@alfon.io>\n */\nclass AuthenticationSuccessHandler implements AuthenticationSuccessHandlerInterface\n{\n    /**\n     * @var AuthorizationChecker\n     */\n    protected $security;\n\n    /**\n     * @var \\Symfony\\Bundle\\FrameworkBundle\\Routing\\Router\n     */\n    protected $router;\n\n    /**\n     * AuthenticationSuccessHandler constructor.\n     * @param AuthorizationChecker $security\n     * @param \\Symfony\\Bundle\\FrameworkBundle\\Routing\\Router $router\n     */\n    public function __construct(AuthorizationChecker $security, \\Symfony\\Bundle\\FrameworkBundle\\Routing\\Router $router)\n    {\n        $this->router = $router;\n        $this->security = $security;\n    }\n\n    /**\n     * @param Request $request\n     * @param TokenInterface $token\n     * @return RedirectResponse\n     */\n    public function onAuthenticationSuccess(Request $request, TokenInterface $token)\n    {\n        if ($this->security->isGranted('ROLE_ADMIN'))\n        {\n            return new RedirectResponse($this->router->generate('admin_index'));\n        }\n        else\n        {\n            return new RedirectResponse($this->router->generate('blog_index'));\n        }\n    }\n}\n"
  },
  {
    "path": "src/OAuthBundle/Tests/Controller/OAuthControllerTest.php",
    "content": "<?php\n\nnamespace OAuthBundle\\Tests\\Controller;\n\nuse Symfony\\Bundle\\FrameworkBundle\\Test\\WebTestCase;\nuse Symfony\\Component\\HttpFoundation\\Response;\n\n/**\n * Class OAuthControllerTest\n * @package OAuthBundle\\Tests\\Controller\n *\n * @author Alfonso M. García Astorga <me@alfon.io>\n */\nclass OAuthControllerTest extends WebTestCase\n{\n    protected $entityManager;\n\n    public function __construct()\n    {\n        self::bootKernel(array('environment' => 'test', 'debug' => 'true'));\n        $this->entityManager = self::$kernel->getContainer()->get('doctrine')->getManager();\n    }\n\n    public function testDisconnectService()\n    {\n        $user = $this->entityManager->getRepository('AppBundle:User')->findOneBy(array(\n            'username' => 'anna_admin'\n        ));\n        $user->setGithubId('123456789');\n        $user->setGithubAccessToken('686x3212xacx7121993035d82782270f138db52');\n\n        $this->entityManager->flush();\n\n        $client = static::createClient(array(), array(\n            'PHP_AUTH_USER' => 'anna_admin',\n            'PHP_AUTH_PW'   => 'kitten',\n        ));\n\n        $crawler = $client->request('GET', '/en/admin/post/');\n        $this->assertEquals(Response::HTTP_OK, $client->getResponse()->getStatusCode());\n        $this->assertGreaterThan(0, $crawler->filter('div.section>form[action^=\"/oauth/service-disconnect/github/\"]')->count());\n\n        $csrfToken = $crawler->filter('input[name=\"_csrf_token\"]')->extract(array('value'));\n        $client->request(\n            'POST', '/oauth/service-disconnect/github/' . $user->getGithubId() . '/' . $user->getGithubAccessToken(),\n            array('_csrf_token' => $csrfToken[0])\n        );\n        $this->assertEquals(Response::HTTP_FOUND, $client->getResponse()->getStatusCode());\n\n        $crawler = $client->request('GET', '/en/admin/post/');\n        $this->assertGreaterThan(0, $crawler->filter('div.section>a[href=\"/oauth/connect/github\"]')->count());\n    }\n}"
  },
  {
    "path": "src/OAuthBundle/Tests/OAuthTest.php",
    "content": "<?php\n\nnamespace OAuthBundle\\Tests;\n\nuse HWI\\Bundle\\OAuthBundle\\Security\\Core\\Authentication\\Token\\OAuthToken;\nuse HWI\\Bundle\\OAuthBundle\\Security\\Core\\User\\OAuthUser;\nuse Symfony\\Bundle\\FrameworkBundle\\Test\\WebTestCase;\nuse Symfony\\Component\\BrowserKit\\Cookie;\n\n/**\n * Class OAuthTest\n * @package OAuthBundle\\Tests\n *\n * @author Alfonso M. García Astorga <me@alfon.io>\n */\nclass OAuthTest extends WebTestCase\n{\n    public function testOAuth()\n    {\n        $accessToken = array(\n            'access_token'  => '986d3212c8aca7122993035d82742270f168db5e'\n        );\n\n        $token = new OAuthToken($accessToken, array('ROLE_ADMIN'));\n        $this->assertEquals('986d3212c8aca7122993035d82742270f168db5e', $token->getAccessToken());\n\n        $user = new OAuthUser('anna_admin');\n        $this->assertEquals('anna_admin', $user->getUsername());\n        $token->setUser($user);\n        $this->assertSame('ROLE_ADMIN', current($token->getRoles()[0]));\n    }\n}"
  },
  {
    "path": "src/RabbitMQBundle/Controller/RabbitMQController.php",
    "content": "<?php\n\nnamespace RabbitMQBundle\\Controller;\n\nuse AppBundle\\Entity\\Post;\nuse Symfony\\Component\\HttpFoundation\\JsonResponse;\nuse Symfony\\Bundle\\FrameworkBundle\\Controller\\Controller;\n\nclass RabbitMQController extends Controller\n{\n    public function generatePdfAction(Post $post)\n    {\n        $pdfGenerator = $this->get('rabbitmq_pdf_generator');\n        $pdfGenerator->setPost($post);\n\n        if ($pdfGenerator->checkExistingUpdatedPdf()) {\n            $response = array(\n                'pdfName' => $post->getPdfName()\n            );\n            return new JsonResponse($response);\n        }\n\n        $responsePdfGenerator = $pdfGenerator->generateNewPdf();\n\n        $post->setIsPdfGenerated(true);\n        $post->setGeneratedAt(new \\DateTime('now'));\n        $post->setPdfName($responsePdfGenerator['pdfName']);\n\n        $em = $this->getDoctrine()->getManager();\n        $em->flush();\n\n        return new JsonResponse($responsePdfGenerator);\n    }\n}"
  },
  {
    "path": "src/RabbitMQBundle/DependencyInjection/Configuration.php",
    "content": "<?php\n\nnamespace RabbitMQBundle\\DependencyInjection;\n\nuse Symfony\\Component\\Config\\Definition\\Builder\\TreeBuilder;\nuse Symfony\\Component\\Config\\Definition\\ConfigurationInterface;\n\n/**\n * This is the class that validates and merges configuration from your app/config files\n *\n * To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html#cookbook-bundles-extension-config-class}\n */\nclass Configuration implements ConfigurationInterface\n{\n    /**\n     * {@inheritdoc}\n     */\n    public function getConfigTreeBuilder()\n    {\n        $treeBuilder = new TreeBuilder();\n        $rootNode = $treeBuilder->root('rabbitmq');\n\n        // Here you should define the parameters that are allowed to\n        // configure your bundle. See the documentation linked above for\n        // more information on that topic.\n\n        return $treeBuilder;\n    }\n}\n"
  },
  {
    "path": "src/RabbitMQBundle/DependencyInjection/RabbitMQExtension.php",
    "content": "<?php\n\nnamespace RabbitMQBundle\\DependencyInjection;\n\nuse Symfony\\Component\\DependencyInjection\\ContainerBuilder;\nuse Symfony\\Component\\Config\\FileLocator;\nuse Symfony\\Component\\HttpKernel\\DependencyInjection\\Extension;\nuse Symfony\\Component\\DependencyInjection\\Loader;\n\n/**\n * This is the class that loads and manages your bundle configuration\n *\n * To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html}\n */\nclass RabbitMQExtension extends Extension\n{\n    /**\n     * {@inheritdoc}\n     */\n    public function load(array $configs, ContainerBuilder $container)\n    {\n        $configuration = new Configuration();\n        $config = $this->processConfiguration($configuration, $configs);\n\n        $loader = new Loader\\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));\n        $loader->load('services.yml');\n    }\n}\n"
  },
  {
    "path": "src/RabbitMQBundle/RabbitMQBundle.php",
    "content": "<?php\n\nnamespace RabbitMQBundle;\n\nuse Symfony\\Component\\HttpKernel\\Bundle\\Bundle;\n\nclass RabbitMQBundle extends Bundle\n{\n}\n"
  },
  {
    "path": "src/RabbitMQBundle/Resources/config/config.yml",
    "content": "old_sound_rabbit_mq:\n    connections:\n        default:\n            host:     'localhost'\n            port:     5672\n            user:     'admin'\n            password: 'symfony.demo.on.roids'\n            vhost:    '/'\n            lazy:     false\n            connection_timeout: 3\n            read_write_timeout: 3\n\n            # requires php-amqplib v2.4.1+ and PHP5.4+\n            keepalive: false\n\n            # requires php-amqplib v2.4.1+\n            heartbeat: 0\n    producers:\n        generate_pdf:\n            connection:       default\n            exchange_options: {name: 'generate-pdf_prod', type: direct}\n    consumers:\n        generate_pdf:\n            connection:       default\n            exchange_options: {name: 'generate-pdf_prod', type: direct}\n            queue_options:    {name: 'generate-pdf_prod'}\n            callback:         rabbitmq_pdf_generator_consumer\n\nknp_snappy:\n        pdf:\n            enabled:    true\n            binary:     /usr/local/bin/wkhtmltopdf #\"\\\"C:\\\\Program Files\\\\wkhtmltopdf\\\\bin\\\\wkhtmltopdf.exe\\\"\" for Windows users\n            options:    []\n        image:\n            enabled:    true\n            binary:     /usr/local/bin/wkhtmltoimage #\"\\\"C:\\\\Program Files\\\\wkhtmltopdf\\\\bin\\\\wkhtmltoimage.exe\\\"\" for Windows users\n            options:    []"
  },
  {
    "path": "src/RabbitMQBundle/Resources/config/config_dev.yml",
    "content": "old_sound_rabbit_mq:\n    connections:\n        default:\n            host:     'localhost'\n            port:     5672\n            user:     'admin'\n            password: 'symfony.demo.on.roids'\n            vhost:    '/'\n            lazy:     false\n            connection_timeout: 3\n            read_write_timeout: 3\n\n            # requires php-amqplib v2.4.1+ and PHP5.4+\n            keepalive: false\n\n            # requires php-amqplib v2.4.1+\n            heartbeat: 0\n    producers:\n        generate_pdf:\n            connection:       default\n            exchange_options: {name: 'generate-pdf_dev', type: direct}\n    consumers:\n        generate_pdf:\n            connection:       default\n            exchange_options: {name: 'generate-pdf_dev', type: direct}\n            queue_options:    {name: 'generate-pdf_dev'}\n            callback:         rabbitmq_pdf_generator_consumer"
  },
  {
    "path": "src/RabbitMQBundle/Resources/config/config_test.yml",
    "content": "old_sound_rabbit_mq:\n    connections:\n        default:\n            host:     'localhost'\n            port:     5672\n            user:     guest\n            password: guest\n            vhost:    '/'\n            lazy:     false\n            connection_timeout: 3\n            read_write_timeout: 3\n\n            # requires php-amqplib v2.4.1+ and PHP5.4+\n            keepalive: false\n\n            # requires php-amqplib v2.4.1+\n            heartbeat: 0\n    producers:\n        generate_pdf:\n            connection:       default\n            exchange_options: {name: 'generate-pdf_test', type: direct}\n    consumers:\n        generate_pdf:\n            connection:       default\n            exchange_options: {name: 'generate-pdf_test', type: direct}\n            queue_options:    {name: 'generate-pdf_test'}\n            callback:         rabbitmq_pdf_generator_consumer"
  },
  {
    "path": "src/RabbitMQBundle/Resources/config/routing.yml",
    "content": "rabbitmq_generate_post_pdf:\n    path:     /post/generate_pdf/{id}\n    defaults: { _controller: RabbitMQBundle:RabbitMQ:generatePdf }\n    methods: ['POST']\n    requirements:\n        id: \\d+"
  },
  {
    "path": "src/RabbitMQBundle/Resources/config/services.yml",
    "content": "services:\n    rabbitmq_pdf_generator:\n        class: RabbitMQBundle\\Services\\PDFGenerator\n        arguments: ['@serializer', '@service_container']\n    rabbitmq_pdf_generator_consumer:\n        class: RabbitMQBundle\\Services\\RabbitMQ\\PDFGeneratorConsumer\n        arguments: ['@service_container', '@templating', '@serializer']"
  },
  {
    "path": "src/RabbitMQBundle/Resources/views/pdf_post_view.html.twig",
    "content": "<html>\n    <head>\n        <link rel=\"stylesheet\" href=\"{{ asset('css/app.css') }}\">\n    </head>\n    <body>\n        <div style=\"text-align: right;\">\n            PDF Generated on {{ \"now\"|date(\"m/d/Y h:i:s\") }}\n        </div>\n        <div>\n            <h1>{{ post.title }}</h1>\n            <div>\n                {{ post.content|md2html }}\n            </div>\n            <div>\n                <h2>Comments ({{ post.comments|length }}):</h2>\n                {% for comment in post.comments %}\n                    <div class=\"row post-comment\">\n                        <h4 class=\"col-sm-3\">\n                            <strong>{{ comment.authorEmail }}</strong> {{ 'post.commented_on'|trans }}\n                            <strong>{{ comment.publishedAt|localizeddate('medium', 'short') }}</strong>\n                        </h4>\n                        <div class=\"col-sm-9\">\n                            {{ comment.content|md2html }}\n                        </div>\n                    </div>\n                {% else %}\n                    <div class=\"post-comment\">\n                        <p>{{ 'post.no_comments'|trans }}</p>\n                    </div>\n                {% endfor %}\n            </div>\n        </div>\n    </body>\n</html>"
  },
  {
    "path": "src/RabbitMQBundle/Services/PDFGenerator.php",
    "content": "<?php\n\nnamespace RabbitMQBundle\\Services;\n\nuse AppBundle\\Entity\\Post;\nuse JMS\\Serializer\\Serializer;\nuse Symfony\\Component\\DependencyInjection\\ContainerInterface;\n\n/**\n * Class PDFGenerator\n * @package RabbitMQBundle\\Services\n *\n * @author Alfonso M. García Astorga <me@alfon.io>\n */\nclass PDFGenerator\n{\n    protected $serializer;\n\n    /**\n     * @var \\AppBundle\\Entity\\Post\n     */\n    protected $post;\n\n    /**\n     * @var \\Symfony\\Component\\DependencyInjection\\ContainerInterface\n     */\n    protected $container;\n\n    /**\n     * PDFGenerator constructor.\n     * @param Serializer $serializer\n     */\n    public function __construct(Serializer $serializer, ContainerInterface $container)\n    {\n        $this->serializer = $serializer;\n        $this->container = $container;\n    }\n\n\n    /**\n     * @param Post $post\n     */\n    public function setPost(Post $post)\n    {\n        $this->post = $post;\n    }\n\n    /**\n     * @return bool\n     */\n    public function checkExistingUpdatedPdf()\n    {\n        if ($this->post->getIsPdfGenerated() === true && $this->post->getGeneratedAt() > $this->post->getUpdatedAt()) {\n            return true;\n        }\n\n        return false;\n    }\n\n    /**\n     * @return array\n     */\n    public function generateNewPdf()\n    {\n        $pdfName = $this->generateUniquePdfName();\n        $this->post->setPdfName($pdfName);\n\n        $postSerialized = $this->serializer->serialize($this->post, 'json');\n\n        $this->container->get('old_sound_rabbit_mq.generate_pdf_producer')->setContentType('application/json');\n        $this->container->get('old_sound_rabbit_mq.generate_pdf_producer')->publish($postSerialized);\n\n        $response = array(\n            'pdfName' => $pdfName\n        );\n\n        return $response;\n    }\n\n    /**\n     * @return string\n     */\n    public function generateUniquePdfName()\n    {\n       return bin2hex(openssl_random_pseudo_bytes(10));\n    }\n}"
  },
  {
    "path": "src/RabbitMQBundle/Services/RabbitMQ/PDFGeneratorConsumer.php",
    "content": "<?php\n\nnamespace RabbitMQBundle\\Services\\RabbitMQ;\n\nuse JMS\\Serializer\\Serializer;\nuse PhpAmqpLib\\Message\\AMQPMessage;\nuse OldSound\\RabbitMqBundle\\RabbitMq\\ConsumerInterface;\nuse Symfony\\Bundle\\TwigBundle\\TwigEngine;\nuse Symfony\\Component\\DependencyInjection\\ContainerInterface;\n\n/**\n * Class PDFGeneratorConsumer\n * @package RabbitMQBundle\\Services\\RabbitMQ\n * @author Alfonso M. García Astorga <me@alfon.io>\n */\nclass PDFGeneratorConsumer implements ConsumerInterface\n{\n    /**\n     * @var ContainerInterface\n     */\n    protected $container;\n\n    /**\n     * @var TwigEngine\n     */\n    protected $templating;\n\n    /**\n     * @var Serializer\n     */\n    protected $serializer;\n\n    /**\n     * PDFGeneratorConsumer constructor.\n     * @param ContainerInterface $container\n     * @param TwigEngine $templating\n     * @param Serializer $serializer\n     */\n    public function __construct(ContainerInterface $container, TwigEngine $templating, Serializer $serializer)\n    {\n        $this->container = $container;\n        $this->templating = $templating;\n        $this->serializer = $serializer;\n    }\n\n\n    /**\n     * @param AMQPMessage $msg\n     * @return bool\n     */\n    public function execute(AMQPMessage $msg)\n    {\n        $post = $this->serializer->deserialize($msg->body, 'AppBundle\\Entity\\Post', 'json');\n\n        $targetPath = $this->container->get('kernel')->getRootDir() . '/../web/downloads/pdf/' . $post->getPdfName() . '.pdf';\n\n        $this->container->get('knp_snappy.pdf')->generateFromHtml(\n            $this->templating->render(\n                'RabbitMQBundle::pdf_post_view.html.twig',\n                array(\n                    'post' => $post\n                )\n            ),\n            $targetPath\n        );\n\n        if (file_exists($targetPath)) {\n            return true;\n        } else {\n            return false;\n        }\n    }\n}"
  },
  {
    "path": "src/RabbitMQBundle/Tests/Controller/RabbitMQControllerTest.php",
    "content": "<?php\n\nnamespace RabbitMQBundle\\Tests\\Controller;\n\nuse AppBundle\\Entity\\Post;\nuse Symfony\\Bundle\\FrameworkBundle\\Test\\WebTestCase;\nuse Symfony\\Component\\HttpFoundation\\Response;\n\nclass RabbitMQControllerTest extends WebTestCase\n{\n    protected $entityManager;\n\n    public function __construct()\n    {\n        self::bootKernel(array('environment' => 'test', 'debug' => 'true'));\n        $this->entityManager = self::$kernel->getContainer()->get('doctrine')->getManager();\n    }\n\n    public function testRabbitMQ()\n    {\n        $client = static::createClient();\n\n        $post = new Post();\n        $post->setTitle('Lorem ipsum dolor');\n        $post->setSlug('Lorem-ipsum-dolor');\n        $post->setSummary('Lorem ipsum dolor sit amet consectetur adipiscing elit Urna nisl sollicitudin');\n        $post->setContent('Lorem ipsum dolor sit amet consectetur adipiscing elit Urna nisl sollicitudin');\n        $post->setAuthorEmail('anna_admin@symfony.com');\n\n        $this->entityManager->persist($post);\n        $this->entityManager->flush();\n\n        $client->request('POST', '/post/generate_pdf/' . $post->getId());\n        $this->assertEquals(Response::HTTP_OK, $client->getResponse()->getStatusCode());\n        $pdfName = json_decode($client->getResponse()->getContent(), true)['pdfName'];\n\n        $this->entityManager->remove($post);\n        $this->entityManager->flush();\n\n        $pdfPath = self::$kernel->getRootDir() . '/../web/downloads/pdf/' . $pdfName . '.pdf';\n\n        sleep(2);\n        $this->assertTrue(file_exists($pdfPath));\n        unlink($pdfPath);\n    }\n}\n"
  },
  {
    "path": "src/RedisBundle/Controller/RedisController.php",
    "content": "<?php\n\nnamespace RedisBundle\\Controller;\n\nuse Symfony\\Bundle\\FrameworkBundle\\Controller\\Controller;\nuse Snc\\RedisBundle\\Doctrine\\Cache\\RedisCache;\nuse Predis\\Client;\n\n/**\n * Class RedisController\n * @package RedisBundle\\Controller\n *\n * @author Alfonso M. García Astorga <me@alfon.io>\n */\nclass RedisController extends Controller\n{\n    public function ListTopFivePopularPostAction()\n    {\n        $em = $this->getDoctrine()->getManager();\n\n        $predis = new RedisCache();\n        $predis->setRedis(new Client());\n        $cache_lifetime = 3600;\n\n        $posts = $em->getRepository('AppBundle:Post')\n            ->createQueryBuilder('p')\n            ->select('p')\n            ->getQuery()\n            ->setResultCacheDriver($predis)\n            ->setResultCacheLifetime($cache_lifetime)\n            ->getResult();\n\n        $postsWithNumComments = array();\n        foreach ($posts as $post) {\n            $postComents = $em->getRepository('AppBundle:Comment')\n                ->createQueryBuilder('c')\n                ->select('c')\n                ->where('c.post = :post_id')\n                ->setParameter('post_id', $post->getId())\n                ->getQuery()\n                ->setResultCacheDriver($predis)\n                ->setResultCacheLifetime($cache_lifetime)\n                ->getResult();\n\n            array_push(\n                $postsWithNumComments, array(\n                    'post' => $post,\n                    'numComments' => count($postComents)\n                )\n            );\n        }\n\n        usort($postsWithNumComments, function($a, $b) {\n            return $b['numComments'] - $a['numComments'];\n        });\n\n        $numPosts = count($postsWithNumComments);\n        if ($numPosts > 5) {\n            for ($i = 5; $i < $numPosts; $i++) {\n                unset($postsWithNumComments[$i]);\n            }\n        }\n\n        return $this->render('RedisBundle:blog:top_posts.html.twig', array(\n            'posts' => $postsWithNumComments\n        ));\n    }\n}\n"
  },
  {
    "path": "src/RedisBundle/RedisBundle.php",
    "content": "<?php\n\nnamespace RedisBundle;\n\nuse Symfony\\Component\\HttpKernel\\Bundle\\Bundle;\n\nclass RedisBundle extends Bundle\n{\n}\n"
  },
  {
    "path": "src/RedisBundle/Resources/config/config.yml",
    "content": "snc_redis:\n    clients:\n        default:\n            type: predis\n            alias: default\n            dsn: redis://localhost"
  },
  {
    "path": "src/RedisBundle/Resources/config/routing.yml",
    "content": "blog_top_5_redis:\n    path:     /blog/top-5-popular-posts\n    defaults: { _controller: RedisBundle:Redis:ListTopFivePopularPost }\n"
  },
  {
    "path": "src/RedisBundle/Resources/config/services.yml",
    "content": "services:\n#    redis.example:\n#        class: RedisBundle\\Example\n#        arguments: [@service_id, \"plain_value\", %parameter%]\n"
  },
  {
    "path": "src/RedisBundle/Resources/views/blog/top_posts.html.twig",
    "content": "{% extends 'base.html.twig' %}\n\n{% block body_id 'blog_index' %}\n\n{% block main %}\n    <h1><i class=\"fa fa-star\"></i> Top 5 Popular Posts</h1>\n    {% set num_pos = 1 %}\n    {% for post in posts %}\n        <article class=\"post\">\n            <h2>\n                {{ num_pos }}.\n                <a href=\"{{ path('blog_post', { slug: post.post.slug }) }}\">\n                    {{ post.post.title }}\n                </a>\n            </h2>\n\n            {{ post.post.summary|md2html }}\n        </article>\n        {% set num_pos = num_pos + 1 %}\n    {% else %}\n        <div class=\"well\">{{ 'post.no_posts_found'|trans }}</div>\n    {% endfor %}\n{% endblock %}\n\n{% block sidebar %}\n    {{ parent() }}\n{% endblock %}\n"
  },
  {
    "path": "src/RedisBundle/Tests/Controller/RedisControllerTest.php",
    "content": "<?php\n\nnamespace RedisBundle\\Tests\\Controller;\n\nuse Symfony\\Bundle\\FrameworkBundle\\Test\\WebTestCase;\nuse Symfony\\Component\\HttpFoundation\\Response;\n\n/**\n * Class RedisControllerTest\n * @package RedisBundle\\Tests\\Controller\n *\n * @author Alfonso M. García Astorga <me@alfon.io>\n */\nclass RedisControllerTest extends WebTestCase\n{\n    protected $container;\n\n    public function __construct()\n    {\n        self::bootKernel(array('environment' => 'test', 'debug' => 'true'));\n        $this->container = self::$kernel->getContainer();\n    }\n\n    public function testRedisController()\n    {\n        $redis = $this->container->get('snc_redis.default');\n        $redis->flushdb();\n        $this->assertCount(0, $redis->keys('*'));\n\n        $client = static::createClient();\n\n        $client->request('GET', '/blog/top-5-popular-posts');\n        $this->assertEquals(Response::HTTP_OK, $client->getResponse()->getStatusCode());\n        $this->assertCount(11, $redis->keys('*'));\n\n        $redis->flushdb();\n        $this->assertCount(0, $redis->keys('*'));\n    }\n}"
  },
  {
    "path": "src/RestBundle/Controller/RestController.php",
    "content": "<?php\n\nnamespace RestBundle\\Controller;\n\nuse AppBundle\\Entity\\Comment;\nuse AppBundle\\Entity\\Post as PostEntity;\n\nuse RestBundle\\Form\\PostRestType,\n    RestBundle\\Form\\CommentRestType;\n\nuse FOS\\RestBundle\\View\\View,\n    FOS\\RestBundle\\Controller\\FOSRestController,\n    FOS\\RestBundle\\Controller\\Annotations\\Get,\n    FOS\\RestBundle\\Controller\\Annotations\\Post,\n    FOS\\RestBundle\\Controller\\Annotations\\Put,\n    FOS\\RestBundle\\Controller\\Annotations\\Patch,\n    FOS\\RestBundle\\Controller\\Annotations\\Delete,\n    FOS\\RestBundle\\Controller\\Annotations as Rest;\n\nuse Nelmio\\ApiDocBundle\\Annotation\\ApiDoc;\n\nuse Symfony\\Component\\HttpFoundation\\Request;\nuse Symfony\\Component\\HttpFoundation\\Response;\n\n/**\n * Class RestController\n * @package RestBundle\\Controller\n *\n * @author Alfonso M. García Astorga <me@alfon.io>\n */\nclass RestController extends FOSRestController\n{\n    /**\n     * List all resources available.\n     *\n     * @ApiDoc(\n     *   resource = true,\n     *   statusCodes = {\n     *     200 = \"Returned when successful\"\n     *   }\n     * )\n     *\n     * @Get(\"/\")\n     *\n     * @return View\n     */\n    public function indexApiAction()\n    {\n        $apiResources = [\n            array('Posts' => $this->generateUrl('api_v1_get_posts')),\n            array('Comments' => $this->generateUrl('api_v1_get_comments'))\n        ];\n\n        $view = $this->view($apiResources)->setTemplate('RestBundle::api_index.html.twig');\n\n        return $this->handleView($view);\n    }\n\n    /**\n     * List all posts.\n     *\n     * @ApiDoc(\n     *   resource = true,\n     *   statusCodes = {\n     *     200 = \"Returned when successful\"\n     *   }\n     * )\n     *\n     * @Get(\"/posts\")\n     *\n     * @return View\n     */\n    public function getPostsAction()\n    {\n        $em = $this->getDoctrine()->getManager();\n        $posts = $em->getRepository('AppBundle:Post')->findAll();\n\n        $view = $this->view($posts)->setTemplate('RestBundle:Post:getPosts.html.twig')->setTemplateVar('posts');\n\n        return $this->handleView($view);\n    }\n\n\n    /**\n     * Get a specific post.\n     *\n     * @ApiDoc(\n     *   output = \"AppBundle\\Entity\\Post\",\n     *   statusCodes = {\n     *     200 = \"Returned when successful\",\n     *     404 = \"Returned when the post is not found\"\n     *   }\n     * )\n     *\n     * @Get(\"/posts/{id}\", requirements={\"id\" = \"\\d+\"})\n     *\n     * @param int $id\n     * @return View\n     */\n    public function getPostAction($id)\n    {\n        $em = $this->getDoctrine()->getManager();\n        $post = $em->getRepository('AppBundle:Post')->find($id);\n\n        if (null === $post) {\n            throw $this->createNotFoundException(\"Post does not exist.\");\n        }\n\n        $view = $this->view($post)->setTemplate('RestBundle:Post:getPost.html.twig')->setTemplateVar('post');\n\n        return $this->handleView($view);\n    }\n\n\n    /**\n     * Presents the form to use to create a new post.\n     *\n     * @ApiDoc(\n     *   resource = true,\n     *   statusCodes = {\n     *     200 = \"Returned when successful\"\n     *   }\n     * )\n     *\n     * @Get(\"/posts/new\", requirements={\"_format\" = \"html\"}, name=\"_hateoas\")\n     *\n     * @return \\Symfony\\Component\\Form\\Form\n     */\n    public function newPostFormAction()\n    {\n        $form = $this->createForm(new PostRestType());\n\n        $view = $this->view($form)->setTemplate('RestBundle:Post:newPost.html.twig');\n\n        return $this->handleView($view);\n    }\n\n    /**\n     * Creates a new post from the submitted data.\n     *\n     * @ApiDoc(\n     *   resource = true,\n     *   input = \"AppBundle\\Entity\\Post\",\n     *   statusCodes = {\n     *     201 = \"Returned when a new resource is created\",\n     *     400 = \"Returned when the form has errors\"\n     *   }\n     * )\n     *\n     * @Post(\"/posts\")\n     *\n     * @param Request $request\n     *\n     * @return View\n     */\n    public function newPostAction(Request $request)\n    {\n        $post = new PostEntity();\n        $form = $this->createForm(new PostRestType(), $post);\n\n        $form->submit($request);\n        if ($form->isValid()) {\n            $post->setPublishedAt(new \\DateTime('now'));\n            $post->setSlug($this->get('slugger')->slugify($post->getTitle()));\n\n            $em = $this->getDoctrine()->getManager();\n            $em->persist($post);\n            $em->flush();\n\n            return $this->routeRedirectView('api_v1_get_post', array('id' => $post->getId()));\n        }\n\n        $view = $this->view($form)->setTemplate('RestBundle:Post:newPost.html.twig');\n\n        return $this->handleView($view);\n    }\n\n    /**\n     * Update existing post from the submitted data or create a new post at a specific location.\n     *\n     * @ApiDoc(\n     *   resource = true,\n     *   input = \"AppBundle\\Entity\\Post\",\n     *   statusCodes = {\n     *     201 = \"Returned when a new resource is created\",\n     *     204 = \"Returned when successful\",\n     *     400 = \"Returned when the form has errors\"\n     *   }\n     * )\n     *\n     * @Put(\"/posts/{id}\", requirements={\"id\" = \"\\d+\"})\n     *\n     * @param Request $request\n     * @param int $id\n     *\n     * @return View\n     */\n    public function updatePostAction(Request $request, $id)\n    {\n        $em = $this->getDoctrine()->getManager();\n        $post = $em->getRepository('AppBundle:Post')->find($id);\n\n        if (null === $post) {\n            $post = new PostEntity();\n            $post->setId($id);\n            $em->persist($post);\n\n            $metadata = $em->getClassMetadata(get_class($post));\n            $metadata->setIdGeneratorType(\\Doctrine\\ORM\\Mapping\\ClassMetadata::GENERATOR_TYPE_NONE);\n            $metadata->setIdGenerator(new \\Doctrine\\ORM\\Id\\AssignedGenerator());\n\n            $statusCode = Response::HTTP_CREATED;\n        } else {\n            $statusCode = Response::HTTP_NO_CONTENT;\n        }\n\n        $form = $this->createForm(new PostRestType(), $post);\n        $form->submit($request);\n\n        if ($form->isValid()) {\n            $post->setSlug($this->get('slugger')->slugify($post->getTitle()));\n            $em->flush();\n\n            return $this->routeRedirectView('get_post', array('id' => $post->getId()), $statusCode);\n        }\n\n        $view = new View($form);\n\n        return $this->handleView($view);\n    }\n\n    /**\n     * Presents the form for partial update of an existing Post.\n     *\n     * @Get(\"/posts/{id}/edit\", requirements={\"id\" = \"\\d+\", \"_format\" = \"html\"}, name=\"_hateoas\")\n     *\n     * @param $id\n     *\n     * @return View\n     */\n    public function editPostFormAction($id)\n    {\n        $em = $this->getDoctrine()->getManager();\n        $post = $em->getRepository('AppBundle:Post')->find($id);\n\n        $form = $this->createForm(new PostRestType(), $post);\n\n        $view = $this->view($form)->setTemplate('RestBundle:Post:editPost.html.twig');\n\n        return $this->handleView($view);\n    }\n\n    /**\n     * Partial update of an existing Post.\n     *\n     * @ApiDoc(\n     *   resource = true,\n     *   input = \"AppBundle\\Entity\\Post\",\n     *   statusCodes = {\n     *     204 = \"Returned when successful\",\n     *     400 = \"Returned when the form has errors\"\n     *   }\n     * )\n     *\n     * @Patch(\"/posts/{id}\", requirements={\"id\" = \"\\d+\"})\n     *\n     * @param Request $request\n     * @param int $id\n     *\n     * @return View\n     */\n    public function editPostAction(Request $request, $id)\n    {\n        $em = $this->getDoctrine()->getManager();\n        $post = $em->getRepository('AppBundle:Post')->find($id);\n\n        $form = $this->createForm(new PostRestType(), $post);\n        $form->submit($request, false);\n\n        if ($form->isValid()) {\n            $em->flush();\n\n            return $this->routeRedirectView('api_v1_get_post', array('id' => $post->getId()), Response::HTTP_NO_CONTENT);\n        }\n\n        $view = $this->view($form)->setTemplate('RestBundle:Post:editPost.html.twig')->setStatusCode(Response::HTTP_NO_CONTENT);\n\n        return $this->handleView($view);\n    }\n\n    /**\n     * Removes a post.\n     *\n     * @ApiDoc(\n     *   resource = true,\n     *   statusCodes = {\n     *     204 = \"Returned when successful\"\n     *   }\n     * )\n     *\n     * @Delete(\"/posts/{id}\", requirements={\"id\" = \"\\d+\"})\n     *\n     * @param int $id\n     * @return View\n     */\n    public function deletePostAction($id)\n    {\n        $em = $this->getDoctrine()->getManager();\n        $post = $em->getRepository('AppBundle:Post')->find($id);\n        $em->remove($post);\n        $em->flush();\n\n        return $this->routeRedirectView('api_v1_get_posts', array(), Response::HTTP_NO_CONTENT);\n    }\n\n    /**\n     * List all comments.\n     *\n     * @ApiDoc(\n     *   resource = true,\n     *   statusCodes = {\n     *     200 = \"Returned when successful\"\n     *   }\n     * )\n     *\n     * @Get(\"/comments\")\n     *\n     * @return View\n     */\n    public function getCommentsAction()\n    {\n        $em = $this->getDoctrine()->getManager();\n        $comments = $em->getRepository('AppBundle:Comment')->findAll();\n\n        $view = $this->view($comments)->setTemplate('RestBundle:Comment:getComments.html.twig')->setTemplateVar('comments');\n\n        return $this->handleView($view);\n    }\n\n    /**\n     * Get a specific comment.\n     *\n     * @ApiDoc(\n     *   output = \"AppBundle\\Entity\\Comment\",\n     *   statusCodes = {\n     *     200 = \"Returned when successful\",\n     *     404 = \"Returned when the comment is not found\"\n     *   }\n     * )\n     *\n     * @Get(\"/comments/{id}\", requirements={\"id\" = \"\\d+\"})\n     *\n     * @param int $id\n     * @return View\n     */\n    public function getCommentAction($id)\n    {\n        $em = $this->getDoctrine()->getManager();\n        $comment = $em->getRepository('AppBundle:Comment')->find($id);\n\n        if (null === $comment) {\n            throw $this->createNotFoundException(\"Comment does not exist.\");\n        }\n\n        $view = $this->view($comment)->setTemplate('RestBundle:Comment:getComment.html.twig')->setTemplateVar('comment');\n\n        return $this->handleView($view);\n    }\n\n    /**\n     * List all comments from a post.\n     *\n     * @ApiDoc(\n     *   output = \"AppBundle\\Entity\\Comment\",\n     *   statusCodes = {\n     *     200 = \"Returned when successful\",\n     *   }\n     * )\n     *\n     * @Get(\"/comments/posts/{id}\", requirements={\"id\" = \"\\d+\"})\n     *\n     * @param int $id\n     * @return View\n     */\n    public function getCommentsFromPostAction($id)\n    {\n        $em = $this->getDoctrine()->getManager();\n        $postComments = $em->getRepository('AppBundle:Post')->find($id);\n\n        $view = new View($postComments->getComments());\n\n        return $this->handleView($view);\n    }\n\n    /**\n     * Presents the form to use to create a new comment.\n     *\n     * @ApiDoc(\n     *   resource = true,\n     *   statusCodes = {\n     *     200 = \"Returned when successful\"\n     *   }\n     * )\n     *\n     * @Get(\"/comments/posts/{id}/new\", requirements={\"_format\" = \"html\"}, name=\"_hateoas\")\n     *\n     * @return \\Symfony\\Component\\Form\\Form\n     */\n    public function newCommentFormAction()\n    {\n        $form = $this->createForm(new CommentRestType());\n\n        $view = $this->view($form)->setTemplate('RestBundle:Comment:newComment.html.twig');\n\n        return $this->handleView($view);\n    }\n\n    /**\n     * Creates a new comment from the submitted data.\n     *\n     * @Post(\"/comments/posts/{id}\")\n     *\n     * @ApiDoc(\n     *   resource = true,\n     *   input = \"AppBundle\\Entity\\Comment\",\n     *   statusCodes = {\n     *     201 = \"Returned when a new resource is created\",\n     *     400 = \"Returned when the form has errors\"\n     *   }\n     * )\n     *\n     * @param Request $request\n     * @param int $id\n     *\n     *\n     * @return View\n     */\n    public function newCommentAction(Request $request, $id)\n    {\n        $em = $this->getDoctrine()->getManager();\n        $post = $em->getRepository('AppBundle:Post')->find($id);\n\n        $comment = new Comment();\n        $comment->setPost($post);\n\n        $form = $this->createForm(new CommentRestType(), $comment);\n        $form->submit($request);\n\n        if($form->isValid()) {\n            $em->persist($comment);\n            $em->flush();\n\n            return $this->routeRedirectView('api_v1_get_comment', array('id' => $comment->getId()));\n        }\n\n        $view = $this->view($form)->setTemplate('RestBundle:Comment:newComment.html.twig');\n\n        return $this->handleView($view);\n    }\n\n    /**\n     * Update existing comment from the submitted data or create a new comment at a specific location.\n     *\n     * @ApiDoc(\n     *   resource = true,\n     *   input = \"AppBundle\\Entity\\Comment\",\n     *   statusCodes = {\n     *     201 = \"Returned when a new resource is created\",\n     *     204 = \"Returned when successful\",\n     *     400 = \"Returned when the form has errors\"\n     *   }\n     * )\n     *\n     * @Put(\"/comments/{id}\", requirements={\"id\" = \"\\d+\"})\n     *\n     * @param Request $request\n     * @param int $id\n     *\n     * @return View|Response\n     */\n    public function updateCommentAction(Request $request, $id)\n    {\n        $em = $this->getDoctrine()->getManager();\n        $comment = $em->getRepository('AppBundle:Comment')->find($id);\n\n        if (null === $comment) {\n            $comment = new Comment();\n            $comment->setId($id);\n            $em->persist($comment);\n\n            $metadata = $em->getClassMetadata(get_class($comment));\n            $metadata->setIdGeneratorType(\\Doctrine\\ORM\\Mapping\\ClassMetadata::GENERATOR_TYPE_NONE);\n            $metadata->setIdGenerator(new \\Doctrine\\ORM\\Id\\AssignedGenerator());\n\n            $statusCode = Response::HTTP_CREATED;\n        } else {\n            $statusCode = Response::HTTP_NO_CONTENT;\n        }\n\n        $form = $this->createForm(new CommentRestType(), $comment);\n        $form->submit($request);\n\n        if ($form->isValid()) {\n            $em->flush();\n\n            return $this->routeRedirectView('get_comment', array('id' => $comment->getId()), $statusCode);\n        }\n\n        $view = new View($form);\n\n        return $this->handleView($view);\n\n    }\n\n    /**\n     * Presents the form for partial update of an existing Comment.\n     *\n     * @Get(\"/comments/{id}/edit\", requirements={\"id\" = \"\\d+\", \"_format\" = \"html\"}, name=\"_hateoas\")\n     *\n     * @param $id\n     *\n     * @return View\n     */\n    public function editCommentFormAction($id)\n    {\n        $em = $this->getDoctrine()->getManager();\n        $comment = $em->getRepository('AppBundle:Comment')->find($id);\n\n        $form = $this->createForm(new CommentRestType(), $comment);\n\n        $view = $this->view($form)->setTemplate('RestBundle:Comment:editComment.html.twig');\n\n        return $this->handleView($view);\n    }\n\n    /**\n     * Partial update of an existing Comment.\n     *\n     * @ApiDoc(\n     *   resource = true,\n     *   input = \"AppBundle\\Entity\\Comment\",\n     *   statusCodes = {\n     *     204 = \"Returned when successful\",\n     *     400 = \"Returned when the form has errors\"\n     *   }\n     * )\n     *\n     * @Patch(\"/comments/{id}\", requirements={\"id\" = \"\\d+\"})\n     *\n     * @param Request $id\n     * @param int $id\n     *\n     * @return View|Response\n     */\n    public function editCommentAction(Request $request, $id)\n    {\n        $em = $this->getDoctrine()->getManager();\n        $comment = $em->getRepository('AppBundle:Comment')->find($id);\n\n        $form = $this->createForm(new CommentRestType(), $comment);\n        $form->submit($request, false);\n\n        if($form->isValid()) {\n            $em->flush();\n\n            return $this->routeRedirectView('api_v1_get_comment', array('id' => $comment->getId()), Response::HTTP_NO_CONTENT);\n        }\n\n        $view = $this->view($form)->setTemplate('RestBundle:Comment:editComment.html.twig')->setStatusCode(Response::HTTP_NO_CONTENT);\n\n        return $this->handleView($view);\n    }\n\n    /**\n     * Removes a comment.\n     *\n     * @ApiDoc(\n     *   resource = true,\n     *   statusCodes = {\n     *     204 = \"Returned when successful\"\n     *   }\n     * )\n     *\n     * @Delete(\"/comments/{id}\")\n     *\n     * @param int $id\n     *\n     * @return View\n     */\n    public function deleteCommentAction($id)\n    {\n        $em = $this->getDoctrine()->getManager();\n        $comment = $em->getRepository('AppBundle:Comment')->find($id);\n        $em->remove($comment);\n        $em->flush();\n\n        return $this->routeRedirectView('api_v1_get_comments', array(), Response::HTTP_NO_CONTENT);\n    }\n}\n"
  },
  {
    "path": "src/RestBundle/DependencyInjection/Configuration.php",
    "content": "<?php\n\nnamespace RestBundle\\DependencyInjection;\n\nuse Symfony\\Component\\Config\\Definition\\Builder\\TreeBuilder;\nuse Symfony\\Component\\Config\\Definition\\ConfigurationInterface;\n\n/**\n * This is the class that validates and merges configuration from your app/config files\n *\n * To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html#cookbook-bundles-extension-config-class}\n */\nclass Configuration implements ConfigurationInterface\n{\n    /**\n     * {@inheritdoc}\n     */\n    public function getConfigTreeBuilder()\n    {\n        $treeBuilder = new TreeBuilder();\n        $rootNode = $treeBuilder->root('rest');\n\n        // Here you should define the parameters that are allowed to\n        // configure your bundle. See the documentation linked above for\n        // more information on that topic.\n\n        return $treeBuilder;\n    }\n}\n"
  },
  {
    "path": "src/RestBundle/DependencyInjection/RestExtension.php",
    "content": "<?php\n\nnamespace RestBundle\\DependencyInjection;\n\nuse Symfony\\Component\\DependencyInjection\\ContainerBuilder;\nuse Symfony\\Component\\Config\\FileLocator;\nuse Symfony\\Component\\HttpKernel\\DependencyInjection\\Extension;\nuse Symfony\\Component\\DependencyInjection\\Loader;\n\n/**\n * This is the class that loads and manages your bundle configuration\n *\n * To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html}\n */\nclass RestExtension extends Extension\n{\n    /**\n     * {@inheritdoc}\n     */\n    public function load(array $configs, ContainerBuilder $container)\n    {\n        $configuration = new Configuration();\n        $config = $this->processConfiguration($configuration, $configs);\n\n        $loader = new Loader\\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));\n        $loader->load('services.yml');\n    }\n}\n"
  },
  {
    "path": "src/RestBundle/Form/CommentRestType.php",
    "content": "<?php\n\n/*\n * This file is part of the Symfony package.\n *\n * (c) Fabien Potencier <fabien@symfony.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nnamespace RestBundle\\Form;\n\nuse Symfony\\Component\\Form\\AbstractType;\nuse Symfony\\Component\\Form\\FormBuilderInterface;\nuse Symfony\\Component\\OptionsResolver\\OptionsResolver;\nuse Symfony\\Component\\Validator\\Constraints\\Email;\nuse Symfony\\Component\\Validator\\Constraints\\NotBlank;\n\n/**\n * Defines the form used to create and manipulate blog comments. Although in this\n * case the form is trivial and we could build it inside the controller, a good\n * practice is to always define your forms as classes.\n * See http://symfony.com/doc/current/book/forms.html#creating-form-classes\n *\n * @author Ryan Weaver <weaverryan@gmail.com>\n * @author Javier Eguiluz <javier.eguiluz@gmail.com>\n */\nclass CommentRestType extends AbstractType\n{\n    /**\n     * {@inheritdoc}\n     */\n    public function buildForm(FormBuilderInterface $builder, array $options)\n    {\n        // By default, form fields include the 'required' attribute, which enables\n        // the client-side form validation. This means that you can't test the\n        // server-side validation errors from the browser. To temporarily disable\n        // this validation, set the 'required' attribute to 'false':\n        //\n        //     $builder->add('content', null, array('required' => false));\n\n        $builder\n            ->add('content', null, array(\n                'label' => 'label.content'\n            ))\n            ->add('authorEmail', 'email', array(\n                'label' => 'label.author_email',\n                'constraints' => array(\n                    new Email(),\n                    new NotBlank(),\n                )\n            ))\n        ;\n    }\n\n    /**\n     * {@inheritdoc}\n     */\n    public function configureOptions(OptionsResolver $resolver)\n    {\n        $resolver->setDefaults(array(\n            'data_class' => 'AppBundle\\Entity\\Comment',\n            'csrf_protection' => false,\n        ));\n    }\n\n    /**\n     * {@inheritdoc}\n     */\n    public function getName()\n    {\n        return \"comment\";\n    }\n}\n"
  },
  {
    "path": "src/RestBundle/Form/PostRestType.php",
    "content": "<?php\n\nnamespace RestBundle\\Form;\n\nuse Symfony\\Component\\Form\\AbstractType;\nuse Symfony\\Component\\Form\\FormBuilderInterface;\nuse Symfony\\Component\\OptionsResolver\\OptionsResolver;\nuse Symfony\\Component\\Validator\\Constraints\\Email;\nuse Symfony\\Component\\Validator\\Constraints\\NotBlank;\n\nclass PostRestType extends AbstractType\n{\n    /**\n     * {@inheritdoc}\n     */\n    public function buildForm(FormBuilderInterface $builder, array $options)\n    {\n        $builder\n            ->add('title', null, array(\n                'label' => 'label.title',\n            ))\n            ->add('summary', null, array(\n                'label' => 'label.summary',\n            ))\n            ->add('content', null, array(\n                'label' => 'label.content'\n            ))\n            ->add('authorEmail', null, array(\n                'label' => 'label.author_email',\n                'constraints' => array(\n                    new Email(),\n                    new NotBlank(),\n                )\n            ))\n            ->add('publishedAt', 'AppBundle\\Form\\Type\\DateTimePickerType', array(\n                'label' => 'label.published_at'\n            ))\n        ;\n    }\n\n    /**\n     * {@inheritdoc}\n     */\n    public function configureOptions(OptionsResolver $resolver)\n    {\n        $resolver->setDefaults(array(\n            'data_class' => 'AppBundle\\Entity\\Post',\n            'csrf_protection' => false,\n        ));\n    }\n\n    /**\n     * {@inheritdoc}\n     */\n    public function getName()\n    {\n        return 'post';\n    }\n}\n"
  },
  {
    "path": "src/RestBundle/Resources/config/config.yml",
    "content": "fos_rest:\n    param_fetcher_listener: true\n    body_listener: true\n    format_listener: true\n    view:\n        mime_types:\n            json: ['application/json', 'application/json;version=1.0', 'application/json;version=1.1', 'application/json;version=1.2']\n        view_response_listener: 'force'\n        formats:\n            xml:  true\n            json: true\n        templating_formats:\n            html: true\n    routing_loader:\n        default_format: html\n    format_listener:\n        rules:\n            - { path: ^/, priorities: [ html, json, xml ], fallback_format: ~, prefer_extension: true }\n        media_type:\n            version_regex: '/(v|version)=(?P<version>[0-9\\.]+)/'\n    exception:\n        codes:\n            'Symfony\\Component\\Routing\\Exception\\ResourceNotFoundException': 404\n            'Doctrine\\ORM\\OptimisticLockException': HTTP_CONFLICT\n        messages:\n            'Symfony\\Component\\Routing\\Exception\\ResourceNotFoundException': true\n    allowed_methods_listener: true\n    access_denied_listener:\n        json: true\n    body_listener: true\n\njms_serializer:\n    metadata:\n        directories:\n            AppBundle:\n                namespace_prefix: \"AppBundle\"\n                path: \"%kernel.root_dir%/../src/RestBundle/Resources/config/serializer/AppBundle\"\n\nnelmio_api_doc: ~\nfos_http_cache:\n    cache_control:\n        rules:\n            -\n                match:\n                    path: ^/api/v*\n                    methods: [GET, HEAD]\n                headers:\n                    cache_control: { public: true, max_age: 15, s_maxage: 30 }\n                    last_modified: \"-1 hour\"\n                    vary: [Accept-Encoding, Accept-Language]\n\nbazinga_rest_extra: ~"
  },
  {
    "path": "src/RestBundle/Resources/config/routing.yml",
    "content": "rest_controller:\n    path:     /\n    type:     rest\n    resource: RestBundle\\Controller\\RestController\n    prefix: v1\n    name_prefix: api_v1_\n\nNelmioApiDocBundle:\n    resource: \"@NelmioApiDocBundle/Resources/config/routing.yml\"\n    prefix:   /doc"
  },
  {
    "path": "src/RestBundle/Resources/config/serializer/AppBundle/Entity.Comment.yml",
    "content": "AppBundle\\Entity\\Comment:\n  xml_root_name: comment\n  relations:\n    -\n        rel: self\n        href:\n          route: api_v1_get_comment\n          absolute: true\n          parameters:\n             id: expr(object.getId())"
  },
  {
    "path": "src/RestBundle/Resources/config/serializer/AppBundle/Entity.Post.yml",
    "content": "AppBundle\\Entity\\Post:\n  xml_root_name: post\n  relations:\n    -\n        rel: self\n        href:\n          route: api_v1_get_post\n          absolute: true\n          parameters:\n             id: expr(object.getId())\n    -\n        rel: Post comments\n        href:\n          route: api_v1_get_comments_from_post\n          absolute: true\n          parameters:\n             id: expr(object.getId())"
  },
  {
    "path": "src/RestBundle/Resources/config/services.yml",
    "content": "services:"
  },
  {
    "path": "src/RestBundle/Resources/views/Comment/editComment.html.twig",
    "content": "{% extends 'RestBundle::api_base_layout.html.twig' %}\n\n{% block title \"Edit comment\" %}\n\n{% block content %}\n    <h1 class=\"title\">Edit comment #{{ form.vars.value.id }}</h1>\n    <p>\n        <a href=\"{{ path('api_v1_get_comments') }}\">Back to comments list</a>\n        <a href=\"{{ path('api_v1_get_comment', {'id': form.vars.value.id}) }}\" style=\"float:right\">View comment #{{ form.vars.value.id }}</a>\n    </p>\n    <form action=\"{{ url('api_v1_edit_comment', {'id': form.vars.value.id}) }}\" method=\"POST\" {{ form_enctype(form) }}>\n        <input type=\"hidden\" name=\"_method\" value=\"patch\" />\n        {{ form_widget(form) }}\n        <div class=\"custom-form\">\n            <input type=\"submit\" value=\"Edit comment\">\n        </div>\n    </form>\n{% endblock %}"
  },
  {
    "path": "src/RestBundle/Resources/views/Comment/getComment.html.twig",
    "content": "\n{% extends 'RestBundle::api_base_layout.html.twig' %}\n\n{% block title \"View comment\" %}\n\n{% block content %}\n    <h1 class=\"title\">Comment #{{ comment.id }}</h1>\n    <form action=\"{{ path('api_v1_delete_comment', {'id': comment.id }) }}\" method=\"post\">\n    <input type=\"hidden\" name=\"_method\" value=\"delete\">\n    <p>\n        <a href=\"{{ path('api_v1_get_comments') }}\">Back to comments list</a>\n        <input type=\"submit\" value=\"Delete Comment\" style=\"float:right\">\n        <span style=\"float:right\">&nbsp;|&nbsp;</span>\n        <a href=\"{{ path('api_v1_edit_comment_form_hateoas', {'id': comment.id}) }}\" style=\"float:right\">Edit comment</a>\n        <span style=\"float:right\">&nbsp;|&nbsp;</span>\n        <a href=\"{{ path('api_v1_get_post', {'id': comment.post.id}) }}\" style=\"float:right\">View post #{{ comment.post.id }}</a>\n    </p>\n    </form>\n    <div class=\"main-content\">\n        <label class=\"content-label\">Comment Content:</label>\n        <div>\n            {{ comment.content }}\n        </div>\n        <hr>\n        <label class=\"content-label\">Author Email:</label>\n        <div>\n            {{ comment.authorEmail }}\n        </div>\n        <hr>\n        <label class=\"content-label\">Published Date</label>\n        <div>\n            {{ comment.publishedAt|date }}\n        </div>\n    </div>\n{% endblock %}"
  },
  {
    "path": "src/RestBundle/Resources/views/Comment/getComments.html.twig",
    "content": "{% extends \"RestBundle::api_base_layout.html.twig\" %}\n\n{% block title \"Comments list\" %}\n\n{% block content %}\n    <h1 class=\"title\">Comment list ({{ comments|length }})</h1>\n    <ul id=\"comment-list\">\n        {% for comment in comments %}\n        <li>\n            <a href=\"{{ path('api_v1_get_comment', {'id': comment.id}) }}\">Comment #{{ comment.id }}</a>\n            [<a href=\"{{ path('api_v1_edit_comment_form_hateoas', {'id': comment.id}) }}\"><b>Edit comment</b></a>]\n            <form action=\"{{ path('api_v1_delete_comment', {'id': comment.id }) }}\" method=\"post\" style='display:inline;'>\n                <input type=\"hidden\" name=\"_method\" value=\"delete\">\n                <input type=\"submit\" value=\"Delete Comment\">\n            </form>\n        </li>\n        {% endfor %}\n    </ul>\n{% endblock %}"
  },
  {
    "path": "src/RestBundle/Resources/views/Comment/newComment.html.twig",
    "content": "{% extends 'RestBundle::api_base_layout.html.twig' %}\n\n{% block title \"Add a new comment\" %}\n\n{% block content %}\n    <h1 class=\"title\">Add a new comment</h1>\n    <p>\n        <a href=\"{{ path('api_v1_get_post', {'id': app.request.get('id')}) }}\">Back to post #{{ app.request.get('id') }}</a>\n    </p>\n    <form action=\"{{ url('api_v1_new_comment', {'id': app.request.get('id')}) }}\" method=\"POST\" {{ form_enctype(form) }}>\n        {{ form_row(form.content) }}\n        {{ form_row(form.authorEmail) }}\n        <div class=\"custom-form\">\n            <input type=\"submit\" value=\"Submit new comment\">\n        </div>\n    </form>\n{% endblock %}"
  },
  {
    "path": "src/RestBundle/Resources/views/Post/editPost.html.twig",
    "content": "{% extends 'RestBundle::api_base_layout.html.twig' %}\n\n{% block title \"Edit post\" %}\n\n{% block content %}\n    <h1 class=\"title\">Edit Post #{{ form.vars.value.id }}</h1>\n    <p>\n        <a href=\"{{ path('api_v1_get_posts') }}\">Back to post list</a>\n        <a href=\"{{ path('api_v1_get_post', {'id': form.vars.value.id}) }}\" style=\"float: right\">View post #{{ form.vars.value.id }}</a>\n    </p>\n    <form action=\"{{ url('api_v1_edit_post', {'id': form.vars.value.id}) }}\" method=\"POST\" {{ form_enctype(form) }}>\n        <input type=\"hidden\" name=\"_method\" value=\"patch\" />\n        {{ form_widget(form) }}\n        <div class=\"custom-form\">\n            <input type=\"submit\" value=\"Edit post\">\n        </div>\n    </form>\n{% endblock %}"
  },
  {
    "path": "src/RestBundle/Resources/views/Post/getPost.html.twig",
    "content": "\n{% extends 'RestBundle::api_base_layout.html.twig' %}\n\n{% block title \"View post\" %}\n\n{% block content %}\n    <h1 class=\"title\">Post #{{ post.id }}</h1>\n    <form action=\"{{ path('api_v1_delete_post', {'id': post.id }) }}\" method=\"post\">\n    <input type=\"hidden\" name=\"_method\" value=\"delete\">\n    <p>\n        <a href=\"{{ path('api_v1_get_posts') }}\">Back to post list</a>\n        <input type=\"submit\" value=\"Delete Post\" style=\"float:right\">\n        <span style=\"float:right\">&nbsp;|&nbsp;</span>\n        <a href=\"{{ path('api_v1_edit_post_form_hateoas', {'id': post.id}) }}\" style=\"float:right\">Edit post</a>\n    </p>\n    </form>\n    <div class=\"main-content\">\n        <h1 class=\"content-title\">{{ post.title }}</h1>\n        <hr>\n        <label class=\"content-label\">Summary:</label>\n        <div class=\"content-summary\">\n            {{ post.summary }}\n        </div>\n        <hr>\n        <label class=\"content-label\">Content:</label>\n        <div class=\"post-content\">\n            {{ post.content|md2html }}\n        </div>\n        <hr>\n        <label class=\"content-label\">Author Email:</label>\n        <div>\n            {{ post.authorEmail }}\n        </div>\n        <hr>\n        <label class=\"content-label\">Published Date:</label>\n        <div>\n            {{ post.publishedAt|localizeddate('medium', 'short') }}\n        </div>\n        <hr>\n    </div>\n    <div class=\"main-comments\">\n        <h1 class=\"title\">\n            {{ post.comments|length }} comments\n            (<a href=\"{{ path('api_v1_new_comment_form_hateoas', {'id': post.id}) }}\">add a new comment</a>)\n        </h1>\n        {% if post.comments|length > 0 %}\n        {% for comment in post.comments %}\n            <div class=\"row-comment\">\n                <div>\n                   (<a href=\"{{ path('api_v1_get_comment', {'id': comment.id}) }}\">#{{ comment.id }}</a>) <b>{{ comment.authorEmail }}</b> - {{ comment.publishedAt|localizeddate('medium', 'short') }}\n                </div>\n                <div>\n                    {{ comment.content }}\n                </div>\n            </div>\n            <hr>\n        {% endfor %}\n        {% endif %}\n    </div>\n{% endblock %}"
  },
  {
    "path": "src/RestBundle/Resources/views/Post/getPosts.html.twig",
    "content": "{% extends \"RestBundle::api_base_layout.html.twig\" %}\n\n{% block title \"Post list\" %}\n\n{% block content %}\n    <h1 class=\"title\">Post list ({{ posts|length }})</h1>\n    <p>\n        <a href=\"{{ path('api_v1_new_post_form_hateoas', {'_format':'html'}) }}\">Create a new post</a>\n    </p>\n    <ul id=\"post-list\">\n        {% for post in posts %}\n        <li>\n            <a href=\"{{ path('api_v1_get_post', {'id': post.id}) }}\">{{ post.title }}</a>\n            [<a href=\"{{ path('api_v1_edit_post_form_hateoas', {'id': post.id}) }}\"><b>Edit post</b></a>]\n            <form action=\"{{ path('api_v1_delete_post', {'id': post.id }) }}\" method=\"post\" style='display:inline;'>\n                <input type=\"hidden\" name=\"_method\" value=\"delete\">\n                <input type=\"submit\" value=\"Delete Post\">\n            </form>\n        </li>\n        {% endfor %}\n    </ul>\n{% endblock %}"
  },
  {
    "path": "src/RestBundle/Resources/views/Post/newPost.html.twig",
    "content": "{% extends 'RestBundle::api_base_layout.html.twig' %}\n\n{% block title \"New post\" %}\n\n{% block content %}\n    <h1 class=\"title\">New post</h1>\n    <p>\n        <a href=\"{{ path('api_v1_get_posts') }}\">Back to post list</a>\n    </p>\n    <form action=\"{{ url('api_v1_new_post') }}\" method=\"POST\" {{ form_enctype(form) }}>\n        {{ form_row(form.title) }}\n        {{ form_row(form.summary) }}\n        {{ form_row(form.content) }}\n        {{ form_row(form.authorEmail) }}\n        {{ form_row(form.publishedAt) }}\n        <div class=\"custom-form\">\n            <input type=\"submit\" value=\"Submit new post\">\n        </div>\n    </form>\n{% endblock %}"
  },
  {
    "path": "src/RestBundle/Resources/views/api_base_layout.html.twig",
    "content": "{% extends \"TwigBundle::layout.html.twig\" %}\n\n{% block title '' %}\n\n{% block head %}\n    <link rel=\"icon\" sizes=\"16x16\" href=\"{{ asset('favicon.ico') }}\" />\n    <link rel=\"stylesheet\" href=\"{{ asset('css/api.css') }}\">\n{% endblock %}\n\n{% block body %}\n\n    <div class=\"block\">\n        <h1 style=\"float: right\">\n            <a href=\"{{ path('api_v1_index_api') }}\">Resources Index</a>\n            |\n            <a href=\"{{ path('nelmio_api_doc_index') }}\">API Doc</a>\n        </h1>\n        {% block content %}{% endblock %}\n    </div>\n\n{% endblock %}"
  },
  {
    "path": "src/RestBundle/Resources/views/api_index.html.twig",
    "content": "{% extends 'RestBundle::api_base_layout.html.twig' %}\n\n{% block title \"Resources Index\" %}\n\n{% block content %}\n    <h1 class=\"title\">Resources</h1>\n    <h2>\n        <li>\n            <ul><a href=\"{{ path('api_v1_get_posts') }}\">Posts</a></ul>\n            <ul><a href=\"{{ path('api_v1_get_comments') }}\">Comments</a></ul>\n        </li>\n    </h2>\n{% endblock %}"
  },
  {
    "path": "src/RestBundle/RestBundle.php",
    "content": "<?php\n\nnamespace RestBundle;\n\nuse Symfony\\Component\\HttpKernel\\Bundle\\Bundle;\n\nclass RestBundle extends Bundle\n{\n}\n"
  },
  {
    "path": "src/RestBundle/Tests/Controller/RestControllerTest.php",
    "content": "<?php\n\nnamespace RestBundle\\Tests\\Controller;\n\nuse AppBundle\\Entity\\Comment,\n    AppBundle\\Entity\\Post;\n\nuse Symfony\\Component\\HttpFoundation\\Response;\n\nuse Bazinga\\Bundle\\RestExtraBundle\\Test\\WebTestCase;\n\n/**\n * Class RestControllerTest\n * @package RestBundle\\Tests\\Controller\n *\n * @author Alfonso M. García Astorga <me@alfon.io>\n */\nclass RestControllerTest extends WebTestCase\n{\n    protected $entityManager;\n\n    public function __construct()\n    {\n        self::bootKernel(array('environment' => 'test', 'debug' => 'true'));\n        $this->entityManager = self::$kernel->getContainer()->get('doctrine')->getManager();\n    }\n\n    public function testResourcesIndex()\n    {\n        $client = static::createClient();\n\n        $crawler = $client->request('GET', '/api/v1/');\n        $this->assertEquals(Response::HTTP_OK, $client->getResponse()->getStatusCode());\n        $this->assertGreaterThan(\n            0,\n            $crawler->filter('html:contains(\"Resources Index\")')->count()\n        );\n    }\n\n    public function testApiDocIndex()\n    {\n        $client = static::createClient();\n\n        $crawler = $client->request('GET', '/api/doc');\n        $this->assertEquals(Response::HTTP_OK, $client->getResponse()->getStatusCode());\n        $this->assertGreaterThan(\n            0,\n            $crawler->filter('html:contains(\"API documentation\")')->count()\n        );\n    }\n\n    public function testResponseFormats()\n    {\n        $client = static::createClient();\n\n        $client->request('GET', '/api/v1/.json');\n        $response = $client->getResponse();\n        $this->assertEquals(Response::HTTP_OK, $client->getResponse()->getStatusCode());\n        $this->assertJsonResponse($response);\n\n        $client->request('GET', '/api/v1/.xml');\n        $response = $client->getResponse();\n        $this->assertEquals(Response::HTTP_OK, $client->getResponse()->getStatusCode());\n        $this->assertTrue(\n            $response->headers->contains('content-type', 'text/xml; charset=UTF-8'),\n            $response->headers\n        );\n\n        $client->request('GET', '/api/v1/');\n        $response = $client->getResponse();\n        $this->assertEquals(Response::HTTP_OK, $client->getResponse()->getStatusCode());\n        $this->assertTrue(\n            $response->headers->contains('content-type', 'text/html; charset=UTF-8'),\n            $response->headers\n        );\n    }\n\n    public function testGetPosts()\n    {\n        $client = static::createClient();\n\n        $client->request('GET', '/api/v1/posts.json');\n\n        $this->assertEquals(Response::HTTP_OK, $client->getResponse()->getStatusCode());\n    }\n\n    public function testGetPost()\n    {\n        $post = $this->getExamplePostEntity();\n        $this->entityManager->persist($post);\n        $this->entityManager->flush();\n\n        $client = static::createClient();\n\n        $client->request('GET', 'api/v1/posts/' . $post->getId() . '.json');\n        $this->assertEquals(Response::HTTP_OK, $client->getResponse()->getStatusCode());\n\n        $postResponse = json_decode($client->getResponse()->getContent(), true);\n        $this->assertEquals($post->getTitle(), $postResponse['title']);\n\n        $this->entityManager->remove($post);\n        $this->entityManager->flush();\n    }\n\n    public function testNewPost()\n    {\n        $client = static::createClient();\n\n        $client->request(\n            'POST', '/api/v1/posts.json', array(), array(),\n            array(\n                'CONTENT_TYPE' => 'application/json'\n            ),\n            json_encode($this->getExamplePostData())\n        );\n        $this->assertEquals(Response::HTTP_CREATED, $client->getResponse()->getStatusCode());\n\n        $client->request('GET', $client->getResponse()->headers->get('location') . '.json');\n        $this->assertEquals(Response::HTTP_OK, $client->getResponse()->getStatusCode());\n\n        $buildJsonResponse = json_decode($client->getResponse()->getContent(), true);\n\n        $postToRemove = $this->entityManager->getRepository('AppBundle:Post')->find($buildJsonResponse[\"id\"]);\n        $this->entityManager->remove($postToRemove);\n        $this->entityManager->flush();\n    }\n\n    public function testEditPost()\n    {\n        $post = $this->getExamplePostEntity();\n        $this->entityManager->persist($post);\n        $this->entityManager->flush();\n\n        $editPostData['post']['summary'] = 'This summary has been edited.';\n\n        $client = static::createClient();\n\n        $client->request(\n            'PATCH', '/api/v1/posts/' . $post->getId() . '.json', array(), array(),\n            array(\n                'CONTENT_TYPE' => 'application/json'\n            ),\n            json_encode($editPostData)\n        );\n        $this->assertEquals(Response::HTTP_NO_CONTENT, $client->getResponse()->getStatusCode());\n\n        $client->request('GET', '/api/v1/posts/' . $post->getId() . '.json');\n        $this->assertEquals(Response::HTTP_OK, $client->getResponse()->getStatusCode());\n\n        $newPostData = json_decode($client->getResponse()->getContent(), true);\n\n        $this->assertFalse($post->getSummary() === $newPostData['summary']);\n\n        $this->entityManager->remove($post);\n        $this->entityManager->flush();\n    }\n\n    public function testRemovePost()\n    {\n        $post = $this->getExamplePostEntity();\n        $this->entityManager->persist($post);\n        $this->entityManager->flush();\n\n        $client = static::createClient();\n\n        $client->request('GET', '/api/v1/posts/' . $post->getId() . '.json');\n        $this->assertEquals(Response::HTTP_OK, $client->getResponse()->getStatusCode());\n\n        $client->request('DELETE', '/api/v1/posts/'. $post->getId() .'.json');\n        $this->assertEquals(Response::HTTP_NO_CONTENT, $client->getResponse()->getStatusCode());\n\n        $client->request('GET', '/api/v1/posts/' . $post->getId() . '.json');\n        $this->assertEquals(Response::HTTP_NOT_FOUND, $client->getResponse()->getStatusCode());\n    }\n\n    public function testGetComments()\n    {\n        $client = static::createClient();\n\n        $client->request('GET', '/api/v1/comments.json');\n        $this->assertEquals(Response::HTTP_OK, $client->getResponse()->getStatusCode());\n    }\n\n    public function testGetCommentsFromSpecificPost()\n    {\n        $post = $this->getExamplePostEntity();\n        $this->entityManager->persist($post);\n        $this->entityManager->flush();\n\n        $client = static::createClient();\n\n        $client->request('GET', '/api/v1/comments/posts/' . $post->getId() . '.json');\n        $this->assertEquals(Response::HTTP_OK, $client->getResponse()->getStatusCode());\n\n        $postComments = json_decode($client->getResponse()->getContent(), true);\n        $this->assertCount(0, $postComments);\n\n        $comment = $this->getExampleCommentEntity();\n        $comment->setPost($post);\n        $this->entityManager->persist($comment);\n        $this->entityManager->flush();\n\n        $client->request('GET', '/api/v1/comments/posts/' . $post->getId() . '.json');\n        $this->assertEquals(Response::HTTP_OK, $client->getResponse()->getStatusCode());\n\n        $postComments = json_decode($client->getResponse()->getContent(), true);\n        $this->assertCount(1, $postComments);\n\n        $this->entityManager->remove($post);\n        $this->entityManager->flush();\n    }\n\n    public function testGetComment()\n    {\n        $post = $this->getExamplePostEntity();\n        $comment = $this->getExampleCommentEntity();\n        $comment->setPost($post);\n        $this->entityManager->persist($post);\n        $this->entityManager->persist($comment);\n        $this->entityManager->flush();\n\n        $client = static::createClient();\n\n        $client->request('GET', '/api/v1/comments/' . $comment->getId() . '.json');\n        $this->assertEquals(Response::HTTP_OK, $client->getResponse()->getStatusCode());\n\n        $commentResponse = json_decode($client->getResponse()->getContent(), true);\n        $this->assertEquals($comment->getContent(), $commentResponse['content']);\n\n        $this->entityManager->remove($post);\n        $this->entityManager->flush();\n    }\n\n    public function testNewComment()\n    {\n        $post = $this->getExamplePostEntity();\n        $this->entityManager->persist($post);\n        $this->entityManager->flush();\n\n        $client = static::createClient();\n\n        $client->request(\n            'POST', '/api/v1/comments/posts/' . $post->getId() . '.json', array(), array(),\n            array(\n                'CONTENT_TYPE' => 'application/json'\n            ),\n            json_encode($this->getExampleCommentData())\n        );\n        $this->assertEquals($client->getResponse()->getStatusCode(), Response::HTTP_CREATED);\n\n        $client->request('GET', $client->getResponse()->headers->get('location') . '.json');\n        $this->assertEquals(Response::HTTP_OK, $client->getResponse()->getStatusCode());\n\n        $this->entityManager->remove($post);\n        $this->entityManager->flush();\n    }\n\n    public function testEditComment()\n    {\n        $post = $this->getExamplePostEntity();\n        $comment = $this->getExampleCommentEntity();\n        $comment->setPost($post);\n        $this->entityManager->persist($post);\n        $this->entityManager->persist($comment);\n        $this->entityManager->flush();\n        \n        $editCommentData['comment']['content'] = 'This content has been edited.';\n\n        $client = static::createClient();\n\n        $client->request(\n            'PATCH', '/api/v1/comments/' . $comment->getId() . '.json', array(), array(),\n            array(\n                'CONTENT_TYPE' => 'application/json'\n            ),\n            json_encode($editCommentData)\n        );\n        $this->assertEquals(Response::HTTP_NO_CONTENT, $client->getResponse()->getStatusCode());\n\n        $client->request('GET', '/api/v1/comments/' . $comment->getId() . '.json');\n        $this->assertEquals(Response::HTTP_OK, $client->getResponse()->getStatusCode());\n\n        $newCommentData = json_decode($client->getResponse()->getContent(), true);\n\n        $this->assertFalse($comment->getContent() === $newCommentData['content']);\n\n        $this->entityManager->remove($post);\n        $this->entityManager->flush();\n    }\n\n    public function testRemoveComment()\n    {\n        $client = static::createClient();\n\n        $post = $this->getExamplePostEntity();\n        $comment = $this->getExampleCommentEntity();\n        $comment->setPost($post);\n        $this->entityManager->persist($post);\n        $this->entityManager->persist($comment);\n        $this->entityManager->flush();\n\n        $client->request('DELETE', '/api/v1/comments/' . $comment->getId() . '.json');\n        $this->assertEquals(Response::HTTP_NO_CONTENT, $client->getResponse()->getStatusCode());\n\n        $client->request('GET', '/api/v1/comments/' . $comment->getId() . '.json');\n        $this->assertEquals(Response::HTTP_NOT_FOUND, $client->getResponse()->getStatusCode());\n\n        $this->entityManager->remove($post);\n        $this->entityManager->flush();\n    }\n\n    public function getExamplePostData()\n    {\n        $post['post']['title'] = 'Eros diam egestas libero eu vulputate risus';\n        $post['post']['summary'] = 'Sed varius a risus eget aliquam Pellentesque et sapien pulvinar consectetur';\n        $post['post']['content'] = 'Lorem ipsum dolor sit amet consectetur adipisicing elit, sed do eiusmod tempor\n            incididunt ut labore et **dolore magna aliqua**: Duis aute irure dolor in\n            reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.';\n        $post['post']['authorEmail'] = 'anna_admin@symfony.com';\n\n        return $post;\n    }\n\n    public function getExampleCommentData()\n    {\n        $comment['comment']['content'] = 'Lorem ipsum dolor sit amet consectetur.';\n        $comment['comment']['authorEmail'] = 'anna_admin@symfony.com';\n\n        return $comment;\n    }\n\n    public function getExamplePostEntity()\n    {\n        $post = new Post();\n        $post->setTitle('Eros diam egestas libero eu vulputate risus');\n        $post->setSlug('eros-diam-egestas-libero-eu-vulputate-risus');\n        $post->setSummary('Sed varius a risus eget aliquam Pellentesque et sapien pulvinar consectetur In\n            hac habitasse platea dictumst Urna nisl sollicitudin id varius orci quam id turpis Ut eleifend mauris\n            et risus ultrices egestas Aliquam sodales odio id eleifend tristique Ut suscipit posuere justo at\n            vulputate');\n        $post->setContent('Lorem ipsum dolor sit amet consectetur adipisicing elit, sed do eiusmod tempor\n            incididunt ut labore et **dolore magna aliqua**: Duis aute irure dolor in\n            reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n            Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia\n            deserunt mollit anim id est laborum.');\n        $post->setAuthorEmail('anna_admin@symfony.com');\n\n        $this->entityManager->persist($post);\n        $this->entityManager->flush();\n\n        return $post;\n    }\n\n    public function getExampleCommentEntity()\n    {\n        $comment = new Comment();\n        $comment->setContent('Lorem ipsum dolor sit amet consectetur.');\n        $comment->setAuthorEmail('anna_admin@symfony.com');\n\n        return $comment;\n    }\n}"
  },
  {
    "path": "vagrant/Vagrantfile",
    "content": "Vagrant.configure(2) do |config|\n  config.vm.define \"app.symfony.demo.on.roids\" do |app|\n    \n    app.vm.provider \"virtualbox\" do |vb, override|\n      override.vm.boot_timeout = 90\n      override.vm.box = \"ubuntu/trusty64\"\n      override.vm.network \"private_network\", ip: \"192.168.50.88\"\n      vb.name = 'app.symfony.demo.on.roids'\n      vb.memory = 1000\n      vb.cpus = 2\n    end\n\n    app.vm.provision \"ansible\" do |ansible|\n      ansible.playbook = \"ansible/setup.yml\"\n      ansible.verbose = \"v\"\n      ansible.inventory_path = \"ansible/hosts_inventory\"\n      ansible.limit = \"all\"\n      ansible.sudo = true;\n    end\n  end\nend"
  },
  {
    "path": "vagrant/ansible/hosts_inventory",
    "content": "[app]\n192.168.50.88"
  },
  {
    "path": "vagrant/ansible/roles/Stouts.rabbitmq/.bumpversion.cfg",
    "content": "[bumpversion]\ncommit = True\ncurrent_version = 1.1.2\ntag = True\ntag_name = {new_version}\n\n"
  },
  {
    "path": "vagrant/ansible/roles/Stouts.rabbitmq/.travis.yml",
    "content": "---\nlanguage: python\npython: \"2.7\"\nbefore_install:\n - sudo apt-get update -qq\n - sudo apt-get install -qq python-apt python-pycurl\ninstall:\n  - pip install ansible>=1.6.0\nscript:\n  # Prepare tests\n  - echo localhost > inventory\n\n  # Check syntax\n  - ansible-playbook --syntax-check -i inventory test.yml\n\n  # First run\n  - ansible-playbook -i inventory test.yml --connection=local --sudo\n\n  # Second run Idempotence test\n  - >\n    ansible-playbook -i inventory test.yml --connection=local --sudo\n    | grep -q 'changed=0.*failed=0'\n    && (echo 'Idempotence test: pass' && exit 0)\n    || (echo 'Idempotence test: fail' && exit 1)\n\n  # Check for redis is running and working\n  - ps -ef | grep rabbit | grep -v grep || exit 1\n\nredis_update_kernel: no\n\n"
  },
  {
    "path": "vagrant/ansible/roles/Stouts.rabbitmq/CONTRIBUTORS",
    "content": "Contributors:\n\n* Kirill Klenov (http://klen.github.io/)\n* Parker (https://github.com/infowolfe)\n"
  },
  {
    "path": "vagrant/ansible/roles/Stouts.rabbitmq/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2014 Stouts\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
  },
  {
    "path": "vagrant/ansible/roles/Stouts.rabbitmq/Makefile",
    "content": ".PHONY: release major minor patch\n\nVERSION?=minor\nrelease:\n\t@bumpversion $(VERSION)\n\t@git checkout master\n\t@git merge develop\n\t@git checkout develop\n\t@git push --all\n\t@git push --tags\n\t@git checkout develop\n\nmajor:\n\tmake release VERSION=major\n\nminor:\n\tmake release VERSION=minor\n\npatch:\n\tmake release VERSION=patch\n"
  },
  {
    "path": "vagrant/ansible/roles/Stouts.rabbitmq/README.md",
    "content": "Stouts.rabbitmq\n===============\n\n[![Build Status](http://img.shields.io/travis/Stouts/Stouts.rabbitmq.svg?style=flat-square)](https://travis-ci.org/Stouts/Stouts.rabbitmq)\n[![Galaxy](http://img.shields.io/badge/galaxy-Stouts.rabbitmq-blue.svg?style=flat-square)](https://galaxy.ansible.com/list#/roles/953)\n\nAnsible role which manage RabbitMQ.\n\n#### Variables\n\n```yaml\nrabbitmq_enabled: yes\n\nrabbitmq_plugins:                       # Ensure the plugins is installed\n  - rabbitmq_management\n\nrabbitmq_users:                         # Ensure the users added\n  - user: admin\n    password: admin\n    vhost: /\n    configure_priv: .*\n    read_priv: .*\n    write_priv: .*\n    tags: administrator\n\nrabbitmq_vhosts: []                     # Ensure the vhosts are exists\n\nrabbitmq_users_remove:                  # Ensure the users removed\n  - guest\n```\n\n#### Usage\n\nAdd `Stouts.rabbitmq` to your roles and set vars in your playbook file.\n\nExample:\n\n```yaml\n\n- hosts: all\n\n  roles:\n    - Stouts.rabbitmq\n\n  vars:\n    rabbitmq_vhosts: [myhost]\n```\n\n#### License\n\nLicensed under the MIT License. See the LICENSE file for details.\n\n#### Feedback, bug-reports, requests, ...\n\nAre [welcome](https://github.com/Stouts/Stouts.rabbitmq/issues)!\n"
  },
  {
    "path": "vagrant/ansible/roles/Stouts.rabbitmq/defaults/main.yml",
    "content": "---\n\nrabbitmq_enabled: yes\n\nrabbitmq_plugins:                       # Ensure the plugins is installed\n  - rabbitmq_management\n\nrabbitmq_users:                         # Ensure the users added\n  - user: admin\n    password: symfony.demo.on.roids\n    vhost: /\n    configure_priv: .*\n    read_priv: .*\n    write_priv: .*\n    tags: administrator\n\nrabbitmq_vhosts: []                     # Ensure the vhosts are exists"
  },
  {
    "path": "vagrant/ansible/roles/Stouts.rabbitmq/handlers/main.yml",
    "content": "---\n\n- name: rabbitmq restart\n  service: name=rabbitmq-server state=restarted\n"
  },
  {
    "path": "vagrant/ansible/roles/Stouts.rabbitmq/meta/.galaxy_install_info",
    "content": "{install_date: 'Fri Jan 29 17:26:09 2016', version: 1.1.2}\n"
  },
  {
    "path": "vagrant/ansible/roles/Stouts.rabbitmq/meta/main.yml",
    "content": "---\n\ndependencies: []\n\ngalaxy_info:\n  author: klen\n  company: Stouts\n  description: Manage rabbitmq\n  license: MIT\n  platforms:\n  - name: Ubuntu\n    versions:\n    - all\n  categories:\n  - system\n  - networking\n  - database:nosql\n"
  },
  {
    "path": "vagrant/ansible/roles/Stouts.rabbitmq/tasks/install.deb.yml",
    "content": "---\n\n- name: Add RabbitMQ key\n  apt_key: url=http://www.rabbitmq.com/rabbitmq-signing-key-public.asc state=present id=056E8E56\n\n- name: Add RabbitMQ repository\n  apt_repository: repo='deb http://www.rabbitmq.com/debian/ testing main' update_cache=yes\n\n- name: Ensure RabbitMQ is installed\n  apt: pkg=rabbitmq-server\n\n"
  },
  {
    "path": "vagrant/ansible/roles/Stouts.rabbitmq/tasks/main.yml",
    "content": "---\n\n- include: rabbitmq.yml\n  when: rabbitmq_enabled\n  tags: [rabbitmq]\n"
  },
  {
    "path": "vagrant/ansible/roles/Stouts.rabbitmq/tasks/rabbitmq.yml",
    "content": "---\n\n- include: install.deb.yml\n  when: ansible_os_family == 'Debian'\n\n- name: Ensure RabbitMQ is running\n  service: name=rabbitmq-server state=started\n\n- name: Ensure the vhosts is present\n  rabbitmq_vhost: name={{item}}\n  with_items: rabbitmq_vhosts\n\n- name: Ensure the users is present\n  rabbitmq_user: >\n      user={{item.user}}\n      password={{item.password}}\n      configure_priv={{item.configure_priv|default('.*')}}\n      read_priv={{item.read_priv|default('.*')}}\n      write_priv={{item.write_priv|default('.*')}}\n      vhost={{item.vhost|default('/')}}\n      tags={{item.tags|default('')}}\n  with_items: rabbitmq_users\n  ignore_errors: yes\n\n- name: Symlink RabbitMQ bin to sbin\n  file: state=link src=/usr/lib/rabbitmq/bin dest=/usr/lib/rabbitmq/sbin\n\n- name: Enable the plugins is installed\n  rabbitmq_plugin: names={{item}} state=enabled prefix=/usr/lib/rabbitmq\n  with_items: rabbitmq_plugins"
  },
  {
    "path": "vagrant/ansible/roles/Stouts.rabbitmq/test.yml",
    "content": "- hosts: all\n  tasks:\n    - include: tasks/main.yml\n  handlers:\n    - include: handlers/main.yml\n  vars_files:\n    - defaults/main.yml\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.composer/.travis.yml",
    "content": "---\nlanguage: python\npython: \"2.7\"\n\nenv:\n  - SITE=test.yml\n  - SITE=test-global-require.yml\n\nbefore_install:\n  - sudo apt-get update -qq\n  - sudo apt-get install curl\n\ninstall:\n  # Install Ansible.\n  - pip install ansible\n\n  # Add ansible.cfg to pick up roles path.\n  - \"{ echo '[defaults]'; echo 'roles_path = ../'; } >> ansible.cfg\"\n\n  # Install required dependencies.\n  - ansible-galaxy install geerlingguy.php\n\nscript:\n  # Check the role/playbook's syntax.\n  - \"ansible-playbook -i tests/inventory tests/$SITE --syntax-check\"\n\n  # Run the role/playbook with ansible-playbook.\n  - \"ansible-playbook -i tests/inventory tests/$SITE --connection=local --sudo\"\n\n  # Run the role/playbook again, checking to make sure it's idempotent.\n  - >\n    ansible-playbook -i tests/inventory tests/$SITE --connection=local --sudo\n    | grep -q 'changed=0.*failed=0'\n    && (echo 'Idempotence test: pass' && exit 0)\n    || (echo 'Idempotence test: fail' && exit 1)\n\n  # Check if composer is installed and working.\n  - composer\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.composer/README.md",
    "content": "# Ansible Role: Composer\n\n[![Build Status](https://travis-ci.org/geerlingguy/ansible-role-composer.svg?branch=master)](https://travis-ci.org/geerlingguy/ansible-role-composer)\n\nInstalls Composer, the PHP Dependency Manager, on any Linux or UNIX system.\n\n## Requirements\n\n`php` (version 5.4+) should be installed and working.\n\n## Role Variables\n\nAvailable variables are listed below, along with default values (see `defaults/main.yml`):\n\n    composer_path: /usr/local/bin/composer\n\nThe path where composer will be installed and available to your system. Should be in your user's `$PATH` so you can run commands simply with `composer` instead of the full path.\n\n    composer_keep_updated: false\n\nSet this to `true` to update Composer to the latest release every time the playbook is run.\n\n    composer_home_path: '~/.composer'\n    composer_home_owner: root\n    composer_home_group: root\n\nThe `COMPOSER_HOME` path and directory ownership; this is the directory where global packages will be installed.\n\n    composer_global_packages: {}\n\nA list of packages to install globally (using `composer global require`). If you want to install any packages globally, add a list item with a dictionary with the `name` of the package and a `release`, e.g. `- { name: phpunit/phpunit, release: \"4.7.*\" }`. The 'release' is optional, and defaults to `@stable`.\n\n    composer_add_to_path: true\n\nIf `true`, and if there are any configured `composer_global_packages`, the `vendor/bin` directory inside `composer_home_path` will be added to the system's default `$PATH` (for all users).\n\n    composer_github_oauth_token: ''\n\nGitHub OAuth token, used to avoid GitHub API rate limiting errors when building and rebuilding applications using Composer. Follow GitHub's directions to [Create a personal access token](https://help.github.com/articles/creating-an-access-token-for-command-line-use/) if you run into these rate limit errors.\n\n    php_executable: php\n\nThe executable name or full path to the PHP executable. This is defaulted to `php` if you don't override the variable.\n\n## Dependencies\n\nNone (but make sure you've installed PHP; the `geerlingguy.php` role is recommended).\n\n## Example Playbook\n\n    - hosts: servers\n      roles:\n        - geerlingguy.composer\n\nAfter the playbook runs, `composer` will be placed in `/usr/local/bin/composer` (this location is configurable), and will be accessible via normal system accounts.\n\n## License\n\nMIT / BSD\n\n## Author Information\n\nThis role was created in 2014 by [Jeff Geerling](http://jeffgeerling.com/), author of [Ansible for DevOps](http://ansiblefordevops.com/).\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.composer/defaults/main.yml",
    "content": "---\ncomposer_path: /usr/local/bin/composer\ncomposer_keep_updated: false\n\n# The directory where global packages will be installed.\ncomposer_home_path: '~/.composer'\ncomposer_home_owner: root\ncomposer_home_group: root\n\n# A list of packages to install globally. See commented examples below for\n# usage; the 'release' is optional, and defaults to '@stable'.\ncomposer_global_packages: []\n  # - { name: phpunit/phpunit, release: \"4.7.x\" }\n  # - { name: phpunit/phpunit, release: \"@stable\" }\n\ncomposer_add_to_path: true\n\n# GitHub OAuth token (used to help overcome API rate limits).\ncomposer_github_oauth_token: ''\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.composer/meta/.galaxy_install_info",
    "content": "{install_date: 'Tue Jan 26 18:43:52 2016', version: 1.2.6}\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.composer/meta/main.yml",
    "content": "---\ndependencies: []\n\ngalaxy_info:\n  author: geerlingguy\n  description: Composer PHP Dependency Manager\n  company: \"Midwestern Mac, LLC\"\n  license: \"license (BSD, MIT)\"\n  min_ansible_version: 1.4\n  platforms:\n  - name: EL\n    versions:\n    - all\n  - name: GenericUNIX\n    versions:\n    - all\n  - name: Fedora\n    versions:\n    - all\n  - name: opensuse\n    versions:\n    - all\n  - name: GenericBSD\n    versions:\n    - all\n  - name: FreeBSD\n    versions:\n    - all\n  - name: Ubuntu\n    versions:\n    - all\n  - name: SLES\n    versions:\n    - all\n  - name: GenericLinux\n    versions:\n    - all\n  - name: Debian\n    versions:\n    - all\n  categories:\n    - packaging\n    - web\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.composer/tasks/global-require.yml",
    "content": "---\n- name: Install configured globally-required packages.\n  become: yes\n  become_user: \"{{ composer_home_owner }}\"\n  shell: >\n    COMPOSER_HOME={{ composer_home_path }}\n    composer global require {{ item.name }}:{{ item.release | default('@stable') }} --no-progress\n    creates={{ composer_home_path }}/vendor/{{ item.name }}\n  register: composer_global_require_result\n  with_items: composer_global_packages\n\n- name: Add composer_home_path bin directory to global $PATH.\n  template:\n    src: composer.sh.j2\n    dest: /etc/profile.d/composer.sh\n    mode: 0644\n  when: composer_add_to_path\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.composer/tasks/main.yml",
    "content": "---\n- name: Set php_executable variable to a default if not defined.\n  set_fact:\n    php_executable: php\n  when: php_executable is not defined\n\n- name: Check if Composer is installed.\n  stat: \"path={{ composer_path }}\"\n  register: composer_bin\n\n- name: Download Composer installer.\n  get_url:\n    url: https://getcomposer.org/installer\n    dest: /tmp/composer-installer.php\n    mode: 0755\n  when: not composer_bin.stat.exists\n\n- name: Run Composer installer.\n  command: >\n    {{ php_executable }} composer-installer.php\n    chdir=/tmp\n  when: not composer_bin.stat.exists\n\n- name: Move Composer into globally-accessible location.\n  shell: >\n    mv /tmp/composer.phar {{ composer_path }}\n    creates={{ composer_path }}\n  when: not composer_bin.stat.exists\n\n- name: Update Composer to latest version (if configured).\n  shell: >\n    {{ php_executable }} {{ composer_path }} self-update\n  register: composer_update\n  changed_when: \"'Updating to version' in composer_update.stdout\"\n  when: composer_keep_updated\n\n- name: Ensure composer directory exists.\n  file:\n    path: \"{{ composer_home_path }}\"\n    owner: \"{{ composer_home_owner }}\"\n    group: \"{{ composer_home_group }}\"\n    state: directory\n\n- name: Add GitHub OAuth token for Composer (if configured).\n  template:\n    src: \"auth.json.j2\"\n    dest: \"{{ composer_home_path }}/auth.json\"\n    owner: \"{{ composer_home_owner }}\"\n    group: \"{{ composer_home_group }}\"\n  when: composer_github_oauth_token != ''\n\n- include: global-require.yml\n  when: composer_global_packages|length > 0\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.composer/templates/auth.json.j2",
    "content": "{\n    \"github-oauth\": {\n        \"github.com\": \"{{ composer_github_oauth_token }}\"\n    }\n}\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.composer/templates/composer.sh.j2",
    "content": "export PATH=$PATH:{{ composer_home_path }}/vendor/bin\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.composer/tests/inventory",
    "content": "localhost\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.composer/tests/test-global-require.yml",
    "content": "---\n- hosts: localhost\n  remote_user: root\n\n  vars:\n    composer_global_packages:\n      - { name: phpunit/phpunit, release: \"@stable\" }\n\n  roles:\n    - geerlingguy.php\n    - ansible-role-composer\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.composer/tests/test.yml",
    "content": "---\n- hosts: localhost\n  remote_user: root\n\n  roles:\n    - geerlingguy.php\n    - ansible-role-composer\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.nginx/.travis.yml",
    "content": "---\nlanguage: python\npython: \"2.7\"\n\nenv:\n  - SITE=test.yml\n\nbefore_install:\n  - sudo apt-get update -qq\n  - sudo apt-get install -y curl\n\ninstall:\n  # Install Ansible.\n  - pip install ansible\n\n  # Add ansible.cfg to pick up roles path.\n  - \"{ echo '[defaults]'; echo 'roles_path = ../'; } >> ansible.cfg\"\n\nscript:\n  # Check the role/playbook's syntax.\n  - \"ansible-playbook -i tests/inventory tests/$SITE --syntax-check\"\n\n  # Run the role/playbook with ansible-playbook.\n  - \"ansible-playbook -i tests/inventory tests/$SITE --connection=local --sudo\"\n\n  # Run the role/playbook again, checking to make sure it's idempotent.\n  - >\n    ansible-playbook -i tests/inventory tests/$SITE --connection=local --sudo\n    | grep -q 'changed=0.*failed=0'\n    && (echo 'Idempotence test: pass' && exit 0)\n    || (echo 'Idempotence test: fail' && exit 1)\n\n  # TODO - get the test working. Probably need to add a virtual host.\n  # Request a page via Nginx, to make sure Nginx is running and responds.\n  # - \"curl http://localhost/\"\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.nginx/README.md",
    "content": "# Ansible Role: Nginx\n\n[![Build Status](https://travis-ci.org/geerlingguy/ansible-role-nginx.svg?branch=master)](https://travis-ci.org/geerlingguy/ansible-role-nginx)\n\nInstalls Nginx on RedHat/CentOS or Debian/Ubuntu linux servers.\n\nThis role installs and configures the latest version of Nginx from the Nginx yum repository (on RedHat-based systems) or via apt (on Debian-based systems). You will likely need to do extra setup work after this role has installed Nginx, like adding your own [virtualhost].conf file inside `/etc/nginx/conf.d/`, describing the location and options to use for your particular website.\n\n## Requirements\n\nNone.\n\n## Role Variables\n\nAvailable variables are listed below, along with default values (see `defaults/main.yml`):\n\n    nginx_vhosts: []\n\nA list of vhost definitions (server blocks) for Nginx virtual hosts. If left empty, you will need to supply your own virtual host configuration. See the commented example in `defaults/main.yml` for available server options. If you have a large number of customizations required for your server definition(s), you're likely better off managing the vhost configuration file yourself, leaving this variable set to `[]`.\n\n    nginx_vhosts:\n      - listen: \"80 default_server\"\n        server_name: \"example.com\"\n        root: \"/var/www/example.com\"\n        index: \"index.php index.html index.htm\"\n        error_page: \"\"\n        access_log: \"\"\n        error_log: \"\"\n        extra_parameters: |\n          location ~ \\.php$ {\n            fastcgi_split_path_info ^(.+\\.php)(/.+)$;\n            fastcgi_pass unix:/var/run/php5-fpm.sock;\n            fastcgi_index index.php;\n            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n            include fastcgi_params;\n          }\n\nAn example of a fully-populated nginx_vhosts entry, using a `|` to declare a block of syntax for the `extra_parameters`.\n\n    nginx_remove_default_vhost: false\n\nWhether to remove the 'default' virtualhost configuration supplied by Nginx. Useful if you want the base `/` URL to be directed at one of your own virtual hosts configured in a separate .conf file.\n\n    nginx_upstreams: []\n\nIf you are configuring Nginx as a load balancer, you can define one or more upstream sets using this variable. In addition to defining at least one upstream, you would need to configure one of your server blocks to proxy requests through the defined upstream (e.g. `proxy_pass http://myapp1;`). See the commented example in `defaults/main.yml` for more information.\n\n    nginx_user: \"nginx\"\n\nThe user under which Nginx will run. Defaults to `nginx` for RedHat, and `www-data` for Debian.\n\n    nginx_worker_processes: \"1\"\n    nginx_worker_connections: \"1024\"\n\n`nginx_worker_processes` should be set to the number of cores present on your machine. Connections (find this number with `grep processor /proc/cpuinfo | wc -l`). `nginx_worker_connections` is the number of connections per process. Set this higher to handle more simultaneous connections (and remember that a connection will be used for as long as the keepalive timeout duration for every client!).\n\n    nginx_error_log: \"/var/log/nginx/error.log warn\"\n    nginx_access_log: \"/var/log/nginx/access.log main buffer=16k\"\n\nConfiguration of the default error and access logs. Set to `off` to disable a log entirely.\n\n    nginx_sendfile: \"on\"\n    nginx_tcp_nopush: \"on\"\n    nginx_tcp_nodelay: \"on\"\n\nTCP connection options. See [this blog post](https://t37.net/nginx-optimization-understanding-sendfile-tcp_nodelay-and-tcp_nopush.html) for more information on these directives.\n\n    nginx_keepalive_timeout: \"65\"\n    nginx_keepalive_requests: \"100\"\n\nNginx keepalive settings. Timeout should be set higher (10s+) if you have more polling-style traffic (AJAX-powered sites especially), or lower (<10s) if you have a site where most users visit a few pages and don't send any further requests.\n\n    nginx_client_max_body_size: \"64m\"\n\nThis value determines the largest file upload possible, as uploads are passed through Nginx before hitting a backend like `php-fpm`. If you get an error like `client intended to send too large body`, it means this value is set too low.\n\n    nginx_proxy_cache_path: \"\"\n\nSet as the `proxy_cache_path` directive in the `nginx.conf` file. By default, this will not be configured (if left as an empty string), but if you wish to use Nginx as a reverse proxy, you can set this to a valid value (e.g. `\"/var/cache/nginx keys_zone=cache:32m\"`) to use Nginx's cache (further proxy configuration can be done in individual server configurations).\n\n    nginx_extra_http_options: \"\"\n\nExtra lines to be inserted in the top-level `http` block in `nginx.conf`. The value should be defined literally (as you would insert it directly in the `nginx.conf`, adhering to the Nginx configuration syntax - such as `;` for line termination, etc.), for example:\n\n    nginx_extra_http_options: |\n      proxy_buffering    off;\n      proxy_set_header   X-Real-IP $remote_addr;\n      proxy_set_header   X-Scheme $scheme;\n      proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;\n      proxy_set_header   Host $http_host;\n\n    nginx_default_release: \"\"\n\n(For Debian/Ubuntu only) Allows you to set a different repository for the installation of Nginx. As an example, if you are running Debian's wheezy release, and want to get a newer version of Nginx, you can install the `wheezy-backports` repository and set that value here, and Ansible will use that as the `-t` option while installing Nginx.\n\n## Dependencies\n\nNone.\n\n## Example Playbook\n\n    - hosts: server\n      roles:\n        - { role: geerlingguy.nginx }\n\n## License\n\nMIT / BSD\n\n## Author Information\n\nThis role was created in 2014 by [Jeff Geerling](http://jeffgeerling.com/), author of [Ansible for DevOps](http://ansiblefordevops.com/).\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.nginx/defaults/main.yml",
    "content": "---\n# Used only for Debian/Ubuntu installation, as the -t option for apt.\nnginx_default_release: \"\"\n\nnginx_worker_processes: \"1\"\nnginx_worker_connections: \"1024\"\n\nnginx_error_log: \"/var/log/nginx/error.log warn\"\nnginx_access_log: \"/var/log/nginx/access.log main buffer=16k\"\n\nnginx_sendfile: \"on\"\nnginx_tcp_nopush: \"on\"\nnginx_tcp_nodelay: \"on\"\n\nnginx_keepalive_timeout: \"65\"\nnginx_keepalive_requests: \"100\"\n\nnginx_client_max_body_size: \"64m\"\n\nnginx_proxy_cache_path: \"\"\n\nnginx_extra_http_options: \"\"\n# Example extra http options, printed inside the main server http config:\n#    nginx_extra_http_options: |\n#      proxy_buffering    off;\n#      proxy_set_header   X-Real-IP $remote_addr;\n#      proxy_set_header   X-Scheme $scheme;\n#      proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;\n#      proxy_set_header   Host $http_host;\n\nnginx_remove_default_vhost: true\nnginx_vhosts:\n  - listen: \"80\"\n    server_name: \"192.168.50.88\"\n    root: \"/var/www/app/web\"\n    extra_parameters: |\n      location / {\n        # try to serve file directly, fallback to app.php\n        try_files $uri /app.php$is_args$args;\n      }\n      # DEV\n      # This rule should only be placed on your development environment\n      # In production, don't include this and don't deploy app_dev.php or config.php\n      location ~ ^/(app_dev|config)\\.php(/|$) {\n          fastcgi_pass unix:/var/run/php5-fpm.sock;\n          fastcgi_split_path_info ^(.+\\.php)(/.*)$;\n          include /etc/nginx/fastcgi_params;\n          # When you are using symlinks to link the document root to the\n          # current version of your application, you should pass the real\n          # application path instead of the path to the symlink to PHP\n          # FPM.\n          # Otherwise, PHP's OPcache may not properly detect changes to\n          # your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126\n          # for more information).\n          fastcgi_param  SCRIPT_FILENAME  $realpath_root$fastcgi_script_name;\n          fastcgi_param DOCUMENT_ROOT $realpath_root;\n      }\n      # PROD\n      location ~ ^/app\\.php(/|$) {\n          fastcgi_pass unix:/var/run/php5-fpm.sock;\n          fastcgi_split_path_info ^(.+\\.php)(/.*)$;\n          include /etc/nginx/fastcgi_params;\n          # When you are using symlinks to link the document root to the\n          # current version of your application, you should pass the real\n          # application path instead of the path to the symlink to PHP\n          # FPM.\n          # Otherwise, PHP's OPcache may not properly detect changes to\n          # your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126\n          # for more information).\n          fastcgi_param  SCRIPT_FILENAME  $realpath_root$fastcgi_script_name;\n          fastcgi_param DOCUMENT_ROOT $realpath_root;\n          # Prevents URIs that include the front controller. This will 404:\n          # http://domain.tld/app.php/some-path\n          # Remove the internal directive to allow URIs like this\n          internal;\n      }\n\nnginx_upstreams: []\n# - name: myapp1\n#   strategy: \"ip_hash\" # \"least_conn\", etc.\n#   servers: {\n#     \"srv1.example.com\",\n#     \"srv2.example.com weight=3\",\n#     \"srv3.example.com\"\n#   }\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.nginx/handlers/main.yml",
    "content": "---\n- name: restart nginx\n  service: name=nginx state=restarted\n\n- name: validate nginx configuration\n  command: nginx -t -c /etc/nginx/nginx.conf\n  changed_when: False\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.nginx/meta/.galaxy_install_info",
    "content": "{install_date: 'Mon Jan 25 18:23:54 2016', version: 1.5.0}\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.nginx/meta/main.yml",
    "content": "---\ndependencies: []\n\ngalaxy_info:\n  author: geerlingguy\n  description: Nginx installation for Linux/UNIX.\n  company: \"Midwestern Mac, LLC\"\n  license: \"license (BSD, MIT)\"\n  min_ansible_version: 1.4\n  platforms:\n  - name: EL\n    versions:\n    - 6\n    - 7\n  - name: Debian\n    versions:\n    - all\n  - name: Ubuntu\n    versions:\n    - all\n  categories:\n    - development\n    - web\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.nginx/tasks/main.yml",
    "content": "---\n# Variable setup.\n- name: Include OS-specific variables.\n  include_vars: \"{{ ansible_os_family }}.yml\"\n\n- name: Define nginx_user.\n  set_fact:\n    nginx_user: \"{{ __nginx_user }}\"\n  when: nginx_user is not defined\n\n# Setup/install tasks.\n- include: setup-RedHat.yml\n  when: ansible_os_family == 'RedHat'\n\n- include: setup-Debian.yml\n  when: ansible_os_family == 'Debian'\n\n# Vhost configuration.\n- include: vhosts.yml\n\n# Nginx setup.\n- name: Copy nginx configuration in place.\n  template:\n    src: nginx.conf.j2\n    dest: /etc/nginx/nginx.conf\n    owner: root\n    group: root\n    mode: 0644\n    validate: 'nginx -t -c %s'\n  notify:\n    - validate nginx configuration\n    - restart nginx\n\n- name: Ensure nginx is started and enabled to start at boot.\n  service: name=nginx state=started enabled=yes\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.nginx/tasks/setup-Debian.yml",
    "content": "---\n- name: Update apt cache.\n  apt: update_cache=yes cache_valid_time=86400\n\n- name: Ensure nginx is installed.\n  apt:\n    pkg: nginx\n    state: installed\n    default_release: \"{{ nginx_default_release }}\"\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.nginx/tasks/setup-RedHat.yml",
    "content": "---\n- name: Enable nginx repo.\n  template:\n    src: nginx.repo.j2\n    dest: /etc/yum.repos.d/nginx.repo\n    owner: root\n    group: root\n    mode: 0644\n\n- name: Ensure nginx is installed.\n  yum: pkg=nginx state=installed enablerepo=nginx\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.nginx/tasks/vhosts.yml",
    "content": "---\n- name: Remove default nginx vhost config file (if configured).\n  file:\n    path: \"{{ nginx_default_vhost_path }}\"\n    state: absent\n  when: nginx_remove_default_vhost\n  notify:\n    - validate nginx configuration\n    - restart nginx\n\n- name: Add managed vhost config file (if any vhosts are configured).\n  template:\n    src: vhosts.j2\n    dest: \"{{ nginx_vhost_path }}/vhosts.conf\"\n    mode: 0644\n  when: nginx_vhosts|length > 0\n  notify:\n    - validate nginx configuration\n    - restart nginx\n\n- name: Remove managed vhost config file (if no vhosts are configured).\n  file:\n    path: \"{{ nginx_vhost_path }}/vhosts.conf\"\n    state: absent\n  when: nginx_vhosts|length == 0\n  notify:\n    - validate nginx configuration\n    - restart nginx\n\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.nginx/templates/nginx.conf.j2",
    "content": "user  {{ nginx_user }};\n\nerror_log  {{ nginx_error_log }};\npid        /var/run/nginx.pid;\n\nworker_processes  {{ nginx_worker_processes }};\n\nevents {\n    worker_connections  {{ nginx_worker_connections }};\n}\n\nhttp {\n    include       /etc/nginx/mime.types;\n    default_type  application/octet-stream;\n\n    server_names_hash_bucket_size 64;\n\n    client_max_body_size {{ nginx_client_max_body_size }};\n\n    log_format  main  '$remote_addr - $remote_user [$time_local] \"$request\" '\n                      '$status $body_bytes_sent \"$http_referer\" '\n                      '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n    access_log  {{ nginx_access_log }};\n\n    sendfile        {{ nginx_sendfile }};\n    tcp_nopush      {{ nginx_tcp_nopush }};\n    tcp_nodelay     {{ nginx_tcp_nodelay }};\n\n    keepalive_timeout  {{ nginx_keepalive_timeout }};\n    keepalive_requests {{ nginx_keepalive_requests }};\n\n    #gzip  on;\n\n{% if nginx_proxy_cache_path %}\n    proxy_cache_path {{ nginx_proxy_cache_path }};\n{% endif %}\n\n{% if nginx_extra_http_options %}\n    {{ nginx_extra_http_options }}\n{% endif %}\n\n{% for upstream in nginx_upstreams %}\n    upstream {{ upstream.name }} {\n{% if upstream.strategy is defined %}\n        {{ upstream.strategy }};\n{% endif %}\n{% for server in upstream.servers %}\n        server {{ server }};\n{% endfor %}\n    }\n{% endfor %}\n\n    include {{ nginx_conf_path }}/*.conf;\n{% if nginx_conf_path != nginx_vhost_path %}\n    include {{ nginx_vhost_path }}/*.conf;\n{% endif %}\n}\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.nginx/templates/nginx.repo.j2",
    "content": "[nginx]\nname=nginx repo\nbaseurl=http://nginx.org/packages/centos/{{ ansible_distribution_major_version }}/$basearch/\ngpgcheck=0\nenabled=1\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.nginx/templates/vhosts.j2",
    "content": "{% for vhost in nginx_vhosts %}\nserver {\n    listen {{ vhost.listen | default('80 default_server') }};\n    server_name {{ vhost.server_name }};\n\n    {% if vhost.root is defined %}\n    root {{ vhost.root }};\n    {% endif %}\n\n    index {{ vhost.index | default('index.html index.htm') }};\n\n    {% if vhost.error_page is defined %}\n    error_page {{ vhost.error_page }};\n    {% endif %}\n    {% if vhost.access_log is defined %}\n    access_log {{ vhost.access_log }};\n    {% endif %}\n    {% if vhost.error_log is defined %}\n    error_log {{ vhost.error_log }} error;\n    {% endif %}\n\n    {% if vhost.return is defined %}\n    return {{ vhost.return }};\n    {% endif %}\n\n    {% if vhost.extra_parameters is defined %}\n    {{ vhost.extra_parameters }}\n    {% endif %}\n}\n{% endfor %}\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.nginx/tests/inventory",
    "content": "localhost\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.nginx/tests/test.yml",
    "content": "---\n- hosts: localhost\n  remote_user: root\n  roles:\n    - ansible-role-nginx\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.nginx/vars/Debian.yml",
    "content": "---\nnginx_conf_path: /etc/nginx/conf.d\nnginx_vhost_path: /etc/nginx/sites-enabled\nnginx_default_vhost_path: /etc/nginx/sites-enabled/default\n__nginx_user: \"www-data\"\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.nginx/vars/RedHat.yml",
    "content": "---\nnginx_conf_path: /etc/nginx/conf.d\nnginx_vhost_path: /etc/nginx/conf.d\nnginx_default_vhost_path: /etc/nginx/conf.d/default.conf\n__nginx_user: \"nginx\"\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.php/.travis.yml",
    "content": "---\nlanguage: python\npython: \"2.7\"\n\nenv:\n  - SITE=test-install-package.yml\n  - SITE=test-install-from-source.yml\n\nbefore_install:\n  - sudo apt-get update -qq\n\ninstall:\n  # Install Ansible.\n  # TODO - remove specific version number after the following issue is fixed:\n  # https://github.com/ansible/ansible-modules-core/issues/2473\n  - pip install ansible==1.9.4\n\n  # Add ansible.cfg to pick up roles path.\n  - \"{ echo '[defaults]'; echo 'roles_path = ../'; } >> ansible.cfg\"\n\nscript:\n  # Check the role/playbook's syntax.\n  - \"ansible-playbook -i tests/inventory tests/$SITE --syntax-check\"\n\n  # Run the role/playbook with ansible-playbook.\n  - \"ansible-playbook -i tests/inventory tests/$SITE --connection=local --sudo\"\n\n  # Run the role/playbook again, checking to make sure it's idempotent.\n  - >\n    ansible-playbook -i tests/inventory tests/$SITE --connection=local --sudo\n    | grep -q 'changed=0.*failed=0'\n    && (echo 'Idempotence test: pass' && exit 0)\n    || (echo 'Idempotence test: fail' && exit 1)\n\n  # Run the role/playbook in --check mode.\n  - \"ansible-playbook -i tests/inventory tests/$SITE --connection=local --sudo --check\"\n\n  # Make sure PHP is available.\n  - >\n    php -v\n    | grep -q 'The PHP Group'\n    && (echo 'PHP is installed' && exit 0)\n    || (echo 'PHP is not installed' && exit 1)\n\n  # And for posterity...\n  - php -v\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.php/README.md",
    "content": "# Ansible Role: PHP\n\n[![Build Status](https://travis-ci.org/geerlingguy/ansible-role-php.svg?branch=master)](https://travis-ci.org/geerlingguy/ansible-role-php)\n\nInstalls PHP on RedHat/CentOS and Debian/Ubuntu servers.\n\n## Requirements\n\nMust be running a separate web server, such as Nginx or Apache.\n\n## Role Variables\n\nAvailable variables are listed below, along with default values (see `defaults/main.yml`):\n\n    php_packages: []\n\nA list of the PHP packages to install (OS-specific by default). You'll likely want to install common packages like `php`, `php-cli`, `php-devel` and `php-pdo`, and you can add in whatever other packages you'd like (for example, `php-gd` for image manipulation, or `php-ldap` if you need to connect to an LDAP server for authentication).\n\n_Note: If you're using Debian/Ubuntu, you may also need to install `libapache2-mod-fastcgi` (for cgi/PHP-FPM) or `libapache2-mod-php5` (or a similar package depending on PHP version) if you want to use `mod_php` with Apache._\n\n    php_enable_webserver: true\n\nIf your usage of PHP is tied to a web server (e.g. Apache or Nginx), leave this default value. If you are using PHP server-side or to run some small application, set this value to `false` so this role doesn't attempt to interact with a web server.\n\n    php_webserver_daemon: \"httpd\"\n\nThe default values for the HTTP server deamon are `httpd` (used by Apache) for RedHat/CentOS, or `apache2` (also used by Apache) for Debian/Ubuntu. If you are running another webserver (for example, `nginx`), change this value to the name of the daemon under which the webserver runs.\n\n    php_enablerepo: \"\"\n\n(RedHat/CentOS only) If you have enabled any additional repositories (might I suggest [geerlingguy.repo-epel](https://github.com/geerlingguy/ansible-role-repo-epel) or [geerlingguy.repo-remi](https://github.com/geerlingguy/ansible-role-repo-remi)), those repositories can be listed under this variable (e.g. `remi-php56,epel`). This can be handy, as an example, if you want to install the latest version of PHP 5.6, which is in the Remi repository.\n\n    php_executable: \"php\"\n\nThe executable to run when calling PHP from the command line. You should only change this if running `php` on your server doesn't target the correct executable, or if you're using software collections on RHEL/CentOS and need to target a different version of PHP.\n\n### PHP-FPM\n\nPHP-FPM is a simple and robust FastCGI Process Manager for PHP. It can dramatically ease scaling of PHP apps and is the normal way of running PHP-based sites and apps when using a webserver like Nginx (though it can be used with other webservers just as easily).\n\nWhen using this role with PHP running as `php-fpm` instead of as a process inside a webserver (e.g. Apache's `mod_php`), you need to set the following variable to `true`:\n\n    php_enable_php_fpm: false\n\nIf you're using Apache, you can easily get it configured to work with PHP-FPM using the [geerlingguy.apache-php-fpm](https://github.com/geerlingguy/ansible-role-apache-php-fpm) role.\n\n    php_fpm_listen: \"127.0.0.1:9000\"\n    php_fpm_listen_allowed_clients: \"127.0.0.1\"\n    php_fpm_pm_max_children: 50\n    php_fpm_pm_start_servers: 5\n    php_fpm_pm_min_spare_servers: 5\n    php_fpm_pm_max_spare_servers: 5\n\nSpecific settings inside the default `www.conf` PHP-FPM pool. If you'd like to manage additional settings, you can do so either by replacing the file with your own template or using `lineinfile` like this role does inside `tasks/configure.yml`.\n\n### php.ini settings\n\n    php_use_managed_ini: true\n\nBy default, all the extra defaults below are applied through the php.ini included with this role. You can self-manage your php.ini file (if you need more flexility in its configuration) by setting this to `false` (in which case all the below variables will be ignored).\n\n    php_memory_limit: \"256M\"\n    php_max_execution_time: \"60\"\n    php_max_input_time: \"60\"\n    php_max_input_vars: \"1000\"\n    php_realpath_cache_size: \"32K\"\n    php_upload_max_filesize: \"64M\"\n    php_post_max_size: \"32M\"\n    php_date_timezone: \"America/Chicago\"\n    php_sendmail_path: \"/usr/sbin/sendmail -t -i\"\n    php_short_open_tag: false\n    php_error_reporting: \"E_ALL & ~E_DEPRECATED & ~E_STRICT\"\n    php_display_errors: \"Off\"\n    php_display_startup_errors: \"On\"\n    php_expose_php: \"On\"\n\nVarious defaults for PHP. Only used if `php_use_managed_ini` is set to `true`.\n\n### OpCache-related Variables\n\nThe OpCache is included in PHP starting in version 5.5, and the following variables will only take effect if the version of PHP you have installed is 5.5 or greater.\n\n    php_opcache_enabled_in_ini: false\n\nWhen installing Opcache, depending on the system and whether running PHP as a webserver module or standalone via `php-fpm`, you might need the line `extension=opcache.so` in `opcache.ini`. If you need that line added (e.g. you're running `php-fpm`), set this variable to true.\n\n    php_opcache_enable: \"1\"\n    php_opcache_enable_cli: \"0\"\n    php_opcache_memory_consumption: \"96\"\n    php_opcache_interned_strings_buffer: \"16\"\n    php_opcache_max_accelerated_files: \"4096\"\n    php_opcache_max_wasted_percentage: \"5\"\n    php_opcache_validate_timestamps: \"1\"\n    php_opcache_revalidate_freq: \"2\"\n    php_opcache_max_file_size: \"0\"\n\nOpCache ini directives that are often customized on a system. Make sure you have enough memory and file slots allocated in the OpCache (`php_opcache_memory_consumption`, in MB, and `php_opcache_max_accelerated_files`) to contain all the PHP code you are running. If not, you may get less-than-optimal performance!\n\n    php_opcache_conf_filename: [platform-specific]\n\nThe platform-specific opcache configuration filename. Generally the default should work, but in some cases, you may need to override the filename.\n\n### APC-related Variables\n\n    php_enable_apc: true\n\nWhether to enable APC. Other APC variables will be ineffective if this is set to false.\n\n    php_apc_enabled_in_ini: false\n\nWhen installing APC, depending on the system and whether running PHP as a webserver module or standalone via `php-fpm`, you might need the line `extension=apc.so` in `apc.ini`. If you need that line added (e.g. you're running `php-fpm`), set this variable to true.\n\n    php_apc_cache_by_default: \"1\"\n    php_apc_shm_size: \"96M\"\n    php_apc_stat: \"1\"\n    php_apc_enable_cli: \"0\"\n\nAPC ini directives that are often customized on a system. Set `php_apc_cache_by_default` to 0 to disable APC by default (so you could just enable it for one codebase if you have a *lot* of code on a server). Set the `php_apc_shm_size` so it will hold all your application code in memory with a little overhead (fragmentation or APC running out of memory will slow down PHP *dramatically*).\n\n    php_apc_conf_filename: [platform-specific]\n\nThe platform-specific APC configuration filename. Generally the default should work, but in some cases, you may need to override the filename.\n\n#### Ensuring APC is installed\n\nIf you use APC, you will need to make sure APC is installed (it is installed by default, but if you customize the `php_packages` list, you need to include APC in the list):\n\n  - *On RHEL/CentOS systems*: Make sure `php-pecl-apc` is in the list of `php_packages`.\n  - *On Debian/Ubuntu systems*: Make sure `php-apc` is in the list of `php_packages`.\n\nYou can also install APC via `pecl`, but it's simpler to manage the installation with the system's package manager.\n\n### Installing from Source\n\nIf you need a specific version of PHP, or would like to test the latest (e.g. master) version of PHP, there's a good chance there's no suitable package already available in your platform's package manager. In these cases, you may choose to install PHP from source by compiling it directly.\n\nNote that source compilation takes *much* longer than installing from packages (PHP HEAD takes 5+ minutes to compile on a modern quad-core computer, just as a point of reference).\n\n    php_install_from_source: false\n\nSet this to `true` to install PHP from source instead of installing from packages.\n\n    php_source_version: \"master\"\n\nThe version of PHP to install from source (a git branch, tag, or commit hash).\n\n    php_source_clone_dir: \"~/php-src\"\n    php_source_install_path: \"/opt/php\"\n    php_source_install_gmp_path: \"/usr/include/x86_64-linux-gnu/gmp.h\"\n\nLocation where source will be cloned and installed, and the location of the GMP header file (which can be platform/distribution specific).\n\n    php_source_make_command: \"make\"\n\nSet the `make` command to `make --jobs=X` where `X` is the number of cores present on the server where PHP is being compiled. Will speed up compilation times dramatically if you have multiple cores.\n\n    php_source_configure_command: >\n      [...]\n\nThe `./configure` command that will build the Makefile to be used for PHP compilation. Add in all the options you need for your particular environment. Using a folded scalar (`>`) allows you to define the variable over multiple lines, which is extremely helpful for legibility and source control!\n\nA few other notes/caveats for specific configurations:\n\n  - **Apache with `mpm_prefork`**: If you're using Apache with prefork as a webserver for PHP, you will need to make sure `apxs2` is available on your system (e.g. by installing `apache2-prefork-dev` in Ubuntu), and you will need to make sure the option `--with-apxs2` is defined in `php_source_configure_command`. Finally, you will need to make sure the `mpm_prefork` module is loaded instead of `mpm_worker` or `mpm_event`, and likely add a `phpX.conf` (where `X` is the major version of PHP) configuration file to the Apache module config folder with contents like [`php7.conf`](https://gist.github.com/geerlingguy/5ae5445f28e71264e8c1).\n  - **Apache with `mpm_event` or `mpm_worker`**: If you're using Apache with event or worker as a webserver for PHP, you will need to compile PHP with FPM. Make sure the option `--enable-fpm` is defined in `php_source_configure_command`. You'll also need to make sure Apache's support for CGI and event is installed (e.g. by installing `apache2-mpm-event` and `libapache2-mod-fastcgi`) and the `mpm_event` module is loaded.\n  - **Nginx**: If you're using Nginx as a webserver for PHP, you will need to compile PHP with FPM. Make sure the option `--enable-fpm` is defined in `php_source_configure_command`.\n\n## Dependencies\n\nNone.\n\n## Example Playbook\n\n    - hosts: webservers\n      vars_files:\n        - vars/main.yml\n      roles:\n        - { role: geerlingguy.php }\n\n*Inside `vars/main.yml`*:\n\n    php_memory_limit: \"128M\"\n    php_max_execution_time: \"90\"\n    php_upload_max_filesize: \"256M\"\n    php_packages:\n      - php\n      - php-cli\n      - php-common\n      - php-devel\n      - php-gd\n      - php-mbstring\n      - php-pdo\n      - php-pecl-apc\n      - php-xml\n      ...\n\n## License\n\nMIT / BSD\n\n## Author Information\n\nThis role was created in 2014 by [Jeff Geerling](http://jeffgeerling.com/), author of [Ansible for DevOps](http://ansiblefordevops.com/).\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.php/defaults/main.yml",
    "content": "---\n# Pass in a comma-separated list of repos to use (e.g. \"remi,epel\").\nphp_enablerepo: \"ppa:ondrej/php5-5.6\"\n\n# Set this to false if you're not using PHP with Apache/Nginx/etc.\nphp_enable_webserver: true\n\n# PHP-FPM configuration.\nphp_enable_php_fpm: false\nphp_fpm_listen: \"127.0.0.1:9000\"\nphp_fpm_listen_allowed_clients: \"127.0.0.1\"\nphp_fpm_pm_max_children: 50\nphp_fpm_pm_start_servers: 5\nphp_fpm_pm_min_spare_servers: 5\nphp_fpm_pm_max_spare_servers: 5\n\n# The executable to run when calling PHP from the command line.\nphp_executable: \"php\"\n\n# OpCache settings (useful for PHP >=5.5).\nphp_opcache_enabled_in_ini: false\nphp_opcache_enable: \"1\"\nphp_opcache_enable_cli: \"0\"\nphp_opcache_memory_consumption: \"96\"\nphp_opcache_interned_strings_buffer: \"16\"\nphp_opcache_max_accelerated_files: \"4096\"\nphp_opcache_max_wasted_percentage: \"5\"\nphp_opcache_validate_timestamps: \"1\"\nphp_opcache_revalidate_freq: \"2\"\nphp_opcache_max_file_size: \"0\"\n\n# APC settings (useful for PHP <5.5).\nphp_enable_apc: true\nphp_apc_enabled_in_ini: false\nphp_apc_cache_by_default: \"1\"\nphp_apc_shm_size: \"96M\"\nphp_apc_stat: \"1\"\nphp_apc_enable_cli: \"0\"\n\n# If this is set to false, none of the following options will have any effect.\n# Any and all changes to /etc/php.ini will be your responsibility.\nphp_use_managed_ini: true\n\nphp_expose_php: \"On\"\nphp_memory_limit: \"256M\"\nphp_max_execution_time: \"60\"\nphp_max_input_time: \"60\"\nphp_max_input_vars: \"1000\"\nphp_realpath_cache_size: \"32K\"\nphp_upload_max_filesize: \"64M\"\nphp_post_max_size: \"32M\"\nphp_date_timezone: \"Europe/Madrid\"\n\nphp_sendmail_path: \"/usr/sbin/sendmail -t -i\"\nphp_short_open_tag: false\n\nphp_error_reporting: \"E_ALL & ~E_DEPRECATED & ~E_STRICT\"\nphp_display_errors: \"Off\"\nphp_display_startup_errors: \"Off\"\n\n# Install PHP from source (instead of using a package manager) with these vars.\nphp_install_from_source: false\nphp_source_version: \"master\"\nphp_source_clone_dir: \"~/php-src\"\nphp_source_install_path: \"/opt/php\"\nphp_source_install_gmp_path: \"/usr/include/x86_64-linux-gnu/gmp.h\"\n# For faster compile time: \"make --jobs=X\" where X is # of cores present.\nphp_source_make_command: \"make\"\nphp_source_configure_command: >\n  ./configure\n  --prefix={{ php_source_install_path }}\n  --with-config-file-path={{ php_conf_path }}\n  --enable-mbstring\n  --enable-zip\n  --enable-bcmath\n  --enable-pcntl\n  --enable-ftp\n  --enable-exif\n  --enable-calendar\n  --enable-opcache\n  --enable-pdo\n  --enable-sysvmsg\n  --enable-sysvsem\n  --enable-sysvshm\n  --enable-wddx\n  --with-curl\n  --with-mcrypt\n  --with-iconv\n  --with-gmp\n  --with-pspell\n  --with-gd\n  --with-jpeg-dir=/usr\n  --with-png-dir=/usr\n  --with-zlib-dir=/usr\n  --with-xpm-dir=/usr\n  --with-freetype-dir=/usr\n  --enable-gd-native-ttf\n  --enable-gd-jis-conv\n  --with-openssl\n  --with-pdo-mysql=/usr\n  --with-gettext=/usr\n  --with-zlib=/usr\n  --with-bz2=/usr\n  --with-recode=/usr\n  --with-mysqli=/usr/bin/mysql_config\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.php/handlers/main.yml",
    "content": "---\n- name: restart webserver\n  service:\n    name: nginx\n    state: restarted\n  notify: restart php-fpm\n  when: php_enable_webserver\n\n- name: restart php-fpm\n  service:\n    name: \"{{ php_fpm_daemon }}\"\n    state: restarted\n  when: php_enable_php_fpm\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.php/meta/.galaxy_install_info",
    "content": "{install_date: 'Tue Jan 26 19:01:52 2016', version: 1.8.2}\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.php/meta/main.yml",
    "content": "---\ndependencies: []\n\ngalaxy_info:\n  author: geerlingguy\n  description: PHP for RedHat/CentOS/Debian/Ubuntu.\n  company: \"Midwestern Mac, LLC\"\n  license: \"license (BSD, MIT)\"\n  min_ansible_version: 1.8\n  platforms:\n  - name: EL\n    versions:\n    - 6\n    - 7\n  - name: Debian\n    versions:\n    - all\n  - name: Ubuntu\n    versions:\n    - all\n  categories:\n    - development\n    - web\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.php/tasks/configure-fpm.yml",
    "content": "---\n- name: Define php_fpm_daemon.\n  set_fact:\n    php_fpm_daemon: \"{{ __php_fpm_daemon }}\"\n  when: php_fpm_daemon is not defined\n\n- name: Define php_fpm_pool_conf_path.\n  set_fact:\n    php_fpm_pool_conf_path: \"{{ __php_fpm_pool_conf_path }}\"\n  when: php_fpm_pool_conf_path is not defined\n\n- name: Configure php-fpm pool (if enabled).\n  lineinfile:\n    dest: \"{{ php_fpm_pool_conf_path }}\"\n    regexp: \"{{ item.regexp }}\"\n    line: \"{{ item.line }}\"\n    state: present\n  with_items:\n    - regexp: \"^listen.?=.+$\"\n      line: \"listen = {{ php_fpm_listen }}\"\n    - regexp: '^listen\\.allowed_clients.?=.+$'\n      line: \"listen.allowed_clients = {{ php_fpm_listen_allowed_clients }}\"\n    - regexp: '^pm\\.max_children.?=.+$'\n      line: \"pm.max_children = {{ php_fpm_pm_max_children }}\"\n    - regexp: '^pm\\.start_servers.?=.+$'\n      line: \"pm.start_servers = {{ php_fpm_pm_start_servers }}\"\n    - regexp: '^pm\\.min_spare_servers.?=.+$'\n      line: \"pm.min_spare_servers = {{ php_fpm_pm_min_spare_servers }}\"\n    - regexp: '^pm\\.max_spare_servers.?=.+$'\n      line: \"pm.max_spare_servers = {{ php_fpm_pm_max_spare_servers }}\"\n  when: php_enable_php_fpm\n  notify: restart php-fpm\n\n- name: Ensure php-fpm is started and enabled at boot (if configured).\n  service:\n    name: \"{{ php_fpm_daemon }}\"\n    state: started\n    enabled: yes\n  when: php_enable_php_fpm\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.php/tasks/configure.yml",
    "content": "---\n- name: Ensure configuration directories exist.\n  file:\n    path: \"{{ item }}\"\n    state: directory\n    follow: true\n  with_items:\n    - \"{{ php_conf_path }}\"\n    - \"{{ php_extension_conf_path }}\"\n\n- name: Place PHP configuration file in place.\n  template:\n    src: php.ini.j2\n    dest: \"{{ php_conf_path }}/php.ini\"\n    owner: root\n    group: root\n    mode: 0644\n  notify: restart webserver\n  when: php_use_managed_ini\n\n- name: Place APC configuration file in place.\n  template:\n    src: apc.ini.j2\n    dest: \"{{ php_extension_conf_path }}/{{ php_apc_conf_filename }}\"\n    owner: root\n    group: root\n    force: yes\n    mode: 0644\n  when: php_enable_apc\n  notify: restart webserver\n\n- name: Place OpCache configuration file in place.\n  template:\n    src: opcache.ini.j2\n    dest: \"{{ php_extension_conf_path }}/{{ php_opcache_conf_filename }}\"\n    owner: root\n    group: root\n    force: yes\n    mode: 0644\n  when: php_opcache_enable\n  notify: restart webserver\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.php/tasks/install-from-source.yml",
    "content": "---\n- name: Ensure dependencies for building from source are installed (RedHat).\n  yum: \"pkg={{ item }} state=installed\"\n  with_items:\n    - recode-devel\n    - aspell-devel\n    - libmcrypt-devel\n    - t1lib-devel\n    - libXpm-devel\n    - libpng-devel\n    - libjpeg-turbo-devel\n    - bzip2-devel\n    - openssl-libs\n    - libicu-devel\n  when: ansible_os_family == 'RedHat'\n\n- name: Update apt cache (Debian).\n  apt: update_cache=yes cache_valid_time=86400\n  when: ansible_os_family == 'Debian'\n\n- name: Ensure dependencies for building from source are installed (Debian).\n  apt: \"pkg={{ item }} state=installed\"\n  with_items:\n    - build-essential\n    - autoconf\n    - automake\n    - libtool\n    - bison\n    - re2c\n    - libxml2-dev\n    - libcurl4-openssl-dev\n    - libbz2-dev\n    - libjpeg-dev\n    - libpng12-dev\n    - libxpm-dev\n    - libfreetype6-dev\n    - libgmp3-dev\n    - libmcrypt-dev\n    - libmysqlclient-dev\n    - libpspell-dev\n    - librecode-dev\n    - libssl-dev\n  when: ansible_os_family == 'Debian'\n\n- name: Check if gmp.h is already in a location accessible to gcc.\n  stat: path=/usr/include/gmp.h\n  register: gmp_file\n\n- name: Ensure gmp.h is symlinked into a location accessible to gcc.\n  file:\n    src: \"{{ php_source_install_gmp_path }}\"\n    dest: /usr/include/gmp.h\n    state: link\n  when: gmp_file.stat.exists == false\n\n- name: Check if PHP is installed.\n  command: which php\n  changed_when: false\n  failed_when: false\n  register: php_installed\n\n- name: Clone the PHP repository.\n  git:\n    repo: https://git.php.net/repository/php-src.git\n    dest: \"{{ php_source_clone_dir }}\"\n    version: \"{{ php_source_version }}\"\n    accept_hostkey: yes\n    depth: 1\n  when: php_installed|failed\n\n- name: Ensure PHP installation path exists.\n  file:\n    path: \"{{ php_source_install_path }}\"\n    state: directory\n    mode: 0755\n  when: php_installed|failed\n\n- name: Build configure script.\n  shell: >\n    ./buildconf --force\n    chdir={{ php_source_clone_dir }}\n  when: php_installed|failed\n\n- name: Run configure script.\n  shell: >\n    {{ php_source_configure_command }}\n    chdir={{ php_source_clone_dir }}\n  when: php_installed|failed\n\n- name: Make and install PHP.\n  shell: >\n    {{ item }}\n    chdir={{ php_source_clone_dir }}\n  with_items:\n    - \"{{ php_source_make_command }}\"\n    - make install\n  when: php_installed|failed\n\n- name: Ensure php executable is symlinked into a standard path.\n  file:\n    src: \"{{ php_source_install_path }}/bin/php\"\n    dest: /usr/bin/php\n    state: link\n\n# PHP FPM configuration.\n- name: Ensure php-fpm executable is symlinked into a standard path.\n  file:\n    src: \"{{ php_source_install_path }}/sbin/php-fpm\"\n    dest: \"/usr/sbin/{{ php_fpm_daemon }}\"\n    state: link\n  when: \"'--enable-fpm' in php_source_configure_command\"\n\n- name: Ensure php-fpm init script is installed.\n  template:\n    src: fpm-init.j2\n    dest: \"/etc/init.d/{{ php_fpm_daemon }}\"\n    mode: 0755\n  when: \"'--enable-fpm' in php_source_configure_command\"\n  notify: restart php-fpm\n\n- name: Ensure php-fpm config directory exists.\n  file:\n    path: \"{{ php_conf_path }}/fpm\"\n    state: directory\n  when: \"'--enable-fpm' in php_source_configure_command\"\n\n- name: Ensure php-fpm config file is installed.\n  template:\n    src: php-fpm.conf.j2\n    dest: \"{{ php_conf_path }}/fpm/php-fpm.conf\"\n    mode: 0644\n  when: \"'--enable-fpm' in php_source_configure_command\"\n  notify: restart php-fpm\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.php/tasks/main.yml",
    "content": "---\n# Variable setup.\n- name: Include OS-specific variables.\n  include_vars: \"{{ ansible_os_family }}.yml\"\n\n- name: Define php_packages.\n  set_fact:\n    php_packages: \"{{ __php_packages | list }}\"\n  when: php_packages is not defined\n\n- name: Define php_webserver_daemon.\n  set_fact:\n    php_webserver_daemon: \"{{ __php_webserver_daemon }}\"\n  when: php_webserver_daemon is not defined\n\n- name: Define php_conf_path.\n  set_fact:\n    php_conf_path: \"{{ __php_conf_path }}\"\n  when: php_conf_path is not defined\n\n- name: Define php_extension_conf_path.\n  set_fact:\n    php_extension_conf_path: \"{{ __php_extension_conf_path }}\"\n  when: php_extension_conf_path is not defined\n\n- name: Define php_apc_conf_filename.\n  set_fact:\n    php_apc_conf_filename: \"{{ __php_apc_conf_filename }}\"\n  when: php_apc_conf_filename is not defined\n\n- name: Define php_opcache_conf_filename.\n  set_fact:\n    php_opcache_conf_filename: \"{{ __php_opcache_conf_filename }}\"\n  when: php_opcache_conf_filename is not defined\n\n# Setup/install tasks.\n- include: setup-RedHat.yml\n  when: (php_install_from_source == false) and (ansible_os_family == 'RedHat')\n\n- include: setup-Debian.yml\n  when: (php_install_from_source == false) and (ansible_os_family == 'Debian')\n\n# Install PHP from source when php_install_from_source is true.\n- include: install-from-source.yml\n  when: php_install_from_source == true\n\n- name: Check the installed version of PHP.\n  shell: '{{ php_executable }} -r \"echo php_installed_version;\"'\n  register: php_installed_version\n  changed_when: false\n  always_run: yes\n\n- name: Disable opcache if PHP version is < 5.5.\n  set_fact:\n    php_opcache_enable: 0\n  when: \"{{ php_installed_version.stdout | version_compare('5.5', operator='lt') }}\"\n\n# Configure PHP.\n- include: configure.yml\n\n# Configure PHP-FPM.\n- include: configure-fpm.yml\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.php/tasks/setup-Debian.yml",
    "content": "---\n- name: Update apt cache.\n  apt: update_cache=yes cache_valid_time=86400\n\n- name: Ensure PHP packages are installed.\n  apt:\n    name: \"{{ item }}\"\n    state: installed\n  with_items: php_packages\n  notify: restart webserver\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.php/tasks/setup-RedHat.yml",
    "content": "---\n- name: Ensure PHP packages are installed.\n  yum:\n    name: \"{{ item }}\"\n    state: installed\n    enablerepo: \"{{ php_enablerepo }}\"\n  with_items: php_packages\n  notify: restart webserver\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.php/templates/apc.ini.j2",
    "content": "{% if php_apc_enabled_in_ini %}\nextension=apc.so\n{% endif %}\napc.shm_size={{ php_apc_shm_size }}\napc.stat={{ php_apc_stat }}\napc.enable_cli={{ php_apc_enable_cli }}\napc.rfc1867=1\napc.cache_by_default={{ php_apc_cache_by_default }}\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.php/templates/fpm-init.j2",
    "content": "#!/bin/sh\n### BEGIN INIT INFO\n# Provides:          php-fpm {{ php_fpm_daemon }}\n# Required-Start:    $remote_fs $network\n# Required-Stop:     $remote_fs $network\n# Default-Start:     2 3 4 5\n# Default-Stop:      0 1 6  \n# Short-Description: starts {{ php_fpm_daemon }}\n# Description:       Starts The PHP FastCGI Process Manager Daemon\n### END INIT INFO\n\n# Author: Ondrej Sury <ondrej@debian.org>\n\nPATH=/sbin:/usr/sbin:/bin:/usr/bin\nDESC=\"PHP FastCGI Process Manager\"\nNAME={{ php_fpm_daemon }}\nDAEMON=/usr/sbin/$NAME\nDAEMON_ARGS=\"--daemonize --fpm-config {{ php_conf_path }}/fpm/php-fpm.conf\"\nPIDFILE=/var/run/{{ php_fpm_daemon }}.pid\nTIMEOUT=30\nSCRIPTNAME=/etc/init.d/$NAME\n\n# Exit if the package is not installed\n[ -x \"$DAEMON\" ] || exit 0\n\n# Read configuration variable file if it is present\n[ -r /etc/default/$NAME ] && . /etc/default/$NAME\n\n# Load the VERBOSE setting and other rcS variables\n. /lib/init/vars.sh\n\n# Define LSB log_* functions.\n# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.\n. /lib/lsb/init-functions\n\n# Don't run if we are running upstart\nif init_is_upstart; then\n    exit 1\nfi\n\n#\n# Function to check the correctness of the config file\n#\ndo_check()\n{\n    /usr/lib/php5/php5-fpm-checkconf || return 1\n    return 0\n}\n\n#\n# Function that starts the daemon/service\n#\ndo_start()\n{\n  # Return\n  #   0 if daemon has been started\n  #   1 if daemon was already running\n  #   2 if daemon could not be started\n  start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \\\n    || return 1\n  start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \\\n    $DAEMON_ARGS 2>/dev/null \\\n    || return 2\n  # Add code here, if necessary, that waits for the process to be ready\n  # to handle requests from services started subsequently which depend\n  # on this one.  As a last resort, sleep for some time.\n}\n\n#\n# Function that stops the daemon/service\n#\ndo_stop()\n{\n  # Return\n  #   0 if daemon has been stopped\n  #   1 if daemon was already stopped\n  #   2 if daemon could not be stopped\n  #   other if a failure occurred\n  start-stop-daemon --stop --quiet --retry=QUIT/$TIMEOUT/TERM/5/KILL/5 --pidfile $PIDFILE --name $NAME\n  RETVAL=\"$?\"\n  [ \"$RETVAL\" = 2 ] && return 2\n  # Wait for children to finish too if this is a daemon that forks\n  # and if the daemon is only ever run from this initscript.\n  # If the above conditions are not satisfied then add some other code\n  # that waits for the process to drop all resources that could be\n  # needed by services started subsequently.  A last resort is to\n  # sleep for some time.\n  start-stop-daemon --stop --quiet --oknodo --retry=0/30/TERM/5/KILL/5 --exec $DAEMON\n  [ \"$?\" = 2 ] && return 2\n  # Many daemons don't delete their pidfiles when they exit.\n  rm -f $PIDFILE\n  return \"$RETVAL\"\n}\n\n#\n# Function that sends a SIGHUP to the daemon/service\n#\ndo_reload() {\n  #\n  # If the daemon can reload its configuration without\n  # restarting (for example, when it is sent a SIGHUP),\n  # then implement that here.\n  #\n  start-stop-daemon --stop --signal USR2 --quiet --pidfile $PIDFILE --name $NAME\n  return 0\n}\n\ncase \"$1\" in\n    start)\n  [ \"$VERBOSE\" != no ] && log_daemon_msg \"Starting $DESC\" \"$NAME\"\n  do_start\n  case \"$?\" in\n      0|1) [ \"$VERBOSE\" != no ] && log_end_msg 0 ;;\n      2) [ \"$VERBOSE\" != no ] && log_end_msg 1 ;;\n  esac\n  ;;\n    stop)\n  [ \"$VERBOSE\" != no ] && log_daemon_msg \"Stopping $DESC\" \"$NAME\"\n  do_stop\n  case \"$?\" in\n    0|1) [ \"$VERBOSE\" != no ] && log_end_msg 0 ;;\n    2) [ \"$VERBOSE\" != no ] && log_end_msg 1 ;;\n  esac\n  ;;\n    status)\n        status_of_proc \"$DAEMON\" \"$NAME\" && exit 0 || exit $?\n        ;;\n    check)\n        do_check yes\n  ;;\n    reload|force-reload)\n  log_daemon_msg \"Reloading $DESC\" \"$NAME\"\n  do_reload\n  log_end_msg $?\n  ;;\n    reopen-logs)\n  log_daemon_msg \"Reopening $DESC logs\" $NAME\n  if start-stop-daemon --stop --signal USR1 --oknodo --quiet \\\n      --pidfile $PIDFILE --exec $DAEMON\n  then\n      log_end_msg 0\n  else\n      log_end_msg 1\n  fi\n  ;;\n    restart)\n  log_daemon_msg \"Restarting $DESC\" \"$NAME\"\n  do_stop\n  case \"$?\" in\n    0|1)\n    do_start\n    case \"$?\" in\n      0) log_end_msg 0 ;;\n      1) log_end_msg 1 ;; # Old process is still running\n      *) log_end_msg 1 ;; # Failed to start\n    esac\n    ;;\n    *)\n      # Failed to stop\n    log_end_msg 1\n    ;;\n  esac\n  ;;\n    *)\n  echo \"Usage: $SCRIPTNAME {start|stop|status|restart|reload|force-reload}\" >&2\n  exit 1\n    ;;\nesac\n\n:\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.php/templates/opcache.ini.j2",
    "content": "{% if php_opcache_enabled_in_ini %}\nzend_extension=opcache.so\n{% endif %}\n\nopcache.enable={{ php_opcache_enable }}\nopcache.enable_cli={{ php_opcache_enable_cli }}\nopcache.memory_consumption={{ php_opcache_memory_consumption }}\nopcache.interned_strings_buffer={{ php_opcache_interned_strings_buffer }}\nopcache.max_accelerated_files={{ php_opcache_max_accelerated_files }}\nopcache.max_wasted_percentage={{ php_opcache_max_wasted_percentage }}\nopcache.validate_timestamps={{ php_opcache_validate_timestamps }}\nopcache.revalidate_freq={{ php_opcache_revalidate_freq }}\nopcache.max_file_size={{ php_opcache_max_file_size }}\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.php/templates/php-fpm.conf.j2",
    "content": ";;;;;;;;;;;;;;;;;;;;;\n; FPM Configuration ;\n;;;;;;;;;;;;;;;;;;;;;\n\ninclude={{ php_conf_path }}/fpm/pool.d/*.conf\n\n;;;;;;;;;;;;;;;;;;\n; Global Options ;\n;;;;;;;;;;;;;;;;;;\n\n[global]\nerror_log = /var/log/php-fpm.log\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.php/templates/php.ini.j2",
    "content": "[PHP]\n\n;;;;;;;;;;;;;;;;;;;;\n; Language Options ;\n;;;;;;;;;;;;;;;;;;;;\n\nengine = On\nshort_open_tag = {{ php_short_open_tag }}\nasp_tags = Off\nprecision = 14\noutput_buffering = 4096\n\nzlib.output_compression = Off\n\nimplicit_flush = Off\nunserialize_callback_func =\nserialize_precision = 17\ndisable_functions =\ndisable_classes =\n\nzend.enable_gc = On\n\n;;;;;;;;;;;;;;;;;\n; Miscellaneous ;\n;;;;;;;;;;;;;;;;;\n\nexpose_php = {{ php_expose_php }}\n\n;;;;;;;;;;;;;;;;;;;\n; Resource Limits ;\n;;;;;;;;;;;;;;;;;;;\n\nmax_execution_time = {{ php_max_execution_time }}\nmax_input_time = {{ php_max_input_time }}\nmax_input_vars = {{ php_max_input_vars }}\nmemory_limit = {{ php_memory_limit }}\n\n;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n; Error handling and logging ;\n;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\nerror_reporting = {{ php_error_reporting }}\ndisplay_errors = {{ php_display_errors }}\ndisplay_startup_errors = {{ php_display_startup_errors }}\nlog_errors = On\nlog_errors_max_len = 1024\nignore_repeated_errors = Off\nignore_repeated_source = Off\nreport_memleaks = On\ntrack_errors = Off\nhtml_errors = On\n\n;;;;;;;;;;;;;;;;;\n; Data Handling ;\n;;;;;;;;;;;;;;;;;\n\nvariables_order = \"GPCS\"\nrequest_order = \"GP\"\nregister_argc_argv = Off\nauto_globals_jit = On\n\npost_max_size = {{ php_post_max_size }}\nauto_prepend_file =\nauto_append_file =\n\ndefault_mimetype = \"text/html\"\n\n;;;;;;;;;;;;;;;;;;;;;;;;;\n; Paths and Directories ;\n;;;;;;;;;;;;;;;;;;;;;;;;;\n\ndoc_root =\nuser_dir =\n\nenable_dl = Off\n\nrealpath_cache_size = {{ php_realpath_cache_size }}\n\n;;;;;;;;;;;;;;;;\n; File Uploads ;\n;;;;;;;;;;;;;;;;\n\nfile_uploads = On\nupload_max_filesize = {{ php_upload_max_filesize }}\nmax_file_uploads = 20\n\n;;;;;;;;;;;;;;;;;;\n; Fopen wrappers ;\n;;;;;;;;;;;;;;;;;;\n\nallow_url_fopen = On\nallow_url_include = Off\n\ndefault_socket_timeout = 60\n\n;;;;;;;;;;;;;;;;;;;\n; Module Settings ;\n;;;;;;;;;;;;;;;;;;;\n\n[CLI Server]\ncli_server.color = On\n\n[Date]\ndate.timezone = {{ php_date_timezone }}\n\n[Pdo_mysql]\npdo_mysql.cache_size = 2000\npdo_mysql.default_socket=\n\n[mail function]\n; For Win32 only.\nSMTP = localhost\nsmtp_port = 25\n\n; For Unix only.  You may supply arguments as well (default: \"sendmail -t -i\").\nsendmail_path = {{ php_sendmail_path }}\n\nmail.add_x_header = On\n\n[SQL]\nsql.safe_mode = Off\n\n[ODBC]\nodbc.allow_persistent = On\nodbc.check_persistent = On\nodbc.max_persistent = -1\nodbc.max_links = -1\nodbc.defaultlrl = 4096\nodbc.defaultbinmode = 1\n\n[MySQL]\nmysql.allow_local_infile = On\nmysql.allow_persistent = On\nmysql.cache_size = 2000\nmysql.max_persistent = -1\nmysql.max_links = -1\nmysql.default_port =\nmysql.default_socket =\nmysql.default_host =\nmysql.default_user =\nmysql.default_password =\nmysql.connect_timeout = 60\nmysql.trace_mode = Off\n\n[MySQLi]\nmysqli.max_persistent = -1\nmysqli.allow_persistent = On\nmysqli.max_links = -1\nmysqli.cache_size = 2000\nmysqli.default_port = 3306\nmysqli.default_socket =\nmysqli.default_host =\nmysqli.default_user =\nmysqli.default_pw =\nmysqli.reconnect = Off\n\n[mysqlnd]\nmysqlnd.collect_statistics = On\nmysqlnd.collect_memory_statistics = Off\n\n[PostgreSQL]\npgsql.allow_persistent = On\npgsql.auto_reset_persistent = Off\npgsql.max_persistent = -1\npgsql.max_links = -1\npgsql.ignore_notice = 0\npgsql.log_notice = 0\n\n[bcmath]\nbcmath.scale = 0\n\n[Session]\nsession.save_handler = files\nsession.use_cookies = 1\nsession.use_only_cookies = 1\nsession.name = PHPSESSID\nsession.auto_start = 0\n\nsession.cookie_lifetime = 0\nsession.cookie_path = /\nsession.cookie_domain =\nsession.cookie_httponly =\n\nsession.serialize_handler = php\n\nsession.gc_probability = 1\nsession.gc_divisor = 1000\nsession.gc_maxlifetime = 1440\n\nsession.bug_compat_42 = Off\nsession.bug_compat_warn = Off\nsession.referer_check =\n\nsession.cache_limiter = nocache\nsession.cache_expire = 180\n\nsession.use_trans_sid = 0\n\nsession.hash_function = 0\nsession.hash_bits_per_character = 5\n\nurl_rewriter.tags = \"a=href,area=href,frame=src,input=src,form=fakeentry\"\n\n[MSSQL]\nmssql.allow_persistent = On\nmssql.max_persistent = -1\nmssql.max_links = -1\nmssql.min_error_severity = 10\nmssql.min_message_severity = 10\nmssql.compatability_mode = Off\nmssql.secure_connection = Off\n\n[Tidy]\ntidy.clean_output = Off\n\n[soap]\nsoap.wsdl_cache_enabled=1\nsoap.wsdl_cache_dir=\"/tmp\"\nsoap.wsdl_cache_ttl=86400\nsoap.wsdl_cache_limit = 5\n\n[ldap]\nldap.max_links = -1\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.php/tests/inventory",
    "content": "localhost\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.php/tests/test-install-from-source.yml",
    "content": "---\n- hosts: localhost\n  remote_user: root\n\n  vars:\n    php_enable_webserver: false\n    php_install_from_source: true\n    php_source_clone_dir: /home/travis/php-src\n    php_source_make_command: \"make --jobs=2\"\n\n  roles:\n    - ansible-role-php\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.php/tests/test-install-package.yml",
    "content": "---\n- hosts: localhost\n  remote_user: root\n\n  vars:\n    php_enable_webserver: false\n\n  roles:\n    - ansible-role-php\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.php/vars/Debian.yml",
    "content": "---\n__php_packages:\n  - php5\n  - php5-mcrypt\n  - php5-cli\n  - php5-common\n  - php5-curl\n  - php5-dev\n  - php5-fpm\n  - php5-gd\n  - php-pear\n  - php-apc\n  - libpcre3-dev\n__php_webserver_daemon: \"apache2\"\n\n# Vendor-specific configuration paths on Debian/Ubuntu make my brain asplode.\n__php_conf_path: \"{{ '/etc/php5' if php_webserver_daemon and php_webserver_daemon != 'apache2' else '/etc/php5/apache2' }}\"\n__php_extension_conf_path: \"{{ __php_conf_path }}/conf.d\"\n\n__php_apc_conf_filename: 20-apcu.ini\n__php_opcache_conf_filename: 05-opcache.ini\n__php_fpm_daemon: php5-fpm\n__php_fpm_pool_conf_path: \"/etc/php5/fpm/pool.d/www.conf\"\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.php/vars/RedHat.yml",
    "content": "---\n__php_packages:\n  - php\n  - php-cli\n  - php-common\n  - php-devel\n  - php-fpm\n  - php-gd\n  - php-imap\n  - php-ldap\n  - php-mbstring\n  - php-opcache\n  - php-pdo\n  - php-pear\n  - php-pecl-apc\n  - php-xml\n  - php-xmlrpc\n__php_webserver_daemon: \"httpd\"\n\n__php_conf_path: /etc\nphp_extension_conf_path: /etc/php.d\n\n__php_apc_conf_filename: 50-apc.ini\n__php_opcache_conf_filename: 10-opcache.ini\n__php_fpm_daemon: php-fpm\n__php_fpm_pool_conf_path: \"/etc/php-fpm.d/www.conf\"\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.redis/.travis.yml",
    "content": "---\nlanguage: python\npython: \"2.7\"\n\nenv:\n  - SITE=test.yml\n\nbefore_install:\n  - sudo apt-get update -qq\n\n  # Remove pre-existing Redis installation.\n  - sudo apt-get remove -y --purge redis-server\n  - sudo rm -rf /etc/redis\n\ninstall:\n  # Install Ansible.\n  - pip install ansible\n\n  # Add ansible.cfg to pick up roles path.\n  - \"{ echo '[defaults]'; echo 'roles_path = ../'; } >> ansible.cfg\"\n\nscript:\n  # Check the role/playbook's syntax.\n  - \"ansible-playbook -i tests/inventory tests/$SITE --syntax-check\"\n\n  # Run the role/playbook with ansible-playbook.\n  - \"ansible-playbook -i tests/inventory tests/$SITE --connection=local --sudo\"\n\n  # Run the role/playbook again, checking to make sure it's idempotent.\n  - >\n    ansible-playbook -i tests/inventory tests/$SITE --connection=local --sudo\n    | grep -q 'changed=0.*failed=0'\n    && (echo 'Idempotence test: pass' && exit 0)\n    || (echo 'Idempotence test: fail' && exit 1)\n\n  # Make sure Redis is running, and can be stopped and started cleanly.\n  - sudo service redis-server status\n  - sudo service redis-server stop\n  - sudo service redis-server start\n\nafter_failure:\n  - sudo cat /var/log/redis/redis-server.log\n  - sudo cat /etc/redis/redis.conf\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.redis/README.md",
    "content": "# Ansible Role: Redis\n\n[![Build Status](https://travis-ci.org/geerlingguy/ansible-role-redis.svg?branch=master)](https://travis-ci.org/geerlingguy/ansible-role-redis)\n\nInstalls [Redis](http://redis.io/) on RHEL/CentOS or Debian/Ubuntu.\n\n## Requirements\n\nOn RedHat-based distributions, requires the EPEL repository (you can simply add the role `geerlingguy.repo-epel` to install ensure EPEL is available).\n\n## Role Variables\n\nAvailable variables are listed below, along with default values (see `defaults/main.yml`):\n\n    redis_port: 6379\n    redis_bind_interface: 127.0.0.1\n\nPort and interface on which Redis will listen. Set the interface to `0.0.0.0` to listen on all interfaces.\n\n    redis_unixsocket: ''\n\nIf set, Redis will also listen on a local Unix socket.\n\n    redis_timeout: 300\n\nClose a connection after a client is idle `N` seconds. Set to `0` to disable timeout.\n\n    redis_loglevel: \"notice\"\n    redis_logfile: /var/log/redis/redis-server.log\n\nLog level and log location (valid levels are `debug`, `verbose`, `notice`, and `warning`).\n\n    redis_databases: 16\n\nThe number of Redis databases.\n\n    # Set to an empty set to disable persistence (saving the DB to disk).\n    redis_save:\n      - 900 1\n      - 300 10\n      - 60 10000\n\nSnapshotting configuration; setting values in this list will save the database to disk if the given number of seconds (e.g. `900`) and the given number of write operations (e.g. `1`) have occurred.\n\n    redis_rdbcompression: \"yes\"\n    redis_dbfilename: dump.rdb\n    redis_dbdir: /var/lib/redis\n\nDatabase compression and location configuration.\n\n    redis_maxmemory: 0\n    \nLimit memory usage to the specified amount of bytes. Leave at 0 for unlimited.\n\n    redis_maxmemory_policy: \"noeviction\"\n    \nThe method to use to keep memory usage below the limit, if specified. See [Using Redis as an LRU cache](http://redis.io/topics/lru-cache).\n\n    redis_maxmemory_samples: 5\n\nNumber of samples to use to approximate LRU. See [Using Redis as an LRU cache](http://redis.io/topics/lru-cache).\n\n    redis_appendonly: \"no\"\n\nThe appendonly option, if enabled, affords better data durability guarantees, at the cost of slightly slower performance.\n\n    redis_appendfsync: \"everysec\"\n\nValid values are `always` (slower, safest), `everysec` (happy medium), or `no` (let the filesystem flush data when it wants, most risky).\n\n    # Add extra include files for local configuration/overrides.\n    redis_includes: []\n\nAdd extra include file paths to this list to include more/localized Redis configuration.\n\n## Dependencies\n\nNone.\n\n## Example Playbook\n\n    - hosts: all\n      roles:\n        - { role: geerlingguy.redis }\n\n## License\n\nMIT / BSD\n\n## Author Information\n\nThis role was created in 2014 by [Jeff Geerling](http://jeffgeerling.com/), author of [Ansible for DevOps](http://ansiblefordevops.com/).\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.redis/defaults/main.yml",
    "content": "---\nredis_port: 6379\nredis_bind_interface: 127.0.0.1\nredis_unixsocket: ''\nredis_timeout: 300\n\nredis_loglevel: \"notice\"\nredis_logfile: /var/log/redis/redis-server.log\n\nredis_databases: 16\n\n# Set to an empty set to disable persistence (saving the DB to disk).\nredis_save:\n  - 900 1\n  - 300 10\n  - 60 10000\n\nredis_rdbcompression: \"yes\"\nredis_dbfilename: dump.rdb\nredis_dbdir: /var/lib/redis\n\nredis_maxmemory: 0\nredis_maxmemory_policy: \"noeviction\"\nredis_maxmemory_samples: 5\n\nredis_appendonly: \"no\"\nredis_appendfsync: \"everysec\"\n\n# Add extra include files for local configuration/overrides.\nredis_includes: []\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.redis/handlers/main.yml",
    "content": "---\n- name: restart redis\n  service: \"name={{ redis_daemon }} state=restarted\"\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.redis/meta/.galaxy_install_info",
    "content": "{install_date: 'Wed Jan 27 23:15:03 2016', version: 1.1.5}\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.redis/meta/main.yml",
    "content": "---\ndependencies: []\n\ngalaxy_info:\n  author: geerlingguy\n  description: Redis for Linux\n  company: \"Midwestern Mac, LLC\"\n  license: \"license (BSD, MIT)\"\n  min_ansible_version: 1.4\n  platforms:\n  - name: EL\n    versions:\n    - 6\n    - 7\n  - name: Debian\n    versions:\n    - all\n  - name: Ubuntu\n    versions:\n    - all\n  categories:\n    - database\n    - development\n    - web\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.redis/tasks/main.yml",
    "content": "---\n# Variable setup.\n- name: Include OS-specific variables.\n  include_vars: \"{{ ansible_os_family }}.yml\"\n\n# Setup/install tasks.\n- include: setup-RedHat.yml\n  when: ansible_os_family == 'RedHat'\n\n- include: setup-Debian.yml\n  when: ansible_os_family == 'Debian'\n\n- name: Ensure Redis is configured.\n  template:\n    src: redis.conf.j2\n    dest: \"{{ redis_conf_path }}\"\n    mode: 0644\n  notify: restart redis\n\n- name: Ensure redis is running and enabled on boot.\n  service: \"name={{ redis_daemon }} state=started enabled=yes\"\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.redis/tasks/setup-Debian.yml",
    "content": "---\n- name: Ensure redis is installed.\n  apt: name=redis-server state=installed\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.redis/tasks/setup-RedHat.yml",
    "content": "---\n- name: Ensure redis is installed.\n  yum: name=redis state=installed enablerepo=epel\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.redis/templates/redis.conf.j2",
    "content": "daemonize yes\npidfile /var/run/redis/{{ redis_daemon }}.pid\nport {{ redis_port }}\n# bind {{ redis_bind_interface }}\n\n{% if redis_unixsocket %}\nunixsocket {{ redis_unixsocket }}\n{% endif %}\n\ntimeout {{ redis_timeout }}\n\nloglevel {{ redis_loglevel }}\nlogfile {{ redis_logfile }}\n\n# To enable logging to the system logger, just set 'syslog-enabled' to yes,\n# and optionally update the other syslog parameters to suit your needs.\n# syslog-enabled no\n# syslog-ident redis\n# syslog-facility local0\n\ndatabases {{ redis_databases }}\n\n{% for save in redis_save %}\nsave {{ save }}\n{% endfor %}\n\nrdbcompression {{ redis_rdbcompression }}\ndbfilename {{ redis_dbfilename }}\ndir {{ redis_dbdir }}\n\n# maxclients 128\n\n{% if redis_maxmemory %}\nmaxmemory {{ redis_maxmemory }}\nmaxmemory-policy {{ redis_maxmemory_policy }}\nmaxmemory-samples {{ redis_maxmemory_samples }}\n{% endif %}\n\nappendonly {{ redis_appendonly }}\nappendfsync {{ redis_appendfsync }}\nno-appendfsync-on-rewrite no\n\n{% for include in redis_includes %}\ninclude {{ include }}\n{% endfor %}\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.redis/tests/inventory",
    "content": "localhost\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.redis/tests/test.yml",
    "content": "---\n- hosts: localhost\n  remote_user: root\n\n  roles:\n    - ansible-role-redis\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.redis/vars/Debian.yml",
    "content": "---\nredis_daemon: redis-server\nredis_conf_path: /etc/redis/redis.conf\n"
  },
  {
    "path": "vagrant/ansible/roles/geerlingguy.redis/vars/RedHat.yml",
    "content": "---\nredis_daemon: redis\nredis_conf_path: /etc/redis.conf\n"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/.gitignore",
    "content": "# Numerous always-ignore extensions\n*.diff\n*.err\n*.orig\n*.log\n*.rej\n*.swo\n*.swp\n*.vi\n*~\n*.sass-cache\n*.iml\n\n# OS or Editor folders\n.DS_Store\nThumbs.db\n.cache\n.project\n.classpath\n.settings\n.tmproj\n*.esproj\nnbproject\n*.sublime-project\n*.sublime-workspace\n*.ipr\n*.iws\n\n# Folders to ignore\n.hg\n.svn\n.CVS\nintermediate\npublish\n.idea\ntarget\ntarget-eclipse\n.vagrant\n"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/.travis.yml",
    "content": "---\nlanguage: python\npython: \"2.7\"\n\nbefore_install:\n  # Make sure everything's up to date.\n  - sudo apt-get update -qq\n  - sudo apt-get install -qq python-apt python-pycurl\n\ninstall:\n  # Install Ansible.\n  - pip install ansible\n\nscript:\n    - cd tests\n\n    - echo -e \"\\e[31m######AnsibleVersion#######\\e[0m\"\n    - ansible --version\n\n    # 1st: check syntax\n    - echo \"\\e[31m######***************************** SYNTAX CHECK (1) *****************************\\e[0m\"\n    - ansible-playbook -i local.ini test1.yml --syntax-check\n\n    # 2nd:  Make sure we run the entire playbook\n    - echo \"***************************** RUN PLAY (2) *****************************\"\n    - ansible-playbook -i local.ini test1.yml --sudo -vvvv --diff\n    - sudo netstat -antlp | grep LISTEN\n    - sudo ps aux | grep java\n    - curl 127.0.0.1:9200\n\n    # 3rd:  Make sure our playbook is idempotent\n    - echo \"***************************** Idempotence test (3) *****************************\"\n    - >\n      ansible-playbook -i local.ini test1.yml --sudo -vvvv --diff | tee ansible_output\n      | grep -q 'changed=0.*failed=0'\n      && (echo 'Idempotence test: pass' && exit 0)\n      || (echo 'Idempotence test: fail' && exit 1)\n\n    # 4th:  Application test\n    - ./elastic_test.sh\n\nafter_failure:\n    - echo -e \"\\e[31m######IdepotanceLog#######\\e[0m\"\n    - sudo cat ansible_output\n    - echo -e \"\\e[31m######netstat#######\\e[0m\"\n    - sudo netstat -atnlp\n    - echo -e \"\\e[31m######ps#######\\e[0m\"\n    - sudo ps aux | grep java\n    - echo -e \"\\e[31m######CurlElasticsearch#######\\e[0m\"\n    - curl 127.0.0.1:9200\n    - echo -e \"\\e[31m######AnsibleFacts#######\\e[0m\"\n    - ansible -i 127.0.0.1, -m setup all -c local\n\nafter_success:\n - echo -e \"\\e[0;32m######Cool Success#######\\e[0m\"\n"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/README.md",
    "content": "# Ansible Playbook for Elasticsearch\n[![Build Status](https://travis-ci.org/Traackr/ansible-elasticsearch.svg?branch=master)](https://travis-ci.org/Traackr/ansible-elasticsearch)\n\nThis is an [Ansible](http://www.ansibleworks.com/) playbook for [Elasticsearch](http://www.elasticsearch.org/). You can use it by itself or as part of a larger playbook customized for your local environment.\n\n## Features\n- Support for installing plugins\n- Support for installing and configuring EC2 plugin\n- Support for installing custom JARs in the Elasticsearch classpath (e.g. custom Lucene Similarity JAR)\n- Support for installing the [Sematext SPM](http://www.sematext.com/spm/) monitor\n- Support for installing the [Marvel](http://www.elasticsearch.org/guide/en/marvel/current/) plugin\n\n## Installing\n\nInstall [ansible-elasticsearch](https://galaxy.ansible.com/list#/roles/181) via ansible galaxy:\n\n```\nansible-galaxy install gpstathis.elasticsearch\n```\n\n## Testing locally with Vagrant\nA sample [Vagrant](http://www.vagrantup.com/) configuration is provided to help with local testing. After installing Vagrant, run `vagrant up` at the root of the project to get an VM instance bootstrapped and configured with a running instance of Elasticsearch. Look at `vars/vagrant.yml` and `defaults/main.yml` for the variables that will be substituted in `templates/elasticsearch.yml.j2`.\n\n## Running Standalone Playbook\n### Copy Example Files\nMake copies of the following files and rename them to suit your environment. E.g.:\n\n- vagrant-main.yml => my-playbook-main.yml\n- vagrant-inventory.ini => my-inventory.ini\n- vars/vagrant.yml => vars/my-vars.yml\n\nEdit the copied files to suit your environment and needs. See examples below.\n\n### Edit your my-inventory.ini\nEdit your my-inventory.ini and customize your cluster and node names:\n\n```\n#########################\n# Elasticsearch Cluster #\n#########################\n[es_node_1]\n1.2.3.4.compute-1.amazonaws.com\n[es_node_1:vars]\nelasticsearch_node_name=elasticsearch-1\n\n[es_node_2]\n5.6.7.8.compute-1.amazonaws.com\n[es_node_2:vars]\nelasticsearch_node_name=elasticsearch-2\n\n[es_node_3]\n9.10.11.12.compute-1.amazonaws.com\n[es_node_3:vars]\nelasticsearch_node_name=elasticsearch-3\n\n[all_nodes:children]\nes_node_1\nes_node_2\nes_node_3\n\n[all_nodes:vars]\nelasticsearch_cluster_name=my.elasticsearch.cluster\nelasticsearch_plugin_aws_ec2_groups=MyElasticSearchGroup\nspm_client_token=<your SPM token here>\n```\n\n### Edit your vars/my-vars.yml\nSee `vars/sample.yml` and `vars/vagrant.yml` for example variable files. These are the files where you specify Elasticsearch settings and apply certain features such as plugins, custom JARs or monitoring. The best way to enable configurations is to look at `templates/elasticsearch.yml.j2` and see which variables you want to defile in your `vars/my-vars.yml`. See below for configurations regarding EC2, plugins and custom JARs.\n\n### Edit your my-playbook-main.yml\nExample `my-playbook-main.yml`:\n\n```\n---\n\n#########################\n# Elasticsearch install #\n#########################\n\n- hosts: all_nodes\n  user: $user\n  sudo: yes\n\n  vars_files:\n    - defaults/main.yml\n    - vars/my-vars.yml\n\n  tasks:\n    - include: tasks/main.yml\n```\n\n### Launch\n```\n$  ansible-playbook my-playbook-main.yml -i my-inventory.ini -e user=<your sudo user for the elasticsearch installation>\n```\n\n## Enabling Added Features\n### Configuring EC2\nThe following variables need to be defined in your playbook or inventory:\n\n- elasticsearch_plugin_aws_version\n\nSee [https://github.com/elasticsearch/elasticsearch-cloud-aws](https://github.com/elasticsearch/elasticsearch-cloud-aws) for the version that most accurately matches your installation.\n\nThe following variables provide a for now limited configuration for the plugin. More options may be available in the future (see [http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-discovery-ec2.html)](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-discovery-ec2.html)):\n\n- elasticsearch_plugin_aws_ec2_groups\n- elasticsearch_plugin_aws_ec2_ping_timeout\n- elasticsearch_plugin_aws_access_key\n- elasticsearch_plugin_aws_secret_key\n- elasticsearch_plugin_aws_region\n\n### Installing plugins\nYou will need to define an array called `elasticsearch_plugins` in your playbook or inventory, such that:\n```\nelasticsearch_plugins:\n - { name: '<plugin name>', url: '<[optional] plugin url>' }\n - ...\n```\n\nwhere if you were to install the plugin via bin/plugin, you would type:\n`bin/plugin -install <plugin name>` or `bin/plugin -install <plugin name> -url <plugin url>`\n\nExample for [https://github.com/elasticsearch/elasticsearch-mapper-attachments](https://github.com/elasticsearch/elasticsearch-mapper-attachments) (`bin/plugin -install elasticsearch/elasticsearch-mapper-attachments/1.9.0`):\n\n```\nelasticsearch_plugins:\n - { name: 'elasticsearch/elasticsearch-mapper-attachments/1.9.0' }\n```\n\nExample for [https://github.com/richardwilly98/elasticsearch-river-mongodb](https://github.com/richardwilly98/elasticsearch-river-mongodb) (`bin/plugin -i com.github.richardwilly98.elasticsearch/elasticsearch-river-mongodb/1.7.1`):\n\n```\nelasticsearch_plugins:\n - { name: 'com.github.richardwilly98.elasticsearch/elasticsearch-river-mongodb/1.7.1' }\n```\n\nExample for [https://github.com/imotov/elasticsearch-facet-script](https://github.com/imotov/elasticsearch-facet-script) (`bin/plugin -install facet-script -url http://dl.bintray.com/content/imotov/elasticsearch-plugins/elasticsearch-facet-script-1.1.2.zip`):\n\n```\nelasticsearch_plugins:\n - { name: 'facet-script', url: 'http://dl.bintray.com/content/imotov/elasticsearch-plugins/elasticsearch-facet-script-1.1.2.zip' }\n```\n\n### Installing Custom JARs\nCustom jars are made available to the Elasticsearch classpath by being downloaded into the elasticsearch_home_dir/lib folder. An example of a custom jar can include a custom Lucene Similarity Provider. You will need to define an array called `elasticsearch_custom_jars` in your playbook or inventory, such that:\n\n```\nelasticsearch_custom_jars:\n - { uri: '<URL where JAR can be downloaded from: required>', filename: '<alternative name for final JAR if different from file downladed: leave blank to use same filename>', user: '<BASIC auth username: leave blank of not needed>', passwd: '<BASIC auth password: leave blank of not needed>' }\n - ...\n```\n\n### Configuring Thread Pools\nElasticsearch [thread pools](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-threadpool.html) can be configured using the `elasticsearch_thread_pools` list variable:\n\n```\nelasticsearch_thread_pools:\n  - \"threadpool.bulk.type: fixed\"\n  - \"threadpool.bulk.size: 50\"\n  - \"threadpool.bulk.queue_size: 1000\"\n```\n\n### Enabling Sematext SPM\nEnable the SPM task in your playbook:\n\n```\ntasks:\n    - include: tasks/spm.yml\n    - ...\n```\n\nSet the spm_client_token variable in your inventory.ini to your SPM key.\n\n### Configuring Marvel\n\nThe following variables need to be defined in your playbook or inventory:\n\n- elasticsearch_plugin_marvel_version\n\nThe following variables provide configuration for the plugin. More options may be available in the future (see [http://www.elasticsearch.org/guide/en/marvel/current/#stats-export](http://www.elasticsearch.org/guide/en/marvel/current/#stats-export)):\n\n- elasticsearch_plugin_marvel_agent_enabled\n- elasticsearch_plugin_marvel_agent_exporter_es_hosts\n- elasticsearch_plugin_marvel_agent_indices\n- elasticsearch_plugin_marvel_agent_interval\n- elasticsearch_plugin_marvel_agent_exporter_es_index_timeformat\n\n## Disable Java installation\n\nIf you prefer to skip the built-in installation of the Oracle JRE, use the `elasticsearch_install_java` flag:\n\n```\nelasticsearch_install_java: \"false\"\n```\n\n## Include role in a larger playbook\n### Add this role as a git submodule\nAssuming your playbook structure is such as:\n```\n- my-master-playbook\n  |- vars\n  |- roles\n  |- my-master-playbook-main.yml\n  \\- my-master-inventory.ini\n```\n\nCheckout this project as a submodule under roles:\n\n```\n$  cd roles\n$  git submodule add git://github.com/traackr/ansible-elasticsearch.git ./ansible-elasticsearch\n$  git submodule update --init\n$  git commit ./submodule -m \"Added submodule as ./subm\"\n```\n\n### Include this playbook as a role in your master playbook\nExample `my-master-playbook-main.yml`:\n\n```\n---\n\n#########################\n# Elasticsearch install #\n#########################\n\n- hosts: all_nodes\n  user: ubuntu\n  sudo: yes\n\n  roles:\n    - ansible-elasticsearch\n\n  vars_files:\n    - vars/my-vars.yml\n```\n\n# Issues, requests, contributions\nThis software is provided as is. Having said that, if you see an issue, feel free to log a ticket. We'll do our best to address it. Same if you want to see a certain feature supported in the fututre. No guarantees are made that any requested feature will be implemented. If you'd like to contribute, feel free to clone and submit a pull request.\n\n# Dependencies\nNone\n\n# License\nMIT\n\n# Author Information\n\nGeorge Stathis - gstathis [at] traackr.com\n"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/Vagrantfile",
    "content": "# -*- mode: ruby -*-\n# vi: set ft=ruby :\n\n# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!\nVAGRANTFILE_API_VERSION = \"2\"\n\nVagrant.configure(VAGRANTFILE_API_VERSION) do |config|\n  # Every Vagrant virtual environment requires a box to build off of.\n  config.vm.box = \"ubuntu/trusty64\"\n  config.vm.provider \"virtualbox\" do |v|\n    v.memory = 2048\n    v.cpus = 2\n  end\n\n  # Create a private network, which allows host-only access to the machine\n  # using a specific IP.\n  # config.vm.network :private_network, ip: \"192.168.33.10\"\n  config.vm.network :private_network, ip: \"192.168.111.10\"\n\n  # Share an additional folder to the guest VM. The first argument is\n  # the path on the host to the actual folder. The second argument is\n  # the path on the guest to mount the folder. And the optional third\n  # argument is a set of non-required options.\n  # config.vm.synced_folder \"../data\", \"/vagrant_data\"\n  config.vm.synced_folder '.', '/vagrant'\n\n  config.vm.provision :ansible do |ansible|\n    ansible.inventory_path = \"vagrant-inventory.ini\"\n    ansible.playbook = \"vagrant-main.yml\"\n    ansible.extra_vars = { user: \"vagrant\" }\n    ansible.limit = 'all'\n    # ansible.verbose = 'vvvv'\n  end\nend\n"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/defaults/main.yml",
    "content": "---\n# Elasticsearch Ansible Variables\n\nelasticsearch_user: elasticsearch\nelasticsearch_group: elasticsearch\nelasticsearch_download_url: https://download.elasticsearch.org/elasticsearch/elasticsearch\nelasticsearch_version: 1.7.3\nelasticsearch_apt_repos:\n  - 'ppa:webupd8team/java'\nelasticsearch_apt_java_package: oracle-java7-installer\nelasticsearch_apt_dependencies:\n  - htop\n  - ntp\n  - unzip\nelasticsearch_max_open_files: 65535\nelasticsearch_home_dir: /usr/share/elasticsearch\nelasticsearch_plugin_dir: /usr/share/elasticsearch/plugins\nelasticsearch_log_dir: /var/log/elasticsearch\nelasticsearch_data_dir: /var/lib/elasticsearch\nelasticsearch_work_dir: /tmp/elasticsearch\nelasticsearch_conf_dir: /etc/elasticsearch\nelasticsearch_pid_dir: /var/run\nelasticsearch_service_startonboot: no\nelasticsearch_timezone: \"Etc/UTC\"  # Default to UTC\n\n#elasticsearch_http_cors_enabled: \"false\"\nelasticsearch_service_state: started\n\n# Non-Elasticsearch Defaults\napt_cache_valid_time: 300 # seconds between \"apt-get update\" calls.\nelasticsearch_install_java: \"true\"\n\n# Elasticsearch plugins to install\nelasticsearch_plugins:\n - { name: 'mobz/elasticsearch-head/1.x' }"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/handlers/main.yml",
    "content": "---\n# Elasticsearch Ansible Handlers\n\n# Restart Elasticsearch\n- name: Restart Elasticsearch\n  service: name=elasticsearch state=restarted\n"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/meta/.galaxy_install_info",
    "content": "{install_date: 'Thu Jan 28 00:04:02 2016', version: master}\n"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/meta/main.yml",
    "content": "---\n# Elasticsearch Ansible Meta\ngalaxy_info:\n  author: \"George Stathis\"\n  company: Traackr\n  license: MIT\n  min_ansible_version: 1.3\n  platforms:\n   - name: Ubuntu\n     versions:\n      - precise\n  categories:\n   - database:nosql\ndependencies: []\n"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/tasks/aws.yml",
    "content": "---\n# Install AWS Plugin (see https://github.com/elasticsearch/elasticsearch-cloud-aws)\n#\n# The following variables need to be defined in your playbook or inventory:\n# - elasticsearch_plugin_aws_version\n#\n# The following variables provide a for now limited configuration for the plugin.\n# More options may be available in the future.\n# (see http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-discovery-ec2.html):\n# - elasticsearch_plugin_aws_ec2_groups\n# - elasticsearch_plugin_aws_ec2_ping_timeout\n# - elasticsearch_plugin_aws_access_key\n# - elasticsearch_plugin_aws_secret_key\n# - elasticsearch_plugin_aws_region\n\n- name: aws | Removing AWS Plugin if it exists\n  shell: bin/plugin --remove cloud-aws\n    chdir={{ elasticsearch_home_dir }}\n  when: elasticsearch_plugin_aws_reinstall is defined and elasticsearch_plugin_aws_reinstall == True\n  ignore_errors: yes\n- name: aws | Installing AWS Plugin\n  shell: bin/plugin -install elasticsearch/elasticsearch-cloud-aws/{{ elasticsearch_plugin_aws_version }}\n    chdir={{ elasticsearch_home_dir }}\n  register: aws_plugins_installed\n  changed_when: \"'Installed' in aws_plugins_installed.stdout\"\n  failed_when: \"aws_plugins_installed.rc != 0 and aws_plugins_installed.stdout.find('already exists. To update the plugin') == -1\"\n"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/tasks/custom-jars.yml",
    "content": "---\n# Install Custom JARs\n#\n# Custom jars are made available to the Elasticsearch classpath by being downloaded into the elasticsearch_home_dir/lib folder.\n# An example of a custom jar can include a custom Lucene Similarity Provider. You will need to define an array called\n# 'elasticsearch_custom_jars' in your playbook or inventory, such that:\n#\n# elasticsearch_custom_jars:\n#  - { uri: '<URL where JAR can be downloaded from: required>', filename: '<alternative name for final JAR if different from file downladed: leave blank to use same filename>', user: '<BASIC auth username: leave blank of not needed>', passwd: '<BASIC auth password: leave blank of not needed>' }\n#  - ...\n\n# Loop though elasticsearch_custom_jars and install them\n- name: Installing Custom JARs\n  action: >\n    get_url url={{ item.uri }}\n    url_username={{ item.user }} url_password={{ item.passwd }} dest=\"{{ elasticsearch_home_dir }}/lib/{{ item.filename }}\"\n  with_items: elasticsearch_custom_jars\n# Fix permissions\n- file: >\n    path=\"{{ elasticsearch_home_dir }}/lib\" state=directory\n    owner={{ elasticsearch_user }} group={{ elasticsearch_group }}\n    recurse=yes\n"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/tasks/elastic-install.yml",
    "content": "---\n\n- name: elastic-install | Install python-software-properties\n  apt:\n    pkg=python-software-properties\n    state=present\n    update_cache=yes\n    cache_valid_time={{apt_cache_valid_time}}\n\n- name: elastic-install | Install dependencies\n  apt:\n    pkg={{ item }}\n    state=present\n  with_items: elasticsearch_apt_dependencies\n\n- name: elastic-install | Configuring elastic group\n  group:\n    name={{ elasticsearch_group }}\n\n- name: elastic-install | Configuring elastic user\n  user:\n    name={{ elasticsearch_user }}\n    group={{ elasticsearch_group }}\n    createhome=no\n\n- name: elastic-install | Ensure temp elasticsearch directories exists\n  file:\n    path=\"{{ elasticsearch_work_dir }}\"\n    state=directory\n    owner={{ elasticsearch_user }}\n    group={{ elasticsearch_group }}\n    recurse=yes\n\n- name: elastic-install | Check if we have elastic with same version installed\n  stat:\n    path=\"/usr/share/elasticsearch/lib/elasticsearch-{{ elasticsearch_version }}.jar\"\n  register: installed_version\n\n- name: elastic-install | Try to stop elasticsearch if running\n  service:\n    name=elasticsearch\n    state=stopped\n  ignore_errors: yes\n  when: not installed_version.stat.exists\n\n- name: elastic-install | Download Elasticsearch deb\n  get_url:\n    url={{ elasticsearch_download_url }}/elasticsearch-{{ elasticsearch_version }}.deb\n    dest=/tmp/elasticsearch-{{ elasticsearch_version }}.deb\n    mode=0440\n  when: not installed_version.stat.exists\n\n#shell: dpkg --remove elasticsearch\n- name: elastic-install | Uninstalling previous version if applicable\n  apt:\n     name=\"elasticsearch\"\n     state=\"absent\"\n  when: not installed_version.stat.exists\n\n- name: elastic-install | Remove elasticsearch directory\n  file:\n    path=\"{{ elasticsearch_home_dir }}\"\n    state=absent\n  when: not installed_version.stat.exists\n\n- name: elastic-install | Install Elasticsearch deb\n  shell: dpkg -i -E --force-confnew /tmp/elasticsearch-{{ elasticsearch_version }}.deb\n  when: not installed_version.stat.exists\n  notify: Restart Elasticsearch\n\n- name: elastic-install | Ensure elastic directories exists\n  file:\n    path=\"{{ item }}\"\n    state=directory\n    owner={{ elasticsearch_user }}\n    group={{ elasticsearch_group }}\n    recurse=yes\n  with_items:\n     - \"{{ elasticsearch_work_dir }}\"\n     - \"{{ elasticsearch_home_dir }}\"\n     - \"{{ elasticsearch_log_dir }}\"\n     - \"{{ elasticsearch_data_dir }}\"\n     - \"{{ elasticsearch_work_dir }}\"\n     - \"{{ elasticsearch_conf_dir }}\"\n\n- name: Configure limits max_open_files\n  lineinfile:\n    dest=/etc/security/limits.conf\n    regexp='^{{ elasticsearch_user }}     -    nofile    {{ elasticsearch_max_open_files }}'\n    insertafter=EOF\n    line='{{ elasticsearch_user }}     -    nofile    {{ elasticsearch_max_open_files }}'\n  when: elasticsearch_max_open_files is defined\n  notify: Restart Elasticsearch\n\n- name: elastic-install | Configure limits max_locked_memory\n  lineinfile:\n    dest=/etc/security/limits.conf\n    regexp='^{{ elasticsearch_user }}     -    memlock   {{ elasticsearch_max_locked_memory }}'\n    insertafter=EOF\n    line='{{ elasticsearch_user }}     -    memlock   {{ elasticsearch_max_locked_memory }}'\n  when: elasticsearch_max_locked_memory is defined\n  notify: Restart Elasticsearch\n\n- name: elastic-install | Configure su pam_limits.so\n  lineinfile:\n    dest=/etc/pam.d/su\n    regexp='^session    required   pam_limits.so'\n    insertafter=EOF\n    line='session    required   pam_limits.so'\n  notify: Restart Elasticsearch\n\n- name: elastic-install | Configure common-session pam_limits.so\n  lineinfile:\n    dest=/etc/pam.d/common-session\n    regexp='^session    required   pam_limits.so'\n    insertafter=EOF\n    line='session    required   pam_limits.so'\n  notify: Restart Elasticsearch\n\n- name: elastic-install | Configure common-session-noninteractive pam_limits.so\n  lineinfile:\n    dest=/etc/pam.d/common-session-noninteractive\n    regexp='^session    required   pam_limits.so'\n    insertafter=EOF\n    line='session    required   pam_limits.so'\n  notify: Restart Elasticsearch\n\n- name: elastic-install | Configure sudo pam_limits.so\n  lineinfile:\n    dest=/etc/pam.d/sudo\n    regexp='^session    required   pam_limits.so'\n    insertafter=EOF\n    line='session    required   pam_limits.so'\n  notify: Restart Elasticsearch\n\n- name: elastic-install | Configure initd java opts in /etc/init.d/elasticsearch\n  lineinfile:\n    dest=/etc/init.d/elasticsearch\n    regexp='^(DAEMON_OPTS=\".*-Des.max-open-files=true\")$'\n    insertafter='^(DAEMON_OPTS=\".*CONF_DIR\")$'\n    line='DAEMON_OPTS=\"$DAEMON_OPTS -Des.max-open-files=true\"'\n  notify: Restart Elasticsearch\n\n- name: elastic-install | Configuring Elasticsearch elasticsearch.yml Node\n  template:\n    src=elasticsearch.yml.j2\n    dest={{ elasticsearch_conf_dir }}/elasticsearch.yml\n    owner={{ elasticsearch_user }}\n    group={{ elasticsearch_group }}\n    mode=0644\n  when: elasticsearch_conf_dir is defined\n  notify: Restart Elasticsearch\n\n- name : elastic-install | Configure /etc/default/elasticsearch\n  template:\n    src=elasticsearch.default.j2\n    dest=/etc/default/elasticsearch\n    owner={{ elasticsearch_user }}\n    group={{ elasticsearch_group }}\n    mode=0644\n  notify: Restart Elasticsearch"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/tasks/java.yml",
    "content": "---\n\n- name: java | Accept Oracle license prior JDK installation\n  shell: echo debconf shared/accepted-oracle-license-v1-1 select true | sudo debconf-set-selections; echo debconf shared/accepted-oracle-license-v1-1 seen true | sudo debconf-set-selections\n    creates=/usr/lib/jvm/java-8-oracle\n\n- name: java | Update repositories\n  apt_repository:\n    repo={{ item }}\n    state=present\n    update_cache=yes\n  with_items: elasticsearch_apt_repos\n\n- name: java | Install dependencies\n  apt:\n    pkg={{elasticsearch_apt_java_package}}\n    state=present\n"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/tasks/main.yml",
    "content": "---\n# Elasticsearch Ansible Tasks\n\n# Install Java\n- include: java.yml\n  when: elasticsearch_install_java\n\n# Configure timezome\n- include: timezone.yml\n\n# Install and configure elasticsearch\n- include: elastic-install.yml\n\n# Install AWS Plugin\n- include: aws.yml\n  when: (elasticsearch_plugin_aws_version is defined)\n\n# Install Other Generic Plugins\n- include: plugins.yml\n  when: (elasticsearch_plugins is defined)\n\n# Install custom JARs\n- include: custom-jars.yml\n  when: (elasticsearch_custom_jars is defined)\n\n# Install Marvel Plugin\n- include: marvel.yml\n  when: (elasticsearch_plugin_marvel_version is defined)\n\n# Always run post-run tasks\n- include: post-run.yml\n"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/tasks/marvel.yml",
    "content": "---\n# Install Marvel (see http://www.elasticsearch.org/guide/en/marvel/current/)\n#\n# The following variables need to be defined in your playbook or inventory:\n# - elasticsearch_plugin_marvel_version\n#\n# The following variables provide configuration for the plugin.\n# More options may be available in the future:\n# - elasticsearch_plugin_marvel_agent_enabled\n# - elasticsearch_plugin_marvel_agent_exporter_es_hosts\n# - elasticsearch_plugin_marvel_agent_indices\n# - elasticsearch_plugin_marvel_agent_interval\n# - elasticsearch_plugin_marvel_agent_exporter_es_index_timeformat\n\n- name: marvel | Removing Marvel Plugin if it exists\n  shell: bin/plugin --remove marvel\n    chdir={{ elasticsearch_home_dir }}\n  ignore_errors: yes\n- name: marvel | Installing Marvel Plugin\n  shell: bin/plugin -i elasticsearch/marvel/{{ elasticsearch_plugin_marvel_version }}\n    chdir={{ elasticsearch_home_dir }}\n  register: marvel_plugins_installed\n  changed_when: \"'Installed' in marvel_plugins_installed.stdout\"\n  failed_when: \"marvel_plugins_installed.rc != 0 and marvel_plugins_installed.stdout.find('already exists. To update the plugin') == -1\"\n"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/tasks/plugins.yml",
    "content": "---\n# Install Elasticsearch Plugins\n#\n# You will need to define an array called 'elasticsearch_plugins' in your playbook or inventory, such that:\n#\n# elasticsearch_plugins:\n#  - { name: '<plugin name>', url: '<[optional] plugin url>' }\n#  - ...\n# where if you were to install the plugin via bin/plugin, you would type:\n#\n# bin/plugin -install <plugin name>\n#\n# or\n#\n# bin/plugin -install <plugin name> -url <plugin url>\n\n# Example for https://github.com/elasticsearch/elasticsearch-mapper-attachments (bin/plugin -install elasticsearch/elasticsearch-mapper-attachments/1.9.0):\n# elasticsearch_plugins:\n#  - { name: 'elasticsearch/elasticsearch-mapper-attachments/1.9.0' }\n#\n# Example for https://github.com/richardwilly98/elasticsearch-river-mongodb (bin/plugin -i com.github.richardwilly98.elasticsearch/elasticsearch-river-mongodb/1.7.1):\n# elasticsearch_plugins:\n#  - { name: 'com.github.richardwilly98.elasticsearch/elasticsearch-river-mongodb/1.7.1' }\n#\n# Example for https://github.com/imotov/elasticsearch-facet-script (bin/plugin -install facet-script -url http://dl.bintray.com/content/imotov/elasticsearch-plugins/elasticsearch-facet-script-1.1.2.zip):\n# elasticsearch_plugins:\n#  - { name: 'facet-script', url: 'http://dl.bintray.com/content/imotov/elasticsearch-plugins/elasticsearch-facet-script-1.1.2.zip' }\n\n# Loop though elasticsearch_plugins and install them\n\n- name: plugins | Removing Old Plugins\n  shell: bin/plugin --remove {{ item.name }}\n    chdir={{ elasticsearch_home_dir }}\n  when: item.name is defined and item.reinstall is defined and item.reinstall == True\n  with_items: elasticsearch_plugins\n  ignore_errors: yes\n- name: plugins | Installing Plugins\n  shell: bin/plugin -install {{ item.name }} {{ '-url ' + item.url if item.url is defined else '' }}\n    chdir={{ elasticsearch_home_dir }}\n  when: item.download_only is not defined\n  with_items: elasticsearch_plugins\n  register: plugins_installed\n  changed_when: \"'Installed' in plugins_installed.stdout\"\n  failed_when: \"plugins_installed.rc != 0 and plugins_installed.stdout.find('already exists. To update the plugin') == -1\"\n- name: plugins | Ensure Paths for Download only Plugins\n  file:\n    path=\"{{ elasticsearch_plugin_dir }}/{{ item.name }}\"\n    state=directory\n  when: item.download_only is defined and item.name is defined\n  with_items: elasticsearch_plugins\n- name: plugins | Download only Plugins\n  get_url:\n    url={{ item.url }}\n    dest={{ elasticsearch_plugin_dir }}/{{ item.name }}\n  when: item.download_only is defined and item.name is defined\n  with_items: elasticsearch_plugins\n  ignore_errors: yes\n"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/tasks/post-run.yml",
    "content": "---\n\n- name: post-run | Ensure plugins directory permission are correct\n  file:\n    path=\"{{ elasticsearch_plugin_dir }}\"\n    state=directory\n    owner={{ elasticsearch_user }}\n    group={{ elasticsearch_group }}\n    recurse=yes\n\n- name: post-run | Ensure Elasticsearch is running and started on boot\n  service:\n    name=elasticsearch\n    enabled={{ elasticsearch_service_startonboot }}\n    state={{ elasticsearch_service_state }}\n  when: installed_version.stat.exists\n\n# Flush handlers to restart elastic if needed\n- meta: flush_handlers\n\n- name: post-run | Check http port is open and running version. timeout 160s\n  wait_for:\n    host={{ '127.0.0.1' if elasticsearch_network_bind_host is not defined or elasticsearch_network_bind_host == '0.0.0.0' else elasticsearch_network_bind_host }}\n    port={{ elasticsearch_network_http_port | default('9200') }}\n    timeout=160\n  when: elasticsearch_service_state == \"started\""
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/tasks/spm.yml",
    "content": "---\n# SPM Tasks (see http://sematext.com/spm/)\n\n- name: spm | Install Collectd\n  apt:\n    pkg=collectd\n    state=present\n\n  # TODO: Make idempotent\n- name: spm |  Downloading and running package\n  shell: wget --no-check-certificate -O installer.sh \"https://apps.sematext.com/spm-reports/installerDownload.do?client_token={{ spm_client_token }}\" && bash installer.sh\n\n  # TODO: Make idempotent\n- name:  spm | Preparing monitor configurations\n  shell: bash /opt/spm/bin/spm-client-setup-conf.sh {{ spm_client_token }} es standalone\n\n- name:  spm | Configuring JXM in Elasticsearch\n  lineinfile:\n    dest=/etc/default/elasticsearch\n    regexp='^(ES_JAVA_OPTS=\"\\$ES_JAVA_OPTS -Dcom.sun.management.jmxremote.*\")$'\n    insertafter='^(#ES_JAVA_OPTS=.*)$'\n    line='ES_JAVA_OPTS=\"\\$ES_JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=3000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false\"'\n  notify: Restart Elasticsearch\n\n- name: spm | Configuring JXM in SPM\n  lineinfile:\n    dest=/opt/spm/spm-monitor/conf/spm-monitor-config-{{ spm_client_token }}-default.properties\n    regexp='^(SPM_MONITOR_JMX_PARAMS=\"\")$'\n    line='SPM_MONITOR_JMX_PARAMS=\"-Dspm.remote.jmx.url=localhost:3000\"'\n\n- name: spm | Restarting SPM\n  service:\n    name=spm-monitor\n    state=restarted\n"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/tasks/timezone.yml",
    "content": "---\n\n- name: timezone | check current timezone\n  shell: cat /etc/timezone\n  changed_when: 0\n  register: current_zone\n\n- name: timezone | Set timezone variables\n  copy:\n    content={{elasticsearch_timezone}}\n    dest=/etc/timezone\n    owner=root\n    group=root\n    mode=0644\n  when: current_zone.stdout != elasticsearch_timezone\n\n- name: timezone | Run dpkg-reconfigure to configure timezone\n  shell: dpkg-reconfigure --frontend noninteractive tzdata\n  when: current_zone.stdout != elasticsearch_timezone"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/templates/elasticsearch.default.j2",
    "content": "# Run ElasticSearch as this user ID and group ID\n#ES_USER=elasticsearch\n{% if elasticsearch_user is defined %}\nES_USER={{ elasticsearch_user }}\n{% endif %}\n#ES_GROUP=elasticsearch\n{% if elasticsearch_group is defined %}\nES_GROUP={{ elasticsearch_group }}\n{% endif %}\n\n# Heap Size (defaults to 256m min, 1g max)\n#ES_HEAP_SIZE=2g\n{% if elasticsearch_heap_size is defined %}\nES_HEAP_SIZE={{ elasticsearch_heap_size }}\n{% endif %}\n\n# Heap new generation\n#ES_HEAP_NEWSIZE=\n\n# max direct memory\n#ES_DIRECT_SIZE=\n\n# Maximum number of open files, defaults to 65535.\n#MAX_OPEN_FILES=65535\n{% if elasticsearch_max_open_files is defined %}\nMAX_OPEN_FILES={{ elasticsearch_max_open_files }}\n{% endif %}\n\n# Maximum locked memory size. Set to \"unlimited\" if you use the\n# bootstrap.mlockall option in elasticsearch.yml. You must also set\n# ES_HEAP_SIZE.\n#MAX_LOCKED_MEMORY=unlimited\n{% if elasticsearch_max_locked_memory is defined %}\nMAX_LOCKED_MEMORY={{ elasticsearch_max_locked_memory }}\n{% endif %}\n\n# ElasticSearch log directory\n#LOG_DIR=/var/log/elasticsearch\n\n# ElasticSearch data directory\n#DATA_DIR=/var/lib/elasticsearch\n\n# ElasticSearch work directory\n#WORK_DIR=/tmp/elasticsearch\n\n# ElasticSearch configuration directory\n#CONF_DIR=/etc/elasticsearch\n\n# ElasticSearch configuration file (elasticsearch.yml)\n#CONF_FILE=/etc/elasticsearch/elasticsearch.yml\n\n# Additional Java OPTS\n{% if elasticsearch_java_opts is defined %}\nES_JAVA_OPTS=\"{{ elasticsearch_java_opts }}\"\n{% else %}\n#ES_JAVA_OPTS=\n{% endif %}\n\n# Environment Vars\n{% if elasticsearch_env_use_gc_logging is defined %}\nexport ES_USE_GC_LOGGING=true\n{% endif %}\n{% if elasticsearch_java_home is defined %}\nJAVA_HOME={{ elasticsearch_java_home }}\n{% endif %}\n\nPID_DIR={{ elasticsearch_pid_dir }}\n"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/templates/elasticsearch.in.sh.j2",
    "content": "#!/bin/sh\n\nES_CLASSPATH=$ES_CLASSPATH:$ES_HOME/lib/elasticsearch-{{ elasticsearch_version }}.jar:$ES_HOME/lib/*:$ES_HOME/lib/sigar/*\n\nif [ \"x$ES_MIN_MEM\" = \"x\" ]; then\n    ES_MIN_MEM=256m\nfi\nif [ \"x$ES_MAX_MEM\" = \"x\" ]; then\n    ES_MAX_MEM=1g\nfi\nif [ \"x$ES_HEAP_SIZE\" != \"x\" ]; then\n    ES_MIN_MEM=$ES_HEAP_SIZE\n    ES_MAX_MEM=$ES_HEAP_SIZE\nfi\n\n# min and max heap sizes should be set to the same value to avoid\n# stop-the-world GC pauses during resize, and so that we can lock the\n# heap in memory on startup to prevent any of it from being swapped\n# out.\nJAVA_OPTS=\"$JAVA_OPTS -Xms${ES_MIN_MEM}\"\nJAVA_OPTS=\"$JAVA_OPTS -Xmx${ES_MAX_MEM}\"\n\n# new generation\nif [ \"x$ES_HEAP_NEWSIZE\" != \"x\" ]; then\n    JAVA_OPTS=\"$JAVA_OPTS -Xmn${ES_HEAP_NEWSIZE}\"\nfi\n\n# max direct memory\nif [ \"x$ES_DIRECT_SIZE\" != \"x\" ]; then\n    JAVA_OPTS=\"$JAVA_OPTS -XX:MaxDirectMemorySize=${ES_DIRECT_SIZE}\"\nfi\n\n# reduce the per-thread stack size\nJAVA_OPTS=\"$JAVA_OPTS -Xss256k\"\n\n# set to headless, just in case\nJAVA_OPTS=\"$JAVA_OPTS -Djava.awt.headless=true\"\n\n# Force the JVM to use IPv4 stack\nif [ \"x$ES_USE_IPV4\" != \"x\" ]; then\n  JAVA_OPTS=\"$JAVA_OPTS -Djava.net.preferIPv4Stack=true\"\nfi\n\nJAVA_OPTS=\"$JAVA_OPTS -XX:+UseParNewGC\"\nJAVA_OPTS=\"$JAVA_OPTS -XX:+UseConcMarkSweepGC\"\n\nJAVA_OPTS=\"$JAVA_OPTS -XX:CMSInitiatingOccupancyFraction=75\"\nJAVA_OPTS=\"$JAVA_OPTS -XX:+UseCMSInitiatingOccupancyOnly\"\n\n# When running under Java 7\n# JAVA_OPTS=\"$JAVA_OPTS -XX:+UseCondCardMark\"\n\n# GC logging options\nif [ \"x$ES_USE_GC_LOGGING\" != \"x\" ]; then\n  JAVA_OPTS=\"$JAVA_OPTS -XX:+PrintGCDetails\"\n  JAVA_OPTS=\"$JAVA_OPTS -XX:+PrintGCTimeStamps\"\n  JAVA_OPTS=\"$JAVA_OPTS -XX:+PrintClassHistogram\"\n  JAVA_OPTS=\"$JAVA_OPTS -XX:+PrintTenuringDistribution\"\n  JAVA_OPTS=\"$JAVA_OPTS -XX:+PrintGCApplicationStoppedTime\"\n{% if elasticsearch_log_dir is defined %}\n  JAVA_OPTS=\"$JAVA_OPTS -Xloggc:{{ elasticsearch_log_dir }}/gc.log\"\n{% else %}\n  JAVA_OPTS=\"$JAVA_OPTS -Xloggc:/var/log/elasticsearch/gc.log\"\n{% endif %}\n{% if elasticsearch_java_opts is defined %}\n  JAVA_OPTS=\"$JAVA_OPTS {{ elasticsearch_java_opts }}\"\n{% endif %}\nfi\n\n# Causes the JVM to dump its heap on OutOfMemory.\nJAVA_OPTS=\"$JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError\"\n# The path to the heap dump location, note directory must exists and have enough\n# space for a full heap dump.\n#JAVA_OPTS=\"$JAVA_OPTS -XX:HeapDumpPath=$ES_HOME/logs/heapdump.hprof\"\n"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/templates/elasticsearch.yml.j2",
    "content": "##################### ElasticSearch Configuration Example #####################\n\n# This file contains an overview of various configuration settings,\n# targeted at operations staff. Application developers should\n# consult the guide at <http://elasticsearch.org/guide>.\n#\n# The installation procedure is covered at\n# <http://elasticsearch.org/guide/reference/setup/installation.html>.\n#\n# ElasticSearch comes with reasonable defaults for most settings,\n# so you can try it out without bothering with configuration.\n#\n# Most of the time, these defaults are just fine for running a production\n# cluster. If you're fine-tuning your cluster, or wondering about the\n# effect of certain configuration option, please _do ask_ on the\n# mailing list or IRC channel [http://elasticsearch.org/community].\n\n# See <http://elasticsearch.org/guide/reference/setup/configuration.html>\n# for information on supported formats and syntax for the configuration file.\n\n\n################################### Cluster ###################################\n\n# Cluster name identifies your cluster for auto-discovery. If you're running\n# multiple clusters on the same network, make sure you're using unique names.\n#\n# cluster.name: elasticsearch\n{% if elasticsearch_cluster_name is defined %}\ncluster.name: {{ elasticsearch_cluster_name }}\n{% endif %}\n\n#################################### Node #####################################\n\n# Node names are generated dynamically on startup, so you're relieved\n# from configuring them manually. You can tie this node to a specific name:\n#\n# node.name: \"Franz Kafka\"\n{% if elasticsearch_node_name is defined %}\nnode.name: {{ elasticsearch_node_name }}\n{% endif %}\n\n# Every node can be configured to allow or deny being eligible as the master,\n# and to allow or deny to store the data.\n#\n# Allow this node to be eligible as a master node (enabled by default):\n#\n# node.master: true\n{% if elasticsearch_node_master is defined %}\nnode.master: {{ elasticsearch_node_master }}\n{% endif %}\n#\n# Allow this node to store data (enabled by default):\n#\n# node.data: true\n{% if elasticsearch_node_data is defined %}\nnode.data: {{ elasticsearch_node_data }}\n{% endif %}\n\n# You can exploit these settings to design advanced cluster topologies.\n#\n# 1. You want this node to never become a master node, only to hold data.\n#    This will be the \"workhorse\" of your cluster.\n#\n# node.master: false\n# node.data: true\n#\n# 2. You want this node to only serve as a master: to not store any data and\n#    to have free resources. This will be the \"coordinator\" of your cluster.\n#\n# node.master: true\n# node.data: false\n#\n# 3. You want this node to be neither master nor data node, but\n#    to act as a \"search load balancer\" (fetching data from nodes,\n#    aggregating results, etc.)\n#\n# node.master: false\n# node.data: false\n\n# Use the Cluster Health API [http://localhost:9200/_cluster/health], the\n# Node Info API [http://localhost:9200/_cluster/nodes] or GUI tools\n# such as <http://github.com/lukas-vlcek/bigdesk> and\n# <http://mobz.github.com/elasticsearch-head> to inspect the cluster state.\n\n# A node can have generic attributes associated with it, which can later be used\n# for customized shard allocation filtering, or allocation awareness. An attribute\n# is a simple key value pair, similar to node.key: value, here is an example:\n#\n# node.rack: rack314\n{% if elasticsearch_node_rack is defined %}\nnode.rack: {{ elasticsearch_node_rack }}\n{% endif %}\n\n# By default, multiple nodes are allowed to start from the same installation location\n# to disable it, set the following:\n# node.max_local_storage_nodes: 1\n{% if elasticsearch_node_max_local_storage_nodes is defined %}\nnode.max_local_storage_nodes: {{ elasticsearch_node_max_local_storage_nodes }}\n{% endif %}\n\n# Disable network discovery by setting the following (useful for development):\n# node.local: true\n{% if elasticsearch_node_local is defined %}\nnode.local: {{ elasticsearch_node_local }}\n{% endif %}\n\n#################################### Index ####################################\n\n# You can set a number of options (such as shard/replica options, mapping\n# or analyzer definitions, translog settings, ...) for indices globally,\n# in this file.\n#\n# Note, that it makes more sense to configure index settings specifically for\n# a certain index, either when creating it or by using the index templates API.\n#\n# See <http://elasticsearch.org/guide/reference/index-modules/> and\n# <http://elasticsearch.org/guide/reference/api/admin-indices-create-index.html>\n# for more information.\n\n# Set the number of shards (splits) of an index (5 by default):\n#\n# index.number_of_shards: 5\n{% if elasticsearch_index_number_of_shards is defined %}\nindex.number_of_shards: {{ elasticsearch_index_number_of_shards }}\n{% endif %}\n\n# Set the number of replicas (additional copies) of an index (1 by default):\n#\n# index.number_of_replicas: 1\n{% if elasticsearch_index_number_of_replicas is defined %}\nindex.number_of_replicas: {{ elasticsearch_index_number_of_replicas }}\n{% endif %}\n\n# Note, that for development on a local machine, with small indices, it usually\n# makes sense to \"disable\" the distributed features:\n#\n# index.number_of_shards: 1\n# index.number_of_replicas: 0\n\n# These settings directly affect the performance of index and search operations\n# in your cluster. Assuming you have enough machines to hold shards and\n# replicas, the rule of thumb is:\n#\n# 1. Having more *shards* enhances the _indexing_ performance and allows to\n#    _distribute_ a big index across machines.\n# 2. Having more *replicas* enhances the _search_ performance and improves the\n#    cluster _availability_.\n#\n# The \"number_of_shards\" is a one-time setting for an index.\n#\n# The \"number_of_replicas\" can be increased or decreased anytime,\n# by using the Index Update Settings API.\n#\n# ElasticSearch takes care about load balancing, relocating, gathering the\n# results from nodes, etc. Experiment with different settings to fine-tune\n# your setup.\n\n# Use the Index Status API (<http://localhost:9200/A/_status>) to inspect\n# the index status.\n\n{% if elasticsearch_index_mapper_dynamic is defined %}\nindex.mapper_dynamic: {{ elasticsearch_index_mapper_dynamic }}\n{% endif %}\n{% if elasticsearch_misc_query_bool_max_clause_count is defined %}\nindex.query.bool.max_clause_count: {{ elasticsearch_misc_query_bool_max_clause_count }}\n{% endif %}\n{% if elasticsearch_index_refresh_interval is defined %}\nindex.refresh_interval: {{ elasticsearch_index_refresh_interval }}\n{% endif %}\n{% if elasticsearch_index_store_throttle_type is defined %}\nindex.store.throttle.type: {{ elasticsearch_index_store_throttle_type }}\n{% endif %}\n{% if elasticsearch_index_store_throttle_max_bytes_per_sec is defined %}\nindices.store.throttle.max_bytes_per_sec: {{ elasticsearch_index_store_throttle_max_bytes_per_sec }}\n{% endif %}\n{% if elasticsearch_index_merge_scheduler_max_thread_count is defined %}\nindex.merge.scheduler.max_thread_count: {{ elasticsearch_index_merge_scheduler_max_thread_count }}\n{% endif %}\n\n#################################### Paths ####################################\n\n# Path to directory containing configuration (this file and logging.yml):\n#\n# path.conf: /path/to/conf\n{% if elasticsearch_conf_dir is defined %}\npath.conf: {{ elasticsearch_conf_dir }}\n{% endif %}\n\n# Path to directory where to store index data allocated for this node.\n#\n# path.data: /path/to/data\n{% if elasticsearch_data_dir is defined %}\npath.data: {{ elasticsearch_data_dir }}\n{% endif %}\n\n# Can optionally include more than one location, causing data to be striped across\n# the locations (a la RAID 0) on a file level, favouring locations with most free\n# space on creation. For example:\n#\n# path.data: /path/to/data1,/path/to/data2\n\n# Path to temporary files:\n#\n# path.work: /path/to/work\n{% if elasticsearch_work_dir is defined %}\npath.work: {{ elasticsearch_work_dir }}\n{% endif %}\n\n# Path to log files:\n#\n# path.logs: /path/to/logs\n{% if elasticsearch_log_dir is defined %}\npath.logs: {{ elasticsearch_log_dir }}\n{% endif %}\n\n# Path to where plugins are installed:\n#\n# path.plugins: /path/to/plugins\n{% if elasticsearch_plugin_dir is defined %}\npath.plugins: {{ elasticsearch_plugin_dir }}\n{% endif %}\n\n#################################### Plugin ###################################\n\n# If a plugin listed here is not installed for current node, the node will not start.\n#\n# plugin.mandatory: mapper-attachments,lang-groovy\n\n\n################################### Memory ####################################\n\n# ElasticSearch performs poorly when JVM starts swapping: you should ensure that\n# it _never_ swaps.\n#\n# Set this property to true to lock the memory:\n#\n#\n{% if elasticsearch_memory_bootstrap_mlockall is defined %}\nbootstrap.mlockall: {{ elasticsearch_memory_bootstrap_mlockall }}\n{% endif %}\n\n# Make sure that the ES_MIN_MEM and ES_MAX_MEM environment variables are set\n# to the same value, and that the machine has enough memory to allocate\n# for ElasticSearch, leaving enough memory for the operating system itself.\n#\n# You should also make sure that the ElasticSearch process is allowed to lock\n# the memory, eg. by using `ulimit -l unlimited`.\n\n{% if elasticsearch_indices_fielddata_cache_size is defined %}\nindices.fielddata.cache.size: {{ elasticsearch_indices_fielddata_cache_size }}\n{% endif %}\n\n{% if elasticsearch_indices_breaker_fielddata_limit is defined %}\nindices.breaker.fielddata.limit: {{ elasticsearch_indices_breaker_fielddata_limit }}\n{% endif %}\n\n{% if elasticsearch_indices_breaker_request_limit is defined %}\nindices.breaker.request.limit: {{ elasticsearch_indices_breaker_request_limit }}\n{% endif %}\n\n{% if elasticsearch_indices_breaker_total_limit is defined %}\nindices.breaker.total.limit: {{ elasticsearch_indices_breaker_total_limit }}\n{% endif %}\n\n############################## Network And HTTP ###############################\n\n# ElasticSearch, by default, binds itself to the 0.0.0.0 address, and listens\n# on port [9200-9300] for HTTP traffic and on port [9300-9400] for node-to-node\n# communication. (the range means that if the port is busy, it will automatically\n# try the next port).\n\n# Set the bind address specifically (IPv4 or IPv6):\n#\n# network.bind_host: 192.168.0.1\n{% if elasticsearch_network_bind_host is defined %}\nnetwork.bind_host: {{ elasticsearch_network_bind_host }}\n{% endif %}\n\n# Set the address other nodes will use to communicate with this node. If not\n# set, it is automatically derived. It must point to an actual IP address.\n#\n# network.publish_host: 192.168.0.1\n{% if elasticsearch_network_publish_host is defined %}\nnetwork.publish_host: {{ elasticsearch_network_publish_host }}\n{% endif %}\n\n# Set both 'bind_host' and 'publish_host':\n#\n# network.host: 192.168.0.1\n{% if elasticsearch_network_host is defined %}\nnetwork.host: {{ elasticsearch_network_host }}\n{% endif %}\n\n# Set a custom port for the node to node communication (9300 by default):\n#\n# transport.tcp.port: 9300\n{% if elasticsearch_network_transport_tcp_port is defined %}\ntransport.tcp.port: {{ elasticsearch_network_transport_tcp_port }}\n{% endif %}\n\n# Enable compression for all communication between nodes (disabled by default):\n#\n# transport.tcp.compress: true\n{% if elasticsearch_network_transport_tcp_compress is defined %}\ntransport.tcp.compress: {{ elasticsearch_network_transport_tcp_compress }}\n{% endif %}\n\n# Set a custom port to listen for HTTP traffic:\n#\n# http.port: 9200\n{% if elasticsearch_network_http_port is defined %}\nhttp.port: {{ elasticsearch_network_http_port }}\n{% endif %}\n\n# Set a custom allowed content length:\n#\n# http.max_content_length: 100mb\n{% if elasticsearch_network_http_max_content_lengtht is defined %}\nhttp.max_content_length: {{ elasticsearch_network_http_max_content_lengtht }}\n{% endif %}\n\n# Disable HTTP completely:\n#\n# http.enabled: false\n{% if elasticsearch_network_http_enabled is defined %}\nhttp.enabled: {{ elasticsearch_network_http_enabled }}\n{% endif %}\n\n# Basic HTTP\n{% if elasticsearch_http_basic_log is defined %}\nhttp.basic.log: {{ elasticsearch_http_basic_log }}\n{% endif %}\n{% if elasticsearch_http_basic_user is defined %}\nhttp.basic.user: {{ elasticsearch_http_basic_user }}\n{% endif %}\n{% if elasticsearch_http_basic_password is defined %}\nhttp.basic.password: {{ elasticsearch_http_basic_password }}\n{% endif %}\n\n\n################################### Gateway ###################################\n\n# The gateway allows for persisting the cluster state between full cluster\n# restarts. Every change to the state (such as adding an index) will be stored\n# in the gateway, and when the cluster starts up for the first time,\n# it will read its state from the gateway.\n\n# There are several types of gateway implementations. For more information,\n# see <http://elasticsearch.org/guide/reference/modules/gateway>.\n\n# The default gateway type is the \"local\" gateway (recommended):\n#\n# gateway.type: local\n{% if elasticsearch_gateway_type is defined %}\ngateway.type: {{ elasticsearch_gateway_type }}\n{% endif %}\n\n# Settings below control how and when to start the initial recovery process on\n# a full cluster restart (to reuse as much local data as possible when using shared\n# gateway).\n\n# Allow recovery process after N nodes in a cluster are up:\n#\n# gateway.recover_after_nodes: 1\n{% if elasticsearch_gateway_recover_after_nodes is defined %}\ngateway.recover_after_nodes: {{ elasticsearch_gateway_recover_after_nodes }}\n{% endif %}\n\n# Set the timeout to initiate the recovery process, once the N nodes\n# from previous setting are up (accepts time value):\n#\n# gateway.recover_after_time: 5m\n{% if elasticsearch_gateway_recover_after_time is defined %}\ngateway.recover_after_time: {{ elasticsearch_gateway_recover_after_time }}\n{% endif %}\n\n# Set how many nodes are expected in this cluster. Once these N nodes\n# are up (and recover_after_nodes is met), begin recovery process immediately\n# (without waiting for recover_after_time to expire):\n#\n# gateway.expected_nodes: 2\n{% if elasticsearch_gateway_expected_nodes is defined %}\ngateway.expected_nodes: {{ elasticsearch_gateway_expected_nodes }}\n{% endif %}\n\n############################# Recovery Throttling #############################\n\n# These settings allow to control the process of shards allocation between\n# nodes during initial recovery, replica allocation, rebalancing,\n# or when adding and removing nodes.\n\n# Set the number of concurrent recoveries happening on a node:\n#\n# 1. During the initial recovery\n#\n# cluster.routing.allocation.node_initial_primaries_recoveries: 4\n{% if elasticsearch_recovery_node_initial_primaries_recoveries is defined %}\ncluster.routing.allocation.node_initial_primaries_recoveries: {{ elasticsearch_recovery_node_initial_primaries_recoveries }}\n{% endif %}\n\n#\n# 2. During adding/removing nodes, rebalancing, etc\n#\n# cluster.routing.allocation.node_concurrent_recoveries: 2\n{% if elasticsearch_recovery_node_concurrent_recoveries is defined %}\ncluster.routing.allocation.node_concurrent_recoveries: {{ elasticsearch_recovery_node_concurrent_recoveries }}\n{% endif %}\n\n# Set to throttle throughput when recovering (eg. 100mb, by default unlimited):\n#\n# indices.recovery.max_size_per_sec: 0\n{% if elasticsearch_recovery_max_size_per_sec is defined %}\nindices.recovery.max_size_per_sec: {{ elasticsearch_recovery_max_size_per_sec }}\n{% endif %}\n\n# Set to limit the number of open concurrent streams when\n# recovering a shard from a peer:\n#\n# indices.recovery.concurrent_streams: 5\n{% if elasticsearch_recovery_concurrent_streams is defined %}\nindices.recovery.concurrent_streams: {{ elasticsearch_recovery_concurrent_streams }}\n{% endif %}\n\n\n################################## Discovery ##################################\n\n{% if elasticsearch_plugin_aws_version is defined %}\n\n{% if elasticsearch_plugin_aws_discovery_disable is not defined %}\ndiscovery.type: ec2\n{% endif %}\n{% if elasticsearch_plugin_aws_ec2_groups is defined %}\ndiscovery.ec2.groups: '{{ elasticsearch_plugin_aws_ec2_groups }}'\n{% endif %}\n{% if elasticsearch_plugin_aws_ec2_ping_timeout is defined %}\ndiscovery.ec2.ping_timeout: {{ elasticsearch_plugin_aws_ec2_ping_timeout}}\n{% endif %}\ncloud.node.auto_attributes: true\n{% if elasticsearch_plugin_aws_access_key is defined %}\n{% if elasticsearch_plugin_aws_secret_key is defined %}\ncloud.aws.access_key: '{{ elasticsearch_plugin_aws_access_key }}'\ncloud.aws.secret_key: '{{ elasticsearch_plugin_aws_secret_key }}'\n{% endif %}\n{% endif %}\n{% if elasticsearch_plugin_aws_region is defined %}\ncloud.aws.region: {{ elasticsearch_plugin_aws_region}}\n{% endif %}\n\n{% endif %}\n\n# Discovery infrastructure ensures nodes can be found within a cluster\n# and master node is elected. Multicast discovery is the default.\n\n# Set to ensure a node sees N other master eligible nodes to be considered\n# operational within the cluster. Set this option to a higher value (2-4)\n# for large clusters (>3 nodes):\n#\n# discovery.zen.minimum_master_nodes: 1\n{% if elasticsearch_discovery_zen_minimum_master_nodes is defined %}\ndiscovery.zen.minimum_master_nodes: {{ elasticsearch_discovery_zen_minimum_master_nodes }}\n{% endif %}\n\n# Set the time to wait for ping responses from other nodes when discovering.\n# Set this option to a higher value on a slow or congested network\n# to minimize discovery failures:\n#\n# discovery.zen.ping.timeout: 3s\n{% if elasticsearch_discovery_zen_ping_timeout is defined %}\ndiscovery.zen.ping.timeout: {{ elasticsearch_discovery_zen_ping_timeout }}\n{% endif %}\n\n# See <http://elasticsearch.org/guide/reference/modules/discovery/zen.html>\n# for more information.\n\n# Unicast discovery allows to explicitly control which nodes will be used\n# to discover the cluster. It can be used when multicast is not present,\n# or to restrict the cluster communication-wise.\n#\n# 1. Disable multicast discovery (enabled by default):\n#\n# discovery.zen.ping.multicast.enabled: false\n{% if elasticsearch_discovery_zen_ping_multicast_enabled is defined %}\ndiscovery.zen.ping.multicast.enabled: {{ elasticsearch_discovery_zen_ping_multicast_enabled }}\n{% endif %}\n\n#\n# 2. Configure an initial list of master nodes in the cluster\n#    to perform discovery when new nodes (master or data) are started:\n#\n# discovery.zen.ping.unicast.hosts: [\"host1\", \"host2:port\", \"host3[portX-portY]\"]\n{% if elasticsearch_discovery_zen_ping_unicast_hosts is defined %}\ndiscovery.zen.ping.unicast.hosts: {{ elasticsearch_discovery_zen_ping_unicast_hosts }}\n{% endif %}\n\n# EC2 discovery allows to use AWS EC2 API in order to perform discovery.\n#\n# You have to install the cloud-aws plugin for enabling the EC2 discovery.\n#\n# See <http://elasticsearch.org/guide/reference/modules/discovery/ec2.html>\n# for more information.\n#\n# See <http://elasticsearch.org/tutorials/2011/08/22/elasticsearch-on-ec2.html>\n# for a step-by-step tutorial.\n\n# Fault Discovery\n# See <http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-discovery-zen.html#fault-detection>\n{% if elasticsearch_discovery_zen_fd_ping_interval is defined %}\ndiscovery.zen.fd.ping_interval: {{ elasticsearch_discovery_zen_fd_ping_interval }}\n{% endif %}\n{% if elasticsearch_discovery_zen_fd_ping_timeout is defined %}\ndiscovery.zen.fd.ping_timeout: {{ elasticsearch_discovery_zen_fd_ping_timeout }}\n{% endif %}\n{% if elasticsearch_discovery_zen_fd_ping_retries is defined %}\ndiscovery.zen.fd.ping_retries: {{ elasticsearch_discovery_zen_fd_ping_retries }}\n{% endif %}\n\n# Configurations for Google Compute Engine plugin\n{% if elasticsearch_cloud_gce_project_id is defined %}\ncloud.gce.project_id: {{ elasticsearch_cloud_gce_project_id }}\n{% endif %}\n{% if elasticsearch_cloud_gce_zone is defined %}\ncloud.gce.zone: {{ elasticsearch_cloud_gce_zone }}\n{% endif %}\n{% if elasticsearch_discovery_type is defined %}\ndiscovery.type: {{ elasticsearch_discovery_type }}\n{% endif %}\n{% if elasticsearch_discovery_gce_tags is defined %}\ndiscovery.gce.tags: {{ elasticsearch_discovery_gce_tags }}\n{% endif %}\n\n\n################################## Slow Log ##################################\n\n# Shard level query and fetch threshold logging.\n\n#index.search.slowlog.threshold.query.warn: 10s\n{% if elasticsearch_slowlog_threshold_query_warn is defined %}\nindex.search.slowlog.threshold.query.warn: {{ elasticsearch_slowlog_threshold_query_warn }}\n{% endif %}\n#index.search.slowlog.threshold.query.info: 5s\n{% if elasticsearch_slowlog_threshold_query_info is defined %}\nindex.search.slowlog.threshold.query.info: {{ elasticsearch_slowlog_threshold_query_info }}\n{% endif %}\n#index.search.slowlog.threshold.query.debug: 2s\n{% if elasticsearch_slowlog_threshold_query_debug is defined %}\nindex.search.slowlog.threshold.query.debug: {{ elasticsearch_slowlog_threshold_query_debug }}\n{% endif %}\n#index.search.slowlog.threshold.query.trace: 500ms\n{% if elasticsearch_slowlog_threshold_query_trace is defined %}\nindex.search.slowlog.threshold.query.trace: {{ elasticsearch_slowlog_threshold_query_trace }}\n{% endif %}\n\n#index.search.slowlog.threshold.fetch.warn: 1s\n{% if elasticsearch_slowlog_threshold_fetch_warn is defined %}\nindex.search.slowlog.threshold.fetch.warn: {{ elasticsearch_slowlog_threshold_fetch_warn }}\n{% endif %}\n#index.search.slowlog.threshold.fetch.info: 800ms\n{% if elasticsearch_slowlog_threshold_fetch_info is defined %}\nindex.search.slowlog.threshold.fetch.info: {{ elasticsearch_slowlog_threshold_fetch_info }}\n{% endif %}\n#index.search.slowlog.threshold.fetch.debug: 500ms\n{% if elasticsearch_slowlog_threshold_fetch_debug is defined %}\nindex.search.slowlog.threshold.fetch.debug: {{ elasticsearch_slowlog_threshold_fetch_debug }}\n{% endif %}\n#index.search.slowlog.threshold.fetch.trace: 200ms\n{% if elasticsearch_slowlog_threshold_fetch_trace is defined %}\nindex.search.slowlog.threshold.fetch.trace: {{ elasticsearch_slowlog_threshold_fetch_trace }}\n{% endif %}\n\n#index.indexing.slowlog.threshold.index.warn: 10s\n{% if elasticsearch_slowlog_threshold_index_warn is defined %}\nindex.indexing.slowlog.threshold.index.warn: {{ elasticsearch_slowlog_threshold_index_warn }}\n{% endif %}\n#index.indexing.slowlog.threshold.index.info: 5s\n{% if elasticsearch_slowlog_threshold_index_info is defined %}\nindex.indexing.slowlog.threshold.index.info: {{ elasticsearch_slowlog_threshold_index_info }}\n{% endif %}\n#index.indexing.slowlog.threshold.index.debug: 2s\n{% if elasticsearch_slowlog_threshold_index_debug is defined %}\nindex.indexing.slowlog.threshold.index.debug: {{ elasticsearch_slowlog_threshold_index_debug }}\n{% endif %}\n#index.indexing.slowlog.threshold.index.trace: 500ms\n{% if elasticsearch_slowlog_threshold_index_trace is defined %}\nindex.indexing.slowlog.threshold.index.trace: {{ elasticsearch_slowlog_threshold_index_trace }}\n{% endif %}\n\n################################## GC Logging ################################\n\n#monitor.jvm.gc.ParNew.warn: 1000ms\n{% if elasticsearch_gc_par_new_warn is defined %}\nmonitor.jvm.gc.ParNew.warn: {{ elasticsearch_gc_par_new_warn }}\n{% endif %}\n#monitor.jvm.gc.ParNew.info: 700ms\n{% if elasticsearch_gc_par_new_info is defined %}\nmonitor.jvm.gc.ParNew.info: {{ elasticsearch_gc_par_new_info }}\n{% endif %}\n#monitor.jvm.gc.ParNew.debug: 400ms\n{% if elasticsearch_gc_par_new_debug is defined %}\nmonitor.jvm.gc.ParNew.debug: {{ elasticsearch_gc_par_new_debug }}\n{% endif %}\n\n#monitor.jvm.gc.ConcurrentMarkSweep.warn: 10s\n{% if elasticsearch_gc_soncurrent_mark_sweep_warn is defined %}\nmonitor.jvm.gc.ConcurrentMarkSweep.warn: {{ elasticsearch_gc_soncurrent_mark_sweep_warn }}\n{% endif %}\n#monitor.jvm.gc.ConcurrentMarkSweep.info: 5s\n{% if elasticsearch_gc_soncurrent_mark_sweep_info is defined %}\nmonitor.jvm.gc.ConcurrentMarkSweep.info: {{ elasticsearch_gc_soncurrent_mark_sweep_info }}\n{% endif %}\n#monitor.jvm.gc.ConcurrentMarkSweep.debug: 2s\n{% if elasticsearch_gc_soncurrent_mark_sweep_debug is defined %}\nmonitor.jvm.gc.ConcurrentMarkSweep.debug: {{ elasticsearch_gc_soncurrent_mark_sweep_debug }}\n{% endif %}\n\n################################### Varia #####################################\n\n{% if elasticsearch_plugin_marvel_version is defined %}\n\n{% if elasticsearch_plugin_marvel_agent_exporter_es_index_timeformat is defined %}\nmarvel.agent.exporter.es.index.timeformat: {{ elasticsearch_plugin_marvel_agent_exporter_es_index_timeformat }}\n{% endif %}\n{% if elasticsearch_plugin_marvel_agent_interval is defined %}\nmarvel.agent.interval: {{ elasticsearch_plugin_marvel_agent_interval }}\n{% endif %}\n{% if elasticsearch_plugin_marvel_agent_indices is defined %}\nmarvel.agent.indices: {{ elasticsearch_plugin_marvel_agent_indices }}\n{% endif %}\n{% if elasticsearch_plugin_marvel_agent_exporter_es_hosts is defined %}\nmarvel.agent.exporter.es.hosts: {{ elasticsearch_plugin_marvel_agent_exporter_es_hosts }}\n{% endif %}\n{% if elasticsearch_plugin_marvel_agent_enabled is defined %}\nmarvel.agent.enabled: {{ elasticsearch_plugin_marvel_agent_enabled }}\n{% endif %}\n\n{% endif %}\n\n{% if elasticsearch_misc_auto_create_index is defined %}\naction.auto_create_index: {{ elasticsearch_misc_auto_create_index }}\n{% endif %}\n{% if elasticsearch_misc_disable_delete_all_indices is defined %}\naction.disable_delete_all_indices: {{ elasticsearch_misc_disable_delete_all_indices }}\n{% endif %}\n{% if elasticsearch_thread_pools is defined %}\n{% for threadPoolSetting in elasticsearch_thread_pools %}\n{{ threadPoolSetting }}\n{% endfor %}\n{% endif %}\n\n\n{% if elasticsearch_indices_cache_filter_size is defined %}\nindices.cache.filter.size: {{ elasticsearch_indices_cache_filter_size }}\n{% endif %}\n\n################################### Dynamic Scripting #####################################\n\n{% if elasticsearch_script_disable_dynamic is defined %}\nscript.disable_dynamic: {{ elasticsearch_script_disable_dynamic }}\n{% endif %}\n\n################################### CORS Settings #####################################\n\n{% if elasticsearch_http_cors_enabled is defined %}\nhttp.cors.enabled: {{ elasticsearch_http_cors_enabled }}\n{% endif %}\n\n{% if elasticsearch_http_cors_allow_origin is defined %}\nhttp.cors.allow-origin: {{ elasticsearch_http_cors_allow_origin}}\n{% endif %}\n\n{% if elasticsearch_script_groovy_sandbox_enabled is defined %}\nscript.groovy.sandbox.enabled: {{ elasticsearch_script_groovy_sandbox_enabled }}\n{% endif %}\n\n\n################################### Awareness Settings #####################################\n\n{% if elasticsearch_cluster_routing_allocation_zone_awareness is defined %}\ncluster.routing.allocation.awareness.attributes: zone\nnode.zone: {{ facter_ec2_placement_availability_zone }}\n{% endif %}\n"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/tests/ansible.cfg",
    "content": "[defaults]\nroles_path=../../"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/tests/elastic_test.sh",
    "content": "#!/bin/bash\nset -e\n\n# Put data\ncurl -XPUT 'http://localhost:9200/blog/user/dilbert' -d '{ \"name\" : \"Dilbert Brown\" }'\n\n#Get data\ncurl -XGET 'http://localhost:9200/blog/user/dilbert?pretty=true' | grep \"\\\"name\\\" : \\\"Dilbert Brown\\\"\"\n\n# Check if kopf is running\ncurl -XGET 'http://localhost:9200/_plugin/kopf/' | grep \"ng-app=\\\"kopf\\\"\"\n"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/tests/local.ini",
    "content": "localhost ansible_connection='local'"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/tests/test1.yml",
    "content": "---\n# This playbook nexus\n- hosts: all\n  sudo: true\n  vars_files:\n    - \"test1_var.yml\"\n  roles:\n    - ansible-elasticsearch\n"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/tests/test1_var.yml",
    "content": "---\n\nelasticsearch_version: 1.4.2\nelasticsearch_apt_java_package: oracle-java8-installer\nelasticsearch_java_home: /usr/lib/jvm/java-8-oracle\nelasticsearch_heap_size: 1g\nelasticsearch_max_open_files: 65535\nelasticsearch_timezone: \"America/New_York\"\nelasticsearch_node_max_local_storage_nodes: 1\nelasticsearch_index_mapper_dynamic: \"true\"\nelasticsearch_memory_bootstrap_mlockall: \"true\"\nelasticsearch_install_java: \"true\"\nelasticsearch_plugins:\n  - { name: 'elasticsearch/elasticsearch-mapper-attachments/2.4.1' }\n  - { name: 'com.github.richardwilly98.elasticsearch/elasticsearch-river-mongodb/2.0.5' }\n  - { name: 'facet-script', url: 'http://dl.bintray.com/content/imotov/elasticsearch-plugins/elasticsearch-facet-script-1.1.2.zip' }\n  - { name: 'lmenezes/elasticsearch-kopf' }\nelasticsearch_thread_pools:\n  - \"threadpool.bulk.type: fixed\"\n  - \"threadpool.bulk.size: 50\"\n  - \"threadpool.bulk.queue_size: 1000\"\n"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/vagrant-inventory.ini",
    "content": "#\n# Inventory for provisioning with Vagrant\n#\n\n#####################\n# Local Environment #\n#####################\n[vagrant]\n192.168.111.10 ansible_ssh_user=vagrant ansible_ssh_pass=vagrant\n\n[vagrant:vars]\n# spm_client_token=<enter your token>\n"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/vagrant-main.yml",
    "content": "---\n# Elasticsearch Ansible Playbook\n- hosts: all\n  user: $user\n  sudo: yes\n\n  vars_files:\n    - defaults/main.yml\n    - vars/vagrant.yml\n\n  tasks:\n    - include: tasks/main.yml\n    # Uncomment to install and enable SPM. Make sure to set the spm_client_token variable in your inventory.ini to your SPM key\n    # - include: tasks/spm.yml\n\n  handlers:\n    - include: handlers/main.yml\n"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/vars/sample.yml",
    "content": "---\n# Elasticsearch Ansible Sample Variables\n\nelasticsearch_version: 0.90.5\nelasticsearch_heap_size: 1g\nelasticsearch_max_open_files: 65535\nelasticsearch_max_locked_memory: unlimited\nelasticsearch_timezone: \"America/New_York\"\nelasticsearch_cluster_name: elasticsearch-ansible\nelasticsearch_node_name: elasticsearch-ansible-node\nelasticsearch_node_max_local_storage_nodes: 1\nelasticsearch_index_mapper_dynamic: \"true\"\nelasticsearch_memory_bootstrap_mlockall: \"true\"\nelasticsearch_gateway_type: local\nelasticsearch_gateway_recover_after_nodes: 1\nelasticsearch_gateway_recover_after_time: 2m\nelasticsearch_gateway_expected_nodes: 1\nelasticsearch_discovery_zen_minimum_master_nodes: 1\nelasticsearch_discovery_zen_ping_timeout: 30s\nelasticsearch_discovery_zen_ping_multicast_enabled: \"true\"\nelasticsearch_misc_auto_create_index: \"true\"\nelasticsearch_misc_query_bool_max_clause_count: 4096\nelasticsearch_misc_disable_delete_all_indices: \"true\"\nelasticsearch_java_opts: \"-XX:-UseSuperWord\"\n"
  },
  {
    "path": "vagrant/ansible/roles/gpstathis.elasticsearch/vars/vagrant.yml",
    "content": "---\n# Elasticsearch Ansible Variables\n\nelasticsearch_version: 1.7.3\nelasticsearch_apt_java_package: oracle-java8-installer\nelasticsearch_java_home: /usr/lib/jvm/java-8-oracle\nelasticsearch_heap_size: 1g\nelasticsearch_max_open_files: 65535\nelasticsearch_timezone: \"America/New_York\"\nelasticsearch_node_max_local_storage_nodes: 1\nelasticsearch_index_mapper_dynamic: \"true\"\nelasticsearch_memory_bootstrap_mlockall: \"true\"\nelasticsearch_install_java: \"true\"\nelasticsearch_plugins:\n  - { name: 'elasticsearch/elasticsearch-mapper-attachments/2.7.1', reinstall: false }\n  - { name: 'com.github.richardwilly98.elasticsearch/elasticsearch-river-mongodb/2.0.9', reinstall: false }\n  - { name: 'facet-script', url: 'http://dl.bintray.com/content/imotov/elasticsearch-plugins/elasticsearch-facet-script-1.1.2.zip', reinstall: false }\n  - { name: 'http-basic', url: 'https://github.com/Asquera/elasticsearch-http-basic/releases/download/v1.5.1/elasticsearch-http-basic-1.5.1.jar', download_only: true, reinstall: false }\nelasticsearch_thread_pools:\n  - \"threadpool.bulk.type: fixed\"\n  - \"threadpool.bulk.size: 50\"\n  - \"threadpool.bulk.queue_size: 1000\"\nelasticsearch_service_startonboot: yes\n"
  },
  {
    "path": "vagrant/ansible/setup.yml",
    "content": "---\n- hosts: app\n  tasks:\n    - name: \"Add PHP 5.6 version repository\"\n      apt_repository: repo='ppa:ondrej/php5-5.6'\n\n    - name: \"Upgrade all packages to latest version\"\n      apt: upgrade=dist update_cache=yes\n\n    - name: \"Install new PHP version\"  \n      apt: name=php5 state=present\n\n    - name: \"Install needed packages\"\n      apt: name={{ item }} state=present\n      with_items:\n        - git\n        - sqlite\n        - php5-sqlite\n        - php5-curl\n        - phpunit\n    \n    - name: \"Download wkhtmltox\"\n      command: chdir=/ wget http://download.gna.org/wkhtmltopdf/0.12/0.12.3/wkhtmltox-0.12.3_linux-generic-amd64.tar.xz\n\n    - name: \"Uncompress wkhtmltox\"\n      command: chdir=/ tar xf wkhtmltox-0.12.3_linux-generic-amd64.tar.xz\n    \n    - name: \"Remove wkhtmltox.tar.xz\"\n      command: chdir=/ rm wkhtmltox-0.12.3_linux-generic-amd64.tar.xz\n\n    - name: \"Move wkhtmltox\"\n      command: chdir=/ mv wkhtmltox/bin/wkhtmltopdf /usr/local/bin/\n\n    - name: \"Permissions wkhtmltox\"\n      command: chmod +x /usr/local/bin/wkhtmltopdf\n\n    - name: \"Install symfony.demo.on.roids project with composer\"\n      command: composer create-project alfonsomga/symfony.demo.on.roids --stability=dev --no-interaction --prefer-dist --no-ansi --no-progress /var/www/app/\n      notify:\n        - restart nginx\n\n    - name: \"htmlpurifier vendor needs writable permissions\"\n      file: path=/var/www/app/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer mode=0777\n\n    - name:  \"Clear symfony caches\"\n      shell: >\n        cd /var/www/app\n        app/console cache:clear --env=test\n        app/console cache:clear --env=dev\n        app/console cache:clear --env=prod\n\n    - name: \"Populate elasticsearch\"\n      command: chdir=/var/www/app app/console fos:elastica:populate --env={{ item }}\n      with_items:\n        - test\n        - dev\n        - prod\n\n    - name: \"Restart RabbitMQ service\"\n      service: name=rabbitmq-server state=restarted\n\n    - name: \"Create bash file for RabbitMQ consumers\"\n      template: src=templates/rabbitmq-consumers.j2 dest=/var/www/app/rabbitmq-consumers.sh mode=0777\n\n    - name: \"Run RabbitMQ consumers\"\n      command: chdir=/var/www/app ./rabbitmq-consumers.sh\n\n    - name: \"Add write permissions to SQLite databases folder\"\n      command: chdir=/var/www/app chown -R www-data:www-data app/data/\n\n    - name: \"Add write permissions Symfony cache folder\"\n      command: chdir=/var/www/app chown -R www-data:www-data app/cache/\n\n    - name: \"Add write permissions Symfony logs folder\"\n      command: chdir=/var/www/app chown -R www-data:www-data app/logs/    \n  roles:\n    - geerlingguy.nginx\n    - geerlingguy.php\n    - geerlingguy.composer\n    - geerlingguy.redis\n    - gpstathis.elasticsearch\n    - Stouts.rabbitmq\n"
  },
  {
    "path": "vagrant/ansible/templates/rabbitmq-consumers.j2",
    "content": "#!/bin/bash\ncd /var/www/app/\nsudo app/console rabbitmq:consumer generate_pdf --env=dev &\nsudo app/console rabbitmq:consumer generate_pdf --env=test &\nsudo app/console rabbitmq:consumer generate_pdf --env=prod &"
  },
  {
    "path": "web/.htaccess",
    "content": "# Use the front controller as index file. It serves as a fallback solution when\n# every other rewrite/redirect fails (e.g. in an aliased environment without\n# mod_rewrite). Additionally, this reduces the matching process for the\n# start page (path \"/\") because otherwise Apache will apply the rewriting rules\n# to each configured DirectoryIndex file (e.g. index.php, index.html, index.pl).\nDirectoryIndex app.php\n\n<IfModule mod_rewrite.c>\n    RewriteEngine On\n\n    # Determine the RewriteBase automatically and set it as environment variable.\n    # If you are using Apache aliases to do mass virtual hosting or installed the\n    # project in a subdirectory, the base path will be prepended to allow proper\n    # resolution of the app.php file and to redirect to the correct URI. It will\n    # work in environments without path prefix as well, providing a safe, one-size\n    # fits all solution. But as you do not need it in this case, you can comment\n    # the following 2 lines to eliminate the overhead.\n    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\\2$\n    RewriteRule ^(.*) - [E=BASE:%1]\n\n    # Redirect to URI without front controller to prevent duplicate content\n    # (with and without `/app.php`). Only do this redirect on the initial\n    # rewrite by Apache and not on subsequent cycles. Otherwise we would get an\n    # endless redirect loop (request -> rewrite to front controller ->\n    # redirect -> request -> ...).\n    # So in case you get a \"too many redirects\" error or you always get redirected\n    # to the start page because your Apache does not expose the REDIRECT_STATUS\n    # environment variable, you have 2 choices:\n    # - disable this feature by commenting the following 2 lines or\n    # - use Apache >= 2.3.9 and replace all L flags by END flags and remove the\n    #   following RewriteCond (best solution)\n    RewriteCond %{ENV:REDIRECT_STATUS} ^$\n    RewriteRule ^app\\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]\n\n    # If the requested filename exists, simply serve it.\n    # We only want to let Apache serve files and not directories.\n    RewriteCond %{REQUEST_FILENAME} -f\n    RewriteRule .? - [L]\n\n    # Rewrite all other queries to the front controller.\n    RewriteRule .? %{ENV:BASE}/app.php [L]\n</IfModule>\n\n<IfModule !mod_rewrite.c>\n    <IfModule mod_alias.c>\n        # When mod_rewrite is not available, we instruct a temporary redirect of\n        # the start page to the front controller explicitly so that the website\n        # and the generated links can still be used.\n        RedirectMatch 302 ^/$ /app.php/\n        # RedirectTemp cannot be used instead\n    </IfModule>\n</IfModule>\n"
  },
  {
    "path": "web/app.php",
    "content": "<?php\n\n// This is the front controller used when executing the application in the\n// production environment ('prod'). See\n//\n//   * http://symfony.com/doc/current/cookbook/configuration/front_controllers_and_kernel.html\n//   * http://symfony.com/doc/current/cookbook/configuration/environments.html\n\nuse Symfony\\Component\\HttpFoundation\\Request;\n\n/**\n * @var Composer\\Autoload\\ClassLoader\n */\n$loader = require __DIR__.'/../app/autoload.php';\ninclude_once __DIR__.'/../app/bootstrap.php.cache';\n\n// If your web server provides APC support for PHP applications, uncomment these\n// lines to use APC for class autoloading. This can improve application performance\n// very significantly. See http://symfony.com/doc/current/components/class_loader/cache_class_loader.html#apcclassloader\n//\n// NOTE: The first argument of ApcClassLoader() is the prefix used to prevent\n// cache key conflicts. In a real Symfony application, make sure to change\n// it to a value that it's unique in the web server. A common practice is to use\n// the domain name associated to the Symfony application (e.g. 'example_com').\n//\n// $apcLoader = new Symfony\\Component\\ClassLoader\\ApcClassLoader(sha1(__FILE__), $loader);\n// $loader->unregister();\n// $apcLoader->register(true);\n\n$kernel = new AppKernel('prod', false);\n$kernel->loadClassCache();\n\n// If you use HTTP Cache to improve application performance, uncomment the following lines:\n// See http://symfony.com/doc/current/book/http_cache.html#symfony-reverse-proxy\n//\n// $kernel = new AppCache($kernel);\n\n// If you use HTTP Cache and your application relies on the _method request parameter\n// to get the intended HTTP method, uncomment this line.\n// See http://symfony.com/doc/current/reference/configuration/framework.html#http-method-override\n// Request::enableHttpMethodParameterOverride();\n\n$request = Request::createFromGlobals();\n$response = $kernel->handle($request);\n$response->send();\n\n$kernel->terminate($request, $response);\n"
  },
  {
    "path": "web/app_dev.php",
    "content": "<?php\n\n// This is the front controller used when executing the application in the\n// development environment ('dev'). See\n//\n//   * http://symfony.com/doc/current/cookbook/configuration/front_controllers_and_kernel.html\n//   * http://symfony.com/doc/current/cookbook/configuration/environments.html\n\nuse Symfony\\Component\\HttpFoundation\\Request;\nuse Symfony\\Component\\Debug\\Debug;\n\n// If you don't want to setup permissions the proper way, just uncomment the\n// following PHP line. See:\n// http://symfony.com/doc/current/book/installation.html#configuration-and-setup for more information\n//umask(0000);\n\n// This check prevents access to debug front controllers that are deployed by\n// accident to production servers. Feel free to remove this, extend it, or make\n// something more sophisticated.\n/*if (isset($_SERVER['HTTP_CLIENT_IP'])\n    || isset($_SERVER['HTTP_X_FORWARDED_FOR'])\n    || !(in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', 'fe80::1', '::1')) || php_sapi_name() === 'cli-server')\n) {\n    header('HTTP/1.0 403 Forbidden');\n    exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');\n}*/\n\n/**\n * @var Composer\\Autoload\\ClassLoader $loader\n */\n$loader = require __DIR__.'/../app/autoload.php';\nDebug::enable();\n\n$kernel = new AppKernel('dev', true);\n$kernel->loadClassCache();\n$request = Request::createFromGlobals();\n$response = $kernel->handle($request);\n$response->send();\n$kernel->terminate($request, $response);\n"
  },
  {
    "path": "web/config.php",
    "content": "<?php\n\n/*\n * ************** CAUTION **************\n *\n * DO NOT EDIT THIS FILE as it will be overridden by Composer as part of\n * the installation/update process. The original file resides in the\n * SensioDistributionBundle.\n *\n * ************** CAUTION **************\n */\n\nif (!isset($_SERVER['HTTP_HOST'])) {\n    exit('This script cannot be run from the CLI. Run it from a browser.');\n}\n\nif (!in_array(@$_SERVER['REMOTE_ADDR'], array(\n    '127.0.0.1',\n    '::1',\n))) {\n    header('HTTP/1.0 403 Forbidden');\n    exit('This script is only accessible from localhost.');\n}\n\nrequire_once dirname(__FILE__).'/../app/SymfonyRequirements.php';\n\n$symfonyRequirements = new SymfonyRequirements();\n\n$majorProblems = $symfonyRequirements->getFailedRequirements();\n$minorProblems = $symfonyRequirements->getFailedRecommendations();\n\n?>\n<!DOCTYPE html>\n<html>\n    <head>\n        <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n        <meta name=\"robots\" content=\"noindex,nofollow\" />\n        <title>Symfony Configuration Checker</title>\n        <link rel=\"stylesheet\" href=\"bundles/framework/css/structure.css\" media=\"all\" />\n        <link rel=\"stylesheet\" href=\"bundles/framework/css/body.css\" media=\"all\" />\n        <style type=\"text/css\">\n            /* styles copied from bundles/sensiodistribution/webconfigurator/css/install.css */\n            body {\n                font-size: 14px;\n                font-family: \"Lucida Sans Unicode\", \"Lucida Grande\", Verdana, Arial, Helvetica, sans-serif;\n            }\n            .sf-reset h1.title {\n                font-size: 45px;\n                padding-bottom: 30px;\n            }\n            .sf-reset h2 {\n                font-weight: bold;\n                color: #FFFFFF;\n                /* Font is reset to sans-serif (like body) */\n                font-family: \"Lucida Sans Unicode\", \"Lucida Grande\", Verdana, Arial, Helvetica, sans-serif;\n                margin-bottom: 10px;\n                background-color: #aacd4e;\n                padding: 2px 4px;\n                display: inline-block;\n                text-transform: uppercase;\n            }\n            .sf-reset ul a,\n            .sf-reset ul a:hover {\n                background: url(../images/blue-arrow.png) no-repeat right 6px;\n                padding-right: 10px;\n            }\n            .sf-reset ul, ol {\n                padding-left: 20px;\n            }\n            .sf-reset li {\n                padding-bottom: 18px;\n            }\n            .sf-reset ol li {\n                list-style-type: decimal;\n            }\n            .sf-reset ul li {\n                list-style-type: none;\n            }\n            .sf-reset .symfony-blocks-install {\n                overflow: hidden;\n            }\n            .sf-reset .symfony-install-continue {\n                font-size: 0.95em;\n                padding-left: 0;\n            }\n            .sf-reset .symfony-install-continue li {\n                padding-bottom: 10px;\n            }\n            .sf-reset .ok {\n                color: #fff;\n                font-family: \"Lucida Sans Unicode\", \"Lucida Grande\", Verdana, Arial, Helvetica, sans-serif;\n                background-color: #6d6;\n                padding: 10px;\n                margin-bottom: 20px;\n            }\n            .sf-reset .ko {\n                background-color: #d66;\n            }\n            .version {\n                text-align: right;\n                font-size: 10px;\n                margin-right: 20px;\n            }\n            .sf-reset a,\n            .sf-reset li a {\n                color: #08C;\n                text-decoration: none;\n            }\n            .sf-reset a:hover,\n            .sf-reset li a:hover {\n                color: #08C;\n                text-decoration: underline;\n            }\n            .sf-reset textarea {\n                padding: 7px;\n            }\n        </style>\n    </head>\n    <body>\n        <div id=\"content\">\n            <div class=\"header clear-fix\">\n                <div class=\"header-logo\">\n                    <img src=\"bundles/framework/images/logo_symfony.png\" alt=\"Symfony\" />\n                </div>\n\n                <div class=\"search\">\n                  <form method=\"get\" action=\"http://symfony.com/search\">\n                    <div class=\"form-row\">\n\n                      <label for=\"search-id\">\n                          <img src=\"bundles/framework/images/grey_magnifier.png\" alt=\"Search on Symfony website\" />\n                      </label>\n\n                      <input name=\"q\" id=\"search-id\" type=\"search\" placeholder=\"Search on Symfony website\" />\n\n                      <button type=\"submit\" class=\"sf-button\">\n                          <span class=\"border-l\">\n                            <span class=\"border-r\">\n                                <span class=\"btn-bg\">OK</span>\n                            </span>\n                        </span>\n                      </button>\n                    </div>\n                   </form>\n                </div>\n            </div>\n\n            <div class=\"sf-reset\">\n                <div class=\"block\">\n                    <div class=\"symfony-block-content\">\n                        <h1 class=\"title\">Configuration Checker</h1>\n                        <p>\n                            This script analyzes your system to check whether is\n                            ready to run Symfony applications.\n                        </p>\n\n                        <?php if (count($majorProblems)): ?>\n                            <h2 class=\"ko\">Major problems</h2>\n                            <p>Major problems have been detected and <strong>must</strong> be fixed before continuing:</p>\n                            <ol>\n                                <?php foreach ($majorProblems as $problem): ?>\n                                    <li><?php echo $problem->getHelpHtml() ?></li>\n                                <?php endforeach; ?>\n                            </ol>\n                        <?php endif; ?>\n\n                        <?php if (count($minorProblems)): ?>\n                            <h2>Recommendations</h2>\n                            <p>\n                                <?php if (count($majorProblems)): ?>Additionally, to<?php else: ?>To<?php endif; ?> enhance your Symfony experience,\n                                it’s recommended that you fix the following:\n                            </p>\n                            <ol>\n                                <?php foreach ($minorProblems as $problem): ?>\n                                    <li><?php echo $problem->getHelpHtml() ?></li>\n                                <?php endforeach; ?>\n                            </ol>\n                        <?php endif; ?>\n\n                        <?php if ($symfonyRequirements->hasPhpIniConfigIssue()): ?>\n                            <p id=\"phpini\">*\n                                <?php if ($symfonyRequirements->getPhpIniConfigPath()): ?>\n                                    Changes to the <strong>php.ini</strong> file must be done in \"<strong><?php echo $symfonyRequirements->getPhpIniConfigPath() ?></strong>\".\n                                <?php else: ?>\n                                    To change settings, create a \"<strong>php.ini</strong>\".\n                                <?php endif; ?>\n                            </p>\n                        <?php endif; ?>\n\n                        <?php if (!count($majorProblems) && !count($minorProblems)): ?>\n                            <p class=\"ok\">All checks passed successfully. Your system is ready to run Symfony applications.</p>\n                        <?php endif; ?>\n\n                        <ul class=\"symfony-install-continue\">\n                            <?php if (count($majorProblems) || count($minorProblems)): ?>\n                                <li><a href=\"config.php\">Re-check configuration</a></li>\n                            <?php endif; ?>\n                        </ul>\n                    </div>\n                </div>\n            </div>\n            <div class=\"version\">Symfony Standard Edition</div>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "web/css/api.css",
    "content": "h1.title {\n    font-size: 45px;\n    padding-bottom: 30px;\n}\n.sf-reset a,\n.sf-reset li a {\n    color: #08C;\n    text-decoration: none;\n}\n.sf-reset a:hover,\n.sf-reset li a:hover {\n    color: #08C;\n    text-decoration: underline;\n}\n.control-label {\n    display: inline-block;\n    max-width: 100%;\n    margin-bottom: 5px;\n    font-weight: bold;\n}\n.form-control {\n    display: block;\n    width: 100%;\n    height: 35px;\n    padding: 10px 15px;\n    font-size: 15px;\n    line-height: 1.42857;\n    color: #2c3e50;\n    background-color: #fff;\n    background-image: none;\n    border: 1px solid #dce4ec;\n    border-radius: 4px;\n    -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n    box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n    -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n    -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n    transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n}\n\n.form-group textarea {\n    height: 170px;\n}\n\n.form-group.has-error .control-label {\n    color: #e74c3c;\n}\n\n.form-group.has-error .form-control {\n    border-color: #e74c3c;\n}\n\n.form-group.has-error span.help-block {\n    color: #FF0000;\n}\n\n.custom-form > input {\n    margin-top: 15px;\n}\n\n.main-content .content-label {\n    font-weight: 700;\n    font-size: 17px;\n    color: #2F4F4F;\n}\n\n.main-content .content-title {\n    color: rgb(44, 62, 80);\n    font: normal normal normal normal 39px / 42.9px Lato, 'Helvetica Neue', Helvetica, Arial, sans-serif;\n}\n\n.comment-content {\n    margin-top: 555px;\n}\n\nhr {\n    border: 0;\n    height: 0;\n    border-top: 1px solid rgba(0, 0, 0, 0.1);\n    border-bottom: 1px solid rgba(255, 255, 255, 0.3);\n}"
  },
  {
    "path": "web/css/app.css",
    "content": ".navbar{border-width:0}.navbar-default .badge{background-color:#fff;color:#2c3e50}.navbar-inverse .badge{background-color:#fff;color:#18bc9c}.navbar-brand{line-height:1}.btn:active{-webkit-box-shadow:none;box-shadow:none}.btn-group.open .dropdown-toggle{-webkit-box-shadow:none;box-shadow:none}.text-primary,.text-primary:hover{color:#2c3e50}.text-success,.text-success:hover{color:#18bc9c}.text-danger,.text-danger:hover{color:#e74c3c}.text-warning,.text-warning:hover{color:#f39c12}.text-info,.text-info:hover{color:#3498db}table a:not(.btn),.table a:not(.btn){text-decoration:underline}table .dropdown-menu a,.table .dropdown-menu a{text-decoration:none}table .success,.table .success,table .warning,.table .warning,table .danger,.table .danger,table .info,.table .info{color:#fff}table .success > th > a,.table .success > th > a,table .warning > th > a,.table .warning > th > a,table .danger > th > a,.table .danger > th > a,table .info > th > a,.table .info > th > a,table .success > td > a,.table .success > td > a,table .warning > td > a,.table .warning > td > a,table .danger > td > a,.table .danger > td > a,table .info > td > a,.table .info > td > a,table .success > a,.table .success > a,table .warning > a,.table .warning > a,table .danger > a,.table .danger > a,table .info > a,.table .info > a{color:#fff}table > thead > tr > th,.table > thead > tr > th,table > tbody > tr > th,.table > tbody > tr > th,table > tfoot > tr > th,.table > tfoot > tr > th,table > thead > tr > td,.table > thead > tr > td,table > tbody > tr > td,.table > tbody > tr > td,table > tfoot > tr > td,.table > tfoot > tr > td{border:none}table-bordered > thead > tr > th,.table-bordered > thead > tr > th,table-bordered > tbody > tr > th,.table-bordered > tbody > tr > th,table-bordered > tfoot > tr > th,.table-bordered > tfoot > tr > th,table-bordered > thead > tr > td,.table-bordered > thead > tr > td,table-bordered > tbody > tr > td,.table-bordered > tbody > tr > td,table-bordered > tfoot > tr > td,.table-bordered > tfoot > tr > td{border:1px solid #ecf0f1}.form-control,input{border-width:2px;-webkit-box-shadow:none;box-shadow:none}.form-control:focus,input:focus{-webkit-box-shadow:none;box-shadow:none}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning .form-control-feedback{color:#f39c12}.has-warning .form-control,.has-warning .form-control:focus{border:2px solid #f39c12}.has-warning .input-group-addon{border-color:#f39c12}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error .form-control-feedback{color:#e74c3c}.has-error .form-control,.has-error .form-control:focus{border:2px solid #e74c3c}.has-error .input-group-addon{border-color:#e74c3c}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success .form-control-feedback{color:#18bc9c}.has-success .form-control,.has-success .form-control:focus{border:2px solid #18bc9c}.has-success .input-group-addon{border-color:#18bc9c}.nav .open > a,.nav .open > a:hover,.nav .open > a:focus{border-color:transparent}.pager a,.pager a:hover{color:#fff}.pager .disabled > a,.pager .disabled > a:hover,.pager .disabled > a:focus,.pager .disabled > span{background-color:#3be6c4}.close{color:#fff;text-decoration:none;opacity:0.4}.close:hover,.close:focus{color:#fff;opacity:1}.alert .alert-link{color:#fff;text-decoration:underline}.progress{height:10px;-webkit-box-shadow:none;box-shadow:none}.progress .progress-bar{font-size:10px;line-height:10px}.well{-webkit-box-shadow:none;box-shadow:none}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{border-color:#ecf0f1}a.list-group-item-success.active{background-color:#18bc9c}a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{background-color:#15a589}a.list-group-item-warning.active{background-color:#f39c12}a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{background-color:#e08e0b}a.list-group-item-danger.active{background-color:#e74c3c}a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{background-color:#e43725}.panel-default .close{color:#2c3e50}.modal .close{color:#2c3e50}.popover{color:#2c3e50}/* normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,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-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}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:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}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{border:0;padding:0}input{line-height:normal}input[type=\"checkbox\"],input[type=\"radio\"]{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-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}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/* Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;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) \")\"}a[href^=\"#\"]:after,a[href^=\"javascript:\"]: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}.btn > .caret,.dropup > .btn > .caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*{-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:\"Lato\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;font-size:15px;line-height:1.42857;color:#2c3e50;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#18bc9c;text-decoration:none}a:hover,a:focus{color:#18bc9c;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{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857;background-color:#fff;border:1px solid #ecf0f1;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:21px;margin-bottom:21px;border:0;border-top:1px solid #ecf0f1}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;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}[role=\"button\"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:\"Lato\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;font-weight:400;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:#b4bcc2}h1,.h1,h2,.h2,h3,.h3{margin-top:21px;margin-bottom:10.5px}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:10.5px;margin-bottom:10.5px}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:39px}h2,.h2{font-size:32px}h3,.h3{font-size:26px}h4,.h4{font-size:19px}h5,.h5{font-size:15px}h6,.h6{font-size:13px}p{margin:0 0 10.5px}.lead{margin-bottom:21px;font-size:17px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:22.5px}}small,.small{font-size:86%}mark,.mark{background-color:#f39c12;padding:0.2em}.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,.initialism{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#b4bcc2}.text-primary{color:#2c3e50}a.text-primary:hover{color:#1a252f}.text-success{color:#fff}a.text-success:hover{color:#e6e6e6}.text-info{color:#fff}a.text-info:hover{color:#e6e6e6}.text-warning{color:#fff}a.text-warning:hover{color:#e6e6e6}.text-danger{color:#fff}a.text-danger:hover{color:#e6e6e6}.bg-primary{color:#fff}.bg-primary{background-color:#2c3e50}a.bg-primary:hover{background-color:#1a252f}.bg-success{background-color:#18bc9c}a.bg-success:hover{background-color:#128f76}.bg-info{background-color:#3498db}a.bg-info:hover{background-color:#217dbb}.bg-warning{background-color:#f39c12}a.bg-warning:hover{background-color:#c87f0a}.bg-danger{background-color:#e74c3c}a.bg-danger:hover{background-color:#d62c1a}.page-header{padding-bottom:9.5px;margin:42px 0 21px;border-bottom:1px solid transparent}ul,ol{margin-top:0;margin-bottom:10.5px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline > li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:21px}dt,dd{line-height:1.42857}dt{font-weight:bold}dd{margin-left:0}.dl-horizontal dd:before,.dl-horizontal dd:after{content:\" \";display:table}.dl-horizontal dd:after{clear:both}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #b4bcc2}.initialism{font-size:90%}blockquote{padding:10.5px 21px;margin:0 0 21px;font-size:18.75px;border-left:5px solid #ecf0f1}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.42857;color:#b4bcc2}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\\2014 \\00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #ecf0f1;border-left:0;text-align:right}.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'}address{margin-bottom:21px;font-style:normal;line-height:1.42857}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;box-shadow:inset 0 -1px 0 rgba(0, 0, 0, .25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;box-shadow:none}pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:1.42857;word-break:break-all;word-wrap:break-word;color:#7b8a8b;background-color:#ecf0f1;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{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container:before,.container:after{content:\" \";display:table}.container:after{clear:both}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container-fluid:before,.container-fluid:after{content:\" \";display:table}.container-fluid:after{clear:both}.row{margin-left:-15px;margin-right:-15px}.row:before,.row:after{content:\" \";display:table}.row:after{clear:both}.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-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,.col-xs-12{float:left}.col-xs-1{width:8.33333%}.col-xs-2{width:16.66667%}.col-xs-3{width:25%}.col-xs-4{width:33.33333%}.col-xs-5{width:41.66667%}.col-xs-6{width:50%}.col-xs-7{width:58.33333%}.col-xs-8{width:66.66667%}.col-xs-9{width:75%}.col-xs-10{width:83.33333%}.col-xs-11{width:91.66667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.33333%}.col-xs-pull-2{right:16.66667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.33333%}.col-xs-pull-5{right:41.66667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.33333%}.col-xs-pull-8{right:66.66667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.33333%}.col-xs-pull-11{right:91.66667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.33333%}.col-xs-push-2{left:16.66667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.33333%}.col-xs-push-5{left:41.66667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.33333%}.col-xs-push-8{left:66.66667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.33333%}.col-xs-push-11{left:91.66667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0%}.col-xs-offset-1{margin-left:8.33333%}.col-xs-offset-2{margin-left:16.66667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.33333%}.col-xs-offset-5{margin-left:41.66667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.33333%}.col-xs-offset-8{margin-left:66.66667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.33333%}.col-xs-offset-11{margin-left:91.66667%}.col-xs-offset-12{margin-left:100%}@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-1{width:8.33333%}.col-sm-2{width:16.66667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333%}.col-sm-5{width:41.66667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333%}.col-sm-8{width:66.66667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333%}.col-sm-11{width:91.66667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.33333%}.col-sm-pull-2{right:16.66667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333%}.col-sm-pull-5{right:41.66667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333%}.col-sm-pull-8{right:66.66667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333%}.col-sm-pull-11{right:91.66667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.33333%}.col-sm-push-2{left:16.66667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333%}.col-sm-push-5{left:41.66667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333%}.col-sm-push-8{left:66.66667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333%}.col-sm-push-11{left:91.66667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0%}.col-sm-offset-1{margin-left:8.33333%}.col-sm-offset-2{margin-left:16.66667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333%}.col-sm-offset-5{margin-left:41.66667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333%}.col-sm-offset-8{margin-left:66.66667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333%}.col-sm-offset-11{margin-left:91.66667%}.col-sm-offset-12{margin-left:100%}}@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-1{width:8.33333%}.col-md-2{width:16.66667%}.col-md-3{width:25%}.col-md-4{width:33.33333%}.col-md-5{width:41.66667%}.col-md-6{width:50%}.col-md-7{width:58.33333%}.col-md-8{width:66.66667%}.col-md-9{width:75%}.col-md-10{width:83.33333%}.col-md-11{width:91.66667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333%}.col-md-pull-2{right:16.66667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333%}.col-md-pull-5{right:41.66667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333%}.col-md-pull-8{right:66.66667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333%}.col-md-pull-11{right:91.66667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333%}.col-md-push-2{left:16.66667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333%}.col-md-push-5{left:41.66667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333%}.col-md-push-8{left:66.66667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333%}.col-md-push-11{left:91.66667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0%}.col-md-offset-1{margin-left:8.33333%}.col-md-offset-2{margin-left:16.66667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333%}.col-md-offset-5{margin-left:41.66667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333%}.col-md-offset-8{margin-left:66.66667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333%}.col-md-offset-11{margin-left:91.66667%}.col-md-offset-12{margin-left:100%}}@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-1{width:8.33333%}.col-lg-2{width:16.66667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333%}.col-lg-5{width:41.66667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333%}.col-lg-8{width:66.66667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333%}.col-lg-11{width:91.66667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333%}.col-lg-pull-2{right:16.66667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333%}.col-lg-pull-5{right:41.66667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333%}.col-lg-pull-8{right:66.66667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333%}.col-lg-pull-11{right:91.66667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333%}.col-lg-push-2{left:16.66667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333%}.col-lg-push-5{left:41.66667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333%}.col-lg-push-8{left:66.66667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333%}.col-lg-push-11{left:91.66667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0%}.col-lg-offset-1{margin-left:8.33333%}.col-lg-offset-2{margin-left:16.66667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333%}.col-lg-offset-5{margin-left:41.66667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333%}.col-lg-offset-8{margin-left:66.66667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333%}.col-lg-offset-11{margin-left:91.66667%}.col-lg-offset-12{margin-left:100%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#b4bcc2;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:21px}.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.42857;vertical-align:top;border-top:1px solid #ecf0f1}.table > thead > tr > th{vertical-align:bottom;border-bottom:2px solid #ecf0f1}.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 #ecf0f1}.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 #ecf0f1}.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 #ecf0f1}.table-bordered > thead > tr > th,.table-bordered > thead > tr > td{border-bottom-width:2px}.table-striped > tbody > tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover > tbody > tr:hover{background-color:#ecf0f1}table col[class*=\"col-\"]{position:static;float:none;display:table-column}table td[class*=\"col-\"],table th[class*=\"col-\"]{position:static;float:none;display:table-cell}.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:#ecf0f1}.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:#dde4e6}.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:#18bc9c}.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:#15a589}.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:#3498db}.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:#258cd1}.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:#f39c12}.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:#e08e0b}.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:#e74c3c}.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:#e43725}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ecf0f1}.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{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:22.5px;line-height:inherit;color:#2c3e50;border:0;border-bottom:1px solid transparent}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:11px;font-size:15px;line-height:1.42857;color:#2c3e50}.form-control{display:block;width:100%;height:43px;padding:10px 15px;font-size:15px;line-height:1.42857;color:#2c3e50;background-color:#fff;background-image:none;border:1px solid #dce4ec;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 0.15s, box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s}.form-control:focus{border-color:#2c3e50;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(44, 62, 80, .6);box-shadow:inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(44, 62, 80, .6)}.form-control::-moz-placeholder{color:#acb6c0;opacity:1}.form-control:-ms-input-placeholder{color:#acb6c0}.form-control::-webkit-input-placeholder{color:#acb6c0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#ecf0f1;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=\"search\"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=\"date\"],input[type=\"time\"],input[type=\"datetime-local\"],input[type=\"month\"]{line-height:43px}input[type=\"date\"].input-sm,.input-group-sm > input.form-control[type=\"date\"],.input-group-sm > input.input-group-addon[type=\"date\"],.input-group-sm > .input-group-btn > input.btn[type=\"date\"],input[type=\"time\"].input-sm,.input-group-sm > input.form-control[type=\"time\"],.input-group-sm > input.input-group-addon[type=\"time\"],.input-group-sm > .input-group-btn > input.btn[type=\"time\"],input[type=\"datetime-local\"].input-sm,.input-group-sm > input.form-control[type=\"datetime-local\"],.input-group-sm > input.input-group-addon[type=\"datetime-local\"],.input-group-sm > .input-group-btn > input.btn[type=\"datetime-local\"],input[type=\"month\"].input-sm,.input-group-sm > input.form-control[type=\"month\"],.input-group-sm > input.input-group-addon[type=\"month\"],.input-group-sm > .input-group-btn > input.btn[type=\"month\"],.input-group-sm input[type=\"date\"],.input-group-sm input[type=\"time\"],.input-group-sm input[type=\"datetime-local\"],.input-group-sm input[type=\"month\"]{line-height:33px}input[type=\"date\"].input-lg,.input-group-lg > input.form-control[type=\"date\"],.input-group-lg > input.input-group-addon[type=\"date\"],.input-group-lg > .input-group-btn > input.btn[type=\"date\"],input[type=\"time\"].input-lg,.input-group-lg > input.form-control[type=\"time\"],.input-group-lg > input.input-group-addon[type=\"time\"],.input-group-lg > .input-group-btn > input.btn[type=\"time\"],input[type=\"datetime-local\"].input-lg,.input-group-lg > input.form-control[type=\"datetime-local\"],.input-group-lg > input.input-group-addon[type=\"datetime-local\"],.input-group-lg > .input-group-btn > input.btn[type=\"datetime-local\"],input[type=\"month\"].input-lg,.input-group-lg > input.form-control[type=\"month\"],.input-group-lg > input.input-group-addon[type=\"month\"],.input-group-lg > .input-group-btn > input.btn[type=\"month\"],.input-group-lg input[type=\"date\"],.input-group-lg input[type=\"time\"],.input-group-lg input[type=\"datetime-local\"],.input-group-lg input[type=\"month\"]{line-height:64px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:21px;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-left:-20px;margin-top:4px \\9}.radio + .radio,.checkbox + .checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;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:11px;padding-bottom:11px;margin-bottom:0;min-height:36px}.form-control-static.input-lg,.input-group-lg > .form-control.form-control-static,.input-group-lg > .input-group-addon.form-control-static,.input-group-lg > .input-group-btn > .btn.form-control-static,.form-control-static.input-sm,.input-group-sm > .form-control.form-control-static,.input-group-sm > .input-group-addon.form-control-static,.input-group-sm > .input-group-btn > .btn.form-control-static{padding-left:0;padding-right:0}.input-sm,.input-group-sm > .form-control,.input-group-sm > .input-group-addon,.input-group-sm > .input-group-btn > .btn{height:33px;padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}select.input-sm,.input-group-sm > select.form-control,.input-group-sm > select.input-group-addon,.input-group-sm > .input-group-btn > select.btn{height:33px;line-height:33px}textarea.input-sm,.input-group-sm > textarea.form-control,.input-group-sm > textarea.input-group-addon,.input-group-sm > .input-group-btn > textarea.btn,select[multiple].input-sm,.input-group-sm > select.form-control[multiple],.input-group-sm > select.input-group-addon[multiple],.input-group-sm > .input-group-btn > select.btn[multiple]{height:auto}.form-group-sm .form-control{height:33px;padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:33px;line-height:33px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:33px;padding:6px 9px;font-size:13px;line-height:1.5;min-height:34px}.input-lg,.input-group-lg > .form-control,.input-group-lg > .input-group-addon,.input-group-lg > .input-group-btn > .btn{height:64px;padding:18px 27px;font-size:19px;line-height:1.33333;border-radius:6px}select.input-lg,.input-group-lg > select.form-control,.input-group-lg > select.input-group-addon,.input-group-lg > .input-group-btn > select.btn{height:64px;line-height:64px}textarea.input-lg,.input-group-lg > textarea.form-control,.input-group-lg > textarea.input-group-addon,.input-group-lg > .input-group-btn > textarea.btn,select[multiple].input-lg,.input-group-lg > select.form-control[multiple],.input-group-lg > select.input-group-addon[multiple],.input-group-lg > .input-group-btn > select.btn[multiple]{height:auto}.form-group-lg .form-control{height:64px;padding:18px 27px;font-size:19px;line-height:1.33333;border-radius:6px}.form-group-lg select.form-control{height:64px;line-height:64px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:64px;padding:18px 27px;font-size:19px;line-height:1.33333;min-height:40px}.has-feedback{position:relative}.has-feedback .form-control{padding-right:53.75px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:43px;height:43px;line-height:43px;text-align:center;pointer-events:none}.input-lg + .form-control-feedback,.input-group-lg > .form-control + .form-control-feedback,.input-group-lg > .input-group-addon + .form-control-feedback,.input-group-lg > .input-group-btn > .btn + .form-control-feedback{width:64px;height:64px;line-height:64px}.input-sm + .form-control-feedback,.input-group-sm > .form-control + .form-control-feedback,.input-group-sm > .input-group-addon + .form-control-feedback,.input-group-sm > .input-group-btn > .btn + .form-control-feedback{width:33px;height:33px;line-height:33px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#fff}.has-success .form-control{border-color:#fff;-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:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #fff}.has-success .input-group-addon{color:#fff;border-color:#fff;background-color:#18bc9c}.has-success .form-control-feedback{color:#fff}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#fff}.has-warning .form-control{border-color:#fff;-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:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #fff}.has-warning .input-group-addon{color:#fff;border-color:#fff;background-color:#f39c12}.has-warning .form-control-feedback{color:#fff}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#fff}.has-error .form-control{border-color:#fff;-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:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #fff}.has-error .input-group-addon{color:#fff;border-color:#fff;background-color:#e74c3c}.has-error .form-control-feedback{color:#fff}.has-feedback label ~ .form-control-feedback{top:26px}.has-feedback label.sr-only ~ .form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#597ea2}@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 .form-control-static{display:inline-block}.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{margin-top:0;margin-bottom:0;padding-top:11px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:32px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{content:\" \";display:table}.form-horizontal .form-group:after{clear:both}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:11px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:25px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:7px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:10px 15px;font-size:15px;line-height:1.42857;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.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,.btn.focus{color:#fff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-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{cursor:not-allowed;pointer-events:none;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#fff;background-color:#95a5a6;border-color:#95a5a6}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open > .btn-default.dropdown-toggle{color:#fff;background-color:#798d8f;border-color:#74898a}.btn-default:active,.btn-default.active,.open > .btn-default.dropdown-toggle{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.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:#95a5a6;border-color:#95a5a6}.btn-default .badge{color:#95a5a6;background-color:#fff}.btn-primary{color:#fff;background-color:#2c3e50;border-color:#2c3e50}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open > .btn-primary.dropdown-toggle{color:#fff;background-color:#1a252f;border-color:#161f29}.btn-primary:active,.btn-primary.active,.open > .btn-primary.dropdown-toggle{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.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:#2c3e50;border-color:#2c3e50}.btn-primary .badge{color:#2c3e50;background-color:#fff}.btn-success{color:#fff;background-color:#18bc9c;border-color:#18bc9c}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open > .btn-success.dropdown-toggle{color:#fff;background-color:#128f76;border-color:#11866f}.btn-success:active,.btn-success.active,.open > .btn-success.dropdown-toggle{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.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:#18bc9c;border-color:#18bc9c}.btn-success .badge{color:#18bc9c;background-color:#fff}.btn-info{color:#fff;background-color:#3498db;border-color:#3498db}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open > .btn-info.dropdown-toggle{color:#fff;background-color:#217dbb;border-color:#2077b2}.btn-info:active,.btn-info.active,.open > .btn-info.dropdown-toggle{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.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:#3498db;border-color:#3498db}.btn-info .badge{color:#3498db;background-color:#fff}.btn-warning{color:#fff;background-color:#f39c12;border-color:#f39c12}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open > .btn-warning.dropdown-toggle{color:#fff;background-color:#c87f0a;border-color:#be780a}.btn-warning:active,.btn-warning.active,.open > .btn-warning.dropdown-toggle{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.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:#f39c12;border-color:#f39c12}.btn-warning .badge{color:#f39c12;background-color:#fff}.btn-danger{color:#fff;background-color:#e74c3c;border-color:#e74c3c}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open > .btn-danger.dropdown-toggle{color:#fff;background-color:#d62c1a;border-color:#cd2a19}.btn-danger:active,.btn-danger.active,.open > .btn-danger.dropdown-toggle{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.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:#e74c3c;border-color:#e74c3c}.btn-danger .badge{color:#e74c3c;background-color:#fff}.btn-link{color:#18bc9c;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.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:#18bc9c;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:#b4bcc2;text-decoration:none}.btn-lg,.btn-group-lg > .btn{padding:18px 27px;font-size:19px;line-height:1.33333;border-radius:6px}.btn-sm,.btn-group-sm > .btn{padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs > .btn{padding:1px 5px;font-size:13px;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 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.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-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.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:15px;text-align:left;background-color:#fff;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);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu > li > a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857;color:#7b8a8b;white-space:nowrap}.dropdown-menu > li > a:hover,.dropdown-menu > li > a:focus{text-decoration:none;color:#fff;background-color:#2c3e50}.dropdown-menu > .active > a,.dropdown-menu > .active > a:hover,.dropdown-menu > .active > a:focus{color:#fff;text-decoration:none;outline:0;background-color:#2c3e50}.dropdown-menu > .disabled > a,.dropdown-menu > .disabled > a:hover,.dropdown-menu > .disabled > a:focus{color:#b4bcc2}.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}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:13px;line-height:1.42857;color:#b4bcc2;white-space:nowrap}.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;border-bottom:4px solid;content:\"\"}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{left:0;right:auto}}.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 + .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:before,.btn-toolbar:after{content:\" \";display:table}.btn-toolbar:after{clear:both}.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-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:left}.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn{border-radius:0}.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group > .btn-group:last-child:not(:first-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 > .btn + .dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group > .btn-lg + .dropdown-toggle,.btn-group > .btn-group-lg > .btn + .dropdown-toggle,.btn-group-lg > .btn-group > .btn + .dropdown-toggle{padding-left:12px;padding-right: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,.btn-group-lg > .btn .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret,.dropup .btn-group-lg > .btn .caret,.btn-group-lg > .dropup .btn .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: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:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical > .btn:last-child:not(:first-child){border-bottom-left-radius:4px;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: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-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,.btn-group-justified > .btn-group{float:none;display:table-cell;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-group > .btn input[type=\"radio\"],[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=\"col-\"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.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:10px 15px;font-size:15px;font-weight:normal;line-height:1;color:#2c3e50;text-align:center;background-color:#ecf0f1;border:1px solid #dce4ec;border-radius:4px}.input-group-addon.input-sm,.input-group-sm > .form-control.input-group-addon,.input-group-sm > .input-group-addon.input-group-addon,.input-group-sm > .input-group-btn > .btn.input-group-addon{padding:6px 9px;font-size:13px;border-radius:3px}.input-group-addon.input-lg,.input-group-lg > .form-control.input-group-addon,.input-group-lg > .input-group-addon.input-group-addon,.input-group-lg > .input-group-btn > .btn.input-group-addon{padding:18px 27px;font-size:19px;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-bottom-right-radius:0;border-top-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-bottom-left-radius:0;border-top-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{margin-bottom:0;padding-left:0;list-style:none}.nav:before,.nav:after{content:\" \";display:table}.nav:after{clear:both}.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:#ecf0f1}.nav > li.disabled > a{color:#b4bcc2}.nav > li.disabled > a:hover,.nav > li.disabled > a:focus{color:#b4bcc2;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open > a,.nav .open > a:hover,.nav .open > a:focus{background-color:#ecf0f1;border-color:#18bc9c}.nav .nav-divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.nav > li > a > img{max-width:none}.nav-tabs{border-bottom:1px solid #ecf0f1}.nav-tabs > li{float:left;margin-bottom:-1px}.nav-tabs > li > a{margin-right:2px;line-height:1.42857;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs > li > a:hover{border-color:#ecf0f1 #ecf0f1 #ecf0f1}.nav-tabs > li.active > a,.nav-tabs > li.active > a:hover,.nav-tabs > li.active > a:focus{color:#2c3e50;background-color:#fff;border:1px solid #ecf0f1;border-bottom-color:transparent;cursor:default}.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:#2c3e50}.nav-stacked > li{float:none}.nav-stacked > li + li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified > li,.nav-tabs.nav-justified > li{float:none}.nav-justified > li > a,.nav-tabs.nav-justified > li > a{text-align:center;margin-bottom:5px}.nav-justified > .dropdown .dropdown-menu,.nav-tabs.nav-justified > .dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified > li,.nav-tabs.nav-justified > li{display:table-cell;width:1%}.nav-justified > li > a,.nav-tabs.nav-justified > li > a{margin-bottom:0}}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified > li > a,.nav-tabs.nav-justified > li > a{margin-right:0;border-radius:4px}.nav-tabs-justified > .active > a,.nav-tabs.nav-justified > .active > a,.nav-tabs-justified > .active > a:hover,.nav-tabs.nav-justified > .active > a:hover,.nav-tabs-justified > .active > a:focus,.nav-tabs.nav-justified > .active > a:focus{border:1px solid #ecf0f1}@media (min-width:768px){.nav-tabs-justified > li > a,.nav-tabs.nav-justified > li > a{border-bottom:1px solid #ecf0f1;border-radius:4px 4px 0 0}.nav-tabs-justified > .active > a,.nav-tabs.nav-justified > .active > a,.nav-tabs-justified > .active > a:hover,.nav-tabs.nav-justified > .active > a:hover,.nav-tabs-justified > .active > a:focus,.nav-tabs.nav-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-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:60px;margin-bottom:21px;border:1px solid transparent}.navbar:before,.navbar:after{content:\" \";display:table}.navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{content:\" \";display:table}.navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255, 255, 255, .1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{content:\" \";display:table}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;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-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-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:768px){.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:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.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;padding:19.5px 15px;font-size:19px;line-height:21px;height:60px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand > img{display:block}@media (min-width:768px){.navbar > .container .navbar-brand,.navbar > .container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:13px;margin-bottom:13px;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:768px){.navbar-toggle{display:none}}.navbar-nav{margin:9.75px -15px}.navbar-nav > li > a{padding-top:10px;padding-bottom:10px;line-height:21px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;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:21px}.navbar-nav .open .dropdown-menu > li > a:hover,.navbar-nav .open .dropdown-menu > li > a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav > li{float:left}.navbar-nav > li > a{padding-top:19.5px;padding-bottom:19.5px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 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);margin-top:8.5px;margin-bottom:8.5px}@media (min-width:768px){.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 .form-control-static{display:inline-block}.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:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav > li > .dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8.5px;margin-bottom:8.5px}.navbar-btn.btn-sm,.btn-group-sm > .btn.navbar-btn{margin-top:13.5px;margin-bottom:13.5px}.navbar-btn.btn-xs,.btn-group-xs > .btn.navbar-btn{margin-top:19px;margin-bottom:19px}.navbar-text{margin-top:19.5px;margin-bottom:19.5px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right ~ .navbar-right{margin-right:0}}.navbar-default{background-color:#2c3e50;border-color:transparent}.navbar-default .navbar-brand{color:#fff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#18bc9c;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav > li > a{color:#fff}.navbar-default .navbar-nav > li > a:hover,.navbar-default .navbar-nav > li > a:focus{color:#18bc9c;background-color:transparent}.navbar-default .navbar-nav > .active > a,.navbar-default .navbar-nav > .active > a:hover,.navbar-default .navbar-nav > .active > a:focus{color:#fff;background-color:#1a252f}.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:#1a252f}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#1a252f}.navbar-default .navbar-toggle .icon-bar{background-color:#fff}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:transparent}.navbar-default .navbar-nav > .open > a,.navbar-default .navbar-nav > .open > a:hover,.navbar-default .navbar-nav > .open > a:focus{background-color:#1a252f;color:#fff}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu > li > a{color:#fff}.navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,.navbar-default .navbar-nav .open .dropdown-menu > li > a:focus{color:#18bc9c;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:#fff;background-color:#1a252f}.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:#fff}.navbar-default .navbar-link:hover{color:#18bc9c}.navbar-default .btn-link{color:#fff}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#18bc9c}.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:#18bc9c;border-color:transparent}.navbar-inverse .navbar-brand{color:#fff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#2c3e50;background-color:transparent}.navbar-inverse .navbar-text{color:#fff}.navbar-inverse .navbar-nav > li > a{color:#fff}.navbar-inverse .navbar-nav > li > a:hover,.navbar-inverse .navbar-nav > li > a:focus{color:#2c3e50;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:#15a589}.navbar-inverse .navbar-nav > .disabled > a,.navbar-inverse .navbar-nav > .disabled > a:hover,.navbar-inverse .navbar-nav > .disabled > a:focus{color:#ccc;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#128f76}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#128f76}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#149c82}.navbar-inverse .navbar-nav > .open > a,.navbar-inverse .navbar-nav > .open > a:hover,.navbar-inverse .navbar-nav > .open > a:focus{background-color:#15a589;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header{border-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu > li > a{color:#fff}.navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus{color:#2c3e50;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus{color:#fff;background-color:#15a589}.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus{color:#ccc;background-color:transparent}}.navbar-inverse .navbar-link{color:#fff}.navbar-inverse .navbar-link:hover{color:#2c3e50}.navbar-inverse .btn-link{color:#fff}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#2c3e50}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#ccc}.breadcrumb{padding:8px 15px;margin-bottom:21px;list-style:none;background-color:#ecf0f1;border-radius:4px}.breadcrumb > li{display:inline-block}.breadcrumb > li + li:before{content:\"/\\00a0\";padding:0 5px;color:#ccc}.breadcrumb > .active{color:#95a5a6}.pagination{display:inline-block;padding-left:0;margin:21px 0;border-radius:4px}.pagination > li{display:inline}.pagination > li > a,.pagination > li > span{position:relative;float:left;padding:10px 15px;line-height:1.42857;text-decoration:none;color:#fff;background-color:#18bc9c;border:1px solid transparent;margin-left:-1px}.pagination > li:first-child > a,.pagination > li:first-child > span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination > li:last-child > a,.pagination > li:last-child > span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination > li > a:hover,.pagination > li > span:hover,.pagination > li > a:focus,.pagination > li > span:focus{color:#fff;background-color:#0f7864;border-color:transparent}.pagination > .active > a,.pagination > .active > span,.pagination > .active > a:hover,.pagination > .active > span:hover,.pagination > .active > a:focus,.pagination > .active > span:focus{z-index:2;color:#fff;background-color:#0f7864;border-color:transparent;cursor:default}.pagination > .disabled > span,.pagination > .disabled > span:hover,.pagination > .disabled > span:focus,.pagination > .disabled > a,.pagination > .disabled > a:hover,.pagination > .disabled > a:focus{color:#ecf0f1;background-color:#3be6c4;border-color:transparent;cursor:not-allowed}.pagination-lg > li > a,.pagination-lg > li > span{padding:18px 27px;font-size:19px}.pagination-lg > li:first-child > a,.pagination-lg > li:first-child > span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg > li:last-child > a,.pagination-lg > li:last-child > span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm > li > a,.pagination-sm > li > span{padding:6px 9px;font-size:13px}.pagination-sm > li:first-child > a,.pagination-sm > li:first-child > span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm > li:last-child > a,.pagination-sm > li:last-child > span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:21px 0;list-style:none;text-align:center}.pager:before,.pager:after{content:\" \";display:table}.pager:after{clear:both}.pager li{display:inline}.pager li > a,.pager li > span{display:inline-block;padding:5px 14px;background-color:#18bc9c;border:1px solid transparent;border-radius:15px}.pager li > a:hover,.pager li > a:focus{text-decoration:none;background-color:#0f7864}.pager .next > a,.pager .next > span{float:right}.pager .previous > a,.pager .previous > span{float:left}.pager .disabled > a,.pager .disabled > a:hover,.pager .disabled > a:focus,.pager .disabled > span{color:#fff;background-color:#18bc9c;cursor:not-allowed}.label{display:inline;padding:0.2em 0.6em 0.3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:0.25em}.label:empty{display:none}.btn .label{position:relative;top:-1px}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#95a5a6}.label-default[href]:hover,.label-default[href]:focus{background-color:#798d8f}.label-primary{background-color:#2c3e50}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#1a252f}.label-success{background-color:#18bc9c}.label-success[href]:hover,.label-success[href]:focus{background-color:#128f76}.label-info{background-color:#3498db}.label-info[href]:hover,.label-info[href]:focus{background-color:#217dbb}.label-warning{background-color:#f39c12}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#c87f0a}.label-danger{background-color:#e74c3c}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#d62c1a}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:13px;font-weight:bold;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#2c3e50;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs > .btn .badge{top:0;padding:1px 5px}.list-group-item.active > .badge,.nav-pills > .active > a > .badge{color:#2c3e50;background-color:#fff}.list-group-item > .badge{float:right}.list-group-item > .badge + .badge{margin-right:5px}.nav-pills > li > a > .badge{margin-left:3px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#ecf0f1}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:23px;font-weight:200}.jumbotron > hr{border-top-color:#cfd9db}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:67.5px}}.thumbnail{display:block;padding:4px;margin-bottom:21px;line-height:1.42857;background-color:#fff;border:1px solid #ecf0f1;border-radius:4px;-webkit-transition:border 0.2s ease-in-out;-o-transition:border 0.2s ease-in-out;transition:border 0.2s ease-in-out}.thumbnail > img,.thumbnail a > img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}.thumbnail .caption{padding:9px;color:#2c3e50}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#18bc9c}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert > p,.alert > ul{margin-bottom:0}.alert > p + p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#18bc9c;border-color:#18bc9c;color:#fff}.alert-success hr{border-top-color:#15a589}.alert-success .alert-link{color:#e6e6e6}.alert-info{background-color:#3498db;border-color:#3498db;color:#fff}.alert-info hr{border-top-color:#258cd1}.alert-info .alert-link{color:#e6e6e6}.alert-warning{background-color:#f39c12;border-color:#f39c12;color:#fff}.alert-warning hr{border-top-color:#e08e0b}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{background-color:#e74c3c;border-color:#e74c3c;color:#fff}.alert-danger hr{border-top-color:#e43725}.alert-danger .alert-link{color:#e6e6e6}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:21px;margin-bottom:21px;background-color:#ecf0f1;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, .1);box-shadow:inset 0 1px 2px rgba(0, 0, 0, .1)}.progress-bar{float:left;width:0%;height:100%;font-size:13px;line-height:21px;color:#fff;text-align:center;background-color:#2c3e50;-webkit-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, .15);box-shadow:inset 0 -1px 0 rgba(0, 0, 0, .15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#18bc9c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#3498db}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f39c12}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#e74c3c}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-right,.media > .pull-right{padding-left:10px}.media-left,.media > .pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ecf0f1}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;color:#555;background-color:#ecf0f1}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#ecf0f1;color:#b4bcc2;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#b4bcc2}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#2c3e50;border-color:#2c3e50}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading > small,.list-group-item.active:hover .list-group-item-heading > small,.list-group-item.active:focus .list-group-item-heading > small,.list-group-item.active .list-group-item-heading > .small,.list-group-item.active:hover .list-group-item-heading > .small,.list-group-item.active:focus .list-group-item-heading > .small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#8aa4be}.list-group-item-success{color:#fff;background-color:#18bc9c}a.list-group-item-success{color:#fff}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#fff;background-color:#15a589}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#fff;border-color:#fff}.list-group-item-info{color:#fff;background-color:#3498db}a.list-group-item-info{color:#fff}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#fff;background-color:#258cd1}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#fff;border-color:#fff}.list-group-item-warning{color:#fff;background-color:#f39c12}a.list-group-item-warning{color:#fff}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#fff;background-color:#e08e0b}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#fff;border-color:#fff}.list-group-item-danger{color:#fff;background-color:#e74c3c}a.list-group-item-danger{color:#fff}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#fff;background-color:#e43725}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#fff;border-color:#fff}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:21px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0, 0, 0, .05);box-shadow:0 1px 1px rgba(0, 0, 0, .05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{content:\" \";display:table}.panel-body:after{clear:both}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading > .dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:17px;color:inherit}.panel-title > a,.panel-title > small,.panel-title > .small,.panel-title > small > a,.panel-title > .small > a{color:inherit}.panel-footer{padding:10px 15px;background-color:#ecf0f1;border-top:1px solid #ecf0f1;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel > .list-group,.panel > .panel-collapse > .list-group{margin-bottom:0}.panel > .list-group .list-group-item,.panel > .panel-collapse > .list-group .list-group-item{border-width:1px 0;border-radius:0}.panel > .list-group:first-child .list-group-item:first-child,.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel > .list-group:last-child .list-group-item:last-child,.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading + .list-group .list-group-item:first-child{border-top-width:0}.list-group + .panel-footer{border-top-width:0}.panel > .table,.panel > .table-responsive > .table,.panel > .panel-collapse > .table{margin-bottom:0}.panel > .table caption,.panel > .table-responsive > .table caption,.panel > .panel-collapse > .table caption{padding-left:15px;padding-right:15px}.panel > .table:first-child,.panel > .table-responsive:first-child > .table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel > .table:first-child > thead:first-child > tr:first-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,.panel > .table:first-child > tbody:first-child > tr:first-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child{border-top-left-radius:3px}.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child{border-top-right-radius:3px}.panel > .table:last-child,.panel > .table-responsive:last-child > .table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel > .table:last-child > tbody:last-child > tr:last-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,.panel > .table:last-child > tfoot:last-child > tr:last-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child{border-bottom-left-radius:3px}.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child{border-bottom-right-radius:3px}.panel > .panel-body + .table,.panel > .panel-body + .table-responsive,.panel > .table + .panel-body,.panel > .table-responsive + .panel-body{border-top:1px solid #ecf0f1}.panel > .table > tbody:first-child > tr:first-child th,.panel > .table > tbody:first-child > tr:first-child td{border-top:0}.panel > .table-bordered,.panel > .table-responsive > .table-bordered{border:0}.panel > .table-bordered > thead > tr > th:first-child,.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,.panel > .table-bordered > tbody > tr > th:first-child,.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,.panel > .table-bordered > tfoot > tr > th:first-child,.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,.panel > .table-bordered > thead > tr > td:first-child,.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,.panel > .table-bordered > tbody > tr > td:first-child,.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,.panel > .table-bordered > tfoot > tr > td:first-child,.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child{border-left:0}.panel > .table-bordered > thead > tr > th:last-child,.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,.panel > .table-bordered > tbody > tr > th:last-child,.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,.panel > .table-bordered > tfoot > tr > th:last-child,.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,.panel > .table-bordered > thead > tr > td:last-child,.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,.panel > .table-bordered > tbody > tr > td:last-child,.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,.panel > .table-bordered > tfoot > tr > td:last-child,.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child{border-right:0}.panel > .table-bordered > thead > tr:first-child > td,.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,.panel > .table-bordered > tbody > tr:first-child > td,.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,.panel > .table-bordered > thead > tr:first-child > th,.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,.panel > .table-bordered > tbody > tr:first-child > th,.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th{border-bottom:0}.panel > .table-bordered > tbody > tr:last-child > td,.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,.panel > .table-bordered > tfoot > tr:last-child > td,.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,.panel > .table-bordered > tbody > tr:last-child > th,.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,.panel > .table-bordered > tfoot > tr:last-child > th,.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th{border-bottom:0}.panel > .table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:21px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel + .panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading + .panel-collapse > .panel-body,.panel-group .panel-heading + .panel-collapse > .list-group{border-top:1px solid #ecf0f1}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer + .panel-collapse .panel-body{border-bottom:1px solid #ecf0f1}.panel-default{border-color:#ecf0f1}.panel-default > .panel-heading{color:#2c3e50;background-color:#ecf0f1;border-color:#ecf0f1}.panel-default > .panel-heading + .panel-collapse > .panel-body{border-top-color:#ecf0f1}.panel-default > .panel-heading .badge{color:#ecf0f1;background-color:#2c3e50}.panel-default > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#ecf0f1}.panel-primary{border-color:#2c3e50}.panel-primary > .panel-heading{color:#fff;background-color:#2c3e50;border-color:#2c3e50}.panel-primary > .panel-heading + .panel-collapse > .panel-body{border-top-color:#2c3e50}.panel-primary > .panel-heading .badge{color:#2c3e50;background-color:#fff}.panel-primary > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#2c3e50}.panel-success{border-color:#18bc9c}.panel-success > .panel-heading{color:#fff;background-color:#18bc9c;border-color:#18bc9c}.panel-success > .panel-heading + .panel-collapse > .panel-body{border-top-color:#18bc9c}.panel-success > .panel-heading .badge{color:#18bc9c;background-color:#fff}.panel-success > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#18bc9c}.panel-info{border-color:#3498db}.panel-info > .panel-heading{color:#fff;background-color:#3498db;border-color:#3498db}.panel-info > .panel-heading + .panel-collapse > .panel-body{border-top-color:#3498db}.panel-info > .panel-heading .badge{color:#3498db;background-color:#fff}.panel-info > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#3498db}.panel-warning{border-color:#f39c12}.panel-warning > .panel-heading{color:#fff;background-color:#f39c12;border-color:#f39c12}.panel-warning > .panel-heading + .panel-collapse > .panel-body{border-top-color:#f39c12}.panel-warning > .panel-heading .badge{color:#f39c12;background-color:#fff}.panel-warning > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#f39c12}.panel-danger{border-color:#e74c3c}.panel-danger > .panel-heading{color:#fff;background-color:#e74c3c;border-color:#e74c3c}.panel-danger > .panel-heading + .panel-collapse > .panel-body{border-top-color:#e74c3c}.panel-danger > .panel-heading .badge{color:#e74c3c;background-color:#fff}.panel-danger > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#e74c3c}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#ecf0f1;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, .05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, .05)}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, .15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:22.5px;font-weight:bold;line-height:1;color:#000;text-shadow:none;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0, 0, 0, .2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0, 0, 0, .5);box-shadow:0 3px 9px rgba(0, 0, 0, .5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{content:\" \";display:table}.modal-footer:after{clear:both}.modal-footer .btn + .btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn + .btn{margin-left:-1px}.modal-footer .btn-block + .btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0, 0, 0, .5);box-shadow:0 5px 15px rgba(0, 0, 0, .5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:\"Lato\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;font-size:13px;font-weight:normal;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:\"Lato\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;font-size:15px;font-weight:normal;line-height:1.42857;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, .2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, .2);box-shadow:0 5px 10px rgba(0, 0, 0, .2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:15px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover > .arrow,.popover > .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover > .arrow{border-width:11px}.popover > .arrow:after{border-width:10px;content:\"\"}.popover.top > .arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0, 0, 0, 0.25);bottom:-11px}.popover.top > .arrow:after{content:\" \";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right > .arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0, 0, 0, 0.25)}.popover.right > .arrow:after{content:\" \";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom > .arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0, 0, 0, 0.25);top:-11px}.popover.bottom > .arrow:after{content:\" \";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left > .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0, 0, 0, 0.25)}.popover.left > .arrow:after{content:\" \";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner > .item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left}.carousel-inner > .item > img,.carousel-inner > .item > a > img{display:block;max-width:100%;height:auto;line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner > .item{-webkit-transition:-webkit-transform 0.6s ease-in-out;-moz-transition:-moz-transform 0.6s ease-in-out;-o-transition:-o-transform 0.6s ease-in-out;transition:transform 0.6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;-moz-perspective:1000;perspective:1000}.carousel-inner > .item.next,.carousel-inner > .item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner > .item.prev,.carousel-inner > .item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner > .item.next.left,.carousel-inner > .item.prev.right,.carousel-inner > .item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner > .active,.carousel-inner > .next,.carousel-inner > .prev{display:block}.carousel-inner > .active{left:0}.carousel-inner > .next,.carousel-inner > .prev{position:absolute;top:0;width:100%}.carousel-inner > .next{left:100%}.carousel-inner > .prev{left:-100%}.carousel-inner > .next.left,.carousel-inner > .prev.right{left:0}.carousel-inner > .active.left{left:-100%}.carousel-inner > .active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0, 0, 0, .6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);background-image:-o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);background-image:linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);background-image:-o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);background-image:linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\\2039'}.carousel-control .icon-next:before{content:'\\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \\9;background-color:rgba(0, 0, 0, 0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0, 0, 0, .6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after{content:\" \";display:table}.clearfix:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width;}.visible-xs{display:none !important}.visible-sm{display:none !important}.visible-md{display:none !important}.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}\n/*\n *  Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome\n *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\n */@font-face{font-family:'FontAwesome';src:url('../fonts/font-awesome/fontawesome-webfont.eot?v=4.3.0');src:url('../fonts/font-awesome/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'), url('../fonts/font-awesome/fontawesome-webfont.woff2?v=4.3.0') format('woff2'), url('../fonts/font-awesome/fontawesome-webfont.woff?v=4.3.0') format('woff'), url('../fonts/font-awesome/fontawesome-webfont.ttf?v=4.3.0') format('truetype'), url('../fonts/font-awesome/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal;}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}.fa-lg{font-size:1.33333em;line-height:0.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.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul > li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:0.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:0.2em 0.25em 0.15em;border:solid 0.08em #eee;border-radius:0.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:0.3em}.fa.pull-right{margin-left:0.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-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);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-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-remove:before,.fa-close:before,.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{content:\"\\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,.fa-bar-chart: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-f:before,.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-hand-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-strikethrough: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-comments-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,.fa-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,.fa-gratipay: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: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:before{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-buoy: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-git-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-genderless:before,.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\"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:\"\\f1e3\"}.fa-tty:before{content:\"\\f1e4\"}.fa-binoculars:before{content:\"\\f1e5\"}.fa-plug:before{content:\"\\f1e6\"}.fa-slideshare:before{content:\"\\f1e7\"}.fa-twitch:before{content:\"\\f1e8\"}.fa-yelp:before{content:\"\\f1e9\"}.fa-newspaper-o:before{content:\"\\f1ea\"}.fa-wifi:before{content:\"\\f1eb\"}.fa-calculator:before{content:\"\\f1ec\"}.fa-paypal:before{content:\"\\f1ed\"}.fa-google-wallet:before{content:\"\\f1ee\"}.fa-cc-visa:before{content:\"\\f1f0\"}.fa-cc-mastercard:before{content:\"\\f1f1\"}.fa-cc-discover:before{content:\"\\f1f2\"}.fa-cc-amex:before{content:\"\\f1f3\"}.fa-cc-paypal:before{content:\"\\f1f4\"}.fa-cc-stripe:before{content:\"\\f1f5\"}.fa-bell-slash:before{content:\"\\f1f6\"}.fa-bell-slash-o:before{content:\"\\f1f7\"}.fa-trash:before{content:\"\\f1f8\"}.fa-copyright:before{content:\"\\f1f9\"}.fa-at:before{content:\"\\f1fa\"}.fa-eyedropper:before{content:\"\\f1fb\"}.fa-paint-brush:before{content:\"\\f1fc\"}.fa-birthday-cake:before{content:\"\\f1fd\"}.fa-area-chart:before{content:\"\\f1fe\"}.fa-pie-chart:before{content:\"\\f200\"}.fa-line-chart:before{content:\"\\f201\"}.fa-lastfm:before{content:\"\\f202\"}.fa-lastfm-square:before{content:\"\\f203\"}.fa-toggle-off:before{content:\"\\f204\"}.fa-toggle-on:before{content:\"\\f205\"}.fa-bicycle:before{content:\"\\f206\"}.fa-bus:before{content:\"\\f207\"}.fa-ioxhost:before{content:\"\\f208\"}.fa-angellist:before{content:\"\\f209\"}.fa-cc:before{content:\"\\f20a\"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:\"\\f20b\"}.fa-meanpath:before{content:\"\\f20c\"}.fa-buysellads:before{content:\"\\f20d\"}.fa-connectdevelop:before{content:\"\\f20e\"}.fa-dashcube:before{content:\"\\f210\"}.fa-forumbee:before{content:\"\\f211\"}.fa-leanpub:before{content:\"\\f212\"}.fa-sellsy:before{content:\"\\f213\"}.fa-shirtsinbulk:before{content:\"\\f214\"}.fa-simplybuilt:before{content:\"\\f215\"}.fa-skyatlas:before{content:\"\\f216\"}.fa-cart-plus:before{content:\"\\f217\"}.fa-cart-arrow-down:before{content:\"\\f218\"}.fa-diamond:before{content:\"\\f219\"}.fa-ship:before{content:\"\\f21a\"}.fa-user-secret:before{content:\"\\f21b\"}.fa-motorcycle:before{content:\"\\f21c\"}.fa-street-view:before{content:\"\\f21d\"}.fa-heartbeat:before{content:\"\\f21e\"}.fa-venus:before{content:\"\\f221\"}.fa-mars:before{content:\"\\f222\"}.fa-mercury:before{content:\"\\f223\"}.fa-transgender:before{content:\"\\f224\"}.fa-transgender-alt:before{content:\"\\f225\"}.fa-venus-double:before{content:\"\\f226\"}.fa-mars-double:before{content:\"\\f227\"}.fa-venus-mars:before{content:\"\\f228\"}.fa-mars-stroke:before{content:\"\\f229\"}.fa-mars-stroke-v:before{content:\"\\f22a\"}.fa-mars-stroke-h:before{content:\"\\f22b\"}.fa-neuter:before{content:\"\\f22c\"}.fa-facebook-official:before{content:\"\\f230\"}.fa-pinterest-p:before{content:\"\\f231\"}.fa-whatsapp:before{content:\"\\f232\"}.fa-server:before{content:\"\\f233\"}.fa-user-plus:before{content:\"\\f234\"}.fa-user-times:before{content:\"\\f235\"}.fa-hotel:before,.fa-bed:before{content:\"\\f236\"}.fa-viacoin:before{content:\"\\f237\"}.fa-train:before{content:\"\\f238\"}.fa-subway:before{content:\"\\f239\"}.fa-medium:before{content:\"\\f23a\"}\n/*\n * Datetimepicker for Bootstrap 3\n * version : 4.17.37\n * https://github.com/Eonasdan/bootstrap-datetimepicker/\n */.bootstrap-datetimepicker-widget{list-style:none}.bootstrap-datetimepicker-widget.dropdown-menu{margin:2px 0;padding:4px;width:19em}@media (min-width:768px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:1200px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.bootstrap-datetimepicker-widget.dropdown-menu:before,.bootstrap-datetimepicker-widget.dropdown-menu:after{content:'';display:inline-block;position:absolute}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0, 0, 0, 0.2);top:-7px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid white;top:-6px;left:8px}.bootstrap-datetimepicker-widget.dropdown-menu.top:before{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0, 0, 0, 0.2);bottom:-7px;left:6px}.bootstrap-datetimepicker-widget.dropdown-menu.top:after{border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid white;bottom:-6px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before{left:auto;right:6px}.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after{left:auto;right:7px}.bootstrap-datetimepicker-widget .list-unstyled{margin:0}.bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.bootstrap-datetimepicker-widget .timepicker-hour,.bootstrap-datetimepicker-widget .timepicker-minute,.bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:bold;font-size:1.2em;margin:0}.bootstrap-datetimepicker-widget button[data-action]{padding:6px}.bootstrap-datetimepicker-widget .btn[data-action=\"incrementHours\"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:\"Increment Hours\"}.bootstrap-datetimepicker-widget .btn[data-action=\"incrementMinutes\"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:\"Increment Minutes\"}.bootstrap-datetimepicker-widget .btn[data-action=\"decrementHours\"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:\"Decrement Hours\"}.bootstrap-datetimepicker-widget .btn[data-action=\"decrementMinutes\"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:\"Decrement Minutes\"}.bootstrap-datetimepicker-widget .btn[data-action=\"showHours\"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:\"Show Hours\"}.bootstrap-datetimepicker-widget .btn[data-action=\"showMinutes\"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:\"Show Minutes\"}.bootstrap-datetimepicker-widget .btn[data-action=\"togglePeriod\"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:\"Toggle AM/PM\"}.bootstrap-datetimepicker-widget .btn[data-action=\"clear\"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:\"Clear the picker\"}.bootstrap-datetimepicker-widget .btn[data-action=\"today\"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:\"Set the date to today\"}.bootstrap-datetimepicker-widget .picker-switch{text-align:center}.bootstrap-datetimepicker-widget .picker-switch::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:\"Toggle Date and Time Screens\"}.bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.bootstrap-datetimepicker-widget table{width:100%;margin:0}.bootstrap-datetimepicker-widget table td,.bootstrap-datetimepicker-widget table th{text-align:center;border-radius:4px}.bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.bootstrap-datetimepicker-widget table th.disabled,.bootstrap-datetimepicker-widget table th.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget table th.prev::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:\"Previous Month\"}.bootstrap-datetimepicker-widget table th.next::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:\"Next Month\"}.bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#eee}.bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.bootstrap-datetimepicker-widget table td.cw{font-size:0.8em;height:20px;line-height:20px;color:#777}.bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table td.day:hover,.bootstrap-datetimepicker-widget table td.hour:hover,.bootstrap-datetimepicker-widget table td.minute:hover,.bootstrap-datetimepicker-widget table td.second:hover{background:#eee;cursor:pointer}.bootstrap-datetimepicker-widget table td.old,.bootstrap-datetimepicker-widget table td.new{color:#777}.bootstrap-datetimepicker-widget table td.today{position:relative}.bootstrap-datetimepicker-widget table td.today:before{content:'';display:inline-block;border:solid transparent;border-width:0 0 7px 7px;border-bottom-color:#337ab7;border-top-color:rgba(0, 0, 0, 0.2);position:absolute;bottom:4px;right:4px}.bootstrap-datetimepicker-widget table td.active,.bootstrap-datetimepicker-widget table td.active:hover{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25)}.bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.bootstrap-datetimepicker-widget table td.disabled,.bootstrap-datetimepicker-widget table td.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget table td span{display:inline-block;width:54px;height:54px;line-height:54px;margin:2px 1.5px;cursor:pointer;border-radius:4px}.bootstrap-datetimepicker-widget table td span:hover{background:#eee}.bootstrap-datetimepicker-widget table td span.active{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25)}.bootstrap-datetimepicker-widget table td span.old{color:#777}.bootstrap-datetimepicker-widget table td span.disabled,.bootstrap-datetimepicker-widget table td span.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.bootstrap-datetimepicker-widget.wider{width:21em}.bootstrap-datetimepicker-widget .datepicker-decades .decade{line-height:1.8em !important}.input-group.date .input-group-addon{cursor:pointer}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}\n@font-face{font-family:'Lato';font-style:normal;font-weight:400;src:local('Lato Regular'), local('Lato-Regular'), url('../fonts/lato/Lato-Regular.woff') format('woff');}@font-face{font-family:'Lato';font-style:normal;font-weight:700;src:local('Lato Bold'), local('Lato-Bold'), url('../fonts/lato/Lato-Bold.woff') format('woff');}@font-face{font-family:'Lato';font-style:italic;font-weight:400;src:local('Lato Italic'), local('Lato-Italic'), url('../fonts/lato/Lato-Italic.woff') format('woff');}@font-face{font-family:'Lato';font-style:italic;font-weight:700;src:local('Lato Bold Italic'), local('Lato-BoldItalic'), url('../fonts/lato/Lato-BoldItalic.woff') format('woff');}\n.hljs{display:block;overflow-x:auto;padding:0.5em;background:#fdf6e3;color:#657b83;-webkit-text-size-adjust:none}.hljs-comment,.diff .hljs-header,.hljs-doctype,.hljs-pi,.lisp .hljs-string,.hljs-javadoc{color:#93a1a1}.hljs-keyword,.hljs-winutils,.method,.hljs-addition,.css .hljs-tag,.hljs-request,.hljs-status,.nginx .hljs-title{color:#859900}.hljs-number,.hljs-command,.hljs-string,.hljs-tag .hljs-value,.hljs-rules .hljs-value,.hljs-phpdoc,.hljs-dartdoc,.tex .hljs-formula,.hljs-regexp,.hljs-hexcolor,.hljs-link_url{color:#2aa198}.hljs-title,.hljs-localvars,.hljs-chunk,.hljs-decorator,.hljs-built_in,.hljs-identifier,.vhdl .hljs-literal,.hljs-id,.css .hljs-function{color:#268bd2}.hljs-attribute,.hljs-variable,.lisp .hljs-body,.smalltalk .hljs-number,.hljs-constant,.hljs-class .hljs-title,.hljs-parent,.hljs-type,.hljs-link_reference{color:#b58900}.hljs-preprocessor,.hljs-preprocessor .hljs-keyword,.hljs-pragma,.hljs-shebang,.hljs-symbol,.hljs-symbol .hljs-string,.diff .hljs-change,.hljs-special,.hljs-attr_selector,.hljs-subst,.hljs-cdata,.css .hljs-pseudo,.hljs-header{color:#cb4b16}.hljs-deletion,.hljs-important{color:#dc322f}.hljs-link_label{color:#6c71c4}.tex .hljs-formula{background:#eee8d5}\n/*\n *  Symfony Demo Application by @symfony\n *  License: MIT License\n */p,ul,ol{font-size:19px;margin-bottom:1.5em}li{margin-bottom:0.5em}code{background:#ecf0f1;color:#2c3e50}.text-danger,.text-danger:hover{color:#e74c3c}i{margin-right:0.25em}body{display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;min-height:100vh}header{margin-bottom:2em}header ul.nav li{margin-bottom:0}header .locales a{padding-right:10px}.search-bar{padding:0.8em 0}.search-bar form{position:relative}.search-bar .search-preview{position:absolute;width:100%;top:100%}.body-container{-webkit-flex:1;flex:1;min-height:600px}.body-container #main h1,.body-container #main h2{margin-top:0}#sidebar .section{margin-bottom:2em}#sidebar p{font-size:15px}#sidebar p + p{margin:1.5em 0 0}footer{background:#ecf0f1;margin-top:2em;padding-top:2em;padding-bottom:2em}footer p{color:#7b8a8b;font-size:13px;margin-bottom:0.25em}footer #footer-resources{text-align:right}footer #footer-resources i{color:#7b8a8b;font-size:28.5px;margin-left:0.5em}#sourceCodeModal h3{font-size:19px;margin-top:0}#sourceCodeModal h3 small{color:#7b8a8b;font-size:80%}#sourceCodeModal pre{margin-bottom:2em;padding:0}#confirmationModal .modal-dialog{width:500px}#confirmationModal .modal-footer button{min-width:75px}.form-group.has-error .form-control{border-color:#e74c3c}.form-group.has-error .control-label{color:#e74c3c}.form-group.has-error .help-block{background-color:#e74c3c;color:#fff;font-size:15px;padding:1em}.form-group.has-error .help-block ul{margin-bottom:0}textarea{max-width:100%}body#requirements_checker header h1{margin-bottom:0;margin-top:0}body#requirements_checker header h1 span{font-size:120%;opacity:0.7;padding:0 5px}body#requirements_checker .panel li{margin-bottom:1em}body#homepage{text-align:center}body#login #login-users-help p{font-size:15px;line-height:1.42857}body#login #login-users-help p:last-child{margin-bottom:0}body#login #login-users-help p .label{margin-right:5px}body#login #login-users-help p .console{display:block;margin:5px 0;padding:10px}body#blog_index h1{margin-bottom:0.5em}body#blog_index article.post{margin-bottom:3em}body#blog_post_show h3{margin-bottom:0.75em}body#blog_post_show #post-add-comment{margin:2em 0}body#blog_post_show #post-add-comment p{margin-bottom:0}body#blog_post_show #post-add-comment p a.btn{margin-right:0.5em}body#blog_post_show .post-comment{margin-bottom:2em}body#blog_post_show .post-comment h4{font-size:13px;line-height:1.42857;margin-top:0}body#blog_post_show .post-comment h4 strong{display:block}body#comment_form_error h1.text-danger{margin-bottom:1em}body#admin_post_index .item-actions{white-space:nowrap}body#admin_post_index .item-actions a.btn + a.btn{margin-left:4px}"
  },
  {
    "path": "web/js/app.js",
    "content": "/*!\n * jQuery JavaScript Library v2.1.4\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2015-04-28T16:01Z\n */\n(function(e,t){if(typeof module===\"object\"&&typeof module.exports===\"object\"){module.exports=e.document?t(e,!0):function(e){if(!e.document){throw new Error(\"jQuery requires a window with a document\")};return t(e)}}\nelse{t(e)}}(typeof window!==\"undefined\"?window:this,function(t,n){var g=[],p=g.slice,ge=g.concat,G=g.push,E=g.indexOf,F={};var It=F.toString,ee=F.hasOwnProperty,o={};var r=t.document,he=\"2.1.4\",e=function(t,n){return new e.fn.init(t,n)},Et=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,Dt=/^-ms-/,jt=/-([\\da-z])/gi,St=function(e,t){return t.toUpperCase()};e.fn=e.prototype={jquery:he,constructor:e,selector:\"\",length:0,toArray:function(){return p.call(this)},get:function(e){return e!=null?(e<0?this[e+this.length]:this[e]):p.call(this)},pushStack:function(t){var n=e.merge(this.constructor(),t);n.prevObject=this;n.context=this.context;return n},each:function(t,n){return e.each(this,t,n)},map:function(t){return this.pushStack(e.map(this,function(e,n){return t.call(e,n,e)}))},slice:function(){return this.pushStack(p.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var n=this.length,t=+e+(e<0?n:0);return this.pushStack(t>=0&&t<n?[this[t]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:G,sort:g.sort,splice:g.splice};e.extend=e.fn.extend=function(){var f,o,r,n,a,u,t=arguments[0]||{},i=1,l=arguments.length,s=!1;if(typeof t===\"boolean\"){s=t;t=arguments[i]||{};i++};if(typeof t!==\"object\"&&!e.isFunction(t)){t={}};if(i===l){t=this;i--};for(;i<l;i++){if((f=arguments[i])!=null){for(o in f){r=t[o];n=f[o];if(t===n){continue};if(s&&n&&(e.isPlainObject(n)||(a=e.isArray(n)))){if(a){a=!1;u=r&&e.isArray(r)?r:[]}\nelse{u=r&&e.isPlainObject(r)?r:{}};t[o]=e.extend(s,u,n)}\nelse if(n!==undefined){t[o]=n}}}};return t};e.extend({expando:\"jQuery\"+(he+Math.random()).replace(/\\D/g,\"\"),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(t){return e.type(t)===\"function\"},isArray:Array.isArray,isWindow:function(e){return e!=null&&e===e.window},isNumeric:function(t){return!e.isArray(t)&&(t-parseFloat(t)+1)>=0},isPlainObject:function(t){if(e.type(t)!==\"object\"||t.nodeType||e.isWindow(t)){return!1};if(t.constructor&&!ee.call(t.constructor.prototype,\"isPrototypeOf\")){return!1};return!0},isEmptyObject:function(e){var t;for(t in e){return!1};return!0},type:function(e){if(e==null){return e+\"\"};return typeof e===\"object\"||typeof e===\"function\"?F[It.call(e)]||\"object\":typeof e},globalEval:function(t){var n,i=eval;t=e.trim(t);if(t){if(t.indexOf(\"use strict\")===1){n=r.createElement(\"script\");n.text=t;r.head.appendChild(n).parentNode.removeChild(n)}\nelse{i(t)}}},camelCase:function(e){return e.replace(Dt,\"ms-\").replace(jt,St)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,s=e.length,o=Y(e);if(n){if(o){for(;i<s;i++){r=t.apply(e[i],n);if(r===!1){break}}}\nelse{for(i in e){r=t.apply(e[i],n);if(r===!1){break}}}}\nelse{if(o){for(;i<s;i++){r=t.call(e[i],i,e[i]);if(r===!1){break}}}\nelse{for(i in e){r=t.call(e[i],i,e[i]);if(r===!1){break}}}};return e},trim:function(e){return e==null?\"\":(e+\"\").replace(Et,\"\")},makeArray:function(t,n){var i=n||[];if(t!=null){if(Y(Object(t))){e.merge(i,typeof t===\"string\"?[t]:t)}\nelse{G.call(i,t)}};return i},inArray:function(e,t,n){return t==null?-1:E.call(t,e,n)},merge:function(e,t){var r=+t.length,n=0,i=e.length;for(;n<r;n++){e[i++]=t[n]};e.length=i;return e},grep:function(e,t,n){var r,o=[],i=0,a=e.length,s=!n;for(;i<a;i++){r=!t(e[i],i);if(r!==s){o.push(e[i])}};return o},map:function(e,t,n){var r,i=0,a=e.length,s=Y(e),o=[];if(s){for(;i<a;i++){r=t(e[i],i,n);if(r!=null){o.push(r)}}}\nelse{for(i in e){r=t(e[i],i,n);if(r!=null){o.push(r)}}};return ge.apply([],o)},guid:1,proxy:function(t,n){var r,o,i;if(typeof n===\"string\"){r=t[n];n=t;t=r};if(!e.isFunction(t)){return undefined};o=p.call(arguments,2);i=function(){return t.apply(n||this,o.concat(p.call(arguments)))};i.guid=t.guid=t.guid||e.guid++;return i},now:Date.now,support:o});e.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"),function(e,t){F[\"[object \"+t+\"]\"]=t.toLowerCase()});function Y(t){var n=\"length\" in t&&t.length,i=e.type(t);if(i===\"function\"||e.isWindow(t)){return!1};if(t.nodeType===1&&n){return!0};return i===\"array\"||n===0||typeof n===\"number\"&&n>0&&(n-1)in t};var y=\n/*!\n * Sizzle CSS Selector Engine v2.2.0-pre\n * http://sizzlejs.com/\n *\n * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2014-12-16\n */\n(function(e){var E,r,t,F,se,j,U,oe,A,v,k,T,a,c,p,s,b,L,S,o=\"sizzle\"+1*new Date(),f=e.document,d=0,pe=0,te=M(),ie=M(),ue=M(),Y=function(e,t){if(e===t){k=!0};return 0},ae=1<<31,fe=({}).hasOwnProperty,x=[],le=x.pop,he=x.push,y=x.push,ne=x.slice,C=function(e,t){var n=0,i=e.length;for(;n<i;n++){if(e[n]===t){return n}};return-1},Q=\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",n=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",N=\"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",ee=N.replace(\"w\",\"w#\"),re=\"\\\\[\"+n+\"*(\"+N+\")(?:\"+n+\"*([*^$|!~]?=)\"+n+\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\"+ee+\"))|)\"+n+\"*\\\\]\",R=\":(\"+N+\")(?:\\\\((('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\"+re+\")*)|.*)\\\\)|)\",Ce=new RegExp(n+\"+\",\"g\"),q=new RegExp(\"^\"+n+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+n+\"+$\",\"g\"),ke=new RegExp(\"^\"+n+\"*,\"+n+\"*\"),Ne=new RegExp(\"^\"+n+\"*([>+~]|\"+n+\")\"+n+\"*\"),be=new RegExp(\"=\"+n+\"*([^\\\\]'\\\"]*?)\"+n+\"*\\\\]\",\"g\"),we=new RegExp(R),me=new RegExp(\"^\"+ee+\"$\"),H={\"ID\":new RegExp(\"^#(\"+N+\")\"),\"CLASS\":new RegExp(\"^\\\\.(\"+N+\")\"),\"TAG\":new RegExp(\"^(\"+N.replace(\"w\",\"w*\")+\")\"),\"ATTR\":new RegExp(\"^\"+re),\"PSEUDO\":new RegExp(\"^\"+R),\"CHILD\":new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+n+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+n+\"*(?:([+-]|)\"+n+\"*(\\\\d+)|))\"+n+\"*\\\\)|)\",\"i\"),\"bool\":new RegExp(\"^(?:\"+Q+\")$\",\"i\"),\"needsContext\":new RegExp(\"^\"+n+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+n+\"*((?:-\\\\d)?\\\\d*)\"+n+\"*\\\\)|)(?=[^-]|$)\",\"i\")},ye=/^(?:input|select|textarea|button)$/i,xe=/^h\\d$/i,D=/^[^{]+\\{\\s*\\[native \\w/,Te=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,W=/[+~]/,ve=/'|\\\\/g,m=new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\"+n+\"?|(\"+n+\")|.)\",\"ig\"),g=function(e,t,n){var i=\"0x\"+t-0x10000;return i!==i||n?t:i<0?String.fromCharCode(i+0x10000):String.fromCharCode(i>>10|0xD800,i&0x3FF|0xDC00)},Z=function(){T()};try{y.apply((x=ne.call(f.childNodes)),f.childNodes);x[f.childNodes.length].nodeType}catch(u){y={apply:x.length?function(e,t){he.apply(e,ne.call(t))}:function(e,t){var n=e.length,i=0;while((e[n++]=t[i++])){};e.length=n-1}}};function i(e,t,n,i){var m,l,d,c,w,g,x,h,b,v;if((t?t.ownerDocument||t:f)!==a){T(t)};t=t||a;n=n||[];c=t.nodeType;if(typeof e!==\"string\"||!e||c!==1&&c!==9&&c!==11){return n};if(!i&&p){if(c!==11&&(m=Te.exec(e))){if((d=m[1])){if(c===9){l=t.getElementById(d);if(l&&l.parentNode){if(l.id===d){n.push(l);return n}}\nelse{return n}}\nelse{if(t.ownerDocument&&(l=t.ownerDocument.getElementById(d))&&S(t,l)&&l.id===d){n.push(l);return n}}}\nelse if(m[2]){y.apply(n,t.getElementsByTagName(e));return n}\nelse if((d=m[3])&&r.getElementsByClassName){y.apply(n,t.getElementsByClassName(d));return n}};if(r.qsa&&(!s||!s.test(e))){h=x=o;b=t;v=c!==1&&e;if(c===1&&t.nodeName.toLowerCase()!==\"object\"){g=j(e);if((x=t.getAttribute(\"id\"))){h=x.replace(ve,\"\\\\$&\")}\nelse{t.setAttribute(\"id\",h)};h=\"[id='\"+h+\"'] \";w=g.length;while(w--){g[w]=h+P(g[w])};b=W.test(e)&&G(t.parentNode)||t;v=g.join(\",\")};if(v){try{y.apply(n,b.querySelectorAll(v));return n}catch(u){}finally{if(!x){t.removeAttribute(\"id\")}}}}};return oe(e.replace(q,\"$1\"),t,n,i)};function M(){var n=[];function e(i,r){if(n.push(i+\" \")>t.cacheLength){delete e[n.shift()]};return(e[i+\" \"]=r)};return e};function l(e){e[o]=!0;return e};function h(e){var n=a.createElement(\"div\");try{return!!e(n)}catch(t){return!1}finally{if(n.parentNode){n.parentNode.removeChild(n)};n=null}};function V(e,n){var r=e.split(\"|\"),i=e.length;while(i--){t.attrHandle[r[i]]=n}};function K(e,t){var n=t&&e,i=n&&e.nodeType===1&&t.nodeType===1&&(~t.sourceIndex||ae)-(~e.sourceIndex||ae);if(i){return i};if(n){while((n=n.nextSibling)){if(n===t){return-1}}};return e?1:-1};function ge(e){return function(t){var n=t.nodeName.toLowerCase();return n===\"input\"&&t.type===e}};function Ee(e){return function(t){var n=t.nodeName.toLowerCase();return(n===\"input\"||n===\"button\")&&t.type===e}};function w(e){return l(function(t){t=+t;return l(function(n,i){var r,s=e([],n.length,t),o=s.length;while(o--){if(n[(r=s[o])]){n[r]=!(i[r]=n[r])}}})})};function G(e){return e&&typeof e.getElementsByTagName!==\"undefined\"&&e};r=i.support={};se=i.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?t.nodeName!==\"HTML\":!1};T=i.setDocument=function(e){var l,u,i=e?e.ownerDocument||e:f;if(i===a||i.nodeType!==9||!i.documentElement){return a};a=i;c=i.documentElement;u=i.defaultView;if(u&&u!==u.top){if(u.addEventListener){u.addEventListener(\"unload\",Z,!1)}\nelse if(u.attachEvent){u.attachEvent(\"onunload\",Z)}};p=!se(i);r.attributes=h(function(e){e.className=\"i\";return!e.getAttribute(\"className\")});r.getElementsByTagName=h(function(e){e.appendChild(i.createComment(\"\"));return!e.getElementsByTagName(\"*\").length});r.getElementsByClassName=D.test(i.getElementsByClassName);r.getById=h(function(e){c.appendChild(e).id=o;return!i.getElementsByName||!i.getElementsByName(o).length});if(r.getById){t.find[\"ID\"]=function(e,t){if(typeof t.getElementById!==\"undefined\"&&p){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}};t.filter[\"ID\"]=function(e){var t=e.replace(m,g);return function(e){return e.getAttribute(\"id\")===t}}}\nelse{delete t.find[\"ID\"];t.filter[\"ID\"]=function(e){var t=e.replace(m,g);return function(e){var n=typeof e.getAttributeNode!==\"undefined\"&&e.getAttributeNode(\"id\");return n&&n.value===t}}};t.find[\"TAG\"]=r.getElementsByTagName?function(e,t){if(typeof t.getElementsByTagName!==\"undefined\"){return t.getElementsByTagName(e)}\nelse if(r.qsa){return t.querySelectorAll(e)}}:function(e,t){var n,i=[],o=0,r=t.getElementsByTagName(e);if(e===\"*\"){while((n=r[o++])){if(n.nodeType===1){i.push(n)}};return i};return r};t.find[\"CLASS\"]=r.getElementsByClassName&&function(e,t){if(p){return t.getElementsByClassName(e)}};b=[];s=[];if((r.qsa=D.test(i.querySelectorAll))){h(function(e){c.appendChild(e).innerHTML=\"<a id='\"+o+\"'></a><select id='\"+o+\"-\\f]' msallowcapture=''><option selected=''></option></select>\";if(e.querySelectorAll(\"[msallowcapture^='']\").length){s.push(\"[*^$]=\"+n+\"*(?:''|\\\"\\\")\")};if(!e.querySelectorAll(\"[selected]\").length){s.push(\"\\\\[\"+n+\"*(?:value|\"+Q+\")\")};if(!e.querySelectorAll(\"[id~=\"+o+\"-]\").length){s.push(\"~=\")};if(!e.querySelectorAll(\":checked\").length){s.push(\":checked\")};if(!e.querySelectorAll(\"a#\"+o+\"+*\").length){s.push(\".#.+[+~]\")}});h(function(e){var t=i.createElement(\"input\");t.setAttribute(\"type\",\"hidden\");e.appendChild(t).setAttribute(\"name\",\"D\");if(e.querySelectorAll(\"[name=d]\").length){s.push(\"name\"+n+\"*[*^$|!~]?=\")};if(!e.querySelectorAll(\":enabled\").length){s.push(\":enabled\",\":disabled\")};e.querySelectorAll(\"*,:x\");s.push(\",.*:\")})};if((r.matchesSelector=D.test((L=c.matches||c.webkitMatchesSelector||c.mozMatchesSelector||c.oMatchesSelector||c.msMatchesSelector)))){h(function(e){r.disconnectedMatch=L.call(e,\"div\");L.call(e,\"[s!='']:x\");b.push(\"!=\",R)})};s=s.length&&new RegExp(s.join(\"|\"));b=b.length&&new RegExp(b.join(\"|\"));l=D.test(c.compareDocumentPosition);S=l||D.test(c.contains)?function(e,t){var i=e.nodeType===9?e.documentElement:e,n=t&&t.parentNode;return e===n||!!(n&&n.nodeType===1&&(i.contains?i.contains(n):e.compareDocumentPosition&&e.compareDocumentPosition(n)&16))}:function(e,t){if(t){while((t=t.parentNode)){if(t===e){return!0}}};return!1};Y=l?function(e,t){if(e===t){k=!0;return 0};var n=!e.compareDocumentPosition-!t.compareDocumentPosition;if(n){return n};n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1;if(n&1||(!r.sortDetached&&t.compareDocumentPosition(e)===n)){if(e===i||e.ownerDocument===f&&S(f,e)){return-1};if(t===i||t.ownerDocument===f&&S(f,t)){return 1};return v?(C(v,e)-C(v,t)):0};return n&4?-1:1}:function(e,t){if(e===t){k=!0;return 0};var r,n=0,u=e.parentNode,a=t.parentNode,s=[e],o=[t];if(!u||!a){return e===i?-1:t===i?1:u?-1:a?1:v?(C(v,e)-C(v,t)):0}\nelse if(u===a){return K(e,t)};r=e;while((r=r.parentNode)){s.unshift(r)};r=t;while((r=r.parentNode)){o.unshift(r)}\nwhile(s[n]===o[n]){n++};return n?K(s[n],o[n]):s[n]===f?-1:o[n]===f?1:0};return i};i.matches=function(e,t){return i(e,null,null,t)};i.matchesSelector=function(e,t){if((e.ownerDocument||e)!==a){T(e)};t=t.replace(be,\"='$1']\");if(r.matchesSelector&&p&&(!b||!b.test(t))&&(!s||!s.test(t))){try{var o=L.call(e,t);if(o||r.disconnectedMatch||e.document&&e.document.nodeType!==11){return o}}catch(n){}};return i(t,a,null,[e]).length>0};i.contains=function(e,t){if((e.ownerDocument||e)!==a){T(e)};return S(e,t)};i.attr=function(e,n){if((e.ownerDocument||e)!==a){T(e)};var o=t.attrHandle[n.toLowerCase()],i=o&&fe.call(t.attrHandle,n.toLowerCase())?o(e,n,!p):undefined;return i!==undefined?i:r.attributes||!p?e.getAttribute(n):(i=e.getAttributeNode(n))&&i.specified?i.value:null};i.error=function(e){throw new Error(\"Syntax error, unrecognized expression: \"+e)};i.uniqueSort=function(e){var o,i=[],n=0,t=0;k=!r.detectDuplicates;v=!r.sortStable&&e.slice(0);e.sort(Y);if(k){while((o=e[t++])){if(o===e[t]){n=i.push(t)}}\nwhile(n--){e.splice(i[n],1)}};v=null;return e};F=i.getText=function(e){var i,n=\"\",r=0,t=e.nodeType;if(!t){while((i=e[r++])){n+=F(i)}}\nelse if(t===1||t===9||t===11){if(typeof e.textContent===\"string\"){return e.textContent}\nelse{for(e=e.firstChild;e;e=e.nextSibling){n+=F(e)}}}\nelse if(t===3||t===4){return e.nodeValue};return n};t=i.selectors={cacheLength:50,createPseudo:l,match:H,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{\"ATTR\":function(e){e[1]=e[1].replace(m,g);e[3]=(e[3]||e[4]||e[5]||\"\").replace(m,g);if(e[2]===\"~=\"){e[3]=\" \"+e[3]+\" \"};return e.slice(0,4)},\"CHILD\":function(e){e[1]=e[1].toLowerCase();if(e[1].slice(0,3)===\"nth\"){if(!e[3]){i.error(e[0])};e[4]=+(e[4]?e[5]+(e[6]||1):2*(e[3]===\"even\"||e[3]===\"odd\"));e[5]=+((e[7]+e[8])||e[3]===\"odd\")}\nelse if(e[3]){i.error(e[0])};return e},\"PSEUDO\":function(e){var n,t=!e[6]&&e[2];if(H[\"CHILD\"].test(e[0])){return null};if(e[3]){e[2]=e[4]||e[5]||\"\"}\nelse if(t&&we.test(t)&&(n=j(t,!0))&&(n=t.indexOf(\")\",t.length-n)-t.length)){e[0]=e[0].slice(0,n);e[2]=t.slice(0,n)};return e.slice(0,3)}},filter:{\"TAG\":function(e){var t=e.replace(m,g).toLowerCase();return e===\"*\"?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},\"CLASS\":function(e){var t=te[e+\" \"];return t||(t=new RegExp(\"(^|\"+n+\")\"+e+\"(\"+n+\"|$)\"))&&te(e,function(e){return t.test(typeof e.className===\"string\"&&e.className||typeof e.getAttribute!==\"undefined\"&&e.getAttribute(\"class\")||\"\")})},\"ATTR\":function(e,t,n){return function(r){var o=i.attr(r,e);if(o==null){return t===\"!=\"};if(!t){return!0};o+=\"\";return t===\"=\"?o===n:t===\"!=\"?o!==n:t===\"^=\"?n&&o.indexOf(n)===0:t===\"*=\"?n&&o.indexOf(n)>-1:t===\"$=\"?n&&o.slice(-n.length)===n:t===\"~=\"?(\" \"+o.replace(Ce,\" \")+\" \").indexOf(n)>-1:t===\"|=\"?o===n||o.slice(0,n.length+1)===n+\"-\":!1}},\"CHILD\":function(e,t,n,i,r){var u=e.slice(0,3)!==\"nth\",a=e.slice(-4)!==\"last\",s=t===\"of-type\";return i===1&&r===0?function(e){return!!e.parentNode}:function(t,n,f){var h,v,l,c,p,y,m=u!==a?\"nextSibling\":\"previousSibling\",g=t.parentNode,w=s&&t.nodeName.toLowerCase(),x=!f&&!s;if(g){if(u){while(m){l=t;while((l=l[m])){if(s?l.nodeName.toLowerCase()===w:l.nodeType===1){return!1}};y=m=e===\"only\"&&!y&&\"nextSibling\"};return!0};y=[a?g.firstChild:g.lastChild];if(a&&x){v=g[o]||(g[o]={});h=v[e]||[];p=h[0]===d&&h[1];c=h[0]===d&&h[2];l=p&&g.childNodes[p];while((l=++p&&l&&l[m]||(c=p=0)||y.pop())){if(l.nodeType===1&&++c&&l===t){v[e]=[d,p,c];break}}}\nelse if(x&&(h=(t[o]||(t[o]={}))[e])&&h[0]===d){c=h[1]}\nelse{while((l=++p&&l&&l[m]||(c=p=0)||y.pop())){if((s?l.nodeName.toLowerCase()===w:l.nodeType===1)&&++c){if(x){(l[o]||(l[o]={}))[e]=[d,c]};if(l===t){break}}}};c-=r;return c===i||(c%i===0&&c/i>=0)}}},\"PSEUDO\":function(e,n){var s,r=t.pseudos[e]||t.setFilters[e.toLowerCase()]||i.error(\"unsupported pseudo: \"+e);if(r[o]){return r(n)};if(r.length>1){s=[e,e,\"\",n];return t.setFilters.hasOwnProperty(e.toLowerCase())?l(function(e,t){var o,s=r(e,n),i=s.length;while(i--){o=C(e,s[i]);e[o]=!(t[o]=s[i])}}):function(e){return r(e,0,s)}};return r}},pseudos:{\"not\":l(function(e){var n=[],i=[],t=U(e.replace(q,\"$1\"));return t[o]?l(function(e,n,i,r){var s,a=t(e,null,r,[]),o=e.length;while(o--){if((s=a[o])){e[o]=!(n[o]=s)}}}):function(e,r,o){n[0]=e;t(n,null,o,i);n[0]=null;return!i.pop()}}),\"has\":l(function(e){return function(t){return i(e,t).length>0}}),\"contains\":l(function(e){e=e.replace(m,g);return function(t){return(t.textContent||t.innerText||F(t)).indexOf(e)>-1}}),\"lang\":l(function(e){if(!me.test(e||\"\")){i.error(\"unsupported lang: \"+e)};e=e.replace(m,g).toLowerCase();return function(t){var n;do{if((n=p?t.lang:t.getAttribute(\"xml:lang\")||t.getAttribute(\"lang\"))){n=n.toLowerCase();return n===e||n.indexOf(e+\"-\")===0}}\nwhile((t=t.parentNode)&&t.nodeType===1);return!1}}),\"target\":function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},\"root\":function(e){return e===c},\"focus\":function(e){return e===a.activeElement&&(!a.hasFocus||a.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(t===\"input\"&&!!e.checked)||(t===\"option\"&&!!e.selected)},\"selected\":function(e){if(e.parentNode){e.parentNode.selectedIndex};return e.selected===!0},\"empty\":function(e){for(e=e.firstChild;e;e=e.nextSibling){if(e.nodeType<6){return!1}};return!0},\"parent\":function(e){return!t.pseudos[\"empty\"](e)},\"header\":function(e){return xe.test(e.nodeName)},\"input\":function(e){return ye.test(e.nodeName)},\"button\":function(e){var t=e.nodeName.toLowerCase();return t===\"input\"&&e.type===\"button\"||t===\"button\"},\"text\":function(e){var t;return e.nodeName.toLowerCase()===\"input\"&&e.type===\"text\"&&((t=e.getAttribute(\"type\"))==null||t.toLowerCase()===\"text\")},\"first\":w(function(){return[0]}),\"last\":w(function(e,t){return[t-1]}),\"eq\":w(function(e,t,n){return[n<0?n+t:n]}),\"even\":w(function(e,t){var n=0;for(;n<t;n+=2){e.push(n)};return e}),\"odd\":w(function(e,t){var n=1;for(;n<t;n+=2){e.push(n)};return e}),\"lt\":w(function(e,t,n){var i=n<0?n+t:n;for(;--i>=0;){e.push(i)};return e}),\"gt\":w(function(e,t,n){var i=n<0?n+t:n;for(;++i<t;){e.push(i)};return e})}};t.pseudos[\"nth\"]=t.pseudos[\"eq\"];for(E in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0}){t.pseudos[E]=ge(E)};for(E in{submit:!0,reset:!0}){t.pseudos[E]=Ee(E)};function J(){};J.prototype=t.filters=t.pseudos;t.setFilters=new J();j=i.tokenize=function(e,n){var s,o,f,a,r,l,u,c=ie[e+\" \"];if(c){return n?0:c.slice(0)};r=e;l=[];u=t.preFilter;while(r){if(!s||(o=ke.exec(r))){if(o){r=r.slice(o[0].length)||r};l.push((f=[]))};s=!1;if((o=Ne.exec(r))){s=o.shift();f.push({value:s,type:o[0].replace(q,\" \")});r=r.slice(s.length)};for(a in t.filter){if((o=H[a].exec(r))&&(!u[a]||(o=u[a](o)))){s=o.shift();f.push({value:s,type:a,matches:o});r=r.slice(s.length)}};if(!s){break}};return n?r.length:r?i.error(e):ie(e,l).slice(0)};function P(e){var t=0,i=e.length,n=\"\";for(;t<i;t++){n+=e[t].value};return n};function B(e,t,n){var i=t.dir,r=n&&i===\"parentNode\",s=pe++;return t.first?function(t,n,o){while((t=t[i])){if(t.nodeType===1||r){return e(t,n,o)}}}:function(t,n,a){var u,l,f=[d,s];if(a){while((t=t[i])){if(t.nodeType===1||r){if(e(t,n,a)){return!0}}}}\nelse{while((t=t[i])){if(t.nodeType===1||r){l=t[o]||(t[o]={});if((u=l[i])&&u[0]===d&&u[1]===s){return(f[2]=u[2])}\nelse{l[i]=f;if((f[2]=e(t,n,a))){return!0}}}}}}};function I(e){return e.length>1?function(t,n,i){var r=e.length;while(r--){if(!e[r](t,n,i)){return!1}};return!0}:e[0]};function ce(e,t,n){var r=0,o=t.length;for(;r<o;r++){i(e,t[r],n)};return n};function O(e,t,n,i,r){var s,a=[],o=0,f=e.length,u=t!=null;for(;o<f;o++){if((s=e[o])){if(!n||n(s,i,r)){a.push(s);if(u){t.push(o)}}}};return a};function z(e,t,n,i,r,s){if(i&&!i[o]){i=z(i)};if(r&&!r[o]){r=z(r,s)};return l(function(o,s,a,u){var c,l,d,g=[],h=[],v=s.length,m=o||ce(t||\"*\",a.nodeType?[a]:a,[]),p=e&&(o||!t)?O(m,g,e,a,u):m,f=n?r||(o?e:v||i)?[]:s:p;if(n){n(p,f,a,u)};if(i){c=O(f,h);i(c,[],a,u);l=c.length;while(l--){if((d=c[l])){f[h[l]]=!(p[h[l]]=d)}}};if(o){if(r||e){if(r){c=[];l=f.length;while(l--){if((d=f[l])){c.push((p[l]=d))}};r(null,(f=[]),c,u)};l=f.length;while(l--){if((d=f[l])&&(c=r?C(o,d):g[l])>-1){o[c]=!(s[c]=d)}}}}\nelse{f=O(f===s?f.splice(v,f.length):f);if(r){r(null,s,f,u)}\nelse{y.apply(s,f)}}})};function X(e){var u,r,i,a=e.length,f=t.relative[e[0].type],l=f||t.relative[\" \"],n=f?1:0,d=B(function(e){return e===u},l,!0),c=B(function(e){return C(u,e)>-1},l,!0),s=[function(e,t,n){var i=(!f&&(n||t!==A))||((u=t).nodeType?d(e,t,n):c(e,t,n));u=null;return i}];for(;n<a;n++){if((r=t.relative[e[n].type])){s=[B(I(s),r)]}\nelse{r=t.filter[e[n].type].apply(null,e[n].matches);if(r[o]){i=++n;for(;i<a;i++){if(t.relative[e[i].type]){break}};return z(n>1&&I(s),n>1&&P(e.slice(0,n-1).concat({value:e[n-2].type===\" \"?\"*\":\"\"})).replace(q,\"$1\"),r,n<i&&X(e.slice(n,i)),i<a&&X((e=e.slice(i))),i<a&&P(e))};s.push(r)}};return I(s)};function de(e,n){var r=n.length>0,s=e.length>0,o=function(o,u,f,l,c){var h,x,m,v=0,p=\"0\",w=o&&[],g=[],T=A,C=o||s&&t.find[\"TAG\"](\"*\",c),b=(d+=T==null?1:Math.random()||0.1),k=C.length;if(c){A=u!==a&&u};for(;p!==k&&(h=C[p])!=null;p++){if(s&&h){x=0;while((m=e[x++])){if(m(h,u,f)){l.push(h);break}};if(c){d=b}};if(r){if((h=!m&&h)){v--};if(o){w.push(h)}}};v+=p;if(r&&p!==v){x=0;while((m=n[x++])){m(w,g,u,f)};if(o){if(v>0){while(p--){if(!(w[p]||g[p])){g[p]=le.call(l)}}};g=O(g)};y.apply(l,g);if(c&&!o&&g.length>0&&(v+n.length)>1){i.uniqueSort(l)}};if(c){d=b;A=T};return w};return r?l(o):o};U=i.compile=function(e,t){var i,r=[],s=[],n=ue[e+\" \"];if(!n){if(!t){t=j(e)};i=t.length;while(i--){n=X(t[i]);if(n[o]){r.push(n)}\nelse{s.push(n)}};n=ue(e,de(s,r));n.selector=e};return n};oe=i.select=function(e,n,i,o){var f,s,a,c,d,l=typeof e===\"function\"&&e,u=!o&&j((e=l.selector||e));i=i||[];if(u.length===1){s=u[0]=u[0].slice(0);if(s.length>2&&(a=s[0]).type===\"ID\"&&r.getById&&n.nodeType===9&&p&&t.relative[s[1].type]){n=(t.find[\"ID\"](a.matches[0].replace(m,g),n)||[])[0];if(!n){return i}\nelse if(l){n=n.parentNode};e=e.slice(s.shift().value.length)};f=H[\"needsContext\"].test(e)?0:s.length;while(f--){a=s[f];if(t.relative[(c=a.type)]){break};if((d=t.find[c])){if((o=d(a.matches[0].replace(m,g),W.test(s[0].type)&&G(n.parentNode)||n))){s.splice(f,1);e=o.length&&P(s);if(!e){y.apply(i,o);return i};break}}}}(l||U(e,u))(o,n,!p,i,W.test(e)&&G(n.parentNode)||n);return i};r.sortStable=o.split(\"\").sort(Y).join(\"\")===o;r.detectDuplicates=!!k;T();r.sortDetached=h(function(e){return e.compareDocumentPosition(a.createElement(\"div\"))&1});if(!h(function(e){e.innerHTML=\"<a href='#'></a>\";return e.firstChild.getAttribute(\"href\")===\"#\"})){V(\"type|href|height|width\",function(e,t,n){if(!n){return e.getAttribute(t,t.toLowerCase()===\"type\"?1:2)}})};if(!r.attributes||!h(function(e){e.innerHTML=\"<input/>\";e.firstChild.setAttribute(\"value\",\"\");return e.firstChild.getAttribute(\"value\")===\"\"})){V(\"value\",function(e,t,n){if(!n&&e.nodeName.toLowerCase()===\"input\"){return e.defaultValue}})};if(!h(function(e){return e.getAttribute(\"disabled\")==null})){V(Q,function(e,t,n){var i;if(!n){return e[t]===!0?t.toLowerCase():(i=e.getAttributeNode(t))&&i.specified?i.value:null}})};return i})(t);e.find=y;e.expr=y.selectors;e.expr[\":\"]=e.expr.pseudos;e.unique=y.uniqueSort;e.text=y.getText;e.isXMLDoc=y.isXML;e.contains=y.contains;var fe=e.expr.match.needsContext,me=(/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/),Tt=/^.[^:#\\[\\.,]*$/;function I(t,n,i){if(e.isFunction(n)){return e.grep(t,function(e,t){return!!n.call(e,t,e)!==i})};if(n.nodeType){return e.grep(t,function(e){return(e===n)!==i})};if(typeof n===\"string\"){if(Tt.test(n)){return e.filter(n,t,i)};n=e.filter(n,t)};return e.grep(t,function(e){return(E.call(n,e)>=0)!==i})};e.filter=function(t,n,i){var r=n[0];if(i){t=\":not(\"+t+\")\"};return n.length===1&&r.nodeType===1?e.find.matchesSelector(r,t)?[r]:[]:e.find.matches(t,e.grep(n,function(e){return e.nodeType===1}))};e.fn.extend({find:function(t){var n,r=this.length,i=[],o=this;if(typeof t!==\"string\"){return this.pushStack(e(t).filter(function(){for(n=0;n<r;n++){if(e.contains(o[n],this)){return!0}}}))};for(n=0;n<r;n++){e.find(t,o[n],i)};i=this.pushStack(r>1?e.unique(i):i);i.selector=this.selector?this.selector+\" \"+t:t;return i},filter:function(e){return this.pushStack(I(this,e||[],!1))},not:function(e){return this.pushStack(I(this,e||[],!0))},is:function(t){return!!I(this,typeof t===\"string\"&&fe.test(t)?e(t):t||[],!1).length}});var L,kt=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,Ct=e.fn.init=function(t,n){var i,o;if(!t){return this};if(typeof t===\"string\"){if(t[0]===\"<\"&&t[t.length-1]===\">\"&&t.length>=3){i=[null,t,null]}\nelse{i=kt.exec(t)};if(i&&(i[1]||!n)){if(i[1]){n=n instanceof e?n[0]:n;e.merge(this,e.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:r,!0));if(me.test(i[1])&&e.isPlainObject(n)){for(i in n){if(e.isFunction(this[i])){this[i](n[i])}\nelse{this.attr(i,n[i])}}};return this}\nelse{o=r.getElementById(i[2]);if(o&&o.parentNode){this.length=1;this[0]=o};this.context=r;this.selector=t;return this}}\nelse if(!n||n.jquery){return(n||L).find(t)}\nelse{return this.constructor(n).find(t)}}\nelse if(t.nodeType){this.context=this[0]=t;this.length=1;return this}\nelse if(e.isFunction(t)){return typeof L.ready!==\"undefined\"?L.ready(t):t(e)};if(t.selector!==undefined){this.selector=t.selector;this.context=t.context};return e.makeArray(t,this)};Ct.prototype=e.fn;L=e(r);var Lt=/^(?:parents|prev(?:Until|All))/,At={children:!0,contents:!0,next:!0,prev:!0};e.extend({dir:function(t,n,i){var r=[],o=i!==undefined;while((t=t[n])&&t.nodeType!==9){if(t.nodeType===1){if(o&&e(t).is(i)){break};r.push(t)}};return r},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling){if(e.nodeType===1&&e!==t){n.push(e)}};return n}});e.fn.extend({has:function(t){var n=e(t,this),i=n.length;return this.filter(function(){var t=0;for(;t<i;t++){if(e.contains(this,n[t])){return!0}}})},closest:function(t,n){var i,o=0,a=this.length,r=[],s=fe.test(t)||typeof t!==\"string\"?e(t,n||this.context):0;for(;o<a;o++){for(i=this[o];i&&i!==n;i=i.parentNode){if(i.nodeType<11&&(s?s.index(i)>-1:i.nodeType===1&&e.find.matchesSelector(i,t))){r.push(i);break}}};return this.pushStack(r.length>1?e.unique(r):r)},index:function(t){if(!t){return(this[0]&&this[0].parentNode)?this.first().prevAll().length:-1};if(typeof t===\"string\"){return E.call(e(t),this[0])};return E.call(this,t.jquery?t[0]:t)},add:function(t,n){return this.pushStack(e.unique(e.merge(this.get(),e(t,n))))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}});function de(e,t){while((e=e[t])&&e.nodeType!==1){};return e};e.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(t){return e.dir(t,\"parentNode\")},parentsUntil:function(t,n,i){return e.dir(t,\"parentNode\",i)},next:function(e){return de(e,\"nextSibling\")},prev:function(e){return de(e,\"previousSibling\")},nextAll:function(t){return e.dir(t,\"nextSibling\")},prevAll:function(t){return e.dir(t,\"previousSibling\")},nextUntil:function(t,n,i){return e.dir(t,\"nextSibling\",i)},prevUntil:function(t,n,i){return e.dir(t,\"previousSibling\",i)},siblings:function(t){return e.sibling((t.parentNode||{}).firstChild,t)},children:function(t){return e.sibling(t.firstChild)},contents:function(t){return t.contentDocument||e.merge([],t.childNodes)}},function(t,n){e.fn[t]=function(i,r){var o=e.map(this,n,i);if(t.slice(-5)!==\"Until\"){r=i};if(r&&typeof r===\"string\"){o=e.filter(r,o)};if(this.length>1){if(!At[t]){e.unique(o)};if(Lt.test(t)){o.reverse()}};return this.pushStack(o)}});var l=(/\\S+/g),re={};function Ke(t){var n=re[t]={};e.each(t.match(l)||[],function(e,t){n[t]=!0});return n};e.Callbacks=function(t){t=typeof t===\"string\"?(re[t]||Ke(t)):e.extend({},t);var r,l,u,c,s,o,n=[],i=!t.once&&[],f=function(e){r=t.memory&&e;l=!0;o=c||0;c=0;s=n.length;u=!0;for(;n&&o<s;o++){if(n[o].apply(e[0],e[1])===!1&&t.stopOnFalse){r=!1;break}};u=!1;if(n){if(i){if(i.length){f(i.shift())}}\nelse if(r){n=[]}\nelse{a.disable()}}},a={add:function(){if(n){var i=n.length;(function o(i){e.each(i,function(i,r){var s=e.type(r);if(s===\"function\"){if(!t.unique||!a.has(r)){n.push(r)}}\nelse if(r&&r.length&&s!==\"string\"){o(r)}})})(arguments);if(u){s=n.length}\nelse if(r){c=i;f(r)}};return this},remove:function(){if(n){e.each(arguments,function(t,i){var r;while((r=e.inArray(i,n,r))>-1){n.splice(r,1);if(u){if(r<=s){s--};if(r<=o){o--}}}})};return this},has:function(t){return t?e.inArray(t,n)>-1:!!(n&&n.length)},empty:function(){n=[];s=0;return this},disable:function(){n=i=r=undefined;return this},disabled:function(){return!n},lock:function(){i=undefined;if(!r){a.disable()};return this},locked:function(){return!i},fireWith:function(e,t){if(n&&(!l||i)){t=t||[];t=[e,t.slice?t.slice():t];if(u){i.push(t)}\nelse{f(t)}};return this},fire:function(){a.fireWith(this,arguments);return this},fired:function(){return!!l}};return a};e.extend({Deferred:function(t){var r=[[\"resolve\",\"done\",e.Callbacks(\"once memory\"),\"resolved\"],[\"reject\",\"fail\",e.Callbacks(\"once memory\"),\"rejected\"],[\"notify\",\"progress\",e.Callbacks(\"memory\")]],o=\"pending\",i={state:function(){return o},always:function(){n.done(arguments).fail(arguments);return this},then:function(){var t=arguments;return e.Deferred(function(o){e.each(r,function(r,s){var a=e.isFunction(t[r])&&t[r];n[s[1]](function(){var t=a&&a.apply(this,arguments);if(t&&e.isFunction(t.promise)){t.promise().done(o.resolve).fail(o.reject).progress(o.notify)}\nelse{o[s[0]+\"With\"](this===i?o.promise():this,a?[t]:arguments)}})});t=null}).promise()},promise:function(t){return t!=null?e.extend(t,i):i}},n={};i.pipe=i.then;e.each(r,function(e,t){var s=t[2],a=t[3];i[t[1]]=s.add;if(a){s.add(function(){o=a},r[e^1][2].disable,r[2][2].lock)};n[t[0]]=function(){n[t[0]+\"With\"](this===n?i:this,arguments);return this};n[t[0]+\"With\"]=s.fireWith});i.promise(n);if(t){t.call(n,n)};return n},when:function(t){var n=0,r=p.call(arguments),i=r.length,s=i!==1||(t&&e.isFunction(t.promise))?i:0,o=s===1?t:e.Deferred(),f=function(e,t,n){return function(i){t[e]=this;n[e]=arguments.length>1?p.call(arguments):i;if(n===u){o.notifyWith(t,n)}\nelse if(!(--s)){o.resolveWith(t,n)}}},u,l,a;if(i>1){u=new Array(i);l=new Array(i);a=new Array(i);for(;n<i;n++){if(r[n]&&e.isFunction(r[n].promise)){r[n].promise().done(f(n,a,r)).fail(o.reject).progress(f(n,l,u))}\nelse{--s}}};if(!s){o.resolveWith(a,r)};return o.promise()}});var q;e.fn.ready=function(t){e.ready.promise().done(t);return this};e.extend({isReady:!1,readyWait:1,holdReady:function(t){if(t){e.readyWait++}\nelse{e.ready(!0)}},ready:function(t){if(t===!0?--e.readyWait:e.isReady){return};e.isReady=!0;if(t!==!0&&--e.readyWait>0){return};q.resolveWith(r,[e]);if(e.fn.triggerHandler){e(r).triggerHandler(\"ready\");e(r).off(\"ready\")}}});function H(){r.removeEventListener(\"DOMContentLoaded\",H,!1);t.removeEventListener(\"load\",H,!1);e.ready()};e.ready.promise=function(n){if(!q){q=e.Deferred();if(r.readyState===\"complete\"){setTimeout(e.ready)}\nelse{r.addEventListener(\"DOMContentLoaded\",H,!1);t.addEventListener(\"load\",H,!1)}};return q.promise(n)};e.ready.promise();var c=e.access=function(t,n,i,r,o,u,f){var s=0,l=t.length,a=i==null;if(e.type(i)===\"object\"){o=!0;for(s in i){e.access(t,n,s,i[s],!0,u,f)}}\nelse if(r!==undefined){o=!0;if(!e.isFunction(r)){f=!0};if(a){if(f){n.call(t,r);n=null}\nelse{a=n;n=function(t,n,i){return a.call(e(t),i)}}};if(n){for(;s<l;s++){n(t[s],i,f?r:r.call(t[s],s,n(t[s],i)))}}};return o?t:a?n.call(t):l?n(t[0],i):u};e.acceptData=function(e){return e.nodeType===1||e.nodeType===9||!(+e.nodeType)};function d(){Object.defineProperty(this.cache={},0,{get:function(){return{}}});this.expando=e.expando+d.uid++};d.uid=1;d.accepts=e.acceptData;d.prototype={key:function(t){if(!d.accepts(t)){return 0};var r={},i=t[this.expando];if(!i){i=d.uid++;try{r[this.expando]={value:i};Object.defineProperties(t,r)}catch(n){r[this.expando]=i;e.extend(t,r)}};if(!this.cache[i]){this.cache[i]={}};return i},set:function(t,n,i){var o,s=this.key(t),r=this.cache[s];if(typeof n===\"string\"){r[n]=i}\nelse{if(e.isEmptyObject(r)){e.extend(this.cache[s],n)}\nelse{for(o in n){r[o]=n[o]}}};return r},get:function(e,t){var n=this.cache[this.key(e)];return t===undefined?n:n[t]},access:function(t,n,i){var r;if(n===undefined||((n&&typeof n===\"string\")&&i===undefined)){r=this.get(t,n);return r!==undefined?r:this.get(t,e.camelCase(n))};this.set(t,n,i);return i!==undefined?i:n},remove:function(t,n){var s,i,o,a=this.key(t),r=this.cache[a];if(n===undefined){this.cache[a]={}}\nelse{if(e.isArray(n)){i=n.concat(n.map(e.camelCase))}\nelse{o=e.camelCase(n);if(n in r){i=[n,o]}\nelse{i=o;i=i in r?[i]:(i.match(l)||[])}};s=i.length;while(s--){delete r[i[s]]}}},hasData:function(t){return!e.isEmptyObject(this.cache[t[this.expando]]||{})},discard:function(e){if(e[this.expando]){delete this.cache[e[this.expando]]}}};var i=new d(),s=new d(),et=/^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,Rt=/([A-Z])/g;function ye(t,n,i){var o;if(i===undefined&&t.nodeType===1){o=\"data-\"+n.replace(Rt,\"-$1\").toLowerCase();i=t.getAttribute(o);if(typeof i===\"string\"){try{i=i===\"true\"?!0:i===\"false\"?!1:i===\"null\"?null:+i+\"\"===i?+i:et.test(i)?e.parseJSON(i):i}catch(r){};s.set(t,n,i)}\nelse{i=undefined}};return i};e.extend({hasData:function(e){return s.hasData(e)||i.hasData(e)},data:function(e,t,n){return s.access(e,t,n)},removeData:function(e,t){s.remove(e,t)},_data:function(e,t,n){return i.access(e,t,n)},_removeData:function(e,t){i.remove(e,t)}});e.fn.extend({data:function(t,n){var a,o,f,r=this[0],u=r&&r.attributes;if(t===undefined){if(this.length){f=s.get(r);if(r.nodeType===1&&!i.get(r,\"hasDataAttrs\")){a=u.length;while(a--){if(u[a]){o=u[a].name;if(o.indexOf(\"data-\")===0){o=e.camelCase(o.slice(5));ye(r,o,f[o])}}};i.set(r,\"hasDataAttrs\",!0)}};return f};if(typeof t===\"object\"){return this.each(function(){s.set(this,t)})};return c(this,function(n){var i,o=e.camelCase(t);if(r&&n===undefined){i=s.get(r,t);if(i!==undefined){return i};i=s.get(r,o);if(i!==undefined){return i};i=ye(r,o,undefined);if(i!==undefined){return i};return};this.each(function(){var e=s.get(this,o);s.set(this,o,n);if(t.indexOf(\"-\")!==-1&&e!==undefined){s.set(this,t,n)}})},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){s.remove(this,e)})}});e.extend({queue:function(t,n,r){var o;if(t){n=(n||\"fx\")+\"queue\";o=i.get(t,n);if(r){if(!o||e.isArray(r)){o=i.access(t,n,e.makeArray(r))}\nelse{o.push(r)}};return o||[]}},dequeue:function(t,n){n=n||\"fx\";var r=e.queue(t,n),s=r.length,i=r.shift(),o=e._queueHooks(t,n),a=function(){e.dequeue(t,n)};if(i===\"inprogress\"){i=r.shift();s--};if(i){if(n===\"fx\"){r.unshift(\"inprogress\")};delete o.stop;i.call(t,a,o)};if(!s&&o){o.empty.fire()}},_queueHooks:function(t,n){var r=n+\"queueHooks\";return i.get(t,r)||i.access(t,r,{empty:e.Callbacks(\"once memory\").add(function(){i.remove(t,[n+\"queue\",r])})})}});e.fn.extend({queue:function(t,n){var i=2;if(typeof t!==\"string\"){n=t;t=\"fx\";i--};if(arguments.length<i){return e.queue(this[0],t)};return n===undefined?this:this.each(function(){var i=e.queue(this,t,n);e._queueHooks(this,t);if(t===\"fx\"&&i[0]!==\"inprogress\"){e.dequeue(this,t)}})},dequeue:function(t){return this.each(function(){e.dequeue(this,t)})},clearQueue:function(e){return this.queue(e||\"fx\",[])},promise:function(t,n){var r,u=1,f=e.Deferred(),o=this,a=this.length,s=function(){if(!(--u)){f.resolveWith(o,[o])}};if(typeof t!==\"string\"){n=t;t=undefined};t=t||\"fx\";while(a--){r=i.get(o[a],t+\"queueHooks\");if(r&&r.empty){u++;r.empty.add(s)}};s();return f.promise(n)}});var D=(/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/).source,h=[\"Top\",\"Right\",\"Bottom\",\"Left\"],k=function(t,n){t=n||t;return e.css(t,\"display\")===\"none\"||!e.contains(t.ownerDocument,t)},We=(/^(?:checkbox|radio)$/i);(function(){var n=r.createDocumentFragment(),t=n.appendChild(r.createElement(\"div\")),e=r.createElement(\"input\");e.setAttribute(\"type\",\"radio\");e.setAttribute(\"checked\",\"checked\");e.setAttribute(\"name\",\"t\");t.appendChild(e);o.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked;t.innerHTML=\"<textarea>x</textarea>\";o.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue})(),strundefined=typeof undefined;o.focusinBubbles=\"onfocusin\" in t;var Pt=/^key/,Wt=/^(?:mouse|pointer|contextmenu)|click/,Pe=/^(?:focusinfocus|focusoutblur)$/,Oe=/^([^.]*)(?:\\.(.+)|)$/;function A(){return!0};function x(){return!1};function te(){try{return r.activeElement}catch(e){}};e.event={global:{},add:function(t,n,r,o,s){var h,g,m,p,v,f,u,c,a,y,x,d=i.get(t);if(!d){return};if(r.handler){h=r;r=h.handler;s=h.selector};if(!r.guid){r.guid=e.guid++};if(!(p=d.events)){p=d.events={}};if(!(g=d.handle)){g=d.handle=function(n){return typeof e!==strundefined&&e.event.triggered!==n.type?e.event.dispatch.apply(t,arguments):undefined}};n=(n||\"\").match(l)||[\"\"];v=n.length;while(v--){m=Oe.exec(n[v])||[];a=x=m[1];y=(m[2]||\"\").split(\".\").sort();if(!a){continue};u=e.event.special[a]||{};a=(s?u.delegateType:u.bindType)||a;u=e.event.special[a]||{};f=e.extend({type:a,origType:x,data:o,handler:r,guid:r.guid,selector:s,needsContext:s&&e.expr.match.needsContext.test(s),namespace:y.join(\".\")},h);if(!(c=p[a])){c=p[a]=[];c.delegateCount=0;if(!u.setup||u.setup.call(t,o,y,g)===!1){if(t.addEventListener){t.addEventListener(a,g,!1)}}};if(u.add){u.add.call(t,f);if(!f.handler.guid){f.handler.guid=r.guid}};if(s){c.splice(c.delegateCount++,0,f)}\nelse{c.push(f)};e.event.global[a]=!0}},remove:function(t,n,r,o,s){var g,v,f,h,m,u,c,d,a,y,x,p=i.hasData(t)&&i.get(t);if(!p||!(h=p.events)){return};n=(n||\"\").match(l)||[\"\"];m=n.length;while(m--){f=Oe.exec(n[m])||[];a=x=f[1];y=(f[2]||\"\").split(\".\").sort();if(!a){for(a in h){e.event.remove(t,a+n[m],r,o,!0)};continue};c=e.event.special[a]||{};a=(o?c.delegateType:c.bindType)||a;d=h[a]||[];f=f[2]&&new RegExp(\"(^|\\\\.)\"+y.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\");v=g=d.length;while(g--){u=d[g];if((s||x===u.origType)&&(!r||r.guid===u.guid)&&(!f||f.test(u.namespace))&&(!o||o===u.selector||o===\"**\"&&u.selector)){d.splice(g,1);if(u.selector){d.delegateCount--};if(c.remove){c.remove.call(t,u)}}};if(v&&!d.length){if(!c.teardown||c.teardown.call(t,y,p.handle)===!1){e.removeEvent(t,a,p.handle)};delete h[a]}};if(e.isEmptyObject(h)){delete p.handle;i.remove(t,\"events\")}},trigger:function(n,o,s,a){var y,u,l,m,d,p,c,g=[s||r],f=ee.call(n,\"type\")?n.type:n,h=ee.call(n,\"namespace\")?n.namespace.split(\".\"):[];u=l=s=s||r;if(s.nodeType===3||s.nodeType===8){return};if(Pe.test(f+e.event.triggered)){return};if(f.indexOf(\".\")>=0){h=f.split(\".\");f=h.shift();h.sort()};d=f.indexOf(\":\")<0&&\"on\"+f;n=n[e.expando]?n:new e.Event(f,typeof n===\"object\"&&n);n.isTrigger=a?2:3;n.namespace=h.join(\".\");n.namespace_re=n.namespace?new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null;n.result=undefined;if(!n.target){n.target=s};o=o==null?[n]:e.makeArray(o,[n]);c=e.event.special[f]||{};if(!a&&c.trigger&&c.trigger.apply(s,o)===!1){return};if(!a&&!c.noBubble&&!e.isWindow(s)){m=c.delegateType||f;if(!Pe.test(m+f)){u=u.parentNode};for(;u;u=u.parentNode){g.push(u);l=u};if(l===(s.ownerDocument||r)){g.push(l.defaultView||l.parentWindow||t)}};y=0;while((u=g[y++])&&!n.isPropagationStopped()){n.type=y>1?m:c.bindType||f;p=(i.get(u,\"events\")||{})[n.type]&&i.get(u,\"handle\");if(p){p.apply(u,o)};p=d&&u[d];if(p&&p.apply&&e.acceptData(u)){n.result=p.apply(u,o);if(n.result===!1){n.preventDefault()}}};n.type=f;if(!a&&!n.isDefaultPrevented()){if((!c._default||c._default.apply(g.pop(),o)===!1)&&e.acceptData(s)){if(d&&e.isFunction(s[f])&&!e.isWindow(s)){l=s[d];if(l){s[d]=null};e.event.triggered=f;s[f]();e.event.triggered=undefined;if(l){s[d]=l}}}};return n.result},dispatch:function(t){t=e.event.fix(t);var a,l,s,o,n,f=[],u=p.call(arguments),c=(i.get(this,\"events\")||{})[t.type]||[],r=e.event.special[t.type]||{};u[0]=t;t.delegateTarget=this;if(r.preDispatch&&r.preDispatch.call(this,t)===!1){return};f=e.event.handlers.call(this,t,c);a=0;while((o=f[a++])&&!t.isPropagationStopped()){t.currentTarget=o.elem;l=0;while((n=o.handlers[l++])&&!t.isImmediatePropagationStopped()){if(!t.namespace_re||t.namespace_re.test(n.namespace)){t.handleObj=n;t.data=n.data;s=((e.event.special[n.origType]||{}).handle||n.handler).apply(o.elem,u);if(s!==undefined){if((t.result=s)===!1){t.preventDefault();t.stopPropagation()}}}}};if(r.postDispatch){r.postDispatch.call(this,t)};return t.result},handlers:function(t,n){var u,r,o,a,f=[],s=n.delegateCount,i=t.target;if(s&&i.nodeType&&(!t.button||t.type!==\"click\")){for(;i!==this;i=i.parentNode||this){if(i.disabled!==!0||t.type!==\"click\"){r=[];for(u=0;u<s;u++){a=n[u];o=a.selector+\" \";if(r[o]===undefined){r[o]=a.needsContext?e(o,this).index(i)>=0:e.find(o,this,null,[i]).length};if(r[o]){r.push(a)}};if(r.length){f.push({elem:i,handlers:r})}}}};if(s<n.length){f.push({elem:this,handlers:n.slice(s)})};return f},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){if(e.which==null){e.which=t.charCode!=null?t.charCode:t.keyCode};return e}},mouseHooks:{props:\"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),filter:function(e,t){var s,n,i,o=t.button;if(e.pageX==null&&t.clientX!=null){s=e.target.ownerDocument||r;n=s.documentElement;i=s.body;e.pageX=t.clientX+(n&&n.scrollLeft||i&&i.scrollLeft||0)-(n&&n.clientLeft||i&&i.clientLeft||0);e.pageY=t.clientY+(n&&n.scrollTop||i&&i.scrollTop||0)-(n&&n.clientTop||i&&i.clientTop||0)};if(!e.which&&o!==undefined){e.which=(o&1?1:(o&2?3:(o&4?2:0)))};return e}},fix:function(t){if(t[e.expando]){return t};var a,u,s,i=t.type,o=t,n=this.fixHooks[i];if(!n){this.fixHooks[i]=n=Wt.test(i)?this.mouseHooks:Pt.test(i)?this.keyHooks:{}};s=n.props?this.props.concat(n.props):this.props;t=new e.Event(o);a=s.length;while(a--){u=s[a];t[u]=o[u]};if(!t.target){t.target=r};if(t.target.nodeType===3){t.target=t.target.parentNode};return n.filter?n.filter(t,o):t},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==te()&&this.focus){this.focus();return!1}},delegateType:\"focusin\"},blur:{trigger:function(){if(this===te()&&this.blur){this.blur();return!1}},delegateType:\"focusout\"},click:{trigger:function(){if(this.type===\"checkbox\"&&this.click&&e.nodeName(this,\"input\")){this.click();return!1}},_default:function(t){return e.nodeName(t.target,\"a\")}},beforeunload:{postDispatch:function(e){if(e.result!==undefined&&e.originalEvent){e.originalEvent.returnValue=e.result}}}},simulate:function(t,n,i,r){var o=e.extend(new e.Event(),i,{type:t,isSimulated:!0,originalEvent:{}});if(r){e.event.trigger(o,null,n)}\nelse{e.event.dispatch.call(n,o)};if(o.isDefaultPrevented()){i.preventDefault()}}};e.removeEvent=function(e,t,n){if(e.removeEventListener){e.removeEventListener(t,n,!1)}};e.Event=function(t,n){if(!(this instanceof e.Event)){return new e.Event(t,n)};if(t&&t.type){this.originalEvent=t;this.type=t.type;this.isDefaultPrevented=t.defaultPrevented||t.defaultPrevented===undefined&&t.returnValue===!1?A:x}\nelse{this.type=t};if(n){e.extend(this,n)};this.timeStamp=t&&t.timeStamp||e.now();this[e.expando]=!0};e.Event.prototype={isDefaultPrevented:x,isPropagationStopped:x,isImmediatePropagationStopped:x,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=A;if(e&&e.preventDefault){e.preventDefault()}},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=A;if(e&&e.stopPropagation){e.stopPropagation()}},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=A;if(e&&e.stopImmediatePropagation){e.stopImmediatePropagation()};this.stopPropagation()}};e.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\",pointerenter:\"pointerover\",pointerleave:\"pointerout\"},function(t,n){e.event.special[t]={delegateType:n,bindType:n,handle:function(t){var s,o=this,i=t.relatedTarget,r=t.handleObj;if(!i||(i!==o&&!e.contains(o,i))){t.type=r.origType;s=r.handler.apply(this,arguments);t.type=n};return s}}});if(!o.focusinBubbles){e.each({focus:\"focusin\",blur:\"focusout\"},function(t,n){var r=function(t){e.event.simulate(n,t.target,e.event.fix(t),!0)};e.event.special[n]={setup:function(){var e=this.ownerDocument||this,o=i.access(e,n);if(!o){e.addEventListener(t,r,!0)};i.access(e,n,(o||0)+1)},teardown:function(){var e=this.ownerDocument||this,o=i.access(e,n)-1;if(!o){e.removeEventListener(t,r,!0);i.remove(e,n)}\nelse{i.access(e,n,o)}}}})};e.fn.extend({on:function(t,n,i,r,o){var s,a;if(typeof t===\"object\"){if(typeof n!==\"string\"){i=i||n;n=undefined};for(a in t){this.on(a,n,i,t[a],o)};return this};if(i==null&&r==null){r=n;i=n=undefined}\nelse if(r==null){if(typeof n===\"string\"){r=i;i=undefined}\nelse{r=i;i=n;n=undefined}};if(r===!1){r=x}\nelse if(!r){return this};if(o===1){s=r;r=function(t){e().off(t);return s.apply(this,arguments)};r.guid=s.guid||(s.guid=e.guid++)};return this.each(function(){e.event.add(this,t,r,i,n)})},one:function(e,t,n,i){return this.on(e,t,n,i,1)},off:function(t,n,i){var r,o;if(t&&t.preventDefault&&t.handleObj){r=t.handleObj;e(t.delegateTarget).off(r.namespace?r.origType+\".\"+r.namespace:r.origType,r.selector,r.handler);return this};if(typeof t===\"object\"){for(o in t){this.off(o,n,t[o])};return this};if(n===!1||typeof n===\"function\"){i=n;n=undefined};if(i===!1){i=x};return this.each(function(){e.event.remove(this,t,i,n)})},trigger:function(t,n){return this.each(function(){e.event.trigger(t,n,this)})},triggerHandler:function(t,n){var i=this[0];if(i){return e.event.trigger(t,n,i,!0)}}});var ke=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,Fe=/<([\\w:]+)/,bt=/<|&#?\\w+;/,Ft=/<(?:script|style|link)/i,Ht=/checked\\s*(?:[^=]|=\\s*.checked.)/i,ze=/^$|\\/(?:java|ecma)script/i,qt=/^true\\/(.*)/,Ot=/^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g,f={option:[1,\"<select multiple='multiple'>\",\"</select>\"],thead:[1,\"<table>\",\"</table>\"],col:[2,\"<table><colgroup>\",\"</colgroup></table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],td:[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"],_default:[0,\"\",\"\"]};f.optgroup=f.option;f.tbody=f.tfoot=f.colgroup=f.caption=f.thead;f.th=f.td;function ue(t,n){return e.nodeName(t,\"table\")&&e.nodeName(n.nodeType!==11?n:n.firstChild,\"tr\")?t.getElementsByTagName(\"tbody\")[0]||t.appendChild(t.ownerDocument.createElement(\"tbody\")):t};function Ue(e){e.type=(e.getAttribute(\"type\")!==null)+\"/\"+e.type;return e};function Je(e){var t=qt.exec(e.type);if(t){e.type=t[1]}\nelse{e.removeAttribute(\"type\")};return e};function z(e,t){var n=0,r=e.length;for(;n<r;n++){i.set(e[n],\"globalEval\",!t||i.get(t[n],\"globalEval\"))}};function Be(t,n){var a,d,o,f,u,c,l,r;if(n.nodeType!==1){return};if(i.hasData(t)){f=i.access(t);u=i.set(n,f);r=f.events;if(r){delete u.handle;u.events={};for(o in r){for(a=0,d=r[o].length;a<d;a++){e.event.add(n,o,r[o][a])}}}};if(s.hasData(t)){c=s.access(t);l=e.extend({},c);s.set(n,l)}};function a(t,n){var i=t.getElementsByTagName?t.getElementsByTagName(n||\"*\"):t.querySelectorAll?t.querySelectorAll(n||\"*\"):[];return n===undefined||n&&e.nodeName(t,n)?e.merge([t],i):i};function Ze(e,t){var n=t.nodeName.toLowerCase();if(n===\"input\"&&We.test(e.type)){t.checked=e.checked}\nelse if(n===\"input\"||n===\"textarea\"){t.defaultValue=e.defaultValue}};e.extend({clone:function(t,n,i){var r,l,u,s,f=t.cloneNode(!0),c=e.contains(t.ownerDocument,t);if(!o.noCloneChecked&&(t.nodeType===1||t.nodeType===11)&&!e.isXMLDoc(t)){s=a(f);u=a(t);for(r=0,l=u.length;r<l;r++){Ze(u[r],s[r])}};if(n){if(i){u=u||a(t);s=s||a(f);for(r=0,l=u.length;r<l;r++){Be(u[r],s[r])}}\nelse{Be(t,f)}};s=a(f,\"script\");if(s.length>0){z(s,!c&&a(t,\"script\"))};return f},buildFragment:function(t,n,i,r){var o,s,h,c,g,d,u=n.createDocumentFragment(),p=[],l=0,m=t.length;for(;l<m;l++){o=t[l];if(o||o===0){if(e.type(o)===\"object\"){e.merge(p,o.nodeType?[o]:o)}\nelse if(!bt.test(o)){p.push(n.createTextNode(o))}\nelse{s=s||u.appendChild(n.createElement(\"div\"));h=(Fe.exec(o)||[\"\",\"\"])[1].toLowerCase();c=f[h]||f._default;s.innerHTML=c[1]+o.replace(ke,\"<$1></$2>\")+c[2];d=c[0];while(d--){s=s.lastChild};e.merge(p,s.childNodes);s=u.firstChild;s.textContent=\"\"}}};u.textContent=\"\";l=0;while((o=p[l++])){if(r&&e.inArray(o,r)!==-1){continue};g=e.contains(o.ownerDocument,o);s=a(u.appendChild(o),\"script\");if(g){z(s)};if(i){d=0;while((o=s[d++])){if(ze.test(o.type||\"\")){i.push(o)}}}};return u},cleanData:function(t){var a,n,o,r,f=e.event.special,u=0;for(;(n=t[u])!==undefined;u++){if(e.acceptData(n)){r=n[i.expando];if(r&&(a=i.cache[r])){if(a.events){for(o in a.events){if(f[o]){e.event.remove(n,o)}\nelse{e.removeEvent(n,o,a.handle)}}};if(i.cache[r]){delete i.cache[r]}}};delete s.cache[n[s.expando]]}}});e.fn.extend({text:function(t){return c(this,function(t){return t===undefined?e.text(this):this.empty().each(function(){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){this.textContent=t}})},null,t,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var t=ue(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var t=ue(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){if(this.parentNode){this.parentNode.insertBefore(e,this)}})},after:function(){return this.domManip(arguments,function(e){if(this.parentNode){this.parentNode.insertBefore(e,this.nextSibling)}})},remove:function(t,n){var i,o=t?e.filter(t,this):this,r=0;for(;(i=o[r])!=null;r++){if(!n&&i.nodeType===1){e.cleanData(a(i))};if(i.parentNode){if(n&&e.contains(i.ownerDocument,i)){z(a(i,\"script\"))};i.parentNode.removeChild(i)}};return this},empty:function(){var t,n=0;for(;(t=this[n])!=null;n++){if(t.nodeType===1){e.cleanData(a(t,!1));t.textContent=\"\"}};return this},clone:function(t,n){t=t==null?!1:t;n=n==null?t:n;return this.map(function(){return e.clone(this,t,n)})},html:function(t){return c(this,function(t){var i=this[0]||{},r=0,o=this.length;if(t===undefined&&i.nodeType===1){return i.innerHTML};if(typeof t===\"string\"&&!Ft.test(t)&&!f[(Fe.exec(t)||[\"\",\"\"])[1].toLowerCase()]){t=t.replace(ke,\"<$1></$2>\");try{for(;r<o;r++){i=this[r]||{};if(i.nodeType===1){e.cleanData(a(i,!1));i.innerHTML=t}};i=0}catch(n){}};if(i){this.empty().append(t)}},null,t,arguments.length)},replaceWith:function(){var t=arguments[0];this.domManip(arguments,function(n){t=this.parentNode;e.cleanData(a(this));if(t){t.replaceChild(n,this)}});return t&&(t.length||t.nodeType)?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(t,n){t=ge.apply([],t);var f,p,u,l,r,g,s=0,d=this.length,y=this,m=d-1,c=t[0],h=e.isFunction(c);if(h||(d>1&&typeof c===\"string\"&&!o.checkClone&&Ht.test(c))){return this.each(function(e){var i=y.eq(e);if(h){t[0]=c.call(this,e,i.html())};i.domManip(t,n)})};if(d){f=e.buildFragment(t,this[0].ownerDocument,!1,this);p=f.firstChild;if(f.childNodes.length===1){f=p};if(p){u=e.map(a(f,\"script\"),Ue);l=u.length;for(;s<d;s++){r=f;if(s!==m){r=e.clone(r,!0,!0);if(l){e.merge(u,a(r,\"script\"))}};n.call(this[s],r,s)};if(l){g=u[u.length-1].ownerDocument;e.map(u,Je);for(s=0;s<l;s++){r=u[s];if(ze.test(r.type||\"\")&&!i.access(r,\"globalEval\")&&e.contains(g,r)){if(r.src){if(e._evalUrl){e._evalUrl(r.src)}}\nelse{e.globalEval(r.textContent.replace(Ot,\"\"))}}}}}};return this}});e.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(t,n){e.fn[t]=function(t){var r,s=[],a=e(t),o=a.length-1,i=0;for(;i<=o;i++){r=i===o?this:this.clone(!0);e(a[i])[n](r);G.apply(s,r.get())};return this.pushStack(s)}});var O,Ne={};function Xe(n,i){var o,r=e(i.createElement(n)).appendTo(i.body),s=t.getDefaultComputedStyle&&(o=t.getDefaultComputedStyle(r[0]))?o.display:e.css(r[0],\"display\");r.detach();return s};function V(t){var i=r,n=Ne[t];if(!n){n=Xe(t,i);if(n===\"none\"||!n){O=(O||e(\"<iframe frameborder='0' width='0' height='0'/>\")).appendTo(i.documentElement);i=O[0].contentDocument;i.write();i.close();n=Xe(t,i);O.detach()};Ne[t]=n};return n};var Ce=(/^margin/),W=new RegExp(\"^(\"+D+\")(?!px)[a-z%]+$\",\"i\"),j=function(e){if(e.ownerDocument.defaultView.opener){return e.ownerDocument.defaultView.getComputedStyle(e,null)};return t.getComputedStyle(e,null)};function C(t,n,i){var s,a,u,o,r=t.style;i=i||j(t);if(i){o=i.getPropertyValue(n)||i[n]};if(i){if(o===\"\"&&!e.contains(t.ownerDocument,t)){o=e.style(t,n)};if(W.test(o)&&Ce.test(n)){s=r.width;a=r.minWidth;u=r.maxWidth;r.minWidth=r.maxWidth=r.width=o;o=i.width;r.width=s;r.minWidth=a;r.maxWidth=u}};return o!==undefined?o+\"\":o};function be(e,t){return{get:function(){if(e()){delete this.get;return};return(this.get=t).apply(this,arguments)}}}(function(){var f,a,s=r.documentElement,i=r.createElement(\"div\"),n=r.createElement(\"div\");if(!n.style){return};n.style.backgroundClip=\"content-box\";n.cloneNode(!0).style.backgroundClip=\"\";o.clearCloneStyle=n.style.backgroundClip===\"content-box\";i.style.cssText=\"border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute\";i.appendChild(n);function u(){n.style.cssText=\"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute\";n.innerHTML=\"\";s.appendChild(i);var e=t.getComputedStyle(n,null);f=e.top!==\"1%\";a=e.width===\"4px\";s.removeChild(i)};if(t.getComputedStyle){e.extend(o,{pixelPosition:function(){u();return f},boxSizingReliable:function(){if(a==null){u()};return a},reliableMarginRight:function(){var o,e=n.appendChild(r.createElement(\"div\"));e.style.cssText=n.style.cssText=\"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0\";e.style.marginRight=e.style.width=\"0\";n.style.width=\"1px\";s.appendChild(i);o=!parseFloat(t.getComputedStyle(e,null).marginRight);s.removeChild(i);n.removeChild(e);return o}})}})();e.swap=function(e,t,n,i){var s,r,o={};for(r in t){o[r]=e.style[r];e.style[r]=t[r]};s=n.apply(e,i||[]);for(r in t){e.style[r]=o[r]};return s};var ft=/^(none|table(?!-c[ea]).+)/,ut=new RegExp(\"^(\"+D+\")(.*)$\",\"i\"),at=new RegExp(\"^([+-])=(\"+D+\")\",\"i\"),wt={position:\"absolute\",visibility:\"hidden\",display:\"block\"},we={letterSpacing:\"0\",fontWeight:\"400\"},Te=[\"Webkit\",\"O\",\"Moz\",\"ms\"];function Ee(e,t){if(t in e){return t};var i=t[0].toUpperCase()+t.slice(1),r=t,n=Te.length;while(n--){t=Te[n]+i;if(t in e){return t}};return r};function Se(e,t,n){var i=ut.exec(t);return i?Math.max(0,i[1]-(n||0))+(i[2]||\"px\"):t};function qe(t,n,i,r,o){var s=i===(r?\"border\":\"content\")?4:n===\"width\"?1:0,a=0;for(;s<4;s+=2){if(i===\"margin\"){a+=e.css(t,i+h[s],!0,o)};if(r){if(i===\"content\"){a-=e.css(t,\"padding\"+h[s],!0,o)};if(i!==\"margin\"){a-=e.css(t,\"border\"+h[s]+\"Width\",!0,o)}}\nelse{a+=e.css(t,\"padding\"+h[s],!0,o);if(i!==\"padding\"){a+=e.css(t,\"border\"+h[s]+\"Width\",!0,o)}}};return a};function Le(t,n,i){var u=!0,r=n===\"width\"?t.offsetWidth:t.offsetHeight,s=j(t),a=e.css(t,\"boxSizing\",!1,s)===\"border-box\";if(r<=0||r==null){r=C(t,n,s);if(r<0||r==null){r=t.style[n]};if(W.test(r)){return r};u=a&&(o.boxSizingReliable()||r===t.style[n]);r=parseFloat(r)||0};return(r+qe(t,n,i||(a?\"border\":\"content\"),u,s))+\"px\"};function je(t,n){var s,r,u,a=[],o=0,f=t.length;for(;o<f;o++){r=t[o];if(!r.style){continue};a[o]=i.get(r,\"olddisplay\");s=r.style.display;if(n){if(!a[o]&&s===\"none\"){r.style.display=\"\"};if(r.style.display===\"\"&&k(r)){a[o]=i.access(r,\"olddisplay\",V(r.nodeName))}}\nelse{u=k(r);if(s!==\"none\"||!u){i.set(r,\"olddisplay\",u?s:e.css(r,\"display\"))}}};for(o=0;o<f;o++){r=t[o];if(!r.style){continue};if(!n||r.style.display===\"none\"||r.style.display===\"\"){r.style.display=n?a[o]||\"\":\"none\"}};return t};e.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=C(e,\"opacity\");return n===\"\"?\"1\":n}}}},cssNumber:{\"columnCount\":!0,\"fillOpacity\":!0,\"flexGrow\":!0,\"flexShrink\":!0,\"fontWeight\":!0,\"lineHeight\":!0,\"opacity\":!0,\"order\":!0,\"orphans\":!0,\"widows\":!0,\"zIndex\":!0,\"zoom\":!0},cssProps:{\"float\":\"cssFloat\"},style:function(t,n,i,r){if(!t||t.nodeType===3||t.nodeType===8||!t.style){return};var u,l,s,a=e.camelCase(n),f=t.style;n=e.cssProps[a]||(e.cssProps[a]=Ee(f,a));s=e.cssHooks[n]||e.cssHooks[a];if(i!==undefined){l=typeof i;if(l===\"string\"&&(u=at.exec(i))){i=(u[1]+1)*u[2]+parseFloat(e.css(t,n));l=\"number\"};if(i==null||i!==i){return};if(l===\"number\"&&!e.cssNumber[a]){i+=\"px\"};if(!o.clearCloneStyle&&i===\"\"&&n.indexOf(\"background\")===0){f[n]=\"inherit\"};if(!s||!(\"set\" in s)||(i=s.set(t,i,r))!==undefined){f[n]=i}}\nelse{if(s&&\"get\" in s&&(u=s.get(t,!1,r))!==undefined){return u};return f[n]}},css:function(t,n,i,r){var o,u,s,a=e.camelCase(n);n=e.cssProps[a]||(e.cssProps[a]=Ee(t.style,a));s=e.cssHooks[n]||e.cssHooks[a];if(s&&\"get\" in s){o=s.get(t,!0,i)};if(o===undefined){o=C(t,n,r)};if(o===\"normal\"&&n in we){o=we[n]};if(i===\"\"||i){u=parseFloat(o);return i===!0||e.isNumeric(u)?u||0:o};return o}});e.each([\"height\",\"width\"],function(t,n){e.cssHooks[n]={get:function(t,i,r){if(i){return ft.test(e.css(t,\"display\"))&&t.offsetWidth===0?e.swap(t,wt,function(){return Le(t,n,r)}):Le(t,n,r)}},set:function(t,i,r){var o=r&&j(t);return Se(t,i,r?qe(t,n,r,e.css(t,\"boxSizing\",!1,o)===\"border-box\",o):0)}}});e.cssHooks.marginRight=be(o.reliableMarginRight,function(t,n){if(n){return e.swap(t,{\"display\":\"inline-block\"},C,[t,\"marginRight\"])}});e.each({margin:\"\",padding:\"\",border:\"Width\"},function(t,n){e.cssHooks[t+n]={expand:function(e){var i=0,o={},r=typeof e===\"string\"?e.split(\" \"):[e];for(;i<4;i++){o[t+h[i]+n]=r[i]||r[i-2]||r[0]};return o}};if(!Ce.test(t)){e.cssHooks[t+n].set=Se}});e.fn.extend({css:function(t,n){return c(this,function(t,n,i){var s,a,o={},r=0;if(e.isArray(n)){s=j(t);a=n.length;for(;r<a;r++){o[n[r]]=e.css(t,n[r],!1,s)};return o};return i!==undefined?e.style(t,n,i):e.css(t,n)},t,n,arguments.length>1)},show:function(){return je(this,!0)},hide:function(){return je(this)},toggle:function(t){if(typeof t===\"boolean\"){return t?this.show():this.hide()};return this.each(function(){if(k(this)){e(this).show()}\nelse{e(this).hide()}})}});function u(e,t,n,i,r){return new u.prototype.init(e,t,n,i,r)};e.Tween=u;u.prototype={constructor:u,init:function(t,n,i,r,o,s){this.elem=t;this.prop=i;this.easing=o||\"swing\";this.options=n;this.start=this.now=this.cur();this.end=r;this.unit=s||(e.cssNumber[i]?\"\":\"px\")},cur:function(){var e=u.propHooks[this.prop];return e&&e.get?e.get(this):u.propHooks._default.get(this)},run:function(t){var i,n=u.propHooks[this.prop];if(this.options.duration){this.pos=i=e.easing[this.easing](t,this.options.duration*t,0,1,this.options.duration)}\nelse{this.pos=i=t};this.now=(this.end-this.start)*i+this.start;if(this.options.step){this.options.step.call(this.elem,this.now,this)};if(n&&n.set){n.set(this)}\nelse{u.propHooks._default.set(this)};return this}};u.prototype.init.prototype=u.prototype;u.propHooks={_default:{get:function(t){var n;if(t.elem[t.prop]!=null&&(!t.elem.style||t.elem.style[t.prop]==null)){return t.elem[t.prop]};n=e.css(t.elem,t.prop,\"\");return!n||n===\"auto\"?0:n},set:function(t){if(e.fx.step[t.prop]){e.fx.step[t.prop](t)}\nelse if(t.elem.style&&(t.elem.style[e.cssProps[t.prop]]!=null||e.cssHooks[t.prop])){e.style(t.elem,t.prop,t.now+t.unit)}\nelse{t.elem[t.prop]=t.now}}}};u.propHooks.scrollTop=u.propHooks.scrollLeft={set:function(e){if(e.elem.nodeType&&e.elem.parentNode){e.elem[e.prop]=e.now}}};e.easing={linear:function(e){return e},swing:function(e){return 0.5-Math.cos(e*Math.PI)/2}};e.fx=u.prototype.init;e.fx.step={};var m,S,ot=/^(?:toggle|show|hide)$/,Ae=new RegExp(\"^(?:([+-])=|)(\"+D+\")([a-z%]*)$\",\"i\"),st=/queueHooks$/,N=[Qe],b={\"*\":[function(t,n){var o=this.createTween(t,n),u=o.cur(),r=Ae.exec(n),s=r&&r[3]||(e.cssNumber[t]?\"\":\"px\"),i=(e.cssNumber[t]||s!==\"px\"&&+u)&&Ae.exec(e.css(o.elem,t)),a=1,f=20;if(i&&i[3]!==s){s=s||i[3];r=r||[];i=+u||1;do{a=a||\".5\";i=i/a;e.style(o.elem,t,i+s)}\nwhile(a!==(a=o.cur()/u)&&a!==1&&--f);};if(r){i=o.start=+i||+u||0;o.unit=s;o.end=r[1]?i+(r[1]+1)*r[2]:+r[2]};return o}]};function De(){setTimeout(function(){m=undefined});return(m=e.now())};function P(e,t){var i,r=0,n={height:e};t=t?1:0;for(;r<4;r+=2-t){i=h[r];n[\"margin\"+i]=n[\"padding\"+i]=e};if(t){n.opacity=n.width=e};return n};function xe(e,t,n){var r,o=(b[t]||[]).concat(b[\"*\"]),i=0,s=o.length;for(;i<s;i++){if((r=o[i].call(n,t,e))){return r}}};function Qe(t,n,r){var o,d,g,h,u,y,l,m,c=this,p={},a=t.style,f=t.nodeType&&k(t),s=i.get(t,\"fxshow\");if(!r.queue){u=e._queueHooks(t,\"fx\");if(u.unqueued==null){u.unqueued=0;y=u.empty.fire;u.empty.fire=function(){if(!u.unqueued){y()}}};u.unqueued++;c.always(function(){c.always(function(){u.unqueued--;if(!e.queue(t,\"fx\").length){u.empty.fire()}})})};if(t.nodeType===1&&(\"height\" in n||\"width\" in n)){r.overflow=[a.overflow,a.overflowX,a.overflowY];l=e.css(t,\"display\");m=l===\"none\"?i.get(t,\"olddisplay\")||V(t.nodeName):l;if(m===\"inline\"&&e.css(t,\"float\")===\"none\"){a.display=\"inline-block\"}};if(r.overflow){a.overflow=\"hidden\";c.always(function(){a.overflow=r.overflow[0];a.overflowX=r.overflow[1];a.overflowY=r.overflow[2]})};for(o in n){d=n[o];if(ot.exec(d)){delete n[o];g=g||d===\"toggle\";if(d===(f?\"hide\":\"show\")){if(d===\"show\"&&s&&s[o]!==undefined){f=!0}\nelse{continue}};p[o]=s&&s[o]||e.style(t,o)}\nelse{l=undefined}};if(!e.isEmptyObject(p)){if(s){if(\"hidden\" in s){f=s.hidden}}\nelse{s=i.access(t,\"fxshow\",{})};if(g){s.hidden=!f};if(f){e(t).show()}\nelse{c.done(function(){e(t).hide()})};c.done(function(){var n;i.remove(t,\"fxshow\");for(n in p){e.style(t,n,p[n])}});for(o in p){h=xe(f?s[o]:0,o,c);if(!(o in s)){s[o]=h.start;if(f){h.end=h.start;h.start=o===\"width\"||o===\"height\"?1:0}}}}\nelse if((l===\"none\"?V(t.nodeName):l)===\"inline\"){a.display=l}};function Ye(t,n){var i,o,a,r,s;for(i in t){o=e.camelCase(i);a=n[o];r=t[i];if(e.isArray(r)){a=r[1];r=t[i]=r[0]};if(i!==o){t[o]=r;delete t[i]};s=e.cssHooks[o];if(s&&\"expand\" in s){r=s.expand(r);delete t[o];for(i in r){if(!(i in t)){t[i]=r[i];n[i]=a}}}\nelse{n[o]=a}}};function oe(t,n,i){var u,f,a=0,c=N.length,o=e.Deferred().always(function(){delete l.elem}),l=function(){if(f){return!1};var u=m||De(),n=Math.max(0,r.startTime+r.duration-u),a=n/r.duration||0,e=1-a,i=0,s=r.tweens.length;for(;i<s;i++){r.tweens[i].run(e)};o.notifyWith(t,[r,e,n]);if(e<1&&s){return n}\nelse{o.resolveWith(t,[r]);return!1}},r=o.promise({elem:t,props:e.extend({},n),opts:e.extend(!0,{specialEasing:{}},i),originalProperties:n,originalOptions:i,startTime:m||De(),duration:i.duration,tweens:[],createTween:function(n,i){var o=e.Tween(t,r.opts,n,i,r.opts.specialEasing[n]||r.opts.easing);r.tweens.push(o);return o},stop:function(e){var n=0,i=e?r.tweens.length:0;if(f){return this};f=!0;for(;n<i;n++){r.tweens[n].run(1)};if(e){o.resolveWith(t,[r,e])}\nelse{o.rejectWith(t,[r,e])};return this}}),s=r.props;Ye(s,r.opts.specialEasing);for(;a<c;a++){u=N[a].call(r,t,s,r.opts);if(u){return u}};e.map(s,xe,r);if(e.isFunction(r.opts.start)){r.opts.start.call(t,r)};e.fx.timer(e.extend(l,{elem:t,anim:r,queue:r.opts.queue}));return r.progress(r.opts.progress).done(r.opts.done,r.opts.complete).fail(r.opts.fail).always(r.opts.always)};e.Animation=e.extend(oe,{tweener:function(t,n){if(e.isFunction(t)){n=t;t=[\"*\"]}\nelse{t=t.split(\" \")};var i,r=0,o=t.length;for(;r<o;r++){i=t[r];b[i]=b[i]||[];b[i].unshift(n)}},prefilter:function(e,t){if(t){N.unshift(e)}\nelse{N.push(e)}}});e.speed=function(t,n,i){var r=t&&typeof t===\"object\"?e.extend({},t):{complete:i||!i&&n||e.isFunction(t)&&t,duration:t,easing:i&&n||n&&!e.isFunction(n)&&n};r.duration=e.fx.off?0:typeof r.duration===\"number\"?r.duration:r.duration in e.fx.speeds?e.fx.speeds[r.duration]:e.fx.speeds._default;if(r.queue==null||r.queue===!0){r.queue=\"fx\"};r.old=r.complete;r.complete=function(){if(e.isFunction(r.old)){r.old.call(this)};if(r.queue){e.dequeue(this,r.queue)}};return r};e.fn.extend({fadeTo:function(e,t,n,i){return this.filter(k).css(\"opacity\",0).show().end().animate({opacity:t},e,n,i)},animate:function(t,n,r,o){var u=e.isEmptyObject(t),a=e.speed(n,r,o),s=function(){var n=oe(this,e.extend({},t),a);if(u||i.get(this,\"finish\")){n.stop(!0)}};s.finish=s;return u||a.queue===!1?this.each(s):this.queue(a.queue,s)},stop:function(t,n,r){var o=function(e){var t=e.stop;delete e.stop;t(r)};if(typeof t!==\"string\"){r=n;n=t;t=undefined};if(n&&t!==!1){this.queue(t||\"fx\",[])};return this.each(function(){var u=!0,n=t!=null&&t+\"queueHooks\",a=e.timers,s=i.get(this);if(n){if(s[n]&&s[n].stop){o(s[n])}}\nelse{for(n in s){if(s[n]&&s[n].stop&&st.test(n)){o(s[n])}}};for(n=a.length;n--;){if(a[n].elem===this&&(t==null||a[n].queue===t)){a[n].anim.stop(r);u=!1;a.splice(n,1)}};if(u||!r){e.dequeue(this,t)}})},finish:function(t){if(t!==!1){t=t||\"fx\"};return this.each(function(){var n,s=i.get(this),o=s[t+\"queue\"],a=s[t+\"queueHooks\"],r=e.timers,u=o?o.length:0;s.finish=!0;e.queue(this,t,[]);if(a&&a.stop){a.stop.call(this,!0)};for(n=r.length;n--;){if(r[n].elem===this&&r[n].queue===t){r[n].anim.stop(!0);r.splice(n,1)}};for(n=0;n<u;n++){if(o[n]&&o[n].finish){o[n].finish.call(this)}};delete s.finish})}});e.each([\"toggle\",\"show\",\"hide\"],function(t,n){var i=e.fn[n];e.fn[n]=function(e,t,r){return e==null||typeof e===\"boolean\"?i.apply(this,arguments):this.animate(P(n,!0),e,t,r)}});e.each({slideDown:P(\"show\"),slideUp:P(\"hide\"),slideToggle:P(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(t,n){e.fn[t]=function(e,t,i){return this.animate(n,e,t,i)}});e.timers=[];e.fx.tick=function(){var i,n=0,t=e.timers;m=e.now();for(;n<t.length;n++){i=t[n];if(!i()&&t[n]===i){t.splice(n--,1)}};if(!t.length){e.fx.stop()};m=undefined};e.fx.timer=function(t){e.timers.push(t);if(t()){e.fx.start()}\nelse{e.timers.pop()}};e.fx.interval=13;e.fx.start=function(){if(!S){S=setInterval(e.fx.tick,e.fx.interval)}};e.fx.stop=function(){clearInterval(S);S=null};e.fx.speeds={slow:600,fast:200,_default:400};e.fn.delay=function(t,n){t=e.fx?e.fx.speeds[t]||t:t;n=n||\"fx\";return this.queue(n,function(e,n){var i=setTimeout(e,t);n.stop=function(){clearTimeout(i)}})};(function(){var e=r.createElement(\"input\"),n=r.createElement(\"select\"),t=n.appendChild(r.createElement(\"option\"));e.type=\"checkbox\";o.checkOn=e.value!==\"\";o.optSelected=t.selected;n.disabled=!0;o.optDisabled=!t.disabled;e=r.createElement(\"input\");e.value=\"t\";e.type=\"radio\";o.radioValue=e.value===\"t\"})();var tt,Me,T=e.expr.attrHandle;e.fn.extend({attr:function(t,n){return c(this,e.attr,t,n,arguments.length>1)},removeAttr:function(t){return this.each(function(){e.removeAttr(this,t)})}});e.extend({attr:function(t,n,i){var r,o,s=t.nodeType;if(!t||s===3||s===8||s===2){return};if(typeof t.getAttribute===strundefined){return e.prop(t,n,i)};if(s!==1||!e.isXMLDoc(t)){n=n.toLowerCase();r=e.attrHooks[n]||(e.expr.match.bool.test(n)?Me:tt)};if(i!==undefined){if(i===null){e.removeAttr(t,n)}\nelse if(r&&\"set\" in r&&(o=r.set(t,i,n))!==undefined){return o}\nelse{t.setAttribute(n,i+\"\");return i}}\nelse if(r&&\"get\" in r&&(o=r.get(t,n))!==null){return o}\nelse{o=e.find.attr(t,n);return o==null?undefined:o}},removeAttr:function(t,n){var i,r,s=0,o=n&&n.match(l);if(o&&t.nodeType===1){while((i=o[s++])){r=e.propFix[i]||i;if(e.expr.match.bool.test(i)){t[r]=!1};t.removeAttribute(i)}}},attrHooks:{type:{set:function(t,n){if(!o.radioValue&&n===\"radio\"&&e.nodeName(t,\"input\")){var i=t.value;t.setAttribute(\"type\",n);if(i){t.value=i};return n}}}}});Me={set:function(t,n,i){if(n===!1){e.removeAttr(t,i)}\nelse{t.setAttribute(i,i)};return i}};e.each(e.expr.match.bool.source.match(/\\w+/g),function(t,n){var i=T[n]||e.find.attr;T[n]=function(e,t,n){var r,o;if(!n){o=T[t];T[t]=r;r=i(e,t,n)!=null?t.toLowerCase():null;T[t]=o};return r}});var nt=/^(?:input|select|textarea|button)$/i;e.fn.extend({prop:function(t,n){return c(this,e.prop,t,n,arguments.length>1)},removeProp:function(t){return this.each(function(){delete this[e.propFix[t]||t]})}});e.extend({propFix:{\"for\":\"htmlFor\",\"class\":\"className\"},prop:function(t,n,i){var s,r,a,o=t.nodeType;if(!t||o===3||o===8||o===2){return};a=o!==1||!e.isXMLDoc(t);if(a){n=e.propFix[n]||n;r=e.propHooks[n]};if(i!==undefined){return r&&\"set\" in r&&(s=r.set(t,i,n))!==undefined?s:(t[n]=i)}\nelse{return r&&\"get\" in r&&(s=r.get(t,n))!==null?s:t[n]}},propHooks:{tabIndex:{get:function(e){return e.hasAttribute(\"tabindex\")||nt.test(e.nodeName)||e.href?e.tabIndex:-1}}}});if(!o.optSelected){e.propHooks.selected={get:function(e){var t=e.parentNode;if(t&&t.parentNode){t.parentNode.selectedIndex};return null}}};e.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],function(){e.propFix[this.toLowerCase()]=this});var Z=/[\\t\\r\\n\\f]/g;e.fn.extend({addClass:function(t){var a,n,i,s,u,o,c=typeof t===\"string\"&&t,r=0,f=this.length;if(e.isFunction(t)){return this.each(function(n){e(this).addClass(t.call(this,n,this.className))})};if(c){a=(t||\"\").match(l)||[];for(;r<f;r++){n=this[r];i=n.nodeType===1&&(n.className?(\" \"+n.className+\" \").replace(Z,\" \"):\" \");if(i){u=0;while((s=a[u++])){if(i.indexOf(\" \"+s+\" \")<0){i+=s+\" \"}};o=e.trim(i);if(n.className!==o){n.className=o}}}};return this},removeClass:function(t){var a,i,n,s,u,o,c=arguments.length===0||typeof t===\"string\"&&t,r=0,f=this.length;if(e.isFunction(t)){return this.each(function(n){e(this).removeClass(t.call(this,n,this.className))})};if(c){a=(t||\"\").match(l)||[];for(;r<f;r++){i=this[r];n=i.nodeType===1&&(i.className?(\" \"+i.className+\" \").replace(Z,\" \"):\"\");if(n){u=0;while((s=a[u++])){while(n.indexOf(\" \"+s+\" \")>=0){n=n.replace(\" \"+s+\" \",\" \")}};o=t?e.trim(n):\"\";if(i.className!==o){i.className=o}}}};return this},toggleClass:function(t,n){var r=typeof t;if(typeof n===\"boolean\"&&r===\"string\"){return n?this.addClass(t):this.removeClass(t)};if(e.isFunction(t)){return this.each(function(i){e(this).toggleClass(t.call(this,i,this.className,n),n)})};return this.each(function(){if(r===\"string\"){var n,a=0,o=e(this),s=t.match(l)||[];while((n=s[a++])){if(o.hasClass(n)){o.removeClass(n)}\nelse{o.addClass(n)}}}\nelse if(r===strundefined||r===\"boolean\"){if(this.className){i.set(this,\"__className__\",this.className)};this.className=this.className||t===!1?\"\":i.get(this,\"__className__\")||\"\"}})},hasClass:function(e){var i=\" \"+e+\" \",t=0,n=this.length;for(;t<n;t++){if(this[t].nodeType===1&&(\" \"+this[t].className+\" \").replace(Z,\" \").indexOf(i)>=0){return!0}};return!1}});var it=/\\r/g;e.fn.extend({val:function(t){var n,i,o,r=this[0];if(!arguments.length){if(r){n=e.valHooks[r.type]||e.valHooks[r.nodeName.toLowerCase()];if(n&&\"get\" in n&&(i=n.get(r,\"value\"))!==undefined){return i};i=r.value;return typeof i===\"string\"?i.replace(it,\"\"):i==null?\"\":i};return};o=e.isFunction(t);return this.each(function(i){var r;if(this.nodeType!==1){return};if(o){r=t.call(this,i,e(this).val())}\nelse{r=t};if(r==null){r=\"\"}\nelse if(typeof r===\"number\"){r+=\"\"}\nelse if(e.isArray(r)){r=e.map(r,function(e){return e==null?\"\":e+\"\"})};n=e.valHooks[this.type]||e.valHooks[this.nodeName.toLowerCase()];if(!n||!(\"set\" in n)||n.set(this,r,\"value\")===undefined){this.value=r}})}});e.extend({valHooks:{option:{get:function(t){var n=e.find.attr(t,\"value\");return n!=null?n:e.trim(e.text(t))}},select:{get:function(t){var a,n,l=t.options,i=t.selectedIndex,s=t.type===\"select-one\"||i<0,f=s?null:[],u=s?i+1:l.length,r=i<0?u:s?i:0;for(;r<u;r++){n=l[r];if((n.selected||r===i)&&(o.optDisabled?!n.disabled:n.getAttribute(\"disabled\")===null)&&(!n.parentNode.disabled||!e.nodeName(n.parentNode,\"optgroup\"))){a=e(n).val();if(s){return a};f.push(a)}};return f},set:function(t,n){var a,i,s=t.options,o=e.makeArray(n),r=s.length;while(r--){i=s[r];if((i.selected=e.inArray(i.value,o)>=0)){a=!0}};if(!a){t.selectedIndex=-1};return o}}}});e.each([\"radio\",\"checkbox\"],function(){e.valHooks[this]={set:function(t,n){if(e.isArray(n)){return(t.checked=e.inArray(e(t).val(),n)>=0)}}};if(!o.checkOn){e.valHooks[this].get=function(e){return e.getAttribute(\"value\")===null?\"on\":e.value}}});e.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(t,n){e.fn[n]=function(e,t){return arguments.length>0?this.on(n,null,e,t):this.trigger(n)}});e.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,i){return this.on(t,e,n,i)},undelegate:function(e,t,n){return arguments.length===1?this.off(e,\"**\"):this.off(t,e||\"**\",n)}});var M=e.now(),J=(/\\?/);e.parseJSON=function(e){return JSON.parse(e+\"\")};e.parseXML=function(t){var i,r;if(!t||typeof t!==\"string\"){return null};try{r=new DOMParser();i=r.parseFromString(t,\"text/xml\")}catch(n){i=undefined};if(!i||i.getElementsByTagName(\"parsererror\").length){e.error(\"Invalid XML: \"+t)};return i};var vt=/#.*$/,se=/([?&])_=[^&]*/,yt=/^(.*?):[ \\t]*([^\\r\\n]*)$/mg,ct=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,lt=/^(?:GET|HEAD)$/,rt=/^\\/\\//,Re=/^([\\w.+-]+:)(?:\\/\\/(?:[^\\/?#]*@|)([^\\/?#:]*)(?::(\\d+)|)|)/,Ie={},X={},He=\"*/\".concat(\"*\"),Q=t.location.href,v=Re.exec(Q.toLowerCase())||[];function ae(t){return function(n,i){if(typeof n!==\"string\"){i=n;n=\"*\"};var r,s=0,o=n.toLowerCase().match(l)||[];if(e.isFunction(i)){while((r=o[s++])){if(r[0]===\"+\"){r=r.slice(1)||\"*\";(t[r]=t[r]||[]).unshift(i)}\nelse{(t[r]=t[r]||[]).push(i)}}}}};function ne(t,n,i,r){var o={},a=(t===X);function s(u){var f;o[u]=!0;e.each(t[u]||[],function(e,t){var u=t(n,i,r);if(typeof u===\"string\"&&!a&&!o[u]){n.dataTypes.unshift(u);s(u);return!1}\nelse if(a){return!(f=u)}});return f};return s(n.dataTypes[0])||!o[\"*\"]&&s(\"*\")};function U(t,n){var i,r,o=e.ajaxSettings.flatOptions||{};for(i in n){if(n[i]!==undefined){(o[i]?t:(r||(r={})))[i]=n[i]}};if(r){e.extend(!0,t,r)};return t};function Ve(e,t,n){var s,o,r,u,a=e.contents,i=e.dataTypes;while(i[0]===\"*\"){i.shift();if(s===undefined){s=e.mimeType||t.getResponseHeader(\"Content-Type\")}};if(s){for(o in a){if(a[o]&&a[o].test(s)){i.unshift(o);break}}};if(i[0]in n){r=i[0]}\nelse{for(o in n){if(!i[0]||e.converters[o+\" \"+i[0]]){r=o;break};if(!u){u=o}};r=r||u};if(r){if(r!==i[0]){i.unshift(r)};return n[r]}};function Ge(e,t,n,i){var c,r,o,f,u,a={},l=e.dataTypes.slice();if(l[1]){for(o in e.converters){a[o.toLowerCase()]=e.converters[o]}};r=l.shift();while(r){if(e.responseFields[r]){n[e.responseFields[r]]=t};if(!u&&i&&e.dataFilter){t=e.dataFilter(t,e.dataType)};u=r;r=l.shift();if(r){if(r===\"*\"){r=u}\nelse if(u!==\"*\"&&u!==r){o=a[u+\" \"+r]||a[\"* \"+r];if(!o){for(c in a){f=c.split(\" \");if(f[1]===r){o=a[u+\" \"+f[0]]||a[\"* \"+f[0]];if(o){if(o===!0){o=a[c]}\nelse if(a[c]!==!0){r=f[0];l.unshift(f[1])};break}}}};if(o!==!0){if(o&&e[\"throws\"]){t=o(t)}\nelse{try{t=o(t)}catch(s){return{state:\"parsererror\",error:o?s:\"No conversion from \"+u+\" to \"+r}}}}}}};return{state:\"success\",data:t}};e.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Q,type:\"GET\",isLocal:ct.test(v[1]),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":He,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\":e.parseJSON,\"text xml\":e.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,n){return n?U(U(t,e.ajaxSettings),n):U(e.ajaxSettings,t)},ajaxPrefilter:ae(Ie),ajaxTransport:ae(X),ajax:function(t,n){if(typeof t===\"object\"){n=t;t=undefined};n=n||{};var f,s,w,h,x,c,p,d,i=e.ajaxSetup({},n),u=i.context||i,y=i.context&&(u.nodeType||u.jquery)?e(u):e.event,b=e.Deferred(),k=e.Callbacks(\"once memory\"),m=i.statusCode||{},T={},C={},a=0,N=\"canceled\",r={readyState:0,getResponseHeader:function(e){var t;if(a===2){if(!h){h={};while((t=yt.exec(w))){h[t[1].toLowerCase()]=t[2]}};t=h[e.toLowerCase()]};return t==null?null:t},getAllResponseHeaders:function(){return a===2?w:null},setRequestHeader:function(e,t){var n=e.toLowerCase();if(!a){e=C[n]=C[n]||e;T[e]=t};return this},overrideMimeType:function(e){if(!a){i.mimeType=e};return this},statusCode:function(e){var t;if(e){if(a<2){for(t in e){m[t]=[m[t],e[t]]}}\nelse{r.always(e[r.status])}};return this},abort:function(e){var t=e||N;if(f){f.abort(t)};g(0,t);return this}};b.promise(r).complete=k.add;r.success=r.done;r.error=r.fail;i.url=((t||i.url||Q)+\"\").replace(vt,\"\").replace(rt,v[1]+\"//\");i.type=n.method||n.type||i.method||i.type;i.dataTypes=e.trim(i.dataType||\"*\").toLowerCase().match(l)||[\"\"];if(i.crossDomain==null){c=Re.exec(i.url.toLowerCase());i.crossDomain=!!(c&&(c[1]!==v[1]||c[2]!==v[2]||(c[3]||(c[1]===\"http:\"?\"80\":\"443\"))!==(v[3]||(v[1]===\"http:\"?\"80\":\"443\"))))};if(i.data&&i.processData&&typeof i.data!==\"string\"){i.data=e.param(i.data,i.traditional)};ne(Ie,i,n,r);if(a===2){return r};p=e.event&&i.global;if(p&&e.active++===0){e.event.trigger(\"ajaxStart\")};i.type=i.type.toUpperCase();i.hasContent=!lt.test(i.type);s=i.url;if(!i.hasContent){if(i.data){s=(i.url+=(J.test(s)?\"&\":\"?\")+i.data);delete i.data};if(i.cache===!1){i.url=se.test(s)?s.replace(se,\"$1_=\"+M++):s+(J.test(s)?\"&\":\"?\")+\"_=\"+M++}};if(i.ifModified){if(e.lastModified[s]){r.setRequestHeader(\"If-Modified-Since\",e.lastModified[s])};if(e.etag[s]){r.setRequestHeader(\"If-None-Match\",e.etag[s])}};if(i.data&&i.hasContent&&i.contentType!==!1||n.contentType){r.setRequestHeader(\"Content-Type\",i.contentType)};r.setRequestHeader(\"Accept\",i.dataTypes[0]&&i.accepts[i.dataTypes[0]]?i.accepts[i.dataTypes[0]]+(i.dataTypes[0]!==\"*\"?\", \"+He+\"; q=0.01\":\"\"):i.accepts[\"*\"]);for(d in i.headers){r.setRequestHeader(d,i.headers[d])};if(i.beforeSend&&(i.beforeSend.call(u,r,i)===!1||a===2)){return r.abort()};N=\"abort\";for(d in{success:1,error:1,complete:1}){r[d](i[d])};f=ne(X,i,n,r);if(!f){g(-1,\"No Transport\")}\nelse{r.readyState=1;if(p){y.trigger(\"ajaxSend\",[r,i])};if(i.async&&i.timeout>0){x=setTimeout(function(){r.abort(\"timeout\")},i.timeout)};try{a=1;f.send(T,g)}catch(o){if(a<2){g(-1,o)}\nelse{throw o}}};function g(t,n,o,l){var d,T,v,g,h,c=n;if(a===2){return};a=2;if(x){clearTimeout(x)};f=undefined;w=l||\"\";r.readyState=t>0?4:0;d=t>=200&&t<300||t===304;if(o){g=Ve(i,r,o)};g=Ge(i,g,r,d);if(d){if(i.ifModified){h=r.getResponseHeader(\"Last-Modified\");if(h){e.lastModified[s]=h};h=r.getResponseHeader(\"etag\");if(h){e.etag[s]=h}};if(t===204||i.type===\"HEAD\"){c=\"nocontent\"}\nelse if(t===304){c=\"notmodified\"}\nelse{c=g.state;T=g.data;v=g.error;d=!v}}\nelse{v=c;if(t||!c){c=\"error\";if(t<0){t=0}}};r.status=t;r.statusText=(n||c)+\"\";if(d){b.resolveWith(u,[T,c,r])}\nelse{b.rejectWith(u,[r,c,v])};r.statusCode(m);m=undefined;if(p){y.trigger(d?\"ajaxSuccess\":\"ajaxError\",[r,i,d?T:v])};k.fireWith(u,[r,c]);if(p){y.trigger(\"ajaxComplete\",[r,i]);if(!(--e.active)){e.event.trigger(\"ajaxStop\")}}};return r},getJSON:function(t,n,i){return e.get(t,n,i,\"json\")},getScript:function(t,n){return e.get(t,undefined,n,\"script\")}});e.each([\"get\",\"post\"],function(t,n){e[n]=function(t,i,r,o){if(e.isFunction(i)){o=o||r;r=i;i=undefined};return e.ajax({url:t,type:n,dataType:o,data:i,success:r})}});e._evalUrl=function(t){return e.ajax({url:t,type:\"GET\",dataType:\"script\",async:!1,global:!1,\"throws\":!0})};e.fn.extend({wrapAll:function(t){var n;if(e.isFunction(t)){return this.each(function(n){e(this).wrapAll(t.call(this,n))})};if(this[0]){n=e(t,this[0].ownerDocument).eq(0).clone(!0);if(this[0].parentNode){n.insertBefore(this[0])};n.map(function(){var e=this;while(e.firstElementChild){e=e.firstElementChild};return e}).append(this)};return this},wrapInner:function(t){if(e.isFunction(t)){return this.each(function(n){e(this).wrapInner(t.call(this,n))})};return this.each(function(){var i=e(this),n=i.contents();if(n.length){n.wrapAll(t)}\nelse{i.append(t)}})},wrap:function(t){var n=e.isFunction(t);return this.each(function(i){e(this).wrapAll(n?t.call(this,i):t)})},unwrap:function(){return this.parent().each(function(){if(!e.nodeName(this,\"body\")){e(this).replaceWith(this.childNodes)}}).end()}});e.expr.filters.hidden=function(e){return e.offsetWidth<=0&&e.offsetHeight<=0};e.expr.filters.visible=function(t){return!e.expr.filters.hidden(t)};var dt=/%20/g,gt=/\\[\\]$/,ve=/\\r?\\n/g,mt=/^(?:submit|button|image|reset|file)$/i,xt=/^(?:input|select|textarea|keygen)/i;function B(t,n,i,r){var o;if(e.isArray(n)){e.each(n,function(e,n){if(i||gt.test(t)){r(t,n)}\nelse{B(t+\"[\"+(typeof n===\"object\"?e:\"\")+\"]\",n,i,r)}})}\nelse if(!i&&e.type(n)===\"object\"){for(o in n){B(t+\"[\"+o+\"]\",n[o],i,r)}}\nelse{r(t,n)}};e.param=function(t,n){var r,i=[],o=function(t,n){n=e.isFunction(n)?n():(n==null?\"\":n);i[i.length]=encodeURIComponent(t)+\"=\"+encodeURIComponent(n)};if(n===undefined){n=e.ajaxSettings&&e.ajaxSettings.traditional};if(e.isArray(t)||(t.jquery&&!e.isPlainObject(t))){e.each(t,function(){o(this.name,this.value)})}\nelse{for(r in t){B(r,t[r],n,o)}};return i.join(\"&\").replace(dt,\"+\")};e.fn.extend({serialize:function(){return e.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var t=e.prop(this,\"elements\");return t?e.makeArray(t):this}).filter(function(){var t=this.type;return this.name&&!e(this).is(\":disabled\")&&xt.test(this.nodeName)&&!mt.test(t)&&(this.checked||!We.test(t))}).map(function(t,n){var i=e(this).val();return i==null?null:e.isArray(i)?e.map(i,function(e){return{name:n.name,value:e.replace(ve,\"\\r\\n\")}}):{name:n.name,value:i.replace(ve,\"\\r\\n\")}}).get()}});e.ajaxSettings.xhr=function(){try{return new XMLHttpRequest()}catch(e){}};var ht=0,R={},pt={0:200,1223:204},w=e.ajaxSettings.xhr();if(t.attachEvent){t.attachEvent(\"onunload\",function(){for(var e in R){R[e]()}})};o.cors=!!w&&(\"withCredentials\" in w);o.ajax=w=!!w;e.ajaxTransport(function(e){var t;if(o.cors||w&&!e.crossDomain){return{send:function(n,i){var s,r=e.xhr(),a=++ht;r.open(e.type,e.url,e.async,e.username,e.password);if(e.xhrFields){for(s in e.xhrFields){r[s]=e.xhrFields[s]}};if(e.mimeType&&r.overrideMimeType){r.overrideMimeType(e.mimeType)};if(!e.crossDomain&&!n[\"X-Requested-With\"]){n[\"X-Requested-With\"]=\"XMLHttpRequest\"};for(s in n){r.setRequestHeader(s,n[s])};t=function(e){return function(){if(t){delete R[a];t=r.onload=r.onerror=null;if(e===\"abort\"){r.abort()}\nelse if(e===\"error\"){i(r.status,r.statusText)}\nelse{i(pt[r.status]||r.status,r.statusText,typeof r.responseText===\"string\"?{text:r.responseText}:undefined,r.getAllResponseHeaders())}}}};r.onload=t();r.onerror=t(\"error\");t=R[a]=t(\"abort\");try{r.send(e.hasContent&&e.data||null)}catch(o){if(t){throw o}}},abort:function(){if(t){t()}}}}});e.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/(?:java|ecma)script/},converters:{\"text script\":function(t){e.globalEval(t);return t}}});e.ajaxPrefilter(\"script\",function(e){if(e.cache===undefined){e.cache=!1};if(e.crossDomain){e.type=\"GET\"}});e.ajaxTransport(\"script\",function(t){if(t.crossDomain){var i,n;return{send:function(o,s){i=e(\"<script>\").prop({async:!0,charset:t.scriptCharset,src:t.url}).on(\"load error\",n=function(e){i.remove();n=null;if(e){s(e.type===\"error\"?404:200,e.type)}});r.head.appendChild(i[0])},abort:function(){if(n){n()}}}}});var pe=[],K=/(=)\\?(?=&|$)|\\?\\?/;e.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var t=pe.pop()||(e.expando+\"_\"+(M++));this[t]=!0;return t}});e.ajaxPrefilter(\"json jsonp\",function(n,i,r){var o,a,s,u=n.jsonp!==!1&&(K.test(n.url)?\"url\":typeof n.data===\"string\"&&!(n.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&K.test(n.data)&&\"data\");if(u||n.dataTypes[0]===\"jsonp\"){o=n.jsonpCallback=e.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback;if(u){n[u]=n[u].replace(K,\"$1\"+o)}\nelse if(n.jsonp!==!1){n.url+=(J.test(n.url)?\"&\":\"?\")+n.jsonp+\"=\"+o};n.converters[\"script json\"]=function(){if(!s){e.error(o+\" was not called\")};return s[0]};n.dataTypes[0]=\"json\";a=t[o];t[o]=function(){s=arguments};r.always(function(){t[o]=a;if(n[o]){n.jsonpCallback=i.jsonpCallback;pe.push(o)};if(s&&e.isFunction(a)){a(s[0])};s=a=undefined});return\"script\"}});e.parseHTML=function(t,n,i){if(!t||typeof t!==\"string\"){return null};if(typeof n===\"boolean\"){i=n;n=!1};n=n||r;var s=me.exec(t),o=!i&&[];if(s){return[n.createElement(s[1])]};s=e.buildFragment([t],n,o);if(o&&o.length){e(o).remove()};return e.merge([],s.childNodes)};var ie=e.fn.load;e.fn.load=function(t,n,i){if(typeof t!==\"string\"&&ie){return ie.apply(this,arguments)};var s,a,u,o=this,r=t.indexOf(\" \");if(r>=0){s=e.trim(t.slice(r));t=t.slice(0,r)};if(e.isFunction(n)){i=n;n=undefined}\nelse if(n&&typeof n===\"object\"){a=\"POST\"};if(o.length>0){e.ajax({url:t,type:a,dataType:\"html\",data:n}).done(function(t){u=arguments;o.html(s?e(\"<div>\").append(e.parseHTML(t)).find(s):t)}).complete(i&&function(e,t){o.each(i,u||[e.responseText,t,e])})};return this};e.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(t,n){e.fn[n]=function(e){return this.on(n,e)}});e.expr.filters.animated=function(t){return e.grep(e.timers,function(e){return t===e.elem}).length};var le=t.document.documentElement;function ce(t){return e.isWindow(t)?t:t.nodeType===9&&t.defaultView};e.offset={setOffset:function(t,n,i){var l,c,d,f,r,s,p,u=e.css(t,\"position\"),a=e(t),o={};if(u===\"static\"){t.style.position=\"relative\"};r=a.offset();d=e.css(t,\"top\");s=e.css(t,\"left\");p=(u===\"absolute\"||u===\"fixed\")&&(d+s).indexOf(\"auto\")>-1;if(p){l=a.position();f=l.top;c=l.left}\nelse{f=parseFloat(d)||0;c=parseFloat(s)||0};if(e.isFunction(n)){n=n.call(t,i,r)};if(n.top!=null){o.top=(n.top-r.top)+f};if(n.left!=null){o.left=(n.left-r.left)+c};if(\"using\" in n){n.using.call(t,o)}\nelse{a.css(o)}}};e.fn.extend({offset:function(t){if(arguments.length){return t===undefined?this:this.each(function(n){e.offset.setOffset(this,t,n)})};var i,s,n=this[0],r={top:0,left:0},o=n&&n.ownerDocument;if(!o){return};i=o.documentElement;if(!e.contains(i,n)){return r};if(typeof n.getBoundingClientRect!==strundefined){r=n.getBoundingClientRect()};s=ce(o);return{top:r.top+s.pageYOffset-i.clientTop,left:r.left+s.pageXOffset-i.clientLeft}},position:function(){if(!this[0]){return};var t,i,r=this[0],n={top:0,left:0};if(e.css(r,\"position\")===\"fixed\"){i=r.getBoundingClientRect()}\nelse{t=this.offsetParent();i=this.offset();if(!e.nodeName(t[0],\"html\")){n=t.offset()};n.top+=e.css(t[0],\"borderTopWidth\",!0);n.left+=e.css(t[0],\"borderLeftWidth\",!0)};return{top:i.top-n.top-e.css(r,\"marginTop\",!0),left:i.left-n.left-e.css(r,\"marginLeft\",!0)}},offsetParent:function(){return this.map(function(){var t=this.offsetParent||le;while(t&&(!e.nodeName(t,\"html\")&&e.css(t,\"position\")===\"static\")){t=t.offsetParent};return t||le})}});e.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(n,i){var r=\"pageYOffset\"===i;e.fn[n]=function(e){return c(this,function(e,n,o){var s=ce(e);if(o===undefined){return s?s[i]:e[n]};if(s){s.scrollTo(!r?o:t.pageXOffset,r?o:t.pageYOffset)}\nelse{e[n]=o}},n,e,arguments.length,null)}});e.each([\"top\",\"left\"],function(t,n){e.cssHooks[n]=be(o.pixelPosition,function(t,i){if(i){i=C(t,n);return W.test(i)?e(t).position()[n]+\"px\":i}})});e.each({Height:\"height\",Width:\"width\"},function(t,n){e.each({padding:\"inner\"+t,content:n,\"\":\"outer\"+t},function(i,r){e.fn[r]=function(r,o){var a=arguments.length&&(i||typeof r!==\"boolean\"),s=i||(r===!0||o===!0?\"margin\":\"border\");return c(this,function(n,i,r){var o;if(e.isWindow(n)){return n.document.documentElement[\"client\"+t]};if(n.nodeType===9){o=n.documentElement;return Math.max(n.body[\"scroll\"+t],o[\"scroll\"+t],n.body[\"offset\"+t],o[\"offset\"+t],o[\"client\"+t])};return r===undefined?e.css(n,i,s):e.style(n,i,r,s)},n,a?r:undefined,a,null)}})});e.fn.size=function(){return this.length};e.fn.andSelf=e.fn.addBack;if(typeof define===\"function\"&&define.amd){define(\"jquery\",[],function(){return e})};var Nt=t.jQuery,Mt=t.$;e.noConflict=function(n){if(t.$===e){t.$=Mt};if(n&&t.jQuery===e){t.jQuery=Nt};return e};if(typeof n===strundefined){t.jQuery=t.$=e};return e}));\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):e.moment=t()}(this,function(){\"use strict\";function n(){return ia.apply(null,arguments)};function nd(e){ia=e};function Ae(e){return\"[object Array]\"===Object.prototype.toString.call(e)};function Oe(e){return e instanceof Date||\"[object Date]\"===Object.prototype.toString.call(e)};function Xr(e,t){var a,n=[];for(a=0;a<e.length;++a)n.push(t(e[a],a));return n};function B(e,t){return Object.prototype.hasOwnProperty.call(e,t)};function Ee(e,t){for(var a in t)B(t,a)&&(e[a]=t[a]);return B(t,\"toString\")&&(e.toString=t.toString),B(t,\"valueOf\")&&(e.valueOf=t.valueOf),e};function fe(e,t,a,n){return Nt(e,t,a,n,!0).utc()};function Br(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}};function o(e){return null==e._pf&&(e._pf=Br()),e._pf};function fa(e){if(null==e._isValid){var t=o(e);e._isValid=!(isNaN(e._d.getTime())||!(t.overflow<0)||t.empty||t.invalidMonth||t.invalidWeekday||t.nullInput||t.invalidFormat||t.userInvalidated),e._strict&&(e._isValid=e._isValid&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour)};return e._isValid};function ka(e){var t=fe(NaN);return null!=e?Ee(o(t),e):o(t).userInvalidated=!0,t};function Qe(e,t){var s,a,n;if(\"undefined\"!=typeof t._isAMomentObject&&(e._isAMomentObject=t._isAMomentObject),\"undefined\"!=typeof t._i&&(e._i=t._i),\"undefined\"!=typeof t._f&&(e._f=t._f),\"undefined\"!=typeof t._l&&(e._l=t._l),\"undefined\"!=typeof t._strict&&(e._strict=t._strict),\"undefined\"!=typeof t._tzm&&(e._tzm=t._tzm),\"undefined\"!=typeof t._isUTC&&(e._isUTC=t._isUTC),\"undefined\"!=typeof t._offset&&(e._offset=t._offset),\"undefined\"!=typeof t._pf&&(e._pf=o(t)),\"undefined\"!=typeof t._locale&&(e._locale=t._locale),mt.length>0)for(s in mt)a=mt[s],n=t[a],\"undefined\"!=typeof n&&(e[a]=n);return e};function Me(e){Qe(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),ct===!1&&(ct=!0,n.updateOffset(this),ct=!1)};function O(e){return e instanceof Me||null!=e&&null!=e._isAMomentObject};function c(e){return 0>e?Math.ceil(e):Math.floor(e)};function m(e){var t=+e,a=0;return 0!==t&&isFinite(t)&&(a=c(t)),a};function ca(e,t,a){var n,d=Math.min(e.length,t.length),r=Math.abs(e.length-t.length),s=0;for(n=0;d>n;n++)(a&&e[n]!==t[n]||!a&&m(e[n])!==m(t[n]))&&s++;return s+r};function Ya(){};function ua(e){return e?e.toLowerCase().replace(\"_\",\"-\"):e};function Qr(e){for(var a,t,r,n,s=0;s<e.length;){for(n=ua(e[s]).split(\"-\"),a=n.length,t=ua(e[s+1]),t=t?t.split(\"-\"):null;a>0;){if(r=St(n.slice(0,a).join(\"-\")))return r;if(t&&t.length>=a&&ca(n,t,!0)>=a-1)break;a--};s++};return null};function St(e){var t=null;if(!K[e]&&\"undefined\"!=typeof module&&module&&module.exports)try{t=We._abbr,require(\"./locale/\"+e),ce(t)}catch(a){};return K[e]};function ce(e,t){var a;return e&&(a=\"undefined\"==typeof t?Q(e):wt(e,t),a&&(We=a)),We._abbr};function wt(e,t){return null!==t?(t.abbr=e,K[e]=K[e]||new Ya,K[e].set(t),ce(e),K[e]):(delete K[e],null)};function Q(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return We;if(!Ae(e)){if(t=St(e))return t;e=[e]};return Qr(e)};function M(e,t){var a=e.toLowerCase();pe[a]=pe[a+\"s\"]=pe[t]=e};function T(e){return\"string\"==typeof e?pe[e]||pe[e.toLowerCase()]:void 0};function Wt(e){var a,t,n={};for(t in e)B(e,t)&&(a=T(t),a&&(n[a]=e[t]));return n};function ne(e,t){return function(a){return null!=a?(yt(this,e,a),n.updateOffset(this,t),this):Ce(this,e)}};function Ce(e,t){return e._d[\"get\"+(e._isUTC?\"UTC\":\"\")+t]()};function yt(e,t,a){return e._d[\"set\"+(e._isUTC?\"UTC\":\"\")+t](a)};function pt(e,t){var a;if(\"object\"==typeof e)for(a in e)this.set(a,e[a]);else if(e=T(e),\"function\"==typeof this[e])return this[e](t);return this};function at(e,t,a){var n=\"\"+Math.abs(e),r=t-n.length,s=e>=0;return(s?a?\"+\":\"\":\"-\")+Math.pow(10,Math.max(0,r)).toString().substr(1)+n};function s(e,t,a,n){var s=n;\"string\"==typeof n&&(s=function(){return this[n]()}),e&&(ue[e]=s),t&&(ue[t[0]]=function(){return at(s.apply(this,arguments),t[1],t[2])}),a&&(ue[a]=function(){return this.localeData().ordinal(s.apply(this,arguments),e)})};function ed(e){return e.match(/\\[[\\s\\S]/)?e.replace(/^\\[|\\]$/g,\"\"):e.replace(/\\\\/g,\"\")};function ad(e){var t,n,a=e.match(da);for(t=0,n=a.length;n>t;t++)ue[a[t]]?a[t]=ue[a[t]]:a[t]=ed(a[t]);return function(s){var r=\"\";for(t=0;n>t;t++)r+=a[t]instanceof Function?a[t].call(s,e):a[t];return r}};function nt(e,t){return e.isValid()?(t=Tt(t,e.localeData()),Yt[t]=Yt[t]||ad(t),Yt[t](e)):e.localeData().invalidDate()};function Tt(e,t){function n(e){return t.longDateFormat(e)||e};var a=5;for(je.lastIndex=0;a>=0&&je.test(e);)e=e.replace(je,n),je.lastIndex=0,a-=1;return e};function td(e){return\"function\"==typeof e&&\"[object Function]\"===Object.prototype.toString.call(e)};function a(e,t,a){Ie[e]=td(t)?t:function(e){return e&&a?a:t}};function ld(e,t){return B(Ie,e)?Ie[e](t._strict,t._locale):new RegExp(Md(e))};function Md(e){return e.replace(\"\\\\\",\"\").replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,function(e,t,a,n,s){return t||a||n||s}).replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g,\"\\\\$&\")};function l(e,t){var a,n=t;for(\"string\"==typeof e&&(e=[e]),\"number\"==typeof t&&(n=function(e,a){a[t]=m(e)}),a=0;a<e.length;a++)Ve[e[a]]=n};function Le(e,t){l(e,function(e,a,n,s){n._w=n._w||{},t(e,n._w,n,s)})};function Td(e,t,a){null!=t&&B(Ve,e)&&Ve[e](t,a._a,a,e)};function st(e,t){return new Date(Date.UTC(e,t+1,0)).getUTCDate()};function kd(e){return this._months[e.month()]};function gd(e){return this._monthsShort[e.month()]};function wd(e,t,a){var n,s,r;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),n=0;12>n;n++){if(s=fe([2e3,n]),a&&!this._longMonthsParse[n]&&(this._longMonthsParse[n]=new RegExp(\"^\"+this.months(s,\"\").replace(\".\",\"\")+\"$\",\"i\"),this._shortMonthsParse[n]=new RegExp(\"^\"+this.monthsShort(s,\"\").replace(\".\",\"\")+\"$\",\"i\")),a||this._monthsParse[n]||(r=\"^\"+this.months(s,\"\")+\"|^\"+this.monthsShort(s,\"\"),this._monthsParse[n]=new RegExp(r.replace(\".\",\"\"),\"i\")),a&&\"MMMM\"===t&&this._longMonthsParse[n].test(e))return n;if(a&&\"MMM\"===t&&this._shortMonthsParse[n].test(e))return n;if(!a&&this._monthsParse[n].test(e))return n}};function Zt(e,t){var a;return\"string\"==typeof t&&(t=e.localeData().monthsParse(t),\"number\"!=typeof t)?e:(a=Math.min(e.date(),st(e.year(),t)),e._d[\"set\"+(e._isUTC?\"UTC\":\"\")+\"Month\"](t,a),e)};function Kt(e){return null!=e?(Zt(this,e),n.updateOffset(this,!0),this):Ce(this,\"Month\")};function Sd(){return st(this.year(),this.month())};function Xe(e){var a,t=e._a;return t&&-2===o(e).overflow&&(a=t[F]<0||t[F]>11?F:t[v]<1||t[v]>st(t[b],t[F])?v:t[L]<0||t[L]>24||24===t[L]&&(0!==t[U]||0!==t[I]||0!==t[X])?L:t[U]<0||t[U]>59?U:t[I]<0||t[I]>59?I:t[X]<0||t[X]>999?X:-1,o(e)._overflowDayOfYear&&(b>a||a>v)&&(a=v),o(e).overflow=a),e};function At(e){n.suppressDeprecationWarnings===!1&&\"undefined\"!=typeof console&&console.warn&&console.warn(\"Deprecation warning: \"+e)};function g(e,t){var a=!0;return Ee(function(){return a&&(At(e+\"\\n\"+(new Error).stack),a=!1),t.apply(this,arguments)},t)};function vd(e,t){na[e]||(At(t),na[e]=!0)};function Rt(e){var t,n,a=e._i,s=rd.exec(a);if(s){for(o(e).iso=!0,t=0,n=Mt.length;n>t;t++)if(Mt[t][1].exec(a)){e._f=Mt[t][0];break};for(t=0,n=lt.length;n>t;t++)if(lt[t][1].exec(a)){e._f+=(s[6]||\" \")+lt[t][0];break};a.match(Je)&&(e._f+=\"Z\"),Ze(e)}\nelse e._isValid=!1};function Dd(e){var t=id.exec(e._i);return null!==t?void(e._d=new Date(+t[1])):(Rt(e),void(e._isValid===!1&&(delete e._isValid,n.createFromInputFallback(e))))};function es(e,t,a,n,s,d,i){var r=new Date(e,t,a,n,s,d,i);return 1970>e&&r.setFullYear(e),r};function Be(e){var t=new Date(Date.UTC.apply(null,arguments));return 1970>e&&t.setUTCFullYear(e),t};function Bt(e){return Ut(e)?366:365};function Ut(e){return e%4===0&&e%100!==0||e%400===0};function fd(){return Ut(this.year())};function ee(e,t,a){var s,r=a-t,n=a-e.day();return n>r&&(n-=7),r-7>n&&(n+=7),s=i(e).add(n,\"d\"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}};function hd(e){return ee(e,this._week.dow,this._week.doy).week};function Ld(){return this._week.dow};function cd(){return this._week.doy};function Yd(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),\"d\")};function pd(e){var t=ee(this,1,4).week;return null==e?t:this.add(7*(e-t),\"d\")};function yd(e,t,a,n,s){var r,i=6+s-n,o=Be(e,0,1+i),d=o.getUTCDay();return s>d&&(d+=7),a=null!=a?1*a:s,r=1+i+7*(t-1)-d+a,{year:r>0?e:e-1,dayOfYear:r>0?r:Bt(e-1)+r}};function qr(e){var t=Math.round((this.clone().startOf(\"day\")-this.clone().startOf(\"year\"))/864e5)+1;return null==e?t:this.add(e-t,\"d\")};function oe(e,t,a){return null!=e?e:null!=t?t:a};function Rr(e){var t=new Date;return e._useUTC?[t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()]:[t.getFullYear(),t.getMonth(),t.getDate()]};function Ke(e){var t,s,r,n,a=[];if(!e._d){for(r=Rr(e),e._w&&null==e._a[v]&&null==e._a[F]&&Sr(e),e._dayOfYear&&(n=oe(e._a[b],r[b]),e._dayOfYear>Bt(n)&&(o(e)._overflowDayOfYear=!0),s=Be(n,0,e._dayOfYear),e._a[F]=s.getUTCMonth(),e._a[v]=s.getUTCDate()),t=0;3>t&&null==e._a[t];++t)e._a[t]=a[t]=r[t];for(;7>t;t++)e._a[t]=a[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[L]&&0===e._a[U]&&0===e._a[I]&&0===e._a[X]&&(e._nextDay=!0,e._a[L]=0),e._d=(e._useUTC?Be:es).apply(null,a),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[L]=24)}};function Sr(e){var t,o,r,n,a,s,d;t=e._w,null!=t.GG||null!=t.W||null!=t.E?(a=1,s=4,o=oe(t.GG,e._a[b],ee(i(),1,4).year),r=oe(t.W,1),n=oe(t.E,1)):(a=e._locale._week.dow,s=e._locale._week.doy,o=oe(t.gg,e._a[b],ee(i(),a,s).year),r=oe(t.w,1),null!=t.d?(n=t.d,a>n&&++r):n=null!=t.e?t.e+a:a),d=yd(o,r,n,s,a),e._a[b]=d.year,e._dayOfYear=d.dayOfYear};function Ze(e){if(e._f===n.ISO_8601)return void Rt(e);e._a=[],o(e).empty=!0;var r,t,i,s,d,a=\"\"+e._i,u=a.length,m=0;for(i=Tt(e._f,e._locale).match(da)||[],r=0;r<i.length;r++)s=i[r],t=(a.match(ld(s,e))||[])[0],t&&(d=a.substr(0,a.indexOf(t)),d.length>0&&o(e).unusedInput.push(d),a=a.slice(a.indexOf(t)+t.length),m+=t.length),ue[s]?(t?o(e).empty=!1:o(e).unusedTokens.push(s),Td(s,t,e)):e._strict&&!t&&o(e).unusedTokens.push(s);o(e).charsLeftOver=u-m,a.length>0&&o(e).unusedInput.push(a),o(e).bigHour===!0&&e._a[L]<=12&&e._a[L]>0&&(o(e).bigHour=void 0),e._a[L]=vr(e._locale,e._a[L],e._meridiem),Ke(e),Xe(e)};function vr(e,t,a){var n;return null==a?t:null!=e.meridiemHour?e.meridiemHour(t,a):null!=e.isPM?(n=e.isPM(a),n&&12>t&&(t+=12),n||12!==t||(t=0),t):t};function Hr(e){var t,r,s,n,a;if(0===e._f.length)return o(e).invalidFormat=!0,void(e._d=new Date(NaN));for(n=0;n<e._f.length;n++)a=0,t=Qe({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[n],Ze(t),fa(t)&&(a+=o(t).charsLeftOver,a+=10*o(t).unusedTokens.length,o(t).score=a,(null==s||s>a)&&(s=a,r=t));Ee(e,r||t)};function br(e){if(!e._d){var t=Wt(e._i);e._a=[t.year,t.month,t.day||t.date,t.hour,t.minute,t.second,t.millisecond],Ke(e)}};function Wr(e){var t=new Me(Xe(Jt(e)));return t._nextDay&&(t.add(1,\"d\"),t._nextDay=void 0),t};function Jt(e){var t=e._i,a=e._f;return e._locale=e._locale||Q(e._l),null===t||void 0===a&&\"\"===t?ka({nullInput:!0}):(\"string\"==typeof t&&(e._i=t=e._locale.preparse(t)),O(t)?new Me(Xe(t)):(Ae(a)?Hr(e):a?Ze(e):Oe(t)?e._d=t:jr(e),e))};function jr(e){var t=e._i;void 0===t?e._d=new Date:Oe(t)?e._d=new Date(+t):\"string\"==typeof t?Dd(e):Ae(t)?(e._a=Xr(t.slice(0),function(e){return parseInt(e,10)}),Ke(e)):\"object\"==typeof t?br(e):\"number\"==typeof t?e._d=new Date(t):n.createFromInputFallback(e)};function Nt(e,t,a,n,r){var s={};return\"boolean\"==typeof a&&(n=a,a=void 0),s._isAMomentObject=!0,s._useUTC=s._isUTC=r,s._l=a,s._i=e,s._f=t,s._strict=n,Wr(s)};function i(e,t,a,n){return Nt(e,t,a,n,!1)};function Gt(e,t){var n,a;if(1===t.length&&Ae(t[0])&&(t=t[0]),!t.length)return i();for(n=t[0],a=1;a<t.length;++a)(!t[a].isValid()||t[a][e](n))&&(n=t[a]);return n};function wr(){var e=[].slice.call(arguments,0);return Gt(\"isBefore\",e)};function gr(){var e=[].slice.call(arguments,0);return Gt(\"isAfter\",e)};function Pe(e){var t=Wt(e),i=t.year||0,o=t.quarter||0,m=t.month||0,d=t.week||0,u=t.day||0,s=t.hour||0,a=t.minute||0,r=t.second||0,n=t.millisecond||0;this._milliseconds=+n+1e3*r+6e4*a+36e5*s,this._days=+u+7*d,this._months=+m+3*o+12*i,this._data={},this._locale=Q(),this._bubble()};function dt(e){return e instanceof Pe};function Vt(e,t){s(e,0,0,function(){var e=this.utcOffset(),a=\"+\";return 0>e&&(e=-e,a=\"-\"),a+at(~~(e/60),2)+t+at(~~e%60,2)})};function ht(e){var a=(e||\"\").match(Je)||[],s=a[a.length-1]||[],t=(s+\"\").match(gs)||[\"-\",0,0],n=+(60*t[1])+m(t[2]);return\"+\"===t[0]?n:-n};function Lt(e,t){var a,s;return t._isUTC?(a=t.clone(),s=(O(e)||Oe(e)?+e:+i(e))-+a,a._d.setTime(+a._d+s),n.updateOffset(a,!1),a):i(e).local()};function ut(e){return 15*-Math.round(e._d.getTimezoneOffset()/15)};function pr(e,t){var s,a=this._offset||0;return null!=e?(\"string\"==typeof e&&(e=ht(e)),Math.abs(e)<16&&(e=60*e),!this._isUTC&&t&&(s=ut(this)),this._offset=e,this._isUTC=!0,null!=s&&this.add(s,\"m\"),a!==e&&(!t||this._changeInProgress?Dt(this,C(e-a,\"m\"),1,!1):this._changeInProgress||(this._changeInProgress=!0,n.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?a:ut(this)};function yr(e,t){return null!=e?(\"string\"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()};function Yr(e){return this.utcOffset(0,e)};function fr(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(ut(this),\"m\")),this};function Dr(){return this._tzm?this.utcOffset(this._tzm):\"string\"==typeof this._i&&this.utcOffset(ht(this._i)),this};function Tr(e){return e=e?i(e).utcOffset():0,(this.utcOffset()-e)%60===0};function kr(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()};function xr(){if(\"undefined\"!=typeof this._isDSTShifted)return this._isDSTShifted;var e={};if(Qe(e,this),e=Jt(e),e._a){var t=e._isUTC?fe(e._a):i(e._a);this._isDSTShifted=this.isValid()&&ca(e._a,t.toArray())>0}\nelse this._isDSTShifted=!1;return this._isDSTShifted};function Fr(){return!this._isUTC};function Ur(){return this._isUTC};function It(){return this._isUTC&&0===this._offset};function C(e,t){var s,r,d,a=e,n=null;return dt(e)?a={ms:e._milliseconds,d:e._days,M:e._months}:\"number\"==typeof e?(a={},t?a[t]=e:a.milliseconds=e):(n=Ts.exec(e))?(s=\"-\"===n[1]?-1:1,a={y:0,d:m(n[v])*s,h:m(n[L])*s,m:m(n[U])*s,s:m(n[I])*s,ms:m(n[X])*s}):(n=ws.exec(e))?(s=\"-\"===n[1]?-1:1,a={y:R(n[2],s),M:R(n[3],s),d:R(n[4],s),h:R(n[5],s),m:R(n[6],s),s:R(n[7],s),w:R(n[8],s)}):null==a?a={}:\"object\"==typeof a&&(\"from\"in a||\"to\"in a)&&(d=Nr(i(a.from),i(a.to)),a={},a.ms=d.milliseconds,a.M=d.months),r=new Pe(a),dt(e)&&B(e,\"_locale\")&&(r._locale=e._locale),r};function R(e,t){var a=e&&parseFloat(e.replace(\",\",\".\"));return(isNaN(a)?0:a)*t};function Xt(e,t){var a={milliseconds:0,months:0};return a.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(a.months,\"M\").isAfter(t)&&--a.months,a.milliseconds=+t-+e.clone().add(a.months,\"M\"),a};function Nr(e,t){var a;return t=Lt(t,e),e.isBefore(t)?a=Xt(e,t):(a=Xt(t,e),a.milliseconds=-a.milliseconds,a.months=-a.months),a};function jt(e,t){return function(a,n){var r,s;return null===n||isNaN(+n)||(vd(t,\"moment().\"+t+\"(period, number) is deprecated. Please use moment().\"+t+\"(number, period).\"),s=a,a=n,n=s),a=\"string\"==typeof a?+a:a,r=C(a,n),Dt(this,r,e),this}};function Dt(e,t,a,s){var i=t._milliseconds,d=t._days,r=t._months;s=null==s?!0:s,i&&e._d.setTime(+e._d+i*a),d&&yt(e,\"Date\",Ce(e,\"Date\")+d*a),r&&Zt(e,Ce(e,\"Month\")+r*a),s&&n.updateOffset(e,d||r)};function Ir(e,t){var s=e||i(),r=Lt(s,this).startOf(\"day\"),a=this.diff(r,\"days\",!0),n=-6>a?\"sameElse\":-1>a?\"lastWeek\":0>a?\"lastDay\":1>a?\"sameDay\":2>a?\"nextDay\":7>a?\"nextWeek\":\"sameElse\";return this.format(t&&t[n]||this.localeData().calendar(n,this,i(s)))};function Vr(){return new Me(this)};function Zr(e,t){var a;return t=T(\"undefined\"!=typeof t?t:\"millisecond\"),\"millisecond\"===t?(e=O(e)?e:i(e),+this>+e):(a=O(e)?+e:+i(e),a<+this.clone().startOf(t))};function Kr(e,t){var a;return t=T(\"undefined\"!=typeof t?t:\"millisecond\"),\"millisecond\"===t?(e=O(e)?e:i(e),+e>+this):(a=O(e)?+e:+i(e),+this.clone().endOf(t)<a)};function Cr(e,t,a){return this.isAfter(e,a)&&this.isBefore(t,a)};function Gr(e,t){var a;return t=T(t||\"millisecond\"),\"millisecond\"===t?(e=O(e)?e:i(e),+this===+e):(a=+i(e),+this.clone().startOf(t)<=a&&a<=+this.clone().endOf(t))};function Pr(e,t,a){var n,s,r=Lt(e,this),d=6e4*(r.utcOffset()-this.utcOffset());return t=T(t),\"year\"===t||\"month\"===t||\"quarter\"===t?(s=Ar(this,r),\"quarter\"===t?s/=3:\"year\"===t&&(s/=12)):(n=this-r,s=\"second\"===t?n/1e3:\"minute\"===t?n/6e4:\"hour\"===t?n/36e5:\"day\"===t?(n-d)/864e5:\"week\"===t?(n-d)/6048e5:n),a?s:c(s)};function Ar(e,t){var s,r,n=12*(t.year()-e.year())+(t.month()-e.month()),a=e.clone().add(n,\"months\");return 0>t-a?(s=e.clone().add(n-1,\"months\"),r=(t-a)/(a-s)):(s=e.clone().add(n+1,\"months\"),r=(t-a)/(s-a)),-(n+r)};function zr(){return this.clone().locale(\"en\").format(\"ddd MMM DD YYYY HH:mm:ss [GMT]ZZ\")};function gt(){var e=this.clone().utc();return 0<e.year()&&e.year()<=9999?\"function\"==typeof Date.prototype.toISOString?this.toDate().toISOString():nt(e,\"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]\"):nt(e,\"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]\")};function Er(e){var t=nt(this,e||n.defaultFormat);return this.localeData().postformat(t)};function Jr(e,t){return this.isValid()?C({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()};function Or(e){return this.from(i(),e)};function Hd(e,t){return this.isValid()?C({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()};function Rn(e){return this.to(i(),e)};function vt(e){var t;return void 0===e?this._locale._abbr:(t=Q(e),null!=t&&(this._locale=t),this)};function bt(){return this._locale};function Ka(e){switch(e=T(e)){case\"year\":this.month(0);case\"quarter\":case\"month\":this.date(1);case\"week\":case\"isoWeek\":case\"day\":this.hours(0);case\"hour\":this.minutes(0);case\"minute\":this.seconds(0);case\"second\":this.milliseconds(0)};return\"week\"===e&&this.weekday(0),\"isoWeek\"===e&&this.isoWeekday(1),\"quarter\"===e&&this.month(3*Math.floor(this.month()/3)),this};function Ia(e){return e=T(e),void 0===e||\"millisecond\"===e?this:this.startOf(e).add(1,\"isoWeek\"===e?\"week\":e).subtract(1,\"ms\")};function Ua(){return+this._d-6e4*(this._offset||0)};function Ja(){return Math.floor(+this/1e3)};function Ga(){return this._offset?new Date(+this):this._d};function Ca(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]};function Na(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}};function Ra(){return fa(this)};function qa(){return Ee({},o(this))};function nn(){return o(this).overflow};function ze(e,t){s(0,[e,e.length],0,t)};function zt(e,t,a){return ee(i([e,11,31+t-a]),t,a).week};function Qa(e){var t=ee(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==e?t:this.add(e-t,\"y\")};function en(e){var t=ee(this,1,4).year;return null==e?t:this.add(e-t,\"y\")};function dn(){return zt(this.year(),1,4)};function ja(){var e=this.localeData()._week;return zt(this.year(),e.dow,e.doy)};function wa(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)};function ga(e,t){return\"string\"!=typeof e?e:isNaN(e)?(e=t.weekdaysParse(e),\"number\"==typeof e?e:null):parseInt(e,10)};function va(e){return this._weekdays[e.day()]};function Sa(e){return this._weekdaysShort[e.day()]};function Ha(e){return this._weekdaysMin[e.day()]};function Aa(e){var t,a,n;for(this._weekdaysParse=this._weekdaysParse||[],t=0;7>t;t++)if(this._weekdaysParse[t]||(a=i([2e3,1]).day(t),n=\"^\"+this.weekdays(a,\"\")+\"|^\"+this.weekdaysShort(a,\"\")+\"|^\"+this.weekdaysMin(a,\"\"),this._weekdaysParse[t]=new RegExp(n.replace(\".\",\"\"),\"i\")),this._weekdaysParse[t].test(e))return t};function Fa(e){var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(e=ga(e,this.localeData()),this.add(e-t,\"d\")):t};function xa(e){var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,\"d\")};function tn(e){return null==e?this.day()||7:this.day(this.day()%7?e:e-7)};function Ot(e,t){s(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})};function Pt(e,t){return t._meridiemParse};function Qn(e){return\"p\"===(e+\"\").toLowerCase().charAt(0)};function Jn(e,t,a){return e>11?a?\"pm\":\"PM\":a?\"am\":\"AM\"};function En(e,t){t[X]=m(1e3*(\"0.\"+e))};function zn(){return this._isUTC?\"UTC\":\"\"};function xn(){return this._isUTC?\"Coordinated Universal Time\":\"\"};function Fn(e){return i(1e3*e)};function An(){return i.apply(null,arguments).parseZone()};function Pn(e,t,a){var n=this._calendar[e];return\"function\"==typeof n?n.call(t,a):n};function Cn(e){var a=this._longDateFormat[e],t=this._longDateFormat[e.toUpperCase()];return a||!t?a:(this._longDateFormat[e]=t.replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e])};function Nn(){return this._invalidDate};function Bn(e){return this._ordinal.replace(\"%d\",e)};function qt(e){return e};function Kn(e,t,a,n){var s=this._relativeTime[a];return\"function\"==typeof s?s(e,t,a,n):s.replace(/%d/i,e)};function cn(e,t){var a=this._relativeTime[e>0?\"future\":\"past\"];return\"function\"==typeof a?a(t):a.replace(/%s/i,t)};function hn(e){var a,t;for(t in e)a=e[t],\"function\"==typeof a?this[t]=a:this[\"_\"+t]=a;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+\"|\"+/\\d{1,2}/.source)};function Qt(e,t,a,n){var r=Q(),s=fe().set(n,t);return r[a](s,e)};function he(e,t,a,n,s){if(\"number\"==typeof e&&(t=e,e=void 0),e=e||\"\",null!=t)return Qt(e,t,a,s);var r,d=[];for(r=0;n>r;r++)d[r]=Qt(e,r,a,s);return d};function un(e,t){return he(e,t,\"months\",12,\"month\")};function pn(e,t){return he(e,t,\"monthsShort\",12,\"month\")};function fn(e,t){return he(e,t,\"weekdays\",7,\"day\")};function Hn(e,t){return he(e,t,\"weekdaysShort\",7,\"day\")};function bn(e,t){return he(e,t,\"weekdaysMin\",7,\"day\")};function vn(){var e=this._data;return this._milliseconds=x(this._milliseconds),this._days=x(this._days),this._months=x(this._months),e.milliseconds=x(e.milliseconds),e.seconds=x(e.seconds),e.minutes=x(e.minutes),e.hours=x(e.hours),e.months=x(e.months),e.years=x(e.years),this};function Et(e,t,a,n){var s=C(t,a);return e._milliseconds+=n*s._milliseconds,e._days+=n*s._days,e._months+=n*s._months,e._bubble()};function Dn(e,t){return Et(this,e,t,1)};function ln(e,t){return Et(this,e,t,-1)};function sa(e){return 0>e?Math.floor(e):Math.ceil(e)};function Gn(){var d,i,r,o,s,n=this._milliseconds,e=this._days,t=this._months,a=this._data;return n>=0&&e>=0&&t>=0||0>=n&&0>=e&&0>=t||(n+=864e5*sa(ot(t)+e),e=0,t=0),a.milliseconds=n%1e3,d=c(n/1e3),a.seconds=d%60,i=c(d/60),a.minutes=i%60,r=c(i/60),a.hours=r%24,e+=c(r/24),s=c(Da(e)),t+=s,e-=sa(ot(s)),o=c(t/12),t%=12,a.days=e,a.months=t,a.years=o,this};function Da(e){return 4800*e/146097};function ot(e){return 146097*e/4800};function rn(e){var t,n,a=this._milliseconds;if(e=T(e),\"month\"===e||\"year\"===e)return t=this._days+a/864e5,n=this._months+Da(t),\"month\"===e?n:n/12;switch(t=this._days+Math.round(ot(this._months)),e){case\"week\":return t/7+a/6048e5;case\"day\":return t+a/864e5;case\"hour\":return 24*t+a/36e5;case\"minute\":return 1440*t+a/6e4;case\"second\":return 86400*t+a/1e3;case\"millisecond\":return Math.floor(864e5*t)+a;default:throw new Error(\"Unknown unit \"+e)}};function sn(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*m(this._months/12)};function P(e){return function(){return this.as(e)}};function Va(e){return e=T(e),this[e+\"s\"]()};function Z(e){return function(){return this._data[e]}};function Sn(){return c(this.days()/7)};function Ba(e,t,a,n,s){return s.relativeTime(t||1,!!a,e,n)};function Xa(e,t,a){var n=C(e).abs(),m=se(n.as(\"s\")),i=se(n.as(\"m\")),o=se(n.as(\"h\")),d=se(n.as(\"d\")),r=se(n.as(\"M\")),u=se(n.as(\"y\")),s=m<z.s&&[\"s\",m]||1===i&&[\"m\"]||i<z.m&&[\"mm\",i]||1===o&&[\"h\"]||o<z.h&&[\"hh\",o]||1===d&&[\"d\"]||d<z.d&&[\"dd\",d]||1===r&&[\"M\"]||r<z.M&&[\"MM\",r]||1===u&&[\"y\"]||[\"yy\",u];return s[2]=t,s[3]=+e>0,s[4]=a,Ba.apply(null,s)};function Ea(e,t){return void 0===z[e]?!1:void 0===t?z[e]:(z[e]=t,!0)};function ba(e){var a=this.localeData(),t=Xa(this,!e,a);return e&&(t=a.pastFuture(+this,t)),a.postformat(t)};function Ue(){var e,d,i,r=it(this._milliseconds)/1e3,M=it(this._days),s=it(this._months);e=c(r/60),d=c(e/60),r%=60,e%=60,i=c(s/12),s%=12;var l=i,m=s,u=M,n=d,a=e,t=r,o=this.asSeconds();return o?(0>o?\"-\":\"\")+\"P\"+(l?l+\"Y\":\"\")+(m?m+\"M\":\"\")+(u?u+\"D\":\"\")+(n||a||t?\"T\":\"\")+(n?n+\"H\":\"\")+(a?a+\"M\":\"\")+(t?t+\"S\":\"\"):\"P0D\"};function On(e,t){var a=e.split(\"_\");return t%10===1&&t%100!==11?a[0]:t%10>=2&&4>=t%10&&(10>t%100||t%100>=20)?a[1]:a[2]};function V(e,t,a){var n={mm:t?\"хвіліна_хвіліны_хвілін\":\"хвіліну_хвіліны_хвілін\",hh:t?\"гадзіна_гадзіны_гадзін\":\"гадзіну_гадзіны_гадзін\",dd:\"дзень_дні_дзён\",MM:\"месяц_месяцы_месяцаў\",yy:\"год_гады_гадоў\"};return\"m\"===a?t?\"хвіліна\":\"хвіліну\":\"h\"===a?t?\"гадзіна\":\"гадзіну\":e+\" \"+On(n[a],+e)};function Zn(e,t){var n={nominative:\"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань\".split(\"_\"),accusative:\"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня\".split(\"_\")},a=/D[oD]?(\\[[^\\[\\]]*\\]|\\s+)+MMMM?/.test(t)?\"accusative\":\"nominative\";return n[a][e.month()]};function mn(e,t){var n={nominative:\"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота\".split(\"_\"),accusative:\"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу\".split(\"_\")},a=/\\[ ?[Вв] ?(?:мінулую|наступную)? ?\\] ?dddd/.test(t)?\"accusative\":\"nominative\";return n[a][e.day()]};function rt(e,t,a){var n={mm:\"munutenn\",MM:\"miz\",dd:\"devezh\"};return e+\" \"+Ln(n[a],e)};function Mn(e){switch(ra(e)){case 1:case 3:case 4:case 5:case 9:return e+\" bloaz\";default:return e+\" vloaz\"}};function ra(e){return e>9?ra(e%10):e};function Ln(e,t){return 2===t?an(e):e};function an(e){var t={m:\"v\",b:\"v\",d:\"z\"};return void 0===t[e.charAt(0)]?e:t[e.charAt(0)]+e.substring(1)};function te(e,t,a){var n=e+\" \";switch(a){case\"m\":return t?\"jedna minuta\":\"jedne minute\";case\"mm\":return n+=1===e?\"minuta\":2===e||3===e||4===e?\"minute\":\"minuta\";case\"h\":return t?\"jedan sat\":\"jednog sata\";case\"hh\":return n+=1===e?\"sat\":2===e||3===e||4===e?\"sata\":\"sati\";case\"dd\":return n+=1===e?\"dan\":\"dana\";case\"MM\":return n+=1===e?\"mjesec\":2===e||3===e||4===e?\"mjeseca\":\"mjeseci\";case\"yy\":return n+=1===e?\"godina\":2===e||3===e||4===e?\"godine\":\"godina\"}};function De(e){return e>1&&5>e&&1!==~~(e/10)};function y(e,t,a,n){var s=e+\" \";switch(a){case\"s\":return t||n?\"pár sekund\":\"pár sekundami\";case\"m\":return t?\"minuta\":n?\"minutu\":\"minutou\";case\"mm\":return t||n?s+(De(e)?\"minuty\":\"minut\"):s+\"minutami\";break;case\"h\":return t?\"hodina\":n?\"hodinu\":\"hodinou\";case\"hh\":return t||n?s+(De(e)?\"hodiny\":\"hodin\"):s+\"hodinami\";break;case\"d\":return t||n?\"den\":\"dnem\";case\"dd\":return t||n?s+(De(e)?\"dny\":\"dní\"):s+\"dny\";break;case\"M\":return t||n?\"měsíc\":\"měsícem\";case\"MM\":return t||n?s+(De(e)?\"měsíce\":\"měsíců\"):s+\"měsíci\";break;case\"y\":return t||n?\"rok\":\"rokem\";case\"yy\":return t||n?s+(De(e)?\"roky\":\"let\"):s+\"lety\"}};function J(e,t,a,n){var s={m:[\"eine Minute\",\"einer Minute\"],h:[\"eine Stunde\",\"einer Stunde\"],d:[\"ein Tag\",\"einem Tag\"],dd:[e+\" Tage\",e+\" Tagen\"],M:[\"ein Monat\",\"einem Monat\"],MM:[e+\" Monate\",e+\" Monaten\"],y:[\"ein Jahr\",\"einem Jahr\"],yy:[e+\" Jahre\",e+\" Jahren\"]};return t?s[a][0]:s[a][1]};function G(e,t,a,n){var s={m:[\"eine Minute\",\"einer Minute\"],h:[\"eine Stunde\",\"einer Stunde\"],d:[\"ein Tag\",\"einem Tag\"],dd:[e+\" Tage\",e+\" Tagen\"],M:[\"ein Monat\",\"einem Monat\"],MM:[e+\" Monate\",e+\" Monaten\"],y:[\"ein Jahr\",\"einem Jahr\"],yy:[e+\" Jahre\",e+\" Jahren\"]};return t?s[a][0]:s[a][1]};function H(e,t,a,n){var s={s:[\"mõne sekundi\",\"mõni sekund\",\"paar sekundit\"],m:[\"ühe minuti\",\"üks minut\"],mm:[e+\" minuti\",e+\" minutit\"],h:[\"ühe tunni\",\"tund aega\",\"üks tund\"],hh:[e+\" tunni\",e+\" tundi\"],d:[\"ühe päeva\",\"üks päev\"],M:[\"kuu aja\",\"kuu aega\",\"üks kuu\"],MM:[e+\" kuu\",e+\" kuud\"],y:[\"ühe aasta\",\"aasta\",\"üks aasta\"],yy:[e+\" aasta\",e+\" aastat\"]};return t?s[a][2]?s[a][2]:s[a][1]:n?s[a][0]:s[a][1]};function p(e,t,a,n){var s=\"\";switch(a){case\"s\":return n?\"muutaman sekunnin\":\"muutama sekunti\";case\"m\":return n?\"minuutin\":\"minuutti\";case\"mm\":s=n?\"minuutin\":\"minuuttia\";break;case\"h\":return n?\"tunnin\":\"tunti\";case\"hh\":s=n?\"tunnin\":\"tuntia\";break;case\"d\":return n?\"päivän\":\"päivä\";case\"dd\":s=n?\"päivän\":\"päivää\";break;case\"M\":return n?\"kuukauden\":\"kuukausi\";case\"MM\":s=n?\"kuukauden\":\"kuukautta\";break;case\"y\":return n?\"vuoden\":\"vuosi\";case\"yy\":s=n?\"vuoden\":\"vuotta\"};return s=Za(e,n)+\" \"+s};function Za(e,t){return 10>e?t?Ns[e]:Fe[e]:e};function q(e,t,a){var n=e+\" \";switch(a){case\"m\":return t?\"jedna minuta\":\"jedne minute\";case\"mm\":return n+=1===e?\"minuta\":2===e||3===e||4===e?\"minute\":\"minuta\";case\"h\":return t?\"jedan sat\":\"jednog sata\";case\"hh\":return n+=1===e?\"sat\":2===e||3===e||4===e?\"sata\":\"sati\";case\"dd\":return n+=1===e?\"dan\":\"dana\";case\"MM\":return n+=1===e?\"mjesec\":2===e||3===e||4===e?\"mjeseca\":\"mjeseci\";case\"yy\":return n+=1===e?\"godina\":2===e||3===e||4===e?\"godine\":\"godina\"}};function k(e,t,a,n){var s=e;switch(a){case\"s\":return n||t?\"néhány másodperc\":\"néhány másodperce\";case\"m\":return\"egy\"+(n||t?\" perc\":\" perce\");case\"mm\":return s+(n||t?\" perc\":\" perce\");case\"h\":return\"egy\"+(n||t?\" óra\":\" órája\");case\"hh\":return s+(n||t?\" óra\":\" órája\");case\"d\":return\"egy\"+(n||t?\" nap\":\" napja\");case\"dd\":return s+(n||t?\" nap\":\" napja\");case\"M\":return\"egy\"+(n||t?\" hónap\":\" hónapja\");case\"MM\":return s+(n||t?\" hónap\":\" hónapja\");case\"y\":return\"egy\"+(n||t?\" év\":\" éve\");case\"yy\":return s+(n||t?\" év\":\" éve\")};return\"\"};function oa(e){return(e?\"\":\"[múlt] \")+\"[\"+or[this.day()]+\"] LT[-kor]\"};function Pa(e,t){var n={nominative:\"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր\".split(\"_\"),accusative:\"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի\".split(\"_\")},a=/D[oD]?(\\[[^\\[\\]]*\\]|\\s+)+MMMM?/.test(t)?\"accusative\":\"nominative\";return n[a][e.month()]};function Wa(e,t){var a=\"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ\".split(\"_\");return a[e.month()]};function Xn(e,t){var a=\"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ\".split(\"_\");return a[e.day()]};function Te(e){return e%100===11?!0:e%10===1?!1:!0};function S(e,t,a,n){var s=e+\" \";switch(a){case\"s\":return t||n?\"nokkrar sekúndur\":\"nokkrum sekúndum\";case\"m\":return t?\"mínúta\":\"mínútu\";case\"mm\":return Te(e)?s+(t||n?\"mínútur\":\"mínútum\"):t?s+\"mínúta\":s+\"mínútu\";case\"hh\":return Te(e)?s+(t||n?\"klukkustundir\":\"klukkustundum\"):s+\"klukkustund\";case\"d\":return t?\"dagur\":n?\"dag\":\"degi\";case\"dd\":return Te(e)?t?s+\"dagar\":s+(n?\"daga\":\"dögum\"):t?s+\"dagur\":s+(n?\"dag\":\"degi\");case\"M\":return t?\"mánuður\":n?\"mánuð\":\"mánuði\";case\"MM\":return Te(e)?t?s+\"mánuðir\":s+(n?\"mánuði\":\"mánuðum\"):t?s+\"mánuður\":s+(n?\"mánuð\":\"mánuði\");case\"y\":return t||n?\"ár\":\"ári\";case\"yy\":return Te(e)?s+(t||n?\"ár\":\"árum\"):s+(t||n?\"ár\":\"ári\")}};function jn(e,t){var n={nominative:\"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი\".split(\"_\"),accusative:\"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს\".split(\"_\")},a=/D[oD] *MMMM?/.test(t)?\"accusative\":\"nominative\";return n[a][e.month()]};function Yn(e,t){var n={nominative:\"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი\".split(\"_\"),accusative:\"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს\".split(\"_\")},a=/(წინა|შემდეგ)/.test(t)?\"accusative\":\"nominative\";return n[a][e.day()]};function ke(e,t,a,n){var s={m:[\"eng Minutt\",\"enger Minutt\"],h:[\"eng Stonn\",\"enger Stonn\"],d:[\"een Dag\",\"engem Dag\"],M:[\"ee Mount\",\"engem Mount\"],y:[\"ee Joer\",\"engem Joer\"]};return t?s[a][0]:s[a][1]};function Tn(e){var t=e.substr(0,e.indexOf(\" \"));return we(t)?\"a \"+e:\"an \"+e};function gn(e){var t=e.substr(0,e.indexOf(\" \"));return we(t)?\"viru \"+e:\"virun \"+e};function we(e){if(e=parseInt(e,10),isNaN(e))return!1;if(0>e)return!0;if(10>e)return e>=4&&7>=e?!0:!1;if(100>e){var t=e%10,a=e/10;return we(0===t?a:t)};if(1e4>e){for(;e>=10;)e/=10;return we(e)};return e/=1e3,we(e)};function qn(e,t,a,n){return t?\"kelios sekundės\":n?\"kelių sekundžių\":\"kelias sekundes\"};function on(e,t){var n={nominative:\"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis\".split(\"_\"),accusative:\"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio\".split(\"_\")},a=/D[oD]?(\\[[^\\[\\]]*\\]|\\s+)+MMMM?/.test(t)?\"accusative\":\"nominative\";return n[a][e.month()]};function ie(e,t,a,n){return t?N(a)[0]:n?N(a)[1]:N(a)[2]};function Ct(e){return e%10===0||e>10&&20>e};function N(e){return ur[e].split(\"_\")};function ve(e,t,a,n){var s=e+\" \";return 1===e?s+ie(e,t,a[0],n):t?s+(Ct(e)?N(a)[1]:N(a)[0]):n?s+N(a)[1]:s+(Ct(e)?N(a)[1]:N(a)[2])};function Oa(e,t){var n=-1===t.indexOf(\"dddd HH:mm\"),a=lr[e.day()];return n?a:a.substring(0,a.length-2)+\"į\"};function ma(e,t,a){return a?t%10===1&&11!==t?e[2]:e[3]:t%10===1&&11!==t?e[0]:e[1]};function Se(e,t,a){return e+\" \"+ma(ta[a],e,t)};function ge(e,t,a){return ma(ta[a],e,t)};function kn(e,t){return t?\"dažas sekundes\":\"dažām sekundēm\"};function Ne(e){return 5>e%10&&e%10>1&&~~(e/10)%10!==1};function ae(e,t,a){var n=e+\" \";switch(a){case\"m\":return t?\"minuta\":\"minutę\";case\"mm\":return n+(Ne(e)?\"minuty\":\"minut\");case\"h\":return t?\"godzina\":\"godzinę\";case\"hh\":return n+(Ne(e)?\"godziny\":\"godzin\");case\"MM\":return n+(Ne(e)?\"miesiące\":\"miesięcy\");case\"yy\":return n+(Ne(e)?\"lata\":\"lat\")}};function le(e,t,a){var s={mm:\"minute\",hh:\"ore\",dd:\"zile\",MM:\"luni\",yy:\"ani\"},n=\" \";return(e%100>=20||e>=100&&e%100===0)&&(n=\" de \"),e+n+s[a]};function za(e,t){var a=e.split(\"_\");return t%10===1&&t%100!==11?a[0]:t%10>=2&&4>=t%10&&(10>t%100||t%100>=20)?a[1]:a[2]};function re(e,t,a){var n={mm:t?\"минута_минуты_минут\":\"минуту_минуты_минут\",hh:\"час_часа_часов\",dd:\"день_дня_дней\",MM:\"месяц_месяца_месяцев\",yy:\"год_года_лет\"};return\"m\"===a?t?\"минута\":\"минуту\":e+\" \"+za(n[a],+e)};function In(e,t){var n={nominative:\"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь\".split(\"_\"),accusative:\"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря\".split(\"_\")},a=/D[oD]?(\\[[^\\[\\]]*\\]|\\s+)+MMMM?/.test(t)?\"accusative\":\"nominative\";return n[a][e.month()]};function Vn(e,t){var n={nominative:\"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек\".split(\"_\"),accusative:\"янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек\".split(\"_\")},a=/D[oD]?(\\[[^\\[\\]]*\\]|\\s+)+MMMM?/.test(t)?\"accusative\":\"nominative\";return n[a][e.month()]};function yn(e,t){var n={nominative:\"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота\".split(\"_\"),accusative:\"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу\".split(\"_\")},a=/\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\\] ?dddd/.test(t)?\"accusative\":\"nominative\";return n[a][e.day()]};function Ye(e){return e>1&&5>e};function D(e,t,a,n){var s=e+\" \";switch(a){case\"s\":return t||n?\"pár sekúnd\":\"pár sekundami\";case\"m\":return t?\"minúta\":n?\"minútu\":\"minútou\";case\"mm\":return t||n?s+(Ye(e)?\"minúty\":\"minút\"):s+\"minútami\";break;case\"h\":return t?\"hodina\":n?\"hodinu\":\"hodinou\";case\"hh\":return t||n?s+(Ye(e)?\"hodiny\":\"hodín\"):s+\"hodinami\";break;case\"d\":return t||n?\"deň\":\"dňom\";case\"dd\":return t||n?s+(Ye(e)?\"dni\":\"dní\"):s+\"dňami\";break;case\"M\":return t||n?\"mesiac\":\"mesiacom\";case\"MM\":return t||n?s+(Ye(e)?\"mesiace\":\"mesiacov\"):s+\"mesiacmi\";break;case\"y\":return t||n?\"rok\":\"rokom\";case\"yy\":return t||n?s+(Ye(e)?\"roky\":\"rokov\"):s+\"rokmi\"}};function f(e,t,a,n){var s=e+\" \";switch(a){case\"s\":return t||n?\"nekaj sekund\":\"nekaj sekundami\";case\"m\":return t?\"ena minuta\":\"eno minuto\";case\"mm\":return s+=1===e?t?\"minuta\":\"minuto\":2===e?t||n?\"minuti\":\"minutama\":5>e?t||n?\"minute\":\"minutami\":t||n?\"minut\":\"minutami\";case\"h\":return t?\"ena ura\":\"eno uro\";case\"hh\":return s+=1===e?t?\"ura\":\"uro\":2===e?t||n?\"uri\":\"urama\":5>e?t||n?\"ure\":\"urami\":t||n?\"ur\":\"urami\";case\"d\":return t||n?\"en dan\":\"enim dnem\";case\"dd\":return s+=1===e?t||n?\"dan\":\"dnem\":2===e?t||n?\"dni\":\"dnevoma\":t||n?\"dni\":\"dnevi\";case\"M\":return t||n?\"en mesec\":\"enim mesecem\";case\"MM\":return s+=1===e?t||n?\"mesec\":\"mesecem\":2===e?t||n?\"meseca\":\"mesecema\":5>e?t||n?\"mesece\":\"meseci\":t||n?\"mesecev\":\"meseci\";case\"y\":return t||n?\"eno leto\":\"enim letom\";case\"yy\":return s+=1===e?t||n?\"leto\":\"letom\":2===e?t||n?\"leti\":\"letoma\":5>e?t||n?\"leta\":\"leti\":t||n?\"let\":\"leti\"}};function w(e,t,a,n){var s={s:[\"viensas secunds\",\"'iensas secunds\"],m:[\"'n míut\",\"'iens míut\"],mm:[e+\" míuts\",\" \"+e+\" míuts\"],h:[\"'n þora\",\"'iensa þora\"],hh:[e+\" þoras\",\" \"+e+\" þoras\"],d:[\"'n ziua\",\"'iensa ziua\"],dd:[e+\" ziuas\",\" \"+e+\" ziuas\"],M:[\"'n mes\",\"'iens mes\"],MM:[e+\" mesen\",\" \"+e+\" mesen\"],y:[\"'n ar\",\"'iens ar\"],yy:[e+\" ars\",\" \"+e+\" ars\"]};return n?s[a][0]:t?s[a][0]:s[a][1].trim()};function wn(e,t){var a=e.split(\"_\");return t%10===1&&t%100!==11?a[0]:t%10>=2&&4>=t%10&&(10>t%100||t%100>=20)?a[1]:a[2]};function me(e,t,a){var n={mm:\"хвилина_хвилини_хвилин\",hh:\"година_години_годин\",dd:\"день_дні_днів\",MM:\"місяць_місяці_місяців\",yy:\"рік_роки_років\"};return\"m\"===a?t?\"хвилина\":\"хвилину\":\"h\"===a?t?\"година\":\"годину\":e+\" \"+wn(n[a],+e)};function Wn(e,t){var n={nominative:\"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень\".split(\"_\"),accusative:\"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня\".split(\"_\")},a=/D[oD]? *MMMM?/.test(t)?\"accusative\":\"nominative\";return n[a][e.month()]};function Un(e,t){var n={nominative:\"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота\".split(\"_\"),accusative:\"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу\".split(\"_\"),genitive:\"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи\".split(\"_\")},a=/(\\[[ВвУу]\\]) ?dddd/.test(t)?\"accusative\":/\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(t)?\"genitive\":\"nominative\";return n[a][e.day()]};function de(e){return function(){return e+\"о\"+(11===this.hours()?\"б\":\"\")+\"] LT\"}};var ia,We,mt=n.momentProperties=[],ct=!1,K={},pe={},da=/(\\[[^\\[]*\\])|(\\\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,je=/(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Yt={},ue={},Ta=/\\d/,h=/\\d\\d/,aa=/\\d{3}/,Re=/\\d{4}/,be=/[+-]?\\d{6}/,u=/\\d\\d?/,He=/\\d{1,3}/,qe=/\\d{1,4}/,xe=/[+-]?\\d{1,6}/,md=/\\d+/,Ge=/[+-]?\\d+/,Je=/Z|[+-]\\d\\d:?\\d\\d/gi,sd=/[+-]?\\d+(\\.\\d{1,3})?/,ye=/[0-9]*['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+|[\\u0600-\\u06FF\\/]+(\\s*?[\\u0600-\\u06FF]+){1,2}/i,Ie={},Ve={},b=0,F=1,v=2,L=3,U=4,I=5,X=6;s(\"M\",[\"MM\",2],\"Mo\",function(){return this.month()+1}),s(\"MMM\",0,0,function(e){return this.localeData().monthsShort(this,e)}),s(\"MMMM\",0,0,function(e){return this.localeData().months(this,e)}),M(\"month\",\"M\"),a(\"M\",u),a(\"MM\",u,h),a(\"MMM\",ye),a(\"MMMM\",ye),l([\"M\",\"MM\"],function(e,t){t[F]=m(e)-1}),l([\"MMM\",\"MMMM\"],function(e,t,a,n){var s=a._locale.monthsParse(e,n,a._strict);null!=s?t[F]=s:o(a).invalidMonth=e});var od=\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ud=\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),na={};n.suppressDeprecationWarnings=!1;var rd=/^\\s*(?:[+-]\\d{6}|\\d{4})-(?:(\\d\\d-\\d\\d)|(W\\d\\d$)|(W\\d\\d-\\d)|(\\d\\d\\d))((T| )(\\d\\d(:\\d\\d(:\\d\\d(\\.\\d+)?)?)?)?([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,Mt=[[\"YYYYYY-MM-DD\",/[+-]\\d{6}-\\d{2}-\\d{2}/],[\"YYYY-MM-DD\",/\\d{4}-\\d{2}-\\d{2}/],[\"GGGG-[W]WW-E\",/\\d{4}-W\\d{2}-\\d/],[\"GGGG-[W]WW\",/\\d{4}-W\\d{2}/],[\"YYYY-DDD\",/\\d{4}-\\d{3}/]],lt=[[\"HH:mm:ss.SSSS\",/(T| )\\d\\d:\\d\\d:\\d\\d\\.\\d+/],[\"HH:mm:ss\",/(T| )\\d\\d:\\d\\d:\\d\\d/],[\"HH:mm\",/(T| )\\d\\d:\\d\\d/],[\"HH\",/(T| )\\d\\d/]],id=/^\\/?Date\\((\\-?\\d+)/i;n.createFromInputFallback=g(\"moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.\",function(e){e._d=new Date(e._i+(e._useUTC?\" UTC\":\"\"))}),s(0,[\"YY\",2],0,function(){return this.year()%100}),s(0,[\"YYYY\",4],0,\"year\"),s(0,[\"YYYYY\",5],0,\"year\"),s(0,[\"YYYYYY\",6,!0],0,\"year\"),M(\"year\",\"y\"),a(\"Y\",Ge),a(\"YY\",u,h),a(\"YYYY\",qe,Re),a(\"YYYYY\",xe,be),a(\"YYYYYY\",xe,be),l([\"YYYYY\",\"YYYYYY\"],b),l(\"YYYY\",function(e,t){t[b]=2===e.length?n.parseTwoDigitYear(e):m(e)}),l(\"YY\",function(e,t){t[b]=n.parseTwoDigitYear(e)}),n.parseTwoDigitYear=function(e){return m(e)+(m(e)>68?1900:2e3)};var pa=ne(\"FullYear\",!1);s(\"w\",[\"ww\",2],\"wo\",\"week\"),s(\"W\",[\"WW\",2],\"Wo\",\"isoWeek\"),M(\"week\",\"w\"),M(\"isoWeek\",\"W\"),a(\"w\",u),a(\"ww\",u,h),a(\"W\",u),a(\"WW\",u,h),Le([\"w\",\"ww\",\"W\",\"WW\"],function(e,t,a,n){t[n.substr(0,1)]=m(e)});var dd={dow:0,doy:6};s(\"DDD\",[\"DDDD\",3],\"DDDo\",\"dayOfYear\"),M(\"dayOfYear\",\"DDD\"),a(\"DDD\",He),a(\"DDDD\",aa),l([\"DDD\",\"DDDD\"],function(e,t,a){a._dayOfYear=m(e)}),n.ISO_8601=function(){};var hr=g(\"moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548\",function(){var e=i.apply(null,arguments);return this>e?this:e}),cr=g(\"moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548\",function(){var e=i.apply(null,arguments);return e>this?this:e});Vt(\"Z\",\":\"),Vt(\"ZZ\",\"\"),a(\"Z\",Je),a(\"ZZ\",Je),l([\"Z\",\"ZZ\"],function(e,t,a){a._useUTC=!0,a._tzm=ht(e)});var gs=/([\\+\\-]|\\d\\d)/gi;n.updateOffset=function(){};var Ts=/(\\-)?(?:(\\d*)\\.)?(\\d+)\\:(\\d+)(?:\\:(\\d+)\\.?(\\d{3})?)?/,ws=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;C.fn=Pe.prototype;var fs=jt(1,\"add\"),ks=jt(-1,\"subtract\");n.defaultFormat=\"YYYY-MM-DDTHH:mm:ssZ\";var la=g(\"moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.\",function(e){return void 0===e?this.localeData():this.locale(e)});s(0,[\"gg\",2],0,function(){return this.weekYear()%100}),s(0,[\"GG\",2],0,function(){return this.isoWeekYear()%100}),ze(\"gggg\",\"weekYear\"),ze(\"ggggg\",\"weekYear\"),ze(\"GGGG\",\"isoWeekYear\"),ze(\"GGGGG\",\"isoWeekYear\"),M(\"weekYear\",\"gg\"),M(\"isoWeekYear\",\"GG\"),a(\"G\",Ge),a(\"g\",Ge),a(\"GG\",u,h),a(\"gg\",u,h),a(\"GGGG\",qe,Re),a(\"gggg\",qe,Re),a(\"GGGGG\",xe,be),a(\"ggggg\",xe,be),Le([\"gggg\",\"ggggg\",\"GGGG\",\"GGGGG\"],function(e,t,a,n){t[n.substr(0,2)]=m(e)}),Le([\"gg\",\"GG\"],function(e,t,a,s){t[s]=n.parseTwoDigitYear(e)}),s(\"Q\",0,0,\"quarter\"),M(\"quarter\",\"Q\"),a(\"Q\",Ta),l(\"Q\",function(e,t){t[F]=3*(m(e)-1)}),s(\"D\",[\"DD\",2],\"Do\",\"date\"),M(\"date\",\"D\"),a(\"D\",u),a(\"DD\",u,h),a(\"Do\",function(e,t){return e?t._ordinalParse:t._ordinalParseLenient}),l([\"D\",\"DD\"],v),l(\"Do\",function(e,t){t[v]=m(e.match(u)[0],10)});var ya=ne(\"Date\",!0);s(\"d\",0,\"do\",\"day\"),s(\"dd\",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),s(\"ddd\",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),s(\"dddd\",0,0,function(e){return this.localeData().weekdays(this,e)}),s(\"e\",0,0,\"weekday\"),s(\"E\",0,0,\"isoWeekday\"),M(\"day\",\"d\"),M(\"weekday\",\"e\"),M(\"isoWeekday\",\"E\"),a(\"d\",u),a(\"e\",u),a(\"E\",u),a(\"dd\",ye),a(\"ddd\",ye),a(\"dddd\",ye),Le([\"dd\",\"ddd\",\"dddd\"],function(e,t,a){var n=a._locale.weekdaysParse(e);null!=n?t.d=n:o(a).invalidWeekday=e}),Le([\"d\",\"e\",\"E\"],function(e,t,a,n){t[n]=m(e)});var Ss=\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),vs=\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),Ds=\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\");s(\"H\",[\"HH\",2],0,\"hour\"),s(\"h\",[\"hh\",2],0,function(){return this.hours()%12||12}),Ot(\"a\",!0),Ot(\"A\",!1),M(\"hour\",\"h\"),a(\"a\",Pt),a(\"A\",Pt),a(\"H\",u),a(\"h\",u),a(\"HH\",u,h),a(\"hh\",u,h),l([\"H\",\"HH\"],L),l([\"a\",\"A\"],function(e,t,a){a._isPm=a._locale.isPM(e),a._meridiem=e}),l([\"h\",\"hh\"],function(e,t,a){t[L]=m(e),o(a).bigHour=!0});var Fs=/[ap]\\.?m?\\.?/i,xs=ne(\"Hours\",!0);s(\"m\",[\"mm\",2],0,\"minute\"),M(\"minute\",\"m\"),a(\"m\",u),a(\"mm\",u,h),l([\"m\",\"mm\"],U);var Ws=ne(\"Minutes\",!1);s(\"s\",[\"ss\",2],0,\"second\"),M(\"second\",\"s\"),a(\"s\",u),a(\"ss\",u,h),l([\"s\",\"ss\"],I);var js=ne(\"Seconds\",!1);s(\"S\",0,0,function(){return~~(this.millisecond()/100)}),s(0,[\"SS\",2],0,function(){return~~(this.millisecond()/10)}),s(0,[\"SSS\",3],0,\"millisecond\"),s(0,[\"SSSS\",4],0,function(){return 10*this.millisecond()}),s(0,[\"SSSSS\",5],0,function(){return 100*this.millisecond()}),s(0,[\"SSSSSS\",6],0,function(){return 1e3*this.millisecond()}),s(0,[\"SSSSSSS\",7],0,function(){return 1e4*this.millisecond()}),s(0,[\"SSSSSSSS\",8],0,function(){return 1e5*this.millisecond()}),s(0,[\"SSSSSSSSS\",9],0,function(){return 1e6*this.millisecond()}),M(\"millisecond\",\"ms\"),a(\"S\",He,Ta),a(\"SS\",He,h),a(\"SSS\",He,aa);var E;for(E=\"SSSS\";E.length<=9;E+=\"S\")a(E,md);for(E=\"S\";E.length<=9;E+=\"S\")l(E,En);var Hs=ne(\"Milliseconds\",!1);s(\"z\",0,0,\"zoneAbbr\"),s(\"zz\",0,0,\"zoneName\");var t=Me.prototype;t.add=fs,t.calendar=Ir,t.clone=Vr,t.diff=Pr,t.endOf=Ia,t.format=Er,t.from=Jr,t.fromNow=Or,t.to=Hd,t.toNow=Rn,t.get=pt,t.invalidAt=nn,t.isAfter=Zr,t.isBefore=Kr,t.isBetween=Cr,t.isSame=Gr,t.isValid=Ra,t.lang=la,t.locale=vt,t.localeData=bt,t.max=cr,t.min=hr,t.parsingFlags=qa,t.set=pt,t.startOf=Ka,t.subtract=ks,t.toArray=Ca,t.toObject=Na,t.toDate=Ga,t.toISOString=gt,t.toJSON=gt,t.toString=zr,t.unix=Ja,t.valueOf=Ua,t.year=pa,t.isLeapYear=fd,t.weekYear=Qa,t.isoWeekYear=en,t.quarter=t.quarters=wa,t.month=Kt,t.daysInMonth=Sd,t.week=t.weeks=Yd,t.isoWeek=t.isoWeeks=pd,t.weeksInYear=ja,t.isoWeeksInYear=dn,t.date=ya,t.day=t.days=Fa,t.weekday=xa,t.isoWeekday=tn,t.dayOfYear=qr,t.hour=t.hours=xs,t.minute=t.minutes=Ws,t.second=t.seconds=js,t.millisecond=t.milliseconds=Hs,t.utcOffset=pr,t.utc=Yr,t.local=fr,t.parseZone=Dr,t.hasAlignedHourOffset=Tr,t.isDST=kr,t.isDSTShifted=xr,t.isLocal=Fr,t.isUtcOffset=Ur,t.isUtc=It,t.isUTC=It,t.zoneAbbr=zn,t.zoneName=xn,t.dates=g(\"dates accessor is deprecated. Use date instead.\",ya),t.months=g(\"months accessor is deprecated. Use month instead\",Kt),t.years=g(\"years accessor is deprecated. Use year instead\",pa),t.zone=g(\"moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779\",yr);var rs=t,ds={sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},os={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},is=\"Invalid date\",ys=\"%d\",ps=/\\d{1,2}/,bs={future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},r=Ya.prototype;r._calendar=ds,r.calendar=Pn,r._longDateFormat=os,r.longDateFormat=Cn,r._invalidDate=is,r.invalidDate=Nn,r._ordinal=ys,r.ordinal=Bn,r._ordinalParse=ps,r.preparse=qt,r.postformat=qt,r._relativeTime=bs,r.relativeTime=Kn,r.pastFuture=cn,r.set=hn,r.months=kd,r._months=od,r.monthsShort=gd,r._monthsShort=ud,r.monthsParse=wd,r.week=hd,r._week=dd,r.firstDayOfYear=cd,r.firstDayOfWeek=Ld,r.weekdays=va,r._weekdays=Ss,r.weekdaysMin=Ha,r._weekdaysMin=Ds,r.weekdaysShort=Sa,r._weekdaysShort=vs,r.weekdaysParse=Aa,r.isPM=Qn,r._meridiemParse=Fs,r.meridiem=Jn,ce(\"en\",{ordinalParse:/\\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,a=1===m(e%100/10)?\"th\":1===t?\"st\":2===t?\"nd\":3===t?\"rd\":\"th\";return e+a}}),n.lang=g(\"moment.lang is deprecated. Use moment.locale instead.\",ce),n.langData=g(\"moment.langData is deprecated. Use moment.localeData instead.\",Q);var x=Math.abs,rr=P(\"ms\"),sr=P(\"s\"),Ps=P(\"m\"),As=P(\"h\"),Ms=P(\"d\"),ls=P(\"w\"),Ls=P(\"M\"),hs=P(\"y\"),Ys=Z(\"milliseconds\"),cs=Z(\"seconds\"),us=Z(\"minutes\"),ms=Z(\"hours\"),ss=Z(\"days\"),ns=Z(\"months\"),ts=Z(\"years\"),se=Math.round,z={s:45,m:45,h:22,d:26,M:11},it=Math.abs,d=Pe.prototype;d.abs=vn,d.add=Dn,d.subtract=ln,d.as=rn,d.asMilliseconds=rr,d.asSeconds=sr,d.asMinutes=Ps,d.asHours=As,d.asDays=Ms,d.asWeeks=ls,d.asMonths=Ls,d.asYears=hs,d.valueOf=sn,d._bubble=Gn,d.get=Va,d.milliseconds=Ys,d.seconds=cs,d.minutes=us,d.hours=ms,d.days=ss,d.weeks=Sn,d.months=ns,d.years=ts,d.humanize=ba,d.toISOString=Ue,d.toString=Ue,d.toJSON=Ue,d.locale=vt,d.localeData=bt,d.toIsoString=g(\"toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)\",Ue),d.lang=la,s(\"X\",0,0,\"unix\"),s(\"x\",0,0,\"valueOf\"),a(\"x\",Ge),a(\"X\",sd),l(\"X\",function(e,t,a){a._d=new Date(1e3*parseFloat(e,10))}),l(\"x\",function(e,t,a){a._d=new Date(m(e))}),n.version=\"2.10.6\",nd(i),n.fn=rs,n.min=wr,n.max=gr,n.utc=fe,n.unix=Fn,n.months=un,n.isDate=Oe,n.locale=ce,n.invalid=ka,n.duration=C,n.isMoment=O,n.weekdays=fn,n.parseZone=An,n.localeData=Q,n.isDuration=dt,n.monthsShort=pn,n.weekdaysMin=bn,n.defineLocale=wt,n.weekdaysShort=Hn,n.normalizeUnits=T,n.relativeTimeThreshold=Ea;var e=n,Ks=(e.defineLocale(\"af\",{months:\"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des\".split(\"_\"),weekdays:\"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag\".split(\"_\"),weekdaysShort:\"Son_Maa_Din_Woe_Don_Vry_Sat\".split(\"_\"),weekdaysMin:\"So_Ma_Di_Wo_Do_Vr_Sa\".split(\"_\"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,t,a){return 12>e?a?\"vm\":\"VM\":a?\"nm\":\"NM\"},longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Vandag om] LT\",nextDay:\"[Môre om] LT\",nextWeek:\"dddd [om] LT\",lastDay:\"[Gister om] LT\",lastWeek:\"[Laas] dddd [om] LT\",sameElse:\"L\"},relativeTime:{future:\"oor %s\",past:\"%s gelede\",s:\"'n paar sekondes\",m:\"'n minuut\",mm:\"%d minute\",h:\"'n uur\",hh:\"%d ure\",d:\"'n dag\",dd:\"%d dae\",M:\"'n maand\",MM:\"%d maande\",y:\"'n jaar\",yy:\"%d jaar\"},ordinalParse:/\\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?\"ste\":\"de\")},week:{dow:1,doy:4}}),e.defineLocale(\"ar-ma\",{months:\"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر\".split(\"_\"),monthsShort:\"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر\".split(\"_\"),weekdays:\"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"ح_ن_ث_ر_خ_ج_س\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[اليوم على الساعة] LT\",nextDay:\"[غدا على الساعة] LT\",nextWeek:\"dddd [على الساعة] LT\",lastDay:\"[أمس على الساعة] LT\",lastWeek:\"dddd [على الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"في %s\",past:\"منذ %s\",s:\"ثوان\",m:\"دقيقة\",mm:\"%d دقائق\",h:\"ساعة\",hh:\"%d ساعات\",d:\"يوم\",dd:\"%d أيام\",M:\"شهر\",MM:\"%d أشهر\",y:\"سنة\",yy:\"%d سنوات\"},week:{dow:6,doy:12}}),{1:\"١\",2:\"٢\",3:\"٣\",4:\"٤\",5:\"٥\",6:\"٦\",7:\"٧\",8:\"٨\",9:\"٩\",0:\"٠\"}),Vs={\"١\":\"1\",\"٢\":\"2\",\"٣\":\"3\",\"٤\":\"4\",\"٥\":\"5\",\"٦\":\"6\",\"٧\":\"7\",\"٨\":\"8\",\"٩\":\"9\",\"٠\":\"0\"},Zs=(e.defineLocale(\"ar-sa\",{months:\"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر\".split(\"_\"),monthsShort:\"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر\".split(\"_\"),weekdays:\"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"ح_ن_ث_ر_خ_ج_س\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},meridiemParse:/ص|م/,isPM:function(e){return\"م\"===e},meridiem:function(e,t,a){return 12>e?\"ص\":\"م\"},calendar:{sameDay:\"[اليوم على الساعة] LT\",nextDay:\"[غدا على الساعة] LT\",nextWeek:\"dddd [على الساعة] LT\",lastDay:\"[أمس على الساعة] LT\",lastWeek:\"dddd [على الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"في %s\",past:\"منذ %s\",s:\"ثوان\",m:\"دقيقة\",mm:\"%d دقائق\",h:\"ساعة\",hh:\"%d ساعات\",d:\"يوم\",dd:\"%d أيام\",M:\"شهر\",MM:\"%d أشهر\",y:\"سنة\",yy:\"%d سنوات\"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return Vs[e]}).replace(/،/g,\",\")},postformat:function(e){return e.replace(/\\d/g,function(e){return Ks[e]}).replace(/,/g,\"،\")},week:{dow:6,doy:12}}),e.defineLocale(\"ar-tn\",{months:\"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر\".split(\"_\"),monthsShort:\"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر\".split(\"_\"),weekdays:\"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"ح_ن_ث_ر_خ_ج_س\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[اليوم على الساعة] LT\",nextDay:\"[غدا على الساعة] LT\",nextWeek:\"dddd [على الساعة] LT\",lastDay:\"[أمس على الساعة] LT\",lastWeek:\"dddd [على الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"في %s\",past:\"منذ %s\",s:\"ثوان\",m:\"دقيقة\",mm:\"%d دقائق\",h:\"ساعة\",hh:\"%d ساعات\",d:\"يوم\",dd:\"%d أيام\",M:\"شهر\",MM:\"%d أشهر\",y:\"سنة\",yy:\"%d سنوات\"},week:{dow:1,doy:4}}),{1:\"١\",2:\"٢\",3:\"٣\",4:\"٤\",5:\"٥\",6:\"٦\",7:\"٧\",8:\"٨\",9:\"٩\",0:\"٠\"}),Rs={\"١\":\"1\",\"٢\":\"2\",\"٣\":\"3\",\"٤\":\"4\",\"٥\":\"5\",\"٦\":\"6\",\"٧\":\"7\",\"٨\":\"8\",\"٩\":\"9\",\"٠\":\"0\"},ea=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&10>=e%100?3:e%100>=11?4:5},Bs={s:[\"أقل من ثانية\",\"ثانية واحدة\",[\"ثانيتان\",\"ثانيتين\"],\"%d ثوان\",\"%d ثانية\",\"%d ثانية\"],m:[\"أقل من دقيقة\",\"دقيقة واحدة\",[\"دقيقتان\",\"دقيقتين\"],\"%d دقائق\",\"%d دقيقة\",\"%d دقيقة\"],h:[\"أقل من ساعة\",\"ساعة واحدة\",[\"ساعتان\",\"ساعتين\"],\"%d ساعات\",\"%d ساعة\",\"%d ساعة\"],d:[\"أقل من يوم\",\"يوم واحد\",[\"يومان\",\"يومين\"],\"%d أيام\",\"%d يومًا\",\"%d يوم\"],M:[\"أقل من شهر\",\"شهر واحد\",[\"شهران\",\"شهرين\"],\"%d أشهر\",\"%d شهرا\",\"%d شهر\"],y:[\"أقل من عام\",\"عام واحد\",[\"عامان\",\"عامين\"],\"%d أعوام\",\"%d عامًا\",\"%d عام\"]},Y=function(e){return function(t,a,n,s){var d=ea(t),r=Bs[e][ea(t)];return 2===d&&(r=r[a?0:1]),r.replace(/%d/i,t)}},xt=[\"كانون الثاني يناير\",\"شباط فبراير\",\"آذار مارس\",\"نيسان أبريل\",\"أيار مايو\",\"حزيران يونيو\",\"تموز يوليو\",\"آب أغسطس\",\"أيلول سبتمبر\",\"تشرين الأول أكتوبر\",\"تشرين الثاني نوفمبر\",\"كانون الأول ديسمبر\"],et=(e.defineLocale(\"ar\",{months:xt,monthsShort:xt,weekdays:\"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"ح_ن_ث_ر_خ_ج_س\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"D/‏M/‏YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},meridiemParse:/ص|م/,isPM:function(e){return\"م\"===e},meridiem:function(e,t,a){return 12>e?\"ص\":\"م\"},calendar:{sameDay:\"[اليوم عند الساعة] LT\",nextDay:\"[غدًا عند الساعة] LT\",nextWeek:\"dddd [عند الساعة] LT\",lastDay:\"[أمس عند الساعة] LT\",lastWeek:\"dddd [عند الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"بعد %s\",past:\"منذ %s\",s:Y(\"s\"),m:Y(\"m\"),mm:Y(\"m\"),h:Y(\"h\"),hh:Y(\"h\"),d:Y(\"d\"),dd:Y(\"d\"),M:Y(\"M\"),MM:Y(\"M\"),y:Y(\"y\"),yy:Y(\"y\")},preparse:function(e){return e.replace(/\\u200f/g,\"\").replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return Rs[e]}).replace(/،/g,\",\")},postformat:function(e){return e.replace(/\\d/g,function(e){return Zs[e]}).replace(/,/g,\"،\")},week:{dow:6,doy:12}}),{1:\"-inci\",5:\"-inci\",8:\"-inci\",70:\"-inci\",80:\"-inci\",2:\"-nci\",7:\"-nci\",20:\"-nci\",50:\"-nci\",3:\"-üncü\",4:\"-üncü\",100:\"-üncü\",6:\"-ncı\",9:\"-uncu\",10:\"-uncu\",30:\"-uncu\",60:\"-ıncı\",90:\"-ıncı\"}),qs=(e.defineLocale(\"az\",{months:\"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr\".split(\"_\"),monthsShort:\"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek\".split(\"_\"),weekdays:\"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə\".split(\"_\"),weekdaysShort:\"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən\".split(\"_\"),weekdaysMin:\"Bz_BE_ÇA_Çə_CA_Cü_Şə\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[bugün saat] LT\",nextDay:\"[sabah saat] LT\",nextWeek:\"[gələn həftə] dddd [saat] LT\",lastDay:\"[dünən] LT\",lastWeek:\"[keçən həftə] dddd [saat] LT\",sameElse:\"L\"},relativeTime:{future:\"%s sonra\",past:\"%s əvvəl\",s:\"birneçə saniyyə\",m:\"bir dəqiqə\",mm:\"%d dəqiqə\",h:\"bir saat\",hh:\"%d saat\",d:\"bir gün\",dd:\"%d gün\",M:\"bir ay\",MM:\"%d ay\",y:\"bir il\",yy:\"%d il\"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(e){return/^(gündüz|axşam)$/.test(e)},meridiem:function(e,t,a){return 4>e?\"gecə\":12>e?\"səhər\":17>e?\"gündüz\":\"axşam\"},ordinalParse:/\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(e){if(0===e)return e+\"-ıncı\";var t=e%10,n=e%100-t,a=e>=100?100:null;return e+(et[t]||et[n]||et[a])},week:{dow:1,doy:7}}),e.defineLocale(\"be\",{months:Zn,monthsShort:\"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж\".split(\"_\"),weekdays:mn,weekdaysShort:\"нд_пн_ат_ср_чц_пт_сб\".split(\"_\"),weekdaysMin:\"нд_пн_ат_ср_чц_пт_сб\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY г.\",LLL:\"D MMMM YYYY г., HH:mm\",LLLL:\"dddd, D MMMM YYYY г., HH:mm\"},calendar:{sameDay:\"[Сёння ў] LT\",nextDay:\"[Заўтра ў] LT\",lastDay:\"[Учора ў] LT\",nextWeek:function(){return\"[У] dddd [ў] LT\"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return\"[У мінулую] dddd [ў] LT\";case 1:case 2:case 4:return\"[У мінулы] dddd [ў] LT\"}},sameElse:\"L\"},relativeTime:{future:\"праз %s\",past:\"%s таму\",s:\"некалькі секунд\",m:V,mm:V,h:V,hh:V,d:\"дзень\",dd:V,M:\"месяц\",MM:V,y:\"год\",yy:V},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(e){return/^(дня|вечара)$/.test(e)},meridiem:function(e,t,a){return 4>e?\"ночы\":12>e?\"раніцы\":17>e?\"дня\":\"вечара\"},ordinalParse:/\\d{1,2}-(і|ы|га)/,ordinal:function(e,t){switch(t){case\"M\":case\"d\":case\"DDD\":case\"w\":case\"W\":return e%10!==2&&e%10!==3||e%100===12||e%100===13?e+\"-ы\":e+\"-і\";case\"D\":return e+\"-га\";default:return e}},week:{dow:1,doy:7}}),e.defineLocale(\"bg\",{months:\"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември\".split(\"_\"),monthsShort:\"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек\".split(\"_\"),weekdays:\"неделя_понеделник_вторник_сряда_четвъртък_петък_събота\".split(\"_\"),weekdaysShort:\"нед_пон_вто_сря_чет_пет_съб\".split(\"_\"),weekdaysMin:\"нд_пн_вт_ср_чт_пт_сб\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"D.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY H:mm\",LLLL:\"dddd, D MMMM YYYY H:mm\"},calendar:{sameDay:\"[Днес в] LT\",nextDay:\"[Утре в] LT\",nextWeek:\"dddd [в] LT\",lastDay:\"[Вчера в] LT\",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return\"[В изминалата] dddd [в] LT\";case 1:case 2:case 4:case 5:return\"[В изминалия] dddd [в] LT\"}},sameElse:\"L\"},relativeTime:{future:\"след %s\",past:\"преди %s\",s:\"няколко секунди\",m:\"минута\",mm:\"%d минути\",h:\"час\",hh:\"%d часа\",d:\"ден\",dd:\"%d дни\",M:\"месец\",MM:\"%d месеца\",y:\"година\",yy:\"%d години\"},ordinalParse:/\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,a=e%100;return 0===e?e+\"-ев\":0===a?e+\"-ен\":a>10&&20>a?e+\"-ти\":1===t?e+\"-ви\":2===t?e+\"-ри\":7===t||8===t?e+\"-ми\":e+\"-ти\"},week:{dow:1,doy:7}}),{1:\"১\",2:\"২\",3:\"৩\",4:\"৪\",5:\"৫\",6:\"৬\",7:\"৭\",8:\"৮\",9:\"৯\",0:\"০\"}),Is={\"১\":\"1\",\"২\":\"2\",\"৩\":\"3\",\"৪\":\"4\",\"৫\":\"5\",\"৬\":\"6\",\"৭\":\"7\",\"৮\":\"8\",\"৯\":\"9\",\"০\":\"0\"},Us=(e.defineLocale(\"bn\",{months:\"জানুয়ারী_ফেবুয়ারী_মার্চ_এপ্রিল_মে_জুন_জুলাই_অগাস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর\".split(\"_\"),monthsShort:\"জানু_ফেব_মার্চ_এপর_মে_জুন_জুল_অগ_সেপ্ট_অক্টো_নভ_ডিসেম্\".split(\"_\"),weekdays:\"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পত্তিবার_শুক্রুবার_শনিবার\".split(\"_\"),weekdaysShort:\"রবি_সোম_মঙ্গল_বুধ_বৃহস্পত্তি_শুক্রু_শনি\".split(\"_\"),weekdaysMin:\"রব_সম_মঙ্গ_বু_ব্রিহ_শু_শনি\".split(\"_\"),longDateFormat:{LT:\"A h:mm সময়\",LTS:\"A h:mm:ss সময়\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY, A h:mm সময়\",LLLL:\"dddd, D MMMM YYYY, A h:mm সময়\"},calendar:{sameDay:\"[আজ] LT\",nextDay:\"[আগামীকাল] LT\",nextWeek:\"dddd, LT\",lastDay:\"[গতকাল] LT\",lastWeek:\"[গত] dddd, LT\",sameElse:\"L\"},relativeTime:{future:\"%s পরে\",past:\"%s আগে\",s:\"কএক সেকেন্ড\",m:\"এক মিনিট\",mm:\"%d মিনিট\",h:\"এক ঘন্টা\",hh:\"%d ঘন্টা\",d:\"এক দিন\",dd:\"%d দিন\",M:\"এক মাস\",MM:\"%d মাস\",y:\"এক বছর\",yy:\"%d বছর\"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,function(e){return Is[e]})},postformat:function(e){return e.replace(/\\d/g,function(e){return qs[e]})},meridiemParse:/রাত|সকাল|দুপুর|বিকেল|রাত/,isPM:function(e){return/^(দুপুর|বিকেল|রাত)$/.test(e)},meridiem:function(e,t,a){return 4>e?\"রাত\":10>e?\"সকাল\":17>e?\"দুপুর\":20>e?\"বিকেল\":\"রাত\"},week:{dow:0,doy:6}}),{1:\"༡\",2:\"༢\",3:\"༣\",4:\"༤\",5:\"༥\",6:\"༦\",7:\"༧\",8:\"༨\",9:\"༩\",0:\"༠\"}),Os={\"༡\":\"1\",\"༢\":\"2\",\"༣\":\"3\",\"༤\":\"4\",\"༥\":\"5\",\"༦\":\"6\",\"༧\":\"7\",\"༨\":\"8\",\"༩\":\"9\",\"༠\":\"0\"},La=(e.defineLocale(\"bo\",{months:\"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ\".split(\"_\"),monthsShort:\"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ\".split(\"_\"),weekdays:\"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་\".split(\"_\"),weekdaysShort:\"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་\".split(\"_\"),weekdaysMin:\"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་\".split(\"_\"),longDateFormat:{LT:\"A h:mm\",LTS:\"A h:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY, A h:mm\",LLLL:\"dddd, D MMMM YYYY, A h:mm\"},calendar:{sameDay:\"[དི་རིང] LT\",nextDay:\"[སང་ཉིན] LT\",nextWeek:\"[བདུན་ཕྲག་རྗེས་མ], LT\",lastDay:\"[ཁ་སང] LT\",lastWeek:\"[བདུན་ཕྲག་མཐའ་མ] dddd, LT\",sameElse:\"L\"},relativeTime:{future:\"%s ལ་\",past:\"%s སྔན་ལ\",s:\"ལམ་སང\",m:\"སྐར་མ་གཅིག\",mm:\"%d སྐར་མ\",h:\"ཆུ་ཚོད་གཅིག\",hh:\"%d ཆུ་ཚོད\",d:\"ཉིན་གཅིག\",dd:\"%d ཉིན་\",M:\"ཟླ་བ་གཅིག\",MM:\"%d ཟླ་བ\",y:\"ལོ་གཅིག\",yy:\"%d ལོ\"},preparse:function(e){return e.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,function(e){return Os[e]})},postformat:function(e){return e.replace(/\\d/g,function(e){return Us[e]})},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,isPM:function(e){return/^(ཉིན་གུང|དགོང་དག|མཚན་མོ)$/.test(e)},meridiem:function(e,t,a){return 4>e?\"མཚན་མོ\":10>e?\"ཞོགས་ཀས\":17>e?\"ཉིན་གུང\":20>e?\"དགོང་དག\":\"མཚན་མོ\"},week:{dow:0,doy:6}}),e.defineLocale(\"br\",{months:\"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu\".split(\"_\"),monthsShort:\"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker\".split(\"_\"),weekdays:\"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn\".split(\"_\"),weekdaysShort:\"Sul_Lun_Meu_Mer_Yao_Gwe_Sad\".split(\"_\"),weekdaysMin:\"Su_Lu_Me_Mer_Ya_Gw_Sa\".split(\"_\"),longDateFormat:{LT:\"h[e]mm A\",LTS:\"h[e]mm:ss A\",L:\"DD/MM/YYYY\",LL:\"D [a viz] MMMM YYYY\",LLL:\"D [a viz] MMMM YYYY h[e]mm A\",LLLL:\"dddd, D [a viz] MMMM YYYY h[e]mm A\"},calendar:{sameDay:\"[Hiziv da] LT\",nextDay:\"[Warc'hoazh da] LT\",nextWeek:\"dddd [da] LT\",lastDay:\"[Dec'h da] LT\",lastWeek:\"dddd [paset da] LT\",sameElse:\"L\"},relativeTime:{future:\"a-benn %s\",past:\"%s 'zo\",s:\"un nebeud segondennoù\",m:\"ur vunutenn\",mm:rt,h:\"un eur\",hh:\"%d eur\",d:\"un devezh\",dd:rt,M:\"ur miz\",MM:rt,y:\"ur bloaz\",yy:Mn},ordinalParse:/\\d{1,2}(añ|vet)/,ordinal:function(e){var t=1===e?\"añ\":\"vet\";return e+t},week:{dow:1,doy:4}}),e.defineLocale(\"bs\",{months:\"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar\".split(\"_\"),monthsShort:\"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.\".split(\"_\"),weekdays:\"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota\".split(\"_\"),weekdaysShort:\"ned._pon._uto._sri._čet._pet._sub.\".split(\"_\"),weekdaysMin:\"ne_po_ut_sr_če_pe_su\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD. MM. YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[danas u] LT\",nextDay:\"[sutra u] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[u] [nedjelju] [u] LT\";case 3:return\"[u] [srijedu] [u] LT\";case 6:return\"[u] [subotu] [u] LT\";case 1:case 2:case 4:case 5:return\"[u] dddd [u] LT\"}},lastDay:\"[jučer u] LT\",lastWeek:function(){switch(this.day()){case 0:case 3:return\"[prošlu] dddd [u] LT\";case 6:return\"[prošle] [subote] [u] LT\";case 1:case 2:case 4:case 5:return\"[prošli] dddd [u] LT\"}},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"prije %s\",s:\"par sekundi\",m:te,mm:te,h:te,hh:te,d:\"dan\",dd:te,M:\"mjesec\",MM:te,y:\"godinu\",yy:te},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}}),e.defineLocale(\"ca\",{months:\"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre\".split(\"_\"),monthsShort:\"gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.\".split(\"_\"),weekdays:\"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte\".split(\"_\"),weekdaysShort:\"dg._dl._dt._dc._dj._dv._ds.\".split(\"_\"),weekdaysMin:\"Dg_Dl_Dt_Dc_Dj_Dv_Ds\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"LT:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY H:mm\",LLLL:\"dddd D MMMM YYYY H:mm\"},calendar:{sameDay:function(){return\"[avui a \"+(1!==this.hours()?\"les\":\"la\")+\"] LT\"},nextDay:function(){return\"[demà a \"+(1!==this.hours()?\"les\":\"la\")+\"] LT\"},nextWeek:function(){return\"dddd [a \"+(1!==this.hours()?\"les\":\"la\")+\"] LT\"},lastDay:function(){return\"[ahir a \"+(1!==this.hours()?\"les\":\"la\")+\"] LT\"},lastWeek:function(){return\"[el] dddd [passat a \"+(1!==this.hours()?\"les\":\"la\")+\"] LT\"},sameElse:\"L\"},relativeTime:{future:\"en %s\",past:\"fa %s\",s:\"uns segons\",m:\"un minut\",mm:\"%d minuts\",h:\"una hora\",hh:\"%d hores\",d:\"un dia\",dd:\"%d dies\",M:\"un mes\",MM:\"%d mesos\",y:\"un any\",yy:\"%d anys\"},ordinalParse:/\\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var a=1===e?\"r\":2===e?\"n\":3===e?\"r\":4===e?\"t\":\"è\";return(\"w\"===t||\"W\"===t)&&(a=\"a\"),e+a},week:{dow:1,doy:4}}),\"leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec\".split(\"_\")),Ma=\"led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro\".split(\"_\"),Es=(e.defineLocale(\"cs\",{months:La,monthsShort:Ma,monthsParse:function(e,t){var a,n=[];for(a=0;12>a;a++)n[a]=new RegExp(\"^\"+e[a]+\"$|^\"+t[a]+\"$\",\"i\");return n}(La,Ma),weekdays:\"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota\".split(\"_\"),weekdaysShort:\"ne_po_út_st_čt_pá_so\".split(\"_\"),weekdaysMin:\"ne_po_út_st_čt_pá_so\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[dnes v] LT\",nextDay:\"[zítra v] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[v neděli v] LT\";case 1:case 2:return\"[v] dddd [v] LT\";case 3:return\"[ve středu v] LT\";case 4:return\"[ve čtvrtek v] LT\";case 5:return\"[v pátek v] LT\";case 6:return\"[v sobotu v] LT\"}},lastDay:\"[včera v] LT\",lastWeek:function(){switch(this.day()){case 0:return\"[minulou neděli v] LT\";case 1:case 2:return\"[minulé] dddd [v] LT\";case 3:return\"[minulou středu v] LT\";case 4:case 5:return\"[minulý] dddd [v] LT\";case 6:return\"[minulou sobotu v] LT\"}},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"před %s\",s:y,m:y,mm:y,h:y,hh:y,d:y,dd:y,M:y,MM:y,y:y,yy:y},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),e.defineLocale(\"cv\",{months:\"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав\".split(\"_\"),monthsShort:\"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш\".split(\"_\"),weekdays:\"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун\".split(\"_\"),weekdaysShort:\"выр_тун_ытл_юн_кӗҫ_эрн_шӑм\".split(\"_\"),weekdaysMin:\"вр_тн_ыт_юн_кҫ_эр_шм\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD-MM-YYYY\",LL:\"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]\",LLL:\"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm\",LLLL:\"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm\"},calendar:{sameDay:\"[Паян] LT [сехетре]\",nextDay:\"[Ыран] LT [сехетре]\",lastDay:\"[Ӗнер] LT [сехетре]\",nextWeek:\"[Ҫитес] dddd LT [сехетре]\",lastWeek:\"[Иртнӗ] dddd LT [сехетре]\",sameElse:\"L\"},relativeTime:{future:function(e){var t=/сехет$/i.exec(e)?\"рен\":/ҫул$/i.exec(e)?\"тан\":\"ран\";return e+t},past:\"%s каялла\",s:\"пӗр-ик ҫеккунт\",m:\"пӗр минут\",mm:\"%d минут\",h:\"пӗр сехет\",hh:\"%d сехет\",d:\"пӗр кун\",dd:\"%d кун\",M:\"пӗр уйӑх\",MM:\"%d уйӑх\",y:\"пӗр ҫул\",yy:\"%d ҫул\"},ordinalParse:/\\d{1,2}-мӗш/,ordinal:\"%d-мӗш\",week:{dow:1,doy:7}}),e.defineLocale(\"cy\",{months:\"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr\".split(\"_\"),monthsShort:\"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag\".split(\"_\"),weekdays:\"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn\".split(\"_\"),weekdaysShort:\"Sul_Llun_Maw_Mer_Iau_Gwe_Sad\".split(\"_\"),weekdaysMin:\"Su_Ll_Ma_Me_Ia_Gw_Sa\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Heddiw am] LT\",nextDay:\"[Yfory am] LT\",nextWeek:\"dddd [am] LT\",lastDay:\"[Ddoe am] LT\",lastWeek:\"dddd [diwethaf am] LT\",sameElse:\"L\"},relativeTime:{future:\"mewn %s\",past:\"%s yn ôl\",s:\"ychydig eiliadau\",m:\"munud\",mm:\"%d munud\",h:\"awr\",hh:\"%d awr\",d:\"diwrnod\",dd:\"%d diwrnod\",M:\"mis\",MM:\"%d mis\",y:\"blwyddyn\",yy:\"%d flynedd\"},ordinalParse:/\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var t=e,a=\"\",n=[\"\",\"af\",\"il\",\"ydd\",\"ydd\",\"ed\",\"ed\",\"ed\",\"fed\",\"fed\",\"fed\",\"eg\",\"fed\",\"eg\",\"eg\",\"fed\",\"eg\",\"eg\",\"fed\",\"eg\",\"fed\"];return t>20?a=40===t||50===t||60===t||80===t||100===t?\"fed\":\"ain\":t>0&&(a=n[t]),e+a},week:{dow:1,doy:4}}),e.defineLocale(\"da\",{months:\"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec\".split(\"_\"),weekdays:\"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag\".split(\"_\"),weekdaysShort:\"søn_man_tir_ons_tor_fre_lør\".split(\"_\"),weekdaysMin:\"sø_ma_ti_on_to_fr_lø\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY HH:mm\",LLLL:\"dddd [d.] D. MMMM YYYY HH:mm\"},calendar:{sameDay:\"[I dag kl.] LT\",nextDay:\"[I morgen kl.] LT\",nextWeek:\"dddd [kl.] LT\",lastDay:\"[I går kl.] LT\",lastWeek:\"[sidste] dddd [kl] LT\",sameElse:\"L\"},relativeTime:{future:\"om %s\",past:\"%s siden\",s:\"få sekunder\",m:\"et minut\",mm:\"%d minutter\",h:\"en time\",hh:\"%d timer\",d:\"en dag\",dd:\"%d dage\",M:\"en måned\",MM:\"%d måneder\",y:\"et år\",yy:\"%d år\"},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),e.defineLocale(\"de-at\",{months:\"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember\".split(\"_\"),monthsShort:\"Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.\".split(\"_\"),weekdays:\"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag\".split(\"_\"),weekdaysShort:\"So._Mo._Di._Mi._Do._Fr._Sa.\".split(\"_\"),weekdaysMin:\"So_Mo_Di_Mi_Do_Fr_Sa\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY HH:mm\",LLLL:\"dddd, D. MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Heute um] LT [Uhr]\",sameElse:\"L\",nextDay:\"[Morgen um] LT [Uhr]\",nextWeek:\"dddd [um] LT [Uhr]\",lastDay:\"[Gestern um] LT [Uhr]\",lastWeek:\"[letzten] dddd [um] LT [Uhr]\"},relativeTime:{future:\"in %s\",past:\"vor %s\",s:\"ein paar Sekunden\",m:J,mm:\"%d Minuten\",h:J,hh:\"%d Stunden\",d:J,dd:J,M:J,MM:J,y:J,yy:J},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),e.defineLocale(\"de\",{months:\"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember\".split(\"_\"),monthsShort:\"Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.\".split(\"_\"),weekdays:\"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag\".split(\"_\"),weekdaysShort:\"So._Mo._Di._Mi._Do._Fr._Sa.\".split(\"_\"),weekdaysMin:\"So_Mo_Di_Mi_Do_Fr_Sa\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY HH:mm\",LLLL:\"dddd, D. MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Heute um] LT [Uhr]\",sameElse:\"L\",nextDay:\"[Morgen um] LT [Uhr]\",nextWeek:\"dddd [um] LT [Uhr]\",lastDay:\"[Gestern um] LT [Uhr]\",lastWeek:\"[letzten] dddd [um] LT [Uhr]\"},relativeTime:{future:\"in %s\",past:\"vor %s\",s:\"ein paar Sekunden\",m:G,mm:\"%d Minuten\",h:G,hh:\"%d Stunden\",d:G,dd:G,M:G,MM:G,y:G,yy:G},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),e.defineLocale(\"el\",{monthsNominativeEl:\"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος\".split(\"_\"),monthsGenitiveEl:\"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου\".split(\"_\"),months:function(e,t){return/D/.test(t.substring(0,t.indexOf(\"MMMM\")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]},monthsShort:\"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ\".split(\"_\"),weekdays:\"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο\".split(\"_\"),weekdaysShort:\"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ\".split(\"_\"),weekdaysMin:\"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα\".split(\"_\"),meridiem:function(e,t,a){return e>11?a?\"μμ\":\"ΜΜ\":a?\"πμ\":\"ΠΜ\"},isPM:function(e){return\"μ\"===(e+\"\").toLowerCase()[0]},meridiemParse:/[ΠΜ]\\.?Μ?\\.?/i,longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY h:mm A\",LLLL:\"dddd, D MMMM YYYY h:mm A\"},calendarEl:{sameDay:\"[Σήμερα {}] LT\",nextDay:\"[Αύριο {}] LT\",nextWeek:\"dddd [{}] LT\",lastDay:\"[Χθες {}] LT\",lastWeek:function(){switch(this.day()){case 6:return\"[το προηγούμενο] dddd [{}] LT\";default:return\"[την προηγούμενη] dddd [{}] LT\"}},sameElse:\"L\"},calendar:function(e,t){var a=this._calendarEl[e],n=t&&t.hours();return\"function\"==typeof a&&(a=a.apply(t)),a.replace(\"{}\",n%12===1?\"στη\":\"στις\")},relativeTime:{future:\"σε %s\",past:\"%s πριν\",s:\"λίγα δευτερόλεπτα\",m:\"ένα λεπτό\",mm:\"%d λεπτά\",h:\"μία ώρα\",hh:\"%d ώρες\",d:\"μία μέρα\",dd:\"%d μέρες\",M:\"ένας μήνας\",MM:\"%d μήνες\",y:\"ένας χρόνος\",yy:\"%d χρόνια\"},ordinalParse:/\\d{1,2}η/,ordinal:\"%dη\",week:{dow:1,doy:4}}),e.defineLocale(\"en-au\",{months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY h:mm A\",LLLL:\"dddd, D MMMM YYYY h:mm A\"},calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},ordinalParse:/\\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1===~~(e%100/10)?\"th\":1===t?\"st\":2===t?\"nd\":3===t?\"rd\":\"th\";return e+a},week:{dow:1,doy:4}}),e.defineLocale(\"en-ca\",{months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"YYYY-MM-DD\",LL:\"D MMMM, YYYY\",LLL:\"D MMMM, YYYY h:mm A\",LLLL:\"dddd, D MMMM, YYYY h:mm A\"},calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},ordinalParse:/\\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1===~~(e%100/10)?\"th\":1===t?\"st\":2===t?\"nd\":3===t?\"rd\":\"th\";return e+a}}),e.defineLocale(\"en-gb\",{months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},ordinalParse:/\\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1===~~(e%100/10)?\"th\":1===t?\"st\":2===t?\"nd\":3===t?\"rd\":\"th\";return e+a},week:{dow:1,doy:4}}),e.defineLocale(\"eo\",{months:\"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec\".split(\"_\"),weekdays:\"Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato\".split(\"_\"),weekdaysShort:\"Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab\".split(\"_\"),weekdaysMin:\"Di_Lu_Ma_Me_Ĵa_Ve_Sa\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY-MM-DD\",LL:\"D[-an de] MMMM, YYYY\",LLL:\"D[-an de] MMMM, YYYY HH:mm\",LLLL:\"dddd, [la] D[-an de] MMMM, YYYY HH:mm\"},meridiemParse:/[ap]\\.t\\.m/i,isPM:function(e){return\"p\"===e.charAt(0).toLowerCase()},meridiem:function(e,t,a){return e>11?a?\"p.t.m.\":\"P.T.M.\":a?\"a.t.m.\":\"A.T.M.\"},calendar:{sameDay:\"[Hodiaŭ je] LT\",nextDay:\"[Morgaŭ je] LT\",nextWeek:\"dddd [je] LT\",lastDay:\"[Hieraŭ je] LT\",lastWeek:\"[pasinta] dddd [je] LT\",sameElse:\"L\"},relativeTime:{future:\"je %s\",past:\"antaŭ %s\",s:\"sekundoj\",m:\"minuto\",mm:\"%d minutoj\",h:\"horo\",hh:\"%d horoj\",d:\"tago\",dd:\"%d tagoj\",M:\"monato\",MM:\"%d monatoj\",y:\"jaro\",yy:\"%d jaroj\"},ordinalParse:/\\d{1,2}a/,ordinal:\"%da\",week:{dow:1,doy:7}}),\"Ene._Feb._Mar._Abr._May._Jun._Jul._Ago._Sep._Oct._Nov._Dic.\".split(\"_\")),zs=\"Ene_Feb_Mar_Abr_May_Jun_Jul_Ago_Sep_Oct_Nov_Dic\".split(\"_\"),Js=(e.defineLocale(\"es\",{months:\"Enero_Febrero_Marzo_Abril_Mayo_Junio_Julio_Agosto_Septiembre_Octubre_Noviembre_Diciembre\".split(\"_\"),monthsShort:function(e,t){return/-MMM-/.test(t)?zs[e.month()]:Es[e.month()]},weekdays:\"Domingo_Lunes_Martes_Miércoles_Jueves_Viernes_Sábado\".split(\"_\"),weekdaysShort:\"Dom._Lun._Mar._Mié._Jue._Vie._Sáb.\".split(\"_\"),weekdaysMin:\"Do_Lu_Ma_Mi_Ju_Vi_Sá\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [de] MMMM [de] YYYY\",LLL:\"D [de] MMMM [de] YYYY H:mm\",LLLL:\"dddd, D [de] MMMM [de] YYYY H:mm\"},calendar:{sameDay:function(){return\"[hoy a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},nextDay:function(){return\"[mañana a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},nextWeek:function(){return\"dddd [a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},lastDay:function(){return\"[ayer a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},lastWeek:function(){return\"[el] dddd [pasado a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},sameElse:\"L\"},relativeTime:{future:\"en %s\",past:\"hace %s\",s:\"unos segundos\",m:\"un minuto\",mm:\"%d minutos\",h:\"una hora\",hh:\"%d horas\",d:\"un día\",dd:\"%d días\",M:\"un mes\",MM:\"%d meses\",y:\"un año\",yy:\"%d años\"},ordinalParse:/\\d{1,2}º/,ordinal:\"%dº\",week:{dow:1,doy:4}}),e.defineLocale(\"et\",{months:\"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember\".split(\"_\"),monthsShort:\"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets\".split(\"_\"),weekdays:\"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev\".split(\"_\"),weekdaysShort:\"P_E_T_K_N_R_L\".split(\"_\"),weekdaysMin:\"P_E_T_K_N_R_L\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[Täna,] LT\",nextDay:\"[Homme,] LT\",nextWeek:\"[Järgmine] dddd LT\",lastDay:\"[Eile,] LT\",lastWeek:\"[Eelmine] dddd LT\",sameElse:\"L\"},relativeTime:{future:\"%s pärast\",past:\"%s tagasi\",s:H,m:H,mm:H,h:H,hh:H,d:H,dd:\"%d päeva\",M:H,MM:H,y:H,yy:H},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),e.defineLocale(\"eu\",{months:\"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua\".split(\"_\"),monthsShort:\"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.\".split(\"_\"),weekdays:\"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata\".split(\"_\"),weekdaysShort:\"ig._al._ar._az._og._ol._lr.\".split(\"_\"),weekdaysMin:\"ig_al_ar_az_og_ol_lr\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY-MM-DD\",LL:\"YYYY[ko] MMMM[ren] D[a]\",LLL:\"YYYY[ko] MMMM[ren] D[a] HH:mm\",LLLL:\"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm\",l:\"YYYY-M-D\",ll:\"YYYY[ko] MMM D[a]\",lll:\"YYYY[ko] MMM D[a] HH:mm\",llll:\"ddd, YYYY[ko] MMM D[a] HH:mm\"},calendar:{sameDay:\"[gaur] LT[etan]\",nextDay:\"[bihar] LT[etan]\",nextWeek:\"dddd LT[etan]\",lastDay:\"[atzo] LT[etan]\",lastWeek:\"[aurreko] dddd LT[etan]\",sameElse:\"L\"},relativeTime:{future:\"%s barru\",past:\"duela %s\",s:\"segundo batzuk\",m:\"minutu bat\",mm:\"%d minutu\",h:\"ordu bat\",hh:\"%d ordu\",d:\"egun bat\",dd:\"%d egun\",M:\"hilabete bat\",MM:\"%d hilabete\",y:\"urte bat\",yy:\"%d urte\"},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}}),{1:\"۱\",2:\"۲\",3:\"۳\",4:\"۴\",5:\"۵\",6:\"۶\",7:\"۷\",8:\"۸\",9:\"۹\",0:\"۰\"}),Gs={\"۱\":\"1\",\"۲\":\"2\",\"۳\":\"3\",\"۴\":\"4\",\"۵\":\"5\",\"۶\":\"6\",\"۷\":\"7\",\"۸\":\"8\",\"۹\":\"9\",\"۰\":\"0\"},Fe=(e.defineLocale(\"fa\",{months:\"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر\".split(\"_\"),monthsShort:\"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر\".split(\"_\"),weekdays:\"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه\".split(\"_\"),weekdaysShort:\"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه\".split(\"_\"),weekdaysMin:\"ی_د_س_چ_پ_ج_ش\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,t,a){return 12>e?\"قبل از ظهر\":\"بعد از ظهر\"},calendar:{sameDay:\"[امروز ساعت] LT\",nextDay:\"[فردا ساعت] LT\",nextWeek:\"dddd [ساعت] LT\",lastDay:\"[دیروز ساعت] LT\",lastWeek:\"dddd [پیش] [ساعت] LT\",sameElse:\"L\"},relativeTime:{future:\"در %s\",past:\"%s پیش\",s:\"چندین ثانیه\",m:\"یک دقیقه\",mm:\"%d دقیقه\",h:\"یک ساعت\",hh:\"%d ساعت\",d:\"یک روز\",dd:\"%d روز\",M:\"یک ماه\",MM:\"%d ماه\",y:\"یک سال\",yy:\"%d سال\"},preparse:function(e){return e.replace(/[۰-۹]/g,function(e){return Gs[e]}).replace(/،/g,\",\")},postformat:function(e){return e.replace(/\\d/g,function(e){return Js[e]}).replace(/,/g,\"،\")},ordinalParse:/\\d{1,2}م/,ordinal:\"%dم\",week:{dow:6,doy:12}}),\"nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän\".split(\" \")),Ns=[\"nolla\",\"yhden\",\"kahden\",\"kolmen\",\"neljän\",\"viiden\",\"kuuden\",Fe[7],Fe[8],Fe[9]],Cs=(e.defineLocale(\"fi\",{months:\"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu\".split(\"_\"),monthsShort:\"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu\".split(\"_\"),weekdays:\"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai\".split(\"_\"),weekdaysShort:\"su_ma_ti_ke_to_pe_la\".split(\"_\"),weekdaysMin:\"su_ma_ti_ke_to_pe_la\".split(\"_\"),longDateFormat:{LT:\"HH.mm\",LTS:\"HH.mm.ss\",L:\"DD.MM.YYYY\",LL:\"Do MMMM[ta] YYYY\",LLL:\"Do MMMM[ta] YYYY, [klo] HH.mm\",LLLL:\"dddd, Do MMMM[ta] YYYY, [klo] HH.mm\",l:\"D.M.YYYY\",ll:\"Do MMM YYYY\",lll:\"Do MMM YYYY, [klo] HH.mm\",llll:\"ddd, Do MMM YYYY, [klo] HH.mm\"},calendar:{sameDay:\"[tänään] [klo] LT\",nextDay:\"[huomenna] [klo] LT\",nextWeek:\"dddd [klo] LT\",lastDay:\"[eilen] [klo] LT\",lastWeek:\"[viime] dddd[na] [klo] LT\",sameElse:\"L\"},relativeTime:{future:\"%s päästä\",past:\"%s sitten\",s:p,m:p,mm:p,h:p,hh:p,d:p,dd:p,M:p,MM:p,y:p,yy:p},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),e.defineLocale(\"fo\",{months:\"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des\".split(\"_\"),weekdays:\"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur\".split(\"_\"),weekdaysShort:\"sun_mán_týs_mik_hós_frí_ley\".split(\"_\"),weekdaysMin:\"su_má_tý_mi_hó_fr_le\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D. MMMM, YYYY HH:mm\"},calendar:{sameDay:\"[Í dag kl.] LT\",nextDay:\"[Í morgin kl.] LT\",nextWeek:\"dddd [kl.] LT\",lastDay:\"[Í gjár kl.] LT\",lastWeek:\"[síðstu] dddd [kl] LT\",sameElse:\"L\"},relativeTime:{future:\"um %s\",past:\"%s síðani\",s:\"fá sekund\",m:\"ein minutt\",mm:\"%d minuttir\",h:\"ein tími\",hh:\"%d tímar\",d:\"ein dagur\",dd:\"%d dagar\",M:\"ein mánaði\",MM:\"%d mánaðir\",y:\"eitt ár\",yy:\"%d ár\"},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),e.defineLocale(\"fr-ca\",{months:\"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre\".split(\"_\"),monthsShort:\"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.\".split(\"_\"),weekdays:\"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi\".split(\"_\"),weekdaysShort:\"dim._lun._mar._mer._jeu._ven._sam.\".split(\"_\"),weekdaysMin:\"Di_Lu_Ma_Me_Je_Ve_Sa\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY-MM-DD\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Aujourd'hui à] LT\",nextDay:\"[Demain à] LT\",nextWeek:\"dddd [à] LT\",lastDay:\"[Hier à] LT\",lastWeek:\"dddd [dernier à] LT\",sameElse:\"L\"},relativeTime:{future:\"dans %s\",past:\"il y a %s\",s:\"quelques secondes\",m:\"une minute\",mm:\"%d minutes\",h:\"une heure\",hh:\"%d heures\",d:\"un jour\",dd:\"%d jours\",M:\"un mois\",MM:\"%d mois\",y:\"un an\",yy:\"%d ans\"},ordinalParse:/\\d{1,2}(er|e)/,ordinal:function(e){return e+(1===e?\"er\":\"e\")}}),e.defineLocale(\"fr\",{months:\"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre\".split(\"_\"),monthsShort:\"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.\".split(\"_\"),weekdays:\"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi\".split(\"_\"),weekdaysShort:\"dim._lun._mar._mer._jeu._ven._sam.\".split(\"_\"),weekdaysMin:\"Di_Lu_Ma_Me_Je_Ve_Sa\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Aujourd'hui à] LT\",nextDay:\"[Demain à] LT\",nextWeek:\"dddd [à] LT\",lastDay:\"[Hier à] LT\",lastWeek:\"dddd [dernier à] LT\",sameElse:\"L\"},relativeTime:{future:\"dans %s\",past:\"il y a %s\",s:\"quelques secondes\",m:\"une minute\",mm:\"%d minutes\",h:\"une heure\",hh:\"%d heures\",d:\"un jour\",dd:\"%d jours\",M:\"un mois\",MM:\"%d mois\",y:\"un an\",yy:\"%d ans\"},ordinalParse:/\\d{1,2}(er|)/,ordinal:function(e){return e+(1===e?\"er\":\"\")},week:{dow:1,doy:4}}),\"jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.\".split(\"_\")),Xs=\"jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des\".split(\"_\"),Qs=(e.defineLocale(\"fy\",{months:\"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber\".split(\"_\"),monthsShort:function(e,t){return/-MMM-/.test(t)?Xs[e.month()]:Cs[e.month()]},weekdays:\"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon\".split(\"_\"),weekdaysShort:\"si._mo._ti._wo._to._fr._so.\".split(\"_\"),weekdaysMin:\"Si_Mo_Ti_Wo_To_Fr_So\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD-MM-YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[hjoed om] LT\",nextDay:\"[moarn om] LT\",nextWeek:\"dddd [om] LT\",lastDay:\"[juster om] LT\",lastWeek:\"[ôfrûne] dddd [om] LT\",sameElse:\"L\"},relativeTime:{future:\"oer %s\",past:\"%s lyn\",s:\"in pear sekonden\",m:\"ien minút\",mm:\"%d minuten\",h:\"ien oere\",hh:\"%d oeren\",d:\"ien dei\",dd:\"%d dagen\",M:\"ien moanne\",MM:\"%d moannen\",y:\"ien jier\",yy:\"%d jierren\"},ordinalParse:/\\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?\"ste\":\"de\")},week:{dow:1,doy:4}}),e.defineLocale(\"gl\",{months:\"Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro\".split(\"_\"),monthsShort:\"Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.\".split(\"_\"),weekdays:\"Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado\".split(\"_\"),weekdaysShort:\"Dom._Lun._Mar._Mér._Xov._Ven._Sáb.\".split(\"_\"),weekdaysMin:\"Do_Lu_Ma_Mé_Xo_Ve_Sá\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY H:mm\",LLLL:\"dddd D MMMM YYYY H:mm\"},calendar:{sameDay:function(){return\"[hoxe \"+(1!==this.hours()?\"ás\":\"á\")+\"] LT\"},nextDay:function(){return\"[mañá \"+(1!==this.hours()?\"ás\":\"á\")+\"] LT\"},nextWeek:function(){return\"dddd [\"+(1!==this.hours()?\"ás\":\"a\")+\"] LT\"},lastDay:function(){return\"[onte \"+(1!==this.hours()?\"á\":\"a\")+\"] LT\"},lastWeek:function(){return\"[o] dddd [pasado \"+(1!==this.hours()?\"ás\":\"a\")+\"] LT\"},sameElse:\"L\"},relativeTime:{future:function(e){return\"uns segundos\"===e?\"nuns segundos\":\"en \"+e},past:\"hai %s\",s:\"uns segundos\",m:\"un minuto\",mm:\"%d minutos\",h:\"unha hora\",hh:\"%d horas\",d:\"un día\",dd:\"%d días\",M:\"un mes\",MM:\"%d meses\",y:\"un ano\",yy:\"%d anos\"},ordinalParse:/\\d{1,2}º/,ordinal:\"%dº\",week:{dow:1,doy:7}}),e.defineLocale(\"he\",{months:\"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר\".split(\"_\"),monthsShort:\"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳\".split(\"_\"),weekdays:\"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת\".split(\"_\"),weekdaysShort:\"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳\".split(\"_\"),weekdaysMin:\"א_ב_ג_ד_ה_ו_ש\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [ב]MMMM YYYY\",LLL:\"D [ב]MMMM YYYY HH:mm\",LLLL:\"dddd, D [ב]MMMM YYYY HH:mm\",l:\"D/M/YYYY\",ll:\"D MMM YYYY\",lll:\"D MMM YYYY HH:mm\",llll:\"ddd, D MMM YYYY HH:mm\"},calendar:{sameDay:\"[היום ב־]LT\",nextDay:\"[מחר ב־]LT\",nextWeek:\"dddd [בשעה] LT\",lastDay:\"[אתמול ב־]LT\",lastWeek:\"[ביום] dddd [האחרון בשעה] LT\",sameElse:\"L\"},relativeTime:{future:\"בעוד %s\",past:\"לפני %s\",s:\"מספר שניות\",m:\"דקה\",mm:\"%d דקות\",h:\"שעה\",hh:function(e){return 2===e?\"שעתיים\":e+\" שעות\"},d:\"יום\",dd:function(e){return 2===e?\"יומיים\":e+\" ימים\"},M:\"חודש\",MM:function(e){return 2===e?\"חודשיים\":e+\" חודשים\"},y:\"שנה\",yy:function(e){return 2===e?\"שנתיים\":e%10===0&&10!==e?e+\" שנה\":e+\" שנים\"}}}),{1:\"१\",2:\"२\",3:\"३\",4:\"४\",5:\"५\",6:\"६\",7:\"७\",8:\"८\",9:\"९\",0:\"०\"}),mr={\"१\":\"1\",\"२\":\"2\",\"३\":\"3\",\"४\":\"4\",\"५\":\"5\",\"६\":\"6\",\"७\":\"7\",\"८\":\"8\",\"९\":\"9\",\"०\":\"0\"},or=(e.defineLocale(\"hi\",{months:\"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर\".split(\"_\"),monthsShort:\"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.\".split(\"_\"),weekdays:\"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार\".split(\"_\"),weekdaysShort:\"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि\".split(\"_\"),weekdaysMin:\"र_सो_मं_बु_गु_शु_श\".split(\"_\"),longDateFormat:{LT:\"A h:mm बजे\",LTS:\"A h:mm:ss बजे\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY, A h:mm बजे\",LLLL:\"dddd, D MMMM YYYY, A h:mm बजे\"},calendar:{sameDay:\"[आज] LT\",nextDay:\"[कल] LT\",nextWeek:\"dddd, LT\",lastDay:\"[कल] LT\",lastWeek:\"[पिछले] dddd, LT\",sameElse:\"L\"},relativeTime:{future:\"%s में\",past:\"%s पहले\",s:\"कुछ ही क्षण\",m:\"एक मिनट\",mm:\"%d मिनट\",h:\"एक घंटा\",hh:\"%d घंटे\",d:\"एक दिन\",dd:\"%d दिन\",M:\"एक महीने\",MM:\"%d महीने\",y:\"एक वर्ष\",yy:\"%d वर्ष\"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return mr[e]})},postformat:function(e){return e.replace(/\\d/g,function(e){return Qs[e]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,t){return 12===e&&(e=0),\"रात\"===t?4>e?e:e+12:\"सुबह\"===t?e:\"दोपहर\"===t?e>=10?e:e+12:\"शाम\"===t?e+12:void 0},meridiem:function(e,t,a){return 4>e?\"रात\":10>e?\"सुबह\":17>e?\"दोपहर\":20>e?\"शाम\":\"रात\"},week:{dow:0,doy:6}}),e.defineLocale(\"hr\",{months:\"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac\".split(\"_\"),monthsShort:\"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.\".split(\"_\"),weekdays:\"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota\".split(\"_\"),weekdaysShort:\"ned._pon._uto._sri._čet._pet._sub.\".split(\"_\"),weekdaysMin:\"ne_po_ut_sr_če_pe_su\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD. MM. YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[danas u] LT\",nextDay:\"[sutra u] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[u] [nedjelju] [u] LT\";case 3:return\"[u] [srijedu] [u] LT\";case 6:return\"[u] [subotu] [u] LT\";case 1:case 2:case 4:case 5:return\"[u] dddd [u] LT\"}},lastDay:\"[jučer u] LT\",lastWeek:function(){switch(this.day()){case 0:case 3:return\"[prošlu] dddd [u] LT\";case 6:return\"[prošle] [subote] [u] LT\";case 1:case 2:case 4:case 5:return\"[prošli] dddd [u] LT\"}},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"prije %s\",s:\"par sekundi\",m:q,mm:q,h:q,hh:q,d:\"dan\",dd:q,M:\"mjesec\",MM:q,y:\"godinu\",yy:q},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}}),\"vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton\".split(\" \")),ur=(e.defineLocale(\"hu\",{months:\"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december\".split(\"_\"),monthsShort:\"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec\".split(\"_\"),weekdays:\"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat\".split(\"_\"),weekdaysShort:\"vas_hét_kedd_sze_csüt_pén_szo\".split(\"_\"),weekdaysMin:\"v_h_k_sze_cs_p_szo\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"YYYY.MM.DD.\",LL:\"YYYY. MMMM D.\",LLL:\"YYYY. MMMM D. H:mm\",LLLL:\"YYYY. MMMM D., dddd H:mm\"},meridiemParse:/de|du/i,isPM:function(e){return\"u\"===e.charAt(1).toLowerCase()},meridiem:function(e,t,a){return 12>e?a===!0?\"de\":\"DE\":a===!0?\"du\":\"DU\"},calendar:{sameDay:\"[ma] LT[-kor]\",nextDay:\"[holnap] LT[-kor]\",nextWeek:function(){return oa.call(this,!0)},lastDay:\"[tegnap] LT[-kor]\",lastWeek:function(){return oa.call(this,!1)},sameElse:\"L\"},relativeTime:{future:\"%s múlva\",past:\"%s\",s:k,m:k,mm:k,h:k,hh:k,d:k,dd:k,M:k,MM:k,y:k,yy:k},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}}),e.defineLocale(\"hy-am\",{months:Pa,monthsShort:Wa,weekdays:Xn,weekdaysShort:\"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ\".split(\"_\"),weekdaysMin:\"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY թ.\",LLL:\"D MMMM YYYY թ., HH:mm\",LLLL:\"dddd, D MMMM YYYY թ., HH:mm\"},calendar:{sameDay:\"[այսօր] LT\",nextDay:\"[վաղը] LT\",lastDay:\"[երեկ] LT\",nextWeek:function(){return\"dddd [օրը ժամը] LT\"},lastWeek:function(){return\"[անցած] dddd [օրը ժամը] LT\"},sameElse:\"L\"},relativeTime:{future:\"%s հետո\",past:\"%s առաջ\",s:\"մի քանի վայրկյան\",m:\"րոպե\",mm:\"%d րոպե\",h:\"ժամ\",hh:\"%d ժամ\",d:\"օր\",dd:\"%d օր\",M:\"ամիս\",MM:\"%d ամիս\",y:\"տարի\",yy:\"%d տարի\"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(e){return/^(ցերեկվա|երեկոյան)$/.test(e)},meridiem:function(e){return 4>e?\"գիշերվա\":12>e?\"առավոտվա\":17>e?\"ցերեկվա\":\"երեկոյան\"},ordinalParse:/\\d{1,2}|\\d{1,2}-(ին|րդ)/,ordinal:function(e,t){switch(t){case\"DDD\":case\"w\":case\"W\":case\"DDDo\":return 1===e?e+\"-ին\":e+\"-րդ\";default:return e}},week:{dow:1,doy:7}}),e.defineLocale(\"id\",{months:\"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des\".split(\"_\"),weekdays:\"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu\".split(\"_\"),weekdaysShort:\"Min_Sen_Sel_Rab_Kam_Jum_Sab\".split(\"_\"),weekdaysMin:\"Mg_Sn_Sl_Rb_Km_Jm_Sb\".split(\"_\"),longDateFormat:{LT:\"HH.mm\",LTS:\"HH.mm.ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY [pukul] HH.mm\",LLLL:\"dddd, D MMMM YYYY [pukul] HH.mm\"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),\"pagi\"===t?e:\"siang\"===t?e>=11?e:e+12:\"sore\"===t||\"malam\"===t?e+12:void 0},meridiem:function(e,t,a){return 11>e?\"pagi\":15>e?\"siang\":19>e?\"sore\":\"malam\"},calendar:{sameDay:\"[Hari ini pukul] LT\",nextDay:\"[Besok pukul] LT\",nextWeek:\"dddd [pukul] LT\",lastDay:\"[Kemarin pukul] LT\",lastWeek:\"dddd [lalu pukul] LT\",sameElse:\"L\"},relativeTime:{future:\"dalam %s\",past:\"%s yang lalu\",s:\"beberapa detik\",m:\"semenit\",mm:\"%d menit\",h:\"sejam\",hh:\"%d jam\",d:\"sehari\",dd:\"%d hari\",M:\"sebulan\",MM:\"%d bulan\",y:\"setahun\",yy:\"%d tahun\"},week:{dow:1,doy:7}}),e.defineLocale(\"is\",{months:\"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des\".split(\"_\"),weekdays:\"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur\".split(\"_\"),weekdaysShort:\"sun_mán_þri_mið_fim_fös_lau\".split(\"_\"),weekdaysMin:\"Su_Má_Þr_Mi_Fi_Fö_La\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY [kl.] H:mm\",LLLL:\"dddd, D. MMMM YYYY [kl.] H:mm\"},calendar:{sameDay:\"[í dag kl.] LT\",nextDay:\"[á morgun kl.] LT\",nextWeek:\"dddd [kl.] LT\",lastDay:\"[í gær kl.] LT\",lastWeek:\"[síðasta] dddd [kl.] LT\",sameElse:\"L\"},relativeTime:{future:\"eftir %s\",past:\"fyrir %s síðan\",s:S,m:S,mm:S,h:\"klukkustund\",hh:S,d:S,dd:S,M:S,MM:S,y:S,yy:S},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),e.defineLocale(\"it\",{months:\"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre\".split(\"_\"),monthsShort:\"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic\".split(\"_\"),weekdays:\"Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato\".split(\"_\"),weekdaysShort:\"Dom_Lun_Mar_Mer_Gio_Ven_Sab\".split(\"_\"),weekdaysMin:\"D_L_Ma_Me_G_V_S\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Oggi alle] LT\",nextDay:\"[Domani alle] LT\",nextWeek:\"dddd [alle] LT\",lastDay:\"[Ieri alle] LT\",lastWeek:function(){switch(this.day()){case 0:return\"[la scorsa] dddd [alle] LT\";default:return\"[lo scorso] dddd [alle] LT\"}},sameElse:\"L\"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?\"tra\":\"in\")+\" \"+e},past:\"%s fa\",s:\"alcuni secondi\",m:\"un minuto\",mm:\"%d minuti\",h:\"un'ora\",hh:\"%d ore\",d:\"un giorno\",dd:\"%d giorni\",M:\"un mese\",MM:\"%d mesi\",y:\"un anno\",yy:\"%d anni\"},ordinalParse:/\\d{1,2}º/,ordinal:\"%dº\",week:{dow:1,doy:4}}),e.defineLocale(\"ja\",{months:\"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月\".split(\"_\"),monthsShort:\"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月\".split(\"_\"),weekdays:\"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日\".split(\"_\"),weekdaysShort:\"日_月_火_水_木_金_土\".split(\"_\"),weekdaysMin:\"日_月_火_水_木_金_土\".split(\"_\"),longDateFormat:{LT:\"Ah時m分\",LTS:\"Ah時m分s秒\",L:\"YYYY/MM/DD\",LL:\"YYYY年M月D日\",LLL:\"YYYY年M月D日Ah時m分\",LLLL:\"YYYY年M月D日Ah時m分 dddd\"},meridiemParse:/午前|午後/i,isPM:function(e){return\"午後\"===e},meridiem:function(e,t,a){return 12>e?\"午前\":\"午後\"},calendar:{sameDay:\"[今日] LT\",nextDay:\"[明日] LT\",nextWeek:\"[来週]dddd LT\",lastDay:\"[昨日] LT\",lastWeek:\"[前週]dddd LT\",sameElse:\"L\"},relativeTime:{future:\"%s後\",past:\"%s前\",s:\"数秒\",m:\"1分\",mm:\"%d分\",h:\"1時間\",hh:\"%d時間\",d:\"1日\",dd:\"%d日\",M:\"1ヶ月\",MM:\"%dヶ月\",y:\"1年\",yy:\"%d年\"}}),e.defineLocale(\"jv\",{months:\"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des\".split(\"_\"),weekdays:\"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu\".split(\"_\"),weekdaysShort:\"Min_Sen_Sel_Reb_Kem_Jem_Sep\".split(\"_\"),weekdaysMin:\"Mg_Sn_Sl_Rb_Km_Jm_Sp\".split(\"_\"),longDateFormat:{LT:\"HH.mm\",LTS:\"HH.mm.ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY [pukul] HH.mm\",LLLL:\"dddd, D MMMM YYYY [pukul] HH.mm\"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(e,t){return 12===e&&(e=0),\"enjing\"===t?e:\"siyang\"===t?e>=11?e:e+12:\"sonten\"===t||\"ndalu\"===t?e+12:void 0},meridiem:function(e,t,a){return 11>e?\"enjing\":15>e?\"siyang\":19>e?\"sonten\":\"ndalu\"},calendar:{sameDay:\"[Dinten puniko pukul] LT\",nextDay:\"[Mbenjang pukul] LT\",nextWeek:\"dddd [pukul] LT\",lastDay:\"[Kala wingi pukul] LT\",lastWeek:\"dddd [kepengker pukul] LT\",sameElse:\"L\"},relativeTime:{future:\"wonten ing %s\",past:\"%s ingkang kepengker\",s:\"sawetawis detik\",m:\"setunggal menit\",mm:\"%d menit\",h:\"setunggal jam\",hh:\"%d jam\",d:\"sedinten\",dd:\"%d dinten\",M:\"sewulan\",MM:\"%d wulan\",y:\"setaun\",yy:\"%d taun\"},week:{dow:1,doy:7}}),e.defineLocale(\"ka\",{months:jn,monthsShort:\"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ\".split(\"_\"),weekdays:Yn,weekdaysShort:\"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ\".split(\"_\"),weekdaysMin:\"კვ_ორ_სა_ოთ_ხუ_პა_შა\".split(\"_\"),longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY h:mm A\",LLLL:\"dddd, D MMMM YYYY h:mm A\"},calendar:{sameDay:\"[დღეს] LT[-ზე]\",nextDay:\"[ხვალ] LT[-ზე]\",lastDay:\"[გუშინ] LT[-ზე]\",nextWeek:\"[შემდეგ] dddd LT[-ზე]\",lastWeek:\"[წინა] dddd LT-ზე\",sameElse:\"L\"},relativeTime:{future:function(e){return/(წამი|წუთი|საათი|წელი)/.test(e)?e.replace(/ი$/,\"ში\"):e+\"ში\"},past:function(e){return/(წამი|წუთი|საათი|დღე|თვე)/.test(e)?e.replace(/(ი|ე)$/,\"ის წინ\"):/წელი/.test(e)?e.replace(/წელი$/,\"წლის წინ\"):void 0},s:\"რამდენიმე წამი\",m:\"წუთი\",mm:\"%d წუთი\",h:\"საათი\",hh:\"%d საათი\",d:\"დღე\",dd:\"%d დღე\",M:\"თვე\",MM:\"%d თვე\",y:\"წელი\",yy:\"%d წელი\"},ordinalParse:/0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,ordinal:function(e){return 0===e?e:1===e?e+\"-ლი\":20>e||100>=e&&e%20===0||e%100===0?\"მე-\"+e:e+\"-ე\"},week:{dow:1,doy:7}}),e.defineLocale(\"km\",{months:\"មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ\".split(\"_\"),monthsShort:\"មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ\".split(\"_\"),weekdays:\"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍\".split(\"_\"),weekdaysShort:\"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍\".split(\"_\"),weekdaysMin:\"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[ថ្ងៃនៈ ម៉ោង] LT\",nextDay:\"[ស្អែក ម៉ោង] LT\",nextWeek:\"dddd [ម៉ោង] LT\",lastDay:\"[ម្សិលមិញ ម៉ោង] LT\",lastWeek:\"dddd [សប្តាហ៍មុន] [ម៉ោង] LT\",sameElse:\"L\"},relativeTime:{future:\"%sទៀត\",past:\"%sមុន\",s:\"ប៉ុន្មានវិនាទី\",m:\"មួយនាទី\",mm:\"%d នាទី\",h:\"មួយម៉ោង\",hh:\"%d ម៉ោង\",d:\"មួយថ្ងៃ\",dd:\"%d ថ្ងៃ\",M:\"មួយខែ\",MM:\"%d ខែ\",y:\"មួយឆ្នាំ\",yy:\"%d ឆ្នាំ\"},week:{dow:1,doy:4}}),e.defineLocale(\"ko\",{months:\"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월\".split(\"_\"),monthsShort:\"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월\".split(\"_\"),weekdays:\"일요일_월요일_화요일_수요일_목요일_금요일_토요일\".split(\"_\"),weekdaysShort:\"일_월_화_수_목_금_토\".split(\"_\"),weekdaysMin:\"일_월_화_수_목_금_토\".split(\"_\"),longDateFormat:{LT:\"A h시 m분\",LTS:\"A h시 m분 s초\",L:\"YYYY.MM.DD\",LL:\"YYYY년 MMMM D일\",LLL:\"YYYY년 MMMM D일 A h시 m분\",LLLL:\"YYYY년 MMMM D일 dddd A h시 m분\"},calendar:{sameDay:\"오늘 LT\",nextDay:\"내일 LT\",nextWeek:\"dddd LT\",lastDay:\"어제 LT\",lastWeek:\"지난주 dddd LT\",sameElse:\"L\"},relativeTime:{future:\"%s 후\",past:\"%s 전\",s:\"몇초\",ss:\"%d초\",m:\"일분\",mm:\"%d분\",h:\"한시간\",hh:\"%d시간\",d:\"하루\",dd:\"%d일\",M:\"한달\",MM:\"%d달\",y:\"일년\",yy:\"%d년\"},ordinalParse:/\\d{1,2}일/,ordinal:\"%d일\",meridiemParse:/오전|오후/,isPM:function(e){return\"오후\"===e},meridiem:function(e,t,a){return 12>e?\"오전\":\"오후\"}}),e.defineLocale(\"lb\",{months:\"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember\".split(\"_\"),monthsShort:\"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.\".split(\"_\"),weekdays:\"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg\".split(\"_\"),weekdaysShort:\"So._Mé._Dë._Më._Do._Fr._Sa.\".split(\"_\"),weekdaysMin:\"So_Mé_Dë_Më_Do_Fr_Sa\".split(\"_\"),longDateFormat:{LT:\"H:mm [Auer]\",LTS:\"H:mm:ss [Auer]\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm [Auer]\",LLLL:\"dddd, D. MMMM YYYY H:mm [Auer]\"},calendar:{sameDay:\"[Haut um] LT\",sameElse:\"L\",nextDay:\"[Muer um] LT\",nextWeek:\"dddd [um] LT\",lastDay:\"[Gëschter um] LT\",lastWeek:function(){switch(this.day()){case 2:case 4:return\"[Leschten] dddd [um] LT\";default:return\"[Leschte] dddd [um] LT\"}}},relativeTime:{future:Tn,past:gn,s:\"e puer Sekonnen\",m:ke,mm:\"%d Minutten\",h:ke,hh:\"%d Stonnen\",d:ke,dd:\"%d Deeg\",M:ke,MM:\"%d Méint\",y:ke,yy:\"%d Joer\"},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),{m:\"minutė_minutės_minutę\",mm:\"minutės_minučių_minutes\",h:\"valanda_valandos_valandą\",hh:\"valandos_valandų_valandas\",d:\"diena_dienos_dieną\",dd:\"dienos_dienų_dienas\",M:\"mėnuo_mėnesio_mėnesį\",MM:\"mėnesiai_mėnesių_mėnesius\",y:\"metai_metų_metus\",yy:\"metai_metų_metus\"}),lr=\"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis\".split(\"_\"),ta=(e.defineLocale(\"lt\",{months:on,monthsShort:\"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd\".split(\"_\"),weekdays:Oa,weekdaysShort:\"Sek_Pir_Ant_Tre_Ket_Pen_Šeš\".split(\"_\"),weekdaysMin:\"S_P_A_T_K_Pn_Š\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY-MM-DD\",LL:\"YYYY [m.] MMMM D [d.]\",LLL:\"YYYY [m.] MMMM D [d.], HH:mm [val.]\",LLLL:\"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]\",l:\"YYYY-MM-DD\",ll:\"YYYY [m.] MMMM D [d.]\",lll:\"YYYY [m.] MMMM D [d.], HH:mm [val.]\",llll:\"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]\"},calendar:{sameDay:\"[Šiandien] LT\",nextDay:\"[Rytoj] LT\",nextWeek:\"dddd LT\",lastDay:\"[Vakar] LT\",lastWeek:\"[Praėjusį] dddd LT\",sameElse:\"L\"},relativeTime:{future:\"po %s\",past:\"prieš %s\",s:qn,m:ie,mm:ve,h:ie,hh:ve,d:ie,dd:ve,M:ie,MM:ve,y:ie,yy:ve},ordinalParse:/\\d{1,2}-oji/,ordinal:function(e){return e+\"-oji\"},week:{dow:1,doy:4}}),{m:\"minūtes_minūtēm_minūte_minūtes\".split(\"_\"),mm:\"minūtes_minūtēm_minūte_minūtes\".split(\"_\"),h:\"stundas_stundām_stunda_stundas\".split(\"_\"),hh:\"stundas_stundām_stunda_stundas\".split(\"_\"),d:\"dienas_dienām_diena_dienas\".split(\"_\"),dd:\"dienas_dienām_diena_dienas\".split(\"_\"),M:\"mēneša_mēnešiem_mēnesis_mēneši\".split(\"_\"),MM:\"mēneša_mēnešiem_mēnesis_mēneši\".split(\"_\"),y:\"gada_gadiem_gads_gadi\".split(\"_\"),yy:\"gada_gadiem_gads_gadi\".split(\"_\")}),A=(e.defineLocale(\"lv\",{months:\"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec\".split(\"_\"),weekdays:\"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena\".split(\"_\"),weekdaysShort:\"Sv_P_O_T_C_Pk_S\".split(\"_\"),weekdaysMin:\"Sv_P_O_T_C_Pk_S\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY.\",LL:\"YYYY. [gada] D. MMMM\",LLL:\"YYYY. [gada] D. MMMM, HH:mm\",LLLL:\"YYYY. [gada] D. MMMM, dddd, HH:mm\"},calendar:{sameDay:\"[Šodien pulksten] LT\",nextDay:\"[Rīt pulksten] LT\",nextWeek:\"dddd [pulksten] LT\",lastDay:\"[Vakar pulksten] LT\",lastWeek:\"[Pagājušā] dddd [pulksten] LT\",sameElse:\"L\"},relativeTime:{future:\"pēc %s\",past:\"pirms %s\",s:kn,m:ge,mm:Se,h:ge,hh:Se,d:ge,dd:Se,M:ge,MM:Se,y:ge,yy:Se},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),{words:{m:[\"jedan minut\",\"jednog minuta\"],mm:[\"minut\",\"minuta\",\"minuta\"],h:[\"jedan sat\",\"jednog sata\"],hh:[\"sat\",\"sata\",\"sati\"],dd:[\"dan\",\"dana\",\"dana\"],MM:[\"mjesec\",\"mjeseca\",\"mjeseci\"],yy:[\"godina\",\"godine\",\"godina\"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&4>=e?t[1]:t[2]},translate:function(e,t,a){var n=A.words[a];return 1===a.length?t?n[0]:n[1]:e+\" \"+A.correctGrammaticalCase(e,n)}}),Lr=(e.defineLocale(\"me\",{months:[\"januar\",\"februar\",\"mart\",\"april\",\"maj\",\"jun\",\"jul\",\"avgust\",\"septembar\",\"oktobar\",\"novembar\",\"decembar\"],monthsShort:[\"jan.\",\"feb.\",\"mar.\",\"apr.\",\"maj\",\"jun\",\"jul\",\"avg.\",\"sep.\",\"okt.\",\"nov.\",\"dec.\"],weekdays:[\"nedjelja\",\"ponedjeljak\",\"utorak\",\"srijeda\",\"četvrtak\",\"petak\",\"subota\"],weekdaysShort:[\"ned.\",\"pon.\",\"uto.\",\"sri.\",\"čet.\",\"pet.\",\"sub.\"],weekdaysMin:[\"ne\",\"po\",\"ut\",\"sr\",\"če\",\"pe\",\"su\"],longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD. MM. YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[danas u] LT\",nextDay:\"[sjutra u] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[u] [nedjelju] [u] LT\";case 3:return\"[u] [srijedu] [u] LT\";case 6:return\"[u] [subotu] [u] LT\";case 1:case 2:case 4:case 5:return\"[u] dddd [u] LT\"}},lastDay:\"[juče u] LT\",lastWeek:function(){var e=[\"[prošle] [nedjelje] [u] LT\",\"[prošlog] [ponedjeljka] [u] LT\",\"[prošlog] [utorka] [u] LT\",\"[prošle] [srijede] [u] LT\",\"[prošlog] [četvrtka] [u] LT\",\"[prošlog] [petka] [u] LT\",\"[prošle] [subote] [u] LT\"];return e[this.day()]},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"prije %s\",s:\"nekoliko sekundi\",m:A.translate,mm:A.translate,h:A.translate,hh:A.translate,d:\"dan\",dd:A.translate,M:\"mjesec\",MM:A.translate,y:\"godinu\",yy:A.translate},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}}),e.defineLocale(\"mk\",{months:\"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември\".split(\"_\"),monthsShort:\"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек\".split(\"_\"),weekdays:\"недела_понеделник_вторник_среда_четврток_петок_сабота\".split(\"_\"),weekdaysShort:\"нед_пон_вто_сре_чет_пет_саб\".split(\"_\"),weekdaysMin:\"нe_пo_вт_ср_че_пе_сa\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"D.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY H:mm\",LLLL:\"dddd, D MMMM YYYY H:mm\"},calendar:{sameDay:\"[Денес во] LT\",nextDay:\"[Утре во] LT\",nextWeek:\"dddd [во] LT\",lastDay:\"[Вчера во] LT\",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return\"[Во изминатата] dddd [во] LT\";case 1:case 2:case 4:case 5:return\"[Во изминатиот] dddd [во] LT\"}},sameElse:\"L\"},relativeTime:{future:\"после %s\",past:\"пред %s\",s:\"неколку секунди\",m:\"минута\",mm:\"%d минути\",h:\"час\",hh:\"%d часа\",d:\"ден\",dd:\"%d дена\",M:\"месец\",MM:\"%d месеци\",y:\"година\",yy:\"%d години\"},ordinalParse:/\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,a=e%100;return 0===e?e+\"-ев\":0===a?e+\"-ен\":a>10&&20>a?e+\"-ти\":1===t?e+\"-ви\":2===t?e+\"-ри\":7===t||8===t?e+\"-ми\":e+\"-ти\"},week:{dow:1,doy:7}}),e.defineLocale(\"ml\",{months:\"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ\".split(\"_\"),monthsShort:\"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.\".split(\"_\"),weekdays:\"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച\".split(\"_\"),weekdaysShort:\"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി\".split(\"_\"),weekdaysMin:\"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ\".split(\"_\"),longDateFormat:{LT:\"A h:mm -നു\",LTS:\"A h:mm:ss -നു\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY, A h:mm -നു\",LLLL:\"dddd, D MMMM YYYY, A h:mm -നു\"},calendar:{sameDay:\"[ഇന്ന്] LT\",nextDay:\"[നാളെ] LT\",nextWeek:\"dddd, LT\",lastDay:\"[ഇന്നലെ] LT\",lastWeek:\"[കഴിഞ്ഞ] dddd, LT\",sameElse:\"L\"},relativeTime:{future:\"%s കഴിഞ്ഞ്\",past:\"%s മുൻപ്\",s:\"അൽപ നിമിഷങ്ങൾ\",m:\"ഒരു മിനിറ്റ്\",mm:\"%d മിനിറ്റ്\",h:\"ഒരു മണിക്കൂർ\",hh:\"%d മണിക്കൂർ\",d:\"ഒരു ദിവസം\",dd:\"%d ദിവസം\",M:\"ഒരു മാസം\",MM:\"%d മാസം\",y:\"ഒരു വർഷം\",yy:\"%d വർഷം\"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,isPM:function(e){return/^(ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി)$/.test(e)},meridiem:function(e,t,a){return 4>e?\"രാത്രി\":12>e?\"രാവിലെ\":17>e?\"ഉച്ച കഴിഞ്ഞ്\":20>e?\"വൈകുന്നേരം\":\"രാത്രി\"}}),{1:\"१\",2:\"२\",3:\"३\",4:\"४\",5:\"५\",6:\"६\",7:\"७\",8:\"८\",9:\"९\",0:\"०\"}),Mr={\"१\":\"1\",\"२\":\"2\",\"३\":\"3\",\"४\":\"4\",\"५\":\"5\",\"६\":\"6\",\"७\":\"7\",\"८\":\"8\",\"९\":\"9\",\"०\":\"0\"},ir=(e.defineLocale(\"mr\",{months:\"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर\".split(\"_\"),monthsShort:\"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.\".split(\"_\"),weekdays:\"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार\".split(\"_\"),weekdaysShort:\"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि\".split(\"_\"),weekdaysMin:\"र_सो_मं_बु_गु_शु_श\".split(\"_\"),longDateFormat:{LT:\"A h:mm वाजता\",LTS:\"A h:mm:ss वाजता\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY, A h:mm वाजता\",LLLL:\"dddd, D MMMM YYYY, A h:mm वाजता\"},calendar:{sameDay:\"[आज] LT\",nextDay:\"[उद्या] LT\",nextWeek:\"dddd, LT\",lastDay:\"[काल] LT\",lastWeek:\"[मागील] dddd, LT\",sameElse:\"L\"},relativeTime:{future:\"%s नंतर\",past:\"%s पूर्वी\",s:\"सेकंद\",m:\"एक मिनिट\",mm:\"%d मिनिटे\",h:\"एक तास\",hh:\"%d तास\",d:\"एक दिवस\",dd:\"%d दिवस\",M:\"एक महिना\",MM:\"%d महिने\",y:\"एक वर्ष\",yy:\"%d वर्षे\"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return Mr[e]})},postformat:function(e){return e.replace(/\\d/g,function(e){return Lr[e]})},meridiemParse:/रात्री|सकाळी|दुपारी|सायंकाळी/,meridiemHour:function(e,t){return 12===e&&(e=0),\"रात्री\"===t?4>e?e:e+12:\"सकाळी\"===t?e:\"दुपारी\"===t?e>=10?e:e+12:\"सायंकाळी\"===t?e+12:void 0},meridiem:function(e,t,a){return 4>e?\"रात्री\":10>e?\"सकाळी\":17>e?\"दुपारी\":20>e?\"सायंकाळी\":\"रात्री\"},week:{dow:0,doy:6}}),e.defineLocale(\"ms-my\",{months:\"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember\".split(\"_\"),monthsShort:\"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis\".split(\"_\"),weekdays:\"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu\".split(\"_\"),weekdaysShort:\"Ahd_Isn_Sel_Rab_Kha_Jum_Sab\".split(\"_\"),weekdaysMin:\"Ah_Is_Sl_Rb_Km_Jm_Sb\".split(\"_\"),longDateFormat:{LT:\"HH.mm\",LTS:\"HH.mm.ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY [pukul] HH.mm\",LLLL:\"dddd, D MMMM YYYY [pukul] HH.mm\"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),\"pagi\"===t?e:\"tengahari\"===t?e>=11?e:e+12:\"petang\"===t||\"malam\"===t?e+12:void 0},meridiem:function(e,t,a){return 11>e?\"pagi\":15>e?\"tengahari\":19>e?\"petang\":\"malam\"},calendar:{sameDay:\"[Hari ini pukul] LT\",nextDay:\"[Esok pukul] LT\",nextWeek:\"dddd [pukul] LT\",lastDay:\"[Kelmarin pukul] LT\",lastWeek:\"dddd [lepas pukul] LT\",sameElse:\"L\"},relativeTime:{future:\"dalam %s\",past:\"%s yang lepas\",s:\"beberapa saat\",m:\"seminit\",mm:\"%d minit\",h:\"sejam\",hh:\"%d jam\",d:\"sehari\",dd:\"%d hari\",M:\"sebulan\",MM:\"%d bulan\",y:\"setahun\",yy:\"%d tahun\"},week:{dow:1,doy:7}}),e.defineLocale(\"ms\",{months:\"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember\".split(\"_\"),monthsShort:\"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis\".split(\"_\"),weekdays:\"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu\".split(\"_\"),weekdaysShort:\"Ahd_Isn_Sel_Rab_Kha_Jum_Sab\".split(\"_\"),weekdaysMin:\"Ah_Is_Sl_Rb_Km_Jm_Sb\".split(\"_\"),longDateFormat:{LT:\"HH.mm\",LTS:\"HH.mm.ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY [pukul] HH.mm\",LLLL:\"dddd, D MMMM YYYY [pukul] HH.mm\"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),\"pagi\"===t?e:\"tengahari\"===t?e>=11?e:e+12:\"petang\"===t||\"malam\"===t?e+12:void 0},meridiem:function(e,t,a){return 11>e?\"pagi\":15>e?\"tengahari\":19>e?\"petang\":\"malam\"},calendar:{sameDay:\"[Hari ini pukul] LT\",nextDay:\"[Esok pukul] LT\",nextWeek:\"dddd [pukul] LT\",lastDay:\"[Kelmarin pukul] LT\",lastWeek:\"dddd [lepas pukul] LT\",sameElse:\"L\"},relativeTime:{future:\"dalam %s\",past:\"%s yang lepas\",s:\"beberapa saat\",m:\"seminit\",mm:\"%d minit\",h:\"sejam\",hh:\"%d jam\",d:\"sehari\",dd:\"%d hari\",M:\"sebulan\",MM:\"%d bulan\",y:\"setahun\",yy:\"%d tahun\"},week:{dow:1,doy:7}}),{1:\"၁\",2:\"၂\",3:\"၃\",4:\"၄\",5:\"၅\",6:\"၆\",7:\"၇\",8:\"၈\",9:\"၉\",0:\"၀\"}),dr={\"၁\":\"1\",\"၂\":\"2\",\"၃\":\"3\",\"၄\":\"4\",\"၅\":\"5\",\"၆\":\"6\",\"၇\":\"7\",\"၈\":\"8\",\"၉\":\"9\",\"၀\":\"0\"},tr=(e.defineLocale(\"my\",{months:\"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ\".split(\"_\"),monthsShort:\"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ\".split(\"_\"),weekdays:\"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ\".split(\"_\"),weekdaysShort:\"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ\".split(\"_\"),weekdaysMin:\"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[ယနေ.] LT [မှာ]\",nextDay:\"[မနက်ဖြန်] LT [မှာ]\",nextWeek:\"dddd LT [မှာ]\",lastDay:\"[မနေ.က] LT [မှာ]\",lastWeek:\"[ပြီးခဲ့သော] dddd LT [မှာ]\",sameElse:\"L\"},relativeTime:{future:\"လာမည့် %s မှာ\",past:\"လွန်ခဲ့သော %s က\",s:\"စက္ကန်.အနည်းငယ်\",m:\"တစ်မိနစ်\",mm:\"%d မိနစ်\",h:\"တစ်နာရီ\",hh:\"%d နာရီ\",d:\"တစ်ရက်\",dd:\"%d ရက်\",M:\"တစ်လ\",MM:\"%d လ\",y:\"တစ်နှစ်\",yy:\"%d နှစ်\"},preparse:function(e){return e.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,function(e){return dr[e]})},postformat:function(e){return e.replace(/\\d/g,function(e){return ir[e]})},week:{dow:1,doy:4}}),e.defineLocale(\"nb\",{months:\"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des\".split(\"_\"),weekdays:\"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag\".split(\"_\"),weekdaysShort:\"søn_man_tirs_ons_tors_fre_lør\".split(\"_\"),weekdaysMin:\"sø_ma_ti_on_to_fr_lø\".split(\"_\"),longDateFormat:{LT:\"H.mm\",LTS:\"H.mm.ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY [kl.] H.mm\",LLLL:\"dddd D. MMMM YYYY [kl.] H.mm\"},calendar:{sameDay:\"[i dag kl.] LT\",nextDay:\"[i morgen kl.] LT\",nextWeek:\"dddd [kl.] LT\",lastDay:\"[i går kl.] LT\",lastWeek:\"[forrige] dddd [kl.] LT\",sameElse:\"L\"},relativeTime:{future:\"om %s\",past:\"for %s siden\",s:\"noen sekunder\",m:\"ett minutt\",mm:\"%d minutter\",h:\"en time\",hh:\"%d timer\",d:\"en dag\",dd:\"%d dager\",M:\"en måned\",MM:\"%d måneder\",y:\"ett år\",yy:\"%d år\"},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),{1:\"१\",2:\"२\",3:\"३\",4:\"४\",5:\"५\",6:\"६\",7:\"७\",8:\"८\",9:\"९\",0:\"०\"}),er={\"१\":\"1\",\"२\":\"2\",\"३\":\"3\",\"४\":\"4\",\"५\":\"5\",\"६\":\"6\",\"७\":\"7\",\"८\":\"8\",\"९\":\"9\",\"०\":\"0\"},ar=(e.defineLocale(\"ne\",{months:\"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर\".split(\"_\"),monthsShort:\"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.\".split(\"_\"),weekdays:\"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार\".split(\"_\"),weekdaysShort:\"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.\".split(\"_\"),weekdaysMin:\"आइ._सो._मङ्_बु._बि._शु._श.\".split(\"_\"),longDateFormat:{LT:\"Aको h:mm बजे\",LTS:\"Aको h:mm:ss बजे\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY, Aको h:mm बजे\",LLLL:\"dddd, D MMMM YYYY, Aको h:mm बजे\"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return er[e]})},postformat:function(e){return e.replace(/\\d/g,function(e){return tr[e]})},meridiemParse:/राती|बिहान|दिउँसो|बेलुका|साँझ|राती/,meridiemHour:function(e,t){return 12===e&&(e=0),\"राती\"===t?3>e?e:e+12:\"बिहान\"===t?e:\"दिउँसो\"===t?e>=10?e:e+12:\"बेलुका\"===t||\"साँझ\"===t?e+12:void 0},meridiem:function(e,t,a){return 3>e?\"राती\":10>e?\"बिहान\":15>e?\"दिउँसो\":18>e?\"बेलुका\":20>e?\"साँझ\":\"राती\"},calendar:{sameDay:\"[आज] LT\",nextDay:\"[भोली] LT\",nextWeek:\"[आउँदो] dddd[,] LT\",lastDay:\"[हिजो] LT\",lastWeek:\"[गएको] dddd[,] LT\",sameElse:\"L\"},relativeTime:{future:\"%sमा\",past:\"%s अगाडी\",s:\"केही समय\",m:\"एक मिनेट\",mm:\"%d मिनेट\",h:\"एक घण्टा\",hh:\"%d घण्टा\",d:\"एक दिन\",dd:\"%d दिन\",M:\"एक महिना\",MM:\"%d महिना\",y:\"एक बर्ष\",yy:\"%d बर्ष\"},week:{dow:1,doy:7}}),\"jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.\".split(\"_\")),nr=\"jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec\".split(\"_\"),kt=(e.defineLocale(\"nl\",{months:\"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december\".split(\"_\"),monthsShort:function(e,t){return/-MMM-/.test(t)?nr[e.month()]:ar[e.month()]},weekdays:\"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag\".split(\"_\"),weekdaysShort:\"zo._ma._di._wo._do._vr._za.\".split(\"_\"),weekdaysMin:\"Zo_Ma_Di_Wo_Do_Vr_Za\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD-MM-YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[vandaag om] LT\",nextDay:\"[morgen om] LT\",nextWeek:\"dddd [om] LT\",lastDay:\"[gisteren om] LT\",lastWeek:\"[afgelopen] dddd [om] LT\",sameElse:\"L\"},relativeTime:{future:\"over %s\",past:\"%s geleden\",s:\"een paar seconden\",m:\"één minuut\",mm:\"%d minuten\",h:\"één uur\",hh:\"%d uur\",d:\"één dag\",dd:\"%d dagen\",M:\"één maand\",MM:\"%d maanden\",y:\"één jaar\",yy:\"%d jaar\"},ordinalParse:/\\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?\"ste\":\"de\")},week:{dow:1,doy:4}}),e.defineLocale(\"nn\",{months:\"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des\".split(\"_\"),weekdays:\"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag\".split(\"_\"),weekdaysShort:\"sun_mån_tys_ons_tor_fre_lau\".split(\"_\"),weekdaysMin:\"su_må_ty_on_to_fr_lø\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[I dag klokka] LT\",nextDay:\"[I morgon klokka] LT\",nextWeek:\"dddd [klokka] LT\",lastDay:\"[I går klokka] LT\",lastWeek:\"[Føregåande] dddd [klokka] LT\",sameElse:\"L\"},relativeTime:{future:\"om %s\",past:\"for %s sidan\",s:\"nokre sekund\",m:\"eit minutt\",mm:\"%d minutt\",h:\"ein time\",hh:\"%d timar\",d:\"ein dag\",dd:\"%d dagar\",M:\"ein månad\",MM:\"%d månader\",y:\"eit år\",yy:\"%d år\"},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),\"styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień\".split(\"_\")),ft=\"stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia\".split(\"_\"),Ft=(e.defineLocale(\"pl\",{months:function(e,t){return\"\"===t?\"(\"+ft[e.month()]+\"|\"+kt[e.month()]+\")\":/D MMMM/.test(t)?ft[e.month()]:kt[e.month()]},monthsShort:\"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru\".split(\"_\"),weekdays:\"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota\".split(\"_\"),weekdaysShort:\"nie_pon_wt_śr_czw_pt_sb\".split(\"_\"),weekdaysMin:\"N_Pn_Wt_Śr_Cz_Pt_So\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Dziś o] LT\",nextDay:\"[Jutro o] LT\",nextWeek:\"[W] dddd [o] LT\",lastDay:\"[Wczoraj o] LT\",lastWeek:function(){switch(this.day()){case 0:return\"[W zeszłą niedzielę o] LT\";case 3:return\"[W zeszłą środę o] LT\";case 6:return\"[W zeszłą sobotę o] LT\";default:return\"[W zeszły] dddd [o] LT\"}},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"%s temu\",s:\"kilka sekund\",m:ae,mm:ae,h:ae,hh:ae,d:\"1 dzień\",dd:\"%d dni\",M:\"miesiąc\",MM:ae,y:\"rok\",yy:ae},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),e.defineLocale(\"pt-br\",{months:\"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro\".split(\"_\"),monthsShort:\"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez\".split(\"_\"),weekdays:\"Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado\".split(\"_\"),weekdaysShort:\"Dom_Seg_Ter_Qua_Qui_Sex_Sáb\".split(\"_\"),weekdaysMin:\"Dom_2ª_3ª_4ª_5ª_6ª_Sáb\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [de] MMMM [de] YYYY\",LLL:\"D [de] MMMM [de] YYYY [às] HH:mm\",LLLL:\"dddd, D [de] MMMM [de] YYYY [às] HH:mm\"},calendar:{sameDay:\"[Hoje às] LT\",nextDay:\"[Amanhã às] LT\",nextWeek:\"dddd [às] LT\",lastDay:\"[Ontem às] LT\",lastWeek:function(){return 0===this.day()||6===this.day()?\"[Último] dddd [às] LT\":\"[Última] dddd [às] LT\"},sameElse:\"L\"},relativeTime:{future:\"em %s\",past:\"%s atrás\",s:\"poucos segundos\",m:\"um minuto\",mm:\"%d minutos\",h:\"uma hora\",hh:\"%d horas\",d:\"um dia\",dd:\"%d dias\",M:\"um mês\",MM:\"%d meses\",y:\"um ano\",yy:\"%d anos\"},ordinalParse:/\\d{1,2}º/,ordinal:\"%dº\"}),e.defineLocale(\"pt\",{months:\"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro\".split(\"_\"),monthsShort:\"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez\".split(\"_\"),weekdays:\"Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado\".split(\"_\"),weekdaysShort:\"Dom_Seg_Ter_Qua_Qui_Sex_Sáb\".split(\"_\"),weekdaysMin:\"Dom_2ª_3ª_4ª_5ª_6ª_Sáb\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [de] MMMM [de] YYYY\",LLL:\"D [de] MMMM [de] YYYY HH:mm\",LLLL:\"dddd, D [de] MMMM [de] YYYY HH:mm\"},calendar:{sameDay:\"[Hoje às] LT\",nextDay:\"[Amanhã às] LT\",nextWeek:\"dddd [às] LT\",lastDay:\"[Ontem às] LT\",lastWeek:function(){return 0===this.day()||6===this.day()?\"[Último] dddd [às] LT\":\"[Última] dddd [às] LT\"},sameElse:\"L\"},relativeTime:{future:\"em %s\",past:\"há %s\",s:\"segundos\",m:\"um minuto\",mm:\"%d minutos\",h:\"uma hora\",hh:\"%d horas\",d:\"um dia\",dd:\"%d dias\",M:\"um mês\",MM:\"%d meses\",y:\"um ano\",yy:\"%d anos\"},ordinalParse:/\\d{1,2}º/,ordinal:\"%dº\",week:{dow:1,doy:4}}),e.defineLocale(\"ro\",{months:\"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie\".split(\"_\"),monthsShort:\"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.\".split(\"_\"),weekdays:\"duminică_luni_marți_miercuri_joi_vineri_sâmbătă\".split(\"_\"),weekdaysShort:\"Dum_Lun_Mar_Mie_Joi_Vin_Sâm\".split(\"_\"),weekdaysMin:\"Du_Lu_Ma_Mi_Jo_Vi_Sâ\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY H:mm\",LLLL:\"dddd, D MMMM YYYY H:mm\"},calendar:{sameDay:\"[azi la] LT\",nextDay:\"[mâine la] LT\",nextWeek:\"dddd [la] LT\",lastDay:\"[ieri la] LT\",lastWeek:\"[fosta] dddd [la] LT\",sameElse:\"L\"},relativeTime:{future:\"peste %s\",past:\"%s în urmă\",s:\"câteva secunde\",m:\"un minut\",mm:le,h:\"o oră\",hh:le,d:\"o zi\",dd:le,M:\"o lună\",MM:le,y:\"un an\",yy:le},week:{dow:1,doy:7}}),e.defineLocale(\"ru\",{months:In,monthsShort:Vn,weekdays:yn,weekdaysShort:\"вс_пн_вт_ср_чт_пт_сб\".split(\"_\"),weekdaysMin:\"вс_пн_вт_ср_чт_пт_сб\".split(\"_\"),monthsParse:[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[й|я]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i],longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY г.\",LLL:\"D MMMM YYYY г., HH:mm\",LLLL:\"dddd, D MMMM YYYY г., HH:mm\"},calendar:{sameDay:\"[Сегодня в] LT\",nextDay:\"[Завтра в] LT\",lastDay:\"[Вчера в] LT\",nextWeek:function(){return 2===this.day()?\"[Во] dddd [в] LT\":\"[В] dddd [в] LT\"},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?\"[Во] dddd [в] LT\":\"[В] dddd [в] LT\";switch(this.day()){case 0:return\"[В прошлое] dddd [в] LT\";case 1:case 2:case 4:return\"[В прошлый] dddd [в] LT\";case 3:case 5:case 6:return\"[В прошлую] dddd [в] LT\"}},sameElse:\"L\"},relativeTime:{future:\"через %s\",past:\"%s назад\",s:\"несколько секунд\",m:re,mm:re,h:\"час\",hh:re,d:\"день\",dd:re,M:\"месяц\",MM:re,y:\"год\",yy:re},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,t,a){return 4>e?\"ночи\":12>e?\"утра\":17>e?\"дня\":\"вечера\"},ordinalParse:/\\d{1,2}-(й|го|я)/,ordinal:function(e,t){switch(t){case\"M\":case\"d\":case\"DDD\":return e+\"-й\";case\"D\":return e+\"-го\";case\"w\":case\"W\":return e+\"-я\";default:return e}},week:{dow:1,doy:7}}),e.defineLocale(\"si\",{months:\"ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්\".split(\"_\"),monthsShort:\"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ\".split(\"_\"),weekdays:\"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා\".split(\"_\"),weekdaysShort:\"ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන\".split(\"_\"),weekdaysMin:\"ඉ_ස_අ_බ_බ්‍ර_සි_සෙ\".split(\"_\"),longDateFormat:{LT:\"a h:mm\",LTS:\"a h:mm:ss\",L:\"YYYY/MM/DD\",LL:\"YYYY MMMM D\",LLL:\"YYYY MMMM D, a h:mm\",LLLL:\"YYYY MMMM D [වැනි] dddd, a h:mm:ss\"},calendar:{sameDay:\"[අද] LT[ට]\",nextDay:\"[හෙට] LT[ට]\",nextWeek:\"dddd LT[ට]\",lastDay:\"[ඊයේ] LT[ට]\",lastWeek:\"[පසුගිය] dddd LT[ට]\",sameElse:\"L\"},relativeTime:{future:\"%sකින්\",past:\"%sකට පෙර\",s:\"තත්පර කිහිපය\",m:\"මිනිත්තුව\",mm:\"මිනිත්තු %d\",h:\"පැය\",hh:\"පැය %d\",d:\"දිනය\",dd:\"දින %d\",M:\"මාසය\",MM:\"මාස %d\",y:\"වසර\",yy:\"වසර %d\"},ordinalParse:/\\d{1,2} වැනි/,ordinal:function(e){return e+\" වැනි\"},meridiem:function(e,t,a){return e>11?a?\"ප.ව.\":\"පස් වරු\":a?\"පෙ.ව.\":\"පෙර වරු\"}}),\"január_február_marec_apríl_máj_jún_júl_august_september_október_november_december\".split(\"_\")),Ht=\"jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec\".split(\"_\"),W=(e.defineLocale(\"sk\",{months:Ft,monthsShort:Ht,monthsParse:function(e,t){var a,n=[];for(a=0;12>a;a++)n[a]=new RegExp(\"^\"+e[a]+\"$|^\"+t[a]+\"$\",\"i\");return n}(Ft,Ht),weekdays:\"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota\".split(\"_\"),weekdaysShort:\"ne_po_ut_st_št_pi_so\".split(\"_\"),weekdaysMin:\"ne_po_ut_st_št_pi_so\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[dnes o] LT\",nextDay:\"[zajtra o] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[v nedeľu o] LT\";case 1:case 2:return\"[v] dddd [o] LT\";case 3:return\"[v stredu o] LT\";case 4:return\"[vo štvrtok o] LT\";case 5:return\"[v piatok o] LT\";case 6:return\"[v sobotu o] LT\"}},lastDay:\"[včera o] LT\",lastWeek:function(){switch(this.day()){case 0:return\"[minulú nedeľu o] LT\";case 1:case 2:return\"[minulý] dddd [o] LT\";case 3:return\"[minulú stredu o] LT\";case 4:case 5:return\"[minulý] dddd [o] LT\";case 6:return\"[minulú sobotu o] LT\"}},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"pred %s\",s:D,m:D,mm:D,h:D,hh:D,d:D,dd:D,M:D,MM:D,y:D,yy:D},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),e.defineLocale(\"sl\",{months:\"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december\".split(\"_\"),monthsShort:\"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.\".split(\"_\"),weekdays:\"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota\".split(\"_\"),weekdaysShort:\"ned._pon._tor._sre._čet._pet._sob.\".split(\"_\"),weekdaysMin:\"ne_po_to_sr_če_pe_so\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD. MM. YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[danes ob] LT\",nextDay:\"[jutri ob] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[v] [nedeljo] [ob] LT\";case 3:return\"[v] [sredo] [ob] LT\";case 6:return\"[v] [soboto] [ob] LT\";case 1:case 2:case 4:case 5:return\"[v] dddd [ob] LT\"}},lastDay:\"[včeraj ob] LT\",lastWeek:function(){switch(this.day()){case 0:return\"[prejšnjo] [nedeljo] [ob] LT\";case 3:return\"[prejšnjo] [sredo] [ob] LT\";case 6:return\"[prejšnjo] [soboto] [ob] LT\";case 1:case 2:case 4:case 5:return\"[prejšnji] dddd [ob] LT\"}},sameElse:\"L\"},relativeTime:{future:\"čez %s\",past:\"pred %s\",s:f,m:f,mm:f,h:f,hh:f,d:f,dd:f,M:f,MM:f,y:f,yy:f},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}}),e.defineLocale(\"sq\",{months:\"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor\".split(\"_\"),monthsShort:\"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj\".split(\"_\"),weekdays:\"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë\".split(\"_\"),weekdaysShort:\"Die_Hën_Mar_Mër_Enj_Pre_Sht\".split(\"_\"),weekdaysMin:\"D_H_Ma_Më_E_P_Sh\".split(\"_\"),meridiemParse:/PD|MD/,isPM:function(e){return\"M\"===e.charAt(0)},meridiem:function(e,t,a){return 12>e?\"PD\":\"MD\"},longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Sot në] LT\",nextDay:\"[Nesër në] LT\",nextWeek:\"dddd [në] LT\",lastDay:\"[Dje në] LT\",lastWeek:\"dddd [e kaluar në] LT\",sameElse:\"L\"},relativeTime:{future:\"në %s\",past:\"%s më parë\",s:\"disa sekonda\",m:\"një minutë\",mm:\"%d minuta\",h:\"një orë\",hh:\"%d orë\",d:\"një ditë\",dd:\"%d ditë\",M:\"një muaj\",MM:\"%d muaj\",y:\"një vit\",yy:\"%d vite\"},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),{words:{m:[\"један минут\",\"једне минуте\"],mm:[\"минут\",\"минуте\",\"минута\"],h:[\"један сат\",\"једног сата\"],hh:[\"сат\",\"сата\",\"сати\"],dd:[\"дан\",\"дана\",\"дана\"],MM:[\"месец\",\"месеца\",\"месеци\"],yy:[\"година\",\"године\",\"година\"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&4>=e?t[1]:t[2]},translate:function(e,t,a){var n=W.words[a];return 1===a.length?t?n[0]:n[1]:e+\" \"+W.correctGrammaticalCase(e,n)}}),j=(e.defineLocale(\"sr-cyrl\",{months:[\"јануар\",\"фебруар\",\"март\",\"април\",\"мај\",\"јун\",\"јул\",\"август\",\"септембар\",\"октобар\",\"новембар\",\"децембар\"],monthsShort:[\"јан.\",\"феб.\",\"мар.\",\"апр.\",\"мај\",\"јун\",\"јул\",\"авг.\",\"сеп.\",\"окт.\",\"нов.\",\"дец.\"],weekdays:[\"недеља\",\"понедељак\",\"уторак\",\"среда\",\"четвртак\",\"петак\",\"субота\"],weekdaysShort:[\"нед.\",\"пон.\",\"уто.\",\"сре.\",\"чет.\",\"пет.\",\"суб.\"],weekdaysMin:[\"не\",\"по\",\"ут\",\"ср\",\"че\",\"пе\",\"су\"],longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD. MM. YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[данас у] LT\",nextDay:\"[сутра у] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[у] [недељу] [у] LT\";case 3:return\"[у] [среду] [у] LT\";case 6:return\"[у] [суботу] [у] LT\";case 1:case 2:case 4:case 5:return\"[у] dddd [у] LT\"}},lastDay:\"[јуче у] LT\",lastWeek:function(){var e=[\"[прошле] [недеље] [у] LT\",\"[прошлог] [понедељка] [у] LT\",\"[прошлог] [уторка] [у] LT\",\"[прошле] [среде] [у] LT\",\"[прошлог] [четвртка] [у] LT\",\"[прошлог] [петка] [у] LT\",\"[прошле] [суботе] [у] LT\"];return e[this.day()]},sameElse:\"L\"},relativeTime:{future:\"за %s\",past:\"пре %s\",s:\"неколико секунди\",m:W.translate,mm:W.translate,h:W.translate,hh:W.translate,d:\"дан\",dd:W.translate,M:\"месец\",MM:W.translate,y:\"годину\",yy:W.translate},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}}),{words:{m:[\"jedan minut\",\"jedne minute\"],mm:[\"minut\",\"minute\",\"minuta\"],h:[\"jedan sat\",\"jednog sata\"],hh:[\"sat\",\"sata\",\"sati\"],dd:[\"dan\",\"dana\",\"dana\"],MM:[\"mesec\",\"meseca\",\"meseci\"],yy:[\"godina\",\"godine\",\"godina\"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&4>=e?t[1]:t[2]},translate:function(e,t,a){var n=j.words[a];return 1===a.length?t?n[0]:n[1]:e+\" \"+j.correctGrammaticalCase(e,n)}}),tt=(e.defineLocale(\"sr\",{months:[\"januar\",\"februar\",\"mart\",\"april\",\"maj\",\"jun\",\"jul\",\"avgust\",\"septembar\",\"oktobar\",\"novembar\",\"decembar\"],monthsShort:[\"jan.\",\"feb.\",\"mar.\",\"apr.\",\"maj\",\"jun\",\"jul\",\"avg.\",\"sep.\",\"okt.\",\"nov.\",\"dec.\"],weekdays:[\"nedelja\",\"ponedeljak\",\"utorak\",\"sreda\",\"četvrtak\",\"petak\",\"subota\"],weekdaysShort:[\"ned.\",\"pon.\",\"uto.\",\"sre.\",\"čet.\",\"pet.\",\"sub.\"],weekdaysMin:[\"ne\",\"po\",\"ut\",\"sr\",\"če\",\"pe\",\"su\"],longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD. MM. YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[danas u] LT\",nextDay:\"[sutra u] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[u] [nedelju] [u] LT\";case 3:return\"[u] [sredu] [u] LT\";case 6:return\"[u] [subotu] [u] LT\";case 1:case 2:case 4:case 5:return\"[u] dddd [u] LT\"}},lastDay:\"[juče u] LT\",lastWeek:function(){var e=[\"[prošle] [nedelje] [u] LT\",\"[prošlog] [ponedeljka] [u] LT\",\"[prošlog] [utorka] [u] LT\",\"[prošle] [srede] [u] LT\",\"[prošlog] [četvrtka] [u] LT\",\"[prošlog] [petka] [u] LT\",\"[prošle] [subote] [u] LT\"];return e[this.day()]},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"pre %s\",s:\"nekoliko sekundi\",m:j.translate,mm:j.translate,h:j.translate,hh:j.translate,d:\"dan\",dd:j.translate,M:\"mesec\",MM:j.translate,y:\"godinu\",yy:j.translate},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}}),e.defineLocale(\"sv\",{months:\"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec\".split(\"_\"),weekdays:\"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag\".split(\"_\"),weekdaysShort:\"sön_mån_tis_ons_tor_fre_lör\".split(\"_\"),weekdaysMin:\"sö_må_ti_on_to_fr_lö\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY-MM-DD\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Idag] LT\",nextDay:\"[Imorgon] LT\",lastDay:\"[Igår] LT\",nextWeek:\"[På] dddd LT\",lastWeek:\"[I] dddd[s] LT\",sameElse:\"L\"},relativeTime:{future:\"om %s\",past:\"för %s sedan\",s:\"några sekunder\",m:\"en minut\",mm:\"%d minuter\",h:\"en timme\",hh:\"%d timmar\",d:\"en dag\",dd:\"%d dagar\",M:\"en månad\",MM:\"%d månader\",y:\"ett år\",yy:\"%d år\"},ordinalParse:/\\d{1,2}(e|a)/,ordinal:function(e){var t=e%10,a=1===~~(e%100/10)?\"e\":1===t?\"a\":2===t?\"a\":\"e\";return e+a},week:{dow:1,doy:4}}),e.defineLocale(\"ta\",{months:\"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்\".split(\"_\"),monthsShort:\"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்\".split(\"_\"),weekdays:\"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை\".split(\"_\"),weekdaysShort:\"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி\".split(\"_\"),weekdaysMin:\"ஞா_தி_செ_பு_வி_வெ_ச\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY, HH:mm\",LLLL:\"dddd, D MMMM YYYY, HH:mm\"},calendar:{sameDay:\"[இன்று] LT\",nextDay:\"[நாளை] LT\",nextWeek:\"dddd, LT\",lastDay:\"[நேற்று] LT\",lastWeek:\"[கடந்த வாரம்] dddd, LT\",sameElse:\"L\"},relativeTime:{future:\"%s இல்\",past:\"%s முன்\",s:\"ஒரு சில விநாடிகள்\",m:\"ஒரு நிமிடம்\",mm:\"%d நிமிடங்கள்\",h:\"ஒரு மணி நேரம்\",hh:\"%d மணி நேரம்\",d:\"ஒரு நாள்\",dd:\"%d நாட்கள்\",M:\"ஒரு மாதம்\",MM:\"%d மாதங்கள்\",y:\"ஒரு வருடம்\",yy:\"%d ஆண்டுகள்\"},ordinalParse:/\\d{1,2}வது/,ordinal:function(e){return e+\"வது\"},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(e,t,a){return 2>e?\" யாமம்\":6>e?\" வைகறை\":10>e?\" காலை\":14>e?\" நண்பகல்\":18>e?\" எற்பாடு\":22>e?\" மாலை\":\" யாமம்\"},meridiemHour:function(e,t){return 12===e&&(e=0),\"யாமம்\"===t?2>e?e:e+12:\"வைகறை\"===t||\"காலை\"===t?e:\"நண்பகல்\"===t&&e>=10?e:e+12},week:{dow:0,doy:6}}),e.defineLocale(\"th\",{months:\"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม\".split(\"_\"),monthsShort:\"มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา\".split(\"_\"),weekdays:\"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์\".split(\"_\"),weekdaysShort:\"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์\".split(\"_\"),weekdaysMin:\"อา._จ._อ._พ._พฤ._ศ._ส.\".split(\"_\"),longDateFormat:{LT:\"H นาฬิกา m นาที\",LTS:\"H นาฬิกา m นาที s วินาที\",L:\"YYYY/MM/DD\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY เวลา H นาฬิกา m นาที\",LLLL:\"วันddddที่ D MMMM YYYY เวลา H นาฬิกา m นาที\"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return\"หลังเที่ยง\"===e},meridiem:function(e,t,a){return 12>e?\"ก่อนเที่ยง\":\"หลังเที่ยง\"},calendar:{sameDay:\"[วันนี้ เวลา] LT\",nextDay:\"[พรุ่งนี้ เวลา] LT\",nextWeek:\"dddd[หน้า เวลา] LT\",lastDay:\"[เมื่อวานนี้ เวลา] LT\",lastWeek:\"[วัน]dddd[ที่แล้ว เวลา] LT\",sameElse:\"L\"},relativeTime:{future:\"อีก %s\",past:\"%sที่แล้ว\",s:\"ไม่กี่วินาที\",m:\"1 นาที\",mm:\"%d นาที\",h:\"1 ชั่วโมง\",hh:\"%d ชั่วโมง\",d:\"1 วัน\",dd:\"%d วัน\",M:\"1 เดือน\",MM:\"%d เดือน\",y:\"1 ปี\",yy:\"%d ปี\"}}),e.defineLocale(\"tl-ph\",{months:\"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre\".split(\"_\"),monthsShort:\"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis\".split(\"_\"),weekdays:\"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado\".split(\"_\"),weekdaysShort:\"Lin_Lun_Mar_Miy_Huw_Biy_Sab\".split(\"_\"),weekdaysMin:\"Li_Lu_Ma_Mi_Hu_Bi_Sab\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"MM/D/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY HH:mm\",LLLL:\"dddd, MMMM DD, YYYY HH:mm\"},calendar:{sameDay:\"[Ngayon sa] LT\",nextDay:\"[Bukas sa] LT\",nextWeek:\"dddd [sa] LT\",lastDay:\"[Kahapon sa] LT\",lastWeek:\"dddd [huling linggo] LT\",sameElse:\"L\"},relativeTime:{future:\"sa loob ng %s\",past:\"%s ang nakalipas\",s:\"ilang segundo\",m:\"isang minuto\",mm:\"%d minuto\",h:\"isang oras\",hh:\"%d oras\",d:\"isang araw\",dd:\"%d araw\",M:\"isang buwan\",MM:\"%d buwan\",y:\"isang taon\",yy:\"%d taon\"},ordinalParse:/\\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}}),{1:\"'inci\",5:\"'inci\",8:\"'inci\",70:\"'inci\",80:\"'inci\",2:\"'nci\",7:\"'nci\",20:\"'nci\",50:\"'nci\",3:\"'üncü\",4:\"'üncü\",100:\"'üncü\",6:\"'ncı\",9:\"'uncu\",10:\"'uncu\",30:\"'uncu\",60:\"'ıncı\",90:\"'ıncı\"}),ha=(e.defineLocale(\"tr\",{months:\"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık\".split(\"_\"),monthsShort:\"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara\".split(\"_\"),weekdays:\"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi\".split(\"_\"),weekdaysShort:\"Paz_Pts_Sal_Çar_Per_Cum_Cts\".split(\"_\"),weekdaysMin:\"Pz_Pt_Sa_Ça_Pe_Cu_Ct\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[bugün saat] LT\",nextDay:\"[yarın saat] LT\",nextWeek:\"[haftaya] dddd [saat] LT\",lastDay:\"[dün] LT\",lastWeek:\"[geçen hafta] dddd [saat] LT\",sameElse:\"L\"},relativeTime:{future:\"%s sonra\",past:\"%s önce\",s:\"birkaç saniye\",m:\"bir dakika\",mm:\"%d dakika\",h:\"bir saat\",hh:\"%d saat\",d:\"bir gün\",dd:\"%d gün\",M:\"bir ay\",MM:\"%d ay\",y:\"bir yıl\",yy:\"%d yıl\"},ordinalParse:/\\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,ordinal:function(e){if(0===e)return e+\"'ıncı\";var t=e%10,n=e%100-t,a=e>=100?100:null;return e+(tt[t]||tt[n]||tt[a])},week:{dow:1,doy:7}}),e.defineLocale(\"tzl\",{months:\"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar\".split(\"_\"),monthsShort:\"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec\".split(\"_\"),weekdays:\"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi\".split(\"_\"),weekdaysShort:\"Súl_Lún_Mai_Már_Xhú_Vié_Sát\".split(\"_\"),weekdaysMin:\"Sú_Lú_Ma_Má_Xh_Vi_Sá\".split(\"_\"),longDateFormat:{LT:\"HH.mm\",LTS:\"LT.ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM [dallas] YYYY\",LLL:\"D. MMMM [dallas] YYYY LT\",LLLL:\"dddd, [li] D. MMMM [dallas] YYYY LT\"},meridiem:function(e,t,a){return e>11?a?\"d'o\":\"D'O\":a?\"d'a\":\"D'A\"},calendar:{sameDay:\"[oxhi à] LT\",nextDay:\"[demà à] LT\",nextWeek:\"dddd [à] LT\",lastDay:\"[ieiri à] LT\",lastWeek:\"[sür el] dddd [lasteu à] LT\",sameElse:\"L\"},relativeTime:{future:\"osprei %s\",past:\"ja%s\",s:w,m:w,mm:w,h:w,hh:w,d:w,dd:w,M:w,MM:w,y:w,yy:w},ordinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),e.defineLocale(\"tzm-latn\",{months:\"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir\".split(\"_\"),monthsShort:\"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir\".split(\"_\"),weekdays:\"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas\".split(\"_\"),weekdaysShort:\"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas\".split(\"_\"),weekdaysMin:\"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[asdkh g] LT\",nextDay:\"[aska g] LT\",nextWeek:\"dddd [g] LT\",lastDay:\"[assant g] LT\",lastWeek:\"dddd [g] LT\",sameElse:\"L\"},relativeTime:{future:\"dadkh s yan %s\",past:\"yan %s\",s:\"imik\",m:\"minuḍ\",mm:\"%d minuḍ\",h:\"saɛa\",hh:\"%d tassaɛin\",d:\"ass\",dd:\"%d ossan\",M:\"ayowr\",MM:\"%d iyyirn\",y:\"asgas\",yy:\"%d isgasn\"},week:{dow:6,doy:12}}),e.defineLocale(\"tzm\",{months:\"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ\".split(\"_\"),monthsShort:\"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ\".split(\"_\"),weekdays:\"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ\".split(\"_\"),weekdaysShort:\"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ\".split(\"_\"),weekdaysMin:\"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[ⴰⵙⴷⵅ ⴴ] LT\",nextDay:\"[ⴰⵙⴽⴰ ⴴ] LT\",nextWeek:\"dddd [ⴴ] LT\",lastDay:\"[ⴰⵚⴰⵏⵜ ⴴ] LT\",lastWeek:\"dddd [ⴴ] LT\",sameElse:\"L\"},relativeTime:{future:\"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s\",past:\"ⵢⴰⵏ %s\",s:\"ⵉⵎⵉⴽ\",m:\"ⵎⵉⵏⵓⴺ\",mm:\"%d ⵎⵉⵏⵓⴺ\",h:\"ⵙⴰⵄⴰ\",hh:\"%d ⵜⴰⵙⵙⴰⵄⵉⵏ\",d:\"ⴰⵙⵙ\",dd:\"%d oⵙⵙⴰⵏ\",M:\"ⴰⵢoⵓⵔ\",MM:\"%d ⵉⵢⵢⵉⵔⵏ\",y:\"ⴰⵙⴳⴰⵙ\",yy:\"%d ⵉⵙⴳⴰⵙⵏ\"},week:{dow:6,doy:12}}),e.defineLocale(\"uk\",{months:Wn,monthsShort:\"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд\".split(\"_\"),weekdays:Un,weekdaysShort:\"нд_пн_вт_ср_чт_пт_сб\".split(\"_\"),weekdaysMin:\"нд_пн_вт_ср_чт_пт_сб\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY р.\",LLL:\"D MMMM YYYY р., HH:mm\",LLLL:\"dddd, D MMMM YYYY р., HH:mm\"},calendar:{sameDay:de(\"[Сьогодні \"),nextDay:de(\"[Завтра \"),lastDay:de(\"[Вчора \"),nextWeek:de(\"[У] dddd [\"),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return de(\"[Минулої] dddd [\").call(this);case 1:case 2:case 4:return de(\"[Минулого] dddd [\").call(this)}},sameElse:\"L\"},relativeTime:{future:\"за %s\",past:\"%s тому\",s:\"декілька секунд\",m:me,mm:me,h:\"годину\",hh:me,d:\"день\",dd:me,M:\"місяць\",MM:me,y:\"рік\",yy:me},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,t,a){return 4>e?\"ночі\":12>e?\"ранку\":17>e?\"дня\":\"вечора\"},ordinalParse:/\\d{1,2}-(й|го)/,ordinal:function(e,t){switch(t){case\"M\":case\"d\":case\"DDD\":case\"w\":case\"W\":return e+\"-й\";case\"D\":return e+\"-го\";default:return e}},week:{dow:1,doy:7}}),e.defineLocale(\"uz\",{months:\"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь\".split(\"_\"),monthsShort:\"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек\".split(\"_\"),weekdays:\"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба\".split(\"_\"),weekdaysShort:\"Якш_Душ_Сеш_Чор_Пай_Жум_Шан\".split(\"_\"),weekdaysMin:\"Як_Ду_Се_Чо_Па_Жу_Ша\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"D MMMM YYYY, dddd HH:mm\"},calendar:{sameDay:\"[Бугун соат] LT [да]\",nextDay:\"[Эртага] LT [да]\",nextWeek:\"dddd [куни соат] LT [да]\",lastDay:\"[Кеча соат] LT [да]\",lastWeek:\"[Утган] dddd [куни соат] LT [да]\",sameElse:\"L\"},relativeTime:{future:\"Якин %s ичида\",past:\"Бир неча %s олдин\",s:\"фурсат\",m:\"бир дакика\",mm:\"%d дакика\",h:\"бир соат\",hh:\"%d соат\",d:\"бир кун\",dd:\"%d кун\",M:\"бир ой\",MM:\"%d ой\",y:\"бир йил\",yy:\"%d йил\"},week:{dow:1,doy:7}}),e.defineLocale(\"vi\",{months:\"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12\".split(\"_\"),monthsShort:\"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12\".split(\"_\"),weekdays:\"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy\".split(\"_\"),weekdaysShort:\"CN_T2_T3_T4_T5_T6_T7\".split(\"_\"),weekdaysMin:\"CN_T2_T3_T4_T5_T6_T7\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM [năm] YYYY\",LLL:\"D MMMM [năm] YYYY HH:mm\",LLLL:\"dddd, D MMMM [năm] YYYY HH:mm\",l:\"DD/M/YYYY\",ll:\"D MMM YYYY\",lll:\"D MMM YYYY HH:mm\",llll:\"ddd, D MMM YYYY HH:mm\"},calendar:{sameDay:\"[Hôm nay lúc] LT\",nextDay:\"[Ngày mai lúc] LT\",nextWeek:\"dddd [tuần tới lúc] LT\",lastDay:\"[Hôm qua lúc] LT\",lastWeek:\"dddd [tuần rồi lúc] LT\",sameElse:\"L\"},relativeTime:{future:\"%s tới\",past:\"%s trước\",s:\"vài giây\",m:\"một phút\",mm:\"%d phút\",h:\"một giờ\",hh:\"%d giờ\",d:\"một ngày\",dd:\"%d ngày\",M:\"một tháng\",MM:\"%d tháng\",y:\"một năm\",yy:\"%d năm\"},ordinalParse:/\\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}}),e.defineLocale(\"zh-cn\",{months:\"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月\".split(\"_\"),monthsShort:\"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月\".split(\"_\"),weekdays:\"星期日_星期一_星期二_星期三_星期四_星期五_星期六\".split(\"_\"),weekdaysShort:\"周日_周一_周二_周三_周四_周五_周六\".split(\"_\"),weekdaysMin:\"日_一_二_三_四_五_六\".split(\"_\"),longDateFormat:{LT:\"Ah点mm分\",LTS:\"Ah点m分s秒\",L:\"YYYY-MM-DD\",LL:\"YYYY年MMMD日\",LLL:\"YYYY年MMMD日Ah点mm分\",LLLL:\"YYYY年MMMD日ddddAh点mm分\",l:\"YYYY-MM-DD\",ll:\"YYYY年MMMD日\",lll:\"YYYY年MMMD日Ah点mm分\",llll:\"YYYY年MMMD日ddddAh点mm分\"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),\"凌晨\"===t||\"早上\"===t||\"上午\"===t?e:\"下午\"===t||\"晚上\"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,a){var n=100*e+t;return 600>n?\"凌晨\":900>n?\"早上\":1130>n?\"上午\":1230>n?\"中午\":1800>n?\"下午\":\"晚上\"},calendar:{sameDay:function(){return 0===this.minutes()?\"[今天]Ah[点整]\":\"[今天]LT\"},nextDay:function(){return 0===this.minutes()?\"[明天]Ah[点整]\":\"[明天]LT\"},lastDay:function(){return 0===this.minutes()?\"[昨天]Ah[点整]\":\"[昨天]LT\"},nextWeek:function(){var a,t;return a=e().startOf(\"week\"),t=this.unix()-a.unix()>=604800?\"[下]\":\"[本]\",0===this.minutes()?t+\"dddAh点整\":t+\"dddAh点mm\"},lastWeek:function(){var a,t;return a=e().startOf(\"week\"),t=this.unix()<a.unix()?\"[上]\":\"[本]\",0===this.minutes()?t+\"dddAh点整\":t+\"dddAh点mm\"},sameElse:\"LL\"},ordinalParse:/\\d{1,2}(日|月|周)/,ordinal:function(e,t){switch(t){case\"d\":case\"D\":case\"DDD\":return e+\"日\";case\"M\":return e+\"月\";case\"w\":case\"W\":return e+\"周\";default:return e}},relativeTime:{future:\"%s内\",past:\"%s前\",s:\"几秒\",m:\"1 分钟\",mm:\"%d 分钟\",h:\"1 小时\",hh:\"%d 小时\",d:\"1 天\",dd:\"%d 天\",M:\"1 个月\",MM:\"%d 个月\",y:\"1 年\",yy:\"%d 年\"},week:{dow:1,doy:4}}),e.defineLocale(\"zh-tw\",{months:\"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月\".split(\"_\"),monthsShort:\"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月\".split(\"_\"),weekdays:\"星期日_星期一_星期二_星期三_星期四_星期五_星期六\".split(\"_\"),weekdaysShort:\"週日_週一_週二_週三_週四_週五_週六\".split(\"_\"),weekdaysMin:\"日_一_二_三_四_五_六\".split(\"_\"),longDateFormat:{LT:\"Ah點mm分\",LTS:\"Ah點m分s秒\",L:\"YYYY年MMMD日\",LL:\"YYYY年MMMD日\",LLL:\"YYYY年MMMD日Ah點mm分\",LLLL:\"YYYY年MMMD日ddddAh點mm分\",l:\"YYYY年MMMD日\",ll:\"YYYY年MMMD日\",lll:\"YYYY年MMMD日Ah點mm分\",llll:\"YYYY年MMMD日ddddAh點mm分\"},meridiemParse:/早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),\"早上\"===t||\"上午\"===t?e:\"中午\"===t?e>=11?e:e+12:\"下午\"===t||\"晚上\"===t?e+12:void 0},meridiem:function(e,t,a){var n=100*e+t;return 900>n?\"早上\":1130>n?\"上午\":1230>n?\"中午\":1800>n?\"下午\":\"晚上\"},calendar:{sameDay:\"[今天]LT\",nextDay:\"[明天]LT\",nextWeek:\"[下]ddddLT\",lastDay:\"[昨天]LT\",lastWeek:\"[上]ddddLT\",sameElse:\"L\"},ordinalParse:/\\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case\"d\":case\"D\":case\"DDD\":return e+\"日\";case\"M\":return e+\"月\";case\"w\":case\"W\":return e+\"週\";default:return e}},relativeTime:{future:\"%s內\",past:\"%s前\",s:\"幾秒\",m:\"一分鐘\",mm:\"%d分鐘\",h:\"一小時\",hh:\"%d小時\",d:\"一天\",dd:\"%d天\",M:\"一個月\",MM:\"%d個月\",y:\"一年\",yy:\"%d年\"}}),e);return ha.locale(\"en\"),ha});\n/*!\n * Bootstrap v3.3.4 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\nif(typeof jQuery==='undefined'){throw new Error('Bootstrap\\'s JavaScript requires jQuery')};+function(t){'use strict';var e=t.fn.jquery.split(' ')[0].split('.');if((e[0]<2&&e[1]<9)||(e[0]==1&&e[1]==9&&e[2]<1)){throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher')}}(jQuery);+function(t){'use strict';function e(){var i=document.createElement('bootstrap'),e={WebkitTransition:'webkitTransitionEnd',MozTransition:'transitionend',OTransition:'oTransitionEnd otransitionend',transition:'transitionend'};for(var t in e){if(i.style[t]!==undefined){return{end:e[t]}}};return!1};t.fn.emulateTransitionEnd=function(e){var i=!1,o=this;t(this).one('bsTransitionEnd',function(){i=!0});var n=function(){if(!i)t(o).trigger(t.support.transition.end)};setTimeout(n,e);return this};t(function(){t.support.transition=e();if(!t.support.transition)return;t.event.special.bsTransitionEnd={bindType:t.support.transition.end,delegateType:t.support.transition.end,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}}})}(jQuery);+function(t){'use strict';var i='[data-dismiss=\"alert\"]',e=function(e){t(e).on('click',i,this.close)};e.VERSION='3.3.4';e.TRANSITION_DURATION=150;e.prototype.close=function(i){var s=t(this),n=s.attr('data-target');if(!n){n=s.attr('href');n=n&&n.replace(/.*(?=#[^\\s]*$)/,'')};var o=t(n);if(i)i.preventDefault();if(!o.length){o=s.closest('.alert')};o.trigger(i=t.Event('close.bs.alert'));if(i.isDefaultPrevented())return;o.removeClass('in');function r(){o.detach().trigger('closed.bs.alert').remove()};t.support.transition&&o.hasClass('fade')?o.one('bsTransitionEnd',r).emulateTransitionEnd(e.TRANSITION_DURATION):r()};function o(i){return this.each(function(){var n=t(this),o=n.data('bs.alert');if(!o)n.data('bs.alert',(o=new e(this)));if(typeof i=='string')o[i].call(n)})};var n=t.fn.alert;t.fn.alert=o;t.fn.alert.Constructor=e;t.fn.alert.noConflict=function(){t.fn.alert=n;return this};t(document).on('click.bs.alert.data-api',i,e.prototype.close)}(jQuery);+function(t){'use strict';var e=function(i,o){this.$element=t(i);this.options=t.extend({},e.DEFAULTS,o);this.isLoading=!1};e.VERSION='3.3.4';e.DEFAULTS={loadingText:'loading...'};e.prototype.setState=function(e){var o='disabled',i=this.$element,s=i.is('input')?'val':'html',n=i.data();e=e+'Text';if(n.resetText==null)i.data('resetText',i[s]());setTimeout(t.proxy(function(){i[s](n[e]==null?this.options[e]:n[e]);if(e=='loadingText'){this.isLoading=!0;i.addClass(o).attr(o,o)}\nelse if(this.isLoading){this.isLoading=!1;i.removeClass(o).removeAttr(o)}},this),0)};e.prototype.toggle=function(){var e=!0,i=this.$element.closest('[data-toggle=\"buttons\"]');if(i.length){var t=this.$element.find('input');if(t.prop('type')=='radio'){if(t.prop('checked')&&this.$element.hasClass('active'))e=!1;else i.find('.active').removeClass('active')};if(e)t.prop('checked',!this.$element.hasClass('active')).trigger('change')}\nelse{this.$element.attr('aria-pressed',!this.$element.hasClass('active'))};if(e)this.$element.toggleClass('active')};function i(i){return this.each(function(){var n=t(this),o=n.data('bs.button'),s=typeof i=='object'&&i;if(!o)n.data('bs.button',(o=new e(this,s)));if(i=='toggle')o.toggle();else if(i)o.setState(i)})};var o=t.fn.button;t.fn.button=i;t.fn.button.Constructor=e;t.fn.button.noConflict=function(){t.fn.button=o;return this};t(document).on('click.bs.button.data-api','[data-toggle^=\"button\"]',function(e){var o=t(e.target);if(!o.hasClass('btn'))o=o.closest('.btn');i.call(o,'toggle');e.preventDefault()}).on('focus.bs.button.data-api blur.bs.button.data-api','[data-toggle^=\"button\"]',function(e){t(e.target).closest('.btn').toggleClass('focus',/^focus(in)?$/.test(e.type))})}(jQuery);+function(t){'use strict';var e=function(e,i){this.$element=t(e);this.$indicators=this.$element.find('.carousel-indicators');this.options=i;this.paused=null;this.sliding=null;this.interval=null;this.$active=null;this.$items=null;this.options.keyboard&&this.$element.on('keydown.bs.carousel',t.proxy(this.keydown,this));this.options.pause=='hover'&&!('ontouchstart' in document.documentElement)&&this.$element.on('mouseenter.bs.carousel',t.proxy(this.pause,this)).on('mouseleave.bs.carousel',t.proxy(this.cycle,this))};e.VERSION='3.3.4';e.TRANSITION_DURATION=600;e.DEFAULTS={interval:5000,pause:'hover',wrap:!0,keyboard:!0};e.prototype.keydown=function(t){if(/input|textarea/i.test(t.target.tagName))return;switch(t.which){case 37:this.prev();break;case 39:this.next();break;default:return};t.preventDefault()};e.prototype.cycle=function(e){e||(this.paused=!1);this.interval&&clearInterval(this.interval);this.options.interval&&!this.paused&&(this.interval=setInterval(t.proxy(this.next,this),this.options.interval));return this};e.prototype.getItemIndex=function(t){this.$items=t.parent().children('.item');return this.$items.index(t||this.$active)};e.prototype.getItemForDirection=function(t,e){var i=this.getItemIndex(e),o=(t=='prev'&&i===0)||(t=='next'&&i==(this.$items.length-1));if(o&&!this.options.wrap)return e;var n=t=='prev'?-1:1,s=(i+n)%this.$items.length;return this.$items.eq(s)};e.prototype.to=function(t){var i=this,e=this.getItemIndex(this.$active=this.$element.find('.item.active'));if(t>(this.$items.length-1)||t<0)return;if(this.sliding)return this.$element.one('slid.bs.carousel',function(){i.to(t)});if(e==t)return this.pause().cycle();return this.slide(t>e?'next':'prev',this.$items.eq(t))};e.prototype.pause=function(e){e||(this.paused=!0);if(this.$element.find('.next, .prev').length&&t.support.transition){this.$element.trigger(t.support.transition.end);this.cycle(!0)};this.interval=clearInterval(this.interval);return this};e.prototype.next=function(){if(this.sliding)return;return this.slide('next')};e.prototype.prev=function(){if(this.sliding)return;return this.slide('prev')};e.prototype.slide=function(i,o){var r=this.$element.find('.item.active'),n=o||this.getItemForDirection(i,r),l=this.interval,s=i=='next'?'left':'right',a=this;if(n.hasClass('active'))return(this.sliding=!1);var p=n[0],h=t.Event('slide.bs.carousel',{relatedTarget:p,direction:s});this.$element.trigger(h);if(h.isDefaultPrevented())return;this.sliding=!0;l&&this.pause();if(this.$indicators.length){this.$indicators.find('.active').removeClass('active');var f=t(this.$indicators.children()[this.getItemIndex(n)]);f&&f.addClass('active')};var d=t.Event('slid.bs.carousel',{relatedTarget:p,direction:s});if(t.support.transition&&this.$element.hasClass('slide')){n.addClass(i);n[0].offsetWidth;r.addClass(s);n.addClass(s);r.one('bsTransitionEnd',function(){n.removeClass([i,s].join(' ')).addClass('active');r.removeClass(['active',s].join(' '));a.sliding=!1;setTimeout(function(){a.$element.trigger(d)},0)}).emulateTransitionEnd(e.TRANSITION_DURATION)}\nelse{r.removeClass('active');n.addClass('active');this.sliding=!1;this.$element.trigger(d)};l&&this.cycle();return this};function i(i){return this.each(function(){var s=t(this),o=s.data('bs.carousel'),n=t.extend({},e.DEFAULTS,s.data(),typeof i=='object'&&i);var r=typeof i=='string'?i:n.slide;if(!o)s.data('bs.carousel',(o=new e(this,n)));if(typeof i=='number')o.to(i);else if(r)o[r]();else if(n.interval)o.pause().cycle()})};var n=t.fn.carousel;t.fn.carousel=i;t.fn.carousel.Constructor=e;t.fn.carousel.noConflict=function(){t.fn.carousel=n;return this};var o=function(e){var a,o=t(this),n=t(o.attr('data-target')||(a=o.attr('href'))&&a.replace(/.*(?=#[^\\s]+$)/,''));if(!n.hasClass('carousel'))return;var r=t.extend({},n.data(),o.data());var s=o.attr('data-slide-to');if(s)r.interval=!1;i.call(n,r);if(s){n.data('bs.carousel').to(s)};e.preventDefault()};t(document).on('click.bs.carousel.data-api','[data-slide]',o).on('click.bs.carousel.data-api','[data-slide-to]',o);t(window).on('load',function(){t('[data-ride=\"carousel\"]').each(function(){var e=t(this);i.call(e,e.data())})})}(jQuery);+function(t){'use strict';var e=function(i,o){this.$element=t(i);this.options=t.extend({},e.DEFAULTS,o);this.$trigger=t('[data-toggle=\"collapse\"][href=\"#'+i.id+'\"],[data-toggle=\"collapse\"][data-target=\"#'+i.id+'\"]');this.transitioning=null;if(this.options.parent){this.$parent=this.getParent()}\nelse{this.addAriaAndCollapsedClass(this.$element,this.$trigger)};if(this.options.toggle)this.toggle()};e.VERSION='3.3.4';e.TRANSITION_DURATION=350;e.DEFAULTS={toggle:!0};e.prototype.dimension=function(){var t=this.$element.hasClass('width');return t?'width':'height'};e.prototype.show=function(){if(this.transitioning||this.$element.hasClass('in'))return;var n,o=this.$parent&&this.$parent.children('.panel').children('.in, .collapsing');if(o&&o.length){n=o.data('bs.collapse');if(n&&n.transitioning)return};var r=t.Event('show.bs.collapse');this.$element.trigger(r);if(r.isDefaultPrevented())return;if(o&&o.length){i.call(o,'hide');n||o.data('bs.collapse',null)};var s=this.dimension();this.$element.removeClass('collapse').addClass('collapsing')[s](0).attr('aria-expanded',!0);this.$trigger.removeClass('collapsed').attr('aria-expanded',!0);this.transitioning=1;var a=function(){this.$element.removeClass('collapsing').addClass('collapse in')[s]('');this.transitioning=0;this.$element.trigger('shown.bs.collapse')};if(!t.support.transition)return a.call(this);var l=t.camelCase(['scroll',s].join('-'));this.$element.one('bsTransitionEnd',t.proxy(a,this)).emulateTransitionEnd(e.TRANSITION_DURATION)[s](this.$element[0][l])};e.prototype.hide=function(){if(this.transitioning||!this.$element.hasClass('in'))return;var o=t.Event('hide.bs.collapse');this.$element.trigger(o);if(o.isDefaultPrevented())return;var i=this.dimension();this.$element[i](this.$element[i]())[0].offsetHeight;this.$element.addClass('collapsing').removeClass('collapse in').attr('aria-expanded',!1);this.$trigger.addClass('collapsed').attr('aria-expanded',!1);this.transitioning=1;var n=function(){this.transitioning=0;this.$element.removeClass('collapsing').addClass('collapse').trigger('hidden.bs.collapse')};if(!t.support.transition)return n.call(this);this.$element[i](0).one('bsTransitionEnd',t.proxy(n,this)).emulateTransitionEnd(e.TRANSITION_DURATION)};e.prototype.toggle=function(){this[this.$element.hasClass('in')?'hide':'show']()};e.prototype.getParent=function(){return t(this.options.parent).find('[data-toggle=\"collapse\"][data-parent=\"'+this.options.parent+'\"]').each(t.proxy(function(e,i){var n=t(i);this.addAriaAndCollapsedClass(o(n),n)},this)).end()};e.prototype.addAriaAndCollapsedClass=function(t,e){var i=t.hasClass('in');t.attr('aria-expanded',i);e.toggleClass('collapsed',!i).attr('aria-expanded',i)};function o(e){var i,o=e.attr('data-target')||(i=e.attr('href'))&&i.replace(/.*(?=#[^\\s]+$)/,'');return t(o)};function i(i){return this.each(function(){var s=t(this),o=s.data('bs.collapse'),n=t.extend({},e.DEFAULTS,s.data(),typeof i=='object'&&i);if(!o&&n.toggle&&/show|hide/.test(i))n.toggle=!1;if(!o)s.data('bs.collapse',(o=new e(this,n)));if(typeof i=='string')o[i]()})};var n=t.fn.collapse;t.fn.collapse=i;t.fn.collapse.Constructor=e;t.fn.collapse.noConflict=function(){t.fn.collapse=n;return this};t(document).on('click.bs.collapse.data-api','[data-toggle=\"collapse\"]',function(e){var n=t(this);if(!n.attr('data-target'))e.preventDefault();var s=o(n),r=s.data('bs.collapse'),a=r?'toggle':n.data();i.call(s,a)})}(jQuery);+function(t){'use strict';var a='.dropdown-backdrop',i='[data-toggle=\"dropdown\"]',e=function(e){t(e).on('click.bs.dropdown',this.toggle)};e.VERSION='3.3.4';e.prototype.toggle=function(e){var s=t(this);if(s.is('.disabled, :disabled'))return;var i=o(s),a=i.hasClass('open');n();if(!a){if('ontouchstart' in document.documentElement&&!i.closest('.navbar-nav').length){t('<div class=\"dropdown-backdrop\"/>').insertAfter(t(this)).on('click',n)};var r={relatedTarget:this};i.trigger(e=t.Event('show.bs.dropdown',r));if(e.isDefaultPrevented())return;s.trigger('focus').attr('aria-expanded','true');i.toggleClass('open').trigger('shown.bs.dropdown',r)};return!1};e.prototype.keydown=function(e){if(!/(38|40|27|32)/.test(e.which)||/input|textarea/i.test(e.target.tagName))return;var r=t(this);e.preventDefault();e.stopPropagation();if(r.is('.disabled, :disabled'))return;var a=o(r),h=a.hasClass('open');if((!h&&e.which!=27)||(h&&e.which==27)){if(e.which==27)a.find(i).trigger('focus');return r.trigger('click')};var l=' li:not(.disabled):visible a',s=a.find('[role=\"menu\"]'+l+', [role=\"listbox\"]'+l);if(!s.length)return;var n=s.index(e.target);if(e.which==38&&n>0)n--;if(e.which==40&&n<s.length-1)n++;if(!~n)n=0;s.eq(n).trigger('focus')};function n(e){if(e&&e.which===3)return;t(a).remove();t(i).each(function(){var s=t(this),i=o(s),n={relatedTarget:this};if(!i.hasClass('open'))return;i.trigger(e=t.Event('hide.bs.dropdown',n));if(e.isDefaultPrevented())return;s.attr('aria-expanded','false');i.removeClass('open').trigger('hidden.bs.dropdown',n)})};function o(e){var i=e.attr('data-target');if(!i){i=e.attr('href');i=i&&/#[A-Za-z]/.test(i)&&i.replace(/.*(?=#[^\\s]*$)/,'')};var o=i&&t(i);return o&&o.length?o:e.parent()};function s(i){return this.each(function(){var n=t(this),o=n.data('bs.dropdown');if(!o)n.data('bs.dropdown',(o=new e(this)));if(typeof i=='string')o[i].call(n)})};var r=t.fn.dropdown;t.fn.dropdown=s;t.fn.dropdown.Constructor=e;t.fn.dropdown.noConflict=function(){t.fn.dropdown=r;return this};t(document).on('click.bs.dropdown.data-api',n).on('click.bs.dropdown.data-api','.dropdown form',function(t){t.stopPropagation()}).on('click.bs.dropdown.data-api',i,e.prototype.toggle).on('keydown.bs.dropdown.data-api',i,e.prototype.keydown).on('keydown.bs.dropdown.data-api','[role=\"menu\"]',e.prototype.keydown).on('keydown.bs.dropdown.data-api','[role=\"listbox\"]',e.prototype.keydown)}(jQuery);+function(t){'use strict';var e=function(e,i){this.options=i;this.$body=t(document.body);this.$element=t(e);this.$dialog=this.$element.find('.modal-dialog');this.$backdrop=null;this.isShown=null;this.originalBodyPad=null;this.scrollbarWidth=0;this.ignoreBackdropClick=!1;if(this.options.remote){this.$element.find('.modal-content').load(this.options.remote,t.proxy(function(){this.$element.trigger('loaded.bs.modal')},this))}};e.VERSION='3.3.4';e.TRANSITION_DURATION=300;e.BACKDROP_TRANSITION_DURATION=150;e.DEFAULTS={backdrop:!0,keyboard:!0,show:!0};e.prototype.toggle=function(t){return this.isShown?this.hide():this.show(t)};e.prototype.show=function(i){var o=this,n=t.Event('show.bs.modal',{relatedTarget:i});this.$element.trigger(n);if(this.isShown||n.isDefaultPrevented())return;this.isShown=!0;this.checkScrollbar();this.setScrollbar();this.$body.addClass('modal-open');this.escape();this.resize();this.$element.on('click.dismiss.bs.modal','[data-dismiss=\"modal\"]',t.proxy(this.hide,this));this.$dialog.on('mousedown.dismiss.bs.modal',function(){o.$element.one('mouseup.dismiss.bs.modal',function(e){if(t(e.target).is(o.$element))o.ignoreBackdropClick=!0})});this.backdrop(function(){var n=t.support.transition&&o.$element.hasClass('fade');if(!o.$element.parent().length){o.$element.appendTo(o.$body)};o.$element.show().scrollTop(0);o.adjustDialog();if(n){o.$element[0].offsetWidth};o.$element.addClass('in').attr('aria-hidden',!1);o.enforceFocus();var s=t.Event('shown.bs.modal',{relatedTarget:i});n?o.$dialog.one('bsTransitionEnd',function(){o.$element.trigger('focus').trigger(s)}).emulateTransitionEnd(e.TRANSITION_DURATION):o.$element.trigger('focus').trigger(s)})};e.prototype.hide=function(i){if(i)i.preventDefault();i=t.Event('hide.bs.modal');this.$element.trigger(i);if(!this.isShown||i.isDefaultPrevented())return;this.isShown=!1;this.escape();this.resize();t(document).off('focusin.bs.modal');this.$element.removeClass('in').attr('aria-hidden',!0).off('click.dismiss.bs.modal').off('mouseup.dismiss.bs.modal');this.$dialog.off('mousedown.dismiss.bs.modal');t.support.transition&&this.$element.hasClass('fade')?this.$element.one('bsTransitionEnd',t.proxy(this.hideModal,this)).emulateTransitionEnd(e.TRANSITION_DURATION):this.hideModal()};e.prototype.enforceFocus=function(){t(document).off('focusin.bs.modal').on('focusin.bs.modal',t.proxy(function(t){if(this.$element[0]!==t.target&&!this.$element.has(t.target).length){this.$element.trigger('focus')}},this))};e.prototype.escape=function(){if(this.isShown&&this.options.keyboard){this.$element.on('keydown.dismiss.bs.modal',t.proxy(function(t){t.which==27&&this.hide()},this))}\nelse if(!this.isShown){this.$element.off('keydown.dismiss.bs.modal')}};e.prototype.resize=function(){if(this.isShown){t(window).on('resize.bs.modal',t.proxy(this.handleUpdate,this))}\nelse{t(window).off('resize.bs.modal')}};e.prototype.hideModal=function(){var t=this;this.$element.hide();this.backdrop(function(){t.$body.removeClass('modal-open');t.resetAdjustments();t.resetScrollbar();t.$element.trigger('hidden.bs.modal')})};e.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove();this.$backdrop=null};e.prototype.backdrop=function(i){var r=this,o=this.$element.hasClass('fade')?'fade':'';if(this.isShown&&this.options.backdrop){var n=t.support.transition&&o;this.$backdrop=t('<div class=\"modal-backdrop '+o+'\" />').appendTo(this.$body);this.$element.on('click.dismiss.bs.modal',t.proxy(function(t){if(this.ignoreBackdropClick){this.ignoreBackdropClick=!1;return};if(t.target!==t.currentTarget)return;this.options.backdrop=='static'?this.$element[0].focus():this.hide()},this));if(n)this.$backdrop[0].offsetWidth;this.$backdrop.addClass('in');if(!i)return;n?this.$backdrop.one('bsTransitionEnd',i).emulateTransitionEnd(e.BACKDROP_TRANSITION_DURATION):i()}\nelse if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass('in');var s=function(){r.removeBackdrop();i&&i()};t.support.transition&&this.$element.hasClass('fade')?this.$backdrop.one('bsTransitionEnd',s).emulateTransitionEnd(e.BACKDROP_TRANSITION_DURATION):s()}\nelse if(i){i()}};e.prototype.handleUpdate=function(){this.adjustDialog()};e.prototype.adjustDialog=function(){var t=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&t?this.scrollbarWidth:'',paddingRight:this.bodyIsOverflowing&&!t?this.scrollbarWidth:''})};e.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:'',paddingRight:''})};e.prototype.checkScrollbar=function(){var t=window.innerWidth;if(!t){var e=document.documentElement.getBoundingClientRect();t=e.right-Math.abs(e.left)};this.bodyIsOverflowing=document.body.clientWidth<t;this.scrollbarWidth=this.measureScrollbar()};e.prototype.setScrollbar=function(){var t=parseInt((this.$body.css('padding-right')||0),10);this.originalBodyPad=document.body.style.paddingRight||'';if(this.bodyIsOverflowing)this.$body.css('padding-right',t+this.scrollbarWidth)};e.prototype.resetScrollbar=function(){this.$body.css('padding-right',this.originalBodyPad)};e.prototype.measureScrollbar=function(){var t=document.createElement('div');t.className='modal-scrollbar-measure';this.$body.append(t);var e=t.offsetWidth-t.clientWidth;this.$body[0].removeChild(t);return e};function i(i,o){return this.each(function(){var s=t(this),n=s.data('bs.modal'),r=t.extend({},e.DEFAULTS,s.data(),typeof i=='object'&&i);if(!n)s.data('bs.modal',(n=new e(this,r)));if(typeof i=='string')n[i](o);else if(r.show)n.show(o)})};var o=t.fn.modal;t.fn.modal=i;t.fn.modal.Constructor=e;t.fn.modal.noConflict=function(){t.fn.modal=o;return this};t(document).on('click.bs.modal.data-api','[data-toggle=\"modal\"]',function(e){var o=t(this),s=o.attr('href'),n=t(o.attr('data-target')||(s&&s.replace(/.*(?=#[^\\s]+$)/,''))),r=n.data('bs.modal')?'toggle':t.extend({remote:!/#/.test(s)&&s},n.data(),o.data());if(o.is('a'))e.preventDefault();n.one('show.bs.modal',function(t){if(t.isDefaultPrevented())return n.one('hidden.bs.modal',function(){o.is(':visible')&&o.trigger('focus')})});i.call(n,r,this)})}(jQuery);+function(t){'use strict';var e=function(t,e){this.type=null;this.options=null;this.enabled=null;this.timeout=null;this.hoverState=null;this.$element=null;this.init('tooltip',t,e)};e.VERSION='3.3.4';e.TRANSITION_DURATION=150;e.DEFAULTS={animation:!0,placement:'top',selector:!1,template:'<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',trigger:'hover focus',title:'',delay:0,html:!1,container:!1,viewport:{selector:'body',padding:0}};e.prototype.init=function(e,i,o){this.enabled=!0;this.type=e;this.$element=t(i);this.options=this.getOptions(o);this.$viewport=this.options.viewport&&t(this.options.viewport.selector||this.options.viewport);if(this.$element[0]instanceof document.constructor&&!this.options.selector){throw new Error('`selector` option must be specified when initializing '+this.type+' on the window.document object!')};var s=this.options.trigger.split(' ');for(var r=s.length;r--;){var n=s[r];if(n=='click'){this.$element.on('click.'+this.type,this.options.selector,t.proxy(this.toggle,this))}\nelse if(n!='manual'){var a=n=='hover'?'mouseenter':'focusin',l=n=='hover'?'mouseleave':'focusout';this.$element.on(a+'.'+this.type,this.options.selector,t.proxy(this.enter,this));this.$element.on(l+'.'+this.type,this.options.selector,t.proxy(this.leave,this))}};this.options.selector?(this._options=t.extend({},this.options,{trigger:'manual',selector:''})):this.fixTitle()};e.prototype.getDefaults=function(){return e.DEFAULTS};e.prototype.getOptions=function(e){e=t.extend({},this.getDefaults(),this.$element.data(),e);if(e.delay&&typeof e.delay=='number'){e.delay={show:e.delay,hide:e.delay}};return e};e.prototype.getDelegateOptions=function(){var e={};var i=this.getDefaults();this._options&&t.each(this._options,function(t,o){if(i[t]!=o)e[t]=o});return e};e.prototype.enter=function(e){var i=e instanceof this.constructor?e:t(e.currentTarget).data('bs.'+this.type);if(i&&i.$tip&&i.$tip.is(':visible')){i.hoverState='in';return};if(!i){i=new this.constructor(e.currentTarget,this.getDelegateOptions());t(e.currentTarget).data('bs.'+this.type,i)};clearTimeout(i.timeout);i.hoverState='in';if(!i.options.delay||!i.options.delay.show)return i.show();i.timeout=setTimeout(function(){if(i.hoverState=='in')i.show()},i.options.delay.show)};e.prototype.leave=function(e){var i=e instanceof this.constructor?e:t(e.currentTarget).data('bs.'+this.type);if(!i){i=new this.constructor(e.currentTarget,this.getDelegateOptions());t(e.currentTarget).data('bs.'+this.type,i)};clearTimeout(i.timeout);i.hoverState='out';if(!i.options.delay||!i.options.delay.hide)return i.hide();i.timeout=setTimeout(function(){if(i.hoverState=='out')i.hide()},i.options.delay.hide)};e.prototype.show=function(){var c=t.Event('show.bs.'+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(c);var u=t.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(c.isDefaultPrevented()||!u)return;var n=this,o=this.tip(),p=this.getUID(this.type);this.setContent();o.attr('id',p);this.$element.attr('aria-describedby',p);if(this.options.animation)o.addClass('fade');var i=typeof this.options.placement=='function'?this.options.placement.call(this,o[0],this.$element[0]):this.options.placement,f=/\\s?auto?\\s?/i,d=f.test(i);if(d)i=i.replace(f,'')||'top';o.detach().css({top:0,left:0,display:'block'}).addClass(i).data('bs.'+this.type,this);this.options.container?o.appendTo(this.options.container):o.insertAfter(this.$element);var s=this.getPosition(),a=o[0].offsetWidth,l=o[0].offsetHeight;if(d){var g=i,m=this.options.container?t(this.options.container):this.$element.parent(),r=this.getPosition(m);i=i=='bottom'&&s.bottom+l>r.bottom?'top':i=='top'&&s.top-l<r.top?'bottom':i=='right'&&s.right+a>r.width?'left':i=='left'&&s.left-a<r.left?'right':i;o.removeClass(g).addClass(i)};var v=this.getCalculatedOffset(i,s,a,l);this.applyPlacement(v,i);var h=function(){var t=n.hoverState;n.$element.trigger('shown.bs.'+n.type);n.hoverState=null;if(t=='out')n.leave(n)};t.support.transition&&this.$tip.hasClass('fade')?o.one('bsTransitionEnd',h).emulateTransitionEnd(e.TRANSITION_DURATION):h()}};e.prototype.applyPlacement=function(e,i){var o=this.tip(),c=o[0].offsetWidth,h=o[0].offsetHeight,r=parseInt(o.css('margin-top'),10),l=parseInt(o.css('margin-left'),10);if(isNaN(r))r=0;if(isNaN(l))l=0;e.top=e.top+r;e.left=e.left+l;t.offset.setOffset(o[0],t.extend({using:function(t){o.css({top:Math.round(t.top),left:Math.round(t.left)})}},e),0);o.addClass('in');var d=o[0].offsetWidth,s=o[0].offsetHeight;if(i=='top'&&s!=h){e.top=e.top+h-s};var n=this.getViewportAdjustedDelta(i,e,d,s);if(n.left)e.left+=n.left;else e.top+=n.top;var a=/top|bottom/.test(i),f=a?n.left*2-c+d:n.top*2-h+s,p=a?'offsetWidth':'offsetHeight';o.offset(e);this.replaceArrow(f,o[0][p],a)};e.prototype.replaceArrow=function(t,e,i){this.arrow().css(i?'left':'top',50*(1-t/e)+'%').css(i?'top':'left','')};e.prototype.setContent=function(){var t=this.tip(),e=this.getTitle();t.find('.tooltip-inner')[this.options.html?'html':'text'](e);t.removeClass('fade in top bottom left right')};e.prototype.hide=function(i){var n=this,o=t(this.$tip),r=t.Event('hide.bs.'+this.type);function s(){if(n.hoverState!='in')o.detach();n.$element.removeAttr('aria-describedby').trigger('hidden.bs.'+n.type);i&&i()};this.$element.trigger(r);if(r.isDefaultPrevented())return;o.removeClass('in');t.support.transition&&o.hasClass('fade')?o.one('bsTransitionEnd',s).emulateTransitionEnd(e.TRANSITION_DURATION):s();this.hoverState=null;return this};e.prototype.fixTitle=function(){var t=this.$element;if(t.attr('title')||typeof(t.attr('data-original-title'))!='string'){t.attr('data-original-title',t.attr('title')||'').attr('title','')}};e.prototype.hasContent=function(){return this.getTitle()};e.prototype.getPosition=function(e){e=e||this.$element;var n=e[0],o=n.tagName=='BODY',i=n.getBoundingClientRect();if(i.width==null){i=t.extend({},i,{width:i.right-i.left,height:i.bottom-i.top})};var s=o?{top:0,left:0}:e.offset();var a={scroll:o?document.documentElement.scrollTop||document.body.scrollTop:e.scrollTop()};var r=o?{width:t(window).width(),height:t(window).height()}:null;return t.extend({},i,a,r,s)};e.prototype.getCalculatedOffset=function(t,e,i,o){return t=='bottom'?{top:e.top+e.height,left:e.left+e.width/2-i/2}:t=='top'?{top:e.top-o,left:e.left+e.width/2-i/2}:t=='left'?{top:e.top+e.height/2-o/2,left:e.left-i}:{top:e.top+e.height/2-o/2,left:e.left+e.width}};e.prototype.getViewportAdjustedDelta=function(t,e,n,r){var o={top:0,left:0};if(!this.$viewport)return o;var s=this.options.viewport&&this.options.viewport.padding||0,i=this.getPosition(this.$viewport);if(/right|left/.test(t)){var h=e.top-s-i.scroll,d=e.top+s-i.scroll+r;if(h<i.top){o.top=i.top-h}\nelse if(d>i.top+i.height){o.top=i.top+i.height-d}}\nelse{var l=e.left-s,a=e.left+s+n;if(l<i.left){o.left=i.left-l}\nelse if(a>i.width){o.left=i.left+i.width-a}};return o};e.prototype.getTitle=function(){var i,e=this.$element,t=this.options;i=e.attr('data-original-title')||(typeof t.title=='function'?t.title.call(e[0]):t.title);return i};e.prototype.getUID=function(t){do t+=~~(Math.random()*1000000);while(document.getElementById(t))return t};e.prototype.tip=function(){return(this.$tip=this.$tip||t(this.options.template))};e.prototype.arrow=function(){return(this.$arrow=this.$arrow||this.tip().find('.tooltip-arrow'))};e.prototype.enable=function(){this.enabled=!0};e.prototype.disable=function(){this.enabled=!1};e.prototype.toggleEnabled=function(){this.enabled=!this.enabled};e.prototype.toggle=function(e){var i=this;if(e){i=t(e.currentTarget).data('bs.'+this.type);if(!i){i=new this.constructor(e.currentTarget,this.getDelegateOptions());t(e.currentTarget).data('bs.'+this.type,i)}};i.tip().hasClass('in')?i.leave(i):i.enter(i)};e.prototype.destroy=function(){var t=this;clearTimeout(this.timeout);this.hide(function(){t.$element.off('.'+t.type).removeData('bs.'+t.type)})};function i(i){return this.each(function(){var n=t(this),o=n.data('bs.tooltip'),s=typeof i=='object'&&i;if(!o&&/destroy|hide/.test(i))return;if(!o)n.data('bs.tooltip',(o=new e(this,s)));if(typeof i=='string')o[i]()})};var o=t.fn.tooltip;t.fn.tooltip=i;t.fn.tooltip.Constructor=e;t.fn.tooltip.noConflict=function(){t.fn.tooltip=o;return this}}(jQuery);+function(t){'use strict';var e=function(t,e){this.init('popover',t,e)};if(!t.fn.tooltip)throw new Error('Popover requires tooltip.js');e.VERSION='3.3.4';e.DEFAULTS=t.extend({},t.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>'});e.prototype=t.extend({},t.fn.tooltip.Constructor.prototype);e.prototype.constructor=e;e.prototype.getDefaults=function(){return e.DEFAULTS};e.prototype.setContent=function(){var t=this.tip(),i=this.getTitle(),e=this.getContent();t.find('.popover-title')[this.options.html?'html':'text'](i);t.find('.popover-content').children().detach().end()[this.options.html?(typeof e=='string'?'html':'append'):'text'](e);t.removeClass('fade top bottom left right in');if(!t.find('.popover-title').html())t.find('.popover-title').hide()};e.prototype.hasContent=function(){return this.getTitle()||this.getContent()};e.prototype.getContent=function(){var e=this.$element,t=this.options;return e.attr('data-content')||(typeof t.content=='function'?t.content.call(e[0]):t.content)};e.prototype.arrow=function(){return(this.$arrow=this.$arrow||this.tip().find('.arrow'))};function i(i){return this.each(function(){var n=t(this),o=n.data('bs.popover'),s=typeof i=='object'&&i;if(!o&&/destroy|hide/.test(i))return;if(!o)n.data('bs.popover',(o=new e(this,s)));if(typeof i=='string')o[i]()})};var o=t.fn.popover;t.fn.popover=i;t.fn.popover.Constructor=e;t.fn.popover.noConflict=function(){t.fn.popover=o;return this}}(jQuery);+function(t){'use strict';function e(i,o){this.$body=t(document.body);this.$scrollElement=t(i).is(document.body)?t(window):t(i);this.options=t.extend({},e.DEFAULTS,o);this.selector=(this.options.target||'')+' .nav li > a';this.offsets=[];this.targets=[];this.activeTarget=null;this.scrollHeight=0;this.$scrollElement.on('scroll.bs.scrollspy',t.proxy(this.process,this));this.refresh();this.process()};e.VERSION='3.3.4';e.DEFAULTS={offset:10};e.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)};e.prototype.refresh=function(){var o=this,i='offset',e=0;this.offsets=[];this.targets=[];this.scrollHeight=this.getScrollHeight();if(!t.isWindow(this.$scrollElement[0])){i='position';e=this.$scrollElement.scrollTop()};this.$body.find(this.selector).map(function(){var s=t(this),n=s.data('target')||s.attr('href'),o=/^#./.test(n)&&t(n);return(o&&o.length&&o.is(':visible')&&[[o[i]().top+e,n]])||null}).sort(function(t,e){return t[0]-e[0]}).each(function(){o.offsets.push(this[0]);o.targets.push(this[1])})};e.prototype.process=function(){var i=this.$scrollElement.scrollTop()+this.options.offset,s=this.getScrollHeight(),r=this.options.offset+s-this.$scrollElement.height(),e=this.offsets,o=this.targets,n=this.activeTarget,t;if(this.scrollHeight!=s){this.refresh()};if(i>=r){return n!=(t=o[o.length-1])&&this.activate(t)};if(n&&i<e[0]){this.activeTarget=null;return this.clear()};for(t=e.length;t--;){n!=o[t]&&i>=e[t]&&(e[t+1]===undefined||i<e[t+1])&&this.activate(o[t])}};e.prototype.activate=function(e){this.activeTarget=e;this.clear();var o=this.selector+'[data-target=\"'+e+'\"],'+this.selector+'[href=\"'+e+'\"]',i=t(o).parents('li').addClass('active');if(i.parent('.dropdown-menu').length){i=i.closest('li.dropdown').addClass('active')};i.trigger('activate.bs.scrollspy')};e.prototype.clear=function(){t(this.selector).parentsUntil(this.options.target,'.active').removeClass('active')};function i(i){return this.each(function(){var n=t(this),o=n.data('bs.scrollspy'),s=typeof i=='object'&&i;if(!o)n.data('bs.scrollspy',(o=new e(this,s)));if(typeof i=='string')o[i]()})};var o=t.fn.scrollspy;t.fn.scrollspy=i;t.fn.scrollspy.Constructor=e;t.fn.scrollspy.noConflict=function(){t.fn.scrollspy=o;return this};t(window).on('load.bs.scrollspy.data-api',function(){t('[data-spy=\"scroll\"]').each(function(){var e=t(this);i.call(e,e.data())})})}(jQuery);+function(t){'use strict';var e=function(e){this.element=t(e)};e.VERSION='3.3.4';e.TRANSITION_DURATION=150;e.prototype.show=function(){var e=this.element,n=e.closest('ul:not(.dropdown-menu)'),i=e.data('target');if(!i){i=e.attr('href');i=i&&i.replace(/.*(?=#[^\\s]*$)/,'')};if(e.parent('li').hasClass('active'))return;var o=n.find('.active:last a'),s=t.Event('hide.bs.tab',{relatedTarget:e[0]});var r=t.Event('show.bs.tab',{relatedTarget:o[0]});o.trigger(s);e.trigger(r);if(r.isDefaultPrevented()||s.isDefaultPrevented())return;var a=t(i);this.activate(e.closest('li'),n);this.activate(a,a.parent(),function(){o.trigger({type:'hidden.bs.tab',relatedTarget:e[0]});e.trigger({type:'shown.bs.tab',relatedTarget:o[0]})})};e.prototype.activate=function(i,o,n){var s=o.find('> .active'),a=n&&t.support.transition&&((s.length&&s.hasClass('fade'))||!!o.find('> .fade').length);function r(){s.removeClass('active').find('> .dropdown-menu > .active').removeClass('active').end().find('[data-toggle=\"tab\"]').attr('aria-expanded',!1);i.addClass('active').find('[data-toggle=\"tab\"]').attr('aria-expanded',!0);if(a){i[0].offsetWidth;i.addClass('in')}\nelse{i.removeClass('fade')};if(i.parent('.dropdown-menu').length){i.closest('li.dropdown').addClass('active').end().find('[data-toggle=\"tab\"]').attr('aria-expanded',!0)};n&&n()};s.length&&a?s.one('bsTransitionEnd',r).emulateTransitionEnd(e.TRANSITION_DURATION):r();s.removeClass('in')};function o(i){return this.each(function(){var n=t(this),o=n.data('bs.tab');if(!o)n.data('bs.tab',(o=new e(this)));if(typeof i=='string')o[i]()})};var n=t.fn.tab;t.fn.tab=o;t.fn.tab.Constructor=e;t.fn.tab.noConflict=function(){t.fn.tab=n;return this};var i=function(e){e.preventDefault();o.call(t(this),'show')};t(document).on('click.bs.tab.data-api','[data-toggle=\"tab\"]',i).on('click.bs.tab.data-api','[data-toggle=\"pill\"]',i)}(jQuery);+function(t){'use strict';var e=function(i,o){this.options=t.extend({},e.DEFAULTS,o);this.$target=t(this.options.target).on('scroll.bs.affix.data-api',t.proxy(this.checkPosition,this)).on('click.bs.affix.data-api',t.proxy(this.checkPositionWithEventLoop,this));this.$element=t(i);this.affixed=null;this.unpin=null;this.pinnedOffset=null;this.checkPosition()};e.VERSION='3.3.4';e.RESET='affix affix-top affix-bottom';e.DEFAULTS={offset:0,target:window};e.prototype.getState=function(t,e,i,o){var n=this.$target.scrollTop(),s=this.$element.offset(),r=this.$target.height();if(i!=null&&this.affixed=='top')return n<i?'top':!1;if(this.affixed=='bottom'){if(i!=null)return(n+this.unpin<=s.top)?!1:'bottom';return(n+r<=t-o)?!1:'bottom'};var a=this.affixed==null,l=a?n:s.top,h=a?r:e;if(i!=null&&n<=i)return'top';if(o!=null&&(l+h>=t-o))return'bottom';return!1};e.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(e.RESET).addClass('affix');var i=this.$target.scrollTop(),t=this.$element.offset();return(this.pinnedOffset=t.top-i)};e.prototype.checkPositionWithEventLoop=function(){setTimeout(t.proxy(this.checkPosition,this),1)};e.prototype.checkPosition=function(){if(!this.$element.is(':visible'))return;var l=this.$element.height(),i=this.options.offset,s=i.top,n=i.bottom,a=t(document.body).height();if(typeof i!='object')n=s=i;if(typeof s=='function')s=i.top(this.$element);if(typeof n=='function')n=i.bottom(this.$element);var o=this.getState(a,l,s,n);if(this.affixed!=o){if(this.unpin!=null)this.$element.css('top','');var r='affix'+(o?'-'+o:''),h=t.Event(r+'.bs.affix');this.$element.trigger(h);if(h.isDefaultPrevented())return;this.affixed=o;this.unpin=o=='bottom'?this.getPinnedOffset():null;this.$element.removeClass(e.RESET).addClass(r).trigger(r.replace('affix','affixed')+'.bs.affix')};if(o=='bottom'){this.$element.offset({top:a-l-n})}};function i(i){return this.each(function(){var n=t(this),o=n.data('bs.affix'),s=typeof i=='object'&&i;if(!o)n.data('bs.affix',(o=new e(this,s)));if(typeof i=='string')o[i]()})};var o=t.fn.affix;t.fn.affix=i;t.fn.affix.Constructor=e;t.fn.affix.noConflict=function(){t.fn.affix=o;return this};t(window).on('load',function(){t('[data-spy=\"affix\"]').each(function(){var o=t(this),e=o.data();e.offset=e.offset||{};if(e.offsetBottom!=null)e.offset.bottom=e.offsetBottom;if(e.offsetTop!=null)e.offset.top=e.offsetTop;i.call(o,e)})})}(jQuery);\n!function(e){'undefined'!=typeof exports?e(exports):(window.hljs=e({}),'function'==typeof define&&define.amd&&define([],function(){return window.hljs}))}(function(e){function t(e){return e.replace(/&/gm,'&amp;').replace(/</gm,'&lt;').replace(/>/gm,'&gt;')};function l(e){return e.nodeName.toLowerCase()};function u(e,t){var r=e&&e.exec(t);return r&&0==r.index};function N(e){var t=(e.className+' '+(e.parentNode?e.parentNode.className:'')).split(/\\s+/);return t=t.map(function(e){return e.replace(/^lang(uage)?-/,'')}),t.filter(function(e){return i(e)||/no(-?)highlight/.test(e)})[0]};function o(e,t){var n={};for(var r in e)n[r]=e[r];if(t)for(var r in t)n[r]=t[r];return n};function b(e){var t=[];return function r(e,n){for(var a=e.firstChild;a;a=a.nextSibling)3==a.nodeType?n+=a.nodeValue.length:1==a.nodeType&&(t.push({event:'start',offset:n,node:a}),n=r(a,n),l(a).match(/br|hr|img|input/)||t.push({event:'stop',offset:n,node:a}));return n}(e,0),t};function y(e,r,i){function p(){return e.length&&r.length?e[0].offset!=r[0].offset?e[0].offset<r[0].offset?e:r:'start'==r[0].event?e:r:e.length?e:r};function d(e){function r(e){return' '+e.nodeName+'=\"'+t(e.value)+'\"'};c+='<'+l(e)+Array.prototype.map.call(e.attributes,r).join('')+'>'};function u(e){c+='</'+l(e)+'>'};function o(e){('start'==e.event?d:u)(e.node)};for(var a=0,c='',s=[];e.length||r.length;){var n=p();if(c+=t(i.substr(a,n[0].offset-a)),a=n[0].offset,n==e){s.reverse().forEach(u);do o(n.splice(0,1)[0]),n=p();while(n==e&&n.length&&n[0].offset==a);s.reverse().forEach(d)}\nelse'start'==n[0].event?s.push(n[0].node):s.pop(),o(n.splice(0,1)[0])};return c+t(i.substr(a))};function v(e){function n(e){return e&&e.source||e};function t(t,r){return RegExp(n(t),'m'+(e.cI?'i':'')+(r?'g':''))};function r(a,i){if(!a.compiled){if(a.compiled=!0,a.k=a.k||a.bK,a.k){var u={},c=function(t,r){e.cI&&(r=r.toLowerCase()),r.split(' ').forEach(function(e){var r=e.split('|');u[r[0]]=[t,r[1]?Number(r[1]):1]})};'string'==typeof a.k?c('keyword',a.k):Object.keys(a.k).forEach(function(e){c(e,a.k[e])}),a.k=u};a.lR=t(a.l||/\\b[A-Za-z0-9_]+\\b/,!0),i&&(a.bK&&(a.b='\\\\b('+a.bK.split(' ').join('|')+')\\\\b'),a.b||(a.b=/\\B|\\b/),a.bR=t(a.b),a.e||a.eW||(a.e=/\\B|\\b/),a.e&&(a.eR=t(a.e)),a.tE=n(a.e)||'',a.eW&&i.tE&&(a.tE+=(a.e?'|':'')+i.tE)),a.i&&(a.iR=t(a.i)),void 0===a.r&&(a.r=1),a.c||(a.c=[]);var s=[];a.c.forEach(function(e){e.v?e.v.forEach(function(t){s.push(o(e,t))}):s.push('self'==e?a:e)}),a.c=s,a.c.forEach(function(e){r(e,a)}),a.starts&&r(a.starts,i);var l=a.c.map(function(e){return e.bK?'\\\\.?('+e.b+')\\\\.?':e.b}).concat([a.tE,a.i]).map(n).filter(Boolean);a.t=l.length?t(l.join('|'),!0):{exec:function(){return null}}}};r(e)};function s(e,o,h,M){function B(e,t){for(var r=0;r<t.c.length;r++)if(u(t.c[r].bR,e))return t.c[r]};function E(e,t){return u(e.eR,t)?e:e.eW?E(e.parent,t):void 0};function L(e,t){return!h&&u(t.iR,e)};function A(e,t){var r=m.cI?t[0].toLowerCase():t[0];return e.k.hasOwnProperty(r)&&e.k[r]};function g(e,t,n,i){var c=i?'':r.classPrefix,a='<span class=\"'+c,s=n?'':'</span>';return a+=e+'\">',a+t+s};function R(){if(!a.k)return t(l);var n='',r=0;a.lR.lastIndex=0;for(var e=a.lR.exec(l);e;){n+=t(l.substr(r,e.index-r));var i=A(a,e);i?(N+=i[1],n+=g(i[0],t(e[0]))):n+=t(e[0]),r=a.lR.lastIndex,e=a.lR.exec(l)};return n+t(l.substr(r))};function I(){if(a.sL&&!n[a.sL])return t(l);var e=a.sL?s(a.sL,l,!0,C[a.sL]):c(l);return a.r>0&&(N+=e.r),'continuous'==a.subLanguageMode&&(C[a.sL]=e.top),g(e.language,e.value,!1,!0)};function y(){return void 0!==a.sL?I():R()};function k(e,r){var n=e.cN?g(e.cN,'',!0):'';e.rB?(d+=n,l=''):e.eB?(d+=t(r)+n,l=''):(d+=n,l=r),a=Object.create(e,{parent:{value:a}})};function x(e,r){if(l+=e,void 0===r)return d+=y(),0;var s=B(r,a);if(s)return d+=y(),k(s,r),s.rB?0:r.length;var n=E(a,r);if(n){var i=a;i.rE||i.eE||(l+=r),d+=y();do a.cN&&(d+='</span>'),N+=a.r,a=a.parent;while(a!=n.parent);return i.eE&&(d+=t(r)),l='',n.starts&&k(n.starts,''),i.rE?0:r.length};if(L(r,a))throw new Error('Illegal lexeme \"'+r+'\" for mode \"'+(a.cN||'<unnamed>')+'\"');return l+=r,r.length||1};var m=i(e);if(!m)throw new Error('Unknown language: \"'+e+'\"');v(m);for(var a=M||m,C={},d='',p=a;p!=m;p=p.parent)p.cN&&(d=g(p.cN,'',!0)+d);var l='',N=0;try{for(var f,w,b=0;;){if(a.t.lastIndex=b,f=a.t.exec(o),!f)break;w=x(o.substr(b,f.index-b),f[0]),b=f.index+w};x(o.substr(b));for(var p=a;p.parent;p=p.parent)p.cN&&(d+='</span>');return{r:N,value:d,language:e,top:a}}catch(z){if(-1!=z.message.indexOf('Illegal'))return{r:0,value:t(o)};throw z}};function c(e,a){a=a||r.languages||Object.keys(n);var c={r:0,value:t(e)},o=c;return a.forEach(function(t){if(i(t)){var r=s(t,e,!1);r.language=t,r.r>o.r&&(o=r),r.r>c.r&&(o=c,c=r)}}),o.language&&(c.second_best=o),c};function f(e){return r.tabReplace&&(e=e.replace(/^((<[^>]+>|\\t)+)/gm,function(e,t){return t.replace(/\\t/g,r.tabReplace)})),r.useBR&&(e=e.replace(/\\n/g,'<br>')),e};function w(e,t,r){var a=t?d[t]:r,n=[e.trim()];return e.match(/(\\s|^)hljs(\\s|$)/)||n.push('hljs'),a&&n.push(a),n.join(' ').trim()};function p(e){var a=N(e);if(!/no(-?)highlight/.test(a)){var n;r.useBR?(n=document.createElementNS('http://www.w3.org/1999/xhtml','div'),n.innerHTML=e.innerHTML.replace(/\\n/g,'').replace(/<br[ \\/]*>/g,'\\n')):n=e;var i=n.textContent,t=a?s(a,i,!0):c(i),o=b(n);if(o.length){var l=document.createElementNS('http://www.w3.org/1999/xhtml','div');l.innerHTML=t.value,t.value=y(o,b(l),i)};t.value=f(t.value),e.innerHTML=t.value,e.className=w(e.className,a,t.language),e.result={language:t.language,re:t.r},t.second_best&&(e.second_best={language:t.second_best.language,re:t.second_best.r})}};function k(e){r=o(r,e)};function a(){if(!a.called){a.called=!0;var e=document.querySelectorAll('pre code');Array.prototype.forEach.call(e,p)}};function m(){addEventListener('DOMContentLoaded',a,!1),addEventListener('load',a,!1)};function g(t,r){var a=n[t]=r(e);a.aliases&&a.aliases.forEach(function(e){d[e]=t})};function h(){return Object.keys(n)};function i(e){return n[e]||n[d[e]]};var r={classPrefix:'hljs-',tabReplace:null,useBR:!1,languages:void 0},n={},d={};return e.highlight=s,e.highlightAuto=c,e.fixMarkup=f,e.highlightBlock=p,e.configure=k,e.initHighlighting=a,e.initHighlightingOnLoad=m,e.registerLanguage=g,e.listLanguages=h,e.getLanguage=i,e.inherit=o,e.IR='[a-zA-Z][a-zA-Z0-9_]*',e.UIR='[a-zA-Z_][a-zA-Z0-9_]*',e.NR='\\\\b\\\\d+(\\\\.\\\\d+)?',e.CNR='(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)',e.BNR='\\\\b(0b[01]+)',e.RSR='!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~',e.BE={b:'\\\\\\\\[\\\\s\\\\S]',r:0},e.ASM={cN:'string',b:'\\'',e:'\\'',i:'\\\\n',c:[e.BE]},e.QSM={cN:'string',b:'\"',e:'\"',i:'\\\\n',c:[e.BE]},e.PWM={b:/\\b(a|an|the|are|I|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such)\\b/},e.CLCM={cN:'comment',b:'//',e:'$',c:[e.PWM]},e.CBCM={cN:'comment',b:'/\\\\*',e:'\\\\*/',c:[e.PWM]},e.HCM={cN:'comment',b:'#',e:'$',c:[e.PWM]},e.NM={cN:'number',b:e.NR,r:0},e.CNM={cN:'number',b:e.CNR,r:0},e.BNM={cN:'number',b:e.BNR,r:0},e.CSSNM={cN:'number',b:e.NR+'(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?',r:0},e.RM={cN:'regexp',b:/\\//,e:/\\/[gimuy]*/,i:/\\n/,c:[e.BE,{b:/\\[/,e:/\\]/,r:0,c:[e.BE]}]},e.TM={cN:'title',b:e.IR,r:0},e.UTM={cN:'title',b:e.UIR,r:0},e});hljs.registerLanguage('javascript',function(e){return{aliases:['js'],k:{keyword:'in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class',literal:'true false null undefined NaN Infinity',built_in:'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document'},c:[{cN:'pi',r:10,v:[{b:/^\\s*('|\")use strict('|\")/},{b:/^\\s*('|\")use asm('|\")/}]},e.ASM,e.QSM,e.CLCM,e.CBCM,e.CNM,{b:'('+e.RSR+'|\\\\b(case|return|throw)\\\\b)\\\\s*',k:'return throw case',c:[e.CLCM,e.CBCM,e.RM,{b:/</,e:/>;/,r:0,sL:'xml'}],r:0},{cN:'function',bK:'function',e:/\\{/,eE:!0,c:[e.inherit(e.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:'params',b:/\\(/,e:/\\)/,c:[e.CLCM,e.CBCM],i:/[\"'\\(]/}],i:/\\[|%/},{b:/\\$[(.]/},{b:'\\\\.'+e.IR,r:0}]}});hljs.registerLanguage('twig',function(){var a={cN:'params',b:'\\\\(',e:'\\\\)'},n='attribute block constant cycle date dump include max min parent random range source template_from_string',t={cN:'function',bK:n,r:0,c:[a]},r={cN:'filter',b:/\\|[A-Za-z]+\\:?/,k:'abs batch capitalize convert_encoding date date_modify default escape first format join json_encode keys last length lower merge nl2br number_format raw replace reverse round slice sort split striptags title trim upper url_encode',c:[t]},e='autoescape block do embed extends filter flush for if import include macro sandbox set spaceless use verbatim';return e=e+' '+e.split(' ').map(function(e){return'end'+e}).join(' '),{aliases:['craftcms'],cI:!0,sL:'xml',subLanguageMode:'continuous',c:[{cN:'comment',b:/\\{#/,e:/#}/},{cN:'template_tag',b:/\\{%/,e:/%}/,k:e,c:[r,t]},{cN:'variable',b:/\\{\\{/,e:/}}/,c:[r,t]}]}});hljs.registerLanguage('sql',function(e){var t={cN:'comment',b:'--',e:'$'};return{cI:!0,i:/[<>]/,c:[{cN:'operator',bK:'begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate savepoint release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup',e:/;/,eW:!0,k:{keyword:'abs absolute acos action add adddate addtime aes_decrypt aes_encrypt after aggregate all allocate alter analyze and any are as asc ascii asin assertion at atan atan2 atn2 authorization authors avg backup before begin benchmark between bin binlog bit_and bit_count bit_length bit_or bit_xor both by cache call cascade cascaded case cast catalog ceil ceiling chain change changed char_length character_length charindex charset check checksum checksum_agg choose close coalesce coercibility collate collation collationproperty column columns columns_updated commit compress concat concat_ws concurrent connect connection connection_id consistent constraint constraints continue contributors conv convert convert_tz corresponding cos cot count count_big crc32 create cross cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime data database databases datalength date_add date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts datetimeoffsetfromparts day dayname dayofmonth dayofweek dayofyear deallocate declare decode default deferrable deferred degrees delayed delete des_decrypt des_encrypt des_key_file desc describe descriptor diagnostics difference disconnect distinct distinctrow div do domain double drop dumpfile each else elt enclosed encode encrypt end end-exec engine engines eomonth errors escape escaped event eventdata events except exception exec execute exists exp explain export_set extended external extract fast fetch field fields find_in_set first first_value floor flush for force foreign format found found_rows from from_base64 from_days from_unixtime full function get get_format get_lock getdate getutcdate global go goto grant grants greatest group group_concat grouping grouping_id gtid_subset gtid_subtract handler having help hex high_priority hosts hour ident_current ident_incr ident_seed identified identity if ifnull ignore iif ilike immediate in index indicator inet6_aton inet6_ntoa inet_aton inet_ntoa infile initially inner innodb input insert install instr intersect into is is_free_lock is_ipv4 is_ipv4_compat is_ipv4_mapped is_not is_not_null is_used_lock isdate isnull isolation join key kill language last last_day last_insert_id last_value lcase lead leading least leaves left len lenght level like limit lines ln load load_file local localtime localtimestamp locate lock log log10 log2 logfile logs low_priority lower lpad ltrim make_set makedate maketime master master_pos_wait match matched max md5 medium merge microsecond mid min minute mod mode module month monthname mutex name_const names national natural nchar next no no_write_to_binlog not now nullif nvarchar oct octet_length of old_password on only open optimize option optionally or ord order outer outfile output pad parse partial partition password patindex percent_rank percentile_cont percentile_disc period_add period_diff pi plugin position pow power pragma precision prepare preserve primary prior privileges procedure procedure_analyze processlist profile profiles public publishingservername purge quarter query quick quote quotename radians rand read references regexp relative relaylog release release_lock rename repair repeat replace replicate reset restore restrict return returns reverse revoke right rlike rollback rollup round row row_count rows rpad rtrim savepoint schema scroll sec_to_time second section select serializable server session session_user set sha sha1 sha2 share show sign sin size slave sleep smalldatetimefromparts snapshot some soname soundex sounds_like space sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sql_variant_property sqlstate sqrt square start starting status std stddev stddev_pop stddev_samp stdev stdevp stop str str_to_date straight_join strcmp string stuff subdate substr substring subtime subtring_index sum switchoffset sysdate sysdatetime sysdatetimeoffset system_user sysutcdatetime table tables tablespace tan temporary terminated tertiary_weights then time time_format time_to_sec timediff timefromparts timestamp timestampadd timestampdiff timezone_hour timezone_minute to to_base64 to_days to_seconds todatetimeoffset trailing transaction translation trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse ucase uncompress uncompressed_length unhex unicode uninstall union unique unix_timestamp unknown unlock update upgrade upped upper usage use user user_resources using utc_date utc_time utc_timestamp uuid uuid_short validate_password_strength value values var var_pop var_samp variables variance varp version view warnings week weekday weekofyear weight_string when whenever where with work write xml xor year yearweek zon',literal:'true false null',built_in:'array bigint binary bit blob boolean char character date dec decimal float int integer interval number numeric real serial smallint varchar varying int8 serial8 text'},c:[{cN:'string',b:'\\'',e:'\\'',c:[e.BE,{b:'\\'\\''}]},{cN:'string',b:'\"',e:'\"',c:[e.BE,{b:'\"\"'}]},{cN:'string',b:'`',e:'`',c:[e.BE]},e.CNM,e.CBCM,t]},e.CBCM,t]}});hljs.registerLanguage('bash',function(e){var t={cN:'variable',v:[{b:/\\$[\\w\\d#@][\\w\\d_]*/},{b:/\\$\\{(.*?)\\}/}]},n={cN:'string',b:/\"/,e:/\"/,c:[e.BE,t,{cN:'variable',b:/\\$\\(/,e:/\\)/,c:[e.BE]}]},r={cN:'string',b:/'/,e:/'/};return{aliases:['sh','zsh'],l:/-?[a-z\\.]+/,k:{keyword:'if then else elif fi for while in do done case esac function',literal:'true false',built_in:'break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp',operator:'-ne -eq -lt -gt -f -d -e -s -l -a'},c:[{cN:'shebang',b:/^#![^\\n]+sh\\s*$/,r:10},{cN:'function',b:/\\w[\\w\\d_]*\\s*\\(\\s*\\)\\s*\\{/,rB:!0,c:[e.inherit(e.TM,{b:/\\w[\\w\\d_]*/})],r:0},e.HCM,e.NM,n,r,t]}});hljs.registerLanguage('css',function(e){var r='[a-zA-Z-][a-zA-Z0-9_-]*',t={cN:'function',b:r+'\\\\(',rB:!0,eE:!0,e:'\\\\('};return{cI:!0,i:'[=/|\\']',c:[e.CBCM,{cN:'id',b:'\\\\#[A-Za-z0-9_-]+'},{cN:'class',b:'\\\\.[A-Za-z0-9_-]+',r:0},{cN:'attr_selector',b:'\\\\[',e:'\\\\]',i:'$'},{cN:'pseudo',b:':(:)?[a-zA-Z0-9\\\\_\\\\-\\\\+\\\\(\\\\)\\\\\"\\\\\\']+'},{cN:'at_rule',b:'@(font-face|page)',l:'[a-z-]+',k:'font-face page'},{cN:'at_rule',b:'@',e:'[{;]',c:[{cN:'keyword',b:/\\S+/},{b:/\\s/,eW:!0,eE:!0,r:0,c:[t,e.ASM,e.QSM,e.CSSNM]}]},{cN:'tag',b:r,r:0},{cN:'rules',b:'{',e:'}',i:'[^\\\\s]',r:0,c:[e.CBCM,{cN:'rule',b:'[^\\\\s]',rB:!0,e:';',eW:!0,c:[{cN:'attribute',b:'[A-Z\\\\_\\\\.\\\\-]+',e:':',eE:!0,i:'[^\\\\s]',starts:{cN:'value',eW:!0,eE:!0,c:[t,e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:'hexcolor',b:'#[0-9A-Fa-f]+'},{cN:'important',b:'!important'}]}}]}]}]}});hljs.registerLanguage('php',function(e){var a={cN:'variable',b:'\\\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*'},t={cN:'preprocessor',b:/<\\?(php)?|\\?>/},n={cN:'string',c:[e.BE,t],v:[{b:'b\"',e:'\"'},{b:'b\\'',e:'\\''},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},r={v:[e.BNM,e.CNM]};return{aliases:['php3','php4','php5','php6'],cI:!0,k:'and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally',c:[e.CLCM,e.HCM,{cN:'comment',b:'/\\\\*',e:'\\\\*/',c:[{cN:'phpdoc',b:'\\\\s@[A-Za-z]+'},t]},{cN:'comment',b:'__halt_compiler.+?;',eW:!0,k:'__halt_compiler',l:e.UIR},{cN:'string',b:'<<<[\\'\"]?\\\\w+[\\'\"]?$',e:'^\\\\w+;',c:[e.BE]},t,a,{b:/->+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/},{cN:'function',bK:'function',e:/[;{]/,eE:!0,i:'\\\\$|\\\\[|%',c:[e.UTM,{cN:'params',b:'\\\\(',e:'\\\\)',c:['self',a,e.CBCM,n,r]}]},{cN:'class',bK:'class interface',e:'{',eE:!0,i:/[:\\(\\$\"]/,c:[{bK:'extends implements'},e.UTM]},{bK:'namespace',e:';',i:/[\\.']/,c:[e.UTM]},{bK:'use',e:';',c:[e.UTM]},{b:'=>'},n,r]}});hljs.registerLanguage('apache',function(e){var t={cN:'number',b:'[\\\\$%]\\\\d+'};return{aliases:['apacheconf'],cI:!0,c:[e.HCM,{cN:'tag',b:'</?',e:'>'},{cN:'keyword',b:/\\w+/,r:0,k:{common:'order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername'},starts:{e:/$/,r:0,k:{literal:'on off all'},c:[{cN:'sqbracket',b:'\\\\s\\\\[',e:'\\\\]$'},{cN:'cbracket',b:'[\\\\$%]\\\\{',e:'\\\\}',c:['self',t]},t,e.QSM]}}],i:/\\S/}});hljs.registerLanguage('ini',function(e){return{cI:!0,i:/\\S/,c:[{cN:'comment',b:';',e:'$'},{cN:'title',b:'^\\\\[',e:'\\\\]'},{cN:'setting',b:'^[a-z0-9\\\\[\\\\]_-]+[ \\\\t]*=[ \\\\t]*',e:'$',c:[{cN:'value',eW:!0,k:'on off true false yes no',c:[e.QSM,e.NM],r:0}]}]}});hljs.registerLanguage('markdown',function(){return{aliases:['md','mkdown','mkd'],c:[{cN:'header',v:[{b:'^#{1,6}',e:'$'},{b:'^.+?\\\\n[=-]{2,}$'}]},{b:'<',e:'>',sL:'xml',r:0},{cN:'bullet',b:'^([*+-]|(\\\\d+\\\\.))\\\\s+'},{cN:'strong',b:'[*_]{2}.+?[*_]{2}'},{cN:'emphasis',v:[{b:'\\\\*.+?\\\\*'},{b:'_.+?_',r:0}]},{cN:'blockquote',b:'^>\\\\s+',e:'$'},{cN:'code',v:[{b:'`.+?`'},{b:'^( {4}|\t)',e:'$',r:0}]},{cN:'horizontal_rule',b:'^[-\\\\*]{3,}',e:'$'},{b:'\\\\[.+?\\\\][\\\\(\\\\[].*?[\\\\)\\\\]]',rB:!0,c:[{cN:'link_label',b:'\\\\[',e:'\\\\]',eB:!0,rE:!0,r:0},{cN:'link_url',b:'\\\\]\\\\(',e:'\\\\)',eB:!0,eE:!0},{cN:'link_reference',b:'\\\\]\\\\[',e:'\\\\]',eB:!0,eE:!0}],r:10},{b:'^\\\\[.+\\\\]:',rB:!0,c:[{cN:'link_reference',b:'\\\\[',e:'\\\\]:',eB:!0,eE:!0,starts:{cN:'link_url',e:'$'}}]}]}});hljs.registerLanguage('xml',function(){var r='[A-Za-z0-9\\\\._:-]+',t={b:/<\\?(php)?(?!\\w)/,e:/\\?>/,sL:'php',subLanguageMode:'continuous'},e={eW:!0,i:/</,r:0,c:[t,{cN:'attribute',b:r,r:0},{b:'=',r:0,c:[{cN:'value',c:[t],v:[{b:/\"/,e:/\"/},{b:/'/,e:/'/},{b:/[^\\s\\/>]+/}]}]}]};return{aliases:['html','xhtml','rss','atom','xsl','plist'],cI:!0,c:[{cN:'doctype',b:'<!DOCTYPE',e:'>',r:10,c:[{b:'\\\\[',e:'\\\\]'}]},{cN:'comment',b:'<!--',e:'-->',r:10},{cN:'cdata',b:'<\\\\!\\\\[CDATA\\\\[',e:'\\\\]\\\\]>',r:10},{cN:'tag',b:'<style(?=\\\\s|>|$)',e:'>',k:{title:'style'},c:[e],starts:{e:'</style>',rE:!0,sL:'css'}},{cN:'tag',b:'<script(?=\\\\s|>|$)',e:'>',k:{title:'script'},c:[e],starts:{e:'</script>',rE:!0,sL:'javascript'}},t,{cN:'pi',b:/<\\?\\w+/,e:/\\?>/,r:10},{cN:'tag',b:'</?',e:'/?>',c:[{cN:'title',b:/[^ \\/><\\n\\t]+/,r:0},e]}]}});hljs.registerLanguage('http',function(){return{i:'\\\\S',c:[{cN:'status',b:'^HTTP/[0-9\\\\.]+',e:'$',c:[{cN:'number',b:'\\\\b\\\\d{3}\\\\b'}]},{cN:'request',b:'^[A-Z]+ (.*?) HTTP/[0-9\\\\.]+$',rB:!0,e:'$',c:[{cN:'string',b:' ',e:' ',eB:!0,eE:!0}]},{cN:'attribute',b:'^\\\\w',e:': ',eE:!0,i:'\\\\n|\\\\s|=',starts:{cN:'string',e:'$'}},{b:'\\\\n\\\\n',starts:{sL:'',eW:!0}}]}});hljs.registerLanguage('json',function(e){var r={literal:'true false null'},t=[e.QSM,e.CNM],n={cN:'value',e:',',eW:!0,eE:!0,c:t,k:r},i={b:'{',e:'}',c:[{cN:'attribute',b:'\\\\s*\"',e:'\"\\\\s*:\\\\s*',eB:!0,eE:!0,c:[e.BE],i:'\\\\n',starts:n}],i:'\\\\S'},a={b:'\\\\[',e:'\\\\]',c:[e.inherit(n,{cN:null})],i:'\\\\S'};return t.splice(t.length,0,i,a),{c:t,k:r,i:'\\\\S'}});\n/*! version : 4.17.37\n =========================================================\n bootstrap-datetimejs\n https://github.com/Eonasdan/bootstrap-datetimepicker\n Copyright (c) 2015 Jonathan Peterson\n =========================================================\n */\n!function(e){'use strict';if('function'==typeof define&&define.amd)define(['jquery','moment'],e);else if('object'==typeof exports)e(require('jquery'),require('moment'));else{if('undefined'==typeof jQuery)throw'bootstrap-datetimepicker requires jQuery to be loaded first';if('undefined'==typeof moment)throw'bootstrap-datetimepicker requires Moment.js to be loaded first';e(jQuery,moment)}}(function(e,t){'use strict';if(!t)throw new Error('bootstrap-datetimepicker requires Moment.js to be loaded first');var n=function(a,n){var o,s,d,b,h,v,y,r={},w=!0,u=!1,i=!1,D=0,P=[{clsName:'days',navFnc:'M',navStep:1},{clsName:'months',navFnc:'y',navStep:1},{clsName:'years',navFnc:'y',navStep:10},{clsName:'decades',navFnc:'y',navStep:100}],q=['days','months','years','decades'],W=['top','bottom','auto'],L=['left','right','auto'],F=['default','top','bottom'],z={up:38,38:'up',down:40,40:'down',left:37,37:'left',right:39,39:'right',tab:9,9:'tab',escape:27,27:'escape',enter:13,13:'enter',pageUp:33,33:'pageUp',pageDown:34,34:'pageDown',shift:16,16:'shift',control:17,17:'control',space:32,32:'space',t:84,84:'t','delete':46,46:'delete'},H={},k=function(e){var a,s,o,d,i,r=!1;return void 0!==t.tz&&void 0!==n.timeZone&&null!==n.timeZone&&''!==n.timeZone&&(r=!0),void 0===e||null===e?a=r?t().tz(n.timeZone).startOf('d'):t().startOf('d'):r?(s=t().tz(n.timeZone).utcOffset(),o=t(e,v,n.useStrict).utcOffset(),o!==s?(d=t().tz(n.timeZone).format('Z'),i=t(e,v,n.useStrict).format('YYYY-MM-DD[T]HH:mm:ss')+d,a=t(i,v,n.useStrict).tz(n.timeZone)):a=t(e,v,n.useStrict).tz(n.timeZone)):a=t(e,v,n.useStrict),a},m=function(e){if('string'!=typeof e||e.length>1)throw new TypeError('isEnabled expects a single character string parameter');switch(e){case'y':return-1!==h.indexOf('Y');case'M':return-1!==h.indexOf('M');case'd':return-1!==h.toLowerCase().indexOf('d');case'h':case'H':return-1!==h.toLowerCase().indexOf('h');case'm':return-1!==h.indexOf('m');case's':return-1!==h.indexOf('s');default:return!1}},E=function(){return m('h')||m('m')||m('s')},O=function(){return m('y')||m('M')||m('d')},ne=function(){var t=e('<thead>').append(e('<tr>').append(e('<th>').addClass('prev').attr('data-action','previous').append(e('<span>').addClass(n.icons.previous))).append(e('<th>').addClass('picker-switch').attr('data-action','pickerSwitch').attr('colspan',n.calendarWeeks?'6':'5')).append(e('<th>').addClass('next').attr('data-action','next').append(e('<span>').addClass(n.icons.next)))),a=e('<tbody>').append(e('<tr>').append(e('<td>').attr('colspan',n.calendarWeeks?'8':'7')));return[e('<div>').addClass('datepicker-days').append(e('<table>').addClass('table-condensed').append(t).append(e('<tbody>'))),e('<div>').addClass('datepicker-months').append(e('<table>').addClass('table-condensed').append(t.clone()).append(a.clone())),e('<div>').addClass('datepicker-years').append(e('<table>').addClass('table-condensed').append(t.clone()).append(a.clone())),e('<div>').addClass('datepicker-decades').append(e('<table>').addClass('table-condensed').append(t.clone()).append(a.clone()))]},ue=function(){var r=e('<tr>'),a=e('<tr>'),t=e('<tr>');return m('h')&&(r.append(e('<td>').append(e('<a>').attr({href:'#',tabindex:'-1',title:n.tooltips.incrementHour}).addClass('btn').attr('data-action','incrementHours').append(e('<span>').addClass(n.icons.up)))),a.append(e('<td>').append(e('<span>').addClass('timepicker-hour').attr({'data-time-component':'hours',title:n.tooltips.pickHour}).attr('data-action','showHours'))),t.append(e('<td>').append(e('<a>').attr({href:'#',tabindex:'-1',title:n.tooltips.decrementHour}).addClass('btn').attr('data-action','decrementHours').append(e('<span>').addClass(n.icons.down))))),m('m')&&(m('h')&&(r.append(e('<td>').addClass('separator')),a.append(e('<td>').addClass('separator').html(':')),t.append(e('<td>').addClass('separator'))),r.append(e('<td>').append(e('<a>').attr({href:'#',tabindex:'-1',title:n.tooltips.incrementMinute}).addClass('btn').attr('data-action','incrementMinutes').append(e('<span>').addClass(n.icons.up)))),a.append(e('<td>').append(e('<span>').addClass('timepicker-minute').attr({'data-time-component':'minutes',title:n.tooltips.pickMinute}).attr('data-action','showMinutes'))),t.append(e('<td>').append(e('<a>').attr({href:'#',tabindex:'-1',title:n.tooltips.decrementMinute}).addClass('btn').attr('data-action','decrementMinutes').append(e('<span>').addClass(n.icons.down))))),m('s')&&(m('m')&&(r.append(e('<td>').addClass('separator')),a.append(e('<td>').addClass('separator').html(':')),t.append(e('<td>').addClass('separator'))),r.append(e('<td>').append(e('<a>').attr({href:'#',tabindex:'-1',title:n.tooltips.incrementSecond}).addClass('btn').attr('data-action','incrementSeconds').append(e('<span>').addClass(n.icons.up)))),a.append(e('<td>').append(e('<span>').addClass('timepicker-second').attr({'data-time-component':'seconds',title:n.tooltips.pickSecond}).attr('data-action','showSeconds'))),t.append(e('<td>').append(e('<a>').attr({href:'#',tabindex:'-1',title:n.tooltips.decrementSecond}).addClass('btn').attr('data-action','decrementSeconds').append(e('<span>').addClass(n.icons.down))))),b||(r.append(e('<td>').addClass('separator')),a.append(e('<td>').append(e('<button>').addClass('btn btn-primary').attr({'data-action':'togglePeriod',tabindex:'-1',title:n.tooltips.togglePeriod}))),t.append(e('<td>').addClass('separator'))),e('<div>').addClass('timepicker-picker').append(e('<table>').addClass('table-condensed').append([r,a,t]))},se=function(){var r=e('<div>').addClass('timepicker-hours').append(e('<table>').addClass('table-condensed')),a=e('<div>').addClass('timepicker-minutes').append(e('<table>').addClass('table-condensed')),n=e('<div>').addClass('timepicker-seconds').append(e('<table>').addClass('table-condensed')),t=[ue()];return m('h')&&t.push(r),m('m')&&t.push(a),m('s')&&t.push(n),t},de=function(){var t=[];return n.showTodayButton&&t.push(e('<td>').append(e('<a>').attr({'data-action':'today',title:n.tooltips.today}).append(e('<span>').addClass(n.icons.today)))),!n.sideBySide&&O()&&E()&&t.push(e('<td>').append(e('<a>').attr({'data-action':'togglePicker',title:n.tooltips.selectTime}).append(e('<span>').addClass(n.icons.time)))),n.showClear&&t.push(e('<td>').append(e('<a>').attr({'data-action':'clear',title:n.tooltips.clear}).append(e('<span>').addClass(n.icons.clear)))),n.showClose&&t.push(e('<td>').append(e('<a>').attr({'data-action':'close',title:n.tooltips.close}).append(e('<span>').addClass(n.icons.close)))),e('<table>').addClass('table-condensed').append(e('<tbody>').append(e('<tr>').append(t)))},oe=function(){var t=e('<div>').addClass('bootstrap-datetimepicker-widget dropdown-menu'),o=e('<div>').addClass('datepicker').append(ne()),i=e('<div>').addClass('timepicker').append(se()),a=e('<ul>').addClass('list-unstyled'),r=e('<li>').addClass('picker-switch'+(n.collapse?' accordion-toggle':'')).append(de());return n.inline&&t.removeClass('dropdown-menu'),b&&t.addClass('usetwentyfour'),m('s')&&!b&&t.addClass('wider'),n.sideBySide&&O()&&E()?(t.addClass('timepicker-sbs'),'top'===n.toolbarPlacement&&t.append(r),t.append(e('<div>').addClass('row').append(o.addClass('col-md-6')).append(i.addClass('col-md-6'))),'bottom'===n.toolbarPlacement&&t.append(r),t):('top'===n.toolbarPlacement&&a.append(r),O()&&a.append(e('<li>').addClass(n.collapse&&E()?'collapse in':'').append(o)),'default'===n.toolbarPlacement&&a.append(r),E()&&a.append(e('<li>').addClass(n.collapse&&O()?'collapse':'').append(i)),'bottom'===n.toolbarPlacement&&a.append(r),t.append(a))},ie=function(){var t,r={};return t=a.is('input')||n.inline?a.data():a.find('input').data(),t.dateOptions&&t.dateOptions instanceof Object&&(r=e.extend(!0,r,t.dateOptions)),e.each(n,function(e){var n='date'+e.charAt(0).toUpperCase()+e.slice(1);void 0!==t[n]&&(r[e]=t[n])}),r},j=function(){var t,d=(u||a).position(),s=(u||a).offset(),o=n.widgetPositioning.vertical,r=n.widgetPositioning.horizontal;if(n.widgetParent)t=n.widgetParent.append(i);else if(a.is('input'))t=a.after(i).parent();else{if(n.inline)return void(t=a.append(i));t=a,a.children().first().after(i)};if('auto'===o&&(o=s.top+1.5*i.height()>=e(window).height()+e(window).scrollTop()&&i.height()+a.outerHeight()<s.top?'top':'bottom'),'auto'===r&&(r=t.width()<s.left+i.outerWidth()/2&&s.left+i.outerWidth()>e(window).width()?'right':'left'),'top'===o?i.addClass('top').removeClass('bottom'):i.addClass('bottom').removeClass('top'),'right'===r?i.addClass('pull-right'):i.removeClass('pull-right'),'relative'!==t.css('position')&&(t=t.parents().filter(function(){return'relative'===e(this).css('position')}).first()),0===t.length)throw new Error('datetimepicker component should be placed within a relative positioned container');i.css({top:'top'===o?'auto':d.top+a.outerHeight(),bottom:'top'===o?d.top+a.outerHeight():'auto',left:'left'===r?t===a?0:d.left:'auto',right:'left'===r?'auto':t.outerWidth()-a.outerWidth()-(t===a?0:d.left)})},x=function(e){'dp.change'===e.type&&(e.date&&e.date.isSame(e.oldDate)||!e.date&&!e.oldDate)||a.trigger(e)},S=function(e){'y'===e&&(e='YYYY'),x({type:'dp.update',change:e,viewDate:s.clone()})},T=function(e){i&&(e&&(y=Math.max(D,Math.min(3,y+e))),i.find('.datepicker > div').hide().filter('.datepicker-'+P[y].clsName).show())},ae=function(){var a=e('<tr>'),t=s.clone().startOf('w').startOf('d');for(n.calendarWeeks===!0&&a.append(e('<th>').addClass('cw').text('#'));t.isBefore(s.clone().endOf('w'));)a.append(e('<th>').addClass('dow').text(t.format('dd'))),t.add(1,'d');i.find('.datepicker-days thead').append(a)},re=function(e){return n.disabledDates[e.format('YYYY-MM-DD')]===!0},le=function(e){return n.enabledDates[e.format('YYYY-MM-DD')]===!0},pe=function(e){return n.disabledHours[e.format('H')]===!0},ge=function(e){return n.enabledHours[e.format('H')]===!0},p=function(t,a){if(!t.isValid())return!1;if(n.disabledDates&&'d'===a&&re(t))return!1;if(n.enabledDates&&'d'===a&&!le(t))return!1;if(n.minDate&&t.isBefore(n.minDate,a))return!1;if(n.maxDate&&t.isAfter(n.maxDate,a))return!1;if(n.daysOfWeekDisabled&&'d'===a&&-1!==n.daysOfWeekDisabled.indexOf(t.day()))return!1;if(n.disabledHours&&('h'===a||'m'===a||'s'===a)&&pe(t))return!1;if(n.enabledHours&&('h'===a||'m'===a||'s'===a)&&!ge(t))return!1;if(n.disabledTimeIntervals&&('h'===a||'m'===a||'s'===a)){var r=!1;if(e.each(n.disabledTimeIntervals,function(){return t.isBetween(this[0],this[1])?(r=!0,!1):void 0}),r)return!1};return!0},ye=function(){for(var n=[],t=s.clone().startOf('y').startOf('d');t.isSame(s,'y');)n.push(e('<span>').attr('data-action','selectMonth').addClass('month').text(t.format('MMM'))),t.add(1,'M');i.find('.datepicker-months td').empty().append(n)},he=function(){var r=i.find('.datepicker-months'),t=r.find('th'),a=r.find('tbody').find('span');t.eq(0).find('span').attr('title',n.tooltips.prevYear),t.eq(1).attr('title',n.tooltips.selectYear),t.eq(2).find('span').attr('title',n.tooltips.nextYear),r.find('.disabled').removeClass('disabled'),p(s.clone().subtract(1,'y'),'y')||t.eq(0).addClass('disabled'),t.eq(1).text(s.year()),p(s.clone().add(1,'y'),'y')||t.eq(2).addClass('disabled'),a.removeClass('active'),o.isSame(s,'y')&&!w&&a.eq(o.month()).addClass('active'),a.each(function(t){p(s.clone().month(t),'M')||e(this).addClass('disabled')})},me=function(){var r=i.find('.datepicker-years'),t=r.find('th'),e=s.clone().subtract(5,'y'),a=s.clone().add(6,'y'),d='';for(t.eq(0).find('span').attr('title',n.tooltips.prevDecade),t.eq(1).attr('title',n.tooltips.selectDecade),t.eq(2).find('span').attr('title',n.tooltips.nextDecade),r.find('.disabled').removeClass('disabled'),n.minDate&&n.minDate.isAfter(e,'y')&&t.eq(0).addClass('disabled'),t.eq(1).text(e.year()+'-'+a.year()),n.maxDate&&n.maxDate.isBefore(a,'y')&&t.eq(2).addClass('disabled');!e.isAfter(a,'y');)d+='<span data-action=\"selectYear\" class=\"year'+(e.isSame(o,'y')&&!w?' active':'')+(p(e,'y')?'':' disabled')+'\">'+e.year()+'</span>',e.add(1,'y');r.find('td').html(d)},ce=function(){var l=i.find('.datepicker-decades'),a=l.find('th'),e=t({y:s.year()-s.year()%100-1}),d=e.clone().add(100,'y'),c=e.clone(),r='';for(a.eq(0).find('span').attr('title',n.tooltips.prevCentury),a.eq(2).find('span').attr('title',n.tooltips.nextCentury),l.find('.disabled').removeClass('disabled'),(e.isSame(t({y:1900}))||n.minDate&&n.minDate.isAfter(e,'y'))&&a.eq(0).addClass('disabled'),a.eq(1).text(e.year()+'-'+d.year()),(e.isSame(t({y:2e3}))||n.maxDate&&n.maxDate.isBefore(d,'y'))&&a.eq(2).addClass('disabled');!e.isAfter(d,'y');)r+='<span data-action=\"selectDecade\" class=\"decade'+(e.isSame(o,'y')?' active':'')+(p(e,'y')?'':' disabled')+'\" data-selection=\"'+(e.year()+6)+'\">'+(e.year()+1)+' - '+(e.year()+12)+'</span>',e.add(12,'y');r+='<span></span><span></span><span></span>',l.find('td').html(r),a.eq(1).text(c.year()+1+'-'+e.year())},M=function(){var t,d,a,l,c=i.find('.datepicker-days'),r=c.find('th'),u=[];if(O()){for(r.eq(0).find('span').attr('title',n.tooltips.prevMonth),r.eq(1).attr('title',n.tooltips.selectMonth),r.eq(2).find('span').attr('title',n.tooltips.nextMonth),c.find('.disabled').removeClass('disabled'),r.eq(1).text(s.format(n.dayViewHeaderFormat)),p(s.clone().subtract(1,'M'),'M')||r.eq(0).addClass('disabled'),p(s.clone().add(1,'M'),'M')||r.eq(2).addClass('disabled'),t=s.clone().startOf('M').startOf('w').startOf('d'),l=0;42>l;l++)0===t.weekday()&&(d=e('<tr>'),n.calendarWeeks&&d.append('<td class=\"cw\">'+t.week()+'</td>'),u.push(d)),a='',t.isBefore(s,'M')&&(a+=' old'),t.isAfter(s,'M')&&(a+=' new'),t.isSame(o,'d')&&!w&&(a+=' active'),p(t,'d')||(a+=' disabled'),t.isSame(k(),'d')&&(a+=' today'),(0===t.day()||6===t.day())&&(a+=' weekend'),d.append('<td data-action=\"selectDay\" data-day=\"'+t.format('L')+'\" class=\"day'+a+'\">'+t.date()+'</td>'),t.add(1,'d');c.find('tbody').empty().append(u),he(),me(),ce()}},te=function(){var r=i.find('.timepicker-hours table'),t=s.clone().startOf('d'),a=[],n=e('<tr>');for(s.hour()>11&&!b&&t.hour(12);t.isSame(s,'d')&&(b||s.hour()<12&&t.hour()<12||s.hour()>11);)t.hour()%4===0&&(n=e('<tr>'),a.push(n)),n.append('<td data-action=\"selectHour\" class=\"hour'+(p(t,'h')?'':' disabled')+'\">'+t.format(b?'HH':'hh')+'</td>'),t.add(1,'h');r.empty().append(a)},fe=function(){for(var d=i.find('.timepicker-minutes table'),t=s.clone().startOf('h'),o=[],a=e('<tr>'),r=1===n.stepping?5:n.stepping;s.isSame(t,'h');)t.minute()%(4*r)===0&&(a=e('<tr>'),o.push(a)),a.append('<td data-action=\"selectMinute\" class=\"minute'+(p(t,'m')?'':' disabled')+'\">'+t.format('mm')+'</td>'),t.add(r,'m');d.empty().append(o)},be=function(){for(var r=i.find('.timepicker-seconds table'),t=s.clone().startOf('m'),a=[],n=e('<tr>');s.isSame(t,'m');)t.second()%20===0&&(n=e('<tr>'),a.push(n)),n.append('<td data-action=\"selectSecond\" class=\"second'+(p(t,'s')?'':' disabled')+'\">'+t.format('ss')+'</td>'),t.add(5,'s');r.empty().append(a)},ee=function(){var e,n,t=i.find('.timepicker span[data-time-component]');b||(e=i.find('.timepicker [data-action=togglePeriod]'),n=o.clone().add(o.hours()>=12?-12:12,'h'),e.text(o.format('A')),p(n,'h')?e.removeClass('disabled'):e.addClass('disabled')),t.filter('[data-time-component=hours]').text(o.format(b?'HH':'hh')),t.filter('[data-time-component=minutes]').text(o.format('mm')),t.filter('[data-time-component=seconds]').text(o.format('ss')),te(),fe(),be()},c=function(){i&&(M(),ee())},l=function(e){var t=w?null:o;return e?(e=e.clone().locale(n.locale),1!==n.stepping&&e.minutes(Math.round(e.minutes()/n.stepping)*n.stepping%60).seconds(0),void(p(e)?(o=e,s=o.clone(),d.val(o.format(h)),a.data('date',o.format(h)),w=!1,c(),x({type:'dp.change',date:o.clone(),oldDate:t})):(n.keepInvalid||d.val(w?'':o.format(h)),x({type:'dp.error',date:e})))):(w=!0,d.val(''),a.data('date',''),x({type:'dp.change',date:!1,oldDate:t}),void c())},f=function(){var t=!1;return i?(i.find('.collapse').each(function(){var n=e(this).data('collapse');return n&&n.transitioning?(t=!0,!1):!0}),t?r:(u&&u.hasClass('btn')&&u.toggleClass('active'),i.hide(),e(window).off('resize',j),i.off('click','[data-action]'),i.off('mousedown',!1),i.remove(),i=!1,x({type:'dp.hide',date:o.clone()}),d.blur(),r)):r},A=function(){l(null)},Y={next:function(){var e=P[y].navFnc;s.add(P[y].navStep,e),M(),S(e)},previous:function(){var e=P[y].navFnc;s.subtract(P[y].navStep,e),M(),S(e)},pickerSwitch:function(){T(1)},selectMonth:function(t){var a=e(t.target).closest('tbody').find('span').index(e(t.target));s.month(a),y===D?(l(o.clone().year(s.year()).month(s.month())),n.inline||f()):(T(-1),M()),S('M')},selectYear:function(t){var a=parseInt(e(t.target).text(),10)||0;s.year(a),y===D?(l(o.clone().year(s.year())),n.inline||f()):(T(-1),M()),S('YYYY')},selectDecade:function(t){var a=parseInt(e(t.target).data('selection'),10)||0;s.year(a),y===D?(l(o.clone().year(s.year())),n.inline||f()):(T(-1),M()),S('YYYY')},selectDay:function(t){var a=s.clone();e(t.target).is('.old')&&a.subtract(1,'M'),e(t.target).is('.new')&&a.add(1,'M'),l(a.date(parseInt(e(t.target).text(),10))),E()||n.keepOpen||n.inline||f()},incrementHours:function(){var e=o.clone().add(1,'h');p(e,'h')&&l(e)},incrementMinutes:function(){var e=o.clone().add(n.stepping,'m');p(e,'m')&&l(e)},incrementSeconds:function(){var e=o.clone().add(1,'s');p(e,'s')&&l(e)},decrementHours:function(){var e=o.clone().subtract(1,'h');p(e,'h')&&l(e)},decrementMinutes:function(){var e=o.clone().subtract(n.stepping,'m');p(e,'m')&&l(e)},decrementSeconds:function(){var e=o.clone().subtract(1,'s');p(e,'s')&&l(e)},togglePeriod:function(){l(o.clone().add(o.hours()>=12?-12:12,'h'))},togglePicker:function(t){var i,r=e(t.target),s=r.closest('ul'),a=s.find('.in'),o=s.find('.collapse:not(.in)');if(a&&a.length){if(i=a.data('collapse'),i&&i.transitioning)return;a.collapse?(a.collapse('hide'),o.collapse('show')):(a.removeClass('in'),o.addClass('in')),r.is('span')?r.toggleClass(n.icons.time+' '+n.icons.date):r.find('span').toggleClass(n.icons.time+' '+n.icons.date)}},showPicker:function(){i.find('.timepicker > div:not(.timepicker-picker)').hide(),i.find('.timepicker .timepicker-picker').show()},showHours:function(){i.find('.timepicker .timepicker-picker').hide(),i.find('.timepicker .timepicker-hours').show()},showMinutes:function(){i.find('.timepicker .timepicker-picker').hide(),i.find('.timepicker .timepicker-minutes').show()},showSeconds:function(){i.find('.timepicker .timepicker-picker').hide(),i.find('.timepicker .timepicker-seconds').show()},selectHour:function(t){var n=parseInt(e(t.target).text(),10);b||(o.hours()>=12?12!==n&&(n+=12):12===n&&(n=0)),l(o.clone().hours(n)),Y.showPicker.call(r)},selectMinute:function(t){l(o.clone().minutes(parseInt(e(t.target).text(),10))),Y.showPicker.call(r)},selectSecond:function(t){l(o.clone().seconds(parseInt(e(t.target).text(),10))),Y.showPicker.call(r)},clear:A,today:function(){var e=k();p(e,'d')&&l(e)},close:f},Q=function(t){return e(t.currentTarget).is('.disabled')?!1:(Y[e(t.currentTarget).data('action')].apply(r,arguments),!1)},g=function(){var t,a={year:function(e){return e.month(0).date(1).hours(0).seconds(0).minutes(0)},month:function(e){return e.date(1).hours(0).seconds(0).minutes(0)},day:function(e){return e.hours(0).seconds(0).minutes(0)},hour:function(e){return e.seconds(0).minutes(0)},minute:function(e){return e.seconds(0)}};return d.prop('disabled')||!n.ignoreReadonly&&d.prop('readonly')||i?r:(void 0!==d.val()&&0!==d.val().trim().length?l(C(d.val().trim())):n.useCurrent&&w&&(d.is('input')&&0===d.val().trim().length||n.inline)&&(t=k(),'string'==typeof n.useCurrent&&(t=a[n.useCurrent](t)),l(t)),i=oe(),ae(),ye(),i.find('.timepicker-hours').hide(),i.find('.timepicker-minutes').hide(),i.find('.timepicker-seconds').hide(),c(),T(),e(window).on('resize',j),i.on('click','[data-action]',Q),i.on('mousedown',!1),u&&u.hasClass('btn')&&u.toggleClass('active'),i.show(),j(),n.focusOnShow&&!d.is(':focus')&&d.focus(),x({type:'dp.show'}),r)},B=function(){return i?f():g()},C=function(e){return e=void 0===n.parseInputDate?t.isMoment(e)||e instanceof Date?t(e):k(e):n.parseInputDate(e),e.locale(n.locale),e},Z=function(e){var t,o,a,d,l=null,u=[],c={},s=e.which,p='p';H[s]=p;for(t in H)H.hasOwnProperty(t)&&H[t]===p&&(u.push(t),parseInt(t,10)!==s&&(c[t]=!0));for(t in n.keyBinds)if(n.keyBinds.hasOwnProperty(t)&&'function'==typeof n.keyBinds[t]&&(a=t.split(' '),a.length===u.length&&z[s]===a[a.length-1])){for(d=!0,o=a.length-2;o>=0;o--)if(!(z[a[o]]in c)){d=!1;break};if(d){l=n.keyBinds[t];break}};l&&(l.call(r,i),e.stopPropagation(),e.preventDefault())},U=function(e){H[e.which]='r',e.stopPropagation(),e.preventDefault()},R=function(t){var n=e(t.target).val().trim(),a=n?C(n):null;return l(a),t.stopImmediatePropagation(),!1},J=function(){d.on({change:R,blur:n.debug?'':f,keydown:Z,keyup:U,focus:n.allowInputToggle?g:''}),a.is('input')?d.on({focus:g}):u&&(u.on('click',B),u.on('mousedown',!1))},G=function(){d.off({change:R,blur:blur,keydown:Z,keyup:U,focus:n.allowInputToggle?f:''}),a.is('input')?d.off({focus:g}):u&&(u.off('click',B),u.off('mousedown',!1))},V=function(t){var n={};return e.each(t,function(){var e=C(this);e.isValid()&&(n[e.format('YYYY-MM-DD')]=!0)}),Object.keys(n).length?n:!1},N=function(t){var n={};return e.each(t,function(){n[this]=!0}),Object.keys(n).length?n:!1},I=function(){var e=n.format||'L LT';h=e.replace(/(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(e){var t=o.localeData().longDateFormat(e)||e;return t.replace(/(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(e){return o.localeData().longDateFormat(e)||e})}),v=n.extraFormats?n.extraFormats.slice():[],v.indexOf(e)<0&&v.indexOf(h)<0&&v.push(h),b=h.toLowerCase().indexOf('a')<1&&h.replace(/\\[.*?\\]/g,'').indexOf('h')<1,m('y')&&(D=2),m('M')&&(D=1),m('d')&&(D=0),y=Math.max(D,y),w||l(o)};if(r.destroy=function(){f(),G(),a.removeData('DateTimePicker'),a.removeData('date')},r.toggle=B,r.show=g,r.hide=f,r.disable=function(){return f(),u&&u.hasClass('btn')&&u.addClass('disabled'),d.prop('disabled',!0),r},r.enable=function(){return u&&u.hasClass('btn')&&u.removeClass('disabled'),d.prop('disabled',!1),r},r.ignoreReadonly=function(e){if(0===arguments.length)return n.ignoreReadonly;if('boolean'!=typeof e)throw new TypeError('ignoreReadonly () expects a boolean parameter');return n.ignoreReadonly=e,r},r.options=function(t){if(0===arguments.length)return e.extend(!0,{},n);if(!(t instanceof Object))throw new TypeError('options() options parameter should be an object');return e.extend(!0,n,t),e.each(n,function(e,t){if(void 0===r[e])throw new TypeError('option '+e+' is not recognized!');r[e](t)}),r},r.date=function(e){if(0===arguments.length)return w?null:o.clone();if(!(null===e||'string'==typeof e||t.isMoment(e)||e instanceof Date))throw new TypeError('date() parameter must be one of [null, string, moment or Date]');return l(null===e?null:C(e)),r},r.format=function(e){if(0===arguments.length)return n.format;if('string'!=typeof e&&('boolean'!=typeof e||e!==!1))throw new TypeError('format() expects a sting or boolean:false parameter '+e);return n.format=e,h&&I(),r},r.timeZone=function(e){return 0===arguments.length?n.timeZone:(n.timeZone=e,r)},r.dayViewHeaderFormat=function(e){if(0===arguments.length)return n.dayViewHeaderFormat;if('string'!=typeof e)throw new TypeError('dayViewHeaderFormat() expects a string parameter');return n.dayViewHeaderFormat=e,r},r.extraFormats=function(e){if(0===arguments.length)return n.extraFormats;if(e!==!1&&!(e instanceof Array))throw new TypeError('extraFormats() expects an array or false parameter');return n.extraFormats=e,v&&I(),r},r.disabledDates=function(t){if(0===arguments.length)return n.disabledDates?e.extend({},n.disabledDates):n.disabledDates;if(!t)return n.disabledDates=!1,c(),r;if(!(t instanceof Array))throw new TypeError('disabledDates() expects an array parameter');return n.disabledDates=V(t),n.enabledDates=!1,c(),r},r.enabledDates=function(t){if(0===arguments.length)return n.enabledDates?e.extend({},n.enabledDates):n.enabledDates;if(!t)return n.enabledDates=!1,c(),r;if(!(t instanceof Array))throw new TypeError('enabledDates() expects an array parameter');return n.enabledDates=V(t),n.disabledDates=!1,c(),r},r.daysOfWeekDisabled=function(e){if(0===arguments.length)return n.daysOfWeekDisabled.splice(0);if('boolean'==typeof e&&!e)return n.daysOfWeekDisabled=!1,c(),r;if(!(e instanceof Array))throw new TypeError('daysOfWeekDisabled() expects an array parameter');if(n.daysOfWeekDisabled=e.reduce(function(e,t){return t=parseInt(t,10),t>6||0>t||isNaN(t)?e:(-1===e.indexOf(t)&&e.push(t),e)},[]).sort(),n.useCurrent&&!n.keepInvalid){for(var t=0;!p(o,'d');){if(o.add(1,'d'),7===t)throw'Tried 7 times to find a valid date';t++};l(o)};return c(),r},r.maxDate=function(e){if(0===arguments.length)return n.maxDate?n.maxDate.clone():n.maxDate;if('boolean'==typeof e&&e===!1)return n.maxDate=!1,c(),r;'string'==typeof e&&('now'===e||'moment'===e)&&(e=k());var t=C(e);if(!t.isValid())throw new TypeError('maxDate() Could not parse date parameter: '+e);if(n.minDate&&t.isBefore(n.minDate))throw new TypeError('maxDate() date parameter is before options.minDate: '+t.format(h));return n.maxDate=t,n.useCurrent&&!n.keepInvalid&&o.isAfter(e)&&l(n.maxDate),s.isAfter(t)&&(s=t.clone().subtract(n.stepping,'m')),c(),r},r.minDate=function(e){if(0===arguments.length)return n.minDate?n.minDate.clone():n.minDate;if('boolean'==typeof e&&e===!1)return n.minDate=!1,c(),r;'string'==typeof e&&('now'===e||'moment'===e)&&(e=k());var t=C(e);if(!t.isValid())throw new TypeError('minDate() Could not parse date parameter: '+e);if(n.maxDate&&t.isAfter(n.maxDate))throw new TypeError('minDate() date parameter is after options.maxDate: '+t.format(h));return n.minDate=t,n.useCurrent&&!n.keepInvalid&&o.isBefore(e)&&l(n.minDate),s.isBefore(t)&&(s=t.clone().add(n.stepping,'m')),c(),r},r.defaultDate=function(e){if(0===arguments.length)return n.defaultDate?n.defaultDate.clone():n.defaultDate;if(!e)return n.defaultDate=!1,r;'string'==typeof e&&('now'===e||'moment'===e)&&(e=k());var t=C(e);if(!t.isValid())throw new TypeError('defaultDate() Could not parse date parameter: '+e);if(!p(t))throw new TypeError('defaultDate() date passed is invalid according to component setup validations');return n.defaultDate=t,(n.defaultDate&&n.inline||''===d.val().trim())&&l(n.defaultDate),r},r.locale=function(e){if(0===arguments.length)return n.locale;if(!t.localeData(e))throw new TypeError('locale() locale '+e+' is not loaded from moment locales!');return n.locale=e,o.locale(n.locale),s.locale(n.locale),h&&I(),i&&(f(),g()),r},r.stepping=function(e){return 0===arguments.length?n.stepping:(e=parseInt(e,10),(isNaN(e)||1>e)&&(e=1),n.stepping=e,r)},r.useCurrent=function(e){var t=['year','month','day','hour','minute'];if(0===arguments.length)return n.useCurrent;if('boolean'!=typeof e&&'string'!=typeof e)throw new TypeError('useCurrent() expects a boolean or string parameter');if('string'==typeof e&&-1===t.indexOf(e.toLowerCase()))throw new TypeError('useCurrent() expects a string parameter of '+t.join(', '));return n.useCurrent=e,r},r.collapse=function(e){if(0===arguments.length)return n.collapse;if('boolean'!=typeof e)throw new TypeError('collapse() expects a boolean parameter');return n.collapse===e?r:(n.collapse=e,i&&(f(),g()),r)},r.icons=function(t){if(0===arguments.length)return e.extend({},n.icons);if(!(t instanceof Object))throw new TypeError('icons() expects parameter to be an Object');return e.extend(n.icons,t),i&&(f(),g()),r},r.tooltips=function(t){if(0===arguments.length)return e.extend({},n.tooltips);if(!(t instanceof Object))throw new TypeError('tooltips() expects parameter to be an Object');return e.extend(n.tooltips,t),i&&(f(),g()),r},r.useStrict=function(e){if(0===arguments.length)return n.useStrict;if('boolean'!=typeof e)throw new TypeError('useStrict() expects a boolean parameter');return n.useStrict=e,r},r.sideBySide=function(e){if(0===arguments.length)return n.sideBySide;if('boolean'!=typeof e)throw new TypeError('sideBySide() expects a boolean parameter');return n.sideBySide=e,i&&(f(),g()),r},r.viewMode=function(e){if(0===arguments.length)return n.viewMode;if('string'!=typeof e)throw new TypeError('viewMode() expects a string parameter');if(-1===q.indexOf(e))throw new TypeError('viewMode() parameter must be one of ('+q.join(', ')+') value');return n.viewMode=e,y=Math.max(q.indexOf(e),D),T(),r},r.toolbarPlacement=function(e){if(0===arguments.length)return n.toolbarPlacement;if('string'!=typeof e)throw new TypeError('toolbarPlacement() expects a string parameter');if(-1===F.indexOf(e))throw new TypeError('toolbarPlacement() parameter must be one of ('+F.join(', ')+') value');return n.toolbarPlacement=e,i&&(f(),g()),r},r.widgetPositioning=function(t){if(0===arguments.length)return e.extend({},n.widgetPositioning);if('[object Object]'!=={}.toString.call(t))throw new TypeError('widgetPositioning() expects an object variable');if(t.horizontal){if('string'!=typeof t.horizontal)throw new TypeError('widgetPositioning() horizontal variable must be a string');if(t.horizontal=t.horizontal.toLowerCase(),-1===L.indexOf(t.horizontal))throw new TypeError('widgetPositioning() expects horizontal parameter to be one of ('+L.join(', ')+')');n.widgetPositioning.horizontal=t.horizontal};if(t.vertical){if('string'!=typeof t.vertical)throw new TypeError('widgetPositioning() vertical variable must be a string');if(t.vertical=t.vertical.toLowerCase(),-1===W.indexOf(t.vertical))throw new TypeError('widgetPositioning() expects vertical parameter to be one of ('+W.join(', ')+')');n.widgetPositioning.vertical=t.vertical};return c(),r},r.calendarWeeks=function(e){if(0===arguments.length)return n.calendarWeeks;if('boolean'!=typeof e)throw new TypeError('calendarWeeks() expects parameter to be a boolean value');return n.calendarWeeks=e,c(),r},r.showTodayButton=function(e){if(0===arguments.length)return n.showTodayButton;if('boolean'!=typeof e)throw new TypeError('showTodayButton() expects a boolean parameter');return n.showTodayButton=e,i&&(f(),g()),r},r.showClear=function(e){if(0===arguments.length)return n.showClear;if('boolean'!=typeof e)throw new TypeError('showClear() expects a boolean parameter');return n.showClear=e,i&&(f(),g()),r},r.widgetParent=function(t){if(0===arguments.length)return n.widgetParent;if('string'==typeof t&&(t=e(t)),null!==t&&'string'!=typeof t&&!(t instanceof e))throw new TypeError('widgetParent() expects a string or a jQuery object parameter');return n.widgetParent=t,i&&(f(),g()),r},r.keepOpen=function(e){if(0===arguments.length)return n.keepOpen;if('boolean'!=typeof e)throw new TypeError('keepOpen() expects a boolean parameter');return n.keepOpen=e,r},r.focusOnShow=function(e){if(0===arguments.length)return n.focusOnShow;if('boolean'!=typeof e)throw new TypeError('focusOnShow() expects a boolean parameter');return n.focusOnShow=e,r},r.inline=function(e){if(0===arguments.length)return n.inline;if('boolean'!=typeof e)throw new TypeError('inline() expects a boolean parameter');return n.inline=e,r},r.clear=function(){return A(),r},r.keyBinds=function(e){return n.keyBinds=e,r},r.getMoment=function(e){return k(e)},r.debug=function(e){if('boolean'!=typeof e)throw new TypeError('debug() expects a boolean parameter');return n.debug=e,r},r.allowInputToggle=function(e){if(0===arguments.length)return n.allowInputToggle;if('boolean'!=typeof e)throw new TypeError('allowInputToggle() expects a boolean parameter');return n.allowInputToggle=e,r},r.showClose=function(e){if(0===arguments.length)return n.showClose;if('boolean'!=typeof e)throw new TypeError('showClose() expects a boolean parameter');return n.showClose=e,r},r.keepInvalid=function(e){if(0===arguments.length)return n.keepInvalid;if('boolean'!=typeof e)throw new TypeError('keepInvalid() expects a boolean parameter');return n.keepInvalid=e,r},r.datepickerInput=function(e){if(0===arguments.length)return n.datepickerInput;if('string'!=typeof e)throw new TypeError('datepickerInput() expects a string parameter');return n.datepickerInput=e,r},r.parseInputDate=function(e){if(0===arguments.length)return n.parseInputDate;if('function'!=typeof e)throw new TypeError('parseInputDate() sholud be as function');return n.parseInputDate=e,r},r.disabledTimeIntervals=function(t){if(0===arguments.length)return n.disabledTimeIntervals?e.extend({},n.disabledTimeIntervals):n.disabledTimeIntervals;if(!t)return n.disabledTimeIntervals=!1,c(),r;if(!(t instanceof Array))throw new TypeError('disabledTimeIntervals() expects an array parameter');return n.disabledTimeIntervals=t,c(),r},r.disabledHours=function(t){if(0===arguments.length)return n.disabledHours?e.extend({},n.disabledHours):n.disabledHours;if(!t)return n.disabledHours=!1,c(),r;if(!(t instanceof Array))throw new TypeError('disabledHours() expects an array parameter');if(n.disabledHours=N(t),n.enabledHours=!1,n.useCurrent&&!n.keepInvalid){for(var a=0;!p(o,'h');){if(o.add(1,'h'),24===a)throw'Tried 24 times to find a valid date';a++};l(o)};return c(),r},r.enabledHours=function(t){if(0===arguments.length)return n.enabledHours?e.extend({},n.enabledHours):n.enabledHours;if(!t)return n.enabledHours=!1,c(),r;if(!(t instanceof Array))throw new TypeError('enabledHours() expects an array parameter');if(n.enabledHours=N(t),n.disabledHours=!1,n.useCurrent&&!n.keepInvalid){for(var a=0;!p(o,'h');){if(o.add(1,'h'),24===a)throw'Tried 24 times to find a valid date';a++};l(o)};return c(),r},r.viewDate=function(e){if(0===arguments.length)return s.clone();if(!e)return s=o.clone(),r;if(!('string'==typeof e||t.isMoment(e)||e instanceof Date))throw new TypeError('viewDate() parameter must be one of [string, moment or Date]');return s=C(e),S(),r},a.is('input'))d=a;else if(d=a.find(n.datepickerInput),0===d.size())d=a.find('input');else if(!d.is('input'))throw new Error('CSS class \"'+n.datepickerInput+'\" cannot be applied to non input element');if(a.hasClass('input-group')&&(u=0===a.find('.datepickerbutton').size()?a.find('.input-group-addon'):a.find('.datepickerbutton')),!n.inline&&!d.is('input'))throw new Error('Could not initialize DateTimePicker without an input element');return o=k(),s=o.clone(),e.extend(!0,n,ie()),r.options(n),I(),J(),d.prop('disabled')&&r.disable(),d.is('input')&&0!==d.val().trim().length?l(C(d.val().trim())):n.defaultDate&&void 0===d.attr('placeholder')&&l(n.defaultDate),n.inline&&g(),r};e.fn.datetimepicker=function(t){return this.each(function(){var a=e(this);a.data('DateTimePicker')||(t=e.extend(!0,{},e.fn.datetimepicker.defaults,t),a.data('DateTimePicker',n(a,t)))})},e.fn.datetimepicker.defaults={timeZone:'Etc/UTC',format:!1,dayViewHeaderFormat:'MMMM YYYY',extraFormats:!1,stepping:1,minDate:!1,maxDate:!1,useCurrent:!0,collapse:!0,locale:t.locale(),defaultDate:!1,disabledDates:!1,enabledDates:!1,icons:{time:'glyphicon glyphicon-time',date:'glyphicon glyphicon-calendar',up:'glyphicon glyphicon-chevron-up',down:'glyphicon glyphicon-chevron-down',previous:'glyphicon glyphicon-chevron-left',next:'glyphicon glyphicon-chevron-right',today:'glyphicon glyphicon-screenshot',clear:'glyphicon glyphicon-trash',close:'glyphicon glyphicon-remove'},tooltips:{today:'Go to today',clear:'Clear selection',close:'Close the picker',selectMonth:'Select Month',prevMonth:'Previous Month',nextMonth:'Next Month',selectYear:'Select Year',prevYear:'Previous Year',nextYear:'Next Year',selectDecade:'Select Decade',prevDecade:'Previous Decade',nextDecade:'Next Decade',prevCentury:'Previous Century',nextCentury:'Next Century',pickHour:'Pick Hour',incrementHour:'Increment Hour',decrementHour:'Decrement Hour',pickMinute:'Pick Minute',incrementMinute:'Increment Minute',decrementMinute:'Decrement Minute',pickSecond:'Pick Second',incrementSecond:'Increment Second',decrementSecond:'Decrement Second',togglePeriod:'Toggle Period',selectTime:'Select Time'},useStrict:!1,sideBySide:!1,daysOfWeekDisabled:!1,calendarWeeks:!1,viewMode:'days',toolbarPlacement:'default',showTodayButton:!1,showClear:!1,showClose:!1,widgetPositioning:{horizontal:'auto',vertical:'auto'},widgetParent:null,ignoreReadonly:!1,keepOpen:!1,focusOnShow:!0,inline:!1,keepInvalid:!1,datepickerInput:'.datepickerinput',keyBinds:{up:function(e){if(e){var t=this.date()||this.getMoment();e.find('.datepicker').is(':visible')?this.date(t.clone().subtract(7,'d')):this.date(t.clone().add(this.stepping(),'m'))}},down:function(e){if(!e)return void this.show();var t=this.date()||this.getMoment();e.find('.datepicker').is(':visible')?this.date(t.clone().add(7,'d')):this.date(t.clone().subtract(this.stepping(),'m'))},'control up':function(e){if(e){var t=this.date()||this.getMoment();e.find('.datepicker').is(':visible')?this.date(t.clone().subtract(1,'y')):this.date(t.clone().add(1,'h'))}},'control down':function(e){if(e){var t=this.date()||this.getMoment();e.find('.datepicker').is(':visible')?this.date(t.clone().add(1,'y')):this.date(t.clone().subtract(1,'h'))}},left:function(e){if(e){var t=this.date()||this.getMoment();e.find('.datepicker').is(':visible')&&this.date(t.clone().subtract(1,'d'))}},right:function(e){if(e){var t=this.date()||this.getMoment();e.find('.datepicker').is(':visible')&&this.date(t.clone().add(1,'d'))}},pageUp:function(e){if(e){var t=this.date()||this.getMoment();e.find('.datepicker').is(':visible')&&this.date(t.clone().subtract(1,'M'))}},pageDown:function(e){if(e){var t=this.date()||this.getMoment();e.find('.datepicker').is(':visible')&&this.date(t.clone().add(1,'M'))}},enter:function(){this.hide()},escape:function(){this.hide()},'control space':function(e){e.find('.timepicker').is(':visible')&&e.find('.btn[data-action=\"togglePeriod\"]').click()},t:function(){this.date(this.getMoment())},'delete':function(){this.clear()}},debug:!1,allowInputToggle:!1,disabledTimeIntervals:!1,disabledHours:!1,enabledHours:!1,viewDate:!1}});\n(function(a){a(document).ready(function(){hljs.initHighlightingOnLoad();a('[data-toggle=\"datetimepicker\"]').datetimepicker({icons:{time:'fa fa-clock-o',date:'fa fa-calendar',up:'fa fa-chevron-up',down:'fa fa-chevron-down',previous:'fa fa-chevron-left',next:'fa fa-chevron-right',today:'fa fa-check-circle-o',clear:'fa fa-trash',close:'fa fa-remove'}})});a(document).on('submit','form[data-confirmation]',function(n){var e=a(this),t=a('#confirmationModal');if(t.data('result')!=='yes'){n.preventDefault();t.off('click','#btnYes').on('click','#btnYes',function(){t.data('result','yes');e.find('input[type=\"submit\"]').attr('disabled','disabled');e.submit()}).modal('show')}})})(window.jQuery);"
  },
  {
    "path": "web/robots.txt",
    "content": "# www.robotstxt.org/\n# www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449\n\nUser-agent: *\n"
  }
]